function Round2(val) { return val.toFixed(2); }
function montrer_element(id) {
	document.getElementById(id).style.visibility='visible';
    document.getElementById(id).style.display='block';
}

function cacher_element(id) {
	 document.getElementById(id).style.visibility='hidden';
     document.getElementById(id).style.display='none';
}

 
function choix_destination_bien () {
	if (document.form_pret_immobilier.destination_bien.value=="Investissement locatif")  {
		montrer_element("p_estimation_loyer");
	}else{
		cacher_element("p_estimation_loyer");		
	}
}

function getValeur(valeur) {
	if (valeur == "") {
		return 0;
	}
	return parseFloat(valeur);
}

function calcul_cout_projet() {
	var sousTotal = 0;
	
	sousTotal += getValeur(document.form_pret_immobilier.acquisition.value);
	sousTotal += getValeur(document.form_pret_immobilier.travaux.value);
	sousTotal += getValeur(document.form_pret_immobilier.terrain.value);
	sousTotal += getValeur(document.form_pret_immobilier.construction.value);
	
	document.form_pret_immobilier.sstotal.value = sousTotal;
	
	var total = sousTotal;
	
	total += getValeur(document.form_pret_immobilier.frais_notaire.value);
	total += getValeur(document.form_pret_immobilier.frais_agence.value);

	document.form_pret_immobilier.total.value = total;

	if (isNaN(total)) {
		alert("Veuillez entrer des valeurs numériques");
	}
}

function choix_etat () {
	if (document.form_pret_immobilier.vous_etes.value=="Locataire" )  {
		montrer_element("p_montant_loyer");
		cacher_element("p_residence_principale");		
	} else if (document.form_pret_immobilier.vous_etes.value=="Propriétaire") {	
		cacher_element("p_montant_loyer");
		montrer_element("p_residence_principale");		
	} else {
		cacher_element("p_residence_principale");
		cacher_element("p_montant_loyer");
	}
}

function choix_taux_reduit() {
	if (document.form_pret_immobilier.taux_reduit.value=="oui" )  {
		montrer_element("p_table_financement");
	} else {
		cacher_element("p_table_financement");
	}
}

function choix_nb_credit_consomation() {
	var nbChoisi = parseInt(document.form_pret_immobilier.nb_credit_consomation.value,10);
	var divs = document.getElementsByTagName('div');
	var pattern = new RegExp("\\b"+'div_credit'+"\\b");
	var div;
	for (var i = 0; i<divs.length; i++) {
		div = divs[i];
		if (pattern.test(div.className)) {
			var nb = parseInt(div.id.substring(11),10);
			if (nb <= nbChoisi) {
				montrer_element(div.id);
			} else {
				cacher_element(div.id);
				//document.getElementById('montant_mensualite_'+nb).value = '';
				//document.getElementById('restant_du_'+nb).value = '';
				//document.getElementById('fin_pret_'+nb).value = '';
			}
		}
	}
}

function choix_nb_bien_locatif() {
	var nbChoisi = parseInt(document.form_pret_immobilier.nb_bien_locatif.value,10);
	var divs = document.getElementsByTagName('div');
	var pattern = new RegExp("\\b"+'div_bien'+"\\b");
	var div;
	for (var i = 0; i<divs.length; i++) {
		div = divs[i];
		if (pattern.test(div.className)) {
			var nb = parseInt(div.id.substring(9),10);
			if (nb <= nbChoisi) {
				montrer_element(div.id);
			} else {
				cacher_element(div.id);
			}
		}
	}
}

function choix_nb_enfant() {
	var nbChoisi = parseInt(document.form_pret_immobilier.nb_enfants.value,10);
	var elems = document.getElementsByTagName('p');
	var pattern = new RegExp("\\b"+'p_enfant'+"\\b");
	var elem;
	for (var i = 0; i<elems.length; i++) {
		elem = elems[i];
		if (pattern.test(elem.className)) {
			var nb = parseInt(elem.id.substring(9),10);
			if (nb <= nbChoisi) {
				montrer_element(elem.id);
			} else {
				cacher_element(elem.id);
			}
		}
	}
}

