// description : fonction permettant d'initialiser un objet XHR
function XHR_InitializeObject(){

	var xhr_object = null;

	// Firefox, Opera...
	if(window.XMLHttpRequest){
		xhr_object = new XMLHttpRequest();
	// Internet Explorer	
	}else if(window.ActiveXObject){
		xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
	}

	return xhr_object;

}

// description : fonction permettant d'exécuter une requête XHR
// paramètre   : pDest => fichier serveur à exécuter
// paramètre   : pData => données passées à la requête HTTP
// paramètre   : pMethod => méthode de la requête (GET ou POST)
// paramètre   : pTargetHTML => Element HTML cible pour les résultats
function XHR_Request(pDest,pData,pMethod,pCallback,pTargetHTML){

	// initialisation de l'objet
	xhr_object = XHR_InitializeObject();

	if(xhr_object != null){

		dataSend = null; // variable contenant les données à envoyer (null par defaut pour le mode GET)

		file = pDest;
		
		// creation de la chaine d'envoi (fichier + données)
		if(pMethod == "GET" && pData != null){
			file += "?" + pData;
		}

		// ouverture de la connexion
		xhr_object.open(pMethod, file, true);
		
		if(pMethod == "POST"){
			// spécification du header
			xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			dataSend = pData;
		}
		
		// envoi des données
		xhr_object.send(dataSend);		
		
		// spécification des actions en fonction de l'état courant de la requete
		xhr_object.onreadystatechange = function() {
			if(xhr_object.readyState == 4){
				if (typeof pCallback == "function") {
					pCallback(xhr_object,pTargetHTML);
				}else{
					XHR_Action(xhr_object,pCallback,pTargetHTML);
				}				
			}
		}

	}else{
		
		return null;
		
	}

}

/**************************************************/
/**************************************************/
/**************************************************/

function XHR_waiting(pID){
	
	if(document.getElementById(pID)){	
		document.getElementById(pID).style.display = "block";
	}

}

function XHR_closeWaiting(pID){
	
	if(document.getElementById(pID)){
		document.getElementById(pID).style.display = "none";
	}
	
}
