/*********************************************************************
* Code Javascript conçut par Jonathan Vallée et Raymond Desmeules
********************************************************************** 

*********************************************************************
* Guide d'utilisation
*********************************************************************

Type de donnée validées
*********************************************************************
	-> obligatoire
	-> chaine 
	-> telephone 
	-> email 
	-> pdf 
	-> site 
	-> nombre 
	-> postal
	-> select
	-> image
	-> date
	-> heure
	-> nas
	-> checkbox

Exemple d'utilisation dans un formulaire
*********************************************************************
		<FORM name="valid" action="go.html" method="post" onSubmit="
		
		-> valid = nom du formulaire
		-> NOM = nom de l'objet formulaire
		-> chaine = type de donnée validé
		-> = true ( indique que l'on veut validé ce champs )
		
		valid.NOM.chaine = true;
		valid.PRENOM.chaine = true;
		valid.TEL.nombre = true;
		valid.TEL2.nombre = true;
		valid.TEL3.nombre = true;
		valid.PSEUDO.chaine = true;
		valid.ADRESSE.optionel = true;

		if ( valid.couriel.value != '' )
			valid.COURIEL.email = true;
		return estValide(valid, 'submit' );" >
		
		
		VOIR LE RESTE DE L'EXEMPLE SUR LE RÉSEAU -> P:\Validation\Javascript Exemple\
		
		VOUS POURREZ VOIR AINSI comment utiliser les validations sur l'évènement OnChange et OnSubmit

*/

 //On stock dans un tableau nos obj date
var nomObjDate = ['date_debut','date_fin'];

