function isRIBvalide() { 
     
    if (arguments.length>=3) { 
        var bqe=arguments[0]; 
        var gui=arguments[1]; 
        var cpt=arguments[2].toUpperCase(); 
        // Conversion du numero de compte en chiffres 
        var tab= "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; 
        var tab1="123456789123456789234567890123456789".split(""); 
         
        while (cpt.match(/\D/) != null) 
            cpt=cpt.replace(/\D/, tab1[tab.indexOf(cpt.match(/\D/))]); 
        var cp=parseInt(cpt, 10); 
  
        //Calcul clé RIB 
        a=bqe%97; 
        a=a*100000+parseInt(gui, 10); 
        a=a%97; 
        a=a*Math.pow(10, 11) + cp; 
        a=a%97; 
        a=a*100; 
        a=a%97;
        a=97-a;
        window.status=a;
        
        if (arguments.length>3) 
            return arguments[3]==a; 
        else 
            return a; 
    } 
    else { 
        return false; 
    } 
}

function Trim(strValue) {
	return LTrim(RTrim(strValue));
}
function LTrim(strValue) {
    var LTRIMrgExp = /^\s */;
    return strValue.replace(LTRIMrgExp, '');
}
function RTrim(strValue){
    var RTRIMrgExp = /\s *$/;
    return strValue.replace(RTRIMrgExp, '');
}
//Active le i?me champ visible
function focusChamp(i) {
	var formulaireEle = document.forms[0].elements;
	var nb = formulaireEle.length;
	var compteur = 0;
	for (var j = 0; j < nb; j++) {
		if (formulaireEle[j].type != "hidden" 
			&& formulaireEle[j].style.visibility != "hidden" 
			&& formulaireEle[j].style.display != "none"
			&& formulaireEle[j].type != "radio"
			&& formulaireEle[j].type != "checkbox"
			&& formulaireEle[j].value == "") {
			
			if (i == compteur) {
				formulaireEle[j].focus();
			}
			compteur++;
		}
	}
	
}


var divBanquePaysPrec;

function initialiseDivBanquePays() {
	var banquePays = document.forms[0].banquePays;
	if (banquePays != null && banquePays != "undefined") {
		var pays = banquePays.value;
		var divBanquePays = document.getElementById("divBanque" + pays);
		if (divBanquePays != null && divBanquePays != "undefined") {
			divBanquePaysPrec = divBanquePays;
		}
		else {
			divBanquePaysPrec = document.getElementById("divBanqueEUROPE");
		}
	}
}

function initialiseDivBanquePays2() {
	var banquePays = document.forms[0]["banque.adresse.pays"];
	if (banquePays != null && banquePays != "undefined") {
		var pays = banquePays.value;
		var divBanquePays = document.getElementById("divBanque" + pays);
		if (divBanquePays != null && divBanquePays != "undefined") {
			divBanquePaysPrec = divBanquePays;
		}
		else {
			divBanquePaysPrec = document.getElementById("divBanqueEUROPE");
		}
	}
}

//actualise la liste des etats pour le pays selectionne et détermine si le code postal est obligatoire


