//----------------------------------------------------------------------
function PonPuntos(obj, signo, tam_max)
{
var numero;
numero = obj.value + 1;

   //Aqui comprobamos que el valor introducido no sea mayor que el 
   //cuadro que lo contiene

  if (numero.length > tam_max)
   {
     event.returnValue = false;
     return false;
   }

  /** Aqui controlamos que no se ponga el punto al inicio de cualquier numero **/

  if ((obj.value=="") && (event.keyCode == 48)) {
     event.returnValue = false;
  }
  else
  	
  	if (signo == "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 signo_character = "";

      if (
           (s_pre.substring(0, 1) == "+")
             ||
           (s_pre.substring(0, 1) == "-")
         )
      {
        signo_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 = signo_character + s_post;

      event.returnValue = false;
    }
  }
}
//----------------------------------------------------------------------
function Borra_puntos(numero_puntos){
				
    		var num_p;
    		num_p = numero_puntos;

    		long1 = 0;
    		long1 = num_p.length;
    		
    		var num_espacios = "";
    		
    		n = 0;

    		while (n<long1){
        		
        		var car = ' ';
        		var car = num_p.charAt(n);
        		
        		if (car != '.')
            			num_espacios += num_p.charAt(n);
        		n++;

    		}

    		var sin_puntos = parseInt(num_espacios,10);
    		
    		return sin_puntos;
	}
//----------------------------------------------------------------------
function Formato_numero(numero){

	var nombre = "";
	var num = numero;

	if (num != ""){

		var str = "";
		while (num > 999){

			n1 = Math.floor(num/1000);
			n2 = num - 1000 * n1;

			if (n2 < 10){
			   n2 = "00" + n2;
	        	}
			else{
			   if (n2 < 100)
	       		      n2 = "0" + n2;
	                }
			str = "." + n2 + str;
			num = n1;

		}
		str = num + str;
	}
	return (str);
}

