var datos = new Array(4)
var nomdatos = new Array("Capital inicial", "Tipo de interés", "Plazo de amortización", "Mensualidad")
var capitemp=0, intetemp=0, plazotemp=0, mensutemp=0;
function borradato(num) {
	document.forms[0].elements[num].value=""
}
function compruebadatos() {
	var sigo=true;
	for(i=0; i<4; i++){
		a = document.forms[0].elements[i].value.replace(",", ".");
		if (isNaN(a)) { // document.forms[0].elements[i].value)) {
			sigo=false;
			alert("El dato introducido en "+nomdatos[i]+" no es un número");
			break;
		}
	}
	if(sigo){
		if (document.forms[0].i.value==0){
			sigo=false;
			alert("El interés ha de ser mayor que cero");
		}
	}
	if(sigo) calculaprestamo()
}
function calculaprestamo(){
	var suma=0, correcto=true;
	for(i=0; i<4; i++) {
		datos[i] = document.forms[0].elements[i].value.replace(",", ".");
		if (datos[i]!="") suma++
	}
	if(suma==4) {
		correcto=false;
		alert("Es necesario que deje uno de los datos vacío");
	} else {
		if(suma<3) {
			correcto=false;
			alert("Es necesario que introduzca tres datos");
		}
	}
	if(correcto) {
		if (parseInt(datos[2])==0){
			alert("El plazo de amortización debe ser mayor que cero")
			correcto=false
		}
	}
	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]=="") {
			bComa = (document.forms[0].elements[3].value.indexOf(',')!=-1);
			id=datos[1]/1200
			//******************Operación espejo***********************
			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(parseInt(res*100)+0.5)/100;
			if(bComa) res = String(res).replace(/\./gi, ",");
			document.forms[0].elements[0].value=res
		}
		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.forms[0].elements[2].value=res
			//**********Modificamos el capital inicial******************
			cinicial=datos[3]/((Math.pow(1+id,res)*id)/(Math.pow(1+id,res)-1))
			if (document.forms[0].elements[0].value!=parseInt(parseFloat(cinicial)*100)/100){
				document.forms[0].elements[0].value=parseInt(parseFloat(cinicial)*100)/100
				alert("Se ha modificado el Capital inicial para que sea \ncoherente con el resultado del plazo en valores enteros")
			}
		}
		if(datos[3]=="") {
			bComa = (document.forms[0].elements[0].value.indexOf(',')!=-1);
			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+""
			res=parseInt(parseInt(res*100)+0.5)/100;
			if(bComa) res = String(res).replace(/\./gi, ",");
			document.forms[0].elements[3].value=res
		}
	}
}
function calculainteres(){
	inter=4.50
	//******************Operación espejo***********************************
	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.forms[0].elements[1].value=inter
	//**********Modificamos el capital inicial******************
	id=inter/1200
	cinicial=datos[3]/((Math.pow(1+id,datos[2])*id)/(Math.pow(1+id,datos[2])-1))
	if (document.forms[0].elements[0].value!=parseInt(parseFloat(cinicial)*100)/100){
		document.forms[0].elements[0].value=parseInt(parseFloat(cinicial)*100)/100
		alert("Se ha modificado el Capital inicial para que sea \ncoherente con el redondeo aplicado al resultado")
	}
	capinitemp=0
	plazotemp=0

}

