//Fonction permettant de controler le remplissage spécifique à un champ mail
// Pour tester la validité d'un champs mail dans l'internet client
// utiliser la méthode checkMail(champs, isErrorDisplayed)
// avec pour <champ> la valeur du champs mail (forms.element['Email'].value)
// puis isErrorDisplayed, un boolean qui :
// s'il est a true, genere automatique le message d'erreur de type alert('erreur')
// d'il est a false, ne genere rien, a vous de prévoir dans ce cas un message
// Dans tout les cas si le code retour est false, le champ mail est pas valide
// si true, alors roule ma poule !
function checkMail(champs, isErrorDisplayed) {

  if ( isNotContainProhibitedCharacter( champs , isErrorDisplayed ) && isChampsMailIsValid( champs , isErrorDisplayed ) ) {
    return true;
  } else { 
    return false;
  }
}


// Fonction testant si le champ mail est valide
// à savoir présence d'un seul @
// XXXXXXX@YYYY.ZZ --> ok
// XXX.XXX@YYYY.ZZ --> ok
function isChampsMailIsValid(champs, isErrorDisplayed) {

  var nb_arobas = 0;
  var nb_point = 0;
  var i;
  var indexArobas;
  var reg;
  var dom;
  var tableau;
  var nbPoint;
  var tableauPoint;

  //Test si le champ mail est renseigné  
  if (champs == null || champs == '')
    {
      if (isErrorDisplayed) {
        alert('Le champ Email doit être renseigné !');
     }
      return false;
    }
  
  //Test s'il y a qu'un arobas
  if (champs.charAt(0) == '@')
    {
     if (isErrorDisplayed) {
        alert('Le champ Email est invalide !');
     }
      return false;
    }

  for (i = 0 ; i < champs.length ; i++) {
    
    if (champs.charAt(i) == '@') {
      nb_arobas++;
    }  
  }
  
  if (nb_arobas != 1)
    {
     if (isErrorDisplayed) {
        alert('Le champ Email est invalide !');
     }
      return false;
    }
    
  //Test presence domaine et s'il y au moins un point apres l'arobas
  reg = new RegExp('@');

  tableau = champs.split(reg);
  if ( tableau[1] == null )
    {
     if (isErrorDisplayed) {
        alert('Le champ Email est invalide !');
     }
      return false;
    }

  if (tableau[1].indexOf('.') == -1)
    {
     if (isErrorDisplayed) {
        alert('Le champ Email est invalide !');
     }
      return false;
    }
   
   dom = tableau[1];
   
   tableauPoint = dom.split('.');
   
   nbPoint = tableauPoint.length - 1;
   
   if (tableauPoint[0].length == 0)
    {
     if (isErrorDisplayed) {
        alert('Le champ Email est invalide !');
     }
      return false;
    }
   
   if (tableauPoint[nbPoint].length < 2)
    {
      if (isErrorDisplayed) {
        alert('L\047extension de l\047email n\047est pas valable !');
     }
      return false;
    }
    
   if (isContainProhibitedCharacterExtension(tableauPoint[nbPoint], isErrorDisplayed) == true)
    {
      return false;
    }

  //Champs mail OK
  return true;
}


// Fonction testant si le champ mail ne
// Contient pas de caracteres interdits
// tel que lettres accentuée, &, ç
// Caractères autorisés : <@><.><-><_><0 --> 9><A --> Z><a --> z> 
function isNotContainProhibitedCharacter(champs, isErrorDisplayed) {
  
  var i;
  var reg;
  var error = false;
  
//  champs = champs.toUpperCase();

  nb = champs.length;
  
  for (i = 0;  i < nb ; i++) 
  {
  
    
    if (!( champs.charCodeAt(i) == 64 || champs.charCodeAt(i) == 46 || champs.charCodeAt(i) == 45 ||
        champs.charCodeAt(i) == 95 || (champs.charCodeAt(i) >= 48 && champs.charCodeAt(i) <= 57) ||
        (champs.charCodeAt(i) >= 65 && champs.charCodeAt(i) <= 90) || (champs.charCodeAt(i) >= 97 && champs.charCodeAt(i) <= 122) )) {
        error = true;
    }
  }
  
  if (error && isErrorDisplayed) {
    alert('Le champ Email contient des caractères spéciaux (é,ç,/,&,...) !');
  }

  return !error;
} 


