//---------------------------------------------------------------------------------------
// A D D E O _ R E Q U E S T _ XMLHTTP . J S 
// RA 07/2003
//---------------------------------------------------------------------------------------

var xml_http_simulation=0;
var XML_HTTP_SEPARATEUR_LIGNES="XXRCXX";
var XML_HTTP_SEPARATEUR_CHAMPS="xxxSCxxx";

//---------------------------------------------------------------------------------------
// constructeur d'une requete "à la addeo"
// on definit la fct exécutée pdt la réception et celle exécutée 
// en fin de réception complète des données
function addeo_xmlhttp(url, F_callback, param_F_callback)
{
var xml_http;

// création objet <> selon navigateur
if(window.ActiveXObject)
	xml_http = new ActiveXObject("Microsoft.XmlHttp");

// NS/moz
if (window.XMLHttpRequest)
	xml_http = new XMLHttpRequest();

if(xml_http == null)	
	{
	alert("echec creation xmlhttp");
	return;
	}

this.xmlhttp = xml_http;
this.url = url;
this.resultat = null;
this.traiter_reception = F_callback;
this.param_traiter_reception = param_F_callback;
this.ouvrir = ouvrir_requete;
this.fermer = fermer_requete;
this.envoyer = envoyer_requete
this.methode = ""; 
if(F_callback)
	xml_http.onreadystatechange = F_callback;

return(this);
}

//---------------------------------------------------------------------------------------
// Destruction de la requete (objet et objet ActiveX inclus)
// A lancer au bon moment (i.e. après réception des données)

function detruire_addeo_xmlhttp(r)
{
r.xmlhttp = null;
r = null;
}

//---------------------------------------------------------------------------------------
// connexion serveur (méthode = POST ou GET)
function ouvrir_requete(methode)
{
var xmlhttp;
var async;

xmlhttp = this.xmlhttp;
// mode async => traitement	n'attend pas la réception de données (non bloquant)	
async = ((this.traiter_reception != null) ? true : false);
this.methode = methode;
xmlhttp.open(methode, this.url, async);
}

//---------------------------------------------------------------------------------------
// DEconnexion serveur
function fermer_requete()
{
var xmlhttp;

xmlhttp = this.xmlhttp;
xmlhttp.abort();
}

//---------------------------------------------------------------------------------------
// lancement de la requete
function envoyer_requete(str)
{
var xmlhttp, str;


xmlhttp = this.xmlhttp;
if(str == "")
	xmlhttp.send("");
else
	{
	if(this.methode == "POST")
		//xmlhttp.setRequestHeader("Content-Type:", "application/x-www-form-urlencoded\r\n\r\n");
		xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	xmlhttp.send(str);
	}
}

	

//---------------------------------------------------------------------------------------
function addeo_envoyer_requete_xmlhttp(url, param, methode)
{			
	if (xml_http_simulation==1)
		return (xml_http_simuler(url, param));
		
	var x = new addeo_xmlhttp(url, null, null);
		
	if(!methode || methode.length<1) methode="POST";	
	x.ouvrir(methode);
	
	// ouvre l'url dans une fenetre pour debugger
	// attention !!!! cela execute 2 fois le code : 1 via xmlhttp, 1 via l'ouverture de la fenetre
	/*
	var url_debug=url;
	if (param.length>0) url_debug+="?"+param;
		
	if (url_debug.search(/\?/)>=0)
		url_debug+="&DEBUG=1";
	else
		url_debug+="?DEBUG=1";
	//alert(url_debug);	
	window.open(url_debug, "DEBUG", "height=600,width=400,resizable=yes,scrollbars,locationbar=yes,status=yes");
	*/

	
	// fin pour debugger

	x.envoyer(param);			
	x.resultat = x.xmlhttp.responseText;

	var resultat=x.resultat;
	x.fermer();
	detruire_addeo_xmlhttp(x);
	return resultat;
}

//---------------------------------------------------------------------------------------
function xml_http_simuler(url, param)
{	
	var resultat;
    //alert("XMLHTTP : " + url + " " + param)
    
    document.formulaire.xmlhttp_url.value=url;
    document.formulaire.xmlhttp_param.value=param;
    document.formulaire.xmlhttp_resultat.value="xmlhttp"
    location.replace("XMLHTTP"+url+"?"+param);
    
    while(document.formulaire.xmlhttp_resultat.value=="xmlhttp");
    
	resultat=document.formulaire.xmlhttp_resultat.value;
    //alert(resultat);
	
return(resultat);
}


