// JavaScript Document
// Copyright 2006 Jean-Marc Reymund
// jeanmarc_reymund@yahoo.fr
// version 1.11 (20/03/2006)

var dispError = true;									// true / false pour afficher ou non les erreurs
var ie = (document.all) ? true : false;				// test si compatible IE
var ns6 = (document.getElementById) ? true : false;	// test si compatible netscape

/*
 * gestionnaire erreur
 */
function errorHandler(error)
{	// gestionnaire d erreur
	if (dispError)
	{	// renvoi le message
		alert(error);
	}
	else
	{	// ignore le msg
		throw(error);
	}
}

/*
 * xml http request object
 */
function XHR()
{
 	var xmlHttp			= null;							// object XML Http Request
	if (window.XMLHttpRequest)
	{	// si compatible mozilla
		xmlHttp = new XMLHttpRequest();
	} else if(window.ActiveXObject){
		try {// si compatible IE 7.0
			 xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {// si compatible IE avant 7.0
			xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
		}
	} 
	else
	{	// XMLHttpRequest non supporte par le navigateur 
		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
	}	
	
	var method			= "GET";								// method d envoi GET ou POST
	var params			= null;									// param a passer a l url appelee
	var url				= null;									// url a appeler
	var syn				= true;									// mode synchrone ou asynchrone (async par defaut)
	var outPut			= "(xmlHttp.responseText);";			// type de sortie
	var execName		= null;									// fonction a executer lorsque les donnees ont ete receptionnees
	var enctype			= "application/x-www-form-urlencoded";	// encodage des donnees
	
	/*
	 * abandon de la requete
	 */
	this.abort	= function()	{ xmlHttp.abort(); }
	
	/*
	 * definition de la methode d envoi des parametres (POST ou GET)
	 */
	this.setMethod	= function(data)	{ method = data; }
	
	/*
	 * definition de la methode d encodage des donnees
	 */
	this.setEnctype	= function(data)	{ enctype = data; }
	
	/*
	 * definition de l url
	 */
	this.setUrl			= function(data)	{ url = data; }
	
	/*
	 * definition des parametres
	 */
	this.setParams	= function(data)	{ params = data; }
	
	/*
	 * definition de type de synchronisation (true ou false)
	 */
	this.setSync	= function(data)	{ sync = data; }
	
	/*
	 * definition du format de donnee du resultat (Text, Xml) 
	 */
	this.setOutPut	= function(data)
	{
		if (data == "xml")
		{	// sortie en xml
			outPut = "(xmlHttp.responseXML);";
		}
		if (data == "text")
		{	// sortie en txt
			outPut = "(xmlHttp.responseText);";
		}
	}
	
	/*
	 * execution une requete http
	 */
	this.execRequest = function(data)
	{	
		exec = data; // permet de connaitre la fonction a executer
		try
		{
			xmlHttp.open(method,url,sync);
			if (method == "POST")
			{
				xmlHttp.setRequestHeader("Content-type", enctype); 
			}
			xmlHttp.send(params);
			if (data != "")
			{
				xmlHttp.onreadystatechange = this.onReqChange;
			}
		}
		catch(except)
		{
			errorHandler(except);
		}
	}
	
	/*
	 * definition de type de synchronisation (true ou false)
	 */
	this.getReadyState	= function()
	{
		return xmlHttp.readyState;
	}
	
	this.onReqChange = function()
	{ // fonction exectuee a chaque changement de status de reception
		if (xmlHttp.readyState == 4)
		{ // lorsque que tout est termine cette fonction est executee
			eval(exec+outPut);
		}
	}
}

function getXhr()
{
	var xhr = null; 
	
	if(window.XMLHttpRequest) {
		xhr = new XMLHttpRequest();
	} else if(window.ActiveXObject){
		try {
			 xhr = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			xhr = new ActiveXObject("Microsoft.XMLHTTP");
		}
	} else {
		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
		xhr = false; 
	} 
			return xhr
}
		
function insertHtml(url, divid)
{
	var xhr = getXhr()

	xhr.onreadystatechange = function(){
		if(xhr.readyState == 4 && xhr.status == 200){
			document.getElementById(divid).innerHTML = xhr.responseText;
		}
	}
	xhr.open("GET",url,true);
	xhr.send(null);
}