//|--

var RemoteListe = {
	TimeoutID : null,
	id				: null,
	divelemt		: null,
	HttpLink		: null,
	action		: null,
	actionResponseType: null,
	actionResponse		: null,
	respState	: 'wait',
	methodToUse : 'GET',

	init : function(id, divelemt) {
		this.id = id;
		this.divelemt = divelemt;

		this.HttpLink = new jsHttpRequest(this);
	},

	getXmlList : function (url, params) {
		if(null==this.action) {
			waitAjax('');
			this.respState = 'wait';
			this.action = this.getXmlList;
			this.actionResponseType = "text";
			if(!this.HttpLink.doRequest(this.methodToUse, url, params)) {
				waitAjax('none');
			}
		} else {
			waitAjax('none');
			/*if(this.divelemt==0)*/ this.completeResp(this.actionResponse);
//			else if(this.divelemt==1) return this.actionResponse;
			/*else*/ document.getElementById(this.divelemt).innerHTML = this.actionResponse;
			this.action = null;
		}
	},

	completeResp : function (resp) {
		this.respState = resp;
	},

	complete : function () {
		if (RemoteListe.respState=='wait') {
			RemoteListe.TimeoutID = setTimeout(RemoteListe.cron, 10);
		} else {
			clearTimeout(RemoteListe.timeoutID);
			return RemoteListe.completeTsk(RemoteListe.respState); //completeTsk doit etre présente dans l'obj qui appelle complete()
		}
	},
	cron : function(){
		RemoteListe.complete();
	}
}

function waitAjax(displayMode){
	if (document.getElementById('waitingDiv1')!=undefined) document.getElementById('waitingDiv1').style.display = displayMode;
//	document.getElementById('waitingDiv2').style.display = displayMode;
}

//|--
function jsHttpRequest() {
	function initConnector() {
		var o = null;
		var success = false;
		var MSXML_XMLHTTP_PROGIDS = new Array(
			'MSXML2.XMLHTTP.5.0',
			'MSXML2.XMLHTTP.4.0',
			'MSXML2.XMLHTTP.3.0',
			'MSXML2.XMLHTTP',
			'Microsoft.XMLHTTP'
		);

		for (var i=0;i < MSXML_XMLHTTP_PROGIDS.length && !success; i++) {
			try {
				o = new ActiveXObject(MSXML_XMLHTTP_PROGIDS[i]);
				success = true;
			} catch (e) {}
		}
		if( null==o && typeof XMLHttpRequest != "undefined") o = new XMLHttpRequest();
		return o;
	} this.initConnector = initConnector;


	function doRequest(method,url,parms) {
		var ret = false;
		var x = this.initConnector();
		if(null==x)  return false;
		var self = this;

		var i, n;
		var post_data;
		method = method.toUpperCase();

		if (method == "GET") {
			if (url.indexOf("?") == -1) url += "?";
			else url += "&";
			for( var qparam in parms) {
				url += qparam+"="+escape(parms[qparam])+"&";
				break;
			}
			var dt = new Date();
			url += '_'+dt.getTime()+'=1';
			post_data = null;
		} else {
			post_data = "&";
			for( var qparam in parms) {
				post_data += qparam+"="+escape(parms[qparam]);
			}
			if(2<post_data.length) post_data = post_data.substr(1);
			else post_data = "";
		}
		x.onreadystatechange = function() {
			if (x.readyState != 4) {
				return;
			}
			if( x.status == 200 && self.owner != null) {
				self.owner.actionResponse = ('xml'==self.owner.actionResponseType.toLowerCase()?x.responseXML:x.responseText);
				self.owner.action();
			} else if(x.status == 404){
				alert(url);
				location.href = "/error404.html";
			} else {
				//alert(x.status);
			}
		}

		try {
			x.open(method, url, true);
			if (method == "POST") {
				x.setRequestHeader("Method", "POST " + url + " HTTP/1.1");
				x.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			}
			x.send(post_data);
			ret = true;
		} catch (e) {
			alert(e);
		}
		delete x;
		return ret;

	} this.doRequest = doRequest;

	this.owner = arguments[0];
}

