/*
*	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;
		this.select.selectedIndex=-1;

		if(search==""){
			this.restoreListe();
			return;
		}

		else{
			this.viderListe();
			for(i=0;i<this.allOptions.length;i++){
				if(!this.caseSensitive){
					if(this.allOptions[i].text.toUpperCase().indexOf(search.toUpperCase())==0)
						this.select.options[this.select.options.length]=this.allOptions[i];
				}
				else{
					if(this.allOptions[i].text.indexOf(search)==0)
						this.select.options[this.select.options.length]=this.allOptions[i];
				}
			}
			if(this.select.options.length>0){
				this.select.style.display='block';
			}
			else{
				this.select.style.display='none';
			}
		}	
	}
	
	
	SearchList.prototype.MAJinput=function(){
		if(this.select.selectedIndex>-1){
			this.text.value=this.select.options[this.select.selectedIndex].text;
		}
	}
