function getNextElement (field) {
	  var form = field.form;
	  for (var e = 0; e < form.elements.length; e++)
		 if (field == form.elements[e])
			break;
	  return form.elements[++e % form.elements.length];
	}
	function tabOnEnter (field, evt) {
	  var keyCode = document.layers ? evt.which : document.all ? 
	evt.keyCode : evt.keyCode;
	  if (keyCode != 13)
		 return true;
	  else {
		 getNextElement(field).focus();
		 return false;
	  }
	}
	
	var obj_per,obj_neta,obj_otros,obj_plazo,obj_interes,obj_ahorros,obj_cuota,obj_hipo,obj_casa,obj_moneda;
	var per = 0;
	var neta = 0;
	var otros = 0;
	var pagos = 0;
	var plazo = 0;
	var interes = 0;
	var ahorros = 0;
	var cuota = 0;
	var hipo = 0;
	var casa = 0;
	var moneda = 1;
	var n = 0;
	var prime = true;
	var old_resp=0;
	
	// Funcion que devuelve si la cadena corresponde a un numero: True o False.
	function esNumero(cadena)
	{
			  var anum = /(^\d+$)|(^\d+\.\d+$)/;
			  if (anum.test(cadena)) { return true; }
			  else { return false; }
	}
	// FunciA3n que lee el valor de un campo, y devuelve el valor bien formateado para
	// poder manejarlo en Java-script. Se carga los puntos que haya y cambia las comas por puntos.
	function Leer_campo(campo)
	{
		var ind1 = 0;
			  // Coge el valor del campo.
			  var valor = campo.value;
			  var valor2 = valor.toString();
						 
			  /// Si esta vacio, lo devuelve tal cual.
			  if (valor2 == "") { return ""; }
			  else if(valor2 == "0"){return "0";}
			  
		 /*    while (parseInt(valor2.substr(0, 1),10) == 0){
				valor2 = valor2.substr(1, valor2.length);
			  }
			*/  
			  if (campo != document.formulario.interes && n==0)
			  {        	
				ind1 = valor2.indexOf(".");
				if (ind1 != -1)
				{         
					alert ("Por favor, introduzca una cantidad sin puntos");
					valor2 = "0";
				}
			  }
			  else
			  {
				ind1 = valor2.indexOf(",");
				if (ind1 != -1)
				{
					valor2 = valor2.replace(/\,/g,".");        		
				}
			  }
			  //Chapuza dentro de la chapuza
			  if (campo == document.formulario.neta || campo == document.formulario.otros)
			  {
				ind1 = valor2.indexOf(",");
				if (ind1 != -1)
				{
					valor2 = valor2.replace(/\,/g,".");        		
				}
			  }
			  // Comprueba si es un numero.
			  if (!esNumero(valor2)) { alert("Por favor, introduzca un nAomero positivo.");  valor2 = "0"; }
			  
						 
			  return valor2;
	}
	// Lee el valor de una variable, y devuelve el valor formateado para
	// escribirlo en la pantalla. Cambia punto por , y separa los miles con puntos.
	function Escribir_campo(valor,nored,control)
	{
		//var nored= false;
		//alert(nored);
		
		if (nored!=true)(moneda==1) ? valor=Redondear(valor,2) : valor=Redondear(valor,0);
		
			  // Si es un 0, deja el campo vacA­o.
			  if (parseInt(obj_ahorros.value) == 0 && parseInt(obj_ahorros) == 0 && parseInt(obj_pagos) == 0)
			  {
				return "0";
			  }
			  
			  if (valor == 0) 
			  { 
				if (control == 0)
					return "";
				else
					return "0";
			  }
			  
			  // Cambia los , por .
			  valor2 = valor.toString();
			  valor2 = valor2.replace(/\./g, ",");
			  
			  // Si el campo empieza por un decimal, le pone un 0 delante.
			  if (valor2.substr(0, 1) == ",") { valor2 = "0" + valor2; }
			  
			  // Busca la coma, ya que es el final de la parte entera.
			  pos_coma = valor2.indexOf(",");
			  if (pos_coma == -1) { pos_coma = valor2.length; }
			  while (pos_coma > -1  &&  pos_coma > 3)
			  {
						 valor2 = valor2.substr(0, pos_coma-3) + "." + valor2.substr(pos_coma-3);
						 pos_coma = pos_coma - 3;
			  }
			  
			  // Comprueba si es 0, para devolver una cadena vacia.
			  valor3 = "" + valor2;
			  valor3 = valor3.replace(/\,/g, ".");
			  if (parseFloat(valor3) == 0.0) { valor2 = ""; }
			  
			  return valor2.valueOf();
			  
	}
	
	//Funcion q redondea un numero con el numero de decimales q se quiera
	function Redondear ( number, numDec ) {
			 if (numDec == 0)
			 {
				var roundNum = number.toString();
				var ind1 = roundNum.indexOf(".");
				if (ind1 == -1) { return roundNum; }
				  else
				  {    
						 var returnNum = Math.round(roundNum);
						 return returnNum;
				  }
		}
		else
		{
				 var roundNum  = number * ( Math.pow(10,numDec) );
					  roundNum  = Math.round(roundNum);
				 var returnNum = roundNum / (Math.pow(10,numDec));
				 return returnNum;
		}
		  
	}
	//funcion q pasa euros a ptas pasandole document.formulario.nombre
	function eurosPtas(valor)
	{	
		var FactorCambio = 166.386;
		var euros = valor / FactorCambio;
		var eurosRed = Redondear(euros,3);	
		return eurosRed;
	}
	
	//funcion q pasa ptas a euros pasandole document.formulario.nombre
	function ptasEuros(valor)
	{	
		var FactorCambio = 166.386;
		var euros = valor * FactorCambio;
		var eurosRed = Redondear(euros,3);	
		return eurosRed;
	}
	
	
	function cambiaMoneda()
	{
		var resp = "";
		for(var i = 0; i < obj_moneda.length; i++) {
				if (obj_moneda[i].checked) 
				{
					resp = obj_moneda[i].value;         
				}
			}	
		
		if (resp!=old_resp)
			{
	
			if (resp == 1)
			{
				moneda=0;
				per = ptasEuros(per);
				neta = ptasEuros(neta);
				otros = ptasEuros(otros);
				pagos = ptasEuros(pagos);
				ahorros = ptasEuros(ahorros);
				cuota = ptasEuros(cuota);
				hipo = ptasEuros(hipo);
				casa = ptasEuros(casa);	
				old_resp=resp;			
			}
			else if (resp == 2)
			{
				moneda = 1;
				per = eurosPtas(per);
				neta = eurosPtas(neta);
				otros = eurosPtas(otros);
				pagos = eurosPtas(pagos);
				ahorros = eurosPtas(ahorros);
				cuota = eurosPtas(cuota);
				hipo = eurosPtas(hipo);
				casa = eurosPtas(casa);
				old_resp=resp;
			}
			Actualizar_valores("");  
			
		} 
	}
	
	function cuotaAdecuada()
	{
		if (neta == "") { neta = "0"; }
		if (otros == "") { otros = "0"; }
		if (pagos == "") { pagos = "0"; }
		
		var cuot = ((0.4 * (parseInt(neta,10) + parseInt(otros,10))) - parseInt(pagos,10))/per;
		
		if (hipo != 0)
		{
			hipo = Hipoteca();
			obj_hipo.value = Escribir_campo(hipo, false, 1);
		}
		if (casa != 0)
		{
			casa = Casa();
			obj_casa.value = Escribir_campo(casa, false, 1);
		}
		
		return cuot;
		
	}
	
	function Hipoteca()
	{
		if (cuota == "") { cuota = "0"; }
		/*if (interes != "" && plazo == "") 
		{ 
			alert("Debe introducir el plazo");
			return "0";
			//interes = "0"; 
		}
		if (plazo != "" && interes == "") 
		{
			alert("Debe introducir el tipo de interACs");
			return "0";
			//plazo = "0"; 
		}
		*/
		if(cuota == 0)
			return "0";
		else if (interes == 0)
			return (cuota*plazo*12);
		else
			return (cuota*(1 - Math.pow( 1+((interes/100)/12), -(plazo*12))))/((interes/100)/12);
	}
	
	function Casa()
	{
		if (hipo == "") { hipo = "0"; }
		if (ahorros == "") { ahorros = "0"; }
		
		return (parseInt(hipo)/1)+parseInt(ahorros);
	}
	
	
	function init()
	{
		obj_per = document.formulario.periocidad;                       
			  obj_neta = document.formulario.neta;            
			  obj_otros = document.formulario.otros;
			  obj_pagos = document.formulario.pagos;    
			  obj_plazo = document.formulario.plazo;    
			  obj_interes = document.formulario.interes;            
			  obj_ahorros = document.formulario.ahorros;            
			  obj_cuota = document.formulario.cuota;            
			  obj_hipo = document.formulario.hipo;            
			  obj_casa = document.formulario.casa;  
			  obj_moneda = document.formulario.moneda;  
			  
			  Actualizar_valores("");        
			  
	}
	
	function limpiar()
	{
		obj_cuota.value="0";
		obj_hipo.value="0";
		obj_casa.value="0";
		cuota=0;
	}
	function calcula(cual)
	{        	
		prime = false;
		if(obj_neta.value == "0" || obj_neta.value =="" )limpiar();
	
			if ((parseInt(neta) + parseInt(otros)) < (parseInt(pagos)/0.4))
			{
				alert("Los gastos deben ser menores que el 40% de sus ingresos");
				obj_pagos.value = "";
				return false; 
			}
			if (obj_plazo != "" && plazo > 40)

			{
				alert("El plazo no puede superar los 40 anos");
				obj_plazo.value = "";
				return false;
			}
			if (obj_interes != "" && interes > 30)
			{
				alert("El interACs no puede superar el 30%");
				obj_interes.value = "";
				return false;
			}
		
			if (cual == "neta" &&  per !=0 && otros >-1 && pagos >-1)
			{
				cuota = cuotaAdecuada();
				obj_cuota.value = Escribir_campo(cuota, false, 1); 
				if ( parseInt(plazo) > 0 && parseInt(interes) > 0 )
				{
					hipo = Hipoteca();
					obj_hipo.value = Escribir_campo(hipo, false, 1);
					casa = Casa();
					obj_casa.value = Escribir_campo(casa, false, 1);
				}
			}
			//else if (cual == "otros" && neta != 0 && per !=0 && pagos != 0)
			else if (cual == "otros" && neta != 0 && per !=0 && pagos >-1)
			{
				cuota = cuotaAdecuada();
				obj_cuota.value = Escribir_campo(cuota, false, 1); 
				hipo = Hipoteca();
				obj_hipo.value = Escribir_campo(hipo, false, 1);
				casa = Casa();
				obj_casa.value = Escribir_campo(casa, false, 1);
				
			}
			else if (cual == "per" && parseInt(neta) != 0 && parseInt(otros) >-1 )
			{
				cuota = cuotaAdecuada();
				obj_cuota.value = Escribir_campo(cuota, false, 1); 
				
				if (casa!=0&&hipo!=0)
				{
					hipo = Hipoteca();
					obj_hipo.value = Escribir_campo(hipo, false, 1);
					casa = Casa();
					obj_casa.value = Escribir_campo(casa, false, 1);
			
				}
				
			}
			else if (cual == "pagos" && neta != 0 && per !=0 && otros >-1)
			{	
					 
				cuota = cuotaAdecuada();	
				obj_cuota.value = Escribir_campo(cuota, false, 1);
				///////
				hipo = Hipoteca();
				obj_hipo.value = Escribir_campo(hipo, false, 1);
				casa = Casa();
				obj_casa.value = Escribir_campo(casa, false, 1);
				//////// 
						
			}
			else if (cual == "cuota" && interes != 0)
			{	
				hipo = Hipoteca();
				obj_hipo.value = Escribir_campo(hipo, false, 1);
				casa = Casa();
				obj_casa.value = Escribir_campo(casa, false, 1);
				
			}
			else if (cual == "interes" && cuota != 0)
			{	
				hipo = Hipoteca();
				obj_hipo.value = Escribir_campo(hipo, false, 1);
				casa = Casa();
				obj_casa.value = Escribir_campo(casa, false, 1);
			}
			else if (cual == "plazo" && interes != 0 && cuota != 0 )
			{	
		
				hipo = Hipoteca();
				obj_hipo.value = Escribir_campo(hipo, false, 1);
				casa = Casa();
				obj_casa.value = Escribir_campo(casa, false, 1);
			}
			else if (cual = "ahorros")
			{
				hipo = Hipoteca();
				obj_hipo.value = Escribir_campo(hipo, false, 1);
				casa = Casa();
				obj_casa.value = Escribir_campo(casa, false, 1);
			}
			else if (hipo != 0 )
			{	
				casa = Casa();
				obj_casa.value = Escribir_campo(casa, false, 1);
			}
		
		
			prime=true;
	
	}
	
	
	// Actualiza un valor que se ha cambiado en su caja correspondiente.
	function Actualizar_valores(variable)
	{        
			  // Coge de la caja el valor que se ha actualizado.
			  switch(variable)
			  {        	        	
						 case "per": 
						 if ( obj_per.selectedIndex == 1){
							 per = 1
							} 
							else if ( obj_per.selectedIndex == 2){
								 per = 12
							}
							break;
							
						 case "neta": neta = Leer_campo(obj_neta);  break;
					  /*  
						  if (comision == 0)
					 obj_comision.value = "0"; 
				else
							 obj_comision.value = comision;
							 
					*/
						 case "otros": otros = Leer_campo(obj_otros);
							//if (obj_otros.value == 0){obj_otros.value="0";}else{otros = Leer_campo(obj_otros);}   
							
							break;                
						 case "pagos": pagos = Leer_campo(obj_pagos);
						// if (obj_pagos == 0){obj_pagos.value="0";}else{pagos = Leer_campo(obj_pagos);}  
								break;                
	
						  case "plazo": plazo = Leer_campo(obj_plazo);  break;
						  case "interes": interes = Leer_campo(obj_interes);   break;
						  case "ahorros": ahorros = Leer_campo(obj_ahorros);
						 //if (obj_ahorros.value == 0){obj_ahorros.value="0";}else{ahorros = Leer_campo(obj_ahorros);}  
							 break;
						 
			  }
						 
				
			  // Actualiza todos los campos.	       
			  obj_neta.value = Escribir_campo(neta, true, 0);       
			  if((otros == 0) && (prime==false))
			  {
				
				obj_otros.value = "";
				prime=true;
			  }
			  else if(otros == 0 && prime==true){
				
				obj_otros.value = Escribir_campo(otros, true, 0);
			  }
			  obj_otros.value = Escribir_campo(otros, true, 0);
				  
			if((pagos == 0) && (prime==false))
			{
				
				obj_pagos.value = pagos;
				prime=true;
			}else if((pagos == 0) && (prime==true)){
				obj_pagos.value = Escribir_campo(pagos, false, 0);
			}   
			obj_pagos.value = Escribir_campo(pagos, false, 0);
			 
			  obj_plazo.value = Escribir_campo(plazo, true, 0);   
			  //obj_interes.value =Escribir_campo(interes, true, 0);  
			  
			  if((ahorros == 0)&& (prime==false)){
				obj_ahorros.value = ahorros;
				prime=true;
			  }
			  else if((ahorros == 0)&& (prime==true)){
				obj_ahorros.value = Escribir_campo(ahorros, false, 0);
			  }   
			  obj_ahorros.value = Escribir_campo(ahorros, false, 0);
			  obj_cuota.value = Escribir_campo(cuota, false, 1);   
			  obj_hipo.value = Escribir_campo(hipo, false, 1);
			  obj_casa.value = Escribir_campo(casa, false, 1);  
			 
	}