// desactivation de l'auto complete standard
YAHOO.util.Event.onDOMReady(
    function (ev) {
      document.getElementById('searchString').setAttribute("autocomplete", "off");
      div = document.getElementById('autoComplete');
      input = document.getElementById('searchString');
      input.onkeyup=autoComplete;
      countAuto = tableauExpressionClef.length;
      //YAHOO.util.Event.addListener(document, 'click', function(){ if(this.id!='searchString'){ div.style.display='none';}});
	  document.onclick=
    		  function (ev) {
    	  		  if(typeof(ev)!='undefined' && ev.target.id!='searchString')
    	  			  div.style.display='none';
    		  };
      input.ondblclick=
    	  function (ev) {
    	  	div.style.display='block';
  		  	return true;
	  };
    }
  );

//pour recuperation des elements
var div;
var input;
var countAuto;

//pour gestion des fleches
var idSelect = 0;
var countCompletion = 0;
var KEY_DOWN = 40;
var KEY_UP = 38;
var KEY_ESCAPE = 27;
var ancienneSaisie = '';

function checkEventObj ( _event_ ){
	// --- IE explorer
	if ( window.event )
		return window.event;
	// --- Netscape and other explorers
	else
		return _event_;
}

// fonction affichant l'auto complete
function autoComplete ( _event_ ) {
	//gestion des fleches :
	var e = checkEventObj(_event_);
	if(e.keyCode==KEY_DOWN && countCompletion>0) {
		if(div.style.display=='none') div.style.display='block';
		else {
			selectionne = document.getElementById('lienAutoComplete'+idSelect);
			if(selectionne!=null)
				selectionne.className='';
			idSelect=(idSelect+1)%countCompletion;
			selectionne = document.getElementById('lienAutoComplete'+idSelect);
			if(selectionne!=null) {
				selectionne.className="selected";
				input.value=selectionne.innerHTML;
			} else input.value=ancienneSaisie;
		}
	}else if(e.keyCode==KEY_UP && countCompletion>0) {
		if(div.style.display=='none') div.style.display='block';
		else {
			selectionne = document.getElementById('lienAutoComplete'+idSelect);
			if(selectionne!=null)
				selectionne.className='';
			idSelect=(idSelect-1+countCompletion)%countCompletion;
			selectionne = document.getElementById('lienAutoComplete'+idSelect);
			if(selectionne!=null) {
				selectionne.className="selected";
				input.value=selectionne.innerHTML;
			} else input.value=ancienneSaisie;
		}
	}else {
		if(e.keyCode!=KEY_ESCAPE) {
			idSelect=0;
			var chaine = document.getElementById('searchString').value.toLowerCase();
			ancienneSaisie=chaine;
			var longueurChaine = chaine.length;
			var i=0;
			content = '';
			if(longueurChaine>2) {
				while (i<countAuto && tableauExpressionClef[i].charCodeAt(0)<chaine.charCodeAt(0)) i++;
				while (i<countAuto && tableauExpressionClef[i].charCodeAt(1)<chaine.charCodeAt(1)) i++;
				while (i<countAuto && tableauExpressionClef[i].charCodeAt(2)<chaine.charCodeAt(2)) i++;
				var index=1;
				while(i<countAuto && chaine[2]==tableauExpressionClef[i][2]) {
					if(tableauExpressionClef[i].substr(0,longueurChaine) == chaine && tableauExpressionClef[i] != chaine) {
						content=content + '<a id="lienAutoComplete'+index+'" onclick="doAutoComplete(\''+tableauExpressionClef[i]+'\');return false;">'+ tableauExpressionClef[i] +"</"+"a>";
						index++;
					}
					i++;
				}
				if(content!='') {
					div.innerHTML=content;
					div.style.display='block';
					countCompletion=index;
					for(k=1;k<index;k++) {
						document.getElementById('lienAutoComplete'+k).onmouseover=select;
						document.getElementById('lienAutoComplete'+k).onmouseout=unselect;
					}
				} 
			}else {
				idSelect=0;
				countCompletion=0;
				div.style.display='none';
			}
		}
		if(e.keyCode==KEY_ESCAPE && ancienneSaisie!='') {
			if(idSelect==0)
				div.style.display='none';
			if(idSelect==0)
				id='lienAutoComplete0';
			else
				id='lienAutoComplete'+idSelect;
			selectionne = document.getElementById(id);
			if(selectionne!=null)
				selectionne.className='';
			idSelect=0;
			input.value=ancienneSaisie;
		}
	}
}

function select() {
	var ancien = document.getElementById('lienAutoComplete'+idSelect);
	if(ancien!=null) ancien.className='';
	this.className='selected';
	idSelect=this.id.split('lienAutoComplete')[0];
}
function unselect() {
	this.className='';
}

//fonction faisant l'auto complete 
function doAutoComplete (s) {
	input.value=s;
	div.style.display='none';
}