function choix_residence_secondaire() {
	if (document.form_pret_immobilier.pret_residence_secondaire.value=="Oui") {
		montrer_element("div_residence_secondaire");
	} else {
		cacher_element("div_residence_secondaire");
	}
}

// ****** calculatrice ******

// JavaScript Document<script>
function Superieur_zero(nom) {
	champ=document.getElementById(nom);   
	return (champ.value>=0);
}

function champ_vide_id(nom) {
	champ=document.getElementById(nom);   
	return (champ.value=="");
}

function Recupere_valeur(nom) {
	champ=document.getElementById(nom);
	return champ.value;   
}

function verification_champ_valide() {
if (!Superieur_zero("montant") && !champ_vide_id("montant")) {
		alert("Indiquez un montant valide");
		return false;
	}
	if (!Superieur_zero("taux") && !champ_vide_id("taux")) {
		alert("Indiquez un taux valide");
		return false;
	}
	if (!Superieur_zero("mensualite") && !champ_vide_id("mensualite")) {
		alert("Indiquez une mensualité valide");
		return false;
	}
	if (!Superieur_zero("duree") && !champ_vide_id("duree")) {
		alert("Indiquez une durée valide");
		return false;
	}	
}

function modifier_valeur_champ(nom,valeur) {
	champ=document.getElementById(nom);
	champ.value=valeur;
}

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 Calcul() {
	
	//récupération des valeurs
	t=Recupere_valeur("taux");
	me=Recupere_valeur("mensualite");
	d=Recupere_valeur("duree");
	m=Recupere_valeur("montant");
    bool_montant=champ_vide_id("montant");
	bool_taux=champ_vide_id("taux");
	bool_mensualite=champ_vide_id("mensualite");
	bool_duree=champ_vide_id("duree");
	
	
	if (bool_montant && !bool_taux && !bool_mensualite && !bool_duree) {
		verification_champ_valide();
		modifier_valeur_champ("montant",Round2(CalcPret(me,d,t)));
		return true;
				
	}
	if (!bool_montant && bool_taux && !bool_mensualite && !bool_duree) {
		verification_champ_valide();
		low  = 0; high = 100; count = 0;
			while(count<30) {
				count++;
				taux = (high+low)/2;
				test = m-CalcPret(me,d,taux);
				if (test==0) break;
				else if (test<0) low = taux;
				else if (test>0) high = taux;
			}
			taux = Round2(taux);
		modifier_valeur_champ("taux",taux);
		return true;
	}
	if (!bool_montant && !bool_taux && bool_mensualite && !bool_duree) {
		verification_champ_valide();
		modifier_valeur_champ("mensualite",Round2(CalcMens(m,d,t)));
		return true;
	}
	if (!bool_montant && !bool_taux && !bool_mensualite && bool_duree) {
		verification_champ_valide();
		modifier_valeur_champ("duree",Round2(CalcDure(m,me,t)));
		return true;
	}
	alert("Laissez un champ vide");
	return false;

	
	
	//recupération des valeurs du formulaire
	montant=parseFloat(Recupere_valeur("montant"));
	taux=parseFloat(Recupere_valeur("taux"));
	mensualite=parseFloat(Recupere_valeur("mensualite"));
	duree=parseFloat(Recupere_valeur("duree"));
	
	
	alert(res);
}
// ******

function verifChamp(champ) {
	if (champ.visibility != null &&
			(document.getElementById(champ.visibility).style.visibility=="hidden"
			|| document.getElementById(champ.visibility).style.display=="none")) {
		return true; // Si le champ n'est pas visible, on ne le vérifie pas
	}
	
	if (champ.minLength != null && document.getElementById(champ.id).value.length < champ.minLength) { // vérification de la taille minimale
		return false;
	}
	
	return document.getElementById(champ.id).value != "" && (champ.number==null || !champ.number || !isNaN(document.getElementById(champ.id).value));
}

function verifFormulaire(verifs) {
	for (var i = 0; i < verifs.length; i++) {
		var champ = verifs[i];
		if (!verifChamp(champ)) {
			alert(champ.msg);
			document.getElementById(champ.id).focus();
			return false;
		}
	}
	return true;
}

