//	calculadora-hipotecas.js
//	dependencias:	/libjs/prototype.js
//					/libjs/libCookies.js
//					/libjs/validaciones.js

//var gfEuribor = 4.09;

$(document).ready(function() {
	var calc = $('#calculadora-hipotecas').size();
	if (calc > 0) {
		
		$('#plazo').change(function () {
			addCookieSelect($('#plazo').val(), 'plazoCookie');
		}).change();

		$('#tipoInteres').change(function () {
			addCookieSelect($('#tipoInteres').val(), 'tipoCookie');
		}).change();
		
		$('#gastosCompra').change(function () {
			addCookieSelect($('#gastosCompra').val(), 'gastosCookie');
		}).change();
		
		$('#ahorros').change(function () {
			$('#ahorros').val(formatAsMoney($('#ahorros').val()));
			addCookieSelect($('#ahorros').val(), 'ahorrosCookie');
		}).change();

		$('#pagar').change(function () {
			$('#pagar').val(formatAsMoney($('#pagar').val()));
		}).change();

		$('#cuota').change(function () {
			$('#cuota').val(formatAsMoney($('#cuota').val()));
		}).change();

		$('#calcular').click(function () {
			validarCalcular();
		});
		
		$('#euribor').click(function () {
			if ($('#euribortext').hasClass('is-hidden')) {
				$('#euribortext').addClass('is-visible');
				$('#euribortext').removeClass('is-hidden');
			} else {
				$('#euribortext').addClass('is-hidden');
				$('#euribortext').removeClass('is-visible');
			}
		});
		
		$('№calcular').blur(function () {
			$('#cMsgError').addClass('is-hidden');
			$('#pagar').removeClass('bg-error');
			$('#cuota').removeClass('bg-error');
		}, false);
		
	}
});

/**
Event.observe(window, 'load', function(e){
	
	if ($('calculadora-hipotecas')){// solo asigna eventos en el caso de que se cargue este js desde la calculadora
	
		Event.observe($('ahorros'), 'keypress', function(e){
			var cTecla = e.keyCode || e.which;
			if (cTecla != goKeyCodes.TAB && !soloNumeros(e, 15, false, true)){Event.stop(e);}
		}, false);
		
		Event.observe($('pagar'), 'keypress', function(e){
			var cTecla = e.keyCode || e.which;
			if (cTecla != goKeyCodes.TAB && !soloNumeros(e, 15, false, true)){Event.stop(e);}
			else if (cTecla != goKeyCodes.BACK_SPACE && cTecla != goKeyCodes.DELETE) {$('cuota').value = '';}
		}, false);
		
		Event.observe($('cuota'), 'keypress', function(e){
			var cTecla = e.keyCode || e.which;
			if (cTecla != goKeyCodes.TAB && !soloNumeros(e, 15, false, true)){Event.stop(e);}
			else if (cTecla != goKeyCodes.BACK_SPACE && cTecla != goKeyCodes.DELETE){$('pagar').value = '';}
		}, false);

		Event.observe($('form-calc-hipoteca'), 'keypress', function(e){
			var cTecla = e.keyCode || e.which;
			if (cTecla == goKeyCodes.RETURN){
				validarCalcular();
			}
		}, false);
		
		Event.observe($('calcular'), 'click', function(e){
			validarCalcular();
		}, false);
		
		Event.observe($('calcular'), 'blur', function(e){
			Element.addClassName($('cMsgError'), 'is-hidden');
			Element.removeClassName($('pagar'), 'bg-error');
			Element.removeClassName($('cuota'), 'bg-error');
		}, false);
		
	}
}, false);
*/

function validarCalcular(calcular){
	var ahorros = getAhorros();
	var cuota = getCuota();
	var pagar = getPagar();

	$('#cImporte').addClass('is-hidden');
	$('#ahorros').removeClass('bg-error');
	$('#pagar').removeClass('bg-error');
	$('#cuota').removeClass('bg-error');
	
	if (isNaN(pagar) &&  !isNaN(cuota) && !isNaN(ahorros)){
		setPagar(0);
		calcularPagar();
	}else if (isNaN(cuota) &&  !isNaN(pagar) && !isNaN(ahorros)){
		setCuota(0);
		calcularCuota();
	}else if (isNaN(ahorros)){
		//msgErrAhorra is global variable setting up in calc-formlulario-hipotecas.jspf
		$('#cMsgError').html(msgErrAhorra);
		$('#cMsgError').removeClass('is-hidden');
		$('#ahorros').addClass('bg-error');
	}else if (isNaN(pagar) && isNaN(cuota)){
		//msgErrPrecio is global variable setting up in calc-formlulario-hipotecas.jspf
		$('#cMsgError').html(msgErrPrecio);
		$('#cMsgError').removeClass('is-hidden');
		$('#pagar').addClass('bg-error');
		$('#cuota').addClass('bg-error');
	}else if (!(isNaN(pagar) && isNaN(cuota))){
		//msgErrVacio is global variable setting up in calc-formlulario-hipotecas.jspf
		$('#cMsgError').html(msgErrVacio);
		$('#cMsgError').removeClass('is-hidden');
		$('#pagar').addClass('bg-error');
		$('#cuota').addClass('bg-error');
	} 
}

