window.onload=montre;
function montre(id) {
var d = document.getElementById(id);
	for (var i = 1; i<=13; i++) {
		if (document.getElementById('smenu'+i)) {document.getElementById('smenu'+i).style.display='none';}
	}
if (d) {d.style.display='block';}
}

Validator = new TValidator();

function TValidator() {
//Attributs:
	this.BackGroundError = "#DDC0C0";
	this.BackGroundValid = "#FFFFFF";
//Methodes:
	this.RegEx			= TRegExp;
	this.Controle		= TControle;
	this.Error			= TError;
	this.Submit			= TSubmit;
}

function TSubmit(formulaire){
	var retour="";
	var ret="";
	var test="";
	var zones;
	var tabTest = new Array();
	var tabtmp = null;
	var champ = null;
	
	for (var no_element=0; no_element < formulaire.elements.length;	no_element++) {	
		if (formulaire.elements[no_element].lang) {
			zones = formulaire.elements[no_element].lang.split(";");

			tabTest["nom"] = "Champ("+(no_element+1)+")";
			tabTest["erreur"] = "";
			tabTest["obligatoire"] = false;

			for (var z=0; z < zones.length;	z++ ) {
				tabtmp = zones[z].split(":");	
				if (tabtmp[0].RLtrim().toLowerCase() == "obligatoire")
					tabTest[tabtmp[0].RLtrim().toLowerCase()] = eval(tabtmp[1].RLtrim());
				else	
					tabTest[tabtmp[0].RLtrim().toLowerCase()] = tabtmp[1].RLtrim();
			}
			if (tabTest["erreur"] == "") 
				tabTest["erreur"] = "le champ " + tabTest["nom"]+" est invalide";
				
			formulaire.elements[no_element].style.backgroundColor = this.BackGroundValid;
			
			if (formulaire.elements[no_element].value == "" && tabTest["obligatoire"]) {
				retour += "le champ " + tabTest["nom"] + " est obligatoire\r\n";
				formulaire.elements[no_element].style.backgroundColor = this.BackGroundError;
			}	
			else if (formulaire.elements[no_element].value != "" && tabTest["test"]) {  
				ret = this.Controle(formulaire.elements[no_element].value,tabTest["test"],tabTest["nom"],tabTest["erreur"],tabTest["obligatoire"]);
				if (ret != "") formulaire.elements[no_element].style.backgroundColor = this.BackGroundError; 
				retour += ret;
			}	
			
			if (retour != "" && !champ) champ = formulaire.elements[no_element];	
		}
	}
	if (retour == "") formulaire.submit();
	else return this.Error(formulaire,champ,retour);
}		

function TControle(valeur,test,nomchamp,erreur,oblig) {
	var retour = "";
	var tabtemp,tabtemp1,tabtemp2,tabtemp3,tabtemp4;
	var regle,reg,binf="-inf",bsup="+inf",decimal,entier,separateur="";
	
		if (test.indexOf("dt!") >= 0) {
			tabtemp = test.split("!");
			reg = this.RegEx(tabtemp[1]);
		}
		else if (test.indexOf("enum!") >= 0) {
			tabtemp = test.split("!");
			reg = "^(" + tabtemp[1].replace(",","|") + ")$";				
		}
		else if (test.indexOf("reg!") >= 0) {
			tabtemp = test.split("!");
			reg = tabtemp[1];
		}
		else if (test.indexOf("fic!") >= 0) {
			tabtemp = test.split("!");
			reg = "^[^\\\\<\\*\\?\">\\|]+[.]{1}" + tabtemp[1] + "$";
		}
		else if (test.indexOf("nbr!") >= 0) {
			tabtemp = test.split("!");
			tabtemp2 = tabtemp[1].split("?");
			type = tabtemp2[0];
			(tabtemp2[1])?binf = tabtemp2[1]:binf = "-inf";
			(tabtemp2[2])?bsup = tabtemp2[2]:bsup = "+inf";
			if (tabtemp2[0] == "int") {
				reg = "^[0-9-]+$";
			}
			else if (type.indexOf("int>") >= 0) {
				tabtemp3 = type.split(">");
				reg = "^[-]?[0-9]{" + tabtemp3[1] + "}$";
			}
			else if (type.indexOf("dec>") >= 0) {
				tabtemp3 = type.split(">");
				if (tabtemp3[1].indexOf(".") >= 0) separateur = ".";
				if (tabtemp3[1].indexOf(",") >= 0) separateur = ",";
				if (separateur != "") {
					tabtemp4 = tabtemp3[1].split(separateur);
					(tabtemp4[0])?entier = "{"+tabtemp4[0]+"}":entier = "+";
					(tabtemp4[1])?decimal = "{"+tabtemp4[1]+"}":decimal = "+";
					reg = "^[-]?[0-9]" + entier + "[" + separateur + "]" + "[0-9]" + decimal + "$";
				}	
			}
		}
		else {
			reg = this.RegEx(test);
		}
		if (reg != "") {
			regle = new RegExp(reg);
			if (!regle.test(valeur)) retour += erreur + "\r\n";
			else if (test.indexOf("nbr!") >= 0) {
				if (!isNaN(binf) && Number(valeur.replace(",",".")) < binf) {retour += erreur + "\r\n";}
				else if (!isNaN(bsup) && Number(valeur.replace(",",".")) > bsup) {retour += erreur + "\r\n";}
			}
		}	

	return retour;
}		