function verifie_formulaire_etape_1(){
	var verifEtape1 = [
		{id:"nature_projet", 		msg:"Veuillez sélectionner la nature du projet"},
		{id:"type_bien", 			msg:"Veuillez sélectionner le type de bien"},
		{id:"destination_bien", 	msg:"Veuillez sélectionner la destination du bien"},
		{id:"estimation_loyer", 	msg:"Veuillez indiquer le montant estimé du loyer", 			number:true, 	visibility:"p_estimation_loyer"},
		{id:"code_postal", 			msg:"Veuillez indiquer le code postal", 						number:true, 	minLength:5},
		{id:"ville", 				msg:"Veuillez indiquer la ville",					 							minLength:2},
		{id:"vous_etes", 			msg:"Veuillez sélectionner une valeur"},
		{id:"montant_loyer", 		msg:"Veuillez indiquer le montant du loyer", 					number:true, 	visibility:"p_montant_loyer"},
		{id:"residence_principale", msg:"Veuillez sélectionner une valeur", 			 							visibility:"p_residence_principale"},
		{id:"apport_personnel", 	msg:"Veuillez indiquer le montant de votre apport personnel", 	number:true},
		{id:"premier_achat", 		msg:"Veuillez sélectionner une valeur"},
		{id:"duree_pret", 			msg:"Veuillez indiquer la durée souhaitée du prêt", 			number:true},
		{id:"banque_travail", 		msg:"Veuillez indiquer avec quel(les) banque(s) vous travaillez",				minLength:2}
	];

	return verifFormulaire(verifEtape1);
}

function verifie_formulaire_etape_2(){
	var verifEtape2 = [
		{id:"revenu_pro_emprunteur", 					msg:"Veuillez indiquer votre revenu professionnel",									number:true},
		{id:"avis_impo_emprunteur", 					msg:"Veuillez indiquer votre revenu professionnel du dernier avis d'imposition", 	number:true},
		{id:"ref_fiscal_emprunteur", 					msg:"Veuillez indiquer votre revenu de référence fiscal", 							number:true},
		{id:"pret_residence_secondaire", 				msg:"Veuillez indiquer si vous avez un pret sur votre résidence secondaire"},
		{id:"montant_mensualite_residence_secondaire", 	msg:"Veuillez indiquer le montant de la mensualité", 								visibility:"div_residence_secondaire"}
	];
	
	for (var i=1; i<=document.getElementById('nb_credit_consomation').value; i++) { // ajout de la vérification des montants des mensualités en fonction du nombre de crédits
		verifEtape2.push({id:"montant_mensualite_"+i, 		msg:"Veuillez indiquer le montant de la mensualité du crédit N°"+i,		number:true});
	}
	
	for (var i=1; i<=document.getElementById('nb_bien_locatif').value; i++) { // ajout de la vérification des champs des biens locatifs
		verifEtape2.push({id:"loyer_percu_bien_"+i, 		msg:"Veuillez indiquer le loyer percu du bien N°"+i,					number:true});
		verifEtape2.push({id:"montant_mensualite_bien_"+i, 	msg:"Veuillez indiquer le montant des mensualités du bien N°"+i,		number:true});
	}
	
	return verifFormulaire(verifEtape2);
}

function verifie_formulaire_etape_3(){
	var verifEtape3 = [
		{id:"nom_emprunteur", 				msg:"Veuillez indiquer votre nom", 						minLength:2},
		{id:"prenom_emprunteur", 			msg:"Veuillez indiquer votre prénom", 					minLength:2},
		{id:"naissance_emprunteur", 		msg:"Veuillez indiquer votre date de naissance", 		minLength:10},
		{id:"lieu_emprunteur", 				msg:"Veuillez indiquer votre lieux de résidence", 		minLength:2},
		{id:"situation_emprunteur", 		msg:"Veuillez sélectionner votre situation"},
		{id:"profession_emprunteur", 		msg:"Veuillez sélectionner votre profession"},
		{id:"code_postal", 					msg:"Veuillez indiquer votre code postal", 				minLength:5, 	number:true},
		{id:"ville", 						msg:"Veuillez indiquer votre ville", 					minLength:2},
		{id:"tel_domicile", 				msg:"Veuillez indiquer votre numéro de téléphone", 		minLength:10, 	number:true},
		{id:"tel_portable", 				msg:"Veuillez indiquer votre numéro de portable", 		minLength:10, 	number:true},
		{id:"mail", 						msg:"Veuillez indiquer votre email", 					minLength:7}
	];
	
	return verifFormulaire(verifEtape3);
}