// Fonction testant si l extension de l email ne
// Contient pas de caracteres interdits
// tel que les numeriques
function isContainProhibitedCharacterExtension(champs, isErrorDisplayed) {
  
  var i;
  var reg;
  var error = false;
  var nb;
  
  nb = champs.length;
  
  for (i = 0;  i < nb ; i++) {
    if ( (champs.charCodeAt(i) >= 48 && champs.charCodeAt(i) <= 57) ) {
        error = true;
     }
  }
  
  if (error && isErrorDisplayed) {
    alert('L\047extension de l\047email n\047est pas valable !');
  }

  return error;
} 

// Avec concatenation des valeurs cle / domaine
function chooseDomaine( objetChampsDomaine ) {

  var form;
  var valChamps;
  var indexArobas;
  var cleEmail;
  var domaineEmail;
   
  form = objetChampsDomaine.form;
  valChamps = form.elements['cleEmail'].value;
  indexArobas = valChamps.indexOf('@');
  
  if ( indexArobas == -1 ) {
    form.elements['Email'].value = form.elements['Email'].value + '@' + objetChampsDomaine.value;
  }
  else {
    cleEmail = valChamps.substring(0, indexArobas + 1);
    form.elements['Email'].value = cleEmail + objetChampsDomaine.value;
  }
  
}

// Sans concatenation des valeurs cle / domaine
function chooseAutresDomaines( objetChampsDomaine ) {

  var form;
  var cleEmail;
  var domaineEmail;
  var domaineEmailSelected;
  var eMail = '';

  form = objetChampsDomaine.form;
  cleEmail = form.elements['cleEmail'].value;
  domaineEmailSelected = objetChampsDomaine.value;

  //alert( " domaineEmailSelected : " + domaineEmailSelected );

  document.getElementById("afficheDomaineMaj").style.visibility = "hidden";
  if ( domaineEmailSelected == "domaine" ) {
    domaineEmail = '';
  }
  else if ( domaineEmailSelected == "WONoSelectionString" ) {
    domaineEmail = '';
  }
  else if ( domaineEmailSelected == "autres" ) {
    document.getElementById("afficheDomaineMaj").style.visibility = "visible";
    domaineEmail = '';
  }
  else {
    domaineEmail = domaineEmailSelected;
    if ( form.elements['pasdEmail'] != null ) {
      form.elements['pasdEmail'].checked = false;
    }
  }
  form.elements['domaineEmail'].value = domaineEmail;

  if ( ( cleEmail != '' ) || ( domaineEmail != '' ) ) {
    eMail = cleEmail + '@' + domaineEmail;
    if ( form.elements['pasdOffreCommerciale'] != null ) {
       form.elements['pasdOffreCommerciale'].disabled = false;
    }
  }
  
  form.elements['Email'].value = eMail;
  
  //alert( " eMail : " + eMail );
}

// Sans concatenation des valeurs cle / domaine
function chooseAutresDomainesA( objetChampsDomaine ) {

  var form;
  var cleEmail;
  var domaineEmail;
  var domaineEmailSelected;
  var eMail = '';

  form = objetChampsDomaine.form;
  cleEmail = form.elements['cleEmailA'].value;
  domaineEmailSelected = objetChampsDomaine.value;

  //alert( " domaineEmailSelected : " + domaineEmailSelected );

  document.getElementById("afficheDomaineMajA").style.visibility = "hidden";
  if ( domaineEmailSelected == "domaine" ) {
    domaineEmail = '';
  }
  else if ( domaineEmailSelected == "WONoSelectionString" ) {
    domaineEmail = '';
  }
  else if ( domaineEmailSelected == "autres" ) {
    document.getElementById("afficheDomaineMajA").style.visibility = "visible";
    domaineEmail = '';
  }
  else {
    domaineEmail = domaineEmailSelected;
    if ( form.elements['pasdEmailA'] != null )
      form.elements['pasdEmailA'].checked = false;
  }
  form.elements['domaineEmailA'].value = domaineEmail;

  if ( ( cleEmail != '' ) || ( domaineEmail != '' ) ) {
    eMail = cleEmail + '@' + domaineEmail;
  }
  
  form.elements['EmailA'].value = eMail;
  //alert( " eMail : " + eMail );

}

