// Java Document
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 ****/ 