/*
Début de la fonction de validation
@param On reçoit le nom du formulaire et le type d'action
********************************************************************/
function estValide( f , action, langue, msg_critere_vide) 
{
/*
Initialisation des variables 
*********************************************************************/
		var erreur = ""; //Varriable de stockage des erreurs
		var e; //Variable qui est attribuer a un objet de formulaire
		var cmp = 0; //Compteur qui nous donne le nombre d'erreurs
		var vide ; //Variable booléenne qui sert a determiner l'appelle d'autre fonction
		var msg = ""; //Stock le message à afficher à l'utilisateur 
		var grandeur; //Détermine le cycle de la boucle for
		var nomObj;//Stock le nom de chaque objet de formulaire en majuscule, pour affichage seulement
		var cmpObjDate = 0;
		var champVide = ""; 
		var cmpVide = 0;//Compte le nombre de champs vide
		var message_fr_en = "" //Variable pour composer le message en français ou en anglais

/*
On vérifie de quelle type d'action l'on reçoit
	submit -> valide les erreurs lorque l'on clique sur le bouton submit du formulaire
	onChange -> envoit un message d'erreur lorsque l'utilisateur sort d'un objet formulaire
*********************************************************************/

	grandeur = f.length;//On boucle seulement une fois afin d'avertir l'utilisateur qu'il a mal entré une donnée
	
/*
On vérifie si le nom de la form envoyé existe vraiment
*********************************************************************/	
	var formPresente = formExist(f);	
	
/*
On boucle notre formulaire, on recherche tous les objets de tous le types compris dans notre formulaire.
	P.S -> Dans la ligne "document.forms[0]", si il y a plusieurs form dans une seule page, alors 0 étant la première FORM 
	       et ainsi de suite...
*********************************************************************/		
	for ( var z = 0; z < grandeur && formPresente; z++ ) //On boucle jusqu'à ce que le formulaire n,est plus d'objet
	{ 
			
			//On regarde si le nom de form envoyé correspond à la FORM courante de la page
			//if ( formExist(f) )
		e = f.elements[z]; //l'objet e représente chacun des objets du formulaire
			//else 
			//	e = f; //l'objet e représente chacun des objets du formulaire


/*
Dans le cas ou on a 2 dates à valider, la recherche entre 2 dates
nom des 2 obj input obligatoires soit
date_debut
dat_fin
*********************************************************************/
			if ( f.elements[z].name == nomObjDate[0] || f.elements[z].name == nomObjDate[1] ) 
			{
				//On incrémente notre compteur lorsque l'on a un objet formulaire qui a le meme nom que celui défini dans le tableau nomObjDate
				cmpObjDate++;
				
				if (cmpObjDate >= 2 )
				{
				//On appel notre fonction qui valide deux dates, si le résultat est égal à vrai alors on accumule notre message d'erreur.
					if ( valider2Date( document.forms[f.name][nomObjDate[0]].value, document.forms[f.name][nomObjDate[1]].value) == true ) 
					{
						cmp++;

						if (langue != "" && langue != "fr")
							message_fr_en = " is greater than "; 
						else
							message_fr_en = " est plus grand que le champ ";

						erreur += "\n" + cmp + "- " + nomObjDate[0].toUpperCase() + message_fr_en + nomObjDate[1].toUpperCase() + "!";	
					}
				}
			}
			
			nomObj = e.id; //On met le nom de notre obj formulaire en majuscule
			
			//Permet d'afficher les erreurs dont les champs sont vides
			vide = true;//Réinitialisation de la variable si l'objet n'est pas vide

			//On vérifie de quel type est l'objet afin d'optimiser la fonction. 
			//Donc si l'objet est de type input, textarea, liste déroulante, bouton radio, bouton à coché alors
			//On entre dans le IF
			if ( (e.type=="text") || (e.type=="textarea") || (e.type=="select-one") || (e.type=="radio") 
				  || (e.type=="checkbox") ) 
			{
							
/*
Définition des types de données validées
*********************************************************************



/*	
	-> obligatoire
	*****************************************************************
		On vérifie si l'objet formulaire est vide
	*****************************************************************/
					if ( e.obligatoire == true ) 
					{
						//On vérifie si la chaine est vide
						if ( (estVide(e.value)) || (e.value == null) || (e.value == "" )) {							
							cmpVide++;
							champVide += '\n' + nomObj ;
							
						}
						
						e.obligatoire = false;
					}


/*
	-> chaine
	*****************************************************************
		On vérifie si l'objet formulaire est vide
		On vérifie si l'objet formulaire contient seulement des lettres
		On vérifie si l'objet formulaire contient des caractères spéciaux
	*****************************************************************/
					if ( e.chaine == true ) 
					{					
						//On vérifie si la chaine est vide
						if ( (estVide(e.value)) || (e.value == null) || (e.value == "" ) ) {
							cmpVide++;
							champVide += '\n' + nomObj ;	
						}
						
						//On vérifie si la chaine comporte des valeurs numériques.
						if ( verifierChaineComplete(e.value) == false ) 
						{
							cmp++;

							if (langue != "" && langue != "fr")
								message_fr_en = " field contain numeric(s) character(s)."; 
							else
								message_fr_en = "  contient un ou des caracteres numeriques.";

							erreur += "\n" + cmp + "- " + nomObj + message_fr_en;
							msg += nomObj + message_fr_en;//Message d'avertissement
						}
						
						//On vérifie si la chaine comporte des caractères spéciaux
						if ( !verifierCaractSpecial(e.value) ) 
						{
							cmp++;

							if (langue != "" && langue != "fr")
								message_fr_en = " field contain special character(s)."; 
							else
								message_fr_en = "  contient un ou des caracteres speciaux.";

							erreur += "\n" + cmp + "- " + nomObj + message_fr_en  + "\n(! @#$%^&*()+=-[]\\\';,./{}|\":<>?)";
							msg += nomObj + message_fr_en  + "\n(! @#$%^&*()+=-[]\\\';,./{}|\":<>?)";//Message d'avertissement
						}
						
						e.chaine = false;
					}
/*	
	-> telephone
	*****************************************************************
		On vérifie si l'objet formulaire est vide
		On vérifie si l'objet formulaire contient seulement des nombres
		On vérifie si l'objet formulaire contient moins de 4 caractères
	*****************************************************************/  
					if ( e.telephone == true ) 
					{	
						vide = false;
						//On vérifie si la chaine est vide
						if ( (estVide(e.value)) || (e.value == null) || (e.value == "" ) ) {
							cmpVide++;
							champVide += '\n' + nomObj ;
							vide = true;
						}
						
						//On vérifie si la chaine comporte des caractères alphanumériques
						if ( verifierNombreComplet(e.value) != true  && vide != true ) 
						{
							cmp++;

							if (langue != "" && langue != "fr")
								message_fr_en = " field contain alphanumeric(s) character(s)."; 
							else
								message_fr_en = "  contient un ou des caracteres alphanumeriques.";

							erreur += "\n" + cmp + "- " + nomObj + message_fr_en;
							msg += nomObj + message_fr_en + "\n";//Message d'avertissement
						}
						
						//On vérifie si le textbox est rempli au complet
						if ( e.value.length < e.maxLength && vide != true ) 
						{							
							cmp++;

							if (langue != "" && langue != "fr")
								message_fr_en = " must have " + e.maxLength + ' characters.'; 
							else
								message_fr_en = "  doit etre rempli " + e.maxLength + " caracteres.";

							erreur += '\n' + cmp + '- ' + nomObj + message_fr_en;
							//alert('erreur = ' + erreur);
							msg += nomObj + message_fr_en;//Message d'avertissement
							//alert('msg =' + msg);
						}

						e.telephone = false;
					}
/*	
	-> email
	*****************************************************************
		On vérifie si l'objet formulaire est vide
		On vérifie si le contenu de l'objet formulaire correspond au format aaa@aaa.aa ( Contient au moins 1 ".", un "@" et a au minimum 8 caractères
	*****************************************************************/
					if ( e.email == true ) 
					{
						//On vérifie si la chaine est vide
						if ( (estVide(e.value)) || (e.value == null) || (e.value == "" ) ) {
							cmpVide++;
							champVide += '\n' + nomObj ;	
						}
						else
							vide = false; //Détermine si la fonction verifierCouriel sera appelée.
						
						if ( !verifierCouriel(e.value) && vide != true )
						{
							cmp++;

							if (langue != "" && langue != "fr")
								message_fr_en = " bad format. Must be aaaa@aaaa.aa."; 
							else
								message_fr_en = " ne correspond pas au format aaaa@aaaa.aa.";

							erreur += "\n" + cmp + "- " + nomObj + message_fr_en;
							msg += nomObj + message_fr_en;//Message d'avertissement
						}
						
						e.email = false;
					}
/*	
	-> pdf
	*****************************************************************
		On vérifie si l'objet formulaire est vide
		On vérifie si les 4 derniers caractères de la chaîne correspondent à ".pdf"
	*****************************************************************/
					if ( e.pdf == true ) 
					{
						//On vérifie si la chaine est vide
						if ( (estVide(e.value)) || (e.value == null) || (e.value == "" ) ) 
						{
							cmpVide++;
							champVide += '\n' + nomObj ;	
						}
						else
							vide = false;
						
						if ( !verifierPDF(e.value) && vide != true  ) 
						{
							cmp++;

							if (langue != "" && langue != "fr")
								message_fr_en = " bad format. No space allowed.  Extension must be in minus and is obligatory."; 
							else
								message_fr_en = " ne correspond pas au bon format. Aucune espace n'est permise. L'extension en minuscule (.pdf) est obligatoire.";

							erreur += "\n" + cmp + "- " + nomObj + message_fr_en;
							msg += nomObj + message_fr_en;//Message d'avertissement					
						}
						
						e.pdf = false;
					}
/*		
	-> site
	*****************************************************************
		On vérifie que le contenu de l'objet formulaire commence bien par "www."
		On vérifie que la longueur minimum du champ doit être d'au moins 8 caractères
	*****************************************************************/
					if ( e.site == true ) 
					{
						if ( verifierURL(e.value) != true ) 
						{
							cmp++;

							if (langue != "" && langue != "fr")
								message_fr_en = " bad format, must be www.monsite.com ( http:// interdit )."; 
							else
								message_fr_en = " ne correspond pas au format www.monsite.com ( http:// interdit ).";

							erreur += "\n" + cmp + "- " + nomObj + message_fr_en;
							msg += nomObj + message_fr_en;//Message d'avertissement
						}
							e.site = false;	
					}
/*	
	-> nombre
	*****************************************************************
		On vérifie si l'objet formulaire est vide
		On vérifie que le contenu de l'objet formulaire soit composé de nombres seulement
	*****************************************************************/
					if ( e.nombre == true ) 
					{
						vide = false;
						//On vérifie si la chaine est vide
						if ( (estVide(e.value)) || (e.value == null) || (e.value == "" ) ) 
						{
							cmpVide++;
							champVide += '\n' + nomObj ;
							vide = true;
						}
						
						//On vérifie si la chaine comporte des caractères alphanumériques
						if ( verifierNombreComplet(e.value) != true  && vide != true ) 
						{
							cmp++;

							if (langue != "" && langue != "fr")
								message_fr_en = " field contain alphanumeric(s) character(s)."; 
							else
								message_fr_en = "  contient des caracteres alphanumeriques.";


							erreur += "\n" + cmp + "- " + nomObj + message_fr_en;
							msg += nomObj + message_fr_en;//Message d'avertissement
						}	
						
						e.nombre = false;
					}

						
/*	
	-> postal
	*****************************************************************
		On vérifie si l'objet formulaire est vide
		On vérifie que le contenu de l'objet formulaire est au format "A9A9A9"
		On vérifie que le contenu de l'objet formulaire est composé de 6 caractères maximum
	*****************************************************************/
					if ( e.postal == true ) 
					{
						vide = true;
						//On vérifie si la chaine est vide
						if ( (estVide(e.value)) || (e.value == null) || (e.value == "" ) ) 
						{
							cmpVide++;
							champVide += '\n' + nomObj ;	
						}
						else
							vide = false;	
						
						if ( verifierCodePostal(e.value) == false && vide != true )
						{
							cmp++;

							if (langue != "" && langue != "fr")
								message_fr_en = " bad format, must be A0A0A0."; 
							else
								message_fr_en = "  ne correspond pas au format A0A0A0.";

							erreur += "\n" + cmp + "- " + nomObj + message_fr_en;
							msg += nomObj + message_fr_en;//Message d'avertissement
						}
						
						e.postal = false;
					}
/*	
	-> select
	*****************************************************************
		On vérifie que le contenu de l'objet formulaire est différent de "*" sinon on affiche un erreur.
	*****************************************************************/
					if ( e.select == true ) 
					{
						if ( e.value == "*"  || e.value == ""  || e.value.length == 0) {
							cmpVide++;
							champVide += "\n" + nomObj;
						}
						
						
						e.select = false;
					}
/*	
	-> image
	*****************************************************************
		On vérifie si l'objet formulaire est vide
		On vérifie si les 4 derniers caractères du contenu de l'objet formulaire correspond bien à ".jpg" ou ".gif"
	*****************************************************************/
					if ( e.image == true ) 
					{
						//On vérifie si la chaine est vide
						if ( (estVide(e.value)) || (e.value == null) || (e.value == "" ) ) 
						{
							cmpVide++;
							champVide += '\n' + nomObj ;			
						}
						else
							vide = false;
						
						if ( !verifierIMG(e.value) && vide != true  ) 
						{
							cmp++;

							if (langue != "" && langue != "fr")
								message_fr_en = " bad extension for this field. Must be file.jpg ou file.gif."; 
							else
								message_fr_en = " ne correspond pas au format monFichier.jpg ou monFichier.gif.";

							erreur += "\n" + cmp + "- " + nomObj + message_fr_en;
							msg += nomObj + message_fr_en;//Message d'avertissement					
						}
						
						e.image = false;
					}

/*	
	-> date
	*****************************************************************
		On vérifie que la date correspond au format d'une date normale et dans les règles
		On vérifie si le champ est vide
	*****************************************************************/
					if ( e.date == true ) 
					{
						//On vérifie si la chaine est vide
						if ( (estVide(e.value)) || (e.value == null) || (e.value == "" ) ) 
						{
							cmpVide++;
							champVide += '\n' + nomObj ;			
						}
						else
							vide = false;
						
						if ( valide_date(e.value) == false && vide != true ) 
						{
							cmp++;

							if (langue != "" && langue != "fr")
								message_fr_en = " is invalid.  Use this format: AAAAMMJJ."; 
							else
								message_fr_en = " est invalide. Utiliser le format: AAAAMMJJ.";

							erreur += "\n" + cmp + "- " + nomObj + message_fr_en;
							msg += nomObj + message_fr_en;  //Message d'avertissement					
						}
						
						e.date = false;
					}

/*	
	-> heure
	*****************************************************************
		On vérifie que l'heure est bien légale
		On vérifie si le champ est vide
	*****************************************************************/
					if ( e.heure == true ) 
					{
						//On vérifie si la chaine est vide
						if ( (estVide(e.value)) || (e.value == null) || (e.value == "" ) ) 
						{
							cmpVide++;
							champVide += '\n' + nomObj ;			
						}
						else
							vide = false;
							
						if ( valide_heure(e.value) == false && vide != true ) 
						{
							cmp++;

							if (langue != "" && langue != "fr")
								message_fr_en = " is invalid.  Use this format: HHMMSS."; 
							else
								message_fr_en = " est invalide. Utiliser le format: HHMMSS.";

							erreur += "\n" + cmp + "- " + nomObj + message_fr_en;
							msg += nomObj + message_fr_en;  //Message d'avertissement					
						}
						
						e.heure = false;
					}					

/*

/*	
	-> nas ( Numéro d'assurance sociale )
	*****************************************************************
		On vérifie que le champ contient au minimum 9 caractères
		On vérifie que le champ contient seulement des chiffre
		On vérifie si le champ est vide
	*****************************************************************/
					if ( e.nas == true ) 
					{
						//On vérifie si la chaine est vide
						if ( (estVide(e.value)) || (e.value == null) || (e.value == "" ) ) 
						{
							cmpVide++;
							champVide += '\n' + nomObj ;			
						}
						else
							vide = false;
							
						if ( valide_nas(e.value) == false && vide != true ) 
						{
							cmp++;		
							
							if (langue != "" && langue != "fr")
								message_fr_en = " is invalid.  Use this format: 999000999."; 
							else
								message_fr_en = " est invalide. Utiliser le format: 999000999.";

							erreur += "\n" + cmp + "- " + nomObj + message_fr_en;
							msg += nomObj + message_fr_en;  //Message d'avertissement					
						}
						
						e.heure = false;
					}	
					
/*	
	-> checkbox
	*****************************************************************
		On vérifie un objet checkbox est coché obligatoirement
	*****************************************************************/
					if ( e.checkbox == true) 
					{
						//On vérifie si la chaine est vide
						if (e.checked == false) {							
							cmpVide++;
							champVide += '\n' + nomObj ;
							
						}
						
						e.checkbox = false;
					}

/*

	-> Fin des validations
	*****************************************************************/	
							
				}//Fin du if permettant de vérifier si l'objet est de type text, textarea ou select-one
						
		}//Fin de la boucle For vérifiant tous les objets du formulaire

/*
	-> Si l'action est = "submit" et qu'il y a 1 erreurs et plus alors
	*****************************************************************/		
		if ( action == "submit" && ( cmp >= 1 || cmpVide >= 1 ) ) 
		{
			//Déclarations des variables
			var barre = "======================================================================\n";
			var erreurMSG_titre = "";
			var msgFinal = "";			
			var msgVide = "";
			var alerte = "";

			if (langue != "" && langue != "fr")
			{
				msgFinal = "The form is incomplete! \n";	
				erreurMSG_titre = "Please, correct the following errors : \n";
				msgVide = "Please, fill in the following field : \n";
				msgVide2 = "\n Please, select a criterion. \n";
				alerte = "Alert!\n=============================================================================\n"
			}
			else
			{
				msgFinal = "Le formulaire n'est pas complet! \n";	
				erreurMSG_titre = "S.V.P veuillez corriger les erreurs suivantes : \n";
				msgVide = "S.V.P veuillez remplir les champs suivants : \n";
				msgVide2 = "\n S.V.P veuillez selectionner au moins un critere de recherche. \n";
				alerte = "Avertissement!\n======================================================================\n"
			}
			
			
			msgFinal += barre;

			//Si la variable erreur contient des caractères alors
			//On affiche notre entêtes de la fenêtre d'affichage des erreurs
			if ( erreur != "" ) 			{
				
				erreurMSG_titre + barre + erreur + "\n" + barre;
			}			
			
			//Si il y a des champs vide et des erreurs alors on affiche les champs vides et les erreurs			
			if ( champVide != "" && erreur != "") 
			{
				msgVide + barre;			
				alert ( msgFinal + msgVide  + champVide + "\n" + barre + erreurMSG_titre  ); //on affiche les messages d'erreurs à l'écran
			}
			else
			{
				// Seulement des champs vides - rien n'a été complété
				if (champVide != "" && erreur == "")
				{
					// Si les champs de recherche sont tous vide et qu'on ne veut pas avoir le message
					// indiquant les champs obligatoires à compléter mais plutôt le msg suivant :
					// S.V.P veuillez selectionner au moins un critere de recherche.  En paramètre à la
					// fonction estValide ont doit passé t au dernier paramamètre.
					if (msg_critere_vide == "t")
					{
						msgVide2 + barre;
						alert ( msgFinal + msgVide2 + "\n" + barre);
					}
					else
					{
						msgVide + barre;			
						alert ( msgFinal + msgVide  + champVide + "\n" + barre); //on affiche les messages d'erreurs à l'écran
					}
				}
				else
				{
					// Seulement des erreurs
					if (champVide == "" && erreur != "")
					{
						alert ( msgFinal + erreurMSG_titre ); //Si aucun champs vide alors on affiche seulement les erreurs
					}
				}
			}
				
			return false; //On retourne faux donc le formulaire ne se soumet pas
		 }
		  
		 if ( action == "onChange" && cmp > 0 ) 
		 {
			alert (alerte + msg ); //on affiche l'avertissement
		 }
		 else 
			{return true;}
		
} 