function changePays(champPays) {
	var formulaire = champPays.form;
	var pays = champPays.value;
	var divEtat, divLabelEtat, champEtat, divLabelPays, divLabelCodePostal;
	var nomChampPays = champPays.name;
	var nomChampEtat;
	var adresseObligatoire = false;
	if (nomChampPays == "pays") {
		divEtat = document.getElementById("divEtat");
		divLabelEtat = document.getElementById("divLabelEtat");
		divLabelCodePostal = document.getElementById("divLabelCodePostal");
		divLabelPays = document.getElementById("divLabelPays");
		champEtat = formulaire.etat;
		nomChampEtat = "etat";
		
		//Adresse obligatoire ?
		var pos = divLabelPays.innerHTML.indexOf('<span class="oblig">');
		if (pos == -1) {
			pos = divLabelPays.innerHTML.indexOf('<SPAN class=oblig>');
			if (pos != -1) {
				adresseObligatoire = true;
			}
		}
		else {
			adresseObligatoire = true;
		}
		
		if (adresseObligatoire) {
			//Gestion astérisque code postal
			//Si ce pays n'est pas dans la liste des pays sans code postal
			if (paysNoZip.indexOf(pays) == -1) {
				var pos = divLabelCodePostal.innerHTML.indexOf('<span class="oblig">');
				if (pos == -1) {
					pos = divLabelCodePostal.innerHTML.indexOf('<SPAN class=oblig>');
					if (pos == -1) {
						divLabelCodePostal.innerHTML += '<span class="oblig">*</span>';
					}
				}
			}
			else {
				var pos = divLabelCodePostal.innerHTML.indexOf('<span class="oblig">');
				if (pos != -1) {
					divLabelCodePostal.innerHTML = divLabelCodePostal.innerHTML.substring(0, pos);
				}
				else {
					pos = divLabelCodePostal.innerHTML.indexOf('<SPAN class=oblig>');
					if (pos != -1) {
						divLabelCodePostal.innerHTML = divLabelCodePostal.innerHTML.substring(0, pos);
					}
				}
			}
		}
	}
	else if (nomChampPays == "paysNaissance") {
		divEtat = document.getElementById("divEtatNaissance");
		divLabelEtat = document.getElementById("divLabelEtatNaissance");;
		champEtat = formulaire.etatNaissance;
		nomChampEtat = "etatNaissance";
	}
	else if (nomChampPays == "banquePays") {
		divEtat = document.getElementById("divBanqueEtat");
		divLabelEtat = document.getElementById("divLabelBanqueEtat");;
		champEtat = formulaire.banqueEtat;
		nomChampEtat = "banqueEtat";
		
		var divBanquePays = document.getElementById("divBanque" + pays);
		
		if (divBanquePays == null || divBanquePays == "undefined") {
			divBanquePays = document.getElementById("divBanqueEUROPE");
			
		}
		if (divBanquePaysPrec != null && divBanquePaysPrec != "undefined") {
			divBanquePaysPrec.style.display = "none";
			divBanquePays.style.display = "block";
			divBanquePaysPrec = divBanquePays;
		}
	}
	
	
	eval("var etatsPresent = isEtat" + pays + ";");
	if (etatsPresent && (pays != "FR" || nomChampPays == "paysNaissance")) {
		eval("var tabEtatPays = tabEtats" + pays + ";");
		var selectEtat = '<select name="' + nomChampEtat + '"><option value=""></option>';
		//alert(tabEtatPays[0]);alert(tabEtatPays[1]);alert(((tabEtatPays[0]).split(";"))[0]);alert(((tabEtatPays[1]).split(";"))[0]);
		var tabCodes = (tabEtatPays[0]).split(";");
		var tabValeurs = (tabEtatPays[1]).split(";");
		if (pays == "FR") {
			for (var i = 0; i < tabCodes.length; i++) {
				if (tabCodes[i].length < 3) {
					selectEtat += '<option value="'+tabCodes[i]+'">'+tabCodes[i]+' - '+tabValeurs[i]+'</option>';
				}
				else {
					selectEtat += '<option value="'+tabCodes[i]+'">'+tabValeurs[i]+'</option>';
				}
			}
			
		}
		else {
			for (var i = 0; i < tabCodes.length; i++) {
				selectEtat += '<option value="'+tabCodes[i]+'">'+tabValeurs[i]+'</option>';
			}
		}
		selectEtat += "</select>";
		divEtat.innerHTML = selectEtat;
		
		if (adresseObligatoire && champPays.name == "pays") {
			var oblig = divLabelEtat.innerHTML.indexOf('<span class="oblig">');
			if (oblig == -1) {
				oblig = divLabelEtat.innerHTML.indexOf('<SPAN class=oblig>');
				if (oblig == -1) {
					divLabelEtat.innerHTML += '<span class="oblig">*</span>';
				}
			}
		}
		//alert("Etats pour le pays " + pays + " : " + tabEtatPays[0]);
	}
	else {
		//alert("Pas d'états pour le pays " + pays);
		divEtat.innerHTML = '<input type="text" name="' + nomChampEtat + '" size="20" maxlength="45"/>';
		
		if (adresseObligatoire && champPays.name == "pays") {
			var oblig = divLabelEtat.innerHTML.indexOf('<span class="oblig">');
			if (oblig != -1) {
				divLabelEtat.innerHTML = divLabelEtat.innerHTML.substring(0, oblig);
			}
			else {
				oblig = divLabelEtat.innerHTML.indexOf('<SPAN class=oblig>');
				if (oblig != -1) {
					divLabelEtat.innerHTML = divLabelEtat.innerHTML.substring(0, oblig);
				}
			}
		}
	}
}

