Autocompleter.SelectBox=Class.create();Autocompleter.SelectBox.prototype=Object.extend(new Autocompleter.Base(),{initialize:function(select,options){this.element="<input type=\"text\" id=\""+$(select).id+"_combo\" />"
new Insertion.Before(select,this.element)
var inputClasses=Element.classNames(select);this.update="<div id=\""+$(select).id+"_options\" class=\""+inputClasses+"\"></div>"
new Insertion.Before(select,this.update)
this.baseInitialize($(select).id+"_combo",$(select).id+"_options",options);this.select=select;this.selectOptions=[];$(this.element.id).setAttribute('readonly','readonly');this.element.readOnly=true;if(this.options.debug)var debugText='Debug input '+this.element.id+' and div '+this.update.id+' created, Autocompleter.Base() initialized\r\n';if(!this.options.debug)Element.hide(select);Element.addClassName(this.element.id,this.options.css);var optionList=$(this.select).getElementsByTagName('option');var nodes=$A(optionList);for(i=0;i<nodes.length;i++){this.selectOptions.push("<li id=\""+nodes[i].value+"\">"+nodes[i].innerHTML+'</li>');if(nodes[i].getAttribute("selected"))this.element.value='';if(nodes[i].getAttribute("selected"))this.element.value=nodes[i].innerHTML;if(this.options.debug)debugText+='option '+nodes[i].innerHTML+' added to '+this.update.id+"\r\n";}
Event.observe(this.element,"click",this.activate.bindAsEventListener(this));if($(select).selectedIndex>=0)this.element.value='';if($(select).selectedIndex>=0)this.element.value=$(select).options[$(select).selectedIndex].innerHTML;var self=this;this.options.afterUpdateElement=function(text,li){var optionList=$(select).getElementsByTagName('option');var nodes=$A(optionList);var opt=nodes.find(function(node){return(node.value==li.id);});$(select).selectedIndex=opt.index;if(self.options.redirect)document.location.href=opt.value;if(self.options.submit!='')$(self.options.submit).submit();}
if(this.options.debug)alert(debugText);},getUpdatedChoices:function(){this.updateChoices(this.setValues());},setValues:function(){return("<ul>"+this.selectOptions.join('')+"</ul>");},setOptions:function(options){this.options=Object.extend({submit:false,redirect:false,debug:false,css:'combo '},options||{});}})