function repartition_cp () {}

function check_mens(ch) {
	var vn=Number(String(ch.value).split(",").join("."));
	if (isNaN(vn) || vn==0) {
		ch.value="";
		return false;
	} else {
		ch.value=String(Math.round(vn*100)/100);
		return true;
	}
}

function check_tel_gsm(ch) 
{
	//enleve tout caractere autre que chiffre
	var val;
	var newval;
	var tstr;
	var tmpar;
	var ak;
	var j;

	val=ch.value;
	tmpar=val.split("");
	newval="";
	for (j=0;j<tmpar.length;j++) 
	{
		tstr=tmpar[j];
		if (!isNaN(tstr) && tstr!=" ") 
		{
			newval+=tstr;
		}
	}
	//newval = trim(newval);
	ch.value=newval;
}
function test_cp() {
	var tmpstr="";
	var cp;
	var min=1000;
	var max=9999;
	//
	for (cp=min;cp<=max;cp++) {
		document.forms[0].cp1.value=cp;
		document.forms[0].recipient.value="";
		repartition_cp ();
		tmpstr+=cp+"\t"+document.forms[0].recipient.value+"\n";
	}
	var w=window.open("");
	w.document.open();
	w.document.write(tmpstr);
	w.document.close();
}
// **************************************************************
//
//      FONCTIONS DE CALCUL DE TAUX et DUREE MAX. DU CREDIT
//
// **************************************************************

var calc_tmp = {montant:0, duree:0, taux:0, mensualite:0, taux_charge:0};

function Calc2(qui, quel) {
	for (var i = 0; i<qui.length; i++) {
		if (qui.elements[i].name == "montant") {
			var pt1 = i;
		} else {
			if (qui.elements[i].name == "duree") {
				var pt2 = i;
			} else {
			}
			if (qui.elements[i].name == "taeg") {
				var pt3 = i;
			} else {
			}
			if (qui.elements[i].name == "mensualite") {
				var pt4 = i;
			} else {
				if (qui.elements[i].name == "taux_charge") {
					var pt5 = i;
				} else {
				}
			}
		}
	}
	calc_tmp.montant = Number(qui.elements[pt1].value.split(",").join("."));
	calc_tmp.duree = parseInt(qui.elements[pt2].value);
	calc_tmp.taux = qui.elements[pt3].value;
	calc_tmp.mensualite = qui.elements[pt4].value;
	switch (quel) {
		// le montant a ete modifie
	case 1 :
		if (Calcul() == false) {
			return false;
		}
		break;
	case 2 :
		// la duree a ete modifiee
		if (Calcul2() == false) {
			return false;
		}
		break;
	case 3 :
		// le TAUX a ete modifiee
		if (Calcul3() == false) {
			return false;
		}
		break;
	}
	qui.elements[pt1].value = ToString(calc_tmp.montant);
	//qui.elements[pt2].value = ToString(calc_tmp.duree);
	ToSelect(qui.elements[pt2], calc_tmp.duree);
	qui.elements[pt3].value = ToString(calc_tmp.taux);
	qui.elements[pt4].value = ToString(Math.floor(calc_tmp.mensualite*100)/100);
	qui.elements[pt5].value = ToString(calc_tmp.taux_charge);
	return true;
}


// VAIRABLES GLOBALES
  var gduree = 0;
  var gtaux = 0;
var gindice_md = 0;
var gindice_mt = 0;
var nb_duree;
var nb_montant_taux;
var montant_duree,duree_duree,montant_taux,montant_taux_duree;
var poss_durs=[12,18,24,30,36,42,48,54,60,72,84,120,180,240,999];
//
 // crée les rapports montant-duree
if(new Date()<new Date(2009,5,1)){
	taux_data_str="2500 24\n3700 30\n5600 36\n7500 42\n10000 48\n15000 60\n20000 84\n37000 120\n999999 240\n9999999 999\n|\n:500\n12 22\n24 22\n:1250\n12 22\n24 22\n:2500\n12 17\n24 17\n:5000\n12 17\n24 17\n30 17\n36 17\n:999999\n12 14\n24 14\n30 14\n36 14\n42 14\n48 14\n60 14\n72 14\n84 14\n120 14\n240 14\n||";
}else{
	taux_data_str="2500 24\n3700 30\n5600 36\n7500 42\n10000 48\n15000 60\n20000 84\n37000 120\n999999 240\n9999999 999\n|\n:500\n12 19\n24 19\n:1250\n12 19\n24 19\n:2500\n12 15\n24 15\n:5000\n12 15\n24 15\n30 15\n36 15\n:999999\n12 12.5\n24 12.5\n30 12.5\n36 12.5\n42 12.5\n48 12.5\n60 12.5\n72 12.5\n84 12.5\n120 12.5\n240 12.5\n||";
}
taux_data_strs={
"001":taux_data_str,
"002":taux_data_str,
"009":taux_data_str,
"PH":"500 12\n999999 240\n9999999 999\n|\n:500\n12 4.25\n999 4.25\n:9999999\n12 4.25\n24 4.25\n48 4.25\n60 4.25\n120 4.25\n240 4.25\n360 4.25\n480 4.25\n999 4.25\n||"
};
// controle TAUX
function Controle_Taux(montant_pret, duree_pret) {
	var indice = 0;
	var indiced = 0;
	var taux_retour = 0;
	var tti, ttilength;
	for (i=nb_montant_taux; i>=0; i--) {
		if (montant_pret<=montant_taux[i]) {
			indice = i;
		}
	}
	gindice_mt = indice;
	// remplace les durees dans la listbox
	var ardurs=[],min_dur,max_dur,tmp_dur;
	min_dur=montant_taux_duree[indice][0];
	max_dur=montant_taux_duree[indice][1];
	for (i=0;i<c_poss_durs.length;i++) {
		tmp_dur=c_poss_durs[i];
		if(tmp_dur>=min_dur && tmp_dur<=max_dur) ardurs[ardurs.length]=tmp_dur;
	}
	make_dur_list(ardurs);
	//trouve taux par rapport a montant->.duree correspondant.
	tti = taux_taux[indice];
	ttilength = tti.length;
	for (indiced=duree_pret; indiced<ttilength; indiced++) {
		if (tti[indiced] != null && indiced>=duree_pret) {
			break;
		}
	}
	taux_retour = tti[indiced];
	return taux_retour;
}
 
 // controle duree
