function createXHR()
{
	if(window.XMLHttpRequest)
	{
		try {return new XMLHttpRequest();} catch(e) {}
	}
	if (window.ActiveXObject)
	{
		try {return new ActiveXObject("Msxml2.XMLHTTP");} catch(e) {}
		try {return new ActiveXObject("Microsoft.XMLHTTP");} catch(e) {}
	}
	return (null);
}

	//	interaction ajax avec le serveur en ajax asynchrone	
	//	sollicite : l'url ?ajax=ajax&options=OPTIONS 
	// utilisation sous la forme : 
	//	var r=fctAjaxAsynchrone(ajax,options) ;
	//	r.fctReceive=function(r){alert(r) ;} ;
	function fctAjaxAsynchrone(ajax,options, callback, e)
	{
		var url		="?ajax="+ajax ;

		if (options && options.length)	url = url+"&"+options ;

		url	= url+"&"+10000*Math.random();

		var debug=document.getElementById("debug") ;
		if (debug)	debug.innerHTML=debug.innerHTML+url+"<br />" ;
		var xhrObj = createXHR();
		if (!xhrObj)// XMLHttpRequest non supporté par le navigateur
		{ 
		   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
		   return;
		}
		xhrObj.open("GET", url, true);
		if (callback)
			xhrObj.onreadystatechange = function() 
			{ 
				if(xhrObj.readyState == 4)	callback(e, xhrObj.responseText);
			};
		xhrObj.send(null);
		return xhrObj ;
	}
	//	interaction ajax avec le serveur en ajax synchrone	
	//	sollicite : l'url ?ajax=ajax&options=OPTIONS&POSTDTA
	//	var s=fctAjaxSynchrone(ajax,options) ;
	function fctAjaxSynchrone(ajax,options,postDta)
	{
		var url	="index.php?ajax="+ajax ;
		if (options && options.length)	url = url+"&"+options ;
		url	= url+"&specialKey="+fctReadCookie("specialKey");
		url	= url+"&"+10000*Math.random();

		var debug=document.getElementById("debug") ;

		if (debug)	debug.innerHTML=debug.innerHTML+url+"<br />" ;
		r	=		false ;
		var xhrObj = createXHR();
		if	(xhrObj)
		{
			if (postDta)
			{
				postDta = encodeURI(postDta) ;
				xhrObj.open("POST", url, false);
				xhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded') ;
				xhrObj.send(postDta) ;
			}
			else
			{
				xhrObj.open("GET", url, false);
				xhrObj.send(null);
			}
			if(xhrObj.readyState == 4)	r=xhrObj.responseText;
		}
		return	r ;
	}
	
// transforme les champs du formulaire formId en chaine postDta prête à être envoyée dans xhr
function fctFormToPostDta(formId,tagName)
{
	var r="" ;
	var form=document.getElementById(formId) ;
	if (form)
	{
		r = fctFormToPostDtaSuite(form,"select",r) ;
		r = fctFormToPostDtaSuite(form,"textarea",r) ;
		r = fctFormToPostDtaSuite(form,"input",r) ;
	}
	return r ;
}
function fctFormToPostDtaSuite(form,tagName,r)
{
	lst = form.getElementsByTagName(tagName) ;
	for (var i=0; i<lst.length; i++)
		if (lst[i].name.length)
		{
			if (r.length)	r += "&" ;
			r += lst[i].name+"="+encodeURI(lst[i].value) ;
		}
	return r ;
}
