//******************************************************************************
//                    retourne un objet xmlHttpRequest.                        *
//      méthode compatible entre tous les navigateurs (IE/Firefox/Opera)       *
//******************************************************************************
function getXMLHTTP(){
  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) {
      try {
        xhr = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e1) {
        xhr = null;
      }
    }
  }
  else { // XMLHttpRequest non supporté par le navigateur
    alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
  }
  return xhr;
}

//******************************************************************************
//                   modification de la valeur d'un input                      *
//******************************************************************************
function set_input_texte(le_input, la_source, criteres, si_rien, asynchrone) {
  var xhr = getXMLHTTP();

  if (xhr) {
    if (asynchrone) {
      // 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) {
          desactive_chargement_en_cour();
          if (xhr.status == 200) {
            var docXML    = xhr.responseXML;
            var ValOption = docXML.getElementsByTagName("valeur");
    
            //on affecte element "donnee" trouvé
            if (ValOption.length>0) {
              document.getElementById(le_input).value = ValOption[0].firstChild.nodeValue;
            }
            else {
              document.getElementById(le_input).value = si_rien;
            }
          }
        }
        else document.getElementById(le_input).value = "Error code " + xhr.status;
      }
    }
  // Ici on va voir comment faire du post
    xhr.open("POST", la_source, asynchrone);
    // ne pas oublier ça pour le post
  
    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    // ne pas oublier de poster les arguments
  
    active_chargement_en_cour();
    xhr.send(criteres);
    
    if (!asynchrone) {
      if (xhr.status == 200) {
        var docXML    = xhr.responseXML;
        var ValOption = docXML.getElementsByTagName("valeur");
  
        desactive_chargement_en_cour();
        //on affecte element "donnee" trouvé
        if (ValOption.length>0) {
          document.getElementById(le_input).value = ValOption[0].firstChild.nodeValue;
        }
        else {
          document.getElementById(le_input).value = si_rien;
        }
      }
      else document.getElementById(le_input).value = "Error code " + xhr.status;
    }
  }
}

//******************************************************************************
//            modification des élément d'une liste select                      *
//******************************************************************************
function set_select_option(le_select, la_source, criteres, valeur_defaut, si_rien) {
  var xhr = getXMLHTTP();

  if (xhr) {
    // 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) {
        desactive_chargement_en_cour();
        if (xhr.status == 200) {
          var docXML    = xhr.responseXML;
          var ValId     = docXML.getElementsByTagName("id");
          var ValOption = docXML.getElementsByTagName("valeur");
  
          //on fait juste une boucle sur chaque element "donnee" trouvé
          document.getElementById(le_select).options.length = 0;
          if (ValId.length>0) {
            for (i = 0; i<ValId.length; i++) {
              var o = new Option(ValOption[i].firstChild.nodeValue, ValId[i].firstChild.nodeValue);
              document.getElementById(le_select).options[document.getElementById(le_select).options.length] = o;
              if (ValId[i].firstChild.nodeValue == valeur_defaut) {
                document.getElementById(le_select).options[document.getElementById(le_select).options.length-1].selected = true;
              }
            }
  //          if (valeur_defaut<>-1) {document.getElementById(le_select).valeur=valeur_defaut}
          }
          else {
              var o = new Option(si_rien, "-1");
              document.getElementById(le_select).options[document.getElementById(le_select).options.length] = o;
          }
        }
        else {
            var o = new Option("Error code " + xhr.status, "-1");
            document.getElementById(le_select).options[document.getElementById(le_select).options.length] = o;
        }
      }
    }
    // Ici on va voir comment faire du post
  
    xhr.open("POST", la_source, true);
    // ne pas oublier ça pour le post
  
    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    // ne pas oublier de poster les arguments
  
    active_chargement_en_cour();
    xhr.send(criteres);
  }
}