function Controle_Duree(montant_pret) {
	var duree_retour = 0;
	for (i=nb_duree; i>=0; i--) {
		if (montant_pret<=montant_duree[i]) {
			duree_retour = duree_duree[i];
			gindice_md = i;
		}
	}
	//
	return duree_retour;
}


function Calcul() {
	gduree = 0;
	gtaux = 0;
	// verifie validite du montant
	if (isNaN(calc_tmp.montant) || calc_tmp.montant == "") {
		alert("Le montant doit être un chiffre");
		return false;
	}
	if (calc_tmp.montant<2500 || calc_tmp.montant>9999999) {
		alert("Le montant doit être compris entre 2500 et 9999999 EUR");
		return false;
	}
	// teste la duree par rapport au montant 
	gduree = Controle_Duree(calc_tmp.montant);
	calc_tmp.duree = gduree;
	// tester le taux
	gtaux = Controle_Taux(calc_tmp.montant, gduree);
	calc_tmp.taux = gtaux;
	// calculde la mensualite
	emp = calc_tmp.montant;
	nbr = gduree;
	txc = gtaux/100;
	tp1 = (1+txc);
	tp2 = (1/12);
	tp3 = (1+txc);
	tp4 = (nbr/12);
	tp5 = Math.pow(tp1, tp2);
	tp6 = Math.pow((1/tp3), tp4);
	ech = emp*(tp5-1)/(1-tp6);
	calc_tmp.mensualite = ech;
	agios = ech*gduree-calc_tmp.montant;
	taux = (agios*100)/(calc_tmp.montant*gduree);
	calc_tmp.taux_charge = Math.round(taux*1000)/1000;
	//genere tab
	mk_sim_tab();
	//
	return true;
}

function ToString(param) {
 var buf = ""
 if (isNaN(param) || param == "") {
  return param;
 }
 buf = String(param);
 buf = buf.replace(".",",")
 return buf;
}

function Calcul2() {
	var buf = "";
	if (calc_tmp.montant == "") {
		return false;
	}
	if (calc_tmp.duree == "") {
		return false;
	}
	if (calc_tmp.taux == "") {
		return false;
	}
	emp = Number(calc_tmp.montant);
	nbr = Number(calc_tmp.duree);
	// tester le taux
	gtaux = Controle_Taux(emp, nbr);
	//
	if (nbr<montant_taux_duree[gindice_mt][0] || nbr>montant_taux_duree[gindice_mt][1]) {
		alert("La durée doit être comprise entre "+montant_taux_duree[gindice_mt][0]+" et "+montant_taux_duree[gindice_mt][1]);
		if(nbr<montant_taux_duree[gindice_mt][0]) {
			calc_tmp.duree=montant_taux_duree[gindice_mt][0];
		}else{
			calc_tmp.duree=montant_taux_duree[gindice_mt][1];
		}
		return Calcul2();
		//return false;
	}
	calc_tmp.taux = gtaux;
	buf = String(calc_tmp.taux);
	buf = buf.replace(",", ".");
	txc = Number(buf)/100;
	tp1 = (1+txc);
	tp2 = (1/12);
	tp3 = (1+txc);
	tp4 = (nbr/12);
	tp5 = Math.pow(tp1, tp2);
	tp6 = Math.pow((1/tp3), tp4);
	ech = emp*(tp5-1)/(1-tp6);
	// ech = emp*(((1+txc)^(1/12))-1)/(1-(1/(1+txc))^(nbr/12))
	calc_tmp.mensualite = ech;
	// agios = ech * gduree - calc_tmp.montant
	// taux = (agios * 100) / (calc_tmp.montant * gduree)
	agios = ech*nbr-emp;
	taux = (agios*100)/(emp*nbr);
	calc_tmp.taux_charge = Math.round(taux*1000)/1000;
	mk_sim_tab();
	tbl_check_selection();
}

function Calcul3() {
	var buf = "";
	if (calc_tmp.montant == "") {
		return false;
	}
	if (calc_tmp.duree == "") {
		return false;
	}
	if (calc_tmp.taux == "") {
		return false;
	}
	emp = Number(calc_tmp.montant);
	nbr = Number(calc_tmp.duree);
	// tester le taux
	gtaux = Controle_Taux(emp, nbr);
	if (calc_tmp.taux>gtaux) {
		alert("Le taeg ne peux dépasser "+String(gtaux)+" %");
		return false;
	}
	buf = String(calc_tmp.taux);
	buf = buf.replace(",", ".");
	txc = Number(buf)/100;
	tp1 = (1+txc);
	tp2 = (1/12);
	tp3 = (1+txc);
	tp4 = (nbr/12);
	tp5 = Math.pow(tp1, tp2);
	tp6 = Math.pow((1/tp3), tp4);
	ech = emp*(tp5-1)/(1-tp6);
	// ech = emp*(((1+txc)^(1/12))-1)/(1-(1/(1+txc))^(nbr/12))
	calc_tmp.mensualite = ech;
	// agios = ech * gduree - calc_tmp.montant
	// taux = (agios * 100) / (calc_tmp.montant * gduree)
	agios = ech*nbr-emp;
	taux = (agios*100)/(emp*nbr);
	calc_tmp.taux_charge = Math.round(taux*1000)/1000;
	return true;
}