function TRegExp(type) {
	var rep = "";
	var moi31 = "(janvier|mars|mai|juillet|août|octobre|décembre)";
	var Moi31 = "(Janvier|Mars|Mai|Juillet|Août|Octobre|Décembre)";
	var MOI31 = "(JANVIER|MARS|MAI|JUILLET|AOUT|OCTOBRE|DECEMBRE)";
	var cmoi31 = "(01|03|05|07|08|10|12)";
	var moi30 = "(avril|juin|septembre|novembre)";
	var Moi30 = "(Avril|Juin|Septembre|Novembre)";
	var MOI30 = "(AVRIL|JUIN|SEPTEMBRE|NOVEMBRE)";
	var cmoi30 = "(04|06|09|11)";
	var jour31 = "([0][1-9]|[12][\\d]|[3][01])";
	var jour30 = "([0][1-9]|[12][\\d]|30)";
	var jour29 = "([0][1-9]|[12][\\d])";
	
	switch (type) {
		case 'email':
			rep = "^[\\w.-]+@[\\w.-]{2,}.[a-zA-Z]{2,3}$";break;
		case 'telephone':	
			rep = "^[\\d]{2}[ ][\\d]{2}[ ][\\d]{2}[ ][\\d]{2}[ ][\\d]{2}$";break;
		case 'secu':	
			rep = "^[\\d]{1}[ ][\\d]{2}[ ][\\d]{2}[ ][\\d]{2}[ ][\\d]{3}[ ][\\d]{3}[ ][\\d]{2}$";break;
		case 'jj/mm/aaaa':	
			rep = "^(" + jour31 + "[\/]" + cmoi31 + "|" + jour30 + "[\/]" + cmoi30 + "|" + jour29 + "[\/](02)){1}[\/][\\d]{4}$";break
		case 'mm/jj/aaaa':	
			rep = "^(" + cmoi31 + "[\/]" + jour31 + "|" + cmoi30 + "[\/]" + jour30 + "|(02)[\/]" + jour29 + "){1}[\/][\\d]{4}$";break
		case 'aaaa/mm/jj':	
			rep = "^[\\d]{4}[\/](" + cmoi31 + "[\/]" + jour31 + "|" + cmoi30 + "[\/]" + jour30 + "|(02)[\/]" + jour29 + "){1}$";break
		case 'jj mm aaaa':	
			rep = "^(" + jour31 + "[ ]" + cmoi31 + "|" + jour30 + "[ ]" + cmoi30 + "|" + jour29 + "[ ](02)){1}[ ][\\d]{4}$";break
		case 'mm jj aaaa':	
			rep = "^(" + cmoi31 + "[ ]" + jour31 + "|" + cmoi30 + "[ ]" + jour30 + "|(02)[ ]" + jour29 + "){1}[ ][\\d]{4}$";break
		case 'aaaa mm jj':	
			rep = "^[\\d]{4}[ ](" + cmoi31 + "[ ]" + jour31 + "|" + cmoi30 + "[ ]" + jour30 + "|(02)[ ]" + jour29 + "){1}$";break
		case 'jj-mm-aaaa':	
			rep = "^(" + jour31 + "[-]" + cmoi31 + "|" + jour30 + "[-]" + cmoi30 + "|" + jour29 + "[-](02)){1}[-][\\d]{4}$";break
		case 'mm-jj-aaaa':	
			rep = "^(" + cmoi31 + "[-]" + jour31 + "|" + cmoi30 + "[-]" + jour30 + "|(02)[-]" + jour29 + "){1}[-][\\d]{4}$";break
		case 'aaaa-mm-jj':	
			rep = "^[\\d]{4}[-](" + cmoi31 + "[-]" + jour31 + "|" + cmoi30 + "[-]" + jour30 + "|(02)[-]" + jour29 + "){1}$";break
		case 'jjmmaaaa':	
			rep = "^(" + jour31 + cmoi31 + "|" + jour30 + cmoi30 + "|" + jour29 + "(02)){1}[\\d]{4}$";break
		case 'mmjjaaaa':	
			rep = "^(" + cmoi31 + jour31 + "|" + cmoi30 + jour30 + "|(02)" + jour29 + "){1}[\\d]{4}$";break
		case 'aaaammjj':	
			rep = "^[\\d]{4}(" + cmoi31 + jour31 + "|" + cmoi30 + jour30 + "|(02)" + jour29 + "){1}$";break
		case 'jj/mm/aa':	
			rep = "^(" + jour31 + "[\/]" + cmoi31 + "|" + jour30 + "[\/]" + cmoi30 + "|" + jour29 + "[\/](02)){1}[\/][\\d]{2}$";break
		case 'mm/jj/aa':	
			rep = "^(" + cmoi31 + "[\/]" + jour31 + "|" + cmoi30 + "[\/]" + jour30 + "|(02)[\/]" + jour29 + "){1}[\/][\\d]{2}$";break
		case 'aa/mm/jj':	
			rep = "^[\\d]{2}[\/](" + cmoi31 + "[\/]" + jour31 + "|" + cmoi30 + "[\/]" + jour30 + "|(02)[\/]" + jour29 + "){1}$";break
		case 'jj mm aa':	
			rep = "^(" + jour31 + "[ ]" + cmoi31 + "|" + jour30 + "[ ]" + cmoi30 + "|" + jour29 + "[ ](02)){1}[ ][\\d]{2}$";break
		case 'mm jj aa':	
			rep = "^(" + cmoi31 + "[ ]" + jour31 + "|" + cmoi30 + "[ ]" + jour30 + "|(02)[ ]" + jour29 + "){1}[ ][\\d]{2}$";break
		case 'aa mm jj':	
			rep = "^[\\d]{2}[ ](" + cmoi31 + "[ ]" + jour31 + "|" + cmoi30 + "[ ]" + jour30 + "|(02)[ ]" + jour29 + "){1}$";break
		case 'jj-mm-aa':	
			rep = "^(" + jour31 + "[-]" + cmoi31 + "|" + jour30 + "[-]" + cmoi30 + "|" + jour29 + "[-](02)){1}[-][\\d]{2}$";break
		case 'mm-jj-aa':	
			rep = "^(" + cmoi31 + "[-]" + jour31 + "|" + cmoi30 + "[-]" + jour30 + "|(02)[-]" + jour29 + "){1}[-][\\d]{2}$";break
		case 'aa-mm-jj':	
			rep = "^[\\d]{2}[-](" + cmoi31 + "[-]" + jour31 + "|" + cmoi30 + "[-]" + jour30 + "|(02)[-]" + jour29 + "){1}$";break
		case 'jjmmaa':	
			rep = "^(" + jour31 + cmoi31 + "|" + jour30 + cmoi30 + "|" + jour29 + "(02)){1}[\\d]{2}$";break
		case 'mmjjaa':	
			rep = "^(" + cmoi31 + jour31 + "|" + cmoi30 + jour30 + "|(02)" + jour29 + "){1}[\\d]{2}$";break
		case 'aammjj':	
			rep = "^[\\d]{2}(" + cmoi31 + jour31 + "|" + cmoi30 + jour30 + "|(02)" + jour29 + "){1}$";break
		case 'jj/mm':	
			rep = "^(" + jour31 + "[\/]" + cmoi31 + "|" + jour30 + "[\/]" + cmoi30 + "|" + jour29 + "[\/](02)){1}$";break
		case 'mm/jj':	
			rep = "^(" + cmoi31 + "[\/]" + jour31 + "|" + cmoi30 + "[\/]" + jour30 + "|(02)[\/]" + jour29 + "){1}$";break
		case 'jj mm':	
			rep = "^(" + jour31 + "[ ]" + cmoi31 + "|" + jour30 + "[ ]" + cmoi30 + "|" + jour29 + "[ ](02)){1}$";break
		case 'mm jj':	
			rep = "^(" + cmoi31 + "[ ]" + jour31 + "|" + cmoi30 + "[ ]" + jour30 + "|(02)[ ]" + jour29 + "){1}$";break
		case 'jj-mm':	
			rep = "^(" + jour31 + "[-]" + cmoi31 + "|" + jour30 + "[-]" + cmoi30 + "|" + jour29 + "[-](02)){1}$";break
		case 'mm-jj':	
			rep = "^(" + cmoi31 + "[-]" + jour31 + "|" + cmoi30 + "[-]" + jour30 + "|(02)[-]" + jour29 + "){1}$";break
		case 'jjmm':	
			rep = "^(" + jour31 + cmoi31 + "|" + jour30 + cmoi30 + "|" + jour29 + "(02)){1}$";break
		case 'mmjj':	
			rep = "^(" + cmoi31 + jour31 + "|" + cmoi30 + jour30 + "|(02)" + jour29 + "){1}$";break
		case 'jj/mmm/aaaa':	
			rep = "^(" + jour31 + "[\/]" + moi31 + "|" + jour30 + "[\/]" + moi30 + "|" + jour29 + "[\/](février)){1}[\/][\\d]{4}$";break
		case 'mmm/jj/aaaa':	
			rep = "^(" + moi31 + "[\/]" + jour31 + "|" + moi30 + "[\/]" + jour30 + "|(février)[\/]" + jour29 + "){1}[\/][\\d]{4}$";break
		case 'aaaa/mmm/jj':	
			rep = "^[\\d]{4}[\/](" + moi31 + "[\/]" + jour31 + "|" + moi30 + "[\/]" + jour30 + "|(février)[\/]" + jour29 + "){1}$";break
		case 'jj mmm aaaa':	
			rep = "^(" + jour31 + "[ ]" + moi31 + "|" + jour30 + "[ ]" + moi30 + "|" + jour29 + "[ ](février)){1}[ ][\\d]{4}$";break
		case 'mmm jj aaaa':	
			rep = "^(" + moi31 + "[ ]" + jour31 + "|" + moi30 + "[ ]" + jour30 + "|(février)[ ]" + jour29 + "){1}[ ][\\d]{4}$";break
		case 'aaaa mmm jj':	
			rep = "^[\\d]{4}[ ](" + moi31 + "[ ]" + jour31 + "|" + moi30 + "[ ]" + jour30 + "|(février)[ ]" + jour29 + "){1}$";break
		case 'jj-mmm-aaaa':	
			rep = "^(" + jour31 + "[-]" + moi31 + "|" + jour30 + "[-]" + moi30 + "|" + jour29 + "[-](février)){1}[-][\\d]{4}$";break
		case 'mmm-jj-aaaa':	
			rep = "^(" + moi31 + "[-]" + jour31 + "|" + moi30 + "[-]" + jour30 + "|(février)[-]" + jour29 + "){1}[-][\\d]{4}$";break
		case 'aaaa-mmm-jj':	
			rep = "^[\\d]{4}[-](" + moi31 + "[-]" + jour31 + "|" + moi30 + "[-]" + jour30 + "|(février)[-]" + jour29 + "){1}$";break
		case 'jjmmmaaaa':	
			rep = "^(" + jour31 + moi31 + "|" + jour30 + moi30 + "|" + jour29 + "(février)){1}[\\d]{4}$";break
		case 'mmmjjaaaa':	
			rep = "^(" + moi31 + jour31 + "|" + moi30 + jour30 + "|(février)" + jour29 + "){1}[\\d]{4}$";break
		case 'aaaammmjj':	
			rep = "^[\\d]{4}(" + moi31 + jour31 + "|" + moi30 + jour30 + "|(février)" + jour29 + "){1}$";break
		case 'jj/mmm/aa':	
			rep = "^(" + jour31 + "[\/]" + moi31 + "|" + jour30 + "[\/]" + moi30 + "|" + jour29 + "[\/](février)){1}[\/][\\d]{2}$";break
		case 'mmm/jj/aa':	
			rep = "^(" + moi31 + "[\/]" + jour31 + "|" + moi30 + "[\/]" + jour30 + "|(février)[\/]" + jour29 + "){1}[\/][\\d]{2}$";break
		case 'aa/mmm/jj':	
			rep = "^[\\d]{2}[\/](" + moi31 + "[\/]" + jour31 + "|" + moi30 + "[\/]" + jour30 + "|(février)[\/]" + jour29 + "){1}$";break
		case 'jj mmm aa':	
			rep = "^(" + jour31 + "[ ]" + moi31 + "|" + jour30 + "[ ]" + moi30 + "|" + jour29 + "[ ](février)){1}[ ][\\d]{2}$";break
		case 'mmm jj aa':	
			rep = "^(" + moi31 + "[ ]" + jour31 + "|" + moi30 + "[ ]" + jour30 + "|(février)[ ]" + jour29 + "){1}[ ][\\d]{2}$";break
		case 'aa mmm jj':	
			rep = "^[\\d]{2}[ ](" + moi31 + "[ ]" + jour31 + "|" + moi30 + "[ ]" + jour30 + "|(février)[ ]" + jour29 + "){1}$";break
		case 'jj-mmm-aa':	
			rep = "^(" + jour31 + "[-]" + moi31 + "|" + jour30 + "[-]" + moi30 + "|" + jour29 + "[-](février)){1}[-][\\d]{2}$";break
		case 'mmm-jj-aa':	
			rep = "^(" + moi31 + "[-]" + jour31 + "|" + moi30 + "[-]" + jour30 + "|(février)[-]" + jour29 + "){1}[-][\\d]{2}$";break
		case 'aa-mmm-jj':	
			rep = "^[\\d]{2}[-](" + moi31 + "[-]" + jour31 + "|" + moi30 + "[-]" + jour30 + "|(février)[-]" + jour29 + "){1}$";break
		case 'jjmmmaa':	
			rep = "^(" + jour31 + moi31 + "|" + jour30 + moi30 + "|" + jour29 + "(février)){1}[\\d]{2}$";break
		case 'mmmjjaa':	
			rep = "^(" + moi31 + jour31 + "|" + moi30 + jour30 + "|(février)" + jour29 + "){1}[\\d]{2}$";break
		case 'aammmjj':	
			rep = "^[\\d]{2}(" + moi31 + jour31 + "|" + moi30 + jour30 + "|(février)" + jour29 + "){1}$";break
		case 'jj/mmm':	
			rep = "^(" + jour31 + "[\/]" + moi31 + "|" + jour30 + "[\/]" + moi30 + "|" + jour29 + "[\/](février)){1}$";break
		case 'mmm/jj':	
			rep = "^(" + moi31 + "[\/]" + jour31 + "|" + moi30 + "[\/]" + jour30 + "|(février)[\/]" + jour29 + "){1}$";break
		case 'jj mmm':	
			rep = "^(" + jour31 + "[ ]" + moi31 + "|" + jour30 + "[ ]" + moi30 + "|" + jour29 + "[ ](février)){1}$";break
		case 'mmm jj':	
			rep = "^(" + moi31 + "[ ]" + jour31 + "|" + moi30 + "[ ]" + jour30 + "|(février)[ ]" + jour29 + "){1}$";break
		case 'jj-mmm':	
			rep = "^(" + jour31 + "[-]" + moi31 + "|" + jour30 + "[-]" + moi30 + "|" + jour29 + "[-](février)){1}$";break
		case 'mmm-jj':	
			rep = "^(" + moi31 + "[-]" + jour31 + "|" + moi30 + "[-]" + jour30 + "|(février)[-]" + jour29 + "){1}$";break
		case 'jjmmm':	
			rep = "^(" + jour31 + moi31 + "|" + jour30 + moi30 + "|" + jour29 + "(février)){1}$";break
		case 'mmmjj':	
			rep = "^(" + moi31 + jour31 + "|" + moi30 + jour30 + "|(février)" + jour29 + "){1}$";break
		case 'jj/Mmm/aaaa':	
			rep = "^(" + jour31 + "[\/]" + Moi31 + "|" + jour30 + "[\/]" + Moi30 + "|" + jour29 + "[\/](Février)){1}[\/][\\d]{4}$";break
		case 'Mmm/jj/aaaa':	
			rep = "^(" + Moi31 + "[\/]" + jour31 + "|" + Moi30 + "[\/]" + jour30 + "|(Février)[\/]" + jour29 + "){1}[\/][\\d]{4}$";break
		case 'aaaa/Mmm/jj':	
			rep = "^[\\d]{4}[\/](" + Moi31 + "[\/]" + jour31 + "|" + Moi30 + "[\/]" + jour30 + "|(Février)[\/]" + jour29 + "){1}$";break
		case 'jj Mmm aaaa':	
			rep = "^(" + jour31 + "[ ]" + Moi31 + "|" + jour30 + "[ ]" + Moi30 + "|" + jour29 + "[ ](Février)){1}[ ][\\d]{4}$";break
		case 'Mmm jj aaaa':	
			rep = "^(" + Moi31 + "[ ]" + jour31 + "|" + Moi30 + "[ ]" + jour30 + "|(Février)[ ]" + jour29 + "){1}[ ][\\d]{4}$";break
		case 'aaaa Mmm jj':	
			rep = "^[\\d]{4}[ ](" + Moi31 + "[ ]" + jour31 + "|" + Moi30 + "[ ]" + jour30 + "|(Février)[ ]" + jour29 + "){1}$";break
		case 'jj-Mmm-aaaa':	
			rep = "^(" + jour31 + "[-]" + Moi31 + "|" + jour30 + "[-]" + Moi30 + "|" + jour29 + "[-](Février)){1}[-][\\d]{4}$";break
		case 'Mmm-jj-aaaa':	
			rep = "^(" + Moi31 + "[-]" + jour31 + "|" + Moi30 + "[-]" + jour30 + "|(Février)[-]" + jour29 + "){1}[-][\\d]{4}$";break
		case 'aaaa-Mmm-jj':	
			rep = "^[\\d]{4}[-](" + Moi31 + "[-]" + jour31 + "|" + Moi30 + "[-]" + jour30 + "|(Février)[-]" + jour29 + "){1}$";break
		case 'jjMmmaaaa':	
			rep = "^(" + jour31 + Moi31 + "|" + jour30 + Moi30 + "|" + jour29 + "(Février)){1}[\\d]{4}$";break
		case 'Mmmjjaaaa':	
			rep = "^(" + Moi31 + jour31 + "|" + Moi30 + jour30 + "|(Février)" + jour29 + "){1}[\\d]{4}$";break
		case 'aaaaMmmjj':	
			rep = "^[\\d]{4}(" + Moi31 + jour31 + "|" + Moi30 + jour30 + "|(Février)" + jour29 + "){1}$";break
		case 'jj/Mmm/aa':	
			rep = "^(" + jour31 + "[\/]" + Moi31 + "|" + jour30 + "[\/]" + Moi30 + "|" + jour29 + "[\/](Février)){1}[\/][\\d]{2}$";break
		case 'Mmm/jj/aa':	
			rep = "^(" + Moi31 + "[\/]" + jour31 + "|" + Moi30 + "[\/]" + jour30 + "|(Février)[\/]" + jour29 + "){1}[\/][\\d]{2}$";break
		case 'aa/Mmm/jj':	
			rep = "^[\\d]{2}[\/](" + Moi31 + "[\/]" + jour31 + "|" + Moi30 + "[\/]" + jour30 + "|(Février)[\/]" + jour29 + "){1}$";break
		case 'jj Mmm aa':	
			rep = "^(" + jour31 + "[ ]" + Moi31 + "|" + jour30 + "[ ]" + Moi30 + "|" + jour29 + "[ ](Février)){1}[ ][\\d]{2}$";break
		case 'Mmm jj aa':	
			rep = "^(" + Moi31 + "[ ]" + jour31 + "|" + Moi30 + "[ ]" + jour30 + "|(Février)[ ]" + jour29 + "){1}[ ][\\d]{2}$";break
		case 'aa Mmm jj':	
			rep = "^[\\d]{2}[ ](" + Moi31 + "[ ]" + jour31 + "|" + Moi30 + "[ ]" + jour30 + "|(Février)[ ]" + jour29 + "){1}$";break
		case 'jj-Mmm-aa':	
			rep = "^(" + jour31 + "[-]" + Moi31 + "|" + jour30 + "[-]" + Moi30 + "|" + jour29 + "[-](Février)){1}[-][\\d]{2}$";break
		case 'Mmm-jj-aa':	
			rep = "^(" + Moi31 + "[-]" + jour31 + "|" + Moi30 + "[-]" + jour30 + "|(Février)[-]" + jour29 + "){1}[-][\\d]{2}$";break
		case 'aa-Mmm-jj':	
			rep = "^[\\d]{2}[-](" + Moi31 + "[-]" + jour31 + "|" + Moi30 + "[-]" + jour30 + "|(Février)[-]" + jour29 + "){1}$";break
		case 'jjMmmaa':	
			rep = "^(" + jour31 + Moi31 + "|" + jour30 + Moi30 + "|" + jour29 + "(Février)){1}[\\d]{2}$";break
		case 'Mmmjjaa':	
			rep = "^(" + Moi31 + jour31 + "|" + Moi30 + jour30 + "|(Février)" + jour29 + "){1}[\\d]{2}$";break
		case 'aaMmmjj':	
			rep = "^[\\d]{2}(" + Moi31 + jour31 + "|" + Moi30 + jour30 + "|(Février)" + jour29 + "){1}$";break
		case 'jj/Mmm':	
			rep = "^(" + jour31 + "[\/]" + Moi31 + "|" + jour30 + "[\/]" + Moi30 + "|" + jour29 + "[\/](Février)){1}$";break
		case 'Mmm/jj':	
			rep = "^(" + Moi31 + "[\/]" + jour31 + "|" + Moi30 + "[\/]" + jour30 + "|(Février)[\/]" + jour29 + "){1}$";break
		case 'jj Mmm':	
			rep = "^(" + jour31 + "[ ]" + Moi31 + "|" + jour30 + "[ ]" + Moi30 + "|" + jour29 + "[ ](Février)){1}$";break
		case 'Mmm jj':	
			rep = "^(" + Moi31 + "[ ]" + jour31 + "|" + Moi30 + "[ ]" + jour30 + "|(Février)[ ]" + jour29 + "){1}$";break
		case 'jj-Mmm':	
			rep = "^(" + jour31 + "[-]" + Moi31 + "|" + jour30 + "[-]" + Moi30 + "|" + jour29 + "[-](Février)){1}$";break
		case 'Mmm-jj':	
			rep = "^(" + Moi31 + "[-]" + jour31 + "|" + Moi30 + "[-]" + jour30 + "|(Février)[-]" + jour29 + "){1}$";break
		case 'jjMmm':	
			rep = "^(" + jour31 + Moi31 + "|" + jour30 + Moi30 + "|" + jour29 + "(Février)){1}$";break
		case 'Mmmjj':	
			rep = "^(" + Moi31 + jour31 + "|" + Moi30 + jour30 + "|(Février)" + jour29 + "){1}$";break
		case 'jj/MMM/aaaa':	
			rep = "^(" + jour31 + "[\/]" + MOI31 + "|" + jour30 + "[\/]" + MOI30 + "|" + jour29 + "[\/](FEVRIER)){1}[\/][\\d]{4}$";break
		case 'MMM/jj/aaaa':	
			rep = "^(" + MOI31 + "[\/]" + jour31 + "|" + MOI30 + "[\/]" + jour30 + "|(FEVRIER)[\/]" + jour29 + "){1}[\/][\\d]{4}$";break
		case 'aaaa/MMM/jj':	
			rep = "^[\\d]{4}[\/](" + MOI31 + "[\/]" + jour31 + "|" + MOI30 + "[\/]" + jour30 + "|(FEVRIER)[\/]" + jour29 + "){1}$";break
		case 'jj MMM aaaa':	
			rep = "^(" + jour31 + "[ ]" + MOI31 + "|" + jour30 + "[ ]" + MOI30 + "|" + jour29 + "[ ](FEVRIER)){1}[ ][\\d]{4}$";break
		case 'MMM jj aaaa':	
			rep = "^(" + MOI31 + "[ ]" + jour31 + "|" + MOI30 + "[ ]" + jour30 + "|(FEVRIER)[ ]" + jour29 + "){1}[ ][\\d]{4}$";break
		case 'aaaa MMM jj':	
			rep = "^[\\d]{4}[ ](" + MOI31 + "[ ]" + jour31 + "|" + MOI30 + "[ ]" + jour30 + "|(FEVRIER)[ ]" + jour29 + "){1}$";break
		case 'jj-MMM-aaaa':	
			rep = "^(" + jour31 + "[-]" + MOI31 + "|" + jour30 + "[-]" + MOI30 + "|" + jour29 + "[-](FEVRIER)){1}[-][\\d]{4}$";break
		case 'MMM-jj-aaaa':	
			rep = "^(" + MOI31 + "[-]" + jour31 + "|" + MOI30 + "[-]" + jour30 + "|(FEVRIER)[-]" + jour29 + "){1}[-][\\d]{4}$";break
		case 'aaaa-MMM-jj':	
			rep = "^[\\d]{4}[-](" + MOI31 + "[-]" + jour31 + "|" + MOI30 + "[-]" + jour30 + "|(FEVRIER)[-]" + jour29 + "){1}$";break
		case 'jjMMMaaaa':	
			rep = "^(" + jour31 + MOI31 + "|" + jour30 + MOI30 + "|" + jour29 + "(FEVRIER)){1}[\\d]{4}$";break
		case 'MMMjjaaaa':	
			rep = "^(" + MOI31 + jour31 + "|" + MOI30 + jour30 + "|(FEVRIER)" + jour29 + "){1}[\\d]{4}$";break
		case 'aaaaMMMjj':	
			rep = "^[\\d]{4}(" + MOI31 + jour31 + "|" + MOI30 + jour30 + "|(FEVRIER)" + jour29 + "){1}$";break
		case 'jj/MMM/aa':	
			rep = "^(" + jour31 + "[\/]" + MOI31 + "|" + jour30 + "[\/]" + MOI30 + "|" + jour29 + "[\/](FEVRIER)){1}[\/][\\d]{2}$";break
		case 'MMM/jj/aa':	
			rep = "^(" + MOI31 + "[\/]" + jour31 + "|" + MOI30 + "[\/]" + jour30 + "|(FEVRIER)[\/]" + jour29 + "){1}[\/][\\d]{2}$";break
		case 'aa/MMM/jj':	
			rep = "^[\\d]{2}[\/](" + MOI31 + "[\/]" + jour31 + "|" + MOI30 + "[\/]" + jour30 + "|(FEVRIER)[\/]" + jour29 + "){1}$";break
		case 'jj MMM aa':	
			rep = "^(" + jour31 + "[ ]" + MOI31 + "|" + jour30 + "[ ]" + MOI30 + "|" + jour29 + "[ ](FEVRIER)){1}[ ][\\d]{2}$";break
		case 'MMM jj aa':	
			rep = "^(" + MOI31 + "[ ]" + jour31 + "|" + MOI30 + "[ ]" + jour30 + "|(FEVRIER)[ ]" + jour29 + "){1}[ ][\\d]{2}$";break
		case 'aa MMM jj':	
			rep = "^[\\d]{2}[ ](" + MOI31 + "[ ]" + jour31 + "|" + MOI30 + "[ ]" + jour30 + "|(FEVRIER)[ ]" + jour29 + "){1}$";break
		case 'jj-MMM-aa':	
			rep = "^(" + jour31 + "[-]" + MOI31 + "|" + jour30 + "[-]" + MOI30 + "|" + jour29 + "[-](FEVRIER)){1}[-][\\d]{2}$";break
		case 'MMM-jj-aa':	
			rep = "^(" + MOI31 + "[-]" + jour31 + "|" + MOI30 + "[-]" + jour30 + "|(FEVRIER)[-]" + jour29 + "){1}[-][\\d]{2}$";break
		case 'aa-MMM-jj':	
			rep = "^[\\d]{2}[-](" + MOI31 + "[-]" + jour31 + "|" + MOI30 + "[-]" + jour30 + "|(FEVRIER)[-]" + jour29 + "){1}$";break
		case 'jjMMMaa':	
			rep = "^(" + jour31 + MOI31 + "|" + jour30 + MOI30 + "|" + jour29 + "(FEVRIER)){1}[\\d]{2}$";break
		case 'MMMjjaa':	
			rep = "^(" + MOI31 + jour31 + "|" + MOI30 + jour30 + "|(FEVRIER)" + jour29 + "){1}[\\d]{2}$";break
		case 'aaMMMjj':	
			rep = "^[\\d]{2}(" + MOI31 + jour31 + "|" + MOI30 + jour30 + "|(FEVRIER)" + jour29 + "){1}$";break
		case 'jj/MMM':	
			rep = "^(" + jour31 + "[\/]" + MOI31 + "|" + jour30 + "[\/]" + MOI30 + "|" + jour29 + "[\/](FEVRIER)){1}$";break
		case 'MMM/jj':	
			rep = "^(" + MOI31 + "[\/]" + jour31 + "|" + MOI30 + "[\/]" + jour30 + "|(FEVRIER)[\/]" + jour29 + "){1}$";break
		case 'jj MMM':	
			rep = "^(" + jour31 + "[ ]" + MOI31 + "|" + jour30 + "[ ]" + MOI30 + "|" + jour29 + "[ ](FEVRIER)){1}$";break
		case 'MMM jj':	
			rep = "^(" + MOI31 + "[ ]" + jour31 + "|" + MOI30 + "[ ]" + jour30 + "|(FEVRIER)[ ]" + jour29 + "){1}$";break
		case 'jj-MMM':	
			rep = "^(" + jour31 + "[-]" + MOI31 + "|" + jour30 + "[-]" + MOI30 + "|" + jour29 + "[-](FEVRIER)){1}$";break
		case 'MMM-jj':	
			rep = "^(" + MOI31 + "[-]" + jour31 + "|" + MOI30 + "[-]" + jour30 + "|(FEVRIER)[-]" + jour29 + "){1}$";break
		case 'jjMMM':	
			rep = "^(" + jour31 + MOI31 + "|" + jour30 + MOI30 + "|" + jour29 + "(FEVRIER)){1}$";break
		case 'MMMjj':	
			rep = "^(" + MOI31 + jour31 + "|" + MOI30 + jour30 + "|(FEVRIER)" + jour29 + "){1}$";break
		case 'mois':	
			rep = "^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre){1}$";break;
		case 'Mois':	
			rep = "^(Janvier|Février|Mars|Avril|Mai|Juin|Juillet|Août|Septembre|Octobre|Novembre|Décembre){1}$";break;
		case 'MOIS':	
			rep = "^(JANVIER|FEVRIER|MARS|AVRIL|MAI|JUIN|JUILLET|AOUT|SEPTEMBRE|OCTOBRE|NOVEMBRE|DECEMBRE){1}$";break;
		case 'site':
			rep = "http://www.^[\\w.-]";break;
	}
	if (rep == "") rep = type;
	return rep;
}

