function checkemailForm() {

	if (document.emailForm.email.value=='') {
  	alert("Veuillez indiquer votre adresse e-mail");
  	document.emailForm.email.focus();
  	return false;
	}
	else if (testAdrMail(document.emailForm.email.value)==false) {
  	alert("Veuillez indiquer une adresse e-mail valide");
  	document.emailForm.email.focus();
  	return false;
	}
	
	return true;
	
}


function testAdrMail(adrMail) { 
  
 // déclaration et initialisation des variables 
 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 teste 
 // 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; // renvoi le résultat (true ou false) 
} // fin de la fonction

