/* ---------------------------------------------------- 

	Par Cédric TUMMINELLO - le 14/10/2005
 	 - contact : bourriquet@gmail.com -
	
	Ce programme est sous licence GNU GPL, v2.0
	ou ulterieure (cf http://www.gnu.org/copyleft/gpl.html)
	
	Vous pouvez librement le modifier, l'utiliser ou le
	redistribuer à l'unique condition de laisser cette
	application sous licence GPL.

 ---------------------------------------------------- */
 
 
 function Ajax() {
	var http_request = false;
	
	var datas = new String();
	try {
		http_request = new XMLHttpRequest();		
	}
	catch (error) {
		try {
			http_request = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch (error) {
			try {
				http_request = new ActiveXObject("Msxml2.XMLHTTP");
			}
			catch (error) {
				http_request = false;
			}
		}
	}

	// + ----------------------------------------------------------------------------------
	// + resetData
	// + Permet de vider les données
	// + ----------------------------------------------------------------------------------
	this.resetData = function() {
		datas = new String();
		datas = '';
	};
	
	// + ----------------------------------------------------------------------------------
	// + appendData
	// + Permet d'empiler des données afin de les envoyer
	// + ----------------------------------------------------------------------------------
	this.appendData = function(pfield, pvalue) {
		datas += (datas.length == 0) ? pfield+ "=" + escape(pvalue) : "&" + pfield + "=" + escape(pvalue);
	};

	this.showData = function () {
		return datas;
	}
	
	// + ----------------------------------------------------------------------------------
	// + sendAndLoad
	// + http_requestexion à la page désirée avec envoie des données, puis mise en attente de la réponse
	// + Entrées
	// + 	Url				String		L'url de la page à laquelle l'objet doit se http_requestecter
	// + 	httpMode		String		La méthode de communication HTTP : GET, HEAD ou POST
	// + 	callBack		Objet		Le nom de la fonction de callback
	// + ----------------------------------------------------------------------------------
	this.sendAndLoad = function(Url, httpMode, callBack) {
		if (!http_request) return false;
		httpMode = httpMode.toUpperCase();
		http_request.onreadystatechange = function() {
			if ((http_request.readyState == 4) && (typeof callBack == "function")) {
					callBack(http_request);

			}

		};
		switch(httpMode) {
			case "GET":
				try {
					Url = (datas.length > 0) ? Url + "?" + datas : Url;
					http_request.open("GET", Url);
					http_request.send(null);
				}
				catch(error) {
					return false;
				}					
			break;
			case "POST":
				try {
					http_request.open("POST", Url); 
					http_request.setRequestHeader("Method", "POST " + Url + " HTTP/1.01");
					http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
					http_request.send(datas);
				}
				catch(error) {
					return false;
				}
			break;
			default :
				return false;
			break;
		}
		

		return true;
	};
	return this;
}