/**
 * @author carlos
 */

var utils = {
	formatNumber: {
		formatAmerican: function(valueNumber){
			
			var num = new NumberFormat();
			num.setInputDecimal('.');
			num.setNumber(valueNumber); // obj.value is '835.21'
			num.setPlaces('2', false);
			num.setCurrencyValue('$');
			num.setCurrency(false);
			num.setCurrencyPosition(num.LEFT_OUTSIDE);
			num.setNegativeFormat(num.LEFT_DASH);
			num.setNegativeRed(false);
			num.setSeparators(true, '.', ',');
			return num.toFormatted();

		},
		formatEuropean: function(valueNumber){
			var num = new NumberFormat();
			num.setInputDecimal(',');
			num.setNumber(valueNumber);
			num.setPlaces('0', false);
			num.setCurrencyValue('$');
			num.setCurrency(false);
			num.setCurrencyPosition(num.LEFT_OUTSIDE);
			num.setNegativeFormat(num.LEFT_DASH);
			num.setNegativeRed(false);
			num.setSeparators(false, ',', ',');
			return num.toFormatted();
		}
	}
}

YAHOO.util.Event.onDOMReady(function() {
	
	var error = 0;
	var tmp1;
	var tmp2;
	var tmp3;
	var tmp4;
	var tmp5;
	var tmp6;
	var tmp7;
	
	/*Inicialización valores*/
	YAHOO.util.Dom.get("textfield1").value=1504,51;
	YAHOO.util.Dom.get("textfield2").value=20;
	YAHOO.util.Dom.get("textfield3").value=5,50;
	YAHOO.util.Dom.get("textfield4").value=210000;
	YAHOO.util.Dom.get("textfield5").value=200000;
	YAHOO.util.Dom.get("textfield6").value=10000;
	
	/*
	 * Escala
	 */
    var scaleFactor1 = 20;
	var scaleFactor2 = 50/200;
	var scaleFactor3 = 20/200;
	var scaleFactor4 = 1000000/200;
	var scaleFactor5 = 1000000/200;
	
	/*
	 * Inicialización barras
	 */
	var slider1 = YAHOO.widget.Slider.getHorizSlider(YAHOO.util.Dom.get("sliderbg1"), 
                         YAHOO.util.Dom.get("sliderthumb1"), 0, 200, 1);
	var slider2 = YAHOO.widget.Slider.getHorizSlider(YAHOO.util.Dom.get("sliderbg2"), 
                         YAHOO.util.Dom.get("sliderthumb2"), 0, 200, 1);
	var slider3 = YAHOO.widget.Slider.getHorizSlider(YAHOO.util.Dom.get("sliderbg3"), 
                         YAHOO.util.Dom.get("sliderthumb3"), 0, 200, 1);
	var slider4 = YAHOO.widget.Slider.getHorizSlider(YAHOO.util.Dom.get("sliderbg4"), 
                         YAHOO.util.Dom.get("sliderthumb4"), 0, 200, 1);
	var slider5 = YAHOO.widget.Slider.getHorizSlider(YAHOO.util.Dom.get("sliderbg5"), 
                         YAHOO.util.Dom.get("sliderthumb5"), 0, 200, 1);
	
	/*
	 * Funciones que me darán el valor numérico de una barra en función de la posición del cursor en ella
	 */
	slider1.getRealValue = function() {
    	return Math.round(utils.formatNumber.formatEuropean(this.getValue())*scaleFactor1);
    }
	
	slider2.getRealValue = function() {
    	return Math.round(utils.formatNumber.formatEuropean(this.getValue())*scaleFactor2);
    }

	slider3.getRealValue = function() {
    	return Math.round((utils.formatNumber.formatEuropean(this.getValue())*scaleFactor3)*100)/100;
    }
	
	slider4.getRealValue = function() {
    	return Math.round(utils.formatNumber.formatEuropean(this.getValue())*scaleFactor4);
    }
	
	slider5.getRealValue = function() {
    	return Math.round(utils.formatNumber.formatEuropean(this.getValue())*scaleFactor5);
    }
	
	/*
	 * Eventos de los slides
	 */
	
	
	/*
	 * Slide 1
	 */
	slider1.subscribe("change", function() {
            var fld = YAHOO.util.Dom.get("textfield1");
            var actualValue = slider1.getRealValue();
			
			if (slider1.valueChangeSource == 1) {
				if ((actualValue > 0) && (!error)) {
					fld.value = utils.formatNumber.formatAmerican(actualValue);					
					YAHOO.util.Dom.setStyle([YAHOO.util.Dom.get("percent1")], "width", utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield1").value) / scaleFactor1 + "px");
					calculate();
				}
			}
			

        });
	
	slider1.subscribe("slideEnd", function() {            
			if (slider1.valueChangeSource == 1) {				
				slider1.setValue(utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield1").value) / scaleFactor1);
			}
        });
		
	slider1.subscribe("slideStart", function() {            
			if (slider1.valueChangeSource == 1) {				
				hideAllErrors();
			}
        });
	
	YAHOO.util.Event.addListener(YAHOO.util.Dom.get("textfield1"), 'blur', function(){
		this.value=utils.formatNumber.formatAmerican(utils.formatNumber.formatEuropean(this.value))
	});
	
	YAHOO.util.Event.addListener(YAHOO.util.Dom.get("textfield1"), 'change', function(){		
			if ((utils.formatNumber.formatEuropean(this.value) > 0) && (utils.formatNumber.formatEuropean(this.value)<= 4000)) {
				calculate();
				if (!error) {
					hideError("field1")
					slider1.setValue(parseInt(utils.formatNumber.formatEuropean(this.value) / scaleFactor1));
					YAHOO.util.Dom.setStyle([YAHOO.util.Dom.get("percent1")], "width", utils.formatNumber.formatEuropean(this.value) / scaleFactor1 + "px");
				}	
				else {
					this.value = tmp1;
					
				}			
			}
			else {
				showError("field1")
			}
		});
	
	YAHOO.util.Event.addListener(YAHOO.util.Dom.get("textfield1"), 'focus', function(){
			tmp1 = this.value;
			hideAllErrors();
		});
	
	
	/*
	 * Slide 2
	 */
	slider2.subscribe("change", function() {
            var fld = YAHOO.util.Dom.get("textfield2");
            var actualValue = slider2.getRealValue();
			
			if (slider2.valueChangeSource == 1) {
				if ((actualValue > 0) && (!error)) {
					fld.value = actualValue;					
					YAHOO.util.Dom.setStyle([YAHOO.util.Dom.get("percent2")], "width", utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield2").value) / scaleFactor2 + "px");
					calculate();
				}
			}
			

        });
	
	slider2.subscribe("slideEnd", function() {            
			if (slider2.valueChangeSource == 1) {				
				slider2.setValue(utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield2").value) / scaleFactor2);
			}
        });
		
	slider2.subscribe("slideStart", function() {            
			if (slider2.valueChangeSource == 1) {				
				hideAllErrors();
			}
        });
	
	
	YAHOO.util.Event.addListener(YAHOO.util.Dom.get("textfield2"), 'change', function(){
			var x = slider2.getRealValue(parseInt(this.value * scaleFactor2));;
			if ((this.value > 0) && (this.value <= 50)) {
				calculate();
				if (!error) {
					hideError("field2")
					slider2.setValue(parseInt(this.value / scaleFactor2));
					YAHOO.util.Dom.setStyle([YAHOO.util.Dom.get("percent2")], "width", this.value / scaleFactor2 + "px");
				}	
				else {
					this.value = x;
					
				}			
			}
			else {
				showError("field2")
			}
		});
	
	YAHOO.util.Event.addListener(YAHOO.util.Dom.get("textfield2"), 'focus', function(){
			hideAllErrors();
		});
	
	
	/*
	 * Slide 3
	 */
	slider3.subscribe("change", function() {
            var fld = YAHOO.util.Dom.get("textfield3");
            var actualValue = slider3.getRealValue();
			
			if (slider3.valueChangeSource == 1) {
				if ((actualValue > 0) && (!error)) {
					fld.value = utils.formatNumber.formatAmerican(actualValue);					
					YAHOO.util.Dom.setStyle([YAHOO.util.Dom.get("percent3")], "width", utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield3").value) / scaleFactor3 + "px");
					calculate();
				}
			}
			

        });
	
	slider3.subscribe("slideEnd", function() {            
			if (slider3.valueChangeSource == 1) {				
				slider3.setValue(utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield3").value) / scaleFactor3);
			}
        });
		
	slider3.subscribe("slideStart", function() {            
			if (slider3.valueChangeSource == 1) {				
				hideAllErrors();
			}
        });
	
		
	YAHOO.util.Event.addListener(YAHOO.util.Dom.get("textfield3"), 'change', function(){
			var x = slider3.getRealValue(parseFloat(utils.formatNumber.formatEuropean(this.value) * scaleFactor3));
			if ((utils.formatNumber.formatEuropean(this.value) > 0) && (utils.formatNumber.formatEuropean(this.value) <= 20)) {
				calculate();
				if (!error) {
					hideError("field3")
					slider3.setValue(parseInt(utils.formatNumber.formatEuropean(this.value) / scaleFactor3));
					YAHOO.util.Dom.setStyle([YAHOO.util.Dom.get("percent3")], "width", utils.formatNumber.formatEuropean(this.value) / scaleFactor3 + "px");
				}	
				else {
					this.value = x;
					
				}			
			}
			else {
				showError("field3")
			}
		});
	
	YAHOO.util.Event.addListener(YAHOO.util.Dom.get("textfield3"), 'focus', function(){
			hideAllErrors();
		});

	/*
	 * Slide 4
	 */
	slider4.subscribe("change", function() {
            var fld = YAHOO.util.Dom.get("textfield4");
            var actualValue = slider4.getRealValue();
			
			if (slider4.valueChangeSource == 1) {
				if ((utils.formatNumber.formatEuropean(actualValue) > 0) && (!error)) {
					fld.value = utils.formatNumber.formatAmerican(actualValue);					
					YAHOO.util.Dom.setStyle([YAHOO.util.Dom.get("percent4")], "width", utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield4").value) / scaleFactor4 + "px");
					calculate();				
					if (!error) {
						updatePrecio();
					}
				}
			}
			

        });
	
	slider4.subscribe("slideEnd", function() {            
			if (slider4.valueChangeSource == 1) {				
				slider4.setValue(utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield4").value) / scaleFactor4);
			}
        });
		
	slider4.subscribe("slideStart", function() {            
			if (slider4.valueChangeSource == 1) {				
				hideAllErrors();
			}
        });
	
	YAHOO.util.Event.addListener(YAHOO.util.Dom.get("textfield4"), 'blur', function(){
		this.value=utils.formatNumber.formatAmerican(utils.formatNumber.formatEuropean(this.value))
	});
	
	YAHOO.util.Event.addListener(YAHOO.util.Dom.get("textfield4"), 'change', function(){
			var x = slider4.getRealValue(parseFloat(utils.formatNumber.formatEuropean(this.value) * scaleFactor4));
			if ((utils.formatNumber.formatEuropean(this.value) > 0) && (utils.formatNumber.formatEuropean(this.value) <= 1000000)) {
				calculate();			
				if (!error) {
					updatePrecio();
					hideError("field4")
					slider4.setValue(parseInt(utils.formatNumber.formatEuropean(this.value) / scaleFactor4));
					YAHOO.util.Dom.setStyle([YAHOO.util.Dom.get("percent4")], "width", utils.formatNumber.formatEuropean(this.value) / scaleFactor4 + "px");
				}	
				else {
					this.value = utils.formatNumber.formatAmerican(x);
					
				}			
			}
			else {
				showError("field4")
			}
		});
	
	YAHOO.util.Event.addListener(YAHOO.util.Dom.get("textfield4"), 'focus', function(){
			hideAllErrors();
		});
	/*
	 * Slide 5
	 */
	slider5.subscribe("change", function() {
            var fld = YAHOO.util.Dom.get("textfield5");
            var actualValue = utils.formatNumber.formatEuropean(slider5.getRealValue());
			
			if (slider5.valueChangeSource == 1) {
				if ((actualValue > 0) && (!error)) {
					fld.value = utils.formatNumber.formatAmerican(actualValue);					
					YAHOO.util.Dom.setStyle([YAHOO.util.Dom.get("percent5")], "width", utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield5").value) / scaleFactor5 + "px");
					updateImporte();
				}
			}
			

        });
	
	slider5.subscribe("slideEnd", function() {            
			if (slider5.valueChangeSource == 1) {				
				slider5.setValue(utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield5").value) / scaleFactor5);
			}
        });
		
	slider5.subscribe("slideStart", function() {            
			if (slider5.valueChangeSource == 1) {				
				hideAllErrors();
			}
        });
	
	YAHOO.util.Event.addListener(YAHOO.util.Dom.get("textfield5"), 'blur', function(){
		this.value=utils.formatNumber.formatAmerican(utils.formatNumber.formatEuropean(this.value))
	});
	
	YAHOO.util.Event.addListener(YAHOO.util.Dom.get("textfield5"), 'change', function(){
			var x = slider5.getRealValue(parseFloat(utils.formatNumber.formatEuropean(this.value) * scaleFactor5));
			var aux4 = utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield4").value);
			if ((utils.formatNumber.formatEuropean(this.value) > 0) && (utils.formatNumber.formatEuropean(this.value) <= 1000000)) {
				updateImporte();
				if (!error) {
					hideError("field5")
					slider5.setValue(parseInt(utils.formatNumber.formatEuropean(this.value) / scaleFactor5));
					YAHOO.util.Dom.setStyle([YAHOO.util.Dom.get("percent5")], "width", utils.formatNumber.formatEuropean(this.value) / scaleFactor5 + "px");
				}	
				else {
					this.value = utils.formatNumber.formatAmerican(x);		
					YAHOO.util.Dom.get("textfield4").value = utils.formatNumber.formatAmerican(aux4);	
					slider4.setValue(parseInt(utils.formatNumber.formatEuropean(aux4) / scaleFactor4));		
					YAHOO.util.Dom.setStyle([YAHOO.util.Dom.get("percent4")], "width", aux4 / scaleFactor4 + "px");
				}			
			}
			else {
				showError("field5");
			}
		});
	
	YAHOO.util.Event.addListener(YAHOO.util.Dom.get("textfield5"), 'focus', function(){
			hideAllErrors();
		});
		
	/*
	 * campo gastos
	 */
	 
	YAHOO.util.Event.addListener(YAHOO.util.Dom.get("textfield6"), 'blur', function(){
		this.value=utils.formatNumber.formatAmerican(utils.formatNumber.formatEuropean(this.value))
	});
	
	YAHOO.util.Event.addListener(YAHOO.util.Dom.get("textfield6"), 'change', function(){
			var aux5 = utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield5").value);
			var aux4 = utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield4").value);
			
			if ((utils.formatNumber.formatEuropean(this.value) > 0)  && (parseFloat(utils.formatNumber.formatEuropean(this.value)) < aux5)) {
				
				if (YAHOO.util.Dom.get("Radio-5").checked) {
					updatePrecio();
				}
				else {
					updateImporte();
				}
				
				if (!error) {
					hideError("field6")
					//slider5.setValue(parseInt(t;his.value / scaleFactor5));
					//YAHOO.util.Dom.setStyle([YAHOO.util.Dom.get("percent5")], "width", this.value / scaleFactor5 + "px");
				}	
				else {					
     				YAHOO.util.Dom.get("textfield4").value = utils.formatNumber.formatAmerican(aux4);	
					slider4.setValue(parseInt(aux4 / scaleFactor4));		
					YAHOO.util.Dom.setStyle([YAHOO.util.Dom.get("percent4")], "width", aux4 / scaleFactor4 + "px");
					YAHOO.util.Dom.get("textfield5").value = utils.formatNumber.formatAmerican(aux5);	
					slider4.setValue(parseInt(aux5 / scaleFactor5));		
					YAHOO.util.Dom.setStyle([YAHOO.util.Dom.get("percent5")], "width", aux5 / scaleFactor5 + "px");
					this.value = tmp6;
				}			
			}
			else {
				showError("field6")
			}
		});
	
	YAHOO.util.Event.addListener(YAHOO.util.Dom.get("textfield6"), 'focus', function(){
			tmp6 = this.value;
			hideAllErrors();
		});
	
	/*
	 * campo gastos
	 * 
	 */
	
	YAHOO.util.Event.addListener(YAHOO.util.Dom.get("scrollup"),'click',function(){	
			var aux5 = YAHOO.util.Dom.get("textfield5").value;
			var aux4 = YAHOO.util.Dom.get("textfield4").value;
			tmp7 = 	YAHOO.util.Dom.get("textfield7").value;	
			hideAllErrors();
			if (parseInt(YAHOO.util.Dom.get("textfield7").value)<20) {
				YAHOO.util.Dom.get("textfield7").value = parseInt(YAHOO.util.Dom.get("textfield7").value)+1;
				if (YAHOO.util.Dom.get("radio-5").checked) {
					updatePrecio();
				}
				else {
					updateImporte();
				}
				if (!error) {
					hideError("field7")
					//slider5.setValue(parseInt(t;his.value / scaleFactor5));
					//YAHOO.util.Dom.setStyle([YAHOO.util.Dom.get("percent5")], "width", this.value / scaleFactor5 + "px");
				}	
				else {								
     				YAHOO.util.Dom.get("textfield4").value = aux4;	
					slider4.setValue(parseInt(aux4 / scaleFactor4));		
					YAHOO.util.Dom.setStyle([YAHOO.util.Dom.get("percent4")], "width", aux4 / scaleFactor4 + "px");
					YAHOO.util.Dom.get("textfield5").value = aux5;	
					slider4.setValue(parseInt(aux5 / scaleFactor5));		
					YAHOO.util.Dom.setStyle([YAHOO.util.Dom.get("percent5")], "width", aux5 / scaleFactor5 + "px");
					YAHOO.util.Dom.get("textfield7").value = tmp7;
				}
			}
		});
	
	YAHOO.util.Event.addListener(YAHOO.util.Dom.get("scrolldown"),'click',function(){	
			var aux5 = YAHOO.util.Dom.get("textfield5").value;
			var aux4 = YAHOO.util.Dom.get("textfield4").value;
			tmp7 = 	YAHOO.util.Dom.get("textfield7").value;	
			hideAllErrors();
			if (parseInt(YAHOO.util.Dom.get("textfield7").value)>1) {
				YAHOO.util.Dom.get("textfield7").value = parseInt(YAHOO.util.Dom.get("textfield7").value)-1;
				if (YAHOO.util.Dom.get("radio-5").checked) {
					updatePrecio();
				}
				else {
					updateImporte();
				}
				if (!error) {
					hideError("field7")
					//slider5.setValue(parseInt(t;his.value / scaleFactor5));
					//YAHOO.util.Dom.setStyle([YAHOO.util.Dom.get("percent5")], "width", this.value / scaleFactor5 + "px");
				}	
				else {								
     				YAHOO.util.Dom.get("textfield4").value = aux4;	
					slider4.setValue(parseInt(aux4 / scaleFactor4));		
					YAHOO.util.Dom.setStyle([YAHOO.util.Dom.get("percent4")], "width", aux4 / scaleFactor4 + "px");
					YAHOO.util.Dom.get("textfield5").value = aux5;	
					slider4.setValue(parseInt(aux5 / scaleFactor5));		
					YAHOO.util.Dom.setStyle([YAHOO.util.Dom.get("percent5")], "width", aux5 / scaleFactor5 + "px");
					YAHOO.util.Dom.get("textfield7").value = tmp7;
				}
			}
		});
	
	/*
	 * Cálculos
	 */
	function updateCuota() {
		var plazo = -utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield2").value) * 12;
		var interes = utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield3").value) / 12;
		var a1 = utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield4").value) * interes;
		var a2 = 100 * (1 - Math.pow(1 + interes / 100, plazo));
		var x1 = Math.round((a1 / a2)*100)/100;		
		if (!isNaN(x1) && (x1>0) && (x1<=4000)) {
			slider1.setValue(x1 / scaleFactor1);
		    YAHOO.util.Dom.get("textfield1").value = utils.formatNumber.formatAmerican(x1);
			YAHOO.util.Dom.setStyle([YAHOO.util.Dom.get("percent1")], "width", parseFloat(x1) / scaleFactor1+"px");		
			hideError("field1")
		}
		else {
			showError("field1")
		}
	}
	
	function updatePlazos() {
		var x2=Math.round(-(Math.log(1-((utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield4").value)*((utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield3").value)/100)/12))/utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield1").value)))/Math.log(1+((utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield3").value)/100)/12))) /12);
		if ((x2 >= 0) && (x2 <= 50)) {
			slider2.setValue(x2 / scaleFactor2);
			YAHOO.util.Dom.get("textfield2").value = x2;
			YAHOO.util.Dom.setStyle([YAHOO.util.Dom.get(YAHOO.util.Dom.get("percent2"))], "width", utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield2").value) / scaleFactor2 + "px");
			hideError("field2")
		}
		else {
			showError("field2");
			//alert('Out of bounds');
			//vueltaAtras();
		}	
	}
	
	function updateTipo() {
		tipo_mensual = 20.0 / 1200.0
				inc_tipo_mensual = 10.0 / 1200.0
				y  = 1.0 + tipo_mensual;
				
				cuota_actual = Math.round(utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield4").value) * tipo_mensual * Math.pow(y,utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield2").value)*12) / ( Math.pow(y,utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield2").value)*12) - 1.0 ))
				
				while ( cuota_actual != Math.round(utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield1").value)))
				{	y  = 1.0 + tipo_mensual
				
					cuota_actual = Math.round(utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield4").value) * tipo_mensual * Math.pow(y,YAHOO.util.Dom.get("textfield2").value*12) / ( Math.pow(y,utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield2").value)*12) - 1.0 ))
		
					if (cuota_actual > utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield1").value))
					{ // se aplica un interes muy alto, hay que bajarlo
					  tipo_mensual= tipo_mensual - inc_tipo_mensual
					}
					else
					{// se aplica un interes muy bajo, hay que subirlo
					  tipo_mensual= tipo_mensual + inc_tipo_mensual
					}
					
					inc_tipo_mensual = inc_tipo_mensual / 2.0
				}
				
				tipo_mensual = tipo_mensual * 1200.0;
				
				var x3 = Math.round(tipo_mensual * 100.00) / 100.00;
				
				if ((x3 > 0) && (x3 <= 20)) {
					slider3.setValue(parseInt(x3 / scaleFactor3));
					YAHOO.util.Dom.get("textfield3").value = utils.formatNumber.formatAmerican(x3);
					YAHOO.util.Dom.setStyle([YAHOO.util.Dom.get("percent3")], "width", utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield3").value) / scaleFactor3 + "px");
					hideError("field3");
				}
				else {
				showError("field3");
				}
	}
	
	function updateImporte2() {		
		tipo_mensual = parseFloat(utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield3").value)) / 1200.0		
		y  = 1.0 + tipo_mensual;
		imp = utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield1").value) / ( tipo_mensual * Math.pow(y,utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield2").value)*12) / ( Math.pow(y,utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield2").value)*12) - 1.0 ) );
		var t4=Math.round(imp *100.00) / 100.00;
		if ((t4>0) && (t4<1000000)) {
			slider4.setValue(parseInt(t4 / scaleFactor4));
			YAHOO.util.Dom.get("textfield4").value = utils.formatNumber.formatAmerican(t4);
			YAHOO.util.Dom.setStyle([YAHOO.util.Dom.get("percent4")], "width", utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield4").value) / scaleFactor4 + "px");
			hideError("field4");
			updatePrecio();

		}
		else {
			showError("field4");
		}
		

	
	}
	
	function updateImporte(){
		var x4 = utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield5").value) * (1 + (utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield7").value) / 100) ) - utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield6").value);
		if ((x4>0) && (x4<1000000)) {
			YAHOO.util.Dom.get("textfield4").value = utils.formatNumber.formatAmerican(x4)
			slider4.setValue(utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield4").value) / scaleFactor4);
			YAHOO.util.Dom.setStyle([YAHOO.util.Dom.get("percent4")], "width", parseFloat(utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield4").value)) / scaleFactor4+"px");		
			hideError("field4")
			if (YAHOO.util.Dom.get("radio-1").checked) {
			updateCuota();
			}
			if (YAHOO.util.Dom.get("radio-4").checked) {
			updateCuota();
			}
			if (YAHOO.util.Dom.get("radio-2").checked) {
				updatePlazos();
			}
			if (YAHOO.util.Dom.get("radio-3").checked) {
				updateTipo();
			}
		}
		else {
			showError("field4");
		}
	}
	/*
	 * funcion para actualizar precio del inmueble en función de las variaciones del importe a financiar
	 * 
	 */
	function updatePrecio() {
		var x5 = Math.round(((parseInt(utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield4").value)) + parseInt(utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield6").value)) ) / parseFloat(1+utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield7").value)/100))*100)/100;
		slider5.setValue(parseInt(x5 / scaleFactor5))
		YAHOO.util.Dom.get("textfield5").value = utils.formatNumber.formatAmerican(x5);
		YAHOO.util.Dom.setStyle([YAHOO.util.Dom.get("percent5")], "width", utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield5").value)/scaleFactor5+"px");
	}
	/*
	 * function showBars(obj)
	 */
	function showBars(obj) {
		
		var number = obj.id.replace("radio-","");
		for (var i=1; i<=7; i++) {
			YAHOO.util.Dom.setStyle([YAHOO.util.Dom.get("textfield"+i)],"display", "block");
			
			if (i == number) {
				YAHOO.util.Dom.get("textfield"+i).disabled=true;
				YAHOO.util.Dom.setStyle([YAHOO.util.Dom.get("sliderthumb" + i)], "visibility", "hidden");
			}
			else {
				YAHOO.util.Dom.get("textfield"+i).disabled=false;
			}
			YAHOO.util.Dom.setStyle([YAHOO.util.Dom.get("unit"+i)],"display", "block");
			if (YAHOO.util.Dom.get("percent" + i)) {
				YAHOO.util.Dom.setStyle([YAHOO.util.Dom.get("percent" + i)], "visibility", "visible");
			}
			if ((YAHOO.util.Dom.get("sliderthumb" + i)) && (i != number) ) {
				YAHOO.util.Dom.setStyle([YAHOO.util.Dom.get("sliderthumb" + i)], "visibility", "visible");
			}
			
		}
		YAHOO.util.Dom.setStyle( [ YAHOO.util.Dom.get("scrollup"), YAHOO.util.Dom.get("scrolldown") ],"visibility", "visible");
		
	}
	
	/*
	 * function para poner los cursores en en el valor indicado por el input asociado.
	 */
	function setBarsValues() {
		slider1.setValue(utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield1").value) / scaleFactor1);
		slider2.setValue(utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield2").value) / scaleFactor2);
		slider3.setValue(utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield3").value) / scaleFactor3);
		slider4.setValue(utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield4").value) / scaleFactor4);
		slider5.setValue(utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield5").value) / scaleFactor5);
		YAHOO.util.Dom.setStyle([YAHOO.util.Dom.get("percent1")], "width", utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield1").value) / scaleFactor1 + "px");
		YAHOO.util.Dom.setStyle([YAHOO.util.Dom.get("percent2")], "width", utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield2").value) / scaleFactor2 + "px");
		YAHOO.util.Dom.setStyle([YAHOO.util.Dom.get("percent3")], "width", utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield3").value) / scaleFactor3 + "px");
		YAHOO.util.Dom.setStyle([YAHOO.util.Dom.get("percent4")], "width", utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield4").value) / scaleFactor4 + "px");
		YAHOO.util.Dom.setStyle([YAHOO.util.Dom.get("percent5")], "width", utils.formatNumber.formatEuropean(YAHOO.util.Dom.get("textfield5").value) / scaleFactor5 + "px");
	}	
	
	/*
	 * function para bordear en caso de error
	 */
	function showError(id) {
		YAHOO.util.Dom.setStyle([YAHOO.util.Dom.get(id)], "border", "1px solid #ff0000");
		error = 1;
	}
	
	/*
	 * function para bordear en caso de error
	 */
	function hideError(id) {
		YAHOO.util.Dom.setStyle([YAHOO.util.Dom.get(id)], "border", "0px solid #ff0000");
		error = 0;
	}
	
	function hideAllErrors() {
		for (var i=1; i<=7; i++) {
			YAHOO.util.Dom.setStyle([YAHOO.util.Dom.get("field"+i)], "border", "0px solid #ff0000");
			error = 0;
		}
	}
	
	for (var i = 1; i <= 5; i++) {
		YAHOO.util.Event.addListener(YAHOO.util.Dom.get("radio-"+i), 'click', function(){
			showBars(this);
			setBarsValues();
			hideAllErrors();
			//numbersToStrings();			
		})
	}
	/*
	 * Esta función decide qué es lo que hay que calcular en función del radio chequeado.
	 */
	function calculate() {
		if (YAHOO.util.Dom.get("radio-1").checked) {
			updateCuota();
		}
		if (YAHOO.util.Dom.get("radio-2").checked) {
			updatePlazos();
		}
		if (YAHOO.util.Dom.get("radio-3").checked) {
			updateTipo();
		}
		
		if (YAHOO.util.Dom.get("radio-4").checked) {
			updateImporte2();
		}
		
		if (YAHOO.util.Dom.get("radio-5").checked) {
			updateImporte2();
		}
	}
	
		for (var i=1; i<=7; i++) {
			if ((i!=2) && (i!=7)) {
				YAHOO.util.Dom.get("textfield"+i).value=utils.formatNumber.formatAmerican(YAHOO.util.Dom.get("textfield"+i).value);
			}
		}
		updateImporte();
		updateCuota();
	
})
	
