 /**
 * Boolean verifEmail(string emailATester) 
 * Teste l'adresse E-mail passée en paramètre
 * retourne Vrai si l'adresse est bonne
 * retourne Faux si l'adresse est incorrecte   
 */
function verifEmail (emailATester)
{
  // Regex permettant de tester la validité de l'adresse fournie en paramètre.
  var regexEmail = /^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$/;

  if ( regexEmail.test(emailATester))
  {
    return true;
  }
  else
  {
    return false;
  }  
}

 /**
 * Boolean verifNumTel(string unNum) 
 * Teste le numéro de téléphone passée en paramètre
 * retourne Vrai si le numéro est valide
 * retourne Faux si le numéro est incorrect 
 */
function verifNumTel (unNum)
{
  var regex = new RegExp (/^0[1-68]([-.\s]?[0-9]{2}){4}$/gi);
  return (regex.test(unNum)) ;
}

 /**
 * entourerErreur(input unChamp) 
 * Change la couleur du contour du champ passé en paramètre
 */
function entourerErreur(unChamp) 
{
  // On change la classe de l'élément input pour que la couleur de ses bordures change		
	unChamp.className = "textinputHovered";
	unChamp.previousSibling.src = imagesPath + "input_left_xon.gif";
	unChamp.nextSibling.src = imagesPath + "input_right_xon.gif";
}

 /**
 * afficherMessageErreur(input unChamp, string unMessageDerreur) 
 * Affiche le message d'erreur "unMessageDerreur" sous le champ 
 * de type input, où l'erreur a été détectée.  
 */
function afficherMessageErreur(unChamp, unMessageDerreur)
{
  var zoneAffichageErreur = "";
  
	// On récupère le nom de la zone de paragraphe dans laquelle il faudra afficher l'erreur.
	zoneAffichageErreur = "E"+unChamp.id.substr(1);  
  
  // Si le message d'erreur est vide, on rend invisible la zone de notification d'erreur.
  if (unMessageDerreur == "")
  {
  	document.getElementById(zoneAffichageErreur).style.display = "none";
  }
  else
  {
    document.getElementById(zoneAffichageErreur).style.display = "inline";
  }
	
	// On affiche l'erreur
	document.getElementById(zoneAffichageErreur).innerHTML = '<img src="images/erreur.gif" alt="Erreur" style="vertical-align: middle; margin: 0px;" /> '+unMessageDerreur;
}

 /**
 * Boolean verifChampsObligatoires(form unFormulaire)
 * Test chaque chaque champ de type obligatoire présent
 * dans le formulaire.
 * Un champ obligatoire est caractérisé par un id
 * commençant par "O".
 * Retourne vrai si tous les champs sont valides et
 * correctement remplis.
 * Retourne faux si des erreurs ont été trouvées.
 */