function verifie_formulaire_assurance_pret() {
	if  (document.form_assurance_pret.nom.value=="")  {
		alert("Indiquez votre nom");
		return false;
	}
	if  (document.form_assurance_pret.prenom.value=="")  {
		alert("Indiquez votre prénom");
		return false;
	}
	if  (document.form_assurance_pret.date_naissance.value=="")  {
		alert("Indiquez votre date de naissance");
		return false;
	}
	if  (document.form_assurance_pret.adresse.value=="")  {
		alert("Indiquez votre adresse");
		return false;
	}
	if  (document.form_assurance_pret.codepostal.value=="" || isNaN(document.form_assurance_pret.codepostal.value) || document.form_assurance_pret.codepostal.value.length!=5)  {
		alert("Indiquez votre code postal");
		return false;
	}
	if  (document.form_assurance_pret.ville.value=="")  {
		alert("Indiquez votre ville");
		return false;
	}
	if  (document.form_assurance_pret.telephone.value=="")  {
		alert("Indiquez votre téléphone");
		return false;
	}
	if  (!(document.form_assurance_pret.nom2.value==""))  {
		if  (document.form_assurance_pret.prenom2.value=="")  {
			alert("Indiquez le prénom de la deuxième personne");
			return false;
		}
		if  (document.form_assurance_pret.date_naissance2.value=="")  {
			alert("Indiquez la date de naissance de la deuxième personne");
			return false;
		}
		if  (document.form_assurance_pret.adresse2.value=="")  {
			alert("Indiquez l'adresse de la deuxième personne");
			return false;
		}
		if  (document.form_assurance_pret.codepostal2.value=="" || isNaN(document.form_assurance_pret.codepostal.value) || document.form_assurance_pret.codepostal.value.length!=5)  {
			alert("Indiquez le code postal de la deuxième personne");
			return false;
		}
		if  (document.form_assurance_pret.ville2.value=="")  {
			alert("Indiquez la ville de la deuxième personne");
			return false;
		}
		if  (document.form_assurance_pret.telephone2.value=="")  {
			alert("Indiquez le téléphone de la deuxième personne");
			return false;
		}
	}
	if  (document.form_assurance_pret.montant_capital.value=="" || isNaN(document.form_assurance_pret.codepostal.value))  {
			alert("Indiquez le montant du capital");
			return false;
	}
	if  (document.form_assurance_pret.taux.value=="" || isNaN(document.form_assurance_pret.codepostal.value))  {
			alert("Indiquez le taux");
			return false;
	}
	if  (document.form_assurance_pret.duree_pret.value=="" || isNaN(document.form_assurance_pret.codepostal.value))  {
			alert("Indiquez la durée du prêt");
			return false;
	}
	if  (document.form_assurance_pret.type_pret.value=="" )  {
			alert("Indiquez le type de prêt");
			return false;
	}
	if  (document.form_assurance_pret.date_effet.value=="")  {
			alert("Indiquez la date d'effet");
			return false;
	}
}

function telephone(personne) {
	trouve=false;
	if (personne=="emprunteur") {
		var i=14;
		while (i<20) {
			if(trouve=document.getElementById(TabEtape3[i]).value!="") return true;
			i=i+2;
		}
		alert("Indiquez un numéro de téléphone pour l'emprunteur");		
	}else{
		var j=15;
		while (j<20) {
		if(trouve=document.getElementById(TabEtape3[j]).value!="") return true;
			j=j+2;
		}
		alert("Indiquez un numéro de téléphone pour le coemprunteur");
	}		
	return false;
}