function redondear(anynum){
  var destination = '';
  var chrCharacter = '';
  var source = '' + Math.round(anynum*100)/100;

  source = String(source);
  for (var i = 0; i < source.length; i++){
    chrCharacter = source.substring(i, i + 1);

    if (chrCharacter == '.'){
    	destination = destination + ',';
    }else{
    	destination = destination + chrCharacter;
    }
  }
  
  return destination;
}


function calcularPagar(){
	R = getTipo(); // Tipo de interes anual 
	N = getPlazo(); // Numero de anos
	C = getCuota(); // Cuota mensual
	G = getGastos(); // Gastos compra
	A = getAhorros(); // Ahorros iniciales
	I = C*(1-Math.pow(1+R/1200,-N*12))/(R/1200);
	setImporte(I);											   
	P = (I + A)/(1 + G/100);
	setPagar(P);
}

function calcularCuota(){
	R = getTipo(); // Tipo de interes anual 
	N = getPlazo(); // Numero de anos
	G = getGastos(); // Gastos compra
	A = getAhorros(); // Ahorros iniciales
	P = getPagar();	// Vivienda que puedes pagar
	I = P*(1+G/100)-A;
//	I = P;
	setImporte(I);
//    C = I*(R/1200)/(1-Math.pow(1+R/1200,-N*12));
    C = Math.round(I*(R/1200)/(1-Math.pow(1+R/1200,-N*12)));
	setCuota(C);
}

function calculaCookie(precio){
	if (obtieneCookie("plazoCookie")==null || !document.cookie) {
		calculaDefault(precio);
		return;
	}
	R = parseFloat(obtieneCookie("tipoCookie")); // Tipo de interes anual 
	N = obtieneCookie("plazoCookie");  // Numero de anos
	G = obtieneCookie("gastosCookie");  // Gastos compra
	A = obtieneCookie("ahorrosCookie");  // Ahorros iniciales
	P = parseFloat(precio);	// Vivienda que puedes pagar
	I = P*(1+G/100)-A;
//	I = P;
//	C = I*(R/1200)/(1-Math.pow(1+R/1200,-N*12));
	C = Math.round(I*(R/1200)/(1-Math.pow(1+R/1200,-N*12)));
	if (document.hipoteca && document.hipoteca.cuota){
		document.hipoteca.cuota.value = formatAsMoney(Math.round(C));
		document.hipoteca.plazo.value = N;
	}else{
		document.getElementById('cuota').value = formatAsMoney(Math.round(C));
		document.getElementById('plazo').value = N;
	}
}

function calculaDefault(precio){
	R = 4.00; // Tipo de interes anual (total = 4.00)
	N = 30;  // Numero de anos
	G = 0;  // Gastos compra
	P = parseFloat(precio);	// Vivienda que puedes pagar
	A = P*G/100;  // Ahorros iniciales
	I = P*(1+G/100)-A;
//	C = I*(R/1200)/(1-Math.pow(1+R/1200,-N*12));
	C = Math.round(I*(R/1200)/(1-Math.pow(1+R/1200,-N*12)));
	if (document.hipoteca && document.hipoteca.cuota){
		document.hipoteca.cuota.value = formatAsMoney(Math.round(C));
		document.hipoteca.plazo.value = N;
	}else{
		document.getElementById('cuota').value = formatAsMoney(Math.round(C));
		document.getElementById('plazo').value = N;
	}
}

function getImporte(){
	return parseFloat(unFormat($('#importe').html()));
}

function setImporte(I){
	$('#importe').html(formatAsMoney(Math.round(I)));
	$('#cImporte').removeClass();
}

function getPlazo(){
	return parseFloat($('#plazo').val());
}

function getGastos(){
	return parseFloat($('#gastosCompra').val());
}

function getAhorros(){
	return parseFloat(unFormat($('#ahorros').val()));
}

function getCuota(){
	return parseFloat(unFormat($('#cuota').val()));
}

function setCuota(C) {
	$('#pagar').css("font-weight", "normal");
	$('#cuota').css("font-weight", "bold");
	$('#cuota').val(formatAsMoney(Math.round(C)));
}

function getPagar(){
	return parseFloat(unFormat($('#pagar').val()));
}

function setPagar(P){
	$('#cuota').css("font-weight", "normal");
	$('#pagar').css("font-weight", "bold");
	$('#pagar').val(formatAsMoney(Math.round(P)));
}

