/*
	Fichier : AjaxSurcoufLib.js
	Auteur  : Thierry Rotin
	Date	: 01/07/2005
	Description :
			Librairie de base pour gérer les appels de type Ajax
	Utilisation :
		inclure la librairie dans une page HTML
		créer un autre fichier js pour la gestion et le traitement des données de retour.
			ce fichier devra définir la variable callBackFunction qui est la function de retour de l'appel AJAX


*/

function DoAjaxCallBack(method, url, parameters){
	req = false;
	// branch for native XMLHttpRequest object
	if(window.XMLHttpRequest) {
		try {
			req = new XMLHttpRequest();
		} catch(e) {
			req = false;
		}
	}
	// branch for IE/Windows ActiveX version
	else
		if(window.ActiveXObject) {
			try {
			req = new ActiveXObject("Msxml2.XMLHTTP");
		} catch(e) {
			try {
				req = new ActiveXObject("Microsoft.XMLHTTP");
			} catch(e) {
				req = false;
			}
		}
	}
	if (req)
	{
		req.onreadystatechange = processReqChangeGeneric;
		switch (method){
			case "post":
			case "POST":
				req.open("post", url, true);
				req.setRequestHeader("Content-type","application/x-www-form-urlencoded");
				req.setRequestHeader("Content-length",parameters.length);
				req.send(parameters);
				break;
			case "GET":
			case "get":
				req.open("GET", url+"&"+parameters, true);
				req.send("");
				break;
		}
	}
}

function processReqChangeGeneric() {
    // only if req shows "loaded"
    if (req.readyState == 4) {
        // only if "OK"
        if (req.status == 200) {
            // ...processing statements go here...
            DisplayImageAttente(false);
            eval(callBackFunction);
        } else {
            alert("There was a problem retrieving the XML data:\n" +
                req.statusText);
        }
    }
    else
    {
      //pendant le traitement, on affiche l'image d'attente
      if (req.readyState < 4) {
          DisplayImageAttente(true);
      }
    }
}
