/***************************************************************
****************************************************************
*				CLASS DE VERIFICATION 		     *
*                                                    DES SAISIES                     *
****************************************************************
*			    Développée par  ERIC		    	             *
****************************************************************
*				Le 05/02/2008 Version 1.0	             *
****************************************************************
****************************************************************/
//todo (piste d'amélioration)
//->Choisir format date
//FONCTION QUI RENVOIE UN OBJET
function Trouve_Objet(NomObj){
	return document.getElementById(NomObj);
}
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------CLASS VERIFICATION DES SAISIES---------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
var VerificationSaisie = function(Formulaire){
	var MonFormulaire; //FORMULAIRE A VERIFIER
	var ListeChamps=new Array();
	var Lerreur;
	var Affichage_Erreur;
	
	//MESSAGE D'ERREUR
	var Message_Champ_Obligatoire="Le Champ %i est obligatoire.";
	var Message_Champ_Date="Le Champ %i est une date et doit \u00eatre au format dd/mm/yyyy.";
	var Message_Champ_Compose="Le Champ %i  doit \u00eatre compos\u00e1 uniquement de : %s.";
	var Message_Champ_Email="Le Champ %i doit \u00eatre une adresse email valide.";
	var Message_Caract_Max_pluriel="Le Champ %i ne doit pas poss\u00e1der plus de %s caract\u00e0res.";
	var Message_Caract_Max_singulier="Le Champ %i ne doit pas poss\u00e1der plus de %s caract\u00e0re.";
	var Message_Caract_Min_pluriel="Le Champ %i doit poss\u00e1der au moins %s caract\u00e0res.";
	var Message_Caract_Min_singulier="Le Champ %i doit poss\u00e1derau moins %s caract\u00e0re.";
	var Message_Erreur_Inconnu="Erreur inconnu, contacter le d\u00e1veloppeur du site!";
	
	
	NomFormulaire=Formulaire;
	
	
	//FONCTION DAFFICHAGE DES ERREURS
	Affichage_Erreur=function Affiche_Erreur(UneErreur){
		var Message;
		switch(UneErreur.Obtenir_Type()){
			case 1:
				Message=Remplacer(Message_Champ_Obligatoire,"%i",UneErreur.Obtenir_Libelle());
				break;
			case 2:
				Message=Remplacer(Message_Champ_Date,"%i",UneErreur.Obtenir_Libelle());				
				break;
			case 3:
				Message=Remplacer(Message_Champ_Compose,"%i",UneErreur.Obtenir_Libelle());
				Message=Remplacer(Message,"%s",UneErreur.Obtenir_Information('CaracteresAutorises'));
				break;
			case 4:
				Message=Remplacer(Message_Champ_Email,"%i",UneErreur.Obtenir_Libelle());
				break;
			case 5:
				var nb=UneErreur.Obtenir_Information('TailleLimite');
				if(nb>1){
					Message=Remplacer(Message_Caract_Max_pluriel,"%i",UneErreur.Obtenir_Libelle());			
				}else{
					Message=Remplacer(Message_Caract_Max_singulier,"%i",UneErreur.Obtenir_Libelle());						
				}
				Message=Remplacer(Message,"%s",nb);	
				break;
			case 6:
				var nb=UneErreur.Obtenir_Information('TailleLimite');
				if(nb>1){
					Message=Remplacer(Message_Caract_Min_pluriel,"%i",UneErreur.Obtenir_Libelle());			
				}else{
					Message=Remplacer(Message_Caract_Min_singulier,"%i",UneErreur.Obtenir_Libelle());						
				}
				Message=Remplacer(Message,"%s",nb);	
				break;
			default:			
				Message=Remplacer(Message_Erreur_Inconnu,"%i",UneErreur.Obtenir_Libelle());
				break;
		}
		alert(Message);
	};
	
	//--------------------------------------------REDEFINIS L'AFFICHAGE DES ERREURS-----------------------------------------------
	this.Definir_Affiche_Erreur=function Definir_Affiche_Erreur(fonction){
		Affichage_Erreur=fonction;
	};
	//----------------------------ASSECEUR MESSAGES D'ERREUR DIVERSES----------------------------------------
		//CHAMP OBLIGATOIRE
		this.Definir_Message_Erreur_Champ_Obligatoire=function Definir_Message_Erreur_Champ_Obligatoire(Message,Proteger){
			if(Proteger){
				Message_Champ_Obligatoire=HTML_to_Texte(Message);
			}else{
				Message_Champ_Obligatoire=Message;
			}
		};
		
		//CHAMP DATE
		this.Definir_Message_Erreur_Champ_Date=function Definir_Message_Erreur_Champ_Date(Message,Proteger){
			if(Proteger){
				Message_Champ_Date=HTML_to_Texte(Message);
			}else{
				Message_Champ_Date=Message;
			}
		};
		
		//CHAMP COMPOSE
		this.Definir_Message_Erreur_Champ_Compose=function Definir_Message_Erreur_Champ_Compose(Message,Proteger){
			if(Proteger){
				Message_Champ_Compose=HTML_to_Texte(Message);
			}else{
				Message_Champ_Compose=Message;
			}
		};
		
		//CHAMP EMAIL
		this.Definir_Message_Erreur_Champ_Email=function Definir_Message_Erreur_Champ_Email(Message,Proteger){
			if(Proteger){
				Message_Champ_Email=HTML_to_Texte(Message);
			}else{
				Message_Champ_Email=Message;
			}
		};
		//CHAMP LIMITE EN CARACTERES(pluriel)--Max--
		this.Definir_Message_Erreur_Champ_Max_pluriel=function Definir_Message_Erreur_Champ_Max_pluriel(Message,Proteger){
			if(Proteger){
				Message_Caract_Max_pluriel=HTML_to_Texte(Message);
			}else{
				Message_Caract_Max_pluriel=Message;
			}
		};
		//CHAMP LIMITE EN CARACTERES(singulier)--Max--
		this.Definir_Message_Erreur_Champ_Max_singulier=function Definir_Message_Erreur_Champ_Max_singulier(Message,Proteger){
			if(Proteger){
				Message_Caract_Max_singulier=HTML_to_Texte(Message);
			}else{
				Message_Caract_Max_singulier=Message;
			}
		};
		//CHAMP LIMITE EN CARACTERES(pluriel)--Min--
		this.Definir_Message_Erreur_Champ_Min_pluriel=function Definir_Message_Erreur_Champ_Min_pluriel(Message,Proteger){
			if(Proteger){
				Message_Caract_Min_pluriel=HTML_to_Texte(Message);
			}else{
				Message_Caract_Min_pluriel=Message;
			}
		};
		//CHAMP LIMITE EN CARACTERES(singulier)--Min--
		this.Definir_Message_Erreur_Champ_Min_singulier=function Definir_Message_Erreur_Champ_Min_singulier(Message,Proteger){
			if(Proteger){
				Message_Caract_Min_singulier=HTML_to_Texte(Message);
			}else{
				Message_Caract_Min_singulier=Message;
			}
		};
		
		//Erreur Inconnu
		this.Definir_Message_Erreur_Inconnu=function Definir_Message_Erreur_Inconnu(Message,Proteger){
			if(Proteger){
				Message_Erreur_Inconnu=HTML_to_Texte(Message);
			}else{
				Message_Erreur_Inconnu=Message;
			}
		};
	//---------------------------------------------CONFIGURE LE FORMULAIRE DE MANIERE A VERIFIER LES SAISIES-----------------------------------------------
	this.ConfigurerFormulaire=function ConfigurerFormulaire(){			
		MonFormulaire=document.getElementById(NomFormulaire);
		//METHODE DE VERIFICATION DES SAISIES
		MonFormulaire.onsubmit=function VerifierSaisie(){			
			var resultat=true;
			//on vérifie les champs
			for (var cle in ListeChamps){
			   var valeur = ListeChamps[cle];			  
			   var res=valeur.Verifier_Validite_Champ();
	   
			   if(!res){
					resultat=res;
					Lerreur=valeur.Obtenir_Erreur();
					break;
			   }
			}
			
			
			//on affiche l'erreur
			if(!resultat){				
				Affichage_Erreur(Lerreur);
			}
			return resultat;
		};
	
	};
	
	//---------------------------------------------AJOUTE UN CHAMP DE SAISIE OBLIGATOIRE---------------------------------------------
	this.Definir_Champ_Saisie=function Definir_Champ_Saisie(NomChamp,LibChamp,Obligatoire){
		//uniformisation du contenu de obligatoire
		if (Obligatoire!=1){
			Obligatoire=0;
		}
		var LeChamp;
		LeChamp= new ChampSaisie(NomChamp,LibChamp,Obligatoire);
		ListeChamps[NomChamp]=LeChamp;		
	};
	//---------------------------------------------CONVERTIS DES CARACTERE SPECIAUX HTML en Texte---------------------------------------------
	this.Convertir_Caracteres_HTML_Texte=function Convertir_Caracteres_HTML_Texte(NomChamp){		
		if (ListeChamps[NomChamp]!=''){
			ListeChamps[NomChamp].Convertir_Caracteres_HTML_Texte();
		}
	};
	//---------------------------------------------DEFINIR CHAMP COMME UNE DATE---------------------------------------------
	this.Definir_Champ_Comme_Une_Date=function Definir_Champ_Comme_Une_Date(NomChamp){		
		if (ListeChamps[NomChamp]!=''){
			ListeChamps[NomChamp].Definir_Comme_Date();
		}
	};
	//---------------------------------------------DEFINIR CHAMP COMME UN EMAIL---------------------------------------------
	this.Definir_Champ_Comme_Un_Email=function Definir_Champ_Comme_Un_Email(NomChamp){		
		if (ListeChamps[NomChamp]!=''){
			ListeChamps[NomChamp].Definir_Comme_Email();
		}
	};
	//---------------------------------------------DEFINIR TAILLE MAX CHAMP ---------------------------------------------
	this.Definir_Taille_Max_Champ=function Definir_Taille_Max_Champ(NomChamp,Taille){		
		if (ListeChamps[NomChamp]!=''){
			ListeChamps[NomChamp].Definir_Taille_Max(Taille);
		}
	};
	//---------------------------------------------DEFINIR TAILLE MIN CHAMP ---------------------------------------------
	this.Definir_Taille_Min_Champ=function Definir_Taille_Min_Champ(NomChamp,Taille){		
		if (ListeChamps[NomChamp]!=''){
			ListeChamps[NomChamp].Definir_Taille_Min(Taille);
		}
	};
	//---------------------------------------------DEFINIR DES CARACTERES AUTORISE POUR UN CHAMP---------------------------------------------
	this.Definir_Caracteres_Autorises_Champ=function Definir_Caracteres_Autorises_Champ(NomChamp,liste){		
		if (ListeChamps[NomChamp]!=''){			
			ListeChamps[NomChamp].Definir_Caracteres_autorises(liste);
		}
	};
	//---------------------------------------------FONCTION REMPLACER EN JAVASCRIPT----------------------------------------
	function Remplacer(Phrase,caractere,nouveau){
		while (Phrase.indexOf(caractere)!=-1){
			Phrase=Phrase.replace(caractere,nouveau);
		}
		return Phrase;
	}
	//---------------------------------------------CONVERTI CARACTERE HTML &xxx EN CARACTERE TEXTE ----------------------------------------
	function HTML_to_Texte(Phrase){
		Phrase=Remplacer(Phrase,"&nbsp;","\u00a0");
		Phrase=Remplacer(Phrase,"&iexcl;","\u00a1");
		Phrase=Remplacer(Phrase,"&cent;","\u00a2");
		Phrase=Remplacer(Phrase,"&pound;","\u00a3");
		Phrase=Remplacer(Phrase,"&curren;","\u00a4");
		Phrase=Remplacer(Phrase,"&yen;","\u00a5");
		Phrase=Remplacer(Phrase,"&brvbar;","\u00a6");
		Phrase=Remplacer(Phrase,"&sect;","\u00a7");
		Phrase=Remplacer(Phrase,"&uml;","\u00a8");
		Phrase=Remplacer(Phrase,"&copy;","\u00a9");
		Phrase=Remplacer(Phrase,"&ordf;","\u00aa");
		Phrase=Remplacer(Phrase,"&laquo;","\u00ab");
		Phrase=Remplacer(Phrase,"&not;","\u00ac");
		Phrase=Remplacer(Phrase,"&shy;","\u00ad");
		Phrase=Remplacer(Phrase,"&reg;","\u00ae");
		Phrase=Remplacer(Phrase,"&macr;","\u00af");
		Phrase=Remplacer(Phrase,"&deg;","\u00b0");
		Phrase=Remplacer(Phrase,"&plusmn;","\u00b1");
		Phrase=Remplacer(Phrase,"&sup2;","\u00b2");
		Phrase=Remplacer(Phrase,"&sup3;","\u00b3");
		Phrase=Remplacer(Phrase,"&acute;","\u00b4");
		Phrase=Remplacer(Phrase,"&micro;","\u00b5");
		Phrase=Remplacer(Phrase,"&para;","\u00b6");
		Phrase=Remplacer(Phrase,"&middot;","\u00b7");
		Phrase=Remplacer(Phrase,"&cedil;","\u00b8");
		Phrase=Remplacer(Phrase,"&sup1;","\u00b9");
		Phrase=Remplacer(Phrase,"&ordm;","\u00ba");
		Phrase=Remplacer(Phrase,"&raquo;","\u00bb");
		Phrase=Remplacer(Phrase,"&frac14;","\u00bc");
		Phrase=Remplacer(Phrase,"&frac12;","\u00bd");
		Phrase=Remplacer(Phrase,"&frac34;","\u00be");
		Phrase=Remplacer(Phrase,"&iquest;","\u00bf");
		Phrase=Remplacer(Phrase,"&Agrave;","\u00c0");
		Phrase=Remplacer(Phrase,"&Aacute;","\u00c1");
		Phrase=Remplacer(Phrase,"&Acirc;","\u00c2");
		Phrase=Remplacer(Phrase,"&Atilde;","\u00c3");
		Phrase=Remplacer(Phrase,"&Auml;","\u00c4");
		Phrase=Remplacer(Phrase,"&Aring;","\u00c5");
		Phrase=Remplacer(Phrase,"&AElig;","\u00c6");
		Phrase=Remplacer(Phrase,"&Ccedil;","\u00c7");
		Phrase=Remplacer(Phrase,"&Egrave;","\u00c8");
		Phrase=Remplacer(Phrase,"&Eacute;","\u00c9");
		Phrase=Remplacer(Phrase,"&Ecirc;","\u00ca");
		Phrase=Remplacer(Phrase,"&Euml;","\u00cb");
		Phrase=Remplacer(Phrase,"&Igrave;","\u00cc");
		Phrase=Remplacer(Phrase,"&Iacute;","\u00cd");
		Phrase=Remplacer(Phrase,"&Icirc;","\u00ce");
		Phrase=Remplacer(Phrase,"&Iuml;","\u00cf");
		Phrase=Remplacer(Phrase,"&ETH;","\u00d0");
		Phrase=Remplacer(Phrase,"&Ntilde;","\u00d1");
		Phrase=Remplacer(Phrase,"&Ograve;","\u00d2");
		Phrase=Remplacer(Phrase,"&Oacute;","\u00d3");
		Phrase=Remplacer(Phrase,"&Ocirc;","\u00d4");
		Phrase=Remplacer(Phrase,"&Otilde;","\u00d5");
		Phrase=Remplacer(Phrase,"&Ouml;","\u00d6");
		Phrase=Remplacer(Phrase,"&times;","\u00d7");
		Phrase=Remplacer(Phrase,"&Oslash;","\u00d8");
		Phrase=Remplacer(Phrase,"&Ugrave;","\u00d9");
		Phrase=Remplacer(Phrase,"&Uacute;","\u00da");
		Phrase=Remplacer(Phrase,"&Ucirc;","\u00db");
		Phrase=Remplacer(Phrase,"&Uuml;","\u00dc");
		Phrase=Remplacer(Phrase,"&Yacute;","\u00dd");
		Phrase=Remplacer(Phrase,"&THORN;","\u00de");
		Phrase=Remplacer(Phrase,"&szlig;","\u00df");
		Phrase=Remplacer(Phrase,"&agrave;","\u00e0");
		Phrase=Remplacer(Phrase,"&aacute;","\u00e1");
		Phrase=Remplacer(Phrase,"&acirc;","\u00e2");
		Phrase=Remplacer(Phrase,"&atilde;","\u00e3");
		Phrase=Remplacer(Phrase,"&auml;","\u00e4");
		Phrase=Remplacer(Phrase,"&aring;","\u00e5");
		Phrase=Remplacer(Phrase,"&aelig;","\u00e6");
		Phrase=Remplacer(Phrase,"&ccedil;","\u00e7");
		Phrase=Remplacer(Phrase,"&egrave;","\u00e8");
		Phrase=Remplacer(Phrase,"&eacute;","\u00e9");
		Phrase=Remplacer(Phrase,"&ecirc;","\u00ea");
		Phrase=Remplacer(Phrase,"&euml;","\u00eb");
		Phrase=Remplacer(Phrase,"&igrave;","\u00ec");
		Phrase=Remplacer(Phrase,"&iacute;","\u00ed");
		Phrase=Remplacer(Phrase,"&icirc;","\u00ee");
		Phrase=Remplacer(Phrase,"&iuml;","\u00ef");
		Phrase=Remplacer(Phrase,"&eth;","\u00f0");
		Phrase=Remplacer(Phrase,"&ntilde;","\u00f1");
		Phrase=Remplacer(Phrase,"&ograve;","\u00f2");
		Phrase=Remplacer(Phrase,"&oacute;","\u00f3");
		Phrase=Remplacer(Phrase,"&ocirc;","\u00f4");
		Phrase=Remplacer(Phrase,"&otilde;","\u00f5");
		Phrase=Remplacer(Phrase,"&ouml;","\u00f6");
		Phrase=Remplacer(Phrase,"&divide;","\u00f7");
		Phrase=Remplacer(Phrase,"&oslash;","\u00f8");
		Phrase=Remplacer(Phrase,"&ugrave;","\u00f9");
		Phrase=Remplacer(Phrase,"&uacute;","\u00fa");
		Phrase=Remplacer(Phrase,"&ucirc;","\u00fb");
		Phrase=Remplacer(Phrase,"&uuml;","\u00fc");
		Phrase=Remplacer(Phrase,"&yacute;","\u00fd");
		Phrase=Remplacer(Phrase,"&thorn;","\u00fe");
		Phrase=Remplacer(Phrase,"&yuml;","\u00ff");
		Phrase=Remplacer(Phrase,"&quot;","\u0022");
		Phrase=Remplacer(Phrase,"&lt;","\u003c");
		Phrase=Remplacer(Phrase,"&gt;","\u003e");
		Phrase=Remplacer(Phrase,"&amp;","\u0026");

		
		return Phrase;
	}
	//ON AJOUT LA CONFIGURATION DU FORMULAIRE DANS LE ONLOAD DE BODY
	if(typeof window.addEventListener != 'undefined') //.. gecko, safari, konqueror and standard 
		window.addEventListener('load', this.ConfigurerFormulaire, false);

	else if(typeof document.addEventListener != 'undefined') //.. opera 7 
		document.addEventListener('load', this.ConfigurerFormulaire, false);

	else if(typeof window.attachEvent != 'undefined') //.. win/ie 
		window.attachEvent('onload',this.ConfigurerFormulaire);
	
}




