//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','#006600');
					  choixCourant--;
					  //ici on affiche dans le champs de recherhce le terme selectionne
					  $("#etudiant").val($("#choix_"+choixCourant).text());
					  $("#choix_"+choixCourant).css('background-color','#FF9900');
					  $("#choix_"+choixCourant).css('color','#000000');
				}else{
					  $("#choix_"+choixCourant).css('background-color','#FFFFFF');
					  $("#choix_"+choixCourant).css('color','#006600');
					  choixCourant = choixTotaux;
					   //ici on affiche dans le champs de recherhce le terme selectionne
					  $("#etudiant").val($("#choix_"+choixCourant).text());
					  $("#choix_"+choixCourant).css('background-color','#FF9900');
					  $("#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','#006600');
					choixCourant++;
					 //ici on affiche dans le champs de recherhce le terme selectionne
					$("#etudiant").val($("#choix_"+choixCourant).text());
					$("#choix_"+choixCourant).css('background-color','#FF9900');
					$("#choix_"+choixCourant).css('color','#000000');
				}else{
					$("#choix_"+choixCourant).css('background-color','#FFFFFF');
					$("#choix_"+choixCourant).css('color','#006600');
					choixCourant = 1;
					 //ici on affiche dans le champs de recherhce le terme selectionne
					$("#etudiant").val($("#choix_"+choixCourant).text());
					$("#choix_"+choixCourant).css('background-color','#FF9900');
					$("#choix_"+choixCourant).css('color','#000000');
				}
			}
		}
	}
}
/***********************************************************************/
// 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 avant une autre touche, sinon le timer est remis a zéro
// deux paramètres, le champs de recherche et event
/************************************************************************/
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;
				}
			}
		}
	}
	/********************************************/
	
	//avant de lancer une recherche, on s'assure qu'il y a au moins un charactère dans le chamsp 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","edit/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, e){
	if(e != undefined){
		if(String(e.keyCode).match(/13/))
		{
			$("#div-terms").hide();
			$("#etudiant").val(linkRef.innerHTML);
		}	
	}else{
		$("#div-terms").hide();
			$("#etudiant").val(linkRef.innerHTML);
	}
	
	return false;
}
//fonction appelée afin de créer un hover sur le lien
//evite un bug css ou le lien ne fait le hover qu'une seule fois
//paramètre, le lien survolé
function hover(l){
	$("#choix_"+choixCourant).css('background-color','#FFFFFF');
	$("#choix_"+choixCourant).css('color','#006600');
	//on en profite pour mettre a jour le choix courant
	//il devient le lien survolé
	var hoveredId =  l.id.split('_')[1];
	choixCourant = hoveredId;
	$(l).css('background-color','#FF9900');
	$(l).css('color','#000000');
}
//fonction appelée afin de détruire un hover sur le lien
//evite un bug css ou le lien ne fait le hover qu'une seule fois
//paramètre, le lien survolé
function unhover(l){
	$(l).css('background-color','#FFFFFF');
	$(l).css('color','#006600');
}
//appelé afin de fermer le conteneur avec un lèger délai
function closeSearch(){
	intID = setTimeout(function(){$("#div-terms").hide()},500);
}