//----------------------------------------------------------------------
function esNumero(temp){ // esta funcion nos dice si un valor dado es numero o no
        cadenaInput=""+temp;
        if (cadenaInput=="NaN"){
                return false;
        }
        for ( var j=0 ; j <= cadenaInput.length-1 ; j++ ){
                var car1=cadenaInput.charAt(j);
                if (car1 <"0" || car1 >"9"){
                        if (car1!="."){
                                return false;
                        }
                }
        }
        return true;
}
//----------------------------------------------------------------------
function formatoMoneda(temp){
        var cifra=""+temp;
        var cadenaTemp="";
        var temp2=0;
        for (var n=cifra.length; n>=1;n--){
                temp2++
                if (temp2==3) {
                        cadenaTemp=("."+cifra.charAt(n-1))+cadenaTemp;
                        temp2=0;
                }
                else {
                        cadenaTemp=cifra.charAt(n-1)+cadenaTemp;
                }
        }
        if (cadenaTemp.charAt(0)=="."){
                cadenaTemp=cadenaTemp.substring(1,cadenaTemp.length);
        }
        return cadenaTemp;
}
//----------------------------------------------------------------------
function entreLimites(inf,sup,temp,cad1){
        res1=true
        if(temp.value=="") {
                temp.value = 0
        }
        cantidad=quitaMillares(temp.value);
        if (esNumero(cantidad)){
                if (cantidad < inf || cantidad > sup){
                        alert("El valor debe estar comprendido entre "+formatoMoneda(inf,".")+" y "+formatoMoneda(sup,".")+cad1);
                        temp.value="";
                        res1=false;
                }
        } else {
                alert("Debe introducir un numero.");
                temp.value="";
                res1=false;
        }
        return res1;
}
//----------------------------------------------------------------------
function calculaPrestamo(temp){
        if (validas == 1) {
        		temp.formCapital.value=quitaMillares(temp.formCapital.value);
        		var capital=temp.formCapital.value;
        		var tiempo=temp.formTiempo.value;
        		var interes=temp.formInteres.value/1200;
        		factor=Math.pow((1+interes),tiempo)
        		cuota=capital * ( (factor*interes) / (factor-1) );
        		temp.formCapital.value=formatoMoneda(temp.formCapital.value);
        		temp.formTiempo.value=formatoMoneda(temp.formTiempo.value);

        if("NaN"==""+cuota || "Infinity"==""+cuota){
            cuota=0;
        }
        temp.formResultado.value=formatoMoneda(Math.round(cuota));
        }
        else{
        		temp.formResultado.value=""
        }
}
//----------------------------------------------------------------------
function compruebaEntradas(temp){

        validas=1;
        if(!esNumero(quitaMillares(temp.formCapital.value))){
                alert("Por favor, introduzca un n&uacute;mero.");
                temp.formCapital.value="";
                validas=0;
        }
        if(!entreLimites(1000000,30000000,temp.formCapital,' de pesetas.')){
                validas=0;
        }
        if(!entreLimites(1,300,temp.formTiempo,' meses.')){
                validas=0;
        }
}
//----------------------------------------------------------------------
function ponInteres(temp){
        var inte=0;
        if (temp.Rmeses[0].checked){
                inte=3.75;
        }
        if (temp.Rmeses[1].checked){
                inte=4.25;
        }
        if (temp.Rmeses[2].checked){
                inte=6.;
        }
        temp.formInteres.value=inte;
}
//----------------------------------------------------------------------
function ponInteres2(temp){
        var t_inte=0;
        if (temp.periodo_inicial.options[0].selected == true){
                t_inte=3.75;
        }
        if (temp.periodo_inicial.options[1].selected == true){
                t_inte=4.25;
        }
        if (temp.periodo_inicial.options[2].selected == true){
                t_inte=6.;
        }
        temp.formInteres.value=t_inte;
}
//----------------------------------------------------------------------
var elem=new Array(6,9,11,12,13,17,19)
var campos=new Array("Importe a financiar","Plazo","Apellidos","Nombre","D.N.I.","E-mail","Teléfono")
//----------------------------------------------------------------------
function obligatorios(){
        var cont=0
        var paso=true
        for (var i=0;i<elem.length;i++){
        cont+=1
                if(document.forms['PrestamoPersonal'].elements[elem[i]].value==""){
					alert("Debe rellenar el campo \""+campos[i]+"\"")
					document.forms['PrestamoPersonal'].elements[elem[i]].focus()
					paso=false
					break
                }
        }
        if (paso) document.forms['PrestamoPersonal'].submit()
}
//----------------------------------------------------------------------
var datos = new Array(4)
var nomdatos =new Array("Capital inicial","Tipo de interés","Plazo de amortización","Mensualidad")
var capitemp=0
var intetemp=0
var plazotemp=0
var mensutemp=0
//----------------------------------------------------------------------
function borradato(num){
	document.formHipoteca.elements[num].value=""
}
//----------------------------------------------------------------------
function compruebadatos(){
sigo = true
if (!(document.formHipoteca.c.value == "")){
document.formHipoteca.c.value = Borra_puntos(document.formHipoteca.c.value);}
if (!(document.formHipoteca.m.value == "")){
document.formHipoteca.m.value = Borra_puntos(document.formHipoteca.m.value);}

  if (document.formHipoteca.elements[2].value > 35)
  {
	alert("El Banco de España no autoriza amortizaciones de mas de 35 años");
    document.formHipoteca.elements[2].value = "";
	return;
  }
  
   if (document.formHipoteca.p.value == '')
  {
	alert("Debe introducir un plazo, en años");
    document.formHipoteca.p.focus();
	return;
  }

   
	for (i=0;i<4;i++){

		if (isNaN(document.formHipoteca.elements[i].value)){
			sigo=false
			alert("El dato introducido en "+nomdatos[i]+" no es un número")
			break
		}
	}
	if (sigo){
		if (!(document.formHipoteca.p.value == "")) {
		document.formHipoteca.p.value = parseInt(document.formHipoteca.p.value) * 12;}
		calculaprestamo()
	}
if (!(document.formHipoteca.c.value == "") && !(document.formHipoteca.m.value == "")){
document.formHipoteca.c.value = Formato_numero(document.formHipoteca.c.value);
document.formHipoteca.m.value = Formato_numero(document.formHipoteca.m.value);}
}
//----------------------------------------------------------------------

//Función que comprueba que lo que se introduce es un valor numérico

function versicifra(input){
	var numero=/^[0-9]+$/	
	if (!numero.test(input.value)){
		input.value="";
		
	}else if ((input.value=='.')||(input.value==',')){
		alert ("Introduzca cifras sin comas o puntos")
	}
}

//----------------------------------------------------------------------

