// ***** //
// AJAX //
// ***** //
function createRequestObject() {
	var xhr = null;
	if(window.XMLHttpRequest) { //firefox
		xhr = new XMLHttpRequest();
	} else if(window.ActiveXObject) { //ie
		try {
			xhr = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				xhr = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e2) {
				alert("Vous devez ajouter ce site dans les sites de confiance pour profiter de toutes les fonctionnalités. Ou utiliser un navigateur plus récent : Internet Explorer 7, Firefox...");
			}
		}
	} else { //non supporté
		alert("Fonction non supportée par le navigateur, utilisez un navigateur plus récent : Internet Explorer 7, Firefox...");
		xhr = false;
	}
	return (xhr);
}

var http_occupe = false;
var http_todo = new Array();
var http_todo_occupe = false;
var cache_reponse = new Array();
var http_return = createRequestObject();

function sndReq_return(action,url,mode,fromTodo) {
	if(!fromTodo) fromTodo=0; // provient de la liste d'attente
	if(!mode) mode='innerHTML';
	if(http_occupe==false && (http_todo.length==0 || fromTodo==1)) {
		http_occupe=true;
		if(action=="results" && cache_reponse[url]) {
			// Affichage du cache
			document.getElementById(action).innerHTML = cache_reponse[url];
			http_occupe = false;
		} else {
			// Demande de reponse
		    http_return.open('GET', url);
			http_return.onreadystatechange = function() {
				if(http_return.readyState == 4) {
					if(action!="") {
						switch(mode) {
							case 'innerHTML' : document.getElementById(action).innerHTML = http_return.responseText; break;
							case 'value' : document.getElementById(action).value = http_return.responseText; break;
						}
					}
					http_occupe = false;
		    	}
			}
			http_return.send(null);
		}
	// Systeme occupé, mise en attente
	} else {
		tab=new Array(action,url,mode);
		http_todo.push(tab);
		if(http_todo.length==1) setTimeout("snd_todo()",100);
	}
}

function snd_todo() {
	if(http_occupe==false && http_todo.length>0) {
		sndReq_return(http_todo[0][0],http_todo[0][1],http_todo[0][2],1);
		http_todo.splice(0,1);
	}
	if(http_todo.length>0) setTimeout("snd_todo()",100);
}
// ****** //
// Divers //
// ****** //
function nrf() { /* Ne rien faire :) */ }