function TError(formulaire,champ,msg) {
	alert(msg);
	champ.select();
	champ.focus();
	return false;
}

   var avaibleCharList='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-.@_';
   var keyNoSpam='kjgjgykf';
   function f_decode_all_email(key,styleSheetRestriction)
   {
   		var tabs=document.getElementsByTagName('a');  //on récupère tous les liens de la page
		var i;
		for(i=0 ; i<tabs.length ; i++)
		{
			if(tabs[i].href)  // on filtre les ancres
			{
				if(tabs[i].href.toLowerCase().indexOf('mailto')==0)   //filtrage des liens de type url, etc...
				{
					if(styleSheetRestriction==null || (styleSheetRestriction!=null && tabs[i].className==styleSheetRestriction))
					//si styleSheetRestriction a été prcisé on filtre les liens emails en fonction de leur class CSS,
					//permet de ne pas appliquer le décodage sur tous les liens
					{
						//on decrypte l'email
						if (tabs[i].className!="pas_touche"){
							var str=nospam_decrypte(tabs[i].href.replace('mailto:',''),key);  //email decrypte
							tabs[i].href='mailto:'+str; //on met à jour le lien href
							tabs[i].innerHTML=str;		//on met ç jour ce qui est affiché
						}
					}
				}
			}
		}
		return;
   }

