function Round2(val) { return val.toFixed(2); }
function CalcPret(mens,dure,taux) { return mens*((1-(Math.pow((1+(taux/1200)),-dure))))/(taux/1200); }
function CalcMens(pret,dure,taux) { return pret*(taux/1200)/(1-(Math.pow((1+(taux/1200)),-dure))); }
function CalcDure(pret,mens,taux) { return Math.log((1200*mens)/(1200*mens-taux*pret))/Math.log(1+taux/1200); }

function TabAmort(pret,dure,taux,cout) {
	mens = CalcMens(pret,dure,taux);
	var w = 650, h = 600, move = screen ? ',left=' + ((screen.width - w) >> 1) + ',top=' + ((screen.height - h) >> 1) : '', 
	Win = window.open('amortissement.php?pret='+pret+'&mens='+mens+'&dure='+dure+'&taux='+taux+'&cout='+cout, 'TabAmort', "toolbar=0, location=0, directories=0, status=no, scrollbars=1, resizable=1, copyhistory=0, menuBar=0" + move + ",width=" + w + ",height=" + h + ",dependent=yes", true);
	Win.opener = window; Win.focus();
}
	
function AlertError(nbr,liste) {
	avert = nbr+' ';
	if (nbr>1) avert += 'renseignements n\'ont pas été correctement saisis'; else avert += 'renseignement n\'a pas été correctement saisi';
	for (var i in liste) avert += '- '+liste[i]+'\n';
	alert(avert+'\nVeuillez vérifier la saisie des données.');
}

function CalculCc(form) {
	pret = form.pret.value.replace(',','.');
	pret = parseFloat(pret.replace(' ',''));
	mens = form.mens.value.replace(',','.');
	mens = parseFloat(mens.replace(' ',''));
	dure = parseInt(form.dure.value);
	taux = parseFloat(form.taux.value.replace(',','.'));
	NbrVal = 4;
	if (isNaN(pret)) { pret = ''; NbrVal--; }
	if (isNaN(mens)) { mens = ''; NbrVal--; }
	if (isNaN(dure)) { dure = ''; NbrVal--; }
	if (isNaN(taux)) { taux = ''; NbrVal--; }
	form.pret.value = pret;
	form.mens.value = mens;
	form.dure.value = dure;
	form.taux.value = taux;
	if (NbrVal<3) alert('Veuillez préciser trois valeurs sur quattre');
	else if (NbrVal>3) alert('Veuillez laisser une valeur vide');
	else {
		if (form.ans[0].checked) dure = dure*12;
        if (!pret) { 
			pret = Math.round(CalcPret(mens,dure,taux));
			mens = Round2(CalcMens(pret,dure,taux));
			form.mens.value = mens;
			txt = 'Montant du prêt'; val = pret+'  Euros';
		} else if (!mens) {
			mens = Round2(CalcMens(pret,dure,taux));
			txt = 'Mensualité'; val = mens+'  Euros';
		} else if (!dure) {
			dure = Math.round(CalcDure(pret,mens,taux));
			mens = Round2(CalcMens(pret,dure,taux));
			form.mens.value = mens;
			txt = 'Durée';
			anF = (dure/12);
			if (anF>=1) {
				an = Math.floor(anF);
				reste = Math.round((anF-an)*12);
				wan = 'an'; if (an>1) wan += 's';
				if (reste) { 
					val = dure+' mois ('+an+' '+wan+' et '+reste+' mois)';
				} else val = an+' '+wan;
			} else val = dure+' mois';
		} else if (!taux) {
			low  = 0; high = 100; count = 0;
			while(count<30) {
				count++;
				taux = (high+low)/2;
				test = pret-CalcPret(mens,dure,taux);
				if (test==0) break;
				else if (test<0) low = taux;
				else if (test>0) high = taux;
			}
			taux = Round2(taux);
			mens = Round2(CalcMens(pret,dure,taux));
			form.mens.value = mens;
			txt = 'Taux Effectif Global'; val = taux+' %';
		}
		cout = Math.round(mens*dure-pret);
		ResultCE.innerHTML = '<div class="Result"><dl><dt>'+txt+'</dt><dd>'+val+'</dd><dt>Coût du prêt</dt><dd>'+cout+' Euros</dd></dl><a href="#" onclick="TabAmort('+pret+','+dure+','+taux+','+cout+');return false" class="table icon">Tableau d\'amortissement</a></div>';
	}
}

function TotalTab(form,tab) {
	total = 0; obj = form.elements[tab+'[]']; nbr = obj.length;
	for (i=0; i<nbr; i++) {
		val = Math.round(obj[i].value);
		if (val) { total += val; obj[i].value = val; }
		else obj[i].value = '';
	}
	return total;
}

function CalculCR(form) {
	recettes = TotalTab(form,'re');
	depenses = TotalTab(form,'de');
	if (recettes) endettement = Math.round(depenses/recettes*100)+' %'; else endettement = '-';
	mens = Math.max(0,recettes-depenses);
	dure = parseInt(form.dure.value);
	taux = parseFloat(form.taux.value.replace(',','.'));
	TabError = new Array(); NbrError = 0;
	if (isNaN(dure)) { dure = '';  if (!isNaN(taux)) { TabError[1]='Durée'; NbrError=1; }}
	if (isNaN(taux)) { taux = ''; if (dure) { TabError[1]='Taux Effectif Global'; NbrError=1; }}
	if (NbrError) AlertError(NbrError,TabError);
	form.dure.value = dure;
	form.taux.value = taux;
	html = '<div class="Result"><dl><dt>Recettes mensuelles</dt><dd>'+recettes+' Euros</dd><dt>Dépenses mensuelles</dt><dd>'+depenses+' Euros</dd><dt><a href="taux-endettement.htm">Taux d\'endettement</a></dt><dd>'+endettement+'</dd><dt>Capacité de remboursement</dt><dd>'+mens+' Euros</dd></dl>';
	if (dure && taux && mens) {
		if (form.ans[0].checked) dure = dure*12;
		pret = Math.round(CalcPret(mens,dure,taux));
		cout = Math.round(mens*dure-pret);
		html += '<dl><dt>Capacité d\'emprunt</dt><dd>'+pret+' Euros</dd><dt>Coût du prêt</dt><dd>'+cout+' Euros</dd></dl><a href="#" onclick="TabAmort('+pret+','+dure+','+taux+','+cout+');return false" class="table icon">Tableau d\'amortissement</a>';
	}
	ResultCR.innerHTML = html+'</div>';
}