// test a validi fr date jj/mm/aa ou jj/mm/aaaa
function isDate(d) {
	// Cette fonction permet de vérifier la validité d'une date au format jj/mm/aa ou jj/mm/aaaa
	d = d.value;
	if (d == "") // si la variable est vide on retourne faux
	return false;
	e = new RegExp("^[0-9]{1,2}\/[0-9]{1,2}\/([0-9]{2}|[0-9]{4})$");
	if (!e.test(d)) // On teste l'expression régulière pour valider la forme de la date
	return false; // Si pas bon, retourne faux
	// On sépare la date en 3 variables pour vérification, parseInt() converti du texte en entier
	j = parseInt(d.split("/")[0], 10); // jour
	m = parseInt(d.split("/")[1], 10); // mois
	a = parseInt(d.split("/")[2], 10); // année
	// Si l'année n'est composée que de 2 chiffres on complète automatiquement
	if (a < 1000) {
	if (a < 89) a+=2000; // Si a < 89 alors on ajoute 2000 sinon on ajoute 1900
	else a+=1900;
	}
	// Définition du dernier jour de février
	// Année bissextile si annnée divisible par 4 et que ce n'est pas un siècle, ou bien si divisible par 400
	if (a%4 == 0 && a%100 !=0 || a%400 == 0) fev = 29;
	else fev = 28;
	// Nombre de jours pour chaque mois
	nbJours = new Array(31,fev,31,30,31,30,31,31,30,31,30,31);
	// Enfin, retourne vrai si le jour est bien entre 1 et le bon nombre de jours, idem pour les mois, sinon retourn faux
	return ( m >= 1 && m <=12 && j >= 1 && j <= nbJours[m-1] );
} 


//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

// test if email is correct
function isEmail(emailHTMLfield){
		// déclaration et initialisation des variables 
		 var emailField = emailHTMLfield;
		 var adrMail= emailField.value;

		 adrMailLength=adrMail.length; // longueur de la chaîne adrMail 
		 caractOk="_.-0123456789abcdefghijklmnopqrstuvwxyz"; // caratères corect d'une adresse mail 
		 var posArrobas=adrMail.indexOf('@',1); // position du premier Arrobas 
		 var posPoint=adrMail.lastIndexOf('.',adrMailLength); // position du dernier point 
		 var posCaractFaux=adrMail.indexOf('..',posArrobas+1); // position d'un caractère faux ('..' ou ' ') 
		 var caract=0; // caractère extrait de la chaîne adrMail (utilisée par les boucles while) 
		 var caractFaux=adrMail.charAt(0)+adrMail.charAt(posArrobas-1)+adrMail.charAt(posArrobas+1)+adrMail.charAt(posPoint-1); 
		 var posCaract=0; // position du caractère à extraire de la chaîne adrMail (utilisée par les boucles while) 
		 var posCaractOk=0; // position du caractère extrait de la chaîne adrMail (utilisée par les boucles while) 
		 var posCaractNon=-1; 
		 var retour=false; // l'adresse e-mail est considérée comme fausse au début 
		// début du test
		 // s'il n'existe pas de caractère '..' alors on teste s'il existe un espace dans la chaîne adrMail 
			 if (posCaractFaux!=-1 || adrMail.indexOf(' ',0)!=-1 || adrMail.indexOf('--',0)!=-1 || adrMail.indexOf('__',0)!=-1) { 
					posCaractFaux=0; 
			 } 
		 // Teste les points ou - ou _ au début de l'adrMail, autour de l'arrobas et autour du dernier point 
			 for (posCaract;posCaract<4;posCaract++) { 
				 caract=caractFaux.charAt(posCaract); 
				 posCaractNon=caractOk.lastIndexOf(caract,2); 
				 if (posCaractNon!=-1) { 
						posCaractFaux=0; 
						break; 
				 } 
			 } 
		 // si l'adresse mail contient au moins 1 caractère et qu'elle comporte un arrobas 
		 // et qu'elle comporte un point et que l'arrobas est avant le dernier point 
		 // et qu'elle ne contient pas de '..' ou d'espace et que après le dernier point il y est 2,3 ou 4 caractères 
		 // et qu'il n'y est pas de point autour de l'arrobas et que l'adresse ne commence pas par un point 
		 // Alors 
			 if (adrMailLength>0 && posArrobas!=-1 && posPoint!=-1 && posArrobas<posPoint && posCaractFaux==-1 && adrMailLength-posPoint-1>=2 && adrMailLength-posPoint-1<=4) { 
					// extraction d'un caractère et teste s'il existe dans la chaîne "_.-0123456789abcdefghijklmnopqrstuvwxyz" 
					// S'il n'existe pas alors posCaract=-1 donc au prochain 'tour' on passe aux autres boucles (qui ne s'effecturont pas) 
					// Si il existe on continue la boucle jusqu'au caractère avant l'arrobas et on passe à la boucle while suivante 
						adrMail=adrMail.toLowerCase(); 
						posCaract=0; 
						while (posCaract<posArrobas && posCaractOk!=-1) { 
							caract=adrMail.charAt(posCaract); 
							posCaractOk=caractOk.indexOf(caract,0); 
							posCaract++;
						} 
						posCaract++; // on passe l'arrobas 
					// sur le même principe qu'au dessus mais pour la partie entre l'arrobas et le dernier point 
					// le test ce fait sur les caractères ".-0123456789abcdefghijklmnopqrstuvwxyz" 
					// caractOk.indexOf(caract,1) on ne teste plus l'underscore 
						while (posCaract<posPoint && posCaractOk!=-1) { 
								caract=adrMail.charAt(posCaract); 
								posCaractOk=caractOk.indexOf(caract,1); 
								posCaract++; 
						} 
						posCaract++; // on passe le point 
					// sur le même principe qu'au dessus mais pour la partie entre le dernier point et la fin 
					// le test ce fait sur les caractères "abcdefghijklmnopqrstuvwxyz" 
					// caractOk.indexOf(caract,13) on ne teste plus que des lettres 
						while (posCaract<adrMailLength && posCaractOk!=-1) { 
							caract=adrMail.charAt(posCaract); 
							posCaractOk=caractOk.indexOf(caract,13); 
							posCaract++; 
						} // fin de la boucle while 
					// durant le parcour de l'adresse mail si n'y avait pas de caractère interdit 
					// posCaractOk a changer plusieurs fois de valeur mais na jamais eu la valeur -1 
					// donc l'adresse est bonne 
						if (posCaractOk!=-1) { 
							 retour=true; 
						} 
			 }	
			return retour;			
	
}




//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

// FONCTIONS TRIM :)

var regExpBeginning = /^\s+/;
var regExpEnd = /\s+$/;  
// Supprime les espaces inutiles en début et fin de la chaîne passée en paramètre.
function trim(aString) {
    return aString.replace(regExpBeginning, "").replace(regExpEnd, "");
}

// Supprime les espaces inutiles en début de la chaîne passée en paramètre.
function ltrim(aString) {
    return aString.replace(regExpBeginning, "");
}

// Supprime les espaces inutiles en fin de la chaîne passée en paramètre.
function rtrim(aString) {
    return aString.replace(regExpEnd, "");
}
