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,fct_test){
	var retour="";
	var ret="";
	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].alt) {
			zones = formulaire.elements[no_element].alt.split(";");

			tabTest["nom"] = "Champ("+(no_element+1)+")";
			tabTest["erreur"] = "";
			tabTest["obligatoire"] = false;
      tabTest["test"] = null;

			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];	
		}
	}
  try {
    if (fct_test != undefined && retour == "") retour += eval(fct_test);
  	if (retour == "") formulaire.submit();
	  else return this.Error(formulaire,null,retour);
  }
  catch (e) {  
  	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="";
  var binfsup = false,borne;
  var format_date = "/";
	
		if (test.indexOf("dt!") >= 0) {
			tabtemp = test.split("!");
			tabtemp2 = tabtemp[1].split("?");
      borne = tabtemp2[1];
			reg = this.RegEx(tabtemp2[0]);
      format_date = tabtemp2[0];
		}
		else if (test.indexOf("hr!") >= 0) {
			tabtemp = test.split("!");
			tabtemp2 = tabtemp[1].split("?");
      borne = tabtemp2[1];
			reg = this.RegEx("heure"+tabtemp2[0]);
		}
		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];
      if (tabtemp2[1].indexOf("&") >= 0) {
        binfsup = false;
        borne = tabtemp2[1];
      } 
      else {
        binfsup = true;
  			(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 if (type.indexOf("nbr>") >= 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 (binfsup) {
  				if (!isNaN(binf) && Number(valeur.replace(",",".")) < binf) {retour += erreur + "\r\n";}
  				else if (!isNaN(bsup) && Number(valeur.replace(",",".")) > bsup) {retour += erreur + "\r\n";}
        }  
        else {
          if (!borne.in_born(valeur)) {retour += erreur + "\r\n";}
        }
			}
			else if (test.indexOf("dt!") >= 0) {
        if (borne != null) {
          if (!borne.in_born(valeur.transformeDate(format_date))) {retour += erreur + "\r\n";}
        }  
      }
			else if (test.indexOf("hr!") >= 0) {
        if (borne != null) {
          if (!borne.formatHeure().in_born(valeur.transformeHeure())) {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 'heuresp':
			rep = "^(([0]?[1-9])|([1][\\d])|([2][0-4]))[:](([0]?[1-9])|([1-5][\\d]))[:](([0]?[1-9])|([1-5][\\d]))$";break;
		case 'heurefx':
			rep = "^(([0][1-9])|([1][\\d])|([2][0-4]))[:](([0][1-9])|([1-5][\\d]))[:](([0][1-9])|([1-5][\\d]))$";break;
		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;
	}
	if (rep == "") rep = type;
	return rep;
}

function TError(formulaire,champ,msg) {
	alert(msg);
  if (champ != null) {
  	champ.select();
	  champ.focus();
  }  
	return false;
}


