function stripslashes( str ) {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Ates Goral (http://magnetiq.com)
    // +      fixed by: Mick@el
    // +   improved by: marrtins
    // +   bugfixed by: Onno Marsman
    // +   improved by: rezna
    // *     example 1: stripslashes('Kevin\'s code');
    // *     returns 1: "Kevin's code"
    // *     example 2: stripslashes('Kevin\\\'s code');
    // *     returns 2: "Kevin\'s code"
 
    return (str+'').replace(/\0/g, '0').replace(/\\([\\'"])/g, '$1');
}

function testgetelements(champ){
  var obj=document.getElementById(champ);
  alert(obj.value); 
}

// JavaScript Document
var xhr = null;

function getXhr(){
    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;
    }
}

function lancer_initialisation_saisies_detaillees(){
    var formulaire = document.getElementById('form_princ');
    if(formulaire) {
        var id_champ="";
        var n=formulaire.length;
        for(var i=0; i<n; i++) {
          id_champ=formulaire[i].getAttribute('id');
          if (id_champ=='saisie_detaillee_enveloppe' || id_champ=='saisie_detaillee_usage_ecs' || id_champ=='saisie_detaillee_paroi' || id_champ=='saisie_detaillee_orientation_bv' || id_champ=='saisie_detaillee_travaux' || id_champ=='saisie_detaillee_travaux_detaille' || id_champ=='saisie_detaillee_consommation' || id_champ=='saisie_detaillee_resultats_intermediaires' || id_champ=='saisie_detaillee_questions_comp' || id_champ=='saisie_detaillee_prix_propane' ){
            if (document.getElementById(id_champ).value==1){
              //alert(saisie_detaillee);
              calcul_des_valeurs_par_defaut_des_saisies_detaillees(id_champ,0);
            }
          }
        }
    }
}

// ex getInfosAjax('GP','EXIST','etape_1_1','MI', '', this.options[this.selectedIndex].value, 'span_situation_geographique', 'combo', '')">

// ident passe l'id du champ déclencheur
// ident2 sert à passer d'autres id nécessaires au traitement côté ajax (à personnaliser selon les outils)

// Méthode qui sera appelée sur le click du bouton
function getInfosAjax(type_outil, type_projet, nom_page, type_construction, type_systeme, type_detail, autres_id){
//alert(type_outil); 
//alert(type_projet); 
//alert(nom_page); 
//alert(type_construction); 
//alert(type_systeme);
//alert(type_detail);

// autres_id contient le nom des saisies détaillées
//alert(autres_id);
//alert(document.getElementById('saisie_detaillee_travaux').value);

    // chargement dans autres_id de tous les champs de saisie du formulaire
    // autres_id peut contenir les id des saisies détaillées, comme ils ne sont pas traités dans ce premier pavé, on les conserve
    if (autres_id!='') autres_id+='|';
    var formulaire = document.getElementById('form_princ');
    if(formulaire) {
        var nom_champ="";
        var id_champ="";
        var type_champ="";
        var bloquage_champ="";
        var n=formulaire.length;
        for(var i=0; i<n; i++) {
          nom_champ=formulaire[i].getAttribute('name');
          bloquage_champ=formulaire[i].getAttribute('readonly');
          type_champ=formulaire[i].getAttribute('type');
//alert("nom="+nom_champ+" type="+type_champ+" readonly="+bloquage_champ);           
          if (nom_champ.substring(0,6)=="locale"){
            var posident=nom_champ.indexOf("id_", 0);
            if ( (type_champ!="hidden" && bloquage_champ!='readonly' && bloquage_champ!=true) ){ //|| (type_champ=="hidden" && posident>-1) ){
              id_champ=formulaire[i].getAttribute('id');
              autres_id+=id_champ+'|';
//   alert(id_champ+ " "+bloquage_champ);
            }
          }
        }
        autres_id=autres_id.substring(0,autres_id.length-1);
        //alert(autres_id);
    }

    var i=0;
    var j=0;
    var fin_url='';
    var saisie_detaillee= new Array();
    var saisies_detaillees_systemes='';
    
    if (autres_id!=""){
        var tabidents=autres_id.split('|');
        for (i=0; i<tabidents.length; i++){
      
          var objet="";
          /****************** saisies détaillées ********************/
          // saisie_detaillee_questions_comp ?
          if(tabidents[i].substring(0,16)=="saisie_detaillee"){
              // si il s'agit d'une saisie détaillée simple, un javascript sera lancé à la fin du script
              if (tabidents[i]=='saisie_detaillee_enveloppe' || tabidents[i]=='saisie_detaillee_usage_ecs' || tabidents[i]=='saisie_detaillee_paroi' || tabidents[i]=='saisie_detaillee_orientation_bv'  || tabidents[i]=='saisie_detaillee_travaux' || tabidents[i]=='saisie_detaillee_travaux_detaille' || tabidents[i]=='saisie_detaillee_consommation' || tabidents[i]=='saisie_detaillee_resultats_intermediaires' || tabidents[i]=='saisie_detaillee_questions_comp' || tabidents[i]=='saisie_detaillee_prix_propane'){
                  saisie_detaillee[j]=tabidents[i];
                  j++;
              }
              // si il s'agit d'une saisie détaillée système, le nom sera passé en paramètres
              else{
                  saisies_detaillees_systemes+=tabidents[i]+'|';
              }
          }
          /****************** fin saisies détaillées ********************/
          /****************** données à transférer ********************/
          
          objet=document.getElementById(tabidents[i]);
          if (objet){
              //alert(tabidents[i]+'='+objet.value);
              // on encode les données à envoyer pour échapper les carractères spéciaux      
              if (objet.nodeName=='SELECT'){
                  fin_url+="&"+tabidents[i]+"="+encodeURIComponent(objet.options[objet.selectedIndex].value); 
              }
              else{
                  fin_url+="&"+tabidents[i]+"="+encodeURIComponent(objet.value);
              }
          }
          
//alert(fin_url);    
          /****************** fin données à transférer ********************/
        
        
        // saisies détaillées système
        /*
        type_systeme
        pac, ven, ecs, emet, gen, sch, pec, sec, ase, tarif, svo
        
        saisie_detaillee_ventilation         ven
        saisie_detaillee_pac                 pac
        saisie_detaillee_generateur          gen
        saisie_detaillee_generateur_solaire  sch
        saisie_detaillee_appoint_ch          gen
        saisie_detaillee_ecs                 ecs
        saisie_detaillee_dyn                 pec
        saisie_detaillee_ecs_sol             sec
        saisie_detaillee_ecs_pac             pec
        saisie_detaillee_appoint_ecs         ase
        saisie_detaillee_type_tarif          tarif
        saisie_detaillee_voltaique           svo
        */
        
        }
        if (saisies_detaillees_systemes.length>0) saisies_detaillees_systemes=saisies_detaillees_systemes.substring(0,saisies_detaillees_systemes.length-1);  
    }
    
    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){
          if (xhr.status == 200){
            var reponse=xhr.responseText;
//alert('données brutes : \n'+reponse);
            var blocrecu=decodeURIComponent(reponse);
//alert('données décodées : \n'+blocrecu);
            var donneesrecues=stripslashes(blocrecu);
//alert('sans antislashes : \n'+donneesrecues);

            // on sépare l'affichage des zones de saisie de la gestion de l'aide
            var tabdonneesprim=donneesrecues.split('YY');

            // les zones de saisie 
            // on sépare les différentes zones de saisies entre elles           
            var tabdonneesinter=tabdonneesprim[0].split('ZZ');
              // pour chaque zone de saisie on sépare le nom de la zone et son contenu
              for (i=0; i<tabdonneesinter.length-1; i++){
                var tabdonnees=tabdonneesinter[i].split('KK');
//if (tabdonnees[0]=='') alert(tabdonnees[0]+".innerHTML="+tabdonnees[1]);

                document.getElementById(tabdonnees[0]).innerHTML=tabdonnees[1];
               }

            // la gestion de l'aide
            // on sépare chaque ligne de code pour les executer à l'aide d'un eval
            tabdonnees=tabdonneesprim[1].split('KK');
            if (tabdonnees.length>0){
              for (i=0; i<tabdonnees.length-1; i++){
//alert(tabdonnees[i]);
                if (tabdonnees[i]!="") eval(tabdonnees[i]);
              }
            }
            
            // la gestion de pioche (tableau javascript chargeant des données utilisables par les scripts javascripts)
            if (tabdonneesprim.length>2){
                tabdonnees=tabdonneesprim[2].split('KK');
                if (tabdonnees.length>0){
                    for (i=0; i<tabdonnees.length-1; i++){
//alert(tabdonnees[i]);
                      if (tabdonnees[i]!="") eval(tabdonnees[i]);
                    }
                }
            }
            
//alert('tableau:'+saisie_detaillee.length);
            if (document.getElementById('type_outil').value=='PRO'){
            if (saisie_detaillee.length>0){
                for (j=0; j<saisie_detaillee.length; j++){
                  if (document.getElementById(saisie_detaillee[j]).value==1){
                      calcul_des_valeurs_par_defaut_des_saisies_detaillees(saisie_detaillee[j],0);
                  }
                }
            }
            else if (autres_id==""){
                lancer_initialisation_saisies_detaillees();
            }
            }
            
          }
          else alert("error code:"+xhr.status);
        }
        
    }
    
    var chaine_envoyee="ajax.php?type_outil="+type_outil+"&type_projet="+type_projet+"&nom_page="+nom_page+"&type_construction="+type_construction+"&type_systeme="+type_systeme+"&type_detail="+type_detail+"&saisies_detaillees_systemes="+saisies_detaillees_systemes+fin_url;
//alert(chaine_envoyee);    
//alert(chaine_envoyee.length);
//mapopup = window.open ('', 'fenetre', config='height=400, width=600, toolbar=no, menubar=no, scrollbars=auto, resizable=no, location=no, directories=no, status=no');
//mapopup.document.write("<html><head></head><body>"+chaine_envoyee+"</body></html>");

    xhr.open("GET",chaine_envoyee,true);
    //alert("ajax.php?type_outil="+type_outil+"&type_projet="+type_projet+"&nom_page="+nom_page+"&type_construction="+type_construction+"&type_systeme="+type_systeme+"&type_detail="+type_detail+"&saisies_detaillees_systemes="+saisies_detaillees_systemes+fin_url);
    //xhr.open("GET","ajax.php?type_outil="+type_outil+"&type_projet="+type_projet+"&nom_page="+nom_page+"&type_construction="+type_construction+"&type_systeme="+type_systeme+"&type_detail="+type_detail+"&saisies_detaillees_systemes="+saisies_detaillees_systemes+fin_url,true);
    xhr.send(null);
}

function GetSolutionAjax(num_solution) {
  if (num_solution!=""){
        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){
            document.getElementById("zone_affichage_designation_solution").innerHTML=xhr.responseText;
          }
        }
        xhr.open("GET","RESULTAT.php?num_solution="+num_solution,true);
        xhr.send(null);
  }
}

function CheckMailAjax(nomchamp,str,nomspan,nomfichier) {
  if (str!=""){
      var mail = new RegExp("^[-a-z0-9_\.]{3,}@[-a-zA-Z0-9_]{3,}\.[a-z]{2,4}$");
      if (!mail.test(str)){
        alert("veuillez entrer une adresse mail valide");
        document.getElementById(nomchamp).focus();
      }
      else{
        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){
            document.getElementById(nomspan).innerHTML=xhr.responseText;
          }
        }
        xhr.open("GET","ajax_presence_fichier.php?nomfichier="+nomfichier+"&email="+str,true);
        xhr.send(null);
      }
  }
  else{
      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){
          document.getElementById(nomspan).innerHTML=xhr.responseText;
        }
      }
      xhr.open("GET","ajax_presence_fichier.php?nomfichier=&email=",true);
      xhr.send(null);
  }
}

