//
//	Librairie by The Rubik's Man
//		    © 2005-2006
//

		var foc = false;
		var current_id_foc = 0;
		var current_sear = '';
		var current_n = 0;
		var search_id1 = new Array('-1');
		var border_no_f = '';
		var background_color_no_f = '';
		var background_color_f = '';
		var border_f = '';
		var file_r;
		
		/**
		  *		Permet d'initialiser les variables de config javascript
		  *		Cf. config.php  pour les significations des variables
		  *
		  */
		function autoCompletion_in(border_no_f,border_f,background_color_no_f,background_color_f,file_r)
		{
			this.border_no_f = border_no_f;
			this.border_f = border_f;
			this.background_color_no_f = background_color_no_f;
			this.background_color_f = background_color_f;
			this.file_r = file_r;
		}
		
		
		/**
		  *		Fonction controlant les actions a faire en fonction de la valeur du code de l'event "KeyUp"
		  *		Permet la navigation clavier dans la liste dynamique
		  *		
		  *		@ param : value => valeur du champ de texte principal
		  *			       event => l'evenement associe au KeyUp
		  */
		function event_captu(value,event)
		{
			this.current_sear = document.autoCompleti.autoCompletion_inp.value;
			/*
				Normalement le " event.keyCode " n'est utilise que par IE et pas par Mozilla et Firefox qui eux utilisent "which"
				Mais a ma grande stupefaction apres un test sous firefox .... cela marche ossi... alors pourquoi aller mettre du code en plus...
			*/
			switch (event.keyCode)
			{
				// TOUCHE " FLECHE BAS "
				case 40 :
								if ( current_id_foc > 0 && current_id_foc < current_n) loose_focus_sty(current_id_foc);
								if ( current_id_foc < current_n )
								{
									give_focus_sty(current_id_foc+1);
									current_id_foc++;
								}
								break;
								
				// TOUCHE " FLECHE HAUT "
				case 38 :
								if ( current_id_foc >= 1 )
								{
									loose_focus_sty(current_id_foc);
									if ( current_id_foc >= 2 ) give_focus_sty(current_id_foc-1);
									this.current_id_foc--;
								}
								break;
								
				// TOUCHES " FLECHE GAUCHE " et " FLECHE DROITE " desactivees
				case 37 : 		break;
				case 39 : 		break;
				
				// TOUCHE " ENTRER "
				case 13 :		if ( value != '' ) redire();
				
				// TOUTES LES AUTRES TOUCHES
				default :
								if ( value == '' )
								{
									current_id_foc = 0;
									current_n = 0;
									hide_lii();
								}
								else AJA(value);
								break;
			}
		}
		
		/**
		  *		Permet la redirection apres un click ou l'appui sur "entrer"
		  *		 - si on click sur un element de la liste ou que l'on appui sur "entrer" sur un des elements => mode fiche => id en parametre ( id=X )
		  *		 - si on appui sur "entrer" dans le champ texte principal => mode recherche => valeur de la recherche en parametre ( search=xxx )
		  */
		function redire()
		{
			window.location.href = current_id_foc != 0 ? 
															'evenement.php?'+'nom='+search_id1[current_id_foc]
														:
															'evenement.php?'+'nom='+current_sear.toUpperCase();
		}
		
		/**
		  *		Permet avec l'outil ajax d'effectuer dynamiquement des requetes
		  *
		  *		@ param value : valeur de la recherche courante
		  *
		  */
		function AJA(value)
		{
			this.current_id_foc = 0;
			
			// On cree l'objet AJA
			if(document.all)
			{
				//Internet Explorer
				var AJA = new ActiveXObject("Microsoft.XMLHTTP");
			}
			else
			{
			    //Mozilla
				var AJA = new XMLHttpRequest();
			}
			
			// On defini le fichier appele lors de l'envoie
			AJA.open("POST", './autoCompletion_module1/php_required/autoCompletion_answer1.php',true);
				
			//Fonction appelee automatiquement lors de la fin des transferts asynchrones
			// C'est ici que l'on dit ce qu'il va se passer apres le renvoie
			AJA.onreadystatechange = function()
			{
				if (AJA.readyState == 4 && AJA.status == 200) 
				{
					/* 
						ici j'ai choisi une structure simple.
						Par exemple pour un dictionnaire : si on tape "abc"
						la reponse sera par exemple pour un affichage de 5 elements : 
							X=>abcisse|||X=>abcisses|||X=>abcede|||X=>abcedent|||X=>abces
						X signifie l'id du mot dans la table =>  permet lors d'un click ou de l'appui sur la touche "entree" sur
												une recherche d'envoyer l'id par exemple ici pour aller a la 
												page de la definition de ce mot
					*/
					// Enlever le commentaire de l'alert pour voir dans une fenetre la reponse AJA
					//alert(AJA.responseText);
					
					// On appelle la fonction d'ecriture des input avec la reponse d'ajax en parametre
					write_d(AJA.responseText);
				}
			}
			
			// On declare le type des donnees echangees => ici du texte
			// On pourait utiliser du XML mais ici cela est très peu utile par le petite quantite de donnee echangee
			AJA.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
			AJA.send('post='+value);
		}
		
		/**
		  *		Permet d'ecrire le code html de la div de recherche rapide
		  *
		  *		@ param : fields => chaine de caractere de la reponse ajax
		  *		@ return : //
		  */
		function write_d(fields)
		{
			var div = document.getElementById('autoCompletion_answer1'); // Block d'affichage
			
			// On extrait la reponse ajax, on enregistre le nombre de resultats
			var tmp1 = fields.split('|||');
			var tmp_length = tmp1.length == 1 && tmp1[0] == '' ? 0 : tmp1.length;
			current_n = tmp_length;
			
			// On cree le code html que l'on va inserer dans la div
			var outp = '';
			for(var i=0;i<tmp_length;i++)
			{
				var id = i + 1;
				tmp3 = tmp1[i].split('=>');
				this.search_id1[id] = tmp3[0];
				outp += '<input style=\"background-color:'+background_color_no_f+';border:'+border_no_f+';\" onBlur=\"focus_off1();\" onClick="redire();" onMouseOver=\"give_focus_sty('+id+',1);\"  readonly=\"readonly\" type=text id=\"lis'+id+'\" value="'+tmp3[1]+'">';
			}
	
			
			
			// Si la reponse ajax n'est pas vide on affiche, sinon on efface
			if ( fields != '' )
			{
				div.innerHTML = outp;
				div.style.display = 'block';
			}
			else hide_lii();
		}
	
		/**
		  *		Permet de controler que l'on est dans une recherche
		  *		Cela permet de ne pa effacer la liste si un 
		  *		click est porte au niveau de la liste, alors qu'elle sera effacee si on click ailleur
		  *		C'est un systeme de bidouille... mais j'ai trouve que ca pour palier ce probleme sans intercepter
		  *		tous les evenements souris de javascript ce qui serait beaucoup plus lourd en code
		  */
		function focus_on1()
		{
			foc = true;
		}
		function focus_off1()
		{
			foc = false;
		}
		document.onclick = function ()
						   {
								if ( foc == false ) hide_lii();
								if ( focus == false ) hide_list();
						   };
		function hide_lii()
		{
			document.getElementById('autoCompletion_answer1').style.display='none';
		}
		
		

		/**
		  *		Permet de changer le style des inputs
		  *		
		  *		Changement de style par javascript car en css :hover sur <input> ou <div> ne fonctionne pas sous IE
		  *		Puis pour les changements de foc par entree clavier necessite du javascript
		  *
		  *		@ param : id => id de l'input text a changer le style
		  *			       control => permet suivant les cas l'activation de certaines operations
		  *
		  */
		function give_focus_sty(id,control)
		{
			if ( id != 0 && id != current_id_foc)
			{
				var input_hidd = document.getElementById('lis'+id);
				input_hidd.style.backgroundColor = background_color_f;
				input_hidd.style.border = border_f;
				input_hidd.style.cursor = 'pointer'; // Pour IE qui ne prend pas en compte les :hover sur les div en CSS
			}
			if ( control == 1 && id != current_id_foc)
			{
				loose_focus_sty(current_id_foc);
				current_id_foc = id;
			}
		}
		
		
		/**
		  *		Permet d'enlever le style foc et de remettre le style normal
		  *		Fonction appelee depuis " give_focus_sty " avant de mettre le style foc au nouveau input courant
		  *
		  *		@ param : id => id de l'input text a desactiver le style foc
		  */
		function loose_focus_sty(id)
		{
			if ( current_id_foc != 0 )
			{
				var input_hidd = document.getElementById('lis'+id);
				input_hidd.style.backgroundColor = background_color_no_f;
				input_hidd.style.border = border_no_f;
			}
		}
//
//	Librairie by The Rubik's Man
//		    © 2005-2006
//