//_________________________________________________________________________________
// EFR ////////////////////////////////////////////////////////////////////////////
//

/*
 * Pour chaque champs du formulaire idForm, concaténation des noms / valeurs
 *
 */
function initFormValue(idForm) {
	var str = "";
	var nbElements = document.forms[idForm].elements.length;
	for(var i=0; i < nbElements; i++) {	
		str += document.forms[idForm].elements[i].name + "=" + document.forms[idForm].elements[i].value + "&";
	}
	return str;
}

//Classe AjaxRequest
function AjaxRequest() {

	//Attributs
    this.methodHttp = "";
    this.urlHttp = "";
    this.params = "";
    this.httpResponse = null;
    this.httpRequest = false;
    this.callback = null;

    /////////////////////////////////////////////////////////////////////////////
    this.sending = function (methodHttp, urlHttp, params, callback) {
    	this.methodHttp = methodHttp;
	    this.urlHttp = urlHttp;
	    this.params = params;
	    this.callback = callback;
	    if (window.XMLHttpRequest) { // Mozilla, Safari,...
	        this.httpRequest = new XMLHttpRequest();
	        if (this.httpRequest.overrideMimeType) {
	            this.httpRequest.overrideMimeType('text/xml');
	        }
	    } else if (window.ActiveXObject) { // IE
	        try {
	            this.httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
	        } catch (e) {
	            try {
	                this.httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
	            } catch (e) {}
	        }
	    }
	    if (!this.httpRequest) {
	        alert("The browser doesn't support the object : XMLHTTPRequest");
	        return false;
	    }	
	    if (methodHttp == "POST") {
	    	this.httpRequest.open(this.methodHttp, this.urlHttp, true);
	      	this.httpRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	      	this.httpRequest.setRequestHeader("Content-length", this.params.length);
	      	this.httpRequest.setRequestHeader("Connection", "close");
	    	this.httpRequest.send(params);
	    }
		else if(this.methodHttp == "GET") {
			this.httpRequest.open(this.methodHttp, this.urlHttp + "?" + this.params, true);
			this.httpRequest.send(null);		
		}
		else {
			alert("The http method must be 'GET' or 'POST'");
			return false;
		}
		
		//Transmission des attribut d'AjaxRequest à la méthode receiving
	    AjaxRequest.prototype.methodHttp = this.methodHttp;
	    AjaxRequest.prototype.urlHttp = this.urlHttp;
	    AjaxRequest.prototype.params = this.params;
	    AjaxRequest.prototype.httpResponse = this.httpResponse;
	    AjaxRequest.prototype.httpRequest = this.httpRequest;
	    AjaxRequest.prototype.callback = this.callback;
		
		this.httpRequest.onreadystatechange = this.receiving;
    }
    //////////////////////////////////////////////////////////////////////////////

	//////////////////////////////////////////////////////////////////////////////
	this.receiving = function () {
		
		//Récupération des attributs de la classe AjaxRequest
		this.httpRequest = AjaxRequest.prototype.httpRequest;
		this.httpResponse = AjaxRequest.prototype.httpResponse;
		this.callback = AjaxRequest.prototype.callback;
		
		var myBody=document.getElementsByTagName("body").item(0);
		if (document.getElementById("ajaxMessage") != null) myBody.removeChild(document.getElementById("ajaxMessage"));
		myDiv = document.createElement("DIV");
		myDiv.setAttribute("id", "ajaxMessage");
		myDiv.className="ajaxMessage";
		myBody.appendChild(myDiv);

		if (this.httpRequest.readyState == 2) {
			myDivText = document.createTextNode("Sending...");
			myDiv.appendChild(myDivText);
			
		}
		else if (this.httpRequest.readyState == 3) {
			myDivText = document.createTextNode("Receiving...");
			myDiv.appendChild(myDivText);
			
		}		
		
		else if (this.httpRequest.readyState == 4) {
		    if (this.httpRequest.status == 200) {
		        this.callback();
		    } 
		    else {
		        alert("HTTP Response : " + this.httpRequest.status + " : " + this.httpRequest.statusText);    
		    }
		}
	}
	//////////////////////////////////////////////////////////////////////////////
	
	
	//this.sending();
}


   
