var request = null;

function httpRequest (reqType, url, asynch, respHandle) {
	// Navigateurs basés sur Gecko...
	if (window.XMLHttpRequest) {
		request = new XMLHttpRequest ();
	}
	
	// ... et Internet Explorer.
	else if (window.ActiveXObject) {
		request = new ActiveXObject('Msxml2.XMLHTTP');
		
		if (!request) {
			request = new ActiveXObject('Microsoft.XMLHTTP');
		}
	}
	
	// On vérifie si la requête n'est pas nulle dans le cas où aucun ActiveXObject  n'aurait été initialisé.
	if (request) {
	
		// Si le paramètre reqType est POST, alors le cinquième argument  de la fonction correspond aux données POSTées.
		if (reqType.toLowerCase() != 'post')  {
			initReq(reqType, url, asynch, respHandle);
		}
		
		else {
		// les données POSTées.
		var args = arguments[4];
		
			if (args != null && args.length > 0)  {
				initReq(reqType, url, asynch, respHandle, args);
			}
		}
	}
	
	else {
		alert ('httpRequest()\n\n Votre navigateur ne permet pas l\'utilisation\n de toutes les fonctionnalités de cette application.');
	}
}

function initReq (reqType, url, bool, respHandle) {

	try {

	// Sert à  préciser la fonction qui traitera la réponse HTTP.
	request.onreadystatechange=respHandle;
	request.open(reqType, url, bool);
	
		// Si le paramètre reqType est POST, alors le cinquième argument de la fonction correspond aux données POSTées.
		if (reqType.toLowerCase() == 'post') {
			request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
			request.send(arguments[4]);
		}
		
		else {
			request.send(null);
		}
	}
	
	catch (errv) {
		alert ('initReq()\n\n L\'application ne parvient pas à contacter le serveur actuellement.\n Veuillez essayer à  nouveau dans quelques instants.\n Détails de l\'erreur :\n\n' + errv.message);
	}
}