function changePays2(champPays) {
	var formulaire = champPays.form;
	var pays = champPays.value;
	var divEtat, divLabelEtat, champEtat, divLabelPays, divLabelCodePostal;
	var nomChampPays = champPays.name;
	var nomChampEtat;
	var adresseObligatoire = false;
	if (nomChampPays == "adresse.pays") {
		divEtat = document.getElementById("divEtat");
		divLabelEtat = document.getElementById("divLabelEtat");
		divLabelCodePostal = document.getElementById("divLabelCodePostal");
		divLabelPays = document.getElementById("divLabelPays");
		nomChampEtat = "adresse.etat";
		champEtat = formulaire[nomChampEtat];
		
		
		//Adresse obligatoire ?
		var pos = divLabelPays.innerHTML.indexOf('<span class="oblig">');
		if (pos == -1) {
			pos = divLabelPays.innerHTML.indexOf('<SPAN class=oblig>');
			if (pos != -1) {
				adresseObligatoire = true;
			}
		}
		else {
			adresseObligatoire = true;
		}
		
		if (adresseObligatoire) {
			//Gestion astérisque code postal
			//Si ce pays n'est pas dans la liste des pays sans code postal
			if (paysNoZip.indexOf(pays) == -1) {
				var pos = divLabelCodePostal.innerHTML.indexOf('<span class="oblig">');
				if (pos == -1) {
					pos = divLabelCodePostal.innerHTML.indexOf('<SPAN class=oblig>');
					if (pos == -1) {
						divLabelCodePostal.innerHTML += '<span class="oblig">*</span>';
					}
				}
			}
			else {
				var pos = divLabelCodePostal.innerHTML.indexOf('<span class="oblig">');
				if (pos != -1) {
					divLabelCodePostal.innerHTML = divLabelCodePostal.innerHTML.substring(0, pos);
				}
				else {
					pos = divLabelCodePostal.innerHTML.indexOf('<SPAN class=oblig>');
					if (pos != -1) {
						divLabelCodePostal.innerHTML = divLabelCodePostal.innerHTML.substring(0, pos);
					}
				}
			}
		}
	}
	else if (nomChampPays == "paysNaissance") {
		divEtat = document.getElementById("divEtatNaissance");
		divLabelEtat = document.getElementById("divLabelEtatNaissance");;
		nomChampEtat = "etatNaissance";
		champEtat = formulaire[nomChampEtat];
		
	}
	else if (nomChampPays == "banque.banquePays") {
		divEtat = document.getElementById("divBanqueEtat");
		divLabelEtat = document.getElementById("divLabelBanqueEtat");;
		nomChampEtat = "banque.adresse.etat";
		champEtat = formulaire[nomChampEtat];
		
		var divBanquePays = document.getElementById("divBanque" + pays);
		
		if (divBanquePays == null || divBanquePays == "undefined") {
			divBanquePays = document.getElementById("divBanqueEUROPE");
			
		}
		if (divBanquePaysPrec != null && divBanquePaysPrec != "undefined") {
			divBanquePaysPrec.style.display = "none";
			divBanquePays.style.display = "block";
			divBanquePaysPrec = divBanquePays;
		}
	}
	
	
	eval("var etatsPresent = isEtat" + pays + ";");
	if (etatsPresent && (pays != "FR" || nomChampPays == "paysNaissance")) {
		eval("var tabEtatPays = tabEtats" + pays + ";");
		var selectEtat = '<select name="' + nomChampEtat + '"><option value=""></option>';
		//alert(tabEtatPays[0]);alert(tabEtatPays[1]);alert(((tabEtatPays[0]).split(";"))[0]);alert(((tabEtatPays[1]).split(";"))[0]);
		var tabCodes = (tabEtatPays[0]).split(";");
		var tabValeurs = (tabEtatPays[1]).split(";");
		if (pays == "FR") {
			for (var i = 0; i < tabCodes.length; i++) {
				if (tabCodes[i].length < 3) {
					selectEtat += '<option value="'+tabCodes[i]+'">'+tabCodes[i]+' - '+tabValeurs[i]+'</option>';
				}
				else {
					selectEtat += '<option value="'+tabCodes[i]+'">'+tabValeurs[i]+'</option>';
				}
			}
			
		}
		else {
			for (var i = 0; i < tabCodes.length; i++) {
				selectEtat += '<option value="'+tabCodes[i]+'">'+tabValeurs[i]+'</option>';
			}
		}
		selectEtat += "</select>";
		divEtat.innerHTML = selectEtat;
		
		if (adresseObligatoire && champPays.name == "pays") {
			var oblig = divLabelEtat.innerHTML.indexOf('<span class="oblig">');
			if (oblig == -1) {
				oblig = divLabelEtat.innerHTML.indexOf('<SPAN class=oblig>');
				if (oblig == -1) {
					divLabelEtat.innerHTML += '<span class="oblig">*</span>';
				}
			}
		}
		//alert("Etats pour le pays " + pays + " : " + tabEtatPays[0]);
	}
	else {
		//alert("Pas d'états pour le pays " + pays);
		divEtat.innerHTML = '<input type="text" name="' + nomChampEtat + '" size="20" maxlength="45"/>';
		
		if (adresseObligatoire && champPays.name == "pays") {
			var oblig = divLabelEtat.innerHTML.indexOf('<span class="oblig">');
			if (oblig != -1) {
				divLabelEtat.innerHTML = divLabelEtat.innerHTML.substring(0, oblig);
			}
			else {
				oblig = divLabelEtat.innerHTML.indexOf('<SPAN class=oblig>');
				if (oblig != -1) {
					divLabelEtat.innerHTML = divLabelEtat.innerHTML.substring(0, oblig);
				}
			}
		}
	}
}

