function createXhr(){
	
		/*objet HTMLHTTPRequest*/	
	if(window.XMLHttpRequest) // Firefox et autres
	  var xhr = new XMLHttpRequest(); 
	else if(window.ActiveXObject){ // Internet Explorer 
	   try {
				var xhr = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e) {
				var xhr = new ActiveXObject("Microsoft.XMLHTTP");
			}
		}
		else { // XMLHttpRequest non supporté par le navigateur 
		   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
			var xhr = false; 
		}
	return xhr;	
}



function sendAJAXRequest(url,mode,callback,params_post){

 	var xhr = createXhr();
	if(!xhr) return;
	
	xhr.onreadystatechange = function(){
		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
				
		if(xhr.readyState == 4 && xhr.status==200){

		var reponse=xhr.responseText;
			if(callback===''){
				return;
			}	
			else{
				reponse = escape(reponse);
					eval( callback+"(\'"+reponse+"\')");
			}
			
		}
		
	}
	var date_actuelle = new Date();
	xhr.open(mode,url+"&date="+date_actuelle.getTime(),true);
	
	if(mode=="POST"){
		xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		xhr.setRequestHeader("Content-length", params_post.length);
		xhr.setRequestHeader("Connection", "close");	
	}
	
	try{	
		if(mode!="POST"){params_post=NULL}
		xhr.send(params_post);
		
	} catch (e) {
		alert("erreur "+e);
	}	
	
}


function sendAJAXRequestSynchrone(url,mode,callback,params_post){

 	var xhr = createXhr();
	if(!xhr) return;
	var date_actuelle = new Date();
	xhr.open(mode,url+"&date="+date_actuelle.getTime(),false);
	try{	
		if(mode!="POST"){params_post=NULL}else{
			xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		xhr.setRequestHeader("Content-length", params_post.length);
		xhr.setRequestHeader("Connection", "close");	
		}
		xhr.send(params_post);
		if(callback===''){
			return;
		}else{
			var reponse=xhr.responseText;
			reponse = escape(reponse);
			eval( callback+"(\'"+reponse+"\')");
		}
	} catch (e) {
		alert("erreur "+e);
	}	
	
}
