/**
 * Ajax
 * @param {String} page
 * @param {Function} response
 * @param {boolean} xml
 * @author Rusk
 * Ajax(page.php, function, xml, parametre1, parametre2, ...)
 * page doit contenire la page a la quellesera envoiller les information
 * function est la fonction qui sera appeler au retour, avec comme 1er argument la reponse, et comme 2eme argument tout les argument envoyer
 * xml doit etre true pour retourne du xml et false pour retourne du text
 * Les autre parametre seront envoyer a la page en POST: $_POST[0]
 */
function Ajax(page, response, xml) {
	arg = arguments
	// liste les arguments suplemantaire dans une chaine: "0=argument&1=argument"
	var parametres = ""
	var i = 3
	var y = 0
	while( i < arguments.length) {
		parametres += y + "=" +arguments[i];
		if(i < arguments.length-1){
			parametres += "&";
		}
		i++
		y++
	}
	
	var xhr = getXMLHttpRequest();
	xhr.onreadystatechange = function() {
		if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
			if(xml == true)
				response(xhr.responseXML, arg) // Traitement a la reception (xhr.responseXML)
			else
				response(xhr.responseText, arg) // Traitement a la reception (xhr.responseText)
		}
	}
	xhr.open("POST", page, true);
	xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	xhr.send(parametres);
}

function Ajax2(page, xml, response) {
	// Crée une variable au nom de la page a appeller. Et lui assigne un objet "XMLHttpRequest"
	if (typeof(window[page]) == "undefined") {
		window[page] = getXMLHttpRequest();
	}
	// Assigne l'objet "XMLHttpRequest" a la variable "xhr" 
	var xhr = window[page];
	// Annuler l'encien objet "XMLHttpRequest" si il existe deja et qu'il est occuppé.
	if (typeof(xhr) != "undefined" && xhr.readyState != 0 && xhr.readyState != 4) {
//		console.log("Requete Ajax Abandonner");
		xhr.abort(); // On annule la requête en cours !
	}

	var arg = arguments;
	// liste les arguments suplemantaire dans une chaine: "0=argument&1=argument"
	var parametres = "";
	var i = 3;
	var y = 0;
	while(i < arguments.length) {
		parametres += y + "=" +arguments[i];
		if(i < arguments.length-1){
			parametres += "&";
		}
		i++;
		y++;
	}
	// Au changement de status:
	xhr.onreadystatechange = function() {
		if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) { // Si la page est charger correctement:
			if (xml == true) { // Traitement a la reception (xhr.responseXML)
				response(xhr.responseXML, arg)
			} else { // Traitement a la reception (xhr.responseText)
				response(xhr.responseText, arg)
			};
		}
	}

	if (xhr.onabort) {
		xhr.onabort = function() {
//			console.log("Abort")
		}
	}

	xhr.open("POST", page, true);
	xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	xhr.send(parametres);
}
