/**
 * Affiche le formulaire permettant à un visiteur d'envoyer un message au pro
 **/
function afficher_formulaire_contact(){
  // Affichage du voile
  activer_voile('bloc_form_message_user');
}

//==============================================================================

/**
 * Ferme le formulaire de saisi de message
 **/
function fermer_formulaire_contact(){
  // Fermeture du bloc
  document.getElementById('bloc_form_message_user').style.display = 'none';
  
  // Réinitialisation du bloc
  document.getElementById('form_message_error').style.display = "none";
  document.getElementById('form_message').style.display = "block";
  document.getElementById('form_message_ok').style.display = "none";
  document.getElementById('form_message_email').value = "";
  document.getElementById('form_message_sujet').value = "";
  document.getElementById('form_message_message').value = "";
  
  // Désactivation du voile
  desactiver_voile();
}

//==============================================================================

/**
 * active le voile sur la page et affiche le bloc si un id de l'element est
 * fourni
 **/
function activer_voile(nom_div){
  // Variable pour savoir si Ie ou Autre
  var isIE  = document.all?true:false;
    
  // Variable contenant le style du voile
  var style = "position:absolute; top:0px; left:0px; background:#CCCCCC; height:0px; width:0px; filter:alpha(opacity=65); -moz-opacity:.65; opacity:.65;";
  
  // Création de la div pour le voile
  var div_voile = document.createElement("div");
  
  // Défintion des attribut de la div du voile
  div_voile.setAttribute("id"   , "voile_page");
  
  if ( isIE ) div_voile.style.setAttribute("cssText", style);
  else        div_voile.setAttribute("style", style);
  
  // Ajout du voile à la page
  document.body.appendChild(div_voile);
  
  // Récupération d'un objet sur le voile
  var elt = document.getElementById("voile_page");
  
  // Div à afficher
  if ( nom_div != "" ){
    var bloc = document.getElementById(nom_div);
  }

  var hauteur_fenetre;
  var largeur_fenetre;
  var hauteur_page;
  var largeur_page;
  var hauteur_scrollbar;
  
  // Pour IE
  if (isIE) {
    //alert(">>> IE");
    //alert(document.body);
    hauteur_fenetre = document.body.clientHeight;
    largeur_fenetre = document.body.clientWidth;
    
    //hauteur_page = document.documentElement.clientHeight;
    //largeur_page = document.documentElement.clientWidth;
    
    //alert(document.documentElement);
    //alert(document.documentElement.offsetHeight);
    
    //hauteur_page = document.documentElement.clientHeight;
    //largeur_page = document.documentElement.clientWidth;
    hauteur_page = document.documentElement.offsetHeight;
    largeur_page = document.documentElement.offsetWidth;
    
    hauteur_scrollbar = document.documentElement.scrollTop;
  }
  // Pour tous les autres navigateurs
  else {
    hauteur_fenetre = window.innerHeight;
    largeur_fenetre = window.innerWidth;
    
    hauteur_page = document.body.clientHeight;
    //hauteur_page = document.body.offsetHeight;
    largeur_page = document.body.clientWidth;
    
    hauteur_scrollbar = window.pageYOffset;
  }
  
   /* alert("hauteur_fenetre=["+hauteur_fenetre+"]\n"+
        "largeur_fenetre=["+largeur_fenetre+"]\n"+
        "hauteur_page=["+hauteur_page+"]\n"+
        "largeur_page=["+largeur_page+"]\n"+
        "hauteur_scrollbar=["+hauteur_scrollbar+"]");
   */
  if (document.body) iHauteur = (document.body.clientHeight);
  else iHauteur = (window.innerHeight);

  if ( hauteur_page < hauteur_fenetre ) hauteur_page = hauteur_fenetre;
  
  // Affichage du voile
  if (elt) {
    elt.style.height = eval(hauteur_page+0)+"px";
    elt.style.width  = eval(largeur_page+0)+"px";
    elt.style.display='block';
  }
  
  // Affichage de la fenetre de message
  if (bloc) {
    bloc.style.top  = eval( ((hauteur_fenetre-150)/2) + hauteur_scrollbar )+"px";
    bloc.style.left = ((largeur_fenetre-400)/2)+"px";
    bloc.style.display='block';
  }
}

