//---------------------------------------
// RequeteHTTP
//------------------------------------------
// Module de requêtage HTTP via JS (AJAX).
//------------------------------------------
function RequeteHTTP()
{
	// Variables privées
	//-------------------------------------------------------
	var Objet = this;
	var Serveur = window.location.hostname.toLowerCase();
	var Site = window.location.pathname.substring(0, window.location.pathname.substr(1).indexOf('/') + 2);
	
	// Variables publiques
	//-------------------------------------------------------
	Objet.Requete = NouvelleRequete();
	Objet.Requete.onreadystatechange = CompleterRequete;
	
	this.Synchrone = true;
	this.Methode = "GET";
	this.Page = "";
	this.Parametres = "";
	this.Executer = ExecuterRequete;
	
	// Retour du service
	//-------------------------------------------------------
	this.FonctionRetour = null;
	this.RetourXML = null;
	this.RetourTexte = null;
	
	
	//---------------------------------------
	// TimeStamp
	//------------------------------------------
	// Génère une chaîne de texte contenant
	// l'année, le mois, le jour, l'heure, etc...
	//------------------------------------------
	function ajax_TimeStamp()
	{
		var DTE = new Date();
		var HMS = DTE.getYear().toString() + DTE.getMonth().toString() + DTE.getDate().toString() + DTE.getHours().toString() + DTE.getMinutes().toString() + DTE.getSeconds().toString() + DTE.getMilliseconds().toString();
		
		return HMS;
	}	
					
	//------------------------------------------------------
	// NouvelleRequete
	//----------------------------------------------------------
	function NouvelleRequete()
	{
		try { return new ActiveXObject("Microsoft.XMLHTTP");	} catch (e) {}
		try { return new ActiveXObject("Msxml2.XMLHTTP");		} catch (e) {}
		try { return new XMLHttpRequest();						} catch (e) {}
	}
	
	//------------------------------------------------------
	// ExecuterRequete
	//----------------------------------------------------------
	function ExecuterRequete()
	{
		var URL = "http://" + Serveur + Site + Objet.Page;
		
		ReinitialiserRequete();
		
		Objet.Requete.open(Objet.Methode, URL, !Objet.Synchrone);
		Objet.Requete.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		
		if (Objet.Parametres == "")
		  Objet.Parametres = "TIMESTAMP=" + ajax_TimeStamp();
		else
		  Objet.Parametres += "&TIMESTAMP=" + ajax_TimeStamp();				
						
		Objet.Requete.send(Objet.Parametres);
		
	    if (Objet.Synchrone)
	    {						
			Objet.RetourXML = Objet.Requete.responseXML;
			Objet.RetourTexte = Objet.Requete.responseText;
		}
	}
	
	//------------------------------------------------------
	// CompleterRequete
	//----------------------------------------------------------
	function CompleterRequete()
	{
		if (Objet.Requete.readyState == 4)
		{
			if (Objet.Requete.status == 200)
			{
				Objet.RetourXML = Objet.Requete.responseXML;
				Objet.RetourTexte = Objet.Requete.responseText;
				
				if (Objet.FonctionRetour != null)
					Objet.FonctionRetour();
			}
		}
	}
	
	//------------------------------------------------------
	// ReinitialiserRequete
	//----------------------------------------------------------
	function ReinitialiserRequete()
	{
		Objet.Requete = NouvelleRequete();
		
		Objet.Requete.onreadystatechange = CompleterRequete;
	}
	

	
}


function callAJAX(URL,PARAMS)
{
	var objRequeteHTTP  = new RequeteHTTP();
     
	objRequeteHTTP.Page = URL;
	objRequeteHTTP.Parametres = PARAMS;
	objRequeteHTTP.Synchrone = true;	 
    
	objRequeteHTTP.Executer();
	
	return objRequeteHTTP.RetourTexte;
}
