

function checkNumber(input, min, max, msg)
{

    msg = "Datos erroneos en los campos " + msg + input.value;
    var str = input.value;
    for (var i = 0; i < str.length; i++) {
        var ch = str.substring(i, i + 1)
        if ((ch < "0" || "9" < ch) && ch != '.') {
            alert(msg);
            return false;
        }
    }

    var num = 0 + str
    if (num < min || max < num) {
        alert(msg + " no está en el rango [" + min + ".." + max + "]");
        return false;
    }
    input.value = str;
    return true;
}



function validaCampo(entrada)

{

    if (entrada.value != null && entrada.value.length != 0)
        entrada.value = "" + eval(entrada.value);
    computeForm(entrada.form);
}



function Dosdecimales(Num)

{
	
	var AuxDosdecimales=parseFloat(Num); 
	var Res2Dec=Math.round(AuxDosdecimales*100)/100 ; 

	return Res2Dec;

}


function ValorSeleccion(objeto)

{

    var i=1;

    var Indice= objeto.selectedIndex;

    return objeto.options[Indice].text;

}



function computeForm(form)

{

    if ((form.Capital.value == null || form.Capital.value.length == 0) ||
        (form.IntNom.value == null || form.IntNom.value.length == 0) ||
        (form.PlazAm.value == null || form.PlazAm.value.length == 0) )

        {
        return;
    }

    if (!checkNumber(form.Capital, 1, 1000000000000, "Capital:") ||
        !checkNumber(form.IntNom, .001, 99, "Interes:")||
        !checkNumber(form.PlazAm, 1, 480, "Plazo:")) {
        form.Cuota.value = "Datos Incorrectos";
        return;
    }


    var A=1;

   if (ValorSeleccion(form.PeriodPag) == "Mensual")
      {      A=1;
      }

   if (ValorSeleccion(form.PeriodPag) == "Bimensual")
      {      A=2;
      }

    if (ValorSeleccion(form.PeriodPag) == "Trimestral")
      {      A=3;
      }

    if (ValorSeleccion(form.PeriodPag) == "Cuatrimestral")
      {      A=4;
      }

    if (ValorSeleccion(form.PeriodPag) == "Semestral")
      {      A=6;
      }

    if (ValorSeleccion(form.PeriodPag) == "Anual")
      {      A=12;
      }

//Calculo de variables



    var INTECuota=form.IntNom.value/100	

    var INTERES=INTECuota*A/12; 

    var RECIBO=form.PlazAm.value*12/A; 

    var BASE=1+INTERES;

    var POTENCIA=Math.pow(BASE,RECIBO);

    var DIVIDENDO=form.Capital.value*INTERES*POTENCIA;

    var DIVISOR= POTENCIA-1;

    var RESULTADO=DIVIDENDO/DIVISOR;

    var TOTAL=RESULTADO*RECIBO;

    form.Cuota.value=Dosdecimales(RESULTADO);

    form.Res3.value=RECIBO;

}



function clearForm(form)

{

 form.Capital.value="";

 form.IntNom.value="";

 form.PlazAm.value="";

 form.PeriodPag.value="";

 form.Cuota.value="";

 form.Res3.value="";


}


function Peseta_Fraccionaria(num)
{
	for (var i = 0; i < num.length; i++)
		{
			if (num.charAt(i) == "." || num.charAt(i) == ",")
				return false;
		}
		return true;
	}		
	function Cadena_Numerica(num)
	{
		var cont = 0;
		for (var i = 0; i < num.length; i++)
		{
			if (num.charAt(i) < "0" || num.charAt(i) > "9")
			{
				if (num.charAt(i) == ".")
				{
					if (cont == 1)
						return false;	
					else
						cont=1;
				}
				else 
					return false;
			}	
		}
		return true;
	}


function calculo()
	{
		var num1=cantidad1.value;
		var contravalor=valor.value;
		var num2=cantidad2.value;
		if (Peseta_Fraccionaria(num2) == false)
			alert ("La peseta no es una moneda fraccionaria");
		else				
		{			
			if ((Cadena_Numerica(num1) == false) || (Cadena_Numerica(num2) == false))
				alert ("Tiene que introducir caracteres numéricos validos");
			else
			{
				if ((num1 == "") && (num2 == "")) 
					alert("Para realizar el cálculo, es preciso dejar solamente un campo libre");
				else
				{
					if ((num1 != "") && (num2 != ""))
						alert("Para realizar el cálculo, es preciso dejar al menos un campo libre");
					else				
					{
						if (num1 == "")
						{
							num2=num2/valor.value;
							num2=Math.round((num2*1000)+0.005)/1000;
							cantidad1.value=num2;
							cantidad2.value="";
						}
						else
						{
							num1=num1*valor.value;
							num1=Math.round(num1);
							cantidad1.value="";
							cantidad2.value=num1;
					}
				}
			}
		}
	}
}