/*
Fin de la fonction
***************************************************************************/

/*
***************************************************************************
*Fonction utilisé pour fin de validation des différents objets formulaires
***************************************************************************/

	//Retourne vrai seulement si une chaine contient seulement des blancs
	function estVide(v){
		
		var stock;
	
		for ( var i = 0; i < v.length; i++ ) {
		
			stock = v.charAt(i);
			
			if ( (stock != ' ') && (stock != '/n') && (stock != '/t') ) 
				{return false;} 	
		}
		
		return true;
	}

	//Retourne vrai seulement si une chaine contient des chiffres
	function unNombre(s)
	{
		for (var i = 0; i < s.length; i++)
		{
			var c = s.charAt(i);
			if ( (c == 0) || (c == 1) || (c == 2) || (c == 3) || (c == 4) || (c == 5) || (c == 6)
					|| (c == 7) || (c == 8) || (c == 9) )
			{
				return true;
			}
		}
			return false;
	}

	//On retourne Vrai si la chaine est composé de seulement des lettres.
	function verifierChaineComplete(chaine)
	{
	
		for ( i = 0; i < chaine.length; i++ ) {
		
			var c = chaine.charAt(i); //On vérifie tous les caractères un par un dans la chaine et on valide
			
			//alert("Chaine : " + c + "Rep : " + isNaN(c) );
			if ( c != " " ) {
				if ( isNaN(c) != true ) {
					return false;
				}
			}
		}
	
		return true;
	}

	//On retourne vrai si la chaine ne contient que des chiffres
	//On permet le point "." exemple : 220.22
	function verifierNombreComplet(nbr)
	{
		for ( i = 0; i < nbr.length; i++ ) 
		{		
			var c = nbr.charAt(i);
			
			if ( c != '.' )
			{
				if ( unNombre(c) != true ) {
					return false;
				}
			}
		
		}
	
		return true;
	}	

	function verifierCaractSpecial(c) 
	{
	
		var iChars = "@#$%^*+=[]\\\;{}|\":<>?";
	
       for (var i = 0; i < c.length; i++) 
	   {
	  
			if (iChars.indexOf(c.charAt(i)) != -1) 
			{
				return false;
			}
		
	    }
	
		return true;
	
	}

	//On valide l'adresse de couriel
	function verifierCouriel(mail) 
	{
	
		  if ((mail.indexOf("@")>=0)&&(mail.indexOf(".")>=0)) {
			 return true ;
		  } 	  
	
		  return false;
		 
	}
	
	//Vérification d'un fichier .pdf
	function verifierPDF(nom_Fichier) 
	{
	
		var grandeur = nom_Fichier.length;
		var valide = true;
		//alert ( grandeur + nom_Fichier.charAt(grandeur-1) + nom_Fichier.charAt(grandeur-2) + nom_Fichier.charAt(grandeur-3) + nom_Fichier.charAt(grandeur-4));
		
		for ( i = 0; i < grandeur; i++ )
		{
			var c = nom_Fichier.charAt(i);
			
			//On vérifier si la chaine contient des espaces
			if ( c == " "  || c == null ) 
				{ valide = false; }
		}
		
		if ( nom_Fichier.substring( nom_Fichier.length-4, nom_Fichier.length ) != ".pdf"  || valide != true )
			return false;
		
		return true;
	}	

		//Vérification d'un fichier .pdf
	function verifierIMG(nom_Fichier) 
	{
		var grandeur = nom_Fichier.length;
		//alert ( grandeur + nom_Fichier.charAt(grandeur-1) + nom_Fichier.charAt(grandeur-2) + nom_Fichier.charAt(grandeur-3) + nom_Fichier.charAt(grandeur-4));
			
		if ( nom_Fichier.substring( nom_Fichier.length-4, nom_Fichier.length ) == ".jpg" || nom_Fichier.substring( nom_Fichier.length-4, nom_Fichier.length ) == ".gif" )
			return true;
		
		return false;
	}
	
	//On valide le code Postal
	// Code postal canadien seulement
	function verifierCodePostal(codeP) 
	{ 
		strlen = codeP.length; 
		
		if (strlen != 6) 
		{
			return false;
		}	

		codeP = codeP.toUpperCase();   
		
		// Check for legal characters in string - note index starts at zero
		if ('ABCDEFGHIJKLMNOPQRSTUVWXYZ'.indexOf(codeP.charAt(0)) < 0) 
		{return false;}
		if ('0123456789'.indexOf(codeP.charAt(1)) < 0) 
		{return false;}
		if ('ABCDEFGHIJKLMNOPQRSTUVWXYZ'.indexOf(codeP.charAt(2)) < 0) 
		{return false;}
		if ('0123456789'.indexOf(codeP.charAt(3)) < 0) 
		{return false;}
		if ('ABCDEFGHIJKLMNOPQRSTUVWXYZ'.indexOf(codeP.charAt(4)) < 0) 
		{return false;}
		if ('0123456789'.indexOf(codeP.charAt(5)) < 0) 
		{return false;}
		
		
		return true; 
		
	}

	//On valide l'url
	function verifierURL (u) 
	{
		
		if ( u.charAt(3) != "3"  && u.substring(0,5) != "pages" ) 
		{
			if ('w'.indexOf(u.charAt(0)) < 0) 
				{return false;}
			if ('w'.indexOf(u.charAt(1)) < 0) 
				{return false;}
			if ('w'.indexOf(u.charAt(2)) < 0) 
				{return false;}
			if ('.'.indexOf(u.charAt(3)) < 0) 
				{return false;}
			if ( u.length <= 8 )
				{return false;}
		}
		else if ( u.substring(0,5) != "pages"  )	
			{
				if ('w'.indexOf(u.charAt(0)) < 0) 
					{return false;}
				if ('w'.indexOf(u.charAt(1)) < 0) 
					{return false;}
				if ('w'.indexOf(u.charAt(2)) < 0) 
					{return false;}
				if ('3'.indexOf(u.charAt(3)) < 0) 
					{return false;}
				if ('.'.indexOf(u.charAt(4)) < 0) 
					{return false;}
				if ( u.length <= 8 )
					{return false;}
			}
	
		return true;
	
	}

	//On valide si la date de début est plus grande que celle de la fin, utilisé lors de l'affichage du calendrier
	function valider2Date( obj_debut, obj_fin )
	{
	
		var retour = false;
	
		if ( !estVide(obj_debut) && !estVide(obj_fin) ) {
				
				//alert(obj_debut.substring(8,10) + " " + obj_fin.substring(8,10) + " " + obj_debut.substring(5,7) + " " + obj_fin.substring(5,7) + " " + obj_debut.substring(0,4) + " " +  obj_fin.substring(0,4) );

				if ( obj_debut.substring(0,4) > obj_fin.substring(0,4)  )
					{ retour = true; 
					//alert(1);
					}
				//On vérifie si le mois est plus grand
				else if ( ( obj_debut.substring(5,7) > obj_fin.substring(5,7) ) && ( obj_debut.substring(0,4) >= obj_fin.substring(0,4) )  )
					{ retour = true; 
					//alert(2);
					}
				//On vérifie si le jour est plus grand
				else if ( obj_debut.substring(8,10) > obj_fin.substring(8,10) && ( obj_debut.substring(5,7) >= obj_fin.substring(5,7) && obj_debut.substring(0,4) >= obj_fin.substring(0,4) ) )
					{ retour = true;
					// alert(3); alert(obj_debut.substring(8,10) + " " + obj_fin.substring(8,10) + " " + obj_debut.substring(5,7) + " " + obj_fin.substring(5,7) + " " + obj_debut.substring(0,4) + " " +  obj_fin.substring(0,4) ); 
					}
			}
		
		//On retourne un booléen
		return retour;
	}
	
	// permet de savoir si la date est valide
	function valide_date(s)
	{
		if (s == null || s.length == 0)
			return false;

		var taille = s.length;
		 nombre = 0;
		autre = 0;
		var travail = "";
		for (var i = 0; i < taille; i++)    {
			
			var c = s.charAt(i);
			if (isDigit(c))
			{
				 travail += c;
				 nombre++;
			}
			else
				autre++;
		}

		if (autre != 2 && autre != 0)
			return false;
		
		if (nombre != 8)
			return false;
		else
		{
			var a = travail.substring(0, 4);
			var m = travail.substring(4, 6);
			var d = travail.substring(6, travail.length);
			
			a = parseInt(a);

			// Il y a un bug avec les jours et mois 08 et 09
			if (m == '08') 
			{
				m = '8';
			}
			else if (m == '09')
			{
				m = '9';
			}
			m = parseInt(m);

			if (d == '08')
			{
				d = '8';
			}
			else if (d == '09')
			{
				d = '9';
			}
			d = parseInt(d);

			// Le mois doit etre entre 1 et 12
			if (m < 1 || m > 12)
				return false;
			// Les jours: entre 1 et 31
			// si mois est 2, 4, 6, 9 ou 11: max 30
			// si 2: max 28 ou 29 si bixextile
			// bisectile: si annee div 4 reste 0
			// pour siecle: divisible par 100 et par 400: 2000 oui, 1700, 1800 et 1900 non
			if (d < 1 || d > 31)
				return false;
			if (m == 2 || m == 4 || m == 6 || m == 9 || m == 11)
			{
				if (m > 30)
					return false;
			}
			if (m == 2 && d > 29)
				return false;
			if (m == 2 && d > 28)
			{
				// annee bisextile
				var reste = a % 4;
				if (reste != 0)
					return false;
				var annee = travail.substring(0, 4);
				taille = annee.length;
				var fin = annee.substring(2, taille);
				if (fin == '00')
				{
					if (! (a % 100 == 0 && a % 400 == 0))
						return false;
				}
			}
		}
		return true;
	}


	// permet de savoir si la date est valide
	function valide_heure(s)
	{
		if (s == null || s.length == 0)
			return false;
	
		var taille = s.length;
		nombre = 0;
		autre = 0;
		var travail = "";
		for (var i = 0; i < taille; i++)
		{
			var c = s.charAt(i);
			if (unNombre(c))
			{
				travail += c;
				nombre++;
			}
			else
				autre++;
		}
		
		if (nombre != 6)
			return false;
		if (autre != 2 && autre != 0)
			return false;
		
		if (nombre == 6)
		{
			var h = parseInt(travail.substring(0, 2));
			var m = parseInt(travail.substring(2, 4));
			var s = parseInt(travail.substring(4, travail.length));
			
			// Retourne faux si l'heure est plus petit que 0 et plus grand que 23
			if (h < 0 || h > 23)
				return false;
			
			// Les minutes doivent etre entre 0 et 59
			if (m < 0 || m > 59)
				return false;
				
			// Les secondes doivent etre entre 0 et 59				
			if (s < 0 || s > 59)
				return false;

		}
		
		return true;
	}	

	/*
	Vérifie que la chaine reçu contient 9 caractères
	Vérifie que la chaine reçu contient que des chffres
	Return vrai si les 2 conditions suivantes sont suivies
	*/
	function valide_nas(s)
	{
		var taille = s.length;
		
		if ( taille != 9 )
			return false;
		
		for (var i = 0; i < taille; i++)
		{
			var c = s.charAt(i);
			if (!unNombre(c))
			{
				return false;
			}
		}
		
		return true;
	}

	/*
	On boucle pour vérifier si on a plus d'une form dans le document présent
	*********************************************************************/
	function formExist(f)
	{
		for ( var t = 0; t < document.forms.length; t++ )
		{
			if ( f.name = document.forms[t].name )
				return true
		}	
		
		return false;	
	}	
	