function checkCleEmail ( form ) {

  var cleValue = '';
  var domaineValue = '';

  var form;
  var cleEmail;
  var indexArobas;
  var listeDomaines;
  var domaineEmail;
  var domaineEmailSelected;
  var eMail = '';

  //alert( " checkCleEmail  : form : " + form );

  cleEmail = form.elements['cleEmail'].value;

  indexArobas = cleEmail.indexOf('@');
  domaineEmailSelected = form.elements['listeDomaines'].value;

  document.getElementById("afficheDomaineMaj").style.visibility = "hidden";

  //alert( " cleEmail : " + cleEmail +  " indexArobas : " + indexArobas + " : domaineEmailSelected : " + domaineEmailSelected );

  if ( indexArobas != -1 ) {

    cleValue = cleEmail.substring( 0 , indexArobas );
    domaineValue = cleEmail.substring( indexArobas + 1 );

    form.elements['listeDomaines'].value = domaineValue;

    //alert( " cleValue : " + cleValue +  " domaineValue : " + domaineValue + " : selectedIndex : " + form.elements['listeDomaines'].selectedIndex );

    if ( ( form.elements['listeDomaines'].selectedIndex == -1 ) || 
	     ( domaineValue == 'autres' ) || 
		 ( domaineValue == 'domaine' ) ) {
      form.elements['listeDomaines'].value = "autres";
      document.getElementById("afficheDomaineMaj").style.visibility = "visible";
    }

  }
  else
  {
    cleValue = cleEmail;

    if ( domaineEmailSelected == "WONoSelectionString" ) {
      domaineValue = '';
    }
    else if ( domaineEmailSelected == "domaine" ) {
      domaineValue = '';
    }
    else if ( domaineEmailSelected == "autres" ) {
      document.getElementById("afficheDomaineMaj").style.visibility = "visible";
      domaineValue = form.elements['domaineEmail'].value;
    }
    else {
      domaineValue = domaineEmailSelected;
    }
  }

  form.elements['cleEmail'].value = cleValue;
  form.elements['domaineEmail'].value = domaineValue;

  if ( ( cleValue != '' ) || ( domaineValue != '' ) ) {
    eMail = cleValue + '@' + domaineValue;
    if( form.elements['pasdEmail'] != null )
      form.elements['pasdEmail'].checked = false;
    if ( form.elements['pasdOffreCommerciale'] != null ) {
       form.elements['pasdOffreCommerciale'].disabled = false;
    }
  }
  
  form.elements['Email'].value = eMail;
  
}

function checkCleEmailA ( form ) {

  var cleValue = '';
  var domaineValue = '';

  var form;
  var cleEmail;
  var indexArobas;
  var listeDomaines;
  var domaineEmail;
  var domaineEmailSelected;
  var eMail = '';

  //alert( " checkCleEmail  : form : " + form );

  cleEmail = form.elements['cleEmailA'].value;

  indexArobas = cleEmail.indexOf('@');
  domaineEmailSelected = form.elements['listeDomainesA'].value;

  document.getElementById("afficheDomaineMajA").style.visibility = "hidden";

  //alert( " cleEmail : " + cleEmail +  " indexArobas : " + indexArobas + " : domaineEmailSelected : " + domaineEmailSelected );

  if ( indexArobas != -1 ) {

    cleValue = cleEmail.substring( 0 , indexArobas );
    domaineValue = cleEmail.substring( indexArobas + 1 );

    form.elements['listeDomainesA'].value = domaineValue;

    //alert( " cleValue : " + cleValue +  " domaineValue : " + domaineValue + " : selectedIndex : " + form.elements['listeDomaines'].selectedIndex );

    if ( ( form.elements['listeDomainesA'].selectedIndex == -1 ) || 
	     ( domaineValue == 'autres' ) || 
		 ( domaineValue == 'domaine' ) ) {
      form.elements['listeDomainesA'].value = "autres";
      document.getElementById("afficheDomaineMajA").style.visibility = "visible";
    }

  }
  else
  {
    cleValue = cleEmail;

    if ( domaineEmailSelected == "WONoSelectionString" ) {
      domaineValue = '';
    }
    else if ( domaineEmailSelected == "domaine" ) {
      domaineValue = '';
    }
    else if ( domaineEmailSelected == "autres" ) {
      document.getElementById("afficheDomaineMajA").style.visibility = "visible";
      domaineValue = form.elements['domaineEmailA'].value;
    }
    else {
      domaineValue = domaineEmailSelected;
    }
  }

  form.elements['cleEmailA'].value = cleValue;
  form.elements['domaineEmailA'].value = domaineValue;

  if ( ( cleValue != '' ) || ( domaineValue != '' ) ) {
    eMail = cleValue + '@' + domaineValue;
    if( form.elements['pasdEmailA'] != null )
      form.elements['pasdEmailA'].checked = false;
  }
  
  form.elements['EmailA'].value = eMail;
  
}

