	var obj = null;
	var area = null;
	var unhide = false;
	var selectedText = "";
	var position = 0;
	var totalLI = 0;
	var str = "%";





	function suggest(o, a, keyCode, datafile, extra) {
		obj = o;
		area = document.getElementById(a);


		if (obj.value != "") {


			if (keyCode!=40&&keyCode!=38&&keyCode!=13){
				position = -1;
				var XHR = new XHRConnection();
				area.innerHTML = "<span class=\"loading\">Chargement...</span>";
				XHR.setRefreshArea(a);

				if (extra == null) {
					extra = "1";
				}

				XHR.sendAndLoad("ajax/"+datafile+".ajax.php?w="+obj.value+"&"+extra, "GET", show());
				return true;
			}else{
				var i = 0;
				while(document.getElementById("li"+i)){
				i++;
			}
			totalLI = i-1;

			//down
			if (keyCode==40){
				position++;
				if (position == totalLI+1){
					position = 0;
				}
			}
			//up
			if (keyCode==38){
				position--;
				if (position < 0){
					position = totalLI;
				}
			}

			highlight(position);

			moveCaretToEnd();

			//enter
			if (keyCode==13){
				document.getElementById("li"+position).onmousedown();

			}

			return false;

		}
		}



	}







	function moveCaretToEnd(){
		/* pour l'Explorer Internet */
		if(typeof document.selection != 'undefined') {
			/* Ajustement de la position du curseur */
			range = document.selection.createRange();
			range.moveStart('character', obj.length);
			range.select();
	  	}
	  	/* pour navigateurs plus récents basés sur Gecko*/
	  	else if(typeof obj.selectionStart != 'undefined')
	  	{
	    	/* Ajustement de la position du curseur */
	    	obj.selectionStart = obj.value.length;
	    	obj.selectionEnd =  obj.value.length;
	  	}
	  	/* pour les autres navigateurs */
	  	else
	  	{
			//nothing
	  	}
	}

	function highlight(objId){
		var i = 0;

			while(document.getElementById("li"+i)){
				if (i == objId){
					document.getElementById("li"+i).className = "hover";
					position = i;
				}else document.getElementById("li"+i).className = "normal";
				i++;
			}
	}

	function setText(txt, target){
		if (target == null){
		obj.value = txt;
		}else {
		target.value = txt;
		}
		hide();
	}

	function topElement(e)
	{
		return ((e && topElement != topElement.caller)?e.offsetTop:0) + ((e && e.offsetParent)?e.offsetParent.offsetTop + topElement(e.offsetParent):0);
	}
	function leftElement(e)
	{
		return ((e && leftElement != leftElement.caller)?e.offsetLeft:0) + ((e && e.offsetParent)?e.offsetParent.offsetLeft + leftElement(e.offsetParent):0);
	}

	function show(){

		area.style.display = "block";
		area.style.left = leftElement(obj)+"px";
		area.style.top = topElement(obj)+obj.offsetHeight+"px";

		//setTimeout("hide();", 5000);

	}

	 function hide(){
	 	area.style.display = "none";
	}