//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------CLASS CHAMP DE SAISIES---------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
var ChampSaisie = function(Nom,Libelle,obli){
	var Identifiant;
	var NomAffichable;
	var EstObligatoire;
	var EstUneDate=0;
	var EstUnEmail=0;
	var PossedeTailleLimite=0;
	var PossedeTailleMinimun=0;
	var TailleLimite=0;
	var TailleLimiteMin=0;
	var CaractereAutorise='';
	var UneErreur=new Erreur(0,'');
	

	//ON INITIALISE LES VARIABLES
	Identifiant=Nom;
	NomAffichable=Libelle;
	EstObligatoire=obli;
	
	//---------------------------------------------DEFINIR LE CHAMP COMME UNE DATE---------------------------------------------
	this.Definir_Comme_Date= function Definir_Comme_Date(){
		EstUneDate='1';
	};
	this.Definir_Comme_Email= function Definir_Comme_Email(){
		EstUnEmail='1';
	};
	this.Definir_Caracteres_autorises= function Definir_Caracteres_autorises(liste){		
		CaractereAutorise=liste;
	};
	this.Definir_Taille_Max= function Definir_Taille_Max_Champ(Taille){		
		PossedeTailleLimite=1;
		TailleLimite=Taille;
	};
	this.Definir_Taille_Min= function Definir_Taille_Min_Champ(Taille){		
		PossedeTailleMinimun=1;
		TailleLimiteMin=Taille;
	};
	this.Convertir_Caracteres_HTML_Texte=function Convertir_Caracteres_HTML_Texte(){		
		NomAffichable=HTML_to_Texte(NomAffichable);
	};
	
	//---------------------------------------------VERIFICATION DU CHAMP---------------------------------------------
	this.Verifier_Validite_Champ=function Verifier_Validite_Champ(){
		var resultat;
		resultat=true;
		champ=Trouve_Objet(Identifiant);
		
		//champ rempli ou non
		if(EstObligatoire=='1'){					
			if (champ.value==''){
				resultat=false;
				UneErreur=new Erreur(1,NomAffichable);
			}			
		}		
		//champ date ou non
		if(EstUneDate=='1' && resultat){				
			if (!CheckIsDate(champ.value)){
				resultat=false;
				UneErreur=new Erreur(2,NomAffichable);
			}			
		}
		//caracteres autorisés
		if(CaractereAutorise!='' && resultat){
			if (!IsMadeOf(champ.value,CaractereAutorise)){
				resultat=false;
				UneErreur=new Erreur(3,NomAffichable);
				UneErreur.Ajoute_Information('CaracteresAutorises',CaractereAutorise);
			}
		}
		
		//caracteres autorisés
		if(EstUnEmail=='1' && resultat){			
			if (!CheckIsEmail(champ.value)){				
				resultat=false;
				UneErreur=new Erreur(4,NomAffichable);				
			}
		}
		//TAILLE LIMITE
		if(PossedeTailleLimite=='1' && resultat){			
			if (champ.value.length>TailleLimite){				
				resultat=false;
				UneErreur=new Erreur(5,NomAffichable);		
				UneErreur.Ajoute_Information('TailleLimite',TailleLimite);				
			}
		}
		//TAILLE MINIMUN
		if(PossedeTailleMinimun=='1' && resultat){			
			if (champ.value.length<TailleLimiteMin){				
				resultat=false;
				UneErreur=new Erreur(6,NomAffichable);		
				UneErreur.Ajoute_Information('TailleLimite',TailleLimiteMin);				
			}
		}
		//retour du resultat
		return resultat;
	};
	
	// FONCTION EST COMPOSE DE...
	function IsMadeOf(Phrase,composition){
		var valide=true;
		var t=0;
		while (t<Phrase.length && valide){
			lettre=Phrase.substr(t,1);
			if(composition.indexOf(lettre)==-1){
				valide=false;
			}
			t=t+1
		}
		return valide;
	}
	//FONCTION VERIFIE LES EMAILS
	function CheckIsEmail(Valeur){
		var verif =/^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]{2,}[.][a-zA-Z]{2,4}$/		
		var res;
		if (Valeur!=''){
			if (verif.exec(Valeur) == null){ 					
				res=false;
			}else{					
				res=true;
			}
		}else{
			res=true;
		}
		return res;
	}
	//FONCTION DE VERIFICATION DE LA DATE
	function CheckIsDate(Valeur){
			var val=false;
			var NbMaxJour=new Array();
			//initialisation
			NbMaxJour[1]=31;
			NbMaxJour[2]=28;
			NbMaxJour[3]=31;
			NbMaxJour[4]=30;
			NbMaxJour[5]=31;
			NbMaxJour[6]=30;
			NbMaxJour[7]=31;
			NbMaxJour[8]=31;
			NbMaxJour[9]=30;
			NbMaxJour[10]=31;
			NbMaxJour[11]=30;
			NbMaxJour[12]=31;
			//taille
			if(Valeur.length==0){
				val=true;
			}else{
				if(Valeur.length==10){
					//compose de
					if (IsMadeOf(Valeur,"0123456789//")){
						// verifier /
						if (Valeur.substr(2,1)=="/" && Valeur.substr(5,1)=="/"){
							//jour mois et année que des chiffres
							var jour =  Valeur.substr(0,2);
							var mois =Valeur.substr(3,2);
							var annee=Valeur.substr(6,4);
							if( IsMadeOf(jour,"0123456789") && IsMadeOf(mois,"0123456789") && IsMadeOf(annee,"0123456789")){
								if(jour>0 && jour<32 && mois>0 && mois<13){									
									if((parseInt(annee)%4)==0){
										NbMaxJour[2]=29;
									}
									if(jour<=NbMaxJour[parseInt(mois)]){
										val=true;
									}
								}
							}
						}
					}
				}
			}
			return val;	
	}
	//---------------------------------------------RENVOIE L ERREUR QUI EST APPARU---------------------------------------------
	this.Obtenir_Erreur=function Obtenir_Erreur(){
		return UneErreur;
	};
	//---------------------------------------------FONCTION REMPLACER EN JAVASCRIPT----------------------------------------
	function Remplacer(Phrase,caractere,nouveau){
		while (Phrase.indexOf(caractere)!=-1){
			Phrase=Phrase.replace(caractere,nouveau);
		}
		return Phrase;
	}
	//---------------------------------------------CONVERTI CARACTERE HTML &xxx EN CARACTERE TEXTE ----------------------------------------
	function HTML_to_Texte(Phrase){
		Phrase=Remplacer(Phrase,"&nbsp;","\u00a0");
		Phrase=Remplacer(Phrase,"&iexcl;","\u00a1");
		Phrase=Remplacer(Phrase,"&cent;","\u00a2");
		Phrase=Remplacer(Phrase,"&pound;","\u00a3");
		Phrase=Remplacer(Phrase,"&curren;","\u00a4");
		Phrase=Remplacer(Phrase,"&yen;","\u00a5");
		Phrase=Remplacer(Phrase,"&brvbar;","\u00a6");
		Phrase=Remplacer(Phrase,"&sect;","\u00a7");
		Phrase=Remplacer(Phrase,"&uml;","\u00a8");
		Phrase=Remplacer(Phrase,"&copy;","\u00a9");
		Phrase=Remplacer(Phrase,"&ordf;","\u00aa");
		Phrase=Remplacer(Phrase,"&laquo;","\u00ab");
		Phrase=Remplacer(Phrase,"&not;","\u00ac");
		Phrase=Remplacer(Phrase,"&shy;","\u00ad");
		Phrase=Remplacer(Phrase,"&reg;","\u00ae");
		Phrase=Remplacer(Phrase,"&macr;","\u00af");
		Phrase=Remplacer(Phrase,"&deg;","\u00b0");
		Phrase=Remplacer(Phrase,"&plusmn;","\u00b1");
		Phrase=Remplacer(Phrase,"&sup2;","\u00b2");
		Phrase=Remplacer(Phrase,"&sup3;","\u00b3");
		Phrase=Remplacer(Phrase,"&acute;","\u00b4");
		Phrase=Remplacer(Phrase,"&micro;","\u00b5");
		Phrase=Remplacer(Phrase,"&para;","\u00b6");
		Phrase=Remplacer(Phrase,"&middot;","\u00b7");
		Phrase=Remplacer(Phrase,"&cedil;","\u00b8");
		Phrase=Remplacer(Phrase,"&sup1;","\u00b9");
		Phrase=Remplacer(Phrase,"&ordm;","\u00ba");
		Phrase=Remplacer(Phrase,"&raquo;","\u00bb");
		Phrase=Remplacer(Phrase,"&frac14;","\u00bc");
		Phrase=Remplacer(Phrase,"&frac12;","\u00bd");
		Phrase=Remplacer(Phrase,"&frac34;","\u00be");
		Phrase=Remplacer(Phrase,"&iquest;","\u00bf");
		Phrase=Remplacer(Phrase,"&Agrave;","\u00c0");
		Phrase=Remplacer(Phrase,"&Aacute;","\u00c1");
		Phrase=Remplacer(Phrase,"&Acirc;","\u00c2");
		Phrase=Remplacer(Phrase,"&Atilde;","\u00c3");
		Phrase=Remplacer(Phrase,"&Auml;","\u00c4");
		Phrase=Remplacer(Phrase,"&Aring;","\u00c5");
		Phrase=Remplacer(Phrase,"&AElig;","\u00c6");
		Phrase=Remplacer(Phrase,"&Ccedil;","\u00c7");
		Phrase=Remplacer(Phrase,"&Egrave;","\u00c8");
		Phrase=Remplacer(Phrase,"&Eacute;","\u00c9");
		Phrase=Remplacer(Phrase,"&Ecirc;","\u00ca");
		Phrase=Remplacer(Phrase,"&Euml;","\u00cb");
		Phrase=Remplacer(Phrase,"&Igrave;","\u00cc");
		Phrase=Remplacer(Phrase,"&Iacute;","\u00cd");
		Phrase=Remplacer(Phrase,"&Icirc;","\u00ce");
		Phrase=Remplacer(Phrase,"&Iuml;","\u00cf");
		Phrase=Remplacer(Phrase,"&ETH;","\u00d0");
		Phrase=Remplacer(Phrase,"&Ntilde;","\u00d1");
		Phrase=Remplacer(Phrase,"&Ograve;","\u00d2");
		Phrase=Remplacer(Phrase,"&Oacute;","\u00d3");
		Phrase=Remplacer(Phrase,"&Ocirc;","\u00d4");
		Phrase=Remplacer(Phrase,"&Otilde;","\u00d5");
		Phrase=Remplacer(Phrase,"&Ouml;","\u00d6");
		Phrase=Remplacer(Phrase,"&times;","\u00d7");
		Phrase=Remplacer(Phrase,"&Oslash;","\u00d8");
		Phrase=Remplacer(Phrase,"&Ugrave;","\u00d9");
		Phrase=Remplacer(Phrase,"&Uacute;","\u00da");
		Phrase=Remplacer(Phrase,"&Ucirc;","\u00db");
		Phrase=Remplacer(Phrase,"&Uuml;","\u00dc");
		Phrase=Remplacer(Phrase,"&Yacute;","\u00dd");
		Phrase=Remplacer(Phrase,"&THORN;","\u00de");
		Phrase=Remplacer(Phrase,"&szlig;","\u00df");
		Phrase=Remplacer(Phrase,"&agrave;","\u00e0");
		Phrase=Remplacer(Phrase,"&aacute;","\u00e1");
		Phrase=Remplacer(Phrase,"&acirc;","\u00e2");
		Phrase=Remplacer(Phrase,"&atilde;","\u00e3");
		Phrase=Remplacer(Phrase,"&auml;","\u00e4");
		Phrase=Remplacer(Phrase,"&aring;","\u00e5");
		Phrase=Remplacer(Phrase,"&aelig;","\u00e6");
		Phrase=Remplacer(Phrase,"&ccedil;","\u00e7");
		Phrase=Remplacer(Phrase,"&egrave;","\u00e8");
		Phrase=Remplacer(Phrase,"&eacute;","\u00e9");
		Phrase=Remplacer(Phrase,"&ecirc;","\u00ea");
		Phrase=Remplacer(Phrase,"&euml;","\u00eb");
		Phrase=Remplacer(Phrase,"&igrave;","\u00ec");
		Phrase=Remplacer(Phrase,"&iacute;","\u00ed");
		Phrase=Remplacer(Phrase,"&icirc;","\u00ee");
		Phrase=Remplacer(Phrase,"&iuml;","\u00ef");
		Phrase=Remplacer(Phrase,"&eth;","\u00f0");
		Phrase=Remplacer(Phrase,"&ntilde;","\u00f1");
		Phrase=Remplacer(Phrase,"&ograve;","\u00f2");
		Phrase=Remplacer(Phrase,"&oacute;","\u00f3");
		Phrase=Remplacer(Phrase,"&ocirc;","\u00f4");
		Phrase=Remplacer(Phrase,"&otilde;","\u00f5");
		Phrase=Remplacer(Phrase,"&ouml;","\u00f6");
		Phrase=Remplacer(Phrase,"&divide;","\u00f7");
		Phrase=Remplacer(Phrase,"&oslash;","\u00f8");
		Phrase=Remplacer(Phrase,"&ugrave;","\u00f9");
		Phrase=Remplacer(Phrase,"&uacute;","\u00fa");
		Phrase=Remplacer(Phrase,"&ucirc;","\u00fb");
		Phrase=Remplacer(Phrase,"&uuml;","\u00fc");
		Phrase=Remplacer(Phrase,"&yacute;","\u00fd");
		Phrase=Remplacer(Phrase,"&thorn;","\u00fe");
		Phrase=Remplacer(Phrase,"&yuml;","\u00ff");
		Phrase=Remplacer(Phrase,"&quot;","\u0022");
		Phrase=Remplacer(Phrase,"&lt;","\u003c");
		Phrase=Remplacer(Phrase,"&gt;","\u003e");
		Phrase=Remplacer(Phrase,"&amp;","\u0026");

		
		return Phrase;
	}
}



//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------CLASS ERREUR---------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
var Erreur = function(Type,Libelle){
	var LeType;
	var LeLibelle;
	var Informations=new Array();
	
	LeType=Type;
	LeLibelle=Libelle;
	this.Ajoute_Information=function Ajoute_Information(nom,contenu){
		Informations[nom]=contenu;
	};
	this.Obtenir_Information=function Obtenir_Information(nom){
		return Informations[nom];
	};
	this.Obtenir_Type=function Obtenir_Type(){
		return LeType;
	};
	this.Obtenir_Libelle=function Obtenir_Libelle(){
		return LeLibelle;
	};
}

