 // Cree la compatibilite MOZILLA et IE


/**
 * VERSION 1.1
 * ADAPTATION PROTOTYPE
 */

function getXmlHttpRequest() {
	var xmlhttp;
	try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); envAlert("on utilise Msxml4.XMLHTTP"); }
	catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); envAlert("on utilise Microsoft.XMLHTTP"); }
	catch (e) { try { xmlhttp = new XMLHttpRequest(); envAlert("on utilise XMLHttpRequest");}
	catch (e) { xmlhttp = false; }}}
	return xmlhttp;
}

// Chargement via HTTP
function HttpLoader() {

	this.url = null;
	this.data = null;
	this.xmlhttp = getXmlHttpRequest();

	this.setUrl = function(u) {
		var i = u.indexOf("?");
		if(i == -1)	{
			this.url = u;
			this.data = null;
		}
		else {
			this.url = u.substring(0,i);
			this.data = u.substring(i+1); 
		}
	};
	
	this.sendRequest = function() {
		this.xmlhttp.open("POST", this.url, false);	
		this.xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
		this.xmlhttp.setRequestHeader("Cache-Control","no-cache");
		this.xmlhttp.send(this.data);
		if(this.xmlhttp.status != 200) {
			return null;
		}
		return this.xmlhttp.responseText;
	}

	this.sendAssyncRequest = function(handler) {
		this.xmlhttp.open("POST", this.url, true);	
		this.xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
		this.xmlhttp.setRequestHeader("Cache-Control","no-cache");
		this.xmlhttp.onreadystatechange=function() {
			eval(handler); 
		}
		this.xmlhttp.send(this.data);
	}

	this.appendData = function(name,value) {
		if(! name) return;
		if(this.data == null) {
			this.data = "";
		} else {
			this.data += "&";
		}
		this.data += name+"="+value;
		/*
		//conversion unicode -> utf-8 -> http post
		if(value) {
			for(var i=0; i<value.length; i++) {
				var c = value.charCodeAt(i);
				if(c<128) {
					this.data += escape(value.charAt(i));
				} else if(c<2048) {
					this.data += escape(String.fromCharCode( 0xC0+(c>>6), 0x80+(c&0x3F) ));
				} else if(c<65536){
					this.data += escape(String.fromCharCode( 0xE0+(c>>12), 0x80+((c>>6)&0x3F), 0x80+(c&0x3F) ));
				}
			}
		}
		*/
	};
	
	this.getForm = function(form) {
		var ret = document.getElementById(form);
		return ret;
	}
	
	this.appendFormData = function(form) {
				
		if(!form) return;
		var text = "";
		var elts = this.getForm(form);
		if (elts==null) return;
		for(i=0; i<elts.length; i++) {
			var name = elts[i].name;
			var value = elts[i].value;
			if(name == '') continue;
			if(elts[i].type == "checkbox" || elts[i].type == "radio") {
				if(elts[i].checked) {
					this.appendData(name,value);
				}
			} 
			else
			if(elts[i].type == "select-multiple")
			{
				var length = elts[i].options.length;
				for(var cElts = 0; cElts < length; cElts++) {
					if(elts[i].options[cElts].selected == true ) {
						this.appendData(elts[i].name, elts[i].options[cElts].value)
					}
				}
			}
			else {
				this.appendData(name,value);
				envAlert(name+"="+value);
				envAlert(name+"="+value);
			}
		}
	}
	
	this.appendMapData = function(labelsArray,valuesArray) {
		if(!labelsArray) return;
		var size = labelsArray.length;
		for(var i=0;i<size;i++) {
			var nameElm = labelsArray[i];
			var valueElm = valuesArray[i];
			this.appendData(nameElm,valueElm);
		}
	}
}