// toselect
function _ToSelect(champ, valeur) {
	var i, len, select;
	len = champ.length;
	select = len-1;
	for (i=0; i<len; i++) {
		if (String(valeur) == champ.options[i].text) {
			select = i;
		}
	}
	champ.options[select].selected = true;
}
function ToSelect(champ, valeur) {
	champ.value = valeur;
}
// TESTER ET CORRIGER LA DATE IMMEDIATEMENT APRES CHANGEMENT DE VALUER
function Teste_date(champs) {
 var s1=0,s2=0,max=0;
 var jour=0,mois=0,annee=0;
 var sjour,smois,sannee;
 var valeur,format,buf,tmp;
 valeur = champs.value;
 // d'abord verifier s'il il a des /, sinon les ajouter
 s1=valeur.indexOf("/");
  if (s1<0) {
   buf = valeur.substring(0,2) + "/" + valeur.substring(2,4) + "/";
   tmp = valeur.substring(4,valeur.length);
   if (tmp.length<4) {
    s1 = Number(tmp);
    if (!isNaN(s1)) {
     if (s1<21) {
      tmp = "20" + tmp;
     } else {
      tmp = "19" + tmp;
     }
    }
   }
   buf = buf + tmp;
   valeur = buf;
  }
//
 format = "JJ/MM/AAAA";
 s1=format.indexOf("/");
 s2=format.lastIndexOf("/");

 // si la date est plus courte que le format choisi, il y a une erreur
 if (valeur.length!=format.length) {
  alert("De datum formaat moet \nDD/MM/JJJJ of DDMMJJJJ zijn");
  champs.focus();
  return false;
 }
// convertir les données jj mm aaaa en chiffres

  sjour = valeur.substring(0,s1);
  jour = Number(sjour);
  smois = valeur.substring(s1+1,s2);
  mois = Number(smois);
  sannee = valeur.substring(s2+1,s2+5);
  annee = Number(sannee);

 
 // verifier l'annee

 if (isNaN(annee)) {
  alert("De jaar moet een cijfer zijn voor\n"+commentaire);
  champs.focus();
  return false;
 }

 if (annee<1900 || annee >2020) {
  alert("De jaar moet tussen 1900 en 2020 zijn");
    champs.focus();
    return false;
 }
 
 // verifier le mois
 if (isNaN(mois)) {
  alert("De maand moet een cijfer zijn");
    champs.focus();
    return false;
 }

 if (mois<1 || mois >12) {
  alert("De maand moet tussen 1 en 12 zijn");
    champs.focus();
    return false;
 }
 
 // tester le jour uniquement si format DD/MM/JJJJ
 if (isNaN(jour)) {
  alert("De dag moet een cijfer ziin voor");
    champs.focus();
    return false;
 }
 max = 30;

 if (mois<8 && (parseInt(mois / 2)*2)!=mois) max = 31; 
 if (mois>7 && (parseInt(mois / 2)*2)==mois) max = 31; 
 if (mois==2) {
  max = 28;
  if ((parseInt(annee/4)*4)==annee) max=29;
 }
 if (jour<1 || jour >max) {
  alert("De dag moet tussen 1 en "+max+" zijn");
  champs.focus();
  return false;
 }
 
 champs.value = valeur;
 return true;
}

// tester si certains champs sont des chiffres
function TestCi(valeur,libelle,longueur) {
 // verifier si VALEUR est un chiffre
 if (isNaN(valeur)) {
  alert(libelle + " doit être un chiffre !");
  return false;
 }
 // verifier si VALEUR en LONGUEUR chiffres
 if (valeur.length!=longueur) {
  alert(libelle + " doit avoir " + longueur + " chiffres !");
  return false;
 }
 part1 = Number(valeur.substring(0,longueur-2));
 part2 = Number(valeur.substring(longueur-2,longueur));

 // cas du calcul d'un CI
 if (longueur==12) { 
  sous_result = parseInt(part1 / 97) * 97;
  result = part1 - sous_result;
  if (result!=part2) {
   alert(libelle + " est invalide !");
   return false;
  }
 }

 // cas du calcul de la TVA
 if (longueur==9) { 
  sous_result_float = parseFloat(part1 / 97);
  sous_result_int = parseInt(part1 / 97);
  sous_result = parseInt((sous_result_float - sous_result_int) * 97);
  result = 97 - sous_result;
  if (result!=part2) {
   alert(libelle + " est invalide !");
   return false;
  }
 }
 
 //alert (result);
 return true;
} 
function TestChiffre(valeur,limite1,limite2,commentaire,client) {
 var nom;
 var val,lim1,lim2;
 val = Number(valeur);
 lim1 = Number(limite1);
 lim2 = Number(limite2);
 if (client==1) nom=" pour le débiteur"; else nom=" pour le co-débiteur";
 if (client==0) nom="";
 if (isNaN(val)) {
  alert (commentaire+" doit être un CHIFFRE"+nom);
  return false;
 }
 if (limite1>=0) {
  if (val<lim1) {
   alert (commentaire+" doit être plus grand(e) ou égal(e) à "+limite1+nom);
   return false;
  }
 }

 if (limite2>0) {
  if (val>lim2) {
   alert (commentaire+" doit être plus petit(e) où égal(e) à "+limite2+nom);
   return false;
  }
 }
 return true;
}
//teste No national
function TestNational(ch,longueur) 
{
	var valeur;
	//check_tel_gsm(ch);
	if(ch.value == "")
	{
		return true;	
	}
	valeur = ch.value;
	// verifier si VALEUR est un chiffre
	if (isNaN(valeur)) 
	{
		alert('Le numéro national doit être une succesion de chiffre - Het rijksregisternummer moet samengesteld worden uit cijfers');
		ch.focus();
		return false;
	}
	
	// verifier si VALEUR en LONGUEUR chiffres
	if (valeur.length!=longueur) 
	{
		alert('Le numéro national doit être composée de 11 chiffres - Het rijksregisternummer is samengesteld uit 11 cijfers');
		ch.focus();
		return false;
	}
 
	part1 = Number(valeur.substring(0,longueur-2));
	part2 = Number(valeur.substring(longueur-2,longueur));

	sous_result = parseInt(part1 / 97) * 97;
	result = part1 - sous_result;
	if (result == 0)
	{
		return true;
	}
	else
	{
		sous_result2 = parseInt(part2 + result);
		if(sous_result2 == 97)
		{
			return true;
		}
		else
		{
			alert('Le numéro national est invalide - Het rijksregisternummer is niet geldig');
			ch.focus();
			return false;
		}
	}
	return true;
} 
// tester si email a bien un @ et un .
function TestEmail(valeur,client) {
 var n1,n2;
 n1 = valeur.indexOf("@",1);
 n2 = valeur.lastIndexOf(".");
 if (n2<n1 || n2==-1 || n1==-1) {
  alert ("Le format d'adresse email est incorrect pour le "+client);
  return false;
 }
 return true;
}

