/**
 * Javascript pour faire une requête http.
 * Exemple d'utilisation:
 *	function sendData() {
 *		sendXmlHttpRequestData('GET','/page.php','param1=val1&param2=val2');
 *	}
 *	function receiveData(data, error) {
 *		alert(data);
 *	}
 */

/**
 * Retourne une instance d'un objet du type XmlHttpRequest.
 * @return object
 */
function getXmlHttpRequestObject(callback) {
	var xmlhttp = false;
	
	if(callback == undefined){
		var callbackfunction = "receiveData";
	}else{
		var callbackfunction = callback;
	}

	/* Compilation conditionnelle d'IE */
	/*@cc_on
	@if (@_jscript_version >= 5)
		try {
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e) {
			try {
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (E) {
				xmlhttp = false;
			}
		}
	@else
		xmlhttp = false;
	@end @*/

	/* on essaie de créer l'objet si ce n'est pas déjà fait */
	if (!xmlhttp && typeof XMLHttpRequest != 'undefined')
	{
		try {
			xmlhttp = new XMLHttpRequest();
		}
		catch (e) {
			xmlhttp = false;
		}
	}
	
	if (xmlhttp) {
		/* on définit ce qui doit se passer quand la page répondra */
		xmlhttp.onreadystatechange=function() {
			if (xmlhttp.readyState == 4) {
				if (xmlhttp.status == 200)
					eval(callbackfunction)(xmlhttp.responseText, false);
				else eval(callbackfunction)("erreur " + xmlhttp.status, true);
			}
		}
	}
	return xmlhttp;
}

/**
 * Envoie asynchrone des données à l'aide de XmlHttpRequest
 * @param string method		methode d'envoi ['GET'|'POST']
 * @param string url		script à appeler
 * @param string data		données à envoyer sous la forme var1=value1&var2=value2...
 * @param string callback	nom de la function de callback, optionnel (par defaut, receiveData)
 * @return bool
 */
function sendXmlHttpRequestData(method, url, data, callback) {
	var xmlhttp = getXmlHttpRequestObject(callback);
	if (!xmlhttp) return false;
	if (method == "GET") {
		if (data == 'null' || typeof data != "string") {
			xmlhttp.open("GET", url, true);
		} else {
			xmlhttp.open("GET", url+"?"+data, true);
		}
		xmlhttp.send(null);
	} else if(method == "POST") {
		xmlhttp.open("POST", url, true);
		xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		xmlhttp.send(data);
	}
	return true;
}