function calculaprestamo(){
var suma=0
correcto=true
	for (i=0;i<4;i++){
		datos[i]=document.formHipoteca.elements[i].value
		if (datos[i]!=""){
			suma+=1
		}
	}
	if (suma==4){
		correcto=false
		document.formHipoteca.p.value = parseInt(document.formHipoteca.p.value) / 12;
		alert("Es necesario que deje uno de los datos vacío")
	}else{
		if (suma<3){
			correcto=false
			document.formHipoteca.p.value = parseInt(document.formHipoteca.p.value) / 12;
			document.formHipoteca.elements[2].value = "";
			alert("Es necesario que introduzca tres datos")
		}
	}
	if (correcto){
		if (datos[1]==""){
			mtemp=datos[0]/datos[2]
			if (datos[3]<mtemp){
				correcto=false
				alert("Ha introducido una combinación no válida de capital, plazo y mensualidad")
			}else{
				calculainteres()
			}
		}
		if (datos[0]==""){
			id=datos[1]/1200
			
			if (plazotemp==datos[2] && intetemp==id && parseInt(mensutemp)==datos[3]){
				res=mensutemp/((Math.pow(1+intetemp,plazotemp)*intetemp)/(Math.pow(1+intetemp,plazotemp)-1))
			}else{
				res=datos[3]/((Math.pow(1+id,datos[2])*id)/(Math.pow(1+id,datos[2])-1))
			}
			res=parseInt(res)

			document.formHipoteca.elements[0].value=res
			document.formHipoteca.p.value = parseInt(document.formHipoteca.p.value) / 12;
		}
		if (datos[2]==""){
			id=datos[1]/1200
			dividendo1=Math.log(datos[3])
			suma1=(-datos[0]*id)

			suma2=datos[3]

			sumando=parseFloat(suma1)+parseFloat(suma2)

			dividendo2=Math.log(sumando)
			

			divisor=Math.log(1+id)

			res=(dividendo1-dividendo2)/divisor

			res=Math.ceil(res)

			document.formHipoteca.elements[2].value=res
			if ((res /12) > 35 || isNaN(res)) {
				alert("El Banco de España no autoriza amortizaciones de mas de 35 años");			
				document.formHipoteca.elements[2].value = "";
				return;
			}

			cinicial=datos[3]/((Math.pow(1+id,res)*id)/(Math.pow(1+id,res)-1))
			if (document.formHipoteca.elements[0].value!=parseInt(cinicial)){
				document.formHipoteca.elements[0].value=parseInt(cinicial)
				alert("Se ha modificado el Capital inicial para que sea \ncoherente con el resultado del plazo en valores enteros")
			}
		document.formHipoteca.p.value = Math.round(parseInt(document.formHipoteca.p.value) / 12);
		}
		if (datos[3]==""){
			id=datos[1]/1200
			res=datos[0]*((Math.pow(1+id,datos[2])*id)/(Math.pow(1+id,datos[2])-1))
			intetemp=id
			capinitemp=datos[0]
			plazotemp=datos[2]
			mensutemp=res
			dato=res+""
			indi=dato.indexOf(".")
			if (dato!=-1){

				deci=dato.substring(indi+1,indi+3)

				if (parseInt(deci)>=50){
					document.formHipoteca.elements[3].value=Math.ceil(res)
				}else{
					document.formHipoteca.elements[3].value=parseInt(res)
				}
			}else{
				res=parseInt(res)
				document.formHipoteca.elements[3].value=res
			}				document.formHipoteca.p.value = parseInt(document.formHipoteca.p.value) / 12;

		}
	}

}
//----------------------------------------------------------------------
function calculainteres(){
	inter=4.50

			if (plazotemp==datos[2] && capinitemp==datos[0] && parseInt(mensutemp)==datos[3]){
				d3=mensutemp
				d2=plazotemp
				d0=capinitemp
			}else{

				d0=datos[0]
				d3=datos[3]
				d2=datos[2]
			}

	do{
		id=inter/1200
		res=d0*((Math.pow(1+id,d2)*id)/(Math.pow(1+id,d2)-1))
			if (parseInt(res)>d3){
					inter=inter-0.01
			}
			if (parseInt(res)<d3){
					inter= inter+0.01
			}

	comparo=(parseInt(d3))+parseInt(31)

	comparo1=(parseInt(d3))-parseInt(31)
	}
	while (parseInt(res)>parseInt(comparo) || parseInt(res)<parseInt(comparo1))
		inter=inter*100
		inter=parseInt(inter)
		inter=inter/100
		document.formHipoteca.elements[1].value=inter
	
			id=inter/1200
			cinicial=datos[3]/((Math.pow(1+id,datos[2])*id)/(Math.pow(1+id,datos[2])-1))
			if (document.formHipoteca.elements[0].value!=parseInt(cinicial)){
				document.formHipoteca.elements[0].value=parseInt(cinicial)
	
				alert("Se ha modificado el Capital para que sea \ncoherente con el redondeo aplicado ")
			}
	document.formHipoteca.p.value = parseInt(document.formHipoteca.p.value) / 12;
	capinitemp=0
	plazotemp=0

}
//----------------------------------------------------------------------