var modeAssurance=2;
function mon_change(i) {
	var mon=strtoint(getValue(eval('"mop'+i+'"')));
	if (mon>0)
	{
		j=0;
		while((frais=frais_dossier_defaut[j]) != null)
		{
			if(mon < frais[0])	
			{
				setValue(eval('"frdo'+i+'"'),inttostr(frais[1]));
				break;
			}
			j++;
		}
	}
	Gar_change(i);
}

function dur_change(i) {
	var duree=strtoint(getValue(eval('"dup'+i+'"')));
	if (js_check_form()) {
	//	if (duree<min_duree_credit) duree=min_duree_credit;
	//	if (duree>max_duree_credit) duree=max_duree_credit;
		setValue(eval('"dup'+i+'"'),duree);
		setValue(eval('"tain'+i+'"'),taux_interet_defaut[duree]);
		calcul();
	}
}

function Gar_change(i) {
	var mon=strtoint(getValue(eval('"mop'+i+'"')));
	if (mon>0) {
		if(getIndex(eval('"tygr'+i+'"'))==0)
		{
			j=0;
			while((taux=taux_garantie_caution_defaut[j]) != null)
			{
				if(mon < taux[0])	
				{
					setValue(eval('"frgr'+i+'"'),inttostr(mon*taux[1]/100));
					break;
				}
				j++;
			}
		}
		else
		{
			j=0;
			while((taux=taux_garantie_ippd_defaut[j]) != null)
			{
				if(mon < taux[0])	
				{
					setValue(eval('"frgr'+i+'"'),inttostr(mon*taux[1]/100));
					break;
				}
				j++;
			}
		}
	}
	calcul();
}