function RetournerMois(moisRecu){
		var mois= "";
		
		switch(moisRecu){
			case 1:
				mois = "Janvier";
				break;
			case 2:
				mois = "F&eacute;vrier";
				break;
			case 3:
				mois = "Mars";
				break;
			case 4:
				mois = "Avril";
				break;
			case 5:
				mois = "Mai";
				break;
			case 6:
				mois = "Juin";
				break;
			case 7:
				mois = "Juillet";
				break;
			case 8:
				mois = "Ao&ucirc;t";
				break;
			case 9:
				mois = "Septembre";
				break;
			case 10:
				mois = "Octobre";
				break;
			case 11:
				mois = "Novembre";
				break;
			case 12:
				mois = "D&eacute;cembre";
				break;
			}			
			return mois;
	}
		
	/* Fonction servant à la page PageEndInclude afin d'afficher l'informations dans une nouvelle fenêtre redimensionné*/
	/* *******************************************
	   *   Fonction Créer par Jonathan Vallée    *
	   *	         14-06-2004                  *
	   ******************************************* */
	function Start(page, longueur, scrll ) {
	
	var largeur;/* Variable qui détermine la largeur*/
	
	/* Condition pour déterminer la largeur de la fenêtre. */
	if ( scrll == 'no' ) {
		largeur = 480;
		}
	else
		largeur = 500;
	
	/*Variable qui stock l'information à envoyer à la fonction document.open */
	var affiche = "width=" + largeur + ",height=" + longueur + ",toolbar=no,menubar=no,location=no,scrollbars=" + scrll + ",resizable=yes";
	
	/*Affiche la nouvelle fenêtre en mode _blank*/
	OpenWin = document.open(page, "_blank", affiche );
	
	} 
	
	function OuvrirSite(page,scrll ) {
	
	var largeur;/* Variable qui détermine la largeur*/
	var longueur;/* Variable qui détermine la largeur*/
	
	/* Condition pour déterminer la largeur de la fenêtre. */
	if ( scrll == 'no' ) {
		largeur = 770;
		}
	else
		largeur = 770;
		
	longueur=600;
	
	/*Variable qui stock l'information à envoyer à la fonction document.open */
	var affiche = "width=" + largeur + ",height=" + longueur +  ",toolbar=yes,menubar=yes,location=yes,scrollbars=" + scrll + ",resizable=yes";
	
	/*Affiche la nouvelle fenêtre en mode _blank*/
	OpenWin = document.open(page, "_blank", affiche );
	
	}  
	
	 function maxlength(text,length) 
	 {
		 if (text.value.length>length) 
		 	alert("Vous avez atteint le maximum de caracteres permis.");
		 	text.value=text.value.substr(0,length); 
	 } 