// valeur = la date encodée
// format = JJ/MM/AAAA ou MM/AAAA
// commentaire = nom du champs pour afficher message d'erreur

function Corrige_date(valeur,format,commentaire) {
 var s1=0,s2=0,max=0,nb=0;
 var jour=0,mois=0,annee=0;
 var sjour,smois,sannee;
 s1=format.indexOf("/");
 s2=format.lastIndexOf("/");
 if (s1==s2) nb=2; else nb=3;
 // si la date est plus courte que le format choisi, il y a une erreur
 if (valeur.length!=format.length) {
  alert("Le format de date est incorrect pour \n"+commentaire);
  return false;
 }
// convertir les données jj mm aaaa en chiffres
 if (nb<3) {
  sjour="";
  jour=-1; 
  smois = valeur.substring(0,s1);
  mois = Number(smois);
  sannee = valeur.substring(s1+1,s1+5);
  annee = Number(sannee);
 }
 else {
  sjour = valeur.substring(0,s1);
  jour = Number(sjour);
  smois = valeur.substring(s1+1,s2);
  mois = Number(smois);
  sannee = valeur.substring(s2+1,s2+5);
  annee = Number(sannee);
 }
 
 // verifier l'annee

 if (isNaN(annee)) {
  alert("L'année doit être un chiffre pour \n"+commentaire);
  return false;
 }

 if (annee<1900 || annee >2020) {
  alert("L'année doit se situer entre 1900 et 2020 pour \n"+commentaire);
  return false;
 }
 
 // verifier le mois
 if (isNaN(mois)) {
  alert("Le mois doit être un chiffre pour \n"+commentaire);
  return false;
 }

 if (mois<1 || mois >12) {
  alert("Le mois doit se situer entre 1 et 12 pour \n"+commentaire);
  return false;
 }
 
 // tester le jour uniquement si format JJ/MM/AAAA
 if (nb==3) {
  if (isNaN(jour)) {
   alert("Le jour doit être un chiffre pour \n"+commentaire);
   return false;
  }
  max = 30;

  if (mois<8 && (parseInt(mois / 2)*2)!=mois) max = 31; 
  if (mois>7 && (parseInt(mois / 2)*2)==mois) max = 31; 
  if (mois==2) {
   max = 28;
   if ((parseInt(annee/4)*4)==annee) max=29;
  }
  if (jour<1 || jour >max) {
   alert("Le jour doit se situer entre 1 et "+max+" pour \n"+commentaire);
   return false;
  }
 }
 return true;
}

