/**
 * Ce fichier gère les traitements faisant appel à ajax
 * 
 *
 * @author Laurent MARLIN (créé le 14/09/2006)
 * @version 1.0
 */
 
/**
 * Fonction d'appel d'un script par la méthode AJAX
 * @param 	string 	fichier le script appelé par la méthode AJAX
 * @param 	string 	format de retour par exemple : 'TEXT' ou 'XML'
 * @param 	string 	méthode d'appel de la page : 'GET' ou 'POST'
 * @param 	string 	donnees à envoyer au script sous la forme : 'var1=val1,var2=val2'
 * @param 	int	 	délai maximum d'exécution du script appelé en secondes
 * @return 	string 	resultat affiché par le script appelé
 */

/*
* Différentes valeurs renvoyée par la propriété readyState
* 0 (uninitialized) non initialisé 
* 1 (loading) début du transfert des données 
* 2 (loaded) données transférées 
* 3 (interactive) les données reçues sont accssibles en partie 
* 4 (complete) les données sont complètement accessibles
*/
var readyState_uninitialized = 0;
var readyState_loading = 1;
var readyState_loaded = 2;
var readyState_interactive = 3;
var readyState_complete = 4;
 
function appel_ajax (fichier,format_retour,methode_appel,donnees,timeout)
{
	//Pointeur de l'objet appel de requete ajax
	var xhr_object = null;
	
	if (format_retour == '' || format_retour == null || (format_retour!='XML' && format_retour!='TEXT'))
	{
		//On attribut une valeur par défaut au format de retour
		format_retour = 'TEXT';
	}
	if (methode_appel == '' || methode_appel == null || (methode_appel!='GET' && methode_appel!='POST'))
	{
		//On attribut une valeur par défaut au la méthode d'appel du script
		methode_appel = 'GET';
	}
	if (timeout == '' || timeout == null)
	{
		//On attribue on timeout par défaut
		timeout = 30;
	}
	//Si méthode utilisé GET alors on ajoute les données passées dans l'url sinon on les envoie via data par la méthode POST
	if (methode_appel == "GET" && donnees != null && donnees != '') 
	{   
		fichier += "?"+donnees;   
		donnees = null;   
	}
	
	//Pour le navigateur Firefox
	if(window.XMLHttpRequest) 
	{
		xhr_object = new XMLHttpRequest();
	}
	else
	{
		//Pour le navigateur IE
		if(window.ActiveXObject)
		{
			xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
		}
		else
		{
			//Appel ajax impossible via le navigateur
			alert("Votre navigateur ne supporte pas AJAX");   
			return(false);
		}
	}
	
	//Si méthode POST on modifie l'entête
	if (methode_appel == "POST")
	{
		xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	}
	
	//On modifie le timeout du script
	//Cette fonction n'a pas l'air de fonctionner
	//xhr_object.setTimeouts(timeout);
	
	//Execution du script à appeler
	xhr_object.open(methode_appel.toString(), fichier.toString(), false);
	
	xhr_object.send(donnees);	
	//alert('apres le send data');
	//Traitement à réaliser sur changement de l'état
	/*xhr_object.onreadystatechange = function() 
	{ */  
		//Dès que le traitement complet du script a été réalisé on renvoie le résultat
		if(xhr_object.readyState == readyState_complete) 
		{
			if (format_retour == 'TEXT')
			{
				//alert(xhr_object.responseText);
				return (xhr_object.responseText);
			}
			if (format_retour == 'XML')
			{
				return (xhr_object.responseXML);
			}
		}
    //}
}