     /*
    * * Classe SearchList
    * *
    * * Permet de rendre une liste dynamique : la saisie dans un champ de texte
    * * réduit le nombre d'élement dans la liste => "Liste de recherche"
    * *
    * * le 21/07
    * * Antoine Detante
    * */
    /*
    * * Constructeur de la classe
    * *
    * * @param htmlselect, une référence vers l'objet "select" représentant la liste
    * * @param htmltext, une référence vers l'objet "input" représentant le champ de texte
    * * @param caseSensitive, paramètre optionnel, si "caseSensitive" est à "true", alors
    * * la recherche dans la liste s'effectuera en respecant la casse
    * */
  function SearchList(htmlselect,htmltext,caseSensitive){
	this.select=htmlselect;
	this.text=htmltext;
	this.allOptions=new Array();
	for(i=0;i<this.select.options.length;i++){
		this.allOptions[i]=this.select.options[i];
	}
	this.caseSensitive=false;
	if(caseSensitive)
	this.caseSensitive=true;
  }
 
  /*
    * * Vide le contenu de la liste
    * */
  SearchList.prototype.viderListe=function(){
  var length=this.select.options.length;
  for(i=length-1;i>=0;i--){
	this.select.options[i]=null;
	}
  }
 
  /*
    * * Restore le contenu de la liste avec les valeurs initiales
    * */
  SearchList.prototype.restoreListe=function(){
	for(i=0;i<this.select.options.length;i++){
		this.select.options[i]=null;
	}
	for(i=0;i<this.allOptions.length;i++){
		this.select.options[i]=this.allOptions[i];
	}
  }
 
  /*
    * * Met à jour le contenu de la liste en fonction
    * * du texte saisie dans le champ
    * */
  SearchList.prototype.MAJListe=function(){
	var search=this.text.value;
	if(search==""){
		this.restoreListe();
		return;
	}
	else{
		//if (search.length >2){
			this.viderListe();
			for(i=0;i<this.allOptions.length;i++){
				if(!this.caseSensitive){
					if(this.allOptions[i].text.toUpperCase().indexOf(search.toUpperCase())!=-1)
					this.select.options[this.select.options.length]=this.allOptions[i];
				}
				else{
					if(this.allOptions[i].text.indexOf(search)!=-1)
						this.select.options[this.select.options.length]=this.allOptions[i];
				}
			}
		//}
	}
}
 

 SearchList.prototype.MAJinput=function(){
this.text.value=this.select[this.select.selectedIndex].text;
}
SearchList.prototype.Cacheselect=function(){
	this.select.style.visibility="hidden";
}
SearchList.prototype.Afficheselect=function(){
	this.select.style.visibility="visible";
}

SearchList.prototype.Recupecodeselect=function(erreur,validechamp){
		var ok=1;
		if(this.text.value){
		var search=this.text.value;
		ok=0;
		for(i=0;i<this.allOptions.length;i++){
			if(this.allOptions[i].text.toUpperCase() == search.toUpperCase()){
			validechamp.value=this.allOptions[i].value;
			ok=1;
			}
		}
		if(!ok) {alert(erreur);return false;} 
		return true;
		}
}
