//Création de l'objet AJAX
//utilisation :  var xmlHttp = getXMLHR();
function getXMLHR(){
	var xmlHttp = false;
	if (window.ActiveXObject)
	{
		try
		{
			xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	else if (window.XMLHttpRequest)
	{
		xmlHttp = new XMLHttpRequest();
	}
	else
	{
		alert('FONCTION NON-SUPORTÉE !!\nVeuillez mettre votre navigateur a jour');
		return;
	}
	//retour de l'objet créé
	return xmlHttp;
}
//Recherche avec termes populaires ------------------------------------//

var timerID;
//si true, on prend en compte les touches "haut" et "bas"
var arrowReady = false;
//représente le lien choisi en ce moment (survol ou clavier)
var choixCourant = 0;
//représente le nombre  de lien trouvés
var choixTotaux = 0;
//temps d'Attente apres une touche avant de faire une recherhce
var waitTime = 200;
/***********************************************************************/
// Fonction appelée par le relachement d'une touche sur le champs de recherche
// Un timeout est utilisé afin de ne pas rechercher des qu'une touche est enfoncée
// 200 ms par defaut, sinon le timer est remis a zéro
// deux paramètres, le champs de recherche et event
/************************************************************************/
function ajaxSearchWait(searchField,e){
	choixTotaux = 0;
	//si les touches détectées ne sont pas des flèches
	//on lance un recherche
	if(!String(e.keyCode).match(/40|39|38|37/)){
		clearTimeout(timerID);
		//ici on lance la VRAI fonction de recherche après que le temps d'attente soit ecoule
		timerID = setTimeout(function(){ajaxSearch(searchField,e)},waitTime);
		choixCourant = 0;
		
	}else{
		//sinon, on affiche le lien sélectionné
		//en chageant la couleur de fond et la police
		//aussi, le mot apparaît dans le champs texte
		if(arrowReady){
			//compte le nombre de lien totaux
			$("#div-terms a").each(function(i){
					choixTotaux++;
			})
			//si fleche vers le haut
			if(e.keyCode == 38){
				if(choixCourant > 1){
					  $("#choix_"+choixCourant).css('background-color','#FFFFFF');
					  $("#choix_"+choixCourant).css('color','#000000');
					  choixCourant--;
					  //ici on affiche dans le champs de recherhce le terme selectionne
					  $("#search").val($("#choix_"+choixCourant).text());
					  $("#choix_"+choixCourant).css('background-color','#efefef');
					  $("#choix_"+choixCourant).css('color','#000000');
				}else{
					  $("#choix_"+choixCourant).css('background-color','#FFFFFF');
					  $("#choix_"+choixCourant).css('color','#000000');
					  choixCourant = choixTotaux;
					   //ici on affiche dans le champs de recherhce le terme selectionne
					  $("#search").val($("#choix_"+choixCourant).text());
					  $("#choix_"+choixCourant).css('background-color','#efefef');
					  $("#choix_"+choixCourant).css('color','#000000');
				}
			}
			//si fleche vers le bas
			if(e.keyCode == 40){
				if(choixCourant < choixTotaux){
					$("#choix_"+choixCourant).css('background-color','#FFFFFF');
					$("#choix_"+choixCourant).css('color','#000000');
					choixCourant++;
					 //ici on affiche dans le champs de recherhce le terme selectionne
					$("#search").val($("#choix_"+choixCourant).text());
					$("#choix_"+choixCourant).css('background-color','#efefef');
					$("#choix_"+choixCourant).css('color','#000000');
				}else{
					$("#choix_"+choixCourant).css('background-color','#FFFFFF');
					$("#choix_"+choixCourant).css('color','#000000');
					choixCourant = 1;
					 //ici on affiche dans le champs de recherhce le terme selectionne
					$("#search").val($("#choix_"+choixCourant).text());
					$("#choix_"+choixCourant).css('background-color','#efefef');
					$("#choix_"+choixCourant).css('color','#000000');
				}
			}
		}
	}
}
/***********************************************************************/
//Vrai fonction qui communique avec php
//elle sera appelée lorsq ue le temps d'Attente après
//une touche du clavier est dépassé
/************************************************************************/
function ajaxSearch(searchField,e){
	var container = '#div-terms';
	var query = searchField.value;
	//#############################//
	//OUVERTURE D'UNE CONNEXION AJAX
	var xmlHttp = getXMLHR();
	//#############################//
	//#############################//
	//RÉCEPTION DES DONNÉES
	//ce bloque de code va être exécuté après la réponse du fichier php
	/***********************************************/
	xmlHttp.onreadystatechange = function(){
		//le retour est ok
		//aucune erreur
		if (xmlHttp.readyState == 4){	
			if (xmlHttp.status == 200){
				
				//ici, on place automatiquement le conteneur qui affiche les résultats trouvés
				//il se place sous le champs de recherche
				$(container).css("top",searchField.offsetTop + searchField.offsetHeight);
				$(container).css("left",searchField.offsetLeft );
				
				//ici on vérifie si des termes on été trouvés
				if(xmlHttp.responseText !=''){//si oui
					arrowReady = true;
					//on affiche le conteneur et on le rempli des termes trouvés
					$(container).show();
					$(container).html(xmlHttp.responseText);
				}else{//si non
					//on vide le conteneur et le cache
					$(container).html('');
					$(container).hide();
					//on remet les valeurs de choix a 0
					choixCourant = 0;
					choixTotaux=0;
					arrowReady = false;
				}
			}
		}
	}
	/********************************************/
	//#############################//
	//ENVOI D'UNE REQUETE À UN SCRIPT PHP
	//avant de lancer une recherche, on s'assure qu'il y a au moins un charactère dans le champs de recherche
	if(query != ''){//si oui
		//on communique en POST avec le fichier PHP qui va retourner (avec echo ou print)
		//on spécifie que c'est asynchrone
		xmlHttp.open("POST","ajax.php",true);
		xmlHttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		//on crée les variables POST et leur valeur respective
		//elles seron disponible dans le script PHP ciblé
		xmlHttp.send("query="+query+"&type=SEARCH");
	}else{//sinon
		//on cache le conteneur
		$(container).hide();
	}
	
  return false;
}
//fonciton appelé lors du clic sur un lien
function setChoice(linkRef){
	$("#div-terms").hide();
	$("#search").val(linkRef.innerHTML);
	$("#form-search").submit();
}

//appelé afin de fermer le conteneur avec un lèger délai
function closeSearch(){
	intID = setTimeout(function(){$("#div-terms").hide()},500);
}