function calcul() {
	montant1=strtoint(getValue('mop1'));
	duree1=strtoint(getValue('dup1'));
	tauxInteret1=strtofloat(getValue('tain1'));
	fixeRevisable1=getIndex('tafire1');
	tauxAssurance1=strtofloat(getValue('taas1'));
	typeAssurance1=getIndex('tyas1');
	fraisDossier1=strtoint(getValue('frdo1'));
	typeGarantie1=getIndex('tygr1');
	fraisGarantie1=strtoint(getValue('frgr1'));

	if ((montant1>0)&&(duree1>0)&&(tauxInteret1>0)) {
		if (typeAssurance1==0) {
			mensualiteHorsAssurance1=calcMens(montant1,duree1,tauxInteret1,0);
			mensualiteAssurance1=montant1*tauxAssurance1/nb_eche_annuelle/100;
			mensualiteAssuranceComprise1=mensualiteHorsAssurance1+mensualiteAssurance1;
			coutTotalAssurance1=mensualiteAssurance1*duree1*nb_eche_annuelle;
		} else {
			modeAssurance=1;
			mensualiteAssuranceComprise1=calcMens(montant1,duree1,tauxInteret1,tauxAssurance1);
			montantEnCours=montant1;
			coutTotalAssurance1=0;
			for (i=0;i<duree1;i++) {
				for (j=0;j<nb_eche_annuelle;j++) {
					interet=(montantEnCours*(tauxInteret1/100))/nb_eche_annuelle;
					assurance=(montantEnCours*(tauxAssurance1/100))/nb_eche_annuelle;
					principal=mensualiteAssuranceComprise1-interet-assurance;
					montantEnCours-=principal;
					coutTotalAssurance1+=assurance;
				}
			}
			mensualiteAssurance1=coutTotalAssurance1/(nb_eche_annuelle*duree1);
			mensualiteHorsAssurance1=mensualiteAssuranceComprise1-mensualiteAssurance1;
		}

		tegHorsGarantie1=calcul_teg(montant1-fraisDossier1,mensualiteAssuranceComprise1,duree1);
		tegAvecGarantie1=calcul_teg(montant1-fraisDossier1-fraisGarantie1,mensualiteAssuranceComprise1,duree1);
		totalMensualites1=mensualiteAssuranceComprise1*duree1*nb_eche_annuelle;
		coutTotalCredit1=totalMensualites1-montant1;
		totalFraisCredit1=totalMensualites1+fraisGarantie1+fraisDossier1-montant1;

		setValue('men_hors_ass1',floattostr(mensualiteHorsAssurance1));
		setValue('men_ass1',floattostr(mensualiteAssurance1));
		setValue('men_avec_ass1',floattostr(mensualiteAssuranceComprise1));
		setValue('teg_hors_garantie1',floattostr(tegHorsGarantie1));
		setValue('teg_avec_garantie1',floattostr(tegAvecGarantie1));
		setValue('total_mens1',inttostr(totalMensualites1));
		setValue('cout_total_credit1',inttostr(coutTotalCredit1));
		setValue('cout_total_ass1',inttostr(coutTotalAssurance1));
		setValue('total_frais_credit1',inttostr(totalFraisCredit1));
		
	} else {
		setValue('men_hors_ass1','');
		setValue('men_ass1','');
		setValue('men_avec_ass1','');
		setValue('teg_hors_garantie1','');
		setValue('teg_avec_garantie1','');
		setValue('total_mens1','');
		setValue('cout_total_credit1','');
		setValue('cout_total_ass1','');
		setValue('total_frais_credit1','');
	}

	if (nb_prets==2) {
		montant2=strtoint(getValue('mop2'));
		duree2=strtoint(getValue('dup2'));
		tauxInteret2=strtofloat(getValue('tain2'));
		fixeRevisable2=getIndex('tafire2');
		tauxAssurance2=strtofloat(getValue('taas2'));
		typeAssurance2=getIndex('tyas2');
		fraisDossier2=strtoint(getValue('frdo2'));
		typeGarantie2=getIndex('tygr2');
		fraisGarantie2=strtoint(getValue('frgr2'));

		setValue('diff_mon_pret',((montant1>0)&&(montant2>0))?inttostr(Math.abs(montant1-montant2),1):"");
		setValue('diff_duree',((duree1>0)&&(duree2>0))?inttostr(Math.abs(duree1-duree2),1):"");
		setValue('diff_taux_int',((tauxInteret1>0)&&(tauxInteret2>0))?floattostr(Math.abs(tauxInteret1-tauxInteret2)):"");
		setValue('diff_taux_fixe_rev',(nb_prets==2)?((fixeRevisable1==fixeRevisable2)?"Non":"Oui"):"");
		setValue('diff_taux_ass',((tauxAssurance1>0)&&(tauxAssurance2>0))?floattostr(Math.abs(tauxAssurance1-tauxAssurance2)):"");
		setValue('diff_type_ass',(nb_prets==2)?((typeAssurance1==typeAssurance2)?"Non":"Oui"):"");
		setValue('diff_frais_dossier',((fraisDossier1>=0)&&(fraisDossier2>=0))?inttostr(Math.abs(fraisDossier1-fraisDossier2),1):"");
		setValue('diff_type_garantie',(nb_prets==2)?((typeGarantie1==typeGarantie2)?"Non":"Oui"):"");
		setValue('diff_frais_garantie',((fraisGarantie1>0)&&(fraisGarantie2>0))?inttostr(Math.abs(fraisGarantie1-fraisGarantie2),1):"");

		if ((montant2>0)&&(duree2>0)&&(tauxInteret2>0)) {
			if (typeAssurance2==0) {
				mensualiteHorsAssurance2=calcMens(montant2,duree2,tauxInteret2,0);
				mensualiteAssurance2=montant2*tauxAssurance2/nb_eche_annuelle/100;
				mensualiteAssuranceComprise2=mensualiteHorsAssurance2+mensualiteAssurance2;
				coutTotalAssurance2=mensualiteAssurance2*duree2*nb_eche_annuelle;
			} else {
				modeAssurance=1;
				mensualiteAssuranceComprise2=calcMens(montant2,duree2,tauxInteret2,tauxAssurance2);
				montantEnCours=montant2;
				coutTotalAssurance2=0;
				for (i=0;i<duree2;i++) {
					for (j=0;j<12;j++) {
						interet=montantEnCours*tauxInteret2/nb_eche_annuelle/100;
						assurance=montantEnCours*tauxAssurance2/nb_eche_annuelle/100;
						principal=mensualiteAssuranceComprise2-interet-assurance;
						montantEnCours-=principal;
						coutTotalAssurance2+=assurance;
					}
				}
				mensualiteAssurance2=coutTotalAssurance2/(nb_eche_annuelle*duree2);
				mensualiteHorsAssurance2=mensualiteAssuranceComprise2-mensualiteAssurance2;
			}

			tegHorsGarantie2=calcul_teg(montant2-fraisDossier2,mensualiteAssuranceComprise2,duree2);
			tegAvecGarantie2=calcul_teg(montant2-fraisDossier2-fraisGarantie2,mensualiteAssuranceComprise2,duree2);
			totalMensualites2=mensualiteAssuranceComprise2*duree2*nb_eche_annuelle;
			coutTotalCredit2=totalMensualites2-montant2;
			totalFraisCredit2=totalMensualites2+fraisGarantie2+fraisDossier2-montant2;
			
			setValue('men_hors_ass2',floattostr(mensualiteHorsAssurance2));
			setValue('men_ass2',floattostr(mensualiteAssurance2));
			setValue('men_avec_ass2',floattostr(mensualiteAssuranceComprise2));
			setValue('teg_hors_garantie2',floattostr(tegHorsGarantie2));
			setValue('teg_avec_garantie2',floattostr(tegAvecGarantie2));
			setValue('total_mens2',inttostr(totalMensualites2));
			setValue('cout_total_credit2',inttostr(coutTotalCredit2));
			setValue('cout_total_ass2',inttostr(coutTotalAssurance2));
			setValue('total_frais_credit2',inttostr(totalFraisCredit2));


			mensualiteHorsAssurance1=arrondiCentimes(mensualiteHorsAssurance1);
			mensualiteAssurance1=arrondiCentimes(mensualiteAssurance1);
			mensualiteAssuranceComprise1=arrondiCentimes(mensualiteAssuranceComprise1);
			tegHorsGarantie1=arrondiCentimes(tegHorsGarantie1);
			tegAvecGarantie1=arrondiCentimes(tegAvecGarantie1);
			totalMensualites1=Math.round(totalMensualites1);
			coutTotalCredit1=Math.round(coutTotalCredit1);
			coutTotalAssurance1=Math.round(coutTotalAssurance1);
			totalFraisCredit1=Math.round(totalFraisCredit1);

			mensualiteHorsAssurance2=arrondiCentimes(mensualiteHorsAssurance2);
			mensualiteAssurance2=arrondiCentimes(mensualiteAssurance2);
			mensualiteAssuranceComprise2=arrondiCentimes(mensualiteAssuranceComprise2);
			tegHorsGarantie2=arrondiCentimes(tegHorsGarantie2);
			tegAvecGarantie2=arrondiCentimes(tegAvecGarantie2);
			totalMensualites2=Math.round(totalMensualites2);
			coutTotalCredit2=Math.round(coutTotalCredit2);
			coutTotalAssurance2=Math.round(coutTotalAssurance2);
			totalFraisCredit2=Math.round(totalFraisCredit2);

			setValue('diff_men_hors_ass',((mensualiteHorsAssurance1>0)&&(mensualiteHorsAssurance2>0))?floattostr(Math.abs(mensualiteHorsAssurance1-mensualiteHorsAssurance2)):"");
			plus_grand	= ((mensualiteHorsAssurance2-mensualiteHorsAssurance1)>=0)?mensualiteHorsAssurance2:mensualiteHorsAssurance1;
			setValue('diff_men_hors_ass_po',((mensualiteHorsAssurance1>0)&&(mensualiteHorsAssurance2>0))?inttostr(Math.abs((mensualiteHorsAssurance1-mensualiteHorsAssurance2)/plus_grand*100)):"");
			setValue('diff_men_ass',((mensualiteAssurance1>0)&&(mensualiteAssurance2>0))?floattostr(Math.abs(mensualiteAssurance1-mensualiteAssurance2)):"");
			setValue('diff_men_avec_ass',((mensualiteAssuranceComprise1>0)&&(mensualiteAssuranceComprise2>0))?floattostr(Math.abs(mensualiteAssuranceComprise1-mensualiteAssuranceComprise2)):"");
			plus_grand	= ((mensualiteAssuranceComprise2-mensualiteAssuranceComprise1)>=0)?mensualiteAssuranceComprise2:mensualiteAssuranceComprise1;
			setValue('diff_men_avec_ass_po',((mensualiteAssuranceComprise1>0)&&(mensualiteAssuranceComprise2>0))?inttostr(Math.abs((mensualiteAssuranceComprise1-mensualiteAssuranceComprise2)/plus_grand*100)):"");
			setValue('diff_teg_hors_garantie',((tegHorsGarantie1>0)&&(tegHorsGarantie2>0))?floattostr(Math.abs(tegHorsGarantie1-tegHorsGarantie2)):"");
			setValue('diff_teg_avec_garantie',((tegAvecGarantie1>0)&&(tegAvecGarantie2>0))?floattostr(Math.abs(tegAvecGarantie1-tegAvecGarantie2)):"");
			setValue('diff_total_mens',((totalMensualites1>0)&&(totalMensualites2>0))?inttostr(Math.abs(totalMensualites1-totalMensualites2)):"");
			plus_grand	= ((totalMensualites2-totalMensualites1)>=0)?totalMensualites2:totalMensualites1;
			setValue('diff_total_mens_po',((totalMensualites1>0)&&(totalMensualites2>0))?inttostr(Math.abs((totalMensualites1-totalMensualites2)/plus_grand*100)):"");
			setValue('diff_cout_total_credit',((coutTotalCredit1>0)&&(coutTotalCredit2>0))?inttostr(Math.abs(coutTotalCredit1-coutTotalCredit2)):"");
			plus_grand	= ((coutTotalCredit2-coutTotalCredit1)>=0)?coutTotalCredit2:coutTotalCredit1;
			setValue('diff_cout_total_credit_po',((coutTotalCredit1>0)&&(coutTotalCredit2>0))?inttostr(Math.abs((coutTotalCredit1-coutTotalCredit2)/plus_grand*100)):"");
			setValue('diff_cout_total_ass',((coutTotalAssurance1>0)&&(coutTotalAssurance2>0))?inttostr(Math.abs(coutTotalAssurance1-coutTotalAssurance2)):"");
			plus_grand	= ((coutTotalAssurance2-coutTotalAssurance1)>=0)?coutTotalAssurance2:coutTotalAssurance1;
			setValue('diff_cout_total_ass_po',((coutTotalAssurance1>0)&&(coutTotalAssurance2>0))?inttostr(Math.abs((coutTotalAssurance1-coutTotalAssurance2)/plus_grand*100)):"");
			setValue('diff_total_frais_credit',((totalFraisCredit1>0)&&(totalFraisCredit2>0))?inttostr(Math.abs(totalFraisCredit1-totalFraisCredit2)):"");
			plus_grand	= ((totalFraisCredit2-totalFraisCredit1)>=0)?totalFraisCredit2:totalFraisCredit1;
			setValue('diff_total_frais_credit_po',((totalFraisCredit1>0)&&(totalFraisCredit2>0))?inttostr(Math.abs((totalFraisCredit1-totalFraisCredit2)/plus_grand*100)):"");
		} else {
			setValue('men_hors_ass2','');
			setValue('men_ass2','');
			setValue('men_avec_ass2','');
			setValue('teg_hors_garantie2','');
			setValue('teg_avec_garantie2','');
			setValue('total_mens2','');
			setValue('cout_total_credit2','');
			setValue('cout_total_ass2','');
			setValue('total_frais_credit2','');
			setValue('diff_taux_fixe_rev','');
			setValue('diff_type_ass','');
			setValue('diff_type_garantie','');
			/*setValue('diff_men_hors_ass','');
			setValue('diff_men_hors_ass_po','');
			setValue('diff_men_ass','');
			setValue('diff_men_avec_ass','');
			setValue('diff_men_avec_ass_po','');
			setValue('diff_teg_hors_garantie','');
			setValue('diff_teg_avec_garantie','');
			setValue('diff_total_mens','');
			setValue('diff_total_mens_po','');
			setValue('diff_cout_total_credit','');
			setValue('diff_cout_total_credit_po','');
			setValue('diff_cout_total_ass','');
			setValue('diff_cout_total_ass_po','');
			setValue('diff_total_frais_credit','');
			setValue('diff_total_frais_credit_po','');*/
		}
	}
}

function arrondiCentimes(v) {
	return Math.round(v*100)/100;
}

function calcCoefPret(i,duree) {
	return Math.pow(1+i,duree);
}

function calcMens(mnt,dur,txi,txa) {
	mis=dur*nb_eche_annuelle;
	if(modeAssurance==1) {
		txm=(txi+txa)/nb_eche_annuelle/100;
		prw=calcCoefPret(txm,mis);
		result=mnt*prw*txm/(prw-1);
	} else {
		txm=txi/nb_eche_annuelle/100;
		prw=calcCoefPret(txm,mis);
		result=mnt*(prw*txm/(prw-1)+txa/nb_eche_annuelle/100);
	}
	return result;
}

function calcul_teg(mnt,mns,dur) {
	tx1=0; tx2=25;
	while ((tx2-tx1)>.001) {
		txp=(tx1+tx2)/2;
		mnsp=calcMens(mnt,dur,txp,0);
		if (mnsp>mns) {
			tx2=txp;
		} else {
			tx1=txp;
		}
	}
	return txp;
}

