// XML HTTP REQUEST GENERIQUE:
  function getHTTPObject() {
    var xmlhttp;
    if (window.ActiveXObject) {
	  xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    } else if (window.XMLHttpRequest) {
	  xmlhttp = new XMLHttpRequest();
    }
    return xmlhttp;
  }
  
  var http = getHTTPObject();
  
  function getData(formu, dest, fct){
	var valeurs="";
	var form_courant="";
	// défini la méthode et la page pour envoyer les données.
	http.open("POST", dest, true);
    // action à mener quand la page d'action aura fini son chargement.
    http.onreadystatechange = function(){ 
      if (http.readyState == 4)
	    fct(http.responseText); 
	}
	// défini le "content-type" parcequ'on utilise la méthode POST.
	http.setRequestHeader("Content-type", "application/x-www-form-urlencoded;");
    // indique que tous les formulaires sont concaténés.
	if(formu==''){ valeurs = "concat_frm=1"; }
    // parcours tous les formulaires.
	for(var j=0; j<document.forms.length; j++){
	  // cas particulier ou on ne renvoi qu'un formulaire précis.
	  if((document.forms[j].name==formu.name)||(formu=='')){
	    form_courant = document.forms[j].elements;
	    // parcours tous les éléments du formulaire.
		for(var i=0; i<form_courant.length; i++){
	      // N'envoi pas les valeurs des boutons, submit et reset.
		  if((form_courant[i].type!='button')&&(form_courant[i].type!='submit')&&(form_courant[i].type!='reset')){
		    valeurs += (valeurs=="" ? escape(form_courant[i].name) + '=' + escape(form_courant[i].value) : '&' + escape(form_courant[i].name) + '=' + escape(form_courant[i].value));		
          }
	    }
	  }
	}
	// envoi le formulaire.
	http.send(valeurs);
  }
