/**
* afficherDiv(object unIdDiv) 
* affiche ou masque le div entrée en paramètre  
*/
function afficherDiv(unIdDiv)
{
	var id = document.getElementById(unIdDiv);
 
  // Si le div est affiché, on le masque
	if (id.style.display == "block") 
  {
		id.style.display = "none";
		document.getElementById('zoneCentrale').style.display = "none";
		document.getElementById('hautZoneCentrale').style.display = "none";
		document.getElementById('milieuZoneCentrale').style.display = "none";
		document.getElementById('basZoneCentrale').style.display = "none";
		
    document.getElementById('nousContacter').style.display = "none";
    document.getElementById('planDuSite').style.display = "none";    		
    document.getElementById('mentionsLegales').style.display = "none";
      
    remonterChoixEspace();
	}
	// Sinon on l'affiche
  else
  {
    document.getElementById('nousContacter').style.display = "none";
    document.getElementById('planDuSite').style.display = "none";
    document.getElementById('mentionsLegales').style.display = "none";
    
		id.style.display = "block";
		document.getElementById('zoneCentrale').style.display = "block";
		document.getElementById('hautZoneCentrale').style.display = "block";
		document.getElementById('milieuZoneCentrale').style.display = "block";
		document.getElementById('basZoneCentrale').style.display = "block";
    if (document.getElementById('choixEspace').style.marginTop != '0px')
    {
  		document.getElementById('choixEspace').style.marginTop = '0px';
  		document.getElementById('choixEspace').style.marginBottom = '3px';
  		document.getElementById('choixEspace').style.background = 'url(\'images/header.jpg\')';
  		document.getElementById('choixEspace').style.marginLeft = '0px';
  		document.getElementById('choixEspace').style.width = '790px';
  		document.getElementById('choixEspace').style.height = '222px';
    }
	}
}

/**
* remonterChoixEspace() 
* Permet de remonter ou de redescendre le div de la page d'accueil 
* en fonction de l'affichage des onglets de la page
*/
function remonterChoixEspace()
{
  // Si un onglet est ouvert, on décale le div central en haut
	if (document.getElementById('choixEspace').style.marginTop != '0px') 
  {
		document.getElementById('choixEspace').style.marginTop = '0px';
		document.getElementById('choixEspace').style.marginBottom = '3px';
		document.getElementById('choixEspace').style.background = 'url(\'images/header.jpg\')';
		document.getElementById('choixEspace').style.marginLeft = '0px';
		document.getElementById('choixEspace').style.width = '790px';
		document.getElementById('choixEspace').style.height = '222px';
	}
	// Sinon, on le redescend au centre.
  else 
  {    		
		document.getElementById('choixEspace').style.marginTop = '222px';
		document.getElementById('choixEspace').style.marginBottom = '0px';
		document.getElementById('choixEspace').style.background = 'url(\'images/fondChoixEspace.gif\')';
		document.getElementById('choixEspace').style.marginLeft = '5px';
		document.getElementById('choixEspace').style.width = '785px';
		document.getElementById('choixEspace').style.height = '217px';
	}      
}


function crypterZoneMDP ()
{
  document.getElementById('motDePasseAffiche').style.display = 'none'; 
  document.getElementById('motDePasse').style.display = 'inline'; 
  document.forms["connexion"].motDePasse.focus();
}


 /**
 * 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";
    document.getElementById(zoneAffichageErreur).style.color = "#dd4909";
    document.getElementById(zoneAffichageErreur).style.fontStyle = "italic";
  }
	
	// On affiche l'erreur
	document.getElementById(zoneAffichageErreur).innerHTML = '<img src="images/erreur.png" alt="Erreur" /> '+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 = "Ce champ est 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;
  }
}

function afficherSommaire ()
{
  document.getElementById('texte').style.display = "block";
  document.getElementById('lienSommaire').style.display = "none";
}

function masquerSommaire ()
{
  document.getElementById('texte').style.display = "none";
  document.getElementById('lienSommaire').style.display = "block";
}

// Fonction de suivi de la souris
function calculPositionBulle(e)
{
  if(bulle)
  {
    var uneBulle = document.getElementById('bulle');
    if(e)
    {
      uneBulle.style.left = (-15)+e.pageX+document.documentElement.scrollLeft+"px";
      uneBulle.style.top = 15+e.pageY+document.documentElement.scrollLeft+"px";
    }
    else
    {
      uneBulle.style.left = (-15)+event.clientX+document.documentElement.scrollLeft+"px";
      uneBulle.style.top = 15+event.clientY+document.documentElement.scrollTop+"px";
    }
    bulle = false;
  }
}

function ouvrirBulle(unIdNews)
{
  if(bulle==false)
  {
    var uneBulle = document.getElementById('bulle');
    uneBulle.style.visibility = "visible";

     // On créé un objet XMLHttpRequest
    objetAjax = HttpRequest ();
    objetAjax.open("GET", "requetesAjax.php?action=afficherNews&unIdNews="+unIdNews, true);

    objetAjax.onreadystatechange = function()
    {
        if(objetAjax.readyState == 4)
        {
          resultat = objetAjax.responseText;
          document.getElementById('centreBulle').innerHTML = resultat+'<p style="text-align:center; color:#AA0000;">[<a style="color:#AA0000;" href="javascript: fermerBulle()">Fermer</a>]</p>';
        }
        else
        {
          // On affiche le message de chargement
          if (!document.getElementById('chargementInfos'))
          {
            document.getElementById('centreBulle').innerHTML = '<p id="chargementInfos" style="text-align: center;"><img src="images/chargement.gif" alt="" /><br />Chargement...</p>';
          }
        }
    }
    objetAjax.send(null);

    bulle=true;
  }
}

function fermerBulle()
{
  document.getElementById("bulle").style.visibility = "hidden"; // Si la bulle est visible on la cache
}

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);
}

// on formate la bulle.
document.write('<div id="bulle" class="infoBulle"><div class="hautInfoBulle"></div><div id="centreBulle" class="centreInfoBulle"></div><div class="basInfoBulle" class="basInfoBulle"></div></div>');

var bulle = false;

document.onclick = calculPositionBulle;
