function AutoSuggest(c,d){
	var e=this;
	var j=null;
	this.elem=c; // le input mot clé
	this.suggestions=d;
	this.inputText=null;
	this.highlighted=-1;
	this.div=document.getElementById("autocomplete");
	this.eligible=new Array();
	var h=13; // enter
	var b=27; // espace
	var g=38;	// fleche haut
	var f=40; //fleche down
	c.setAttribute("autocomplete","off");
	if(!c.id){
		var a="autosuggest"+idCounter;
		idCounter++;
		c.id=a;
	}
	c.onkeydown=function(l){		
		var k=e.getKeyCode(l);
		switch(k){
			case h:
				e.useSuggestion();
				break;
			case b:
				e.hideDiv();
				break;
			case g:
				if(e.highlighted>0){
					e.highlighted--;
				}
				e.changeHighlight(k);
				break;
			case f:
				if(e.highlighted<(e.eligible.length-2)){
					e.highlighted++;
				}
				e.changeHighlight(k);
				break;
		}
	};
	
	c.onkeyup=function(l){
		var k=e.getKeyCode(l);
		switch(k){
			case h:case b:case g:case f:
				return;
			default:
				//console.log("This.value: " + this.value);
				//console.log("e.inputText: "+ e.inputText);
				if(this.value!=e.inputText&&this.value.length>1){
					e.inputText=this.value;
					clearTimeout(timersugg);
					//alert("On demande " + e.inputText);
					//timersugg=setTimeout("autosu.getEligible()",500);
					//console.log("autosu: " + autosu );
					autosu.getEligible();
					//console.log("autosu: " + autosu );
				}else{}
		}
	};
	
	this.makeandshowDiv=function(){
		e.createDiv();
		e.showDiv();
	};
	
	this.useSuggestion=function(){
		if(this.highlighted>-1){
			var k=e.eligible[this.highlighted];
			if(k.t!=20){
				this.elem.value=HtmlDecode(k.l);
			}
			this.hideDiv();
			if(k.u){
				document.location.href=k.u;
				
			}
			setTimeout("document.getElementById('"+this.elem.id+"').focus()",0);
		}
	};
	
	this.showDiv=function(){
		this.div.style.display="block";		
	};
	
	this.hideDiv=function(){
		this.div.style.display="none";
		this.highlighted=-1;
	};
	
	this.changeHighlight=function(){
		var l=this.div.getElementsByTagName("LI");
		for(i in l){
			var k=l[i];
			if(this.highlighted==i){
				if(k){
					k.className="selected";
				}
			}else{
				if(k){k.className=""}
			}
		}
	};
	
	this.positionDiv=function(){
		var l=this.elem;
		var k=0;
		var m=l.offsetHeight;
		while(l.offsetParent&&l.tagName.toUpperCase()!="BODY"){
			k+=l.offsetLeft;
			m+=l.offsetTop;
			l=l.offsetParent;
		}
		k+=l.offsetLeft;
		m+=l.offsetTop;
		this.div.style.left=k+"px";
		this.div.style.top=m+"px";
	};
	this.createDiv=function(){
		var o=document.createElement("ul");
		var m=false;
		var idx = true;
		//console.log("Longueur de résultats: " + e.eligible.length);
		for(i=0;i<e.eligible.length;i++){
			var q=e.eligible[i];
			//console.log("Résultat " + i +": " + q.l);
			
			if(q.l!=null){	
				//console.log("Résultat " + i +": " + q.l);
				var p="<b>"+stripslashes(q.l)+"</b>"; // Titre
				var n=q.ph;				// Id
				if(q.ph){					
					p="<img src='/img/affiches/mini/a_"+n+".png' / height=48 width:=45 align=left hspace=5 />"+p;
				}
				if(q.salle){	//salle
					p+="<br/>"+q.salle+", "+q.ville+", "+q.pays;
				}
				if(p!=null){
					var k=document.createElement("li");
					if(q.nd&&m==false){ // non Publié
						k.innerHTML='<b style="margin-top:5px;border-bottom:1px dotted #eee;display:block;color:#090;">Evènements anciennement proposés</b>';
						m=true;
						idx=false;
					}else{
						if (idx==true){ //
							k.innerHTML='<b style="margin-top:5px;border-bottom:1px dotted #eee;display:block;color:#000000;">Actuellement à l\'affiche</b>';							
							idx=false;
						}
					}
					var l=document.createElement("a");
					if(q.u){ // Lien fiche
						l.href=q.u;
					}
					l.innerHTML=p;
					k.appendChild(l);
					if(q.t==10){
						l.className="aspect";
					}else{
						if(q.t==20){
							l.className="anext";
						}
					}
					if(e.highlighted==i){
						k.className="selected";
					}else{
						k.className="";
					}
					o.appendChild(k);
				}
			}
		}
		
		
		if (this.div.hasChildNodes()){
			this.div.replaceChild(o,this.div.childNodes[0]);
		}
		
		
		o.onmouseover=function(t){
			var u=e.getEventSource(t);
			while(u.parentNode&&u.tagName.toUpperCase()!="LI"){
				u=u.parentNode;
			}
			var s=e.div.getElementsByTagName("LI");
			for(i in s){
				var r=s[i];
				if(r==u){
					e.highlighted=i;
					break;
				}
			}
			e.changeHighlight();
		};
		o.onclick=function(r){
			e.useSuggestion();
			e.hideDiv();
			e.cancelEvent(r);
			return false;
		};
		
		this.div.className="suggestion_list";
		this.div.style.position="absolute";
	};
	
	this.setEligible=function(k){e.eligible=k;};
	
	this.getEligible=function(){
		sndReq("/inc/functions/mb_ajax_autosuggest.php?s="+this.inputText); //?s="+this.inputText+"&rnd="+Math.random());
		
		//autosu.setEligible(new Array( {u:'/31648/evt.htm',l:'Gad Elmaleh ',t:1,cp:'75009',ville:'Paris',salle:'Théâtre Edouard VII ', id:'13765',ph:'13765'}, {u:'/RETES/evt.htm',l:'PETER & THE TEST TUBE BABIES',t:1,cp:'35000',ville:'RENNES',salle:'MONDO BIZARRO', id:'RETES'}, {u:'/liste.htm?type=3&ar=test',l:'» Plus de résultats',t:20,d:null}, {l:null,t:null,d:null}));
		//console.log ("Autosu: " +autosu.toString());
		autosu.makeandshowDiv();		
		//console.log ("Affichage autosuggest");
		autosu.highlighted=0;
		autosu.changeHighlight();
	};
	
	this.getKeyCode=function(k){
		if(k){
			return k.keyCode;
		}
		if(window.event){
			return window.event.keyCode;
		}
	};
	
	this.getEventSource=function(k){
		if(k){
			return k.target;
		}
		if(window.event){
			return window.event.srcElement;
		}
	};
	
	this.cancelEvent=function(k){
		if(k){
			k.preventDefault();
			k.stopPropagation();
		}
		if(window.event){
			window.event.returnValue=false;
		}
	}
}

function stripslashes(str) {
	str=str.replace(/\\'/g,'\'');
	str=str.replace(/\\"/g,'"');
	str=str.replace(/\\0/g,'\0');
	str=str.replace(/\\\\/g,'\\');
	return str;
}

function HtmlDecode(s){
	var out="";
	if(s==null){return;}
	var l=s.length;
	for(var i=0;i<l;i++){
		var ch=s.charAt(i);
		if(ch=="&"){
			var semicolonIndex=s.indexOf(";",i+1);
			if(semicolonIndex>0){
				var entity=s.substring(i+1,semicolonIndex);
				if(entity.length>1&&entity.charAt(0)=="#"){
					if(entity.charAt(1)=="x"||entity.charAt(1)=="X"){
						ch=String.fromCharCode(eval("0"+entity.substring(1)));
					}else{
						ch=String.fromCharCode(eval(entity.substring(1)));
					}
				}
				i=semicolonIndex;
			}
		}
		out+=ch;
	}
	A
	return out;
}

var idCounter=0;
var timersugg=null;
/*var inputR=document.getElementById("motcle");
if(inputR){
	var autosu=new AutoSuggest(document.getElementById("motcle"),null);
	/*document.forms.recherche.onsubmit=function(){return false};
}*/