/*	Librairie de fonctions javascript AJAX */
function createXHR(){
	try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {};
	try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {};
	try { return new XMLHttpRequest(); } catch (e) {};
	alert("XMLHttpRequest non supporté !!!");
	return null;
}


// gestionnaires AJAX

function Moteur(corps, visualisateur, mode){		// mode: 1: ajout, 2: synchrone
    this.corps = corps;
    this.visualisateur = visualisateur;
    this.mode = mode;
    this.requete = this.recupRequete();
    this.reponse = '';
    if(this.requete != null){
	try {
	    this.requete.open("POST", "engine.php", (this.mode !== 2));
	    this.requete.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	    var courant = this;
	    this.requete.onreadystatechange = function(){
		if(courant.requete.readyState == 4 && courant.requete.status == 200){
		    courant.reponse = courant.requete.responseText;
		    if(courant.mode == 1){
			courant.visualisateur.innerHTML += courant.reponse;
		    } else {
			courant.visualisateur.innerHTML = courant.reponse;
	//		courant.visualisateur.removeChild(courant.iconWait);
		    };
		    // interpretation des javascript
		    var filtre = new RegExp("<script[^>]*>([^<]*)<\/script>", "g");
		    var lsScript = courant.reponse.match(filtre);
		    if(lsScript) {
			var filtre2 = new RegExp(">([^<]*)<");
			var tabRes = filtre2.exec(lsScript);
			if(tabRes != null) eval(tabRes[1]);
		    };
		};
	    };
	    this.requete.send(this.corps);
	   // this.enAttente();
	} catch (exc) {
	    alert(exc);
	};
	return true;
    };
}

Moteur.prototype = {
    
    iconLoadURL: "Media/images/load.gif",

    recupRequete: function(){
	var result = this.requete;
	if(result == null){
	    if(window.XMLHttpRequest) {
		result = new XMLHttpRequest();
	    } else if (window.ActiveXObject) {
		result = new ActiveXObject("Microsoft.XMLHTTP");
	    };
	};	
	return result;
    },
    
    enAttente: function(){
	this.cadre = this.visualisateur;
	this.iconWait = document.createElement('img');
	this.iconWait.src = this.iconLoadURL;
	this.cadre.innerHTML = "";
	this.cadre.appendChild(this.iconWait);
    }
}

Moteur.prototype.constructor = Moteur;

