// 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
    return null;
  }
  return xhr;
}

// execute une requete et retourne la réponse
function nf_call_and_return(page){    
    var xhr = getXMLHTTP();
    xhr.onreadystatechange = function() {
        if (xhr.readyState == 4) {
            if (xhr.status == 200) {
                return xhr.responseText;
            }
        }
    }
    page += (page.indexOf("?") > 0 ? "&" : "?")+'pxekls='+Math.round(Math.random()*100000);
    xhr.open("GET", page, true);
    xhr.send(null);
}


function nf_widget(page, id, interval) {
    var contenu  = "<div id='"+id+"'><script language='javascript'>nf_call_widget('"+page+"', '"+id+"')</script></div>";
    if (interval > 0)
      contenu += "<script language=javascript>setInterval('nf_call_widget(\\'"+page+"\\', \\'"+id+"\\')', "+interval+");</script>";

    document.open();
    document.write (contenu);
    document.close();
}

function nf_call_widget(page, id) {
    var xhr = getXMLHTTP();
    xhr.onreadystatechange = function() {
        if (xhr.readyState == 4) {
            if (xhr.status == 200) {
                document.getElementById(id).innerHTML = xhr.responseText;
            }
        }
    }
    page += (page.indexOf("?") > 0 ? "&" : "?")+'pxekls='+Math.round(Math.random()*100000);
    xhr.open("GET", page, true);
    xhr.send(null);
}  
  
function nf_call_widget_value(page,ma_fonction) {
    var xhr = getXMLHTTP();

    xhr.onreadystatechange = function() {
        if (xhr.readyState == 4){           
            if (xhr.status == 200){
                if (window.ActiveXObject){
                    nf_XMLDOM=new ActiveXObject("Microsoft.XMLDOM")
                    nf_XMLDOM.async="false";
                    nf_XMLDOM.loadXML(xhr.responseText);
                }
                // code for Mozilla, Firefox, Opera, etc.
                else{
                    var parser=new DOMParser();
                    nf_XMLDOM=parser.parseFromString(xhr.responseText,"text/xml");                    
                } 
                
                
                eval(ma_fonction+"('"+nf_encode_string(xhr.responseText)+"');");
                
            }
        }
    }
    page += (page.indexOf("?") > 0 ? "&" : "?")+'pxekls='+Math.round(Math.random()*100000);
    xhr.open("GET", page, true);
    xhr.send(null);
}

function nf_encode_string(chaine){
    return(chaine.replace(/'/g,"\\'").replace(/\n/g,"---utiliser_fonction-nf_decode_string-dans_lib_ajax---"));
}

function nf_decode_string(chaine){
    return(chaine.replace(/---utiliser_fonction-nf_decode_string-dans_lib_ajax---/g,"\n"));
}

function nf_call_widget_value_xml(page,ma_variable,ma_fonction){
  var xhr = getXMLHTTP();
  xhr.onreadystatechange = function(){
      if (xhr.readyState == 4){           
          if (xhr.status == 200){
              if (window.ActiveXObject){                  
                  nf_XMLDOM=new ActiveXObject("Microsoft.XMLDOM");
                  nf_XMLDOM.async="false";
                  nf_XMLDOM.loadXML(xhr.responseText);
              }
              //code for Mozilla, Firefox, Opera, etc.
              else{
                  var parser=new DOMParser();
                  nf_XMLDOM=parser.parseFromString(xhr.responseText,"text/xml");
              }
              eval(ma_variable+"=nf_XMLDOM;");
              eval(ma_fonction+"();");  
          }
      }
  }
  page += (page.indexOf("?") > 0 ? "&" : "?")+'pxekls='+Math.round(Math.random()*100000);
  xhr.open("GET", page, true);
  xhr.send(null);
}
  
function nf_is_OK(page) {
    var xhr = getXMLHTTP();
    xhr.open("GET", page, false);
    xhr.send(null);
    return(xhr.responseText=="OK");
}
function vide() {
}

function nf_send_ajax(page) {
    var xhr = getXMLHTTP();
    xhr.onreadystatechange = function(){}
    xhr.open("GET", page, true);
    xhr.send(null);
}

/********************************************************************************************************************************************************
*                      Dans la page qui est appelée, il faut mettre "header('Content-Type: text/html; charset=ISO-8859-1');"                            *
********************************************************************************************************************************************************/
