/**
 * Fonctions Ajax génériques
 */

// Instance de l'objet
function initXHR() {
	if (window.XMLHttpRequest) {
		xhr = new XMLHttpRequest();
		// Évite un bug du navigateur Safari :
		if (xhr.overrideMimeType) {
		  xhr.overrideMimeType("text/xml");
		}
	} else {
		 if (window.ActiveXObject) {
		  try { // essaie de charger l'objet pour IE
		    xhr = new ActiveXObject("Msxml2.XMLHTTP");
		  } catch (e) {
		    try { // essaie de charger l'objet pour une autre version IE
		      xhr = new ActiveXObject("Microsoft.XMLHTTP");
		    } catch (e) {
		      window.alert("Votre navigateur ne prend pas en charge l'objet XMLHTTPRequest.");
		    }
		  }
		}
	}
	return xhr;
}


// Requête
function envoyerRequete(methode, requete, retour, xml, post) {
	var httpRequest = initXHR();
	if (retour) {
		httpRequest.onreadystatechange = function() {
			if (httpRequest.readyState == 4)
				if (xml)
					eval(retour + "call(this, httpRequest.responseXML);");
				else
					eval(retour + ".call(this, httpRequest.responseText)");
		};
	}
	httpRequest.open(methode, requete, true);
	if (post) {
		httpRequest.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		httpRequest.send(post);
	} else
		httpRequest.send(null);
}


// Renvoie un objet JSON à partir d'une chaine de caractères
function genererJson(chaine) {
	
	if (chaine == "false")
		return false;
	else
		// On vérifie que la chaîne commence par { et se termine par }
		// Dans le cas contraire, il y a de forte chances qu'elle contienne le résultat d'une erreur du script php
		if (chaine.indexOf("{") == 0 && chaine.lastIndexOf("}") == (chaine.length - 1)) {
			return eval('(' + chaine + ')');
		} else {
			alert(chaine);
		}
}


// Vide un select
function viderSelect(liste_select) {
	
	liste_select.options.length = 0;
	liste_select.options.value = "";
	liste_select.options.text = "";
}


// Retourne l'index d'un select dont la valeur correspond à valeur
function lireIndex(liste_select, valeur) {
	
	for (i = 0; i < liste_select.length; i++) {
		if (liste_select.options[i].value == valeur) {
			return i;
		}
	}
	return false;
}