function Verifie() {
	//verifie support pub
	if (document.forms[0].type_support.value=="") {
		document.forms[0].type_support.focus();
		alert("Vous n'avez pas choisi le support publicitaire\n\nKies de publiciteit");
		return false;
	}
  // verifier la validité du numero de compte debiteur
  if (document.Formulaire.no_compte1.value!="") {
    if (TestCi(document.Formulaire.no_compte1.value,"Le numéro de compte du débiteur",12)==false) return false;
    if (!Corrige_date(document.Formulaire.compte_depuis1.value,"JJ/MM/AAAA","la date d\'ouverture du compte de  l\'emprunteur")) return false;
  }
  if(document.Formulaire.no_compte_iban1.value!="" || document.Formulaire.no_compte_bic1.value!=""){
  	if (!Corrige_date(document.Formulaire.compte_depuis1.value,"JJ/MM/AAAA","la date d\'ouverture du compte de  l\'emprunteur")) return false;
  }
  // verifier la validité de la carte d'identité uniquement pour les belges
  if (document.Formulaire.ci1.value!="") {
   if (document.Formulaire.nationalite1.value=="BEL") {
    if (TestCi(document.Formulaire.ci1.value,"La carte d'identité du débiteur",12)==false) return false;
   }
  }
 // verifier le registre nat (BEL)
		if (document.Formulaire["rn1"].value == "" && document.Formulaire["pays1"].value=="BEL") 
		{
			alert("Le numéro de registre national du demandeur est obligatoire.\n\nRijksregisternummer van de aanvrager is verplicht.");
			return false;
		}
		else
		{
			if ( !TestNational(document.Formulaire["rn1"],11) ) return false; 
		}

// Verifier le numéro de tva
 if (document.Formulaire.tva1.value!="")
  if (TestCi(document.Formulaire.tva1.value,"Le n° de TVA du débiteur",9)==false) return false;

// verifier si les champs CHIFFRE 
  
   if (!TestChiffre(document.Formulaire.ben_net1.value,"-1","-1","Le bénéfice net",1)) return false;
   if (!TestChiffre(document.Formulaire.autre_montant1d.value,"-1","-1","L'autre revenu 1",1)) return false;
   if (!TestChiffre(document.Formulaire.autre_montant2d.value,"-1","-1","L'autre revenu 2",1)) return false;
   if (!TestChiffre(document.Formulaire.autre_montant3d.value,"-1","-1","L'autre revenu 3",1)) return false;
  
  if (!TestChiffre(document.Formulaire.montant_acompte.value,"-1","-1","Le montant d'acompte",0)) return false;
  if (!TestChiffre(document.Formulaire.alloc_fam1.value,"-1","-1","L'allocation familialle",1)) return false;
  if (!TestChiffre(document.Formulaire.revenu_sup1.value,"-1","-1","Le revenu supplémentaire",1)) return false;
  if (!TestChiffre(document.Formulaire.revenu1.value,"-1","-1","Le revenu",1)) return false;
  if (!TestChiffre(document.Formulaire.loyer1.value,"-1","-1","Le loyer",1)) return false;
  if (!TestChiffre(document.Formulaire.montant.value,"991.57","49578.70","Le montant du prêt",0)) return false;
 

// verifier les validitées des adresses e-mail
  if (document.Formulaire.email1.value!="") {
   if (TestEmail(document.Formulaire.email1.value,"débiteur")!=true) return false; 
  }

// verifier les dates du débiteur  

  if (!Corrige_date(document.Formulaire.date_naissance1.value,"JJ/MM/AAAA","la date de naissance de l\'emprunteur")) return false;
  //if (!Corrige_date(document.Formulaire.adresse_depuis1.value,"JJ/MM/AAAA","la date à l\'adresse de l\'emprunteur")) return false;
  
  // verifier date RESIDENCE uniquement si nationalite differente de l'adresse
  if (document.Formulaire.nationalite1.value!=document.Formulaire.pays1.value) {
   if (!Corrige_date(document.Formulaire.belge_depuis1.value,"JJ/MM/AAAA","la date de résidence de l\'emprunteur")) return false;
  } else {
   document.Formulaire.belge_depuis1.value=""
  }
  if (!Corrige_date(document.Formulaire.employ_date1.value,"JJ/MM/AAAA","la date d\'engagement de l\'emprunteur")) return false;
// verifie le code postale de l'adresse (cp1)
	if (String(Number(document.Formulaire.cp1.value)).length==4 && !isNaN(Number(document.Formulaire.cp1.value))) {
	} else {
		alert("Le code postal de l'adresse actuelle est invalide");
		return false;
	}
// verifie les codebiteur uniquement si son nom est rempli SINON vide les champs
  if (document.Formulaire.nom2.value!="") {
   if (!TestChiffre(document.Formulaire.ben_net2.value,"-1","-1","Le bénéfice net",2)) return false;
   if (!TestChiffre(document.Formulaire.autre_montant1c.value,"-1","-1","L'autre revenu 1",2)) return false;
   if (!TestChiffre(document.Formulaire.autre_montant2c.value,"-1","-1","L'autre revenu 2",2)) return false;
   if (!TestChiffre(document.Formulaire.autre_montant3c.value,"-1","-1","L'autre revenu 3",2)) return false;

  // verifier la validité du numero de compte COdebiteur
  if (document.Formulaire.no_compte2.value!="") {
    if (TestCi(document.Formulaire.no_compte2.value,"Le numéro de compte du codébiteur",12)==false) return false;
    if (!Corrige_date(document.Formulaire.compte_depuis2.value,"JJ/MM/AAAA","la date d\'ouverture du compte du codebiteur")) return false;
  }
  if(document.Formulaire.no_compte_iban2.value!="" || document.Formulaire.no_compte_bic2.value!=""){
  	if (!Corrige_date(document.Formulaire.compte_depuis2.value,"JJ/MM/AAAA","la date d\'ouverture du compte du codebiteur")) return false;
  }

   // verifier la validité de la carte d'identité uniquement pour les belges
    if (document.Formulaire.ci2.value!="") {
     if (document.Formulaire.nationalite2.value=="BEL") {
      if (TestCi(document.Formulaire.ci2.value,"La carte d'identité du codébiteur",12)==false) return false;
     }
    }
 
// Verifier le numéro de tva
  if (document.Formulaire.tva2.value!="")
   if (TestCi(document.Formulaire.tva2.value,"Le n° de TVA du codébiteur",9)==false) return false;
// tester adresse e-mail
   if (document.Formulaire.email1.value!="") {
    if (TestEmail(document.Formulaire.email1.value,"débiteur")!=true) return false; 
   }
   if (!TestChiffre(document.Formulaire.alloc_fam2.value,"-1","-1","L'allocation familialle",2)) return false;
   if (!TestChiffre(document.Formulaire.revenu_sup2.value,"-1","-1","Le revenu supplémentaire",2)) return false;
   if (!TestChiffre(document.Formulaire.revenu2.value,"-1","-1","Le revenu",2)) return false;
   if (!TestChiffre(document.Formulaire.loyer2.value,"-1","-1","Le loyer",2)) return false;
   if (!Corrige_date(document.Formulaire.date_naissance2.value,"JJ/MM/AAAA","la date de naissance du co-emprunteur")) return false;
   if (!Corrige_date(document.Formulaire.adresse_depuis2.value,"JJ/MM/AAAA","la date à l\'adresse du co-emprunteur")) return false;
   if (document.Formulaire.nationalite2.value!=document.Formulaire.pays2.value) {
     if (!Corrige_date(document.Formulaire.belge_depuis2.value,"JJ/MM/AAAA","la date de résidence du co-emprunteur")) return false;
   } else {
    document.Formulaire.belge_depuis2.value=""
   }
   
   if (document.Formulaire.profession2.value!="032" && document.Formulaire.profession2.value!="998" && document.Formulaire.profession2.value!="999") {
     if (!Corrige_date(document.Formulaire.employ_date2.value,"JJ/MM/AAAA","la date d\'engagement du co-emprunteur")) return false;
   } else {
    document.Formulaire.employ_date2.value="";
    document.Formulaire.secteur_activite2.value=""
    document.Formulaire.type_contrat2.value=""
   }
  }
  else {
   document.Formulaire.date_naissance2.value=""
   document.Formulaire.adresse_depuis2.value=""
   document.Formulaire.belge_depuis2.value=""
   document.Formulaire.employ_date2.value=""
   document.Formulaire.nationalite2.value=""
   document.Formulaire.etat_civil2.value=""
   document.Formulaire.location2.value=""
   document.Formulaire.pays2.value=""
   document.Formulaire.profession2.value=""
   document.Formulaire.secteur_activite2.value=""
   document.Formulaire.type_contrat2.value=""
   document.Formulaire.pays_employeur2.value=""
   document.Formulaire.lieu_rc2.value=""
   document.Formulaire.titre2.value=""
   
   document.Formulaire.autre_montant1c.value=""
   document.Formulaire.autre_montant2c.value=""
   document.Formulaire.autre_montant3c.value=""

  }

// verifier les dates d'echeances des prets en cours seulement si l'organisme est remplis
  if (document.Formulaire.organisme1.value!="" || document.Formulaire.mensualite1.value!="") {
   if (!Corrige_date(document.Formulaire.echeance1.value,"JJ/MM/AAAA","la date du prêt n° 1")) return false;
   if (!TestChiffre(document.Formulaire.montant1.value,"992","250000","Le montant du prêt n° 1",0)) return false;
   if (!TestChiffre(document.Formulaire.duree1.value,"12","360","La durée du prêt n° 1",0)) return false;
   if (!TestChiffre(document.Formulaire.mensualite1.value,"12","744","La mensualité du prêt n° 1",0)) return false;
  } else {
   document.Formulaire.echeance1.value="";
   document.Formulaire.type_credit1.value="";
  }

  if (document.Formulaire.organisme2.value!="") {
   if (!Corrige_date(document.Formulaire.echeance2.value,"JJ/MM/AAAA","la date du prêt n° 2")) return false;
   if (!TestChiffre(document.Formulaire.montant2.value,"992","250000","Le montant du prêt n° 2",0)) return false;
   if (!TestChiffre(document.Formulaire.duree2.value,"12","360","La durée du prêt n° 2",0)) return false;
   if (!TestChiffre(document.Formulaire.mensualite2.value,"12","744","La mensualité du prêt n° 2",0)) return false;
  } else {
   document.Formulaire.echeance2.value="";
   document.Formulaire.type_credit2.value="";
  }

  if (document.Formulaire.organisme3.value!="") {
   if (!Corrige_date(document.Formulaire.echeance3.value,"JJ/MM/AAAA","la date du prêt n° 3")) return false;
   if (!TestChiffre(document.Formulaire.montant3.value,"992","250000","Le montant du prêt n° 3",0)) return false;
   if (!TestChiffre(document.Formulaire.duree3.value,"12","360","La durée du prêt n° 3",0)) return false;
   if (!TestChiffre(document.Formulaire.mensualite3.value,"12","744","La mensualité du prêt n° 3",0)) return false;
  } else {
   document.Formulaire.echeance3.value="";
   document.Formulaire.type_credit3.value="";
  }

  if (document.Formulaire.organisme4.value!="") {
   if (!Corrige_date(document.Formulaire.echeance4.value,"JJ/MM/AAAA","la date du prêt n° 4")) return false;
   if (!TestChiffre(document.Formulaire.montant4.value,"992","250000","Le montant du prêt n° 4",0)) return false;
   if (!TestChiffre(document.Formulaire.duree4.value,"12","360","La durée du prêt n° 4",0)) return false;
   if (!TestChiffre(document.Formulaire.mensualite4.value,"12","744","La mensualité du prêt n° 4",0)) return false;
  } else {
   document.Formulaire.echeance4.value="";
   document.Formulaire.type_credit4.value="";
  }

  if (document.Formulaire.organisme5.value!="") {
   if (!Corrige_date(document.Formulaire.echeance5.value,"JJ/MM/AAAA","la date du prêt n° 5")) return false;
   if (!TestChiffre(document.Formulaire.montant5.value,"992","250000","Le montant du prêt n° 5",0)) return false;
   if (!TestChiffre(document.Formulaire.duree5.value,"12","360","La durée du prêt n° 5",0)) return false;
   if (!TestChiffre(document.Formulaire.mensualite5.value,"12","744","La mensualité du prêt n° 5",0)) return false;
  } else {
   document.Formulaire.echeance5.value="";
   document.Formulaire.type_credit5.value="";
  }
  if (document.Formulaire.organisme6.value!="") {
   if (!Corrige_date(document.Formulaire.echeance6.value,"JJ/MM/AAAA","la date du prêt n° 6")) return false;
   if (!TestChiffre(document.Formulaire.montant6.value,"992","250000","Le montant du prêt n° 6",0)) return false;
   if (!TestChiffre(document.Formulaire.duree6.value,"12","360","La durée du prêt n° 6",0)) return false;
   if (!TestChiffre(document.Formulaire.mensualite6.value,"12","744","La mensualité du prêt n° 6",0)) return false;
  } else {
   document.Formulaire.echeance6.value="";
   document.Formulaire.type_credit6.value="";
  }
  
  // vider les champs autre revenu vide
    if (document.Formulaire.autre_montant1d.value=="")    document.Formulaire.autre_revenu1d.value="";
    if (document.Formulaire.autre_montant2d.value=="")    document.Formulaire.autre_revenu2d.value="";
    if (document.Formulaire.autre_montant3d.value=="")    document.Formulaire.autre_revenu3d.value="";
    if (document.Formulaire.autre_montant1c.value=="")    document.Formulaire.autre_revenu1c.value="";
    if (document.Formulaire.autre_montant2c.value=="")    document.Formulaire.autre_revenu2c.value="";
    if (document.Formulaire.autre_montant3c.value=="")    document.Formulaire.autre_revenu3c.value="";

  // changer le destinataire par rapport au code postal  
    repartition_cp ();

  return true;
}

