// Grer un tableau de requetes
var xmlhttps= new Array();

/*
Cette fonction cree une instance de requete (XMLHttpRequest)
NB : apte  grer un tableau de requetes
Enregistre un gestionnaire d'vnement qui sera appel quand la requete evoluera
Envoie la requete
Parametres
url : url du flux  charger
params : parametres eventuels
idElement : id de l'lment dans la page -> ou inscrire le resultat de la requete
msgWait : message  afficher en attendant le resultat
callBackFunction : fonction de "callback" qui sera appelee (via une autre fonction) quand le resultat sera ok
*/
function loadXMLdoc(url, params, idElement, msgWait, callBackFunction)
{
	// ou en es t'on dans le tableau des requetes
	var i= xmlhttps.length;
	if(msgWait != null) 
	{
		document.getElementById(idElement).innerHTML= msgWait;
	}
	// Type Mozilla
	if(window.XMLHttpRequest) 
	{ 
		xmlhttps[i]= new XMLHttpRequest();
		// fonction anonyme sera appelee lors du dclenchement de l'evenement
		xmlhttps[i].onreadystatechange=function() 
		{
			xmlhttpChange(i, idElement, callBackFunction); 
		};
		// envoyer la requete
		// on passe par le proxy
		xmlhttps[i].open("GET", "xml/agenda.xml",true);
		xmlhttps[i].send(null);
	}
	// Type IE
	else if (window.ActiveXObject) 
	{
		xmlhttps[i]= new ActiveXObject("Microsoft.XMLHTTP");
		if(xmlhttps[i]) 
		{
			xmlhttps[i].onreadystatechange= function() 
			{
				xmlhttpChange(i, idElement, callBackFunction); 
			};
			xmlhttps[i].open("GET", "xml/agenda.xml",true);
			xmlhttps[i].send();
		}
	}
}

/*
Cette fonction est appele lorsque l'etat de la requete 
d'index i change (evenement onreadystatechange)
Verifie le statut et si OK (>= 400)
invoque la fonction de callback
Parametres :
i : index de la requete dans le tableau de requetes XMLHttpRequest
idElement : id de l'lment dans la page -> ou inscrire le resultat de la requete
callBackFunction : fonction de "callback" qui sera appelee (via une autre fonction) quand le resultat sera ok
*/
function xmlhttpChange(i, idElement, callBackFunction) 
{
	// requete effectuee
	if(xmlhttps[i].readyState==4)
	{
		// OK
		if(xmlhttps[i].status < 400) 
		{
			xmlResponse = xmlhttps[i].responseXML;
			txtResponse = xmlhttps[i].responseText;
			// excuter la fonction de callback
			// eval "execute" le "code" reu en parametre
			eval(callBackFunction);
		}
		else 
		{
			// erreur
			document.getElementById(idElement).innerHTML= "Erreur (statut : " + xmlhttps[i].status + " ), consignes a l'utilisateur...";
		}
	}
}