<!--
//Version 1.0.0 25 Mai 2010
//Copyright Quickinformatique Sarl

	function QuickAutoComplete (id_input, ajaxScript, clSender, frmparent, id_hidden, submit) {		
		
		this.objInput = document.getElementById(id_input);
		if (frmparent != 'undefined') this.frmParent = document.getElementById(frmparent);
		if (id_hidden != 'undefined') this.objHidden = document.getElementById(id_hidden);
		this.objInputPos = getPosition(this.objInput);
		this.objInput.setAttribute( 'autocomplete','off');
		this.objList = document.createElement('div');
		this.objList.className = 'autolist';
		document.getElementById('bandeau').appendChild(this.objList);
		this.objList.style.width = (this.objInput.offsetWidth - 2)+'px';
		this.objList.style.right = 66+'px';
		this.objList.style.top = (this.objInputPos.y + this.objInput.offsetHeight-1)+'px';			
		this.script = ajaxScript;
		this.sender = clSender;
		this.selected = 0;
		this.initial = '';
		this.nbList = 0;
		if (submit == false) this.SubmitOnEnter = false;
		else this.SubmitOnEnter = true;
		
		var obj = this; //Très important!!! 
						//La valeur "this" devient "l'objet en cours" lors des événements.
						//La variable "obj" fait référence à la fonction (classe) "QuickAutoComplete"
		
		this.showList = function() {
			if (obj.nbList > 0) obj.objList.style.display = 'block';
			else obj.hideList();
			return;
		}
		
		this.hideList = function() {
			obj.objList.style.display = 'none';
			return;
		}
		
		this.objInput.onkeydown = function(e) {
			
			if (!e) e = window.event;
			
			if (e.keyCode == 40) {
				
				if (obj.objList.style.display == 'none') {
					obj.showList();
					return;
				}
				obj.selectNext();
				return;
			}
			
			if (e.keyCode == 38) {
				
				if (obj.objList.style.display == 'none') {
					obj.showList();
					if (!IE) e.preventDefault();
					return;
				}
				
				obj.selectPrev();
				if (!IE) e.preventDefault();
				return;
			}
			
			if (e.keyCode == 27) {
				obj.hideList();
				e.cancelBubble = true;	
				e.returnValue = false;
				return;
			}
			
			if (e.keyCode == 13) {
				obj.hideList();
				if (!obj.SubmitOnEnter) {
					e.cancelBubble = true;	//Retirer ces 2 lignes si l'on souhaite pouvoir envoyer le formulaire via la touche entree
					e.returnValue = false;
				}
				return;
			}
			
			return;
		}
		
		this.objInput.onkeyup = function(e) {
			
			if (!e) e = window.event;
			
			if ((e.keyCode > 46) && (e.keyCode < 91) || (e.keyCode == 8) || (e.keyCode == 32)) {	//Ici on ne sélectionne que les caractères AlphaNumériques				
				if (this.value.length > 1) obj.RefreshList(this.value); //{setTimeout("obj.RefreshList("+this.value+")",2000);}
				else obj.hideList();
			}
			
			return;
		}
			
		this.objInput.onblur = function () {
			obj.hideList();
			return;
		}
		
		this.objInput.onfocus = function () {
			childObj = obj.objList.childNodes;					
			obj.nbList = childObj.length;
			return;
		}
			
		this.RefreshList = function(data) {			

			obj.selected = -1;
			obj.initial = data;
			
			XhrObj.open("GET", obj.script+"?s="+data+"&sd="+obj.sender);

			XhrObj.onreadystatechange = function()
			{
				if (XhrObj.readyState == 4 && XhrObj.status == 200) {					
					
					obj.objList.innerHTML = XhrObj.responseText;	
					
					childObj = obj.objList.childNodes;
					
					obj.nbList = childObj.length;
					
					obj.showList();
				}
			}    

			XhrObj.send(null);
			
			return;
		}
		
		this.selectClic = function(data, id) {				

			obj.objInput.value = data;	
			if (obj.objHidden) obj.objHidden.value = id;
			obj.hideList();
			
			if (obj.frmParent) obj.frmParent.submit();
			
			return;
		}
				
		this.selectList = function(e) {		//Met à jour le champ input en fonction de l'élément choisis dans la liste
			
			if (obj.selected > -1) {
				str = childObj.item(obj.selected).innerHTML;
				
				str = str.replace(/<b>/gi,'');	//Exepression régulières : /gi (g)lobal (i)nsensible à la casse
				str = str.replace(/<\/b>/gi,'');
				
				obj.objInput.value = str;
				if (obj.objHidden) obj.objHidden.value = childObj.item(obj.selected).id;
			}
				
			return;
		}
		
		this.selectNext = function(e) {			
			
			if (obj.nbList > 0) {
			
				if (obj.selected > -1)childObj.item(obj.selected).className = 'listNormal';
				obj.selected++;
				if (obj.selected == childObj.length) obj.selected = 0;
				childObj.item(obj.selected).className = 'listSelected';
				
				obj.selectList();
			}
			
			return;
		}
		
		this.selectPrev = function(e) { //Selection du prochain element de la liste
			
			childObj = obj.objList.childNodes;
			
			if (obj.selected > -1) {
				
				if (obj.selected == 0) {
					childObj.item(obj.selected).className = 'listNormal';
					obj.objInput.value = obj.initial;
					obj.selected = -1;
					return;
				}
				
				childObj.item(obj.selected).className = 'listNormal';
				obj.selected = obj.selected-1;
				childObj.item(obj.selected).className = 'listSelected';					
				obj.selectList();
				
			}
			else {
				obj.selected = childObj.length-1;
				childObj.item(obj.selected).className = 'listSelected';					
				obj.selectList();	
			}
			return;
		}
		
		this.selectMouse = function(item) {				
			
			childObj = obj.objList.childNodes;
			
			for (var i = 0; i < childObj.length; i++) {
				if (childObj.item(i) == item) {
					
					if (obj.selected > -1) childObj.item(obj.selected).className = 'listNormal';
					obj.selected = i;
					childObj.item(obj.selected).className = 'listSelected';	
				}
			}
			
			return;
		}
		
	}	
-->