// enleve les caracteres speciaux des localites
function vide_caracteres (controle) {
	var buf,i,c,champs
	champs = controle.value;
	
	if (champs=="") return;
	buf = "";
	for (i=0;i<champs.length;i++) {
		c=champs.charAt(i);
		if ((c>="A" && c<="Z") || (c>="a" && c<="z")) {
			buf = buf + c;
		}
		else {
			buf = buf + " ";
		}
	}
	controle.value = buf;
	
}

// mofifie le crédit en cours numéro 1 pour en faire un PH si proprietaire avec un loyer
function verifie_ph_proprietaire () {
	if (document.Formulaire.loyer1.value!="")
	{
		if (document.Formulaire.location1.options[document.Formulaire.location1.selectedIndex].value=="N")
		{
			document.Formulaire.type_credit1.value="PH";
			document.Formulaire.mensualite1.value=document.Formulaire.loyer1.value;
			alert ("Veuillez encoder les données du prêt hypothécaire\nen fin de formulaire dans la partie\nCrédit en cours n°1");
		}
	}
}

////DHB MOD
function tri_tab(ar) {
	var ret=[];
	var tmpar=[];
	var len=ar.length;
	if (len==0) {
		return [];
	}
	var tmp,tmp2,less,big,i,j,lessidx,bigidx;
	tmp=tmp2=ar[0];
	for (i=0;i<len;i++) {
		tmpar[i]=Number(ar[i])+0;
		if (ar[i]<tmp) {
			tmp=ar[i];
			lessidx=i;
		}
		if (ar[i]>tmp2) {
			tmp2=ar[i];
			bigidx=i;
		}
	}
	tmpar[lessidx]=null;
	tmpar[bigidx]=null;
	less=tmp;
	big=tmp2;
	//alert([big,less]);
	ret[0]=less;
	ret[len-1]=big;
	for (i=1;i<len-1;i++) {
		tmp=big;
		for (j=0;j<len;j++) {
			if (tmpar[j]!=null && tmpar[j]>less && tmpar[j]<tmp) {
				tmp=tmpar[j];
				lessidx=j;
			}
		}
		//
		tmpar[lessidx]=less;
		ret[i]=tmp;
	}
	return ret;
}