function checkDomaineEmail ( form ) {

  var cleValue = '';
  var domaineValue = '';

  var form;
  var cleEmail;
  var domaineEmail;
  var eMail = '';

  //alert( " checkDomaineEmail  : form : " + form );

  cleEmail = form.elements['cleEmail'].value;
  domaineEmail = form.elements['domaineEmail'].value;

  // on verifie que le nouveau domaine n'est pas déjà dans la liste
  var s;
  var i = 0;
  
  for ( i ; i < form.elements['listeDomaines'].options.length ; i++ ) 
  {
    s = form.elements['listeDomaines'].options[i].value;
     
    if ( s == domaineEmail ) {
     
	   // alert( " domaineEmail  : s : " + s );

      form.elements['listeDomaines'].value = domaineEmail;
      document.getElementById("afficheDomaineMaj").style.visibility = "hidden";
  //    hideObject( "afficheDomaineMaj" );
     // break;
    };
  }

  if ( ( cleEmail != '' ) || ( domaineEmail != '' ) ) {
    eMail = cleEmail + '@' + domaineEmail;
    if ( form.elements['pasdEmail'] != null )
      form.elements['pasdEmail'].checked = false;
    if ( form.elements['pasdOffreCommerciale'] != null ) {
       form.elements['pasdOffreCommerciale'].disabled = false;
    }
  }
  
  form.elements['Email'].value = eMail;

}

function checkDomaineEmailA ( form ) {

  var cleValue = '';
  var domaineValue = '';

  var form;
  var cleEmail;
  var domaineEmail;
  var eMail = '';

  //alert( " checkDomaineEmail  : form : " + form );

  cleEmail = form.elements['cleEmailA'].value;
  domaineEmail = form.elements['domaineEmailA'].value;

  // on verifie que le nouveau domaine n'est pas déjà dans la liste
  var s;
  var i = 0;
  
  for ( i ; i < form.elements['listeDomainesA'].options.length ; i++ ) 
  {
    s = form.elements['listeDomainesA'].options[i].value;
     
    if ( s == domaineEmail ) {
     
	   // alert( " domaineEmail  : s : " + s );

      form.elements['listeDomainesA'].value = domaineEmail;
      document.getElementById("afficheDomaineMajA").style.visibility = "hidden";
  //    hideObject( "afficheDomaineMaj" );
     // break;
    };
  }

  if ( ( cleEmail != '' ) || ( domaineEmail != '' ) ) {
    eMail = cleEmail + '@' + domaineEmail;
    if ( form.elements['pasdEmailA'] != null )
      form.elements['pasdEmailA'].checked = false;
  }
  
  form.elements['EmailA'].value = eMail;

}

function initPasdEmail (form ) {
  if ( form.elements['pasdEmail'] != null && form.elements['pasdEmail'].checked == true) {
    form.elements['cleEmail'].value = "";
    form.elements['domaineEmail'].value = "";
    form.elements['listeDomaines'].selectedIndex = 0;
    if ( form.elements['pasdOffreCommerciale'] != null ) {
         form.elements['pasdOffreCommerciale'].disabled = true;
    }
  }
  else {
    if ( form.elements['pasdOffreCommerciale'] != null ) {
         form.elements['pasdOffreCommerciale'].disabled = false;
    }
  }
}

