/**** Dbut de fonction : verifEmail ****/
// Entre : mail - (String) - Email  analys.
// Renvoy : true ou false - (Boolean) - Vrai si l'email est correct sinon Faux
 
function verifEmail(mail) {
 
  /*** Dbut de dclaration de variable ***/
  //var de retour boolean true ou false
  var ret = true;
  //var o l'on stock le caractre courant au fur et a mesure de l'analyse
  var car = "";
  //var o l'on stock le caractre place avant le @
  var carAfter = "";
  //var o l'on stock le caractre place aprs le @
  var carBefore = "";
  //var o l'on stock le nombre de caractres total
  var nbrcar = mail.length;
  //var o l'on stock le nombre de @ trouv
  var nbrarobase = 0;
  //var o l'on stock le nombre de . trouv
  var nbrpoint = 0;
  //var dfinissant les caractres authoriss
  var goodcar = "@0123456789.-_abcdefghijklmnopqrstuvwxyz";
  /*** Fin de dclaration de variable ***/
 
  /*** Dbut de boucle de l'analyse ***/
  for(cnt=0;cnt<nbrcar;cnt++) {
 
    //Rcupration du caractre courant
    var car = mail.substr(cnt,1);
 
    /** Dbut de l'analyse du caractre courant **/
    //Si le caractre est authoris
    if(goodcar.indexOf(car) >= 0) {
 
      //On initialise les variables carAfter et carBefore  vide
      carAfter = "";
      carBefore = "";
 
      /* Dbut de l'analyse du @ */
      //Si le caractre est @
      if(car == "@") {
 
 
        //Si le @ n'est pas le premier
        if((cnt-1) >= 0) {
 
          //Rcupration du caractre plac avant le @
          carBefore = mail.substr((cnt-1),1);
        }
 
        //Si le @ n'est pas le dernier
        if((cnt+1)<nbrcar) {
 
          //Rcupration du caractre plac aprs le @
         carAfter = mail.substr((cnt+1),1);
        }
 
        //Si toutes les condition de @ sont respectes
        //conditions:
        // - cnt>0 : n'est pas plac en premire position
        // - nbrarobase==0 : est unique
        // - cnt<(nbrcar-4) : se trouve  une position max de 5 avant la fin
        // (sachant que les domaines les plus petit sont : a.fr par ex.)
        // - !(carBefore==".") : qu'il n'y est pas de . avant le @
        // - !(carAfter==".") : qu'il n'y est pas de . aprs le @
        // - !(carBefore=="-") : qu'il n'y est pas de - avant le @
        // - !(carAfter=="-") : qu'il n'y est pas de - aprs le @
        // - !(carBefore=="_") : qu'il n'y est pas de _ avant le @
        // - !(carAfter=="_") : qu'il n'y est pas de _ aprs le @
        if(cnt>0 && nbrarobase==0 && cnt<(nbrcar-4) && !(carBefore==".") && !(carAfter==".") && !(carBefore=="-") && !(carAfter=="-") && !(carBefore=="_") && !(carAfter=="_")) {
 
          //On incrmente le @
          nbrarobase++;
        } else {
 
         //Affectation Faux  la var de retour
         ret = false;
         //On sort de la boucle
         break;
        }
      }
      /* Fin de l'analyse du @ */
 
      /* Dbut de l'analyse du . */
      //Si le caractre est .
      if(car == ".") {
 
        //Si le . n'est pas le premier
        if((cnt-1) >= 0) {
 
          //Rcupration du caractre plac avant le .
          carBefore = mail.substr((cnt-1),1);
        }
 
        //Si le . n'est pas le dernier
        if((cnt+1)<nbrcar) {
 
          //Rcupration du caractre plac aprs le .
         carAfter = mail.substr((cnt+1),1);
        }
 
        //Si toutes les condition de @ sont respectes
        //conditions:
        // - cnt>0 : n'est pas plac en premire position
        // - cnt<(nbrcar-2) : se trouve  une position max de 3 avant la fin
        // (sachant que les domaines les plus petit sont : a.fr par ex.)
        // - !(carBefore==".") : qu'il n'y est pas de . avant le .
        // - !(carAfter==".") : qu'il n'y est pas de . aprs le .
        // - !(carBefore=="-") : qu'il n'y est pas de - avant le .
        // - !(carAfter=="-") : qu'il n'y est pas de - aprs le .
        // - !(carBefore=="_") : qu'il n'y est pas de _ avant le .
        // - !(carAfter=="_") : qu'il n'y est pas de _ aprs le .
        if(cnt>0 && cnt<(nbrcar-2) && !(carBefore==".") && !(carAfter==".") && !(carBefore=="-") && !(carAfter=="-") && !(carBefore=="_") && !(carAfter=="_")) {
 
          //On incrmente le .
          nbrpoint++;
        } else {
 
          //Affectation Faux  la var de retour
          ret = false;
          //On sort de la boucle
          break;
        }
      }
      /* Fin de l'analyse du . */
 
    } else {
 
      //Affectation Faux  la var de retour
      ret = false;
      //On sort de la boucle
      break;
    }
    /*** Fin de l'analyse du caractre courant ***/
  }
  /*** Fin de boucle de l'analyse ***/
 
  /*** Dbut de l'analyse du nombre de @ et de . ***/
  //Si il n'y a aucun @ et aucun .
  //Si le 1er et le dernier caractre est .
  //Si le 1er et le dernier caractre est -
  //Si le 1er et le dernier caractre est _
  if(nbrarobase == 0 || nbrpoint == 0 || mail.substr(0,1) == "." || mail.substr(0,1) == "-" || mail.substr(0,1) == "_" || mail.substr((nbrcar-1),1) == "." || mail.substr((nbrcar-1),1) == "-" || mail.substr((nbrcar-1),1) == "_") {
 
    //Affectation Faux  la var de retour
    ret = false;
  }
  /*** Fin de l'analyse du nombre de . et de @ ***/
 
  //Renvoi de la valeur de la var de retour
  return ret;
}
/**** Fin de fonction : verifEmail ****/
