//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 = titreretour;
		}
		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 {
				//fn_AffichageProblemeAdmin();
				//alert(MsgErrRetourXML);

            }//else status=200



//		document.getElementById(ElementById).innerHTML  = "";

        }//if ReadyState
		/*
		else{
			document.getElementById(ElementById).innerHTML  = TitreRetour;
		}//else
		*/
    }//fonction









}// fin class Fonction Ajax


