var mooSelecta=new Class({version:"1.3.0a",updated:"28/03/2011 11:20:01",Implements:[Options,Events],options:{parentNode:document,selector:"select.selecta",positionRelativeSelector:null,triggerClass:"selectaTrigger",triggerPadding:30+5,triggerBeforeImage:"",triggerBeforeImageWidth:0,triggerBeforeImageHeight:0,wrapperClass:"selectaWrapper",wrapperWidthAdjustment:0,wrapperShadow:"shadowy",wrapperHeight:0,optionClass:"selectaOption",optionClassSelected:"selectaOptionSelected",optionDisabledClass:"selectaDisabled",optionClassOver:"selectaOptionOver",allowTextSelect:false,allowedKeyboardCodes:[48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90],useClickListener:true},selects:{},optionList:{},focused:false,initialize:function(a){this.setOptions(a);var b=this.options.parentNode.getElements(this.options.selector);if(!b.length){return false}b.each(this.replaceSelect.bind(this));this.bindListeners()},replaceSelect:function(d){d=document.id(d);if(!d){return}var c=d.getSize().x;var b=d.getElements("option").filter(function(g){return g.getProperty("selected")});if(d.retrieve("triggerElement")){d.retrieve("triggerElement").destroy()}if(d.retrieve("wrapper")){d.retrieve("wrapper").destroy()}d.store("triggerElement",new Element("div",{"class":this.options.triggerClass,styles:{width:c-this.options.triggerPadding}}).inject(d,"after").addClass("cur"));c=d.retrieve("triggerElement").getSize().x-2-this.options.triggerBeforeImageWidth+this.options.wrapperWidthAdjustment;if(this.options.triggerBeforeImage.length){new Element("div",{styles:{"float":"left",position:(Browser.ie6)?"absolute":"relative",background:"url("+this.options.triggerBeforeImage+") no-repeat",width:this.options.triggerBeforeImageWidth,height:this.options.triggerBeforeImageHeight}}).inject(d.retrieve("triggerElement"),"before")}var f=d.getPosition((!!this.options.positionRelativeSelector?d.getParent(this.options.positionRelativeSelector):null));d.store("wrapper",new Element("div",{"class":this.options.wrapperClass,styles:{width:c,zIndex:10000,left:f.x+1-this.options.triggerBeforeImageWidth,top:f.y+d.retrieve("triggerElement").getSize().y}}).inject(d.retrieve("triggerElement"),"after").addClass(this.options.wrapperShadow));d.set({styles:{position:"absolute",top:-1000,left:-1000},events:{focus:function(){if(this.focused){this._hideOptions()}this.focused=d;this._toggleOptions(d)}.bind(this),blur:function(g){if(this.focused==d){this._toggleOptions(d)}}.bind(this)}});var e=document.getElement("label[for="+d.get("id")+"]");if(d.get("id")&&e){e.addEvent("click",function(g){new Event(g).stop();d.fireEvent("focus")})}d.getElements("option").each(function(h){var g=false;if(h.get("selected")){d.retrieve("triggerElement").set("html",h.get("text"));g=true}this._addOption(h,d,g)},this);if(this.options.wrapperHeight){var a=d.retrieve("wrapper").getSize().y;if(a>this.options.wrapperHeight){d.retrieve("wrapper").setStyles({height:this.options.wrapperHeight})}}d.retrieve("wrapper").setStyle("display","none");d.retrieve("triggerElement").addEvents({click:function(g){new Event(g).stop();d.fireEvent((this.focused==d)?"blur":"focus")}.bind(this)});if(d.uid&&d){this.selects[d.uid]=d}},bindListeners:function(){if(this.options.useClickListener){document.addEvent("click",this._bindClickListener.bind(this))}document.addEvents({keydown:function(h){h=new Event(h);var f,c,b;if(!this.focused){return}switch(h.code){case 40:new Event(h).stop();f=this.focused.retrieve("wrapper").getElements("div."+this.options.optionClass);b=false;f.each(function(j,e){if(f.length-1==e||b){return}if(j.hasClass(this.options.optionClassSelected)){f.removeClass(this.options.optionClassOver);f[e+1].addClass(this.options.optionClassSelected).addClass(this.options.optionClassOver);j.removeClass(this.options.optionClassSelected);b=true}},this);break;case 38:new Event(h).stop();f=this.focused.retrieve("wrapper").getElements("div."+this.options.optionClass);b=false;f.each(function(j,e){if(b){return}if(j.hasClass(this.options.optionClassSelected)){if(e>0){f.removeClass(this.options.optionClassOver);f[e-1].addClass(this.options.optionClassSelected).addClass(this.options.optionClassOver);j.removeClass(this.options.optionClassSelected)}b=true}},this);break;case 13:new Event(h).stop();this.focused.retrieve("wrapper").getElements("div."+this.options.optionClassSelected).fireEvent("click");break;case 9:this._hideOptions(this.focused);break;case 34:case 35:new Event(h).stop();c=this.focused;this.focused.retrieve("wrapper").getElements("div."+this.options.optionClass).getLast().fireEvent("click");c.fireEvent("focus");break;case 33:case 36:new Event(h).stop();c=this.focused;this.focused.retrieve("wrapper").getElement("div."+this.options.optionClass).fireEvent("click");c.fireEvent("focus");break;default:c=this.focused;f=this.focused.retrieve("wrapper").getElements("div."+this.options.optionClass);if(this.options.allowedKeyboardCodes.contains(h.code)){var g=[];var d=false;var a=this.optionList["k"+this.focused.uid].filter(function(j,i){if(f[i].hasClass(this.options.optionClassSelected)){d=i}var e=j.indexOf(h.key)===0;if(e){g.push(i)}return e},this);if(a.length){if(!g.contains(d)){d=g[0]}else{if(f[d+1]&&g.contains(d+1)){d++}else{d=g[0]}}f[d].fireEvent("click");c.fireEvent("focus");b=true}}else{h.stop()}break}}.bind(this)})},_bindClickListener:function(a){a=new Event(a);if($$(a.target).hasClass(this.options.triggerClass).contains(false)){this._hideOptions()}},_addOption:function(d,c,b){var g=d.get("text").trim();if(!g.length){g="&nbsp;"}var f=this.optionList["k"+c.uid]||[];f.push(g.toLowerCase());var a={};a["k"+c.uid]=f;Object.append(this.optionList,a);var e=new Element("div",{"class":this.options.optionClass,html:g,events:{mouseenter:function(){e.addClass(this.options.optionClassOver)}.bind(this),mouseleave:function(){e.removeClass(this.options.optionClassOver)}.bind(this),click:function(h){if(h&&h.type&&h.stop){h.stop()}if(e.hasClass(this.options.optionDisabledClass)){return false}c.retrieve("wrapper").getChildren().removeClass(this.options.optionClassSelected);e.addClass(this.options.optionClassSelected);c.retrieve("triggerElement").set("html",e.get("text"));c.set("value",e.retrieve("value")).fireEvent("change",h);this._toggleOptions(c)}.bind(this)}}).store("value",d.get("value")).inject(c.retrieve("wrapper")).addClass("cur");if(d.get("disabled")){e.addClass(this.options.optionDisabledClass)}if(b){e.addClass(this.options.optionClassSelected)}},_toggleOptions:function(b){var c=b.retrieve("wrapper").getStyle("display");b.retrieve("wrapper").setStyle("display",(c=="none")?"block":"none").getChildren().removeClass(this.options.optionClassOver);this.focused=(c!="none")?false:b;var a=b.retrieve("wrapper").getPosition(this.options.overflown);var d=b.retrieve("wrapper").getElement("div."+this.options.optionClassSelected).getPosition(this.options.overflown);b.retrieve("wrapper").scrollTo(d.x-a.x,d.y-a.y);this._clearSelection()},_hideOptions:function(){Object.values(this.selects).each(function(a){if(a.retrieve("wrapper").getStyle("display")!="none"){a.fireEvent("blur")}a.retrieve("wrapper").setStyle("display","none");a.focused=false})},_clearSelection:function(){if(this.options.allowTextSelect||Browser.ie6){return}if(!!document.selection&&!!document.selection.empty){try{document.selection.empty()}catch(a){}}else{if(!!window.getSelection){window.getSelection().removeAllRanges()}}}});
