var elSelect=new Class({options:{container:false,baseClass:"elSelect"},source:false,selected:false,_select:false,current:false,selectedOption:false,dropDown:false,optionsContainer:false,hiddenInput:false,initialize:function(a){this.setOptions(a);if(!this.options.container){return}this.selected=false;this.source=$(this.options.container).getElement("select");this.buildFrameWork();$(this.source).getElements("option").each(this.addOption,this);$(this.options.container).setHTML("");this._select.injectInside($(this.options.container));this.bindEvents()},buildFrameWork:function(){this._select=new Element("div").addClass(this.options.baseClass);this.current=new Element("div").addClass("selected").injectInside($(this._select));this.selectedOption=new Element("div").addClass("selectedOption").injectInside($(this.current));this.dropDown=new Element("div").addClass("dropDown").injectInside($(this.current));new Element("div").addClass("clear").injectInside($(this._select));this.optionsContainer=new Element("div").addClass("optionsContainer").injectInside($(this._select));var a=new Element("div").addClass("optionsContainerTop").injectInside($(this.optionsContainer));var c=new Element("div").injectInside($(a));var b=new Element("div").injectInside($(c));var a=new Element("div").addClass("optionsContainerBottom").injectInside($(this.optionsContainer));var c=new Element("div").injectInside($(a));var b=new Element("div").injectInside($(c));this.hiddenInput=new Element("input").setProperties({type:"hidden",name:this.source.getProperty("name"),id:this.source.getProperty("name")}).injectAfter($(this.options.container));this.hiddenInput.setAttribute("name",this.source.getProperty("name"))},bindEvents:function(){document.addEvent("click",function(){if(this.optionsContainer.getStyle("display")=="block"){this.onDropDown()}}.bind(this));$(this.options.container).addEvent("click",function(a){new Event(a).stop()});this.current.addEvent("click",this.onDropDown.bindWithEvent(this))},addOption:function(a){var b=new Element("div").addClass("option").setProperty("value",a.value);if(a.disabled){b.addClass("disabled")}else{b.addEvents({click:this.onOptionClick.bindWithEvent(this),mouseout:this.onOptionMouseout.bindWithEvent(this),mouseover:this.onOptionMouseover.bindWithEvent(this)})}if($defined(a.getProperty("class"))&&$chk(a.getProperty("class"))){b.addClass(a.getProperty("class"))}if(a.selected){if(this.selected){this.selected.removeClass("selected")}this.selected=b;b.addClass("selected");this.selectedOption.setText(a.text);this.hiddenInput.setProperty("value",a.value)}b.setText(a.text);b.injectBefore($(this.optionsContainer).getLast())},onDropDown:function(b){if(this.optionsContainer.getStyle("display")=="block"){this.optionsContainer.setStyle("display","none")}else{this.optionsContainer.setStyle("display","block");this.selected.addClass("selected");var a=this.optionsContainer.getStyle("width").toInt()>this._select.getStyle("width").toInt()?this.optionsContainer.getStyle("width"):this._select.getStyle("width");this.optionsContainer.setStyle("width",a);this.optionsContainer.getFirst().setStyle("width",a);this.optionsContainer.getLast().setStyle("width",a)}},onOptionClick:function(b){var a=new Event(b);if(this.selected!=a.target){this.selected.removeClass("selected");a.target.addClass("selected");this.selected=a.target;this.selectedOption.setText(this.selected.getText());this.hiddenInput.setProperty("value",this.selected.getProperty("value"))}this.onDropDown()},onOptionMouseover:function(b){var a=new Event(b);this.selected.removeClass("selected");a.target.addClass("selected")},onOptionMouseout:function(b){var a=new Event(b);a.target.removeClass("selected")}});elSelect.implement(new Events);elSelect.implement(new Options);