function valideBanqueInfo(formulaire, formulaireValide, messageBanqueCoordonneesInvalide, messageIbanPaysIncoherence) {
	var banqueCode = formulaire.banqueCode.value;
	var banqueGuichet = formulaire.banqueGuichet.value;
	
	var banqueCle = formulaire.banqueCle.value;
	var banquePays = formulaire.banquePays.value;

	if (banquePays == "FR") {
		var banqueCompte = formulaire["banqueCompte(FR)"].value;
		if (formulaireValide  
			&& banqueCode.length > 0 
			&& banqueGuichet.length > 0 
			&& banqueCompte.length > 0 
			&& banqueCle.length > 0) {
			formulaireValide = isRIBvalide(banqueCode, banqueGuichet, banqueCompte, banqueCle);
			if (!formulaireValide) {
				alert(messageBanqueCoordonneesInvalide);
				formulaire.banqueCode.select();
				formulaire.banqueGuichet.select();
				formulaire["banqueCompte(FR)"].select();
				formulaire.banqueCle.select();
				formulaire.banqueCode.focus();
			}
		}
	}
	else if (banquePays == "US") {
		
	}
	else {
		//vérification cohérence Iban
		var champsIban = formulaire.iban;
		if (banquePays != "" && champsIban != null && champsIban != "undefined") {
			var iban = champsIban.value;
			if (iban.length == 1 || iban.length > 1 && iban.substring(0,2) != banquePays) {
				formulaireValide = false;
				alert(messageIbanPaysIncoherence);
			}
			
		}
	}
	
	if (formulaireValide) {
		var banqueWeb = Trim(formulaire.banqueWeb.value);
		if (banqueWeb.length > 0 && (banqueWeb.length < 7 || banqueWeb.substring(0,7) != "http://")) {
			formulaire.banqueWeb.value = "http://" + banqueWeb;
		}
	}
	
	return formulaireValide;
}

function valideBanqueInfo2(formulaire, formulaireValide, messageBanqueCoordonneesInvalide, messageIbanPaysIncoherence) {
	var banqueCode = formulaire["banque.banqueCode"].value;
	var banqueGuichet = formulaire["banque.banqueGuichet"].value;
	
	var banqueCle = formulaire["banque.banqueCle"].value;
	var banquePays = formulaire["banque.banquePays"].value;

	if (banquePays == "FR") {
		var banqueCompte = formulaire["banque.banqueCompte(FR)"].value;
		if (formulaireValide  
			&& banqueCode.length > 0 
			&& banqueGuichet.length > 0 
			&& banqueCompte.length > 0 
			&& banqueCle.length > 0) {
			formulaireValide = isRIBvalide(banqueCode, banqueGuichet, banqueCompte, banqueCle);
			if (!formulaireValide) {
				alert(messageBanqueCoordonneesInvalide);
				formulaire["banque.banqueCode"].select();
				formulaire["banque.banqueGuichet"].select();
				formulaire["banque.banqueCompte(FR)"].select();
				formulaire["banque.banqueCle"].select();
				formulaire["banque.banqueCode"].focus();
			}
		}
	}
	else if (banquePays == "US") {
		
	}
	else {
		//vérification cohérence Iban
		var champsIban = formulaire.iban;
		if (banquePays != "" && champsIban != null && champsIban != "undefined") {
			var iban = champsIban.value;
			if (iban.length == 1 || iban.length > 1 && iban.substring(0,2) != banquePays) {
				formulaireValide = false;
				alert(messageIbanPaysIncoherence);
			}
			
		}
	}
	
	if (formulaireValide) {
		var banqueWeb = Trim(formulaire["banque.banqueWeb"].value);
		if (banqueWeb.length > 0 && (banqueWeb.length < 7 || banqueWeb.substring(0,7) != "http://")) {
			formulaire["banque.banqueWeb"].value = "http://" + banqueWeb;
		}
	}
	
	return formulaireValide;
}
