
function ajax(){
	var obj;
	if (window.XMLHttpRequest){ // Firefox et autres
		obj = new XMLHttpRequest();
	}
	else if (window.ActiveXObject){ // Internet Explorer
		var ieversions = [	'Msxml2.XMLHTTP',
							'Microsoft.XMLHTTP',
							'Msxml2.XMLHTTP.5.0',
							'Msxml2.XMLHTTP.4.0',
							'Msxml2.XMLHTTP.3.0'];

		for (var i=0; !obj && i<ieversions.length; i++){
			try {
				obj = new ActiveXObject(ieversions[i]);
			} catch (e) {
				obj = null;
			}
		}
	}
	return obj;
}


var lastQuery = null;
function rechercheAjax(destId, query, loaderId){
	if (query == lastQuery){
		return true;
	}
	
	var xhr = new ajax();
	if (xhr == null){
		alert('Votre navigateur ne supporte pas les objets XMLHTTPRequest...');
		return false;
	}
	
	var url = '/site/liste-fonctions.php?recherche=' + encodeURIComponent(query) + '&byAjax=1';
	xhr.open('GET', url, true);
	
	xhr.onreadystatechange = function(){
		if (xhr.readyState == 4){
			document.getElementById(destId).innerHTML = xhr.responseText;
			if (loaderId != null){
				document.getElementById(loaderId).display = 'none';
			}
			
			if (reqDemandeeTO !== null){
				clearTimeout(reqDemandeeTO);
				reqDemandeeTO = null;
			}
		}
	};
	if (loaderId != null){
		document.getElementById(loaderId).display = '';
	}
	xhr.send(null);
	lastQuery = query;
	setDefaultSearchAjax((query == '' ? 'rechercher' : query));
}


var reqDemandeeTO = null;
function rechercheAjaxApresTemporisation(action){
	var delai = 450;
	if (arguments.length >= 2){
		delai = arguments[1];
	}
	if (reqDemandeeTO !== null){
		clearTimeout(reqDemandeeTO);
		reqDemandeeTO = null;
	}
	reqDemandeeTO = setTimeout(function(){
		action(); 
		reqDemandeeTO = null;
	}, delai);
}