//******************************************************************************
//                     modification de innerHTML d'un div                      *
//******************************************************************************
function set_div_innerHTML(le_div, la_source, criteres, si_rien) {
  var xhr = getXMLHTTP();
  var div = document.getElementById(le_div);
  var val_status = 0;

  if (xhr) {
    // On défini ce qu'on va faire quand on aura la réponse    fichierPHP
    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) {
        desactive_chargement_en_cour();

        if (xhr.status == 200) {
          var docTexte = xhr.responseText;
  
          //on affecte element "donnee" trouvé
          if (docTexte != '') {
            div.innerHTML = docTexte;
            eval(get_nom_fichier(la_source) + "()");
          }
          else {
            div.innerHTML = si_rien;
          }
        }
        else div.innerHTML = "Error code " + xhr.status;
//        document.getElementById("chargement").style.display="none";
      }
    }
  }
  // Ici on va voir comment faire du post
  xhr.open("POST", la_source, true);
  // ne pas oublier ça pour le post
  xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;");
  // ne pas oublier de poster les arguments
  //document.getElementById("chargement").style.display="block";
  active_chargement_en_cour();
  xhr.send(criteres);
}

//******************************************************************************
//                recherche de le page en cours pour la session                *
//******************************************************************************
function set_page_en_cours(criteres, si_rien) {
  var xhr = getXMLHTTP();
  var div = document.getElementById('contenu');

  if (xhr) {
    // 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) {
        desactive_chargement_en_cour();
        if (xhr.status == 200) {
          var la_source = xhr.responseText;
  
          //on affecte element "donnee" trouvé
          if (la_source != '') {
            //document.getElementById('contenu').innerHTML=la_source;
            set_div_innerHTML('contenu', la_source, criteres, 'si_rien');
          }
          else {
            div.innerHTML = si_rien;
          }
          //alert('fin set_page_en_cours');
          //document.getElementById("chargement").style.display="none";
        }
        else div.innerHTML = "Error code " + xhr.status;
      }
    }
  }
  // Ici on va voir comment faire du post
  xhr.open("POST", 'xml/page_actif.php', true);
  // ne pas oublier ça pour le post
  xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;");
  // ne pas oublier de poster les arguments
  active_chargement_en_cour();
  xhr.send(criteres);
}

//******************************************************************************
//                Affichage du message "Chargement en cours"                   *
//******************************************************************************
var div_chargement_en_cour = '';
var cpt_chargement_en_cour = 0;

function init_chargement_en_cour(nom_div) {
  div_chargement_en_cour = nom_div;
}

function active_chargement_en_cour() {
  if (cpt_chargement_en_cour == 0) {document.getElementById(div_chargement_en_cour).style.display = 'block';}
  cpt_chargement_en_cour++;
}

function desactive_chargement_en_cour() {
  cpt_chargement_en_cour--;
  if (cpt_chargement_en_cour == 0) {document.getElementById(div_chargement_en_cour).style.display = 'none';}
}

//******************************************************************************
//                     Echange de donnée avec le serveur                       *
//******************************************************************************
function set_ctrl_donnees(la_source, criteres, si_rien) {
  fichierPHP_mdp = la_source;
  var xhr = getXMLHTTP();

  if (xhr) {
    // 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
      //alert('onreadystatechange');
      if (xhr.readyState == 4) {
        desactive_chargement_en_cour();
        if (xhr.status == 200) {
          var docTexte = xhr.responseText;
          var reg = new RegExp("(')", "g");
          var reg2 = new RegExp("(\n)", "g");
          var NomFonction;
  
          docTexte = docTexte.replace(reg,'"');
          docTexte = docTexte.replace(reg2,' ');
          NomFonction = get_nom_fichier(la_source) + "('" + docTexte + "')";
  
          //on affecte element "donnee" trouvé
          eval(NomFonction);
  //        document.getElementById("chargement").style.display="none";
        }
        else alert("Error code " + xhr.status);
      }
    }
  }
  // Ici on va voir comment faire du post
  xhr.open("POST", la_source, true);
  // ne pas oublier ça pour le post
  xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;");
  // ne pas oublier de poster les arguments
  //document.getElementById("chargement").style.display="block";
  active_chargement_en_cour();
  xhr.send(criteres);
}