//==============================================================================

/**
 * Supprime le voile présent sur la page et ferme dont le nom est passé en paramêtre.
 **/
function desactiver_voile(nom_div) {
  // Fermeture de la div
  if ( nom_div != "" && typeof(nom_div) != "undefined" ){
    elt_div = document.getElementById(nom_div);
    if ( typeof(elt_div) != "undefined" ){
      elt_div.style.display = "none";
    }
  }
  
  // Fermeture du voile
  elt_voile = document.getElementById('voile_page');
  if ( typeof(elt_voile) != "undefined" ){
    elt_voile.style.display = "none";
  }
}

//==============================================================================

/**
 * Ajax > Traitement message
 **/
function ajax_traitement_message(){
  // Force la desactivation du message d'erreur
  document.getElementById('form_message_error').style.display = "none";
  
  // Récupération des données
  var id_annonce  = document.getElementById('form_message_id_annonce').value;
  var id_user     = document.getElementById('form_message_id_user').value;
  var email       = document.getElementById('form_message_email').value;
  var sujet       = document.getElementById('form_message_sujet').value;
  var message     = document.getElementById('form_message_message').value;
  
  // Vérification du formulaire
  var message_error = "";
  
  if ( email == "" ) message_error += "<li>Adresse e-mail manquante.</li>";
  else if ( test_mail(email) == false ) message_error += "<li>Adresse e-mail incorrecte.</li>"
  if ( sujet == "" ) message_error += "<li>Sujet manquante.</li>";
  if ( message == "" ) message_error += "<li>Message manquant.</li>";
  
  if ( message_error != "" ) {    
    // Affichage du message d'erreur
    message_error = "Le formulaire n'a pas été saisi correctement :<ul>"+message_error+"</ul>";
    document.getElementById('form_message_error').innerHTML = message_error;
    document.getElementById('form_message_error').style.display = "block";
    
    return false;
  }
  
  // Objet pour l'appel Ajax
  var xhr = getXhr();
  
  // On défini ce qu'on va faire quand on aura la réponse
  xhr.onreadystatechange = function(){    
    // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    if(xhr.readyState == 4 && xhr.status == 200){
      responseText = xhr.responseText;
      
      //alert(responseText);
      
      // Si le message a bien été envoyé
      if ( responseText == true ){
        document.getElementById('form_message').style.display = 'none';
        document.getElementById('form_message_ok').style.display = 'block';
      }
      // Sinon affichage d'un message d'erreur
      else{
        message_error = "Une erreur s'est produite lors de l'envoie de votre message.<br />Merci de réessayer plus tard.";
        document.getElementById('form_message_error').innerHTML = message_error;
        document.getElementById('form_message_error').style.display = "block";
      }
    }
  }
  
  xhr.open("POST", "_traitement-message-user.php", true);
  xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  xhr.send("id_annonce="+id_annonce+"&id_user="+id_user+"&email="+email+"&sujet="+sujet+"&message="+message);
  
  return true;
}

//==============================================================================

function test_mail(valeur){
  var re = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
  if(!re.test(valeur))
    return false;
  return true;
}

//==============================================================================

/**
 * fonction retournant un objet d'appel ajax
 **/
function getXhr(){
  var xhr = null;
  if(window.XMLHttpRequest) // Firefox et autres
      xhr = new XMLHttpRequest();
      else if(window.ActiveXObject){ // Internet Explorer
          try {
              xhr = new ActiveXObject("Msxml2.XMLHTTP");
          } catch (e) {
              xhr = new ActiveXObject("Microsoft.XMLHTTP");
      }
  }
  else { // XMLHttpRequest non supporté par le navigateur
      alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
      xhr = false;
  }
  return xhr
}