function getTipo(){
	return parseFloat($('#tipoInteres').val());
}

function isEmpty(s){
	return ((s == null) || (s.length == 0));
}

function ponerPlazo(valor){
	var plazoSelector = document.forms['calculadora-hipotecas'].plazo;
	if (!isNaN(valor)){
		for (i = 0; i < plazoSelector.options.length; i++){
			if (plazoSelector.options[i].value == valor){
				plazoSelector.options[i].selected = true;
			}else{
				plazoSelector.options[i].selected = false;
			}
		}
	}else{
		plazoSelector.options[4].selected = true; // selecciona 25 anyos
	}
}

function minCero(pcValor){
	return (pcValor == "") ? "0" : pcValor;
}

function unFormat(pcValor){
	return pcValor.replace('.', '').replace('.', '').replace('.', '').replace(',', '').replace(',', '');
}

function formatAsMoney(valor){
	var puntos;
	var resultado = "";
	cadena = String(valor).replace('.', '');
	puntos = cadena.length;
	var j=0;
	for (i=puntos;i>0;i--){
		if (((j % 3)==0) && (j!=0))	{
			resultado = "." + resultado;
		}
		j++;
		append = cadena.substring(i-1,i);
		resultado = append + resultado;
	}
	return resultado;
}

function formatAsPercentage(piValor){
	var iValor = piValor / 100;
	iValor = iValor.toFixed(2);
	var cValor = iValor + '';
	
	return cValor.replace('.', ',');
}

function PonPuntos(obj, sign, imaxlength){
	var snumero; 
	snumero = obj.value + 1; 
	 
	if (snumero.length > imaxlength){  
		event.returnValue = false;
		return false;  
	}
	if (false){//(isEmpty(obj.value)) // && (event.keyCode == 48))
		event.returnValue = false;
	}else{
		if (sign == "positive"){	
			if ((event.keyCode < 48) || (event.keyCode > 57)){
	  			event.returnValue = false;
			}else{
	  			var s_pre = obj.value;
	  			var s_inter = "";
	  			var s_post = "";
	  			var single_character = "";
	  			var poner_punto = 1;
	  			for (var i = 0; i < s_pre.length; i++){
	    			single_character = s_pre.substring(i,i+1);
	    			if (single_character != "."){
	      				s_inter = s_inter + single_character;
	    			}
	  			}
				s_inter = s_inter + String.fromCharCode(event.keyCode);
				for (var j = s_inter.length; j > 0; j--, poner_punto++){
	    			s_post = s_inter.substring(j-1,j) + s_post;
	    			if ((poner_punto == 3) && (j != 1)){
	      				poner_punto = 0;
	      				s_post = "." + s_post;
	    			}
	      		}
	  			obj.value = s_post;
	  			event.returnValue = false;
			}
	  	}else{
			if ((isEmpty(obj.value) && ((event.keyCode < 48) || (event.keyCode > 57)) && (event.keyCode != 43) && (event.keyCode != 45)) || ((obj.value.length > 0) && ((event.keyCode < 48) || (event.keyCode > 57)))){
				event.returnValue = false;
			}else if (obj.value != "+" && obj.value != "-"){
	  			var s_pre = obj.value;
	  			var s_inter = "";
	  			var s_post = "";
	  			var single_character = "";
	  			var poner_punto = 1;
	  			var sign_character = "";
				if ((s_pre.substring(0, 1) == "+") || (s_pre.substring(0, 1) == "-")){
	    			sign_character = s_pre.substring(0, 1);
	    			s_pre = s_pre.substring(1, s_pre.length);
	  			}
				for (var i = 0; i < s_pre.length; i++){
	    			single_character = s_pre.substring(i,i+1);
			        if (single_character != "."){
	      				s_inter = s_inter + single_character;
	    			}
	  			}
				s_inter = s_inter + String.fromCharCode(event.keyCode);
				for (var j = s_inter.length; j > 0; j--, poner_punto++){
	    			s_post = s_inter.substring(j-1,j) + s_post;
			        if ((poner_punto == 3) && (j != 1)){
	      				poner_punto = 0;
	      				s_post = "." + s_post;
	    			}
	  			}
				obj.value = sign_character + s_post;
				event.returnValue = false;
			}
	  	}
	}
}

function Delete_miles(numero_puntos){
	var num_p;
	num_p = numero_puntos;longitud = 0;
	longitud = num_p.length;n = 0;
	var num_sp = "";
	
	while (n<longitud){
     	var car = ' ';
      	var car = num_p.charAt(n);
      	if (car != '.')
		num_sp += num_p.charAt(n);
       	n++;
	}
	
	num_sp = num_sp.replace(",",".");
	var sin_puntos = parseFloat(num_sp);
	return sin_puntos;
}

function isEmpty(s){return ((s == null) || (s.length == 0))}
