//Message erreur à mettre dans un fichier Langues
var MsgErrGetXhr="Votre navigateur ne supporte pas les objets XMLHTTPRequest...";
var MsgErrRetourXML="Un problème est survenu avec la requête.";
var retourrequete1;

function Ajax(){
//déclaration des variables accessibles par la classe.
	var xhr = null;						//Objet xhr par default null
	var Methode = "POST" ;					//Methode d'envoi des données Ajax POST ou GET
	var RetourXml = 0 ;					//par default XML desactive : reponse_text
	var Synchro = true ; 					// Syncho Ajax
	var Data = null;						//donne à poster pour la requete en POST : Format à la Get : ?<POST1>="<valeur1>"&<POST2>="<Valeur2>"...
	var ElementById;						// element Id a retourner en innerhtml
	var RetourAjax=null;
	var NumFonction=null;					//Numro du choix de la fonction de retour
	var TitreRetour=null;
//declaration des fonctions pour acces à l'objet
	this.SetMethode = SetMethode;			// Definit la Methode
	this.SetRetourXml = SetRetourXml;		//Definit XML
	this.SetSynchro = SetSynchro ; 			//Definit synchro
	this.SetData = SetData ;				//Definit Data
	this.SetElementById = SetElementById;	//Définit l'id ou se met en attente le state <> 200 image attente gif animer <img src='images/loader.gif'>
	//this.SetVariableRetour = SetVariableRetour; // definit la variable global à incrementer
	this.getXhr = getXhr;					//Fonction Creation de l'objet XMLHTTPREQUEST pour Ie et Firefox
	this.EnvoiRequete = EnvoiRequete;		//Fonction fichier à requete
	this.RetourInformation =RetourInformation;		//Fonction Retour du fichier requete
	this.SetNumFonctionRetour = SetNumFonctionRetour;	//Remplie le champs NumFonction
	this.SetTitreRetour = SetTitreRetour;  // Ajoute le titre du message d'attente 




// fonction set
	function SetMethode(methode){
		Methode=methode;
	}


	function SetRetourXml(xml){
		RetourXml=xml;
	}

	function SetSynchro(synchro){
		Synchro=synchro;
	}

	function SetData(data){
		Data=data;
	}


	function SetElementById(elementbyid){
		ElementById=elementbyid;
	}
	
	function SetNumFonctionRetour(numfonction){
		NumFonction=numfonction;
	}

	// fontion de modification du message d'attente
	function SetTitreRetour (titreretour){
		if (titreretour != null || titreretour != ""){
			 TitreRetour = "<span><img src='./images/loader.gif'>&nbsp;"+ titreretour +"</span>";
		}
		else {
			 TitreRetour = "<span><img src='./images/loader.gif'> Chargement en cours...</span>";	
		}//fin du else
	}



	function getXhr(){
		if(window.XMLHttpRequest){// Firefox et autres
			xhr = new XMLHttpRequest();
            if (RetourXml == 1) {
            	if (xhr.overrideMimeType) {
                xhr.overrideMimeType('text/xml');
                }//if xhr.overide
            }//if Retour Xml

		}//if
		else if(window.ActiveXObject){ // Internet Explorer
			   try {
					xhr = new ActiveXObject("Msxml2.XMLHTTP");
				}//try
				catch (e) {
				    xhr = new ActiveXObject("Microsoft.XMLHTTP");
				}//catch
			}//else if

		else { // XMLHttpRequest non supporté par le navigateur
	   alert(MsgErrGetXhr);
	   xhr = false;
		}//else
	return xhr;
	}//fin fonction


//Pose la question methode GET and POST
    function EnvoiRequete(url){
        var http_request = getXhr();
		if (Methode == "POST") {
		http_request.onreadystatechange = function() { RetourInformation(http_request); };
		http_request.open(Methode, url, Synchro);
		http_request.setRequestHeader('Content-type', 'application/x-www-form-urlencoded; charset=iso-8859-1');
        http_request.send(Data);
		}
		else{					//alors GET
		http_request.onreadystatechange = function() { RetourInformation(http_request); };
		http_request.open(Methode, url, Synchro);
        http_request.send(null);
		}
    }//fin fonction Envoirequete



    function RetourInformation(http_request) {
        if (http_request.readyState == 4) {
			if (http_request.status == 200) {
				if (RetourXml == 1) {
//					return http_request.responseXML;
/*					var xmldoc = http_request.responseXML;
					var root_node = xmldoc.getElementsByTagName('sousroot').item(0);
					alert(root_node.firstChild.data);
*/
						switch(NumFonction){
							case 10:
								RetourClassAutoCompletion(http_request.responseXML);
								break;
							case 9:
								Affichage9(http_request.responseXML,ElementById);
								break;
							case 8:
								Affichage8(http_request.responseXML,ElementById);
								break;
							case 7:
								Affichage7(http_request.responseXML,ElementById);
								break;
							case 6:
								Affichage6(http_request.responseXML,ElementById);
								break;
							case 5:
								Affichage5(http_request.responseXML,ElementById);
								break;
							case 4:
								Affichage4(http_request.responseXML,ElementById);
								break;
							case 3:
								Affichage3(http_request.responseXML,ElementById);
								break;
							case 2:
								Affichage2(http_request.responseXML,ElementById);
								break;
							case 1:
								Affichage1(http_request.responseXML,ElementById);
								break;
							default:			//retour Simple
							Affichage(http_request.responseXML,ElementById);
						} // switch
				    }//if

				else{
					switch(NumFonction){
						case 100:
							eval(http_request.responseText);
							break;

						case 10:
							Affichage10(http_request.responseText,ElementById);
							break;
						case 9:
							Affichage9(http_request.responseText,ElementById);
							break;
						case 8:
							Affichage8(http_request.responseText,ElementById);
							break;
						case 7:
							Affichage7(http_request.responseText,ElementById);
							break;
						case 6:
							Affichage6(http_request.responseText,ElementById);
							break;
						case 5:
							Affichage5(http_request.responseText,ElementById);
							break;
						case 4:
							Affichage4(http_request.responseText,ElementById);
							break;
						case 3:
							Affichage3(http_request.responseText,ElementById);
							break;
						case 2:
							Affichage2(http_request.responseText,ElementById);
							break;
						case 1:
							Affichage1(http_request.responseText,ElementById);
							break;
						default:			//retour Simple
						Affichage(http_request.responseText,ElementById);
					} // switch


				//document.getElementById(ElementCacher).value=http_request.responseText;
//				Affichage(http_request.responseText);
				}
			}//if status == 200
			else {
				alert(MsgErrRetourXML);
            }//else status=200

//		document.getElementById(ElementById).innerHTML  = "";
        }//if ReadyState
		else
		{
				document.getElementById(ElementById).innerHTML  = TitreRetour;
		}//else
    }//fonction




}// fin class Fonction Ajax
