// JavaScript Document


//-------------------------------------------------------------------------------------------------------------


//Fonction enlever les espaces avant et apres
function trim(StrTest) {
    return StrTest.replace(/^\s+/, '').replace(/\s+$/, '');
}


//-------------------------------------------------------------------------------------------------------------


//Fonction de vérification si le navigateur accepte l'objet XMLHttpRrequest
//Retourne l'objet en fonction du navigateur ou false
function getXhr(){
		var xhr = null;//Initialisation de l'objet de retour
		if(window.XMLHttpRequest) // Firefox et autres
		   xhr = new XMLHttpRequest(); 
		else if(window.ActiveXObject){ // Internet Explorer 
		   try {
					xhr = new ActiveXObject("Msxml2.XMLHTTP");
				} catch (e) {
					xhr = new ActiveXObject("Microsoft.XMLHTTP");
				}
		}
		else { // XMLHttpRequest non supporté par le navigateur 
		   alert("Votre navigateur ne supporte l'ajax. Merci de changer de navigateur"); 
		   xhr = false; 
		} 
		return xhr;//Retour
}



//-------------------------------------------------------------------------------------------------------------



//Test si un email est valide
function isEmail(emailValue){
		// déclaration et initialisation des variables 
			 var adrMail= emailValue;
			 //alert(adrMail);
			 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;//Retour de la fonction, TRUE -> email correct
}
		
//-------------------------------------------------------------------------------------------------------------

//Test si l'argument est numérique
function isNumeric(monChamp){
		var champAverifier = document.getElementById(monChamp);
		var champValue = champAverifier.value;
		var anum=/(^\d+$)|(^\d+\.\d+$)/;
		if (anum.test(champValue)){
			return true;
		}
		else{
			return false;
		}
}
		
		
		
//-------------------------------------------------------------------------------------------------------------

//Test si un numéro de téléphone est valide
function isTelephone(monChamp){
	var regex = new RegExp(/^0[1-68](((\.[0-9]{2}){4})|((\-[0-9]{2}){4})|(([0-9]{2}){4}))$/gi);// Definition du motif a matcher
	if(!regex.test(monChamp))// Test sur le motif
	{
		return false;
	}
	else {
		return true;
	}
}

//-------------------------------------------------------------------------------------------------------------

