/**
 * BEKB|BCBE Mortgage Calculator
 * Copyright November 2007 by Unic Internet Solutions
 *
 * @author AlR
 * @version 1.0
 *
 * @requires EventSelectors
 * 
 * Provides the events for the calculator
 */

var Rules = { 
  	rules: "1.0",
	
	  
	/* tooltips */
	'#calculator a.info:mouseover': function(element, event) {
		var innerElements = element.getElementsByTagName('span');
		if (innerElements && innerElements.length > 0){
			overlib(MortgageCalculator.getTooltipContent(innerElements[0]), MOUSEOFF);
		}
		Event.stop(event);
	},
	// 'img' inside 'a'
	'#calculator a.info img:mouseover': function(element, event) {
		var innerElement = element.next('span');
		if (innerElement){
			overlib(MortgageCalculator.getTooltipContent(innerElement), MOUSEOFF);
		}
		Event.stop(event);
	},
	
	'#calculator a.info:click': function(element, event) {
		Event.stop(event);
	},
	
	'#calculator a.info:mouseout, #calculator a.info img:mouseout': function(element, event) {
		nd();
		Event.stop(event);
	},
	
	
	/* input fields */
	'#calculator #eingabe li.input-text-eingabe input:focus': function(element, event) {
		if ($('calculator').hasClassName('start') && element.value == '0'){
			element.value = "";
		}
		else {
			element.select();
		}
	},
	
	'#calculator #eingabe li.input-text-eingabe input:blur': function(element, event) {
		if (element.value == ""){
			element.value = "0";
		}
	},
	
	'#calculator #eingabe li.input-text-eingabe input:keydown': function(element, event) {
		Rules.lastKeyPressed = event.charCode ? event.charCode : event.keyCode;
		//Event.stop(event);
	},
	
	'#calculator #eingabe li.input-text-eingabe input:keyup': function(element, event) {
		// only update if no arrow key was pressed
		if (Rules.lastKeyPressed < 37 || Rules.lastKeyPressed > 40){
			// update last element if changed before timeout has expired
			if (Rules.timeoutElement && Rules.timeoutElement.id != element.id){
				MortgageCalculator.updateResultFromElement(Rules.timeoutElement);
			}
			Rules.timeoutElement = element;
			window.clearTimeout(Rules.timeoutTime);
			Rules.timeoutTime = window.setTimeout(
				"MortgageCalculator.updateResultFromElement(Rules.timeoutElement)", 
				1200
			);
		}
		Event.stop(event);
	},
	
	
	/* radiobuttons / checkbuttons (as inside a form) */
	'#calculator #eingabe #object-type input:click': function(element, event) {
		MortgageCalculator.calculate();
		//Event.stop(event);
	},
	
	
	/* +/- buttons */
	'#calculator #eingabe .adjustValueButton:click': function(element, event) {
		// if 'img' inside 'a' we need to get its parent which is the 'a'
		var oElement = element.nodeName.toLowerCase() == 'a'? element : element.parentNode;
		var asSplit = oElement.id.split('-');
		
		MortgageCalculator.adjustValue(asSplit[1], asSplit[0]);
		MortgageCalculator.formatNumber(asSplit[1]);
		MortgageCalculator.calculate();
		Event.stop(event);
	},
	
	
	/* links */
	'#button-drucken:click': function(element, event) {
		$('overDiv').style.display = 'none';
		
		var sUrl = document.URL.replace(/((http|https):\/\/[^\/]+\/)(\w{2,3})\//, '$1print/$3/');
		
		// remove input value parameter
		sUrl = sUrl.replace(/(price=[^&]*&?)|(income=[^&]*&?)|(equity=[^&]*&?)|(objectType=[^&]*&?)/g, '');
		
		// remove ? or & if last
		sUrl = sUrl.replace(/[\?&]$/, '');
		
		// append filled values
		if (sUrl.indexOf('?') > -1){
			sUrl += '&' + MortgageCalculator.getValuesAsPrintParameterString();
		}
		else {
			sUrl += '?' + MortgageCalculator.getValuesAsPrintParameterString();
		}
		
		window.open(sUrl, '_blank', 'toolbar=no,location=no,status=no,menubar=no,personalbar=no,scrollbars=no,width=700,height=590,resizable=yes,screenx=50,left=50,screenY=50,top=50');
			
		$('overDiv').style.display = 'block';
		Event.stop(event);
	},
	
	'#button-beratung:click': function(element, event) {
		// if 'img' inside 'a' we need to get its parent which is the 'a'
		var oElement = element.nodeName.toLowerCase() == 'a'? element : element.parentNode;
		window.open(oElement.getAttribute('href'));
		Event.stop(event);
	},
	
	'#button-antrag:click': function(element, event) {		
		// if 'img' inside 'a' we need to get its parent which is the 'a'
		var oElement = element.nodeName.toLowerCase() == 'a'? element : element.parentNode;
		
		var sUrl = oElement.getAttribute('href');
		var sQueryString = MortgageCalculator.getValuesAsParameterString();
		
		if (sUrl.indexOf('?') > -1){
			sUrl += '&' + sQueryString;
		}
		else {
			sUrl += '?' + sQueryString;
		}
		
		// open new window if external referrer
		if (MortgageCalculator.isInternalVersion()){
			window.location.href = sUrl;
		}
		else{
			window.open(sUrl);
		}
		Event.stop(event);
	}
};


/** initialize the event observer **/
Event.observe(window, "load", function() {
   EventSelectors.start(Rules);
});


/* initialize the calculator */
Event.observe(window, "load", function() {
   MortgageCalculator.init();
});