Array.prototype.deleteRang = function (rang) {
	var l = this.length;
	for (i = rang;i < l-1;i++) 
		this[i] = this[i+1];
	this.pop();
	return true;
}

Array.prototype.push_isnot = function (elem) {
	var i = 0,rep = -1;
	while (this[i] && rep < 0) {
		if (this[i] === elem) rep = i;
		i++;
	}
	if (rep == -1) {
		rep = i;
		this.push(elem);
	}	
	return rep;
}

String.prototype.is_style = function () {
	var regle = /^([a-zA-Z-]{3,}:[a-zA-Z0-9 -=,:.#%()\/']+;)+$/;
	return regle.test(this);
}

String.prototype.is_class = function () {
	var regle = /^[a-zA-Z_]+$/;
	return regle.test(this);
}

String.prototype.RLtrim = function () {
	return this.replace(/(^\s*)|(\s*$)/g,"");
}


   function nospam_decrypte(txt,key)
   {
   		var resu='';
		var i;
		for(i=0 ; i<txt.length ; i++) //decodage caracteres après caractères
		{	//selon l'Algorithme de cryptage de Blaise de Vigénère.
			//http://www.chez.com/algor/vigenere.htm
			var ch=txt.charAt(i);
			var index=avaibleCharList.indexOf(ch);
			var chK=key.charAt(i%key.length);
			var indexK=avaibleCharList.indexOf(chK);
			var jj=(index-indexK)%avaibleCharList.length;
			if(jj<0) { jj+=avaibleCharList.length; }
			var chResu=avaibleCharList.charAt(jj);
			resu+=''+chResu;
		}
		return resu; 
   }
   
  function f_init()
  {
    f_decode_all_email(keyNoSpam);
	return;
  }

var NomBoutton="";
var NomTextarea="";
var TexteRestant="";
var TexteApres2="";
 
function Textarea(nom,col,ligne,mini,NomDuBoutton,classe,TexteRestant2,TexteApres) {
	if (TexteRestant2=="") {
		TexteRestant2="Nombre de caractéres restant : ";
	}
	document.write('<br /><span id="compte" class="Style1">'+TexteRestant2+mini+'</span><br />');
	document.write('<br /><textarea name="'+nom+'" id="'+nom+'" cols="'+col+'" rows="'+ligne+'" onkeyup="javascript:actualise()" class="'+classe+'"></textarea><br />');
	document.write('<input type="hidden" id="mini" value="'+mini+'">');
	
	NomBoutton=NomDuBoutton;
	NomTextarea=nom;
	TexteRestant=TexteRestant2;
	TexteApres2=TexteApres;
}

function actualise () {
	longeur=document.getElementById(NomTextarea).value.length;
	mini=document.getElementById("mini").value;
	compteur=mini-longeur;
	if (compteur>0) {
		document.getElementById("compte").innerHTML=TexteRestant+compteur;
		document.getElementById(NomBoutton).disabled=true; 
	} else {										   
		document.getElementById("compte").innerHTML=TexteApres2;
		document.getElementById(NomBoutton).disabled=false; 
	}
}
