/**
* Gestion Ajax
* @package composant_PHP
* @subpackage base
* @licence CeCILL
* @auteur  Jean-rodolphe Lesueur 2005 <jrl@free.fr>
* @version 1.0
*/
Ajax = function (url,fn,sData)
	{
	this.charset = '';
	this.mimeType = "application/x-www-form-urlencoded";
	this.cgi_vars = typeof(sData)=="string"?sData:'';
	this.async = true;
	this.bXml = false;
	this.url = url||'';
	this.fn = typeof(fn)=="function" ? fn : null;
	return this;
	}

Ajax.getXmlHttpRequest = function()
{
  if (window.XMLHttpRequest)	return new XMLHttpRequest();
  else
    try { return new ActiveXObject("Msxml2.XMLHTTP"); }
    catch (e)
	    {
	    try { return new ActiveXObject("Microsoft.XMLHTTP"); }
	    catch (e) { return null; }
	    }
}

Ajax.prototype.get = function (url,fn)
{
  url = url||this.url;
  fn = fn || this.fn;
	var xmlObj;
	xmlObj=Ajax.getXmlHttpRequest();
	if (xmlObj==null) return;
  if (this.bXml && xmlObj.overrideMimeType) xmlObj.overrideMimeType('text/xml');
	xmlObj.onreadystatechange = this.onreadystatechange(fn,xmlObj);
  xmlObj.open ('GET' ,url ,this.async);
  xmlObj.send ('');
}

Ajax.prototype.onreadystatechange = function(fn,xmlObj)
{
return function () {
		if (xmlObj.readyState == 4)
		  if (xmlObj.status == 200) fn(xmlObj);
		  else Ajax.prototype.process_http_error(xmlObj);
		}
}

Ajax.prototype.post = function (url,fn)
{
  url = url||this.url;
  fn = fn ||this.fn;
	var xmlObj;
	xmlObj=Ajax.getXmlHttpRequest();
	if (xmlObj==null)return;
	if (this.bXml && xmlObj.overrideMimeType) xmlObj.overrideMimeType('text/xml');
	xmlObj.onreadystatechange = this.onreadystatechange(fn,xmlObj);
  xmlObj.open ('POST' ,url ,this.async);
  xmlObj.setRequestHeader("Content-type",this.mimeType+(this.charset!=""?"; charset="+this.charset:''));
  xmlObj.setRequestHeader("Content-Length",this.cgi_vars.length);
  xmlObj.setRequestHeader("Enctype","");
  xmlObj.send (this.cgi_vars);
}

Ajax.prototype.process_http_error = function(xmlObj)
 {
 /* Provoque une erreur 'constante Chaîne non terminée' sous IE6/winXP
  si l'on écrit échoué avec un é à la fin (???) sans enregistrer le fichier en utf-8
  (la page html ayant  déclaré un codage utf-8)
  */
	alert('(' + xmlObj.status + ')'+"La requête éffectuée à échoué.");
	}