<!--

/* Retourne l'objet XmlHttpRequest en fonction du navigateur */
function GetXmlHttpRequestObject()
{
	var oXhr;
	
	if(window.XMLHttpRequest)
	{
		// Firefox
		oXhr = new XMLHttpRequest();
	} 
	else if(window.ActiveXObject) 
	{
		try
		{
			// < IE7
			oXhr = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch(e)
		{
			try
			{
				// >= IE7
				oXhr = new ActiveXObject("Microsoft.XMLHTTP");				
			}
			catch(ex)
			{
				oXhr = null;
			}
		}	
	}

	return oXhr;
}


/*
Envoi les données vers le serveur
- sParamUrl : url de la page Ajax sur le serveur (ex: "/script/page_ajax.asp")
- sParamData : paramètres passés à la page Ajax (ex: "param1=var1&param2=var2")
- sParamCallBackFunction : nom de la fonction callback (facultatif)
    La callback est appelée pour effectuer un traitement après interrogation du serveur
- oParamArgs : argument passé à la fonction de callback (facultatif, peut être une String, un Array ou un Objet)
- sParamMethod : valeurs possibles "POST" ou "GET" (facultatif -> méthode POST par défaut si aucune valeur passée)

Attention à l'ordre des paramètres dans la callback :
- callback avec paramètre : fonctionCallBack(leParamètre, retourDuServeur)
- callback sans paramètre : fonctionCallBack(retourDuServeur)
si la page Ajax du serveur ne retourne rien (pas de Response.Write("xxx"))
la fonction callback pourrait être écrite ainsi :
- callback avec paramètre : fonctionCallBack(leParamètre)
- callback sans paramètre : fonctionCallBack()
*/
function SendData(sParamUrl, sParamData, sParamCallBackFunction, oParamArgs, sParamMethod)
{
	var oXmlHttpRequest = GetXmlHttpRequestObject();
	
	if(oXmlHttpRequest != null)
	{	
		oXmlHttpRequest.onreadystatechange = function()
		{
			if(oXmlHttpRequest.readyState == 4)
			{
				if(oXmlHttpRequest.status == 200)
				{
					if(sParamCallBackFunction != null)
					{
						if(oParamArgs != null) eval(sParamCallBackFunction+"(oParamArgs, oXmlHttpRequest.responseText);");
						else eval(sParamCallBackFunction+"(oXmlHttpRequest.responseText);");
					}
				}
				else if(oXmlHttpRequest.status == 12152)
				{
					try {
						reloadPage();
					}
					catch(err){ }
				}
				else 
				{
					var sErrMessage = "";
					sErrMessage += "\n- URL : " + sParamUrl;
					sErrMessage += "\n- Data : " + sParamData;
					sErrMessage += "\n- Method : " + (sParamMethod != null ? sParamMethod : "POST");
					if(sParamCallBackFunction != null) sErrMessage += "\n- Callback : " + sParamCallBackFunction;
					if(oParamArgs != null) sErrMessage += "\n- Paramètre : " + oParamArgs;
					alert("Une erreur s'est produite !\n\n- Code erreur : " + oXmlHttpRequest.status + " [" + oXmlHttpRequest.statusText + "]" + sErrMessage + "\n\n" + oXmlHttpRequest.responseText + "\n");
				}
			}
		}
				
		if(sParamMethod != null && sParamMethod == "GET")
		{	
			var bError = false;
			
			//Cross Site Scripting
			try { 
				oXmlHttpRequest.open("GET", sParamUrl + "?" + sParamData, true); 
				oXmlHttpRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");	
			}
			catch(ex) { 
				bError = true;
				alert("Attention: votre navigateur n'autorise par l'accès à des données situées sur un autre serveur."); 
			}

			try { oXmlHttpRequest.overrideMimeType('text/html; charset=ISO-8859-1'); }
			catch(ex) { }
			
			if(!bError) oXmlHttpRequest.send(null); 
		}
		else 
		{
			if(sParamMethod == null || (sParamMethod != null && sParamMethod == "POST"))
			{		
				var bError = false;
				
				//Cross Site Scripting
				try {
					oXmlHttpRequest.open("POST", sParamUrl, true);
					oXmlHttpRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
				}
				catch(ex) { 
					bError = true;
					alert("Attention: votre navigateur n'autorise par l'accès à des données situées sur un autre serveur."); 
				}

				try { oXmlHttpRequest.overrideMimeType('text/html; charset=ISO-8859-1'); }
				catch(ex) { }
		
				if(!bError) oXmlHttpRequest.send(sParamData);
			}
		}
	}
	else
	{
		alert("Votre navigateur ne supporte pas l'utilisation de l'objet XmlHttpRequest.");
	}
}

//-->