function fnumber(_n) {
	var tmp=String(_n).split(",").join(".");
	var n=Number(tmp);
	if (isNaN(n)) {
		return 0;
	} else {
		return n;
	}
}
str_replace=function(oldstr,newstr,instr) {
	return instr.split(oldstr).join(newstr);
};
carriage_conv=function(strng,newcar) {
	if (strng.substr(-1)=="\n" || strng.substr(-1)=="\r" || strng.substr(-2)=="\r\n" ) {
		strng+="\r";
	}
	var tmp1=str_replace("\r\n","\r",strng);
	var tmp2=str_replace("\r","\n",tmp1);
	if (newcar==null) {
		return tmp2;
	} else {
		return str_replace("\n",newcar,tmp2);
	}
};

//
function replace_arrays() {
	c_poss_durs=[];
	var found_durs=[];
	var DATAS=carriage_conv(taux_data_str=taux_data_strs[(document.forms[0].but.value)]).split("\n");
	//
	//var frm=document.forms[0];
	var i,j,h,ctr,len,nidx,tmpar,line,fchar,ak,tmpdur,found_dur=false;
	len=DATAS.length;
	montant_duree=[];
	duree_duree=[];
	for (i=0;i<len;i++) {
		if (DATAS[i]=="|") {
			nidx=i+1;
			break;
		} else {
			tmpar=DATAS[i].split(" ");
			//frm["mntdur_mnt_"+i].value=tmpar[0];
			//frm["mntdur_dur_"+i].value=tmpar[1];
			montant_duree[i]=fnumber(tmpar[0]);
			tmpdur=fnumber(tmpar[1]);
			duree_duree[i]=tmpdur;
			for (h=0;h<c_poss_durs.length;h++) if (found_dur=c_poss_durs[h]==tmpdur) break;
			if (!found_dur) c_poss_durs[c_poss_durs.length]=tmpdur;
		}
	}
	////
	nb_duree=montant_duree.length;
	montant_duree[nb_duree-1]=9999999;
	if (nb_duree==1) {
		duree_duree[1]=duree_duree[0];
		montant_duree[1]=montant_duree[0];
		montant_duree[0]=500;
		nb_duree=2;
	}
	////
	//
	i=-1;
	j=0;
	montant_taux=[];
	taux_taux=[];
	for (ctr=nidx;ctr<len;ctr++) {
		line=DATAS[ctr];
		fchar=line.substr(0,1)
		if (fchar=="|") {
			break;
		}
		if (fchar==":") {
			i++;
			//frm["mnttau_"+i+"_"].checked=true;
			//frm["mnttau_mnt_"+i+"_"].value=line.substr(1);
			montant_taux[i]=fnumber(line.substr(1));
			taux_taux[i]=[];
			j=0;
		}
		if (fchar!=":" && fchar!="|") {
			tmpar=line.split(" ");
			//frm["mnttau_dur_"+i+"_"+j].value=tmpar[0];
			tmpdur=fnumber(tmpar[0]);
			ak=String(tmpdur);
			for (h=0;h<c_poss_durs.length;h++) if (found_dur=c_poss_durs[h]==tmpdur) break;
			if (!found_dur) c_poss_durs[c_poss_durs.length]=tmpdur;
			//frm["mnttau_tau_"+i+"_"+j].value=tmpar[1];
			taux_taux[i][ak]=fnumber(tmpar[1]);
			j++;
		}
	}
	////
	nb_montant_taux=montant_taux.length;
	montant_taux[nb_montant_taux-1]=9999999;
	if (nb_montant_taux==1) {
		taux_taux[1]=taux_taux[0];
		montant_taux[1]=montant_taux[0];
		montant_taux[0]=500;
		nb_montant_taux=2;
	}
	////
	montant_taux_duree=[];
	for (i=0;i<nb_montant_taux;i++) {
		len=taux_taux[i].length;
		montant_taux_duree[i]=[];
		for (j=0;j<len;j++) {
			if (taux_taux[i][j]!=null) {
				montant_taux_duree[i][0]=j;
				break;
			}
		}
		montant_taux_duree[i][1]=len-1;
	}
	c_poss_durs=tri_tab(c_poss_durs);
	////
	make_dur_list(c_poss_durs);
	clear_calc_data();
	clear_sim_tab();
}
function calc_valid_mens(vmnt,vdur,vtaux){
	var emp,nbr,txc,tp1,tp2,tp3,tp4,tp5,tp6,ech;
	emp = vmnt;
	nbr = vdur;
	txc = vtaux/100;
	tp1 = (1+txc);
	tp2 = (1/12);
	tp3 = (1+txc);
	tp4 = (nbr/12);
	tp5 = Math.pow(tp1, tp2);
	tp6 = Math.pow((1/tp3), tp4);
	ech = emp*(tp5-1)/(1-tp6);
	return Math.floor(ech*100)/100;
}
function calc_valid_taux_charge(vmnt,vmens,vdur,vtaux) {
	var agios,taux;
	agios=vmens*vdur-vmnt;
	taux=(agios*100)/(vmnt*vdur);
	return Math.round(taux*1000)/1000;
}
function make_dur_list(oar_dur) {
	var i,l,ch,ops;
	l=oar_dur.length;
	ch=document.forms[0].duree;
	if (String(ch.type).toLowerCase().indexOf("select")>-1) {
		ops=ch.options;
		len=ops.length;
		for (i=0;i<len;i++) {
			ops[0]=null;
		}
		len=oar_dur.length;
		for(i=0;i<len;i++) {
			tmpdur=oar_dur[i];
			ops[i]=new Option(tmpdur,tmpdur);
		}
	}
}
////
function sim_tbl_setselection(idx) {
	var cursel=this.udata_cursel,TR;
	if (cursel!=-1) {
		TR=this.udata__TRs[cursel];
		TR.oldcol=TR.oldoldcol;
		TR.style.background="#ffffff";
	}
	this.udata_cursel=idx;
	if (idx!=-1) {
		TR=this.udata__TRs[idx];
		TR.oldoldcol=TR.oldcol;
		TR.style.background="#ffff88";           
		TR.oldcol=TR.style.background;                     
	}
}
function tbl_check_selection() {
	var i,l,durees,found=-1;
	var tbl=document.getElementById("ppsim");
	durees=tbl.udata_durees;
	l=durees.length;
	for(i=0;i<l;i++) {
		if (calc_tmp.duree==durees[i]) {
			found=i;
			break;
		}
	}
	tbl.udata___setselection(found);
}
function sim_tr_onclick() {
	var frm=document.forms[0];
	frm.montant.value=this.udata_mnt;
	frm.duree.value=this.udata_dur;
	frm.taeg.value=this.udata_taux;
	frm.taux_charge.value=this.udata_tauxc;
	frm.mensualite.value=this.udata_mens;
	this.udata__TBL.udata___setselection(this.udata_idx);
}
function sim_tr_over() {
	this.oldcol=this.style.background;
	this.style.background="#ffffdd";
}
function sim_tr_out() {
	this.style.background=this.oldcol;
}
function mk_sim_tab() {
	var tbl=document.getElementById("ppsim"),tbd=tbl.getElementsByTagName("tbody")[0],tr,td;
	var htmstr="";
	var i,j,l,montant_pret,indice=0,indiced=0,taux_retour=0,taux_charge=0,tti,armnt=[],ardurs=[],min_dur,max_dur,tmp_dur,ttilength,tauxs=[];
	montant_pret=Number(String(calc_tmp.montant).split(",").join("."));
	for (i=nb_montant_taux; i>=0; i--) {
		if (montant_pret<=montant_taux[i]) {
			indice = i;
		}
	}
	min_dur=montant_taux_duree[indice][0];
	max_dur=montant_taux_duree[indice][1];
	//
	tti = taux_taux[indice];
	ttilength = tti.length;
	//
	l=c_poss_durs.length;
	for (i=0;i<l;i++) {
		tmp_dur=c_poss_durs[i];
		if(tmp_dur>=min_dur && tmp_dur<=max_dur) {
			ardurs[ardurs.length]=tmp_dur;
			armnt[armnt.length]=montant_pret;
			for (indiced=tmp_dur; indiced<ttilength; indiced++) {
				if (tti[indiced] != null || indiced==ttilength-1) {
					tauxs[tauxs.length]=tti[indiced] || 0;
					break;
				}
			}
		}
	}
	//
	clear_sim_tab();
	var css_td_g_haut,css_td_m_haut,css_td_d_haut,css_td_g_mil,css_td_m_mil,css_td_d_mil,css_td_g_bas,css_td_m_bas,css_td_d_bas;
	var color_tr=["#ddddee","#eeeedd"];
	var att;
	css_td_g_haut={
		border:"#cccccc",
		borderStyle:"solid",
		borderTopWidth:"1",
		borderRightWidth:"1",
		borderBottomWidth:"1",
		borderLeftWidth:"1"
	};
	l=tauxs.length;
	tbl.udata_durees=ardurs;
	var col;
	var vmnt,vdur,vmens,vtaux,vtauxc;
	for(i=0;i<8;i++) {
		col=(15-i).toString(16);
		tr=tbd.appendChild(document.createElement("tr"));
		td=tr.appendChild(document.createElement("td"));
		td.style.background="#"+col+col+col+col+col+col;
		td.setAttribute("colSpan","4");
		td.setAttribute("Height","1");
	}
	for (i=0;i<l;i++) {
		vmnt=armnt[i];
		vdur=ardurs[i];
		vtaux=tauxs[i];
		vmens=calc_valid_mens(montant_pret,ardurs[i],tauxs[i]);
		vtauxc=calc_valid_taux_charge(vmnt,vmens,vdur,vtaux);
		//
		tbl.udata__TRs[tbl.udata__TRs.length]=tr=tbd.appendChild(document.createElement("tr"));
		//tr.style.background=color_tr[i % 2];
		tr.onmouseover=sim_tr_over;
		tr.onmouseout=sim_tr_out;
		tr.onclick=sim_tr_onclick;
		tr.style.background="#ffffff";
		//
		tr.udata_idx=i;
		tr.udata_mnt=vmnt;
		tr.udata_dur=vdur;
		tr.udata_taux=vtaux;
		tr.udata_mens=vmens;
		tr.udata_tauxc=vtauxc;
		
		tr.udata__TBL=tbl;
		//
		//
		td=tr.appendChild(document.createElement("td"));	for(att in css_td_g_haut) td.style[att]=css_td_g_haut[att];
		td.appendChild(document.createTextNode( vmnt ));
		td=tr.appendChild(document.createElement("td"));	for(att in css_td_g_haut) td.style[att]=css_td_g_haut[att];
		td.appendChild(document.createTextNode( vdur ));
		td=tr.appendChild(document.createElement("td"));	for(att in css_td_g_haut) td.style[att]=css_td_g_haut[att];
		td.appendChild(document.createTextNode( vtaux ));
		td=tr.appendChild(document.createElement("td"));	for(att in css_td_g_haut) td.style[att]=css_td_g_haut[att];
		td.appendChild(document.createTextNode( vmens ));
	}
	tbl_check_selection();
}
function clear_sim_tab(){
	var tbl=document.getElementById("ppsim"),tbd=tbl.getElementsByTagName("tbody")[0],trcoll,i,l;
	//
	tbl.style.color="#000000";
	tbl.style.fontFamily="Arial";
	tbl.style.fontSize="11";
	tbl.udata__TRs=[];
	tbl.udata_cursel=-1;
	tbl.udata___setselection=sim_tbl_setselection;
	trcoll=tbd.getElementsByTagName("tr");
	l=trcoll.length;
	for (i=2;i<l;i++) {
		tbd.removeChild(trcoll[2]);
	}
	trcoll=null;
}
function clear_calc_data() {
	var frm=document.forms[0];
	frm.montant.value="";
	frm.duree.value="";
	frm.taeg.value="";
	frm.mensualite.value="";
	frm.taux_charge.value="";
}