function verifChampsObligatoires (unFormulaire)
{
  var mdp = "";
  var unMessageDerreur = "";
  var erreursDetectees = false;

  // Pour chaque élément du formulaire
  for (j=0; j<unFormulaire.elements.length; j++)
  {
    unMessageDerreur = "";
    // Si le champ d'id OmailNonSecuriseMembre est rempli.
    if (unFormulaire.elements[j].id.indexOf("OmailNonSecuriseMembre") >= 0)
    {
      // On masque la zone d'erreur par défaut.
      afficherMessageErreur(unFormulaire.elements[j], unMessageDerreur);
      // Si l'adresse mail n'est pas valide
      if (!verifEmail (unFormulaire.elements[j].value))
      {
        unMessageDerreur = "Veuillez saisir une adresse E-mail valide.";
        // On active la zone d'erreur au dessous du champ pour y afficher la nature de l'erreur.
        afficherMessageErreur(unFormulaire.elements[j], unMessageDerreur);

        erreursDetectees = true;
      }
    }

    // Si le champ d'id OmailNonSecuriseMembre est rempli.
    if (unFormulaire.elements[j].id.indexOf("mailSecuriseMembre") >= 0)
    {
      // On masque la zone d'erreur par défaut.
      afficherMessageErreur(unFormulaire.elements[j], unMessageDerreur);
      // Si l'adresse mail n'est pas valide
      if (!verifEmail (unFormulaire.elements[j].value) && unFormulaire.elements[j].value.length > 0)
      {
        unMessageDerreur = "Veuillez saisir une adresse E-mail valide.";
        // On active la zone d'erreur au dessous du champ pour y afficher la nature de l'erreur.
        afficherMessageErreur(unFormulaire.elements[j], unMessageDerreur);

        erreursDetectees = true;
      }
    }

    // Test pour vérifier les numéros de téléphone.
    if (unFormulaire.elements[j].id.indexOf("telDirectMembre") >= 0)
    {
      afficherMessageErreur(unFormulaire.elements[j], unMessageDerreur);
      // Si le numéro saisi par l'utilisateur n'est pas valide.
      if (!verifNumTel (unFormulaire.elements[j].value) && unFormulaire.elements[j].value.length > 0)
      {
        unMessageDerreur = "Veuillez entrer un numéro de téléphone valide.";
        afficherMessageErreur(unFormulaire.elements[j], unMessageDerreur);
        erreursDetectees = true;
      }
    }

    // Test pour vérifier les numéros de téléphone.
    if (unFormulaire.elements[j].id.indexOf("telSecretaireMembre") >= 0)
    {
      afficherMessageErreur(unFormulaire.elements[j], unMessageDerreur);
      // Si le numéro saisi par l'utilisateur n'est pas valide.
      if (!verifNumTel (unFormulaire.elements[j].value) && unFormulaire.elements[j].value.length > 0)
      {
        unMessageDerreur = "Veuillez entrer un numéro de téléphone valide.";
        afficherMessageErreur(unFormulaire.elements[j], unMessageDerreur);
        erreursDetectees = true;
      }
    }

    if (unFormulaire.id == 'inscription')
    {
      // Si le mot de passe est renseigné.
      if (unFormulaire.elements[j].id.indexOf("Omdp") >= 0)
      {
        afficherMessageErreur(unFormulaire.elements[j], unMessageDerreur);

        // On récupére le mot de passe choisi par l'utilisateur.
        mdp = unFormulaire.elements[j].value;
      }

      // Test pour vérifier que le mot de passe et la confirmation sont bien les mêmes.
      if (unFormulaire.elements[j].id.indexOf("OconfMdp") >= 0)
      {
        afficherMessageErreur(unFormulaire.elements[j], unMessageDerreur);
        // Si le mot de passe et sa confirmation sont différents.
        if (unFormulaire.elements[j].value != mdp)
        {
          unMessageDerreur = "Les mots de passe que vous avez saisi ne correspondent pas.";
          afficherMessageErreur(unFormulaire.elements[j], unMessageDerreur);
          erreursDetectees = true;
        }
      }
    }
    else
    {
      // Si le membre veut modifier son mot de passe
      if (unFormulaire.elements[j].id.indexOf("FmdpActuel") >= 0 && unFormulaire.elements[j].value.length > 0)
      {
         // On créé un objet XMLHttpRequest
        objetAjax = HttpRequest ();
        objetAjax.open("GET", "admin/requetesAjax_gestionUtilisateurs.php?action=verifMdpMembre&unIdMembre="+document.getElementById('idMembre').value+"&unMdp="+unFormulaire.elements[j].value, false);

        objetAjax.send(null);
        // Si le nouveau login n'est pas disponible
        if (objetAjax.responseText == "erreur")
        {
          unMessageDerreur = "Le mot de passe que vous avez saisi est incorrect.";
          afficherMessageErreur(unFormulaire.elements[j], unMessageDerreur);
          erreursDetectees = true;
        }
        else
        {
          // Si le mot de passe est renseigné.
          if (unFormulaire.elements[j].id.indexOf("Omdp") >= 0)
          {
            afficherMessageErreur(unFormulaire.elements[j], unMessageDerreur);

            // On récupére le mot de passe choisi par l'utilisateur.
            mdp = unFormulaire.elements[j].value;
          }

          // Test pour vérifier que le mot de passe et la confirmation sont bien les mêmes.
          if (unFormulaire.elements[j].id.indexOf("OconfMdp") >= 0)
          {
            afficherMessageErreur(unFormulaire.elements[j], unMessageDerreur);
            // Si le mot de passe et sa confirmation sont différents.
            if (unFormulaire.elements[j].value != mdp)
            {
              unMessageDerreur = "Les mots de passe que vous avez saisi ne correspondent pas.";
              afficherMessageErreur(unFormulaire.elements[j], unMessageDerreur);
              erreursDetectees = true;
            }
          }
        }
      }
    }


    // Test pour tous les champs obligatoires.
    if (unFormulaire.elements[j].id.substr(0, 1) == "O")
    {
      afficherMessageErreur(unFormulaire.elements[j], unMessageDerreur);
      // Si le champ ne contient aucune valeur.
      if (unFormulaire.elements[j].value.length == 0)
      {
        unMessageDerreur = "Champ obligatoire.";
        afficherMessageErreur(unFormulaire.elements[j], unMessageDerreur);
        erreursDetectees = true;
      }
    }
  }

  // Si au moins une erreur a été détectée, on retourne false de manière à stopper
  // l'envoi du formulaire.
  if (erreursDetectees)
  {
    return false;
  }
  else
  {
    return true;
  }
}

//affiche une image avec l'effet lightbox de slimbox
function montrerImage(unLienImage,uneDescriptionImage) {
  Lightbox.show(unLienImage, uneDescriptionImage);
}

function genererCaptcha (uneOption)
{
  if (uneOption == 1)
  {
    var prefixe = '';
  }
  else
  {
    var prefixe = '../';
  }
  var unChiffreAleatoire = Math.floor(Math.random() * 1000)+1;
   // On créé un objet XMLHttpRequest
  objetAjax = HttpRequest ();
  objetAjax.open("GET", prefixe+"requetesAjax.php?action=genererCaptcha&chiffreAleatoire="+unChiffreAleatoire+"&uneOption="+uneOption, true);

  objetAjax.onreadystatechange = function()
  {
      if(objetAjax.readyState == 4)
      {
        resultat = objetAjax.responseText;
        document.getElementById('imgCaptcha').innerHTML = resultat;
      }
      else
      {
        if (!document.getElementById('chargement'))
        {
          document.getElementById('imgCaptcha').innerHTML = '<img id="chargement" src="'+prefixe+'images/chargement.gif" alt="" />';
        }
      }
  }
  objetAjax.send(null);
}
