(function(a){a.widget("ui.selectmenu",{getter:"value",version:"1.8",eventPrefix:"selectmenu",options:{transferClasses:true,style:"popup",width:null,menuWidth:null,handleWidth:26,maxHeight:null,icons:null,format:null,bgImage:function(){}},_create:function(){var r=this,f=this.options;var h=this.element.attr("id")||"ui-selectmenu-"+Math.random().toString(16).slice(2,10);this.ids=[h+"-button",h+"-menu"];this._safemouseup=true;this.newelement=a('<a class="'+this.widgetBaseClass+' ui-widget ui-state-default ui-corner-all" id="'+this.ids[0]+'" role="button" href="#" aria-haspopup="true" aria-owns="'+this.ids[1]+'"></a>').insertAfter(this.element);var l=this.element.attr("tabindex");if(l){this.newelement.attr("tabindex",l)}this.newelement.data("selectelement",this.element);this.selectmenuIcon=a('<span class="'+this.widgetBaseClass+'-icon ui-icon"></span>').prependTo(this.newelement).addClass((f.style=="popup")?"ui-icon-triangle-2-n-s":"ui-icon-triangle-1-s");a("label[for="+this.element.attr("id")+"]").attr("for",this.ids[0]).bind("click",function(){r.newelement[0].focus();return false});this.newelement.bind("mousedown",function(i){r._toggle(i);if(f.style=="popup"){r._safemouseup=false;setTimeout(function(){r._safemouseup=true},300)}return false}).bind("click",function(){return false}).keydown(function(j){var i=true;switch(j.keyCode){case a.ui.keyCode.ENTER:i=true;break;case a.ui.keyCode.SPACE:i=false;r._toggle(j);break;case a.ui.keyCode.UP:case a.ui.keyCode.LEFT:i=false;r._moveSelection(-1);break;case a.ui.keyCode.DOWN:case a.ui.keyCode.RIGHT:i=false;r._moveSelection(1);break;case a.ui.keyCode.TAB:i=true;break;default:i=true;r._typeAhead(j.keyCode,"mouseup");break}return i}).bind("mouseover focus",function(){if(!f.disabled){a(this).addClass(r.widgetBaseClass+"-focus ui-state-hover")}}).bind("mouseout blur",function(){if(!f.disabled){a(this).removeClass(r.widgetBaseClass+"-focus ui-state-hover")}});a(document).mousedown(function(i){r.close(i)});this.element.click(function(){this._refreshValue()}).focus(function(){if(this.newelement){this.newelement[0].focus()}});var d=(f.style=="dropdown")?" ui-corner-bottom":" ui-corner-all";this.list=a('<ul class="'+r.widgetBaseClass+"-menu ui-widget ui-widget-content"+d+'" aria-hidden="true" role="listbox" aria-labelledby="'+this.ids[0]+'" id="'+this.ids[1]+'"></ul>').appendTo("body");var b=[];this.element.find("option").each(function(){b.push({value:a(this).attr("value"),text:r._formatText(jQuery(this).text()),selected:a(this).attr("selected"),classes:a(this).attr("class"),parentOptGroup:a(this).parent("optgroup").attr("label"),bgImage:f.bgImage.call(a(this))})});var p=(r.options.style=="popup")?" ui-state-active":"";for(var m=0;m<b.length;m++){var e=a('<li role="presentation"><a href="#" tabindex="-1" role="option" aria-selected="false">'+b[m].text+"</a></li>").data("index",m).addClass(b[m].classes).data("optionClasses",b[m].classes||"").mouseup(function(i){if(r._safemouseup){var j=a(this).data("index")!=r._selectedIndex();r.value(a(this).data("index"));r.select(i);if(j){r.change(i)}r.close(i,true)}return false}).click(function(){return false}).bind("mouseover focus",function(){r._selectedOptionLi().addClass(p);r._focusedOptionLi().removeClass(r.widgetBaseClass+"-item-focus ui-state-hover");a(this).removeClass("ui-state-active").addClass(r.widgetBaseClass+"-item-focus ui-state-hover")}).bind("mouseout blur",function(){if(a(this).is(r._selectedOptionLi())){a(this).addClass(p)}a(this).removeClass(r.widgetBaseClass+"-item-focus ui-state-hover")});if(b[m].parentOptGroup){var n=r.widgetBaseClass+"-group-"+b[m].parentOptGroup.replace(/[^a-zA-Z0-9]/g,"");if(this.list.find("li."+n).size()){this.list.find("li."+n+":last ul").append(e)}else{a('<li role="presentation" class="'+r.widgetBaseClass+"-group "+n+'"><span class="'+r.widgetBaseClass+'-group-label">'+b[m].parentOptGroup+"</span><ul></ul></li>").appendTo(this.list).find("ul").append(e)}}else{e.appendTo(this.list)}this.list.bind("mousedown mouseup",function(){return false});if(f.icons){for(var k in f.icons){if(e.is(f.icons[k].find)){e.data("optionClasses",b[m].classes+" "+r.widgetBaseClass+"-hasIcon").addClass(r.widgetBaseClass+"-hasIcon");var q=f.icons[k].icon||"";e.find("a:eq(0)").prepend('<span class="'+r.widgetBaseClass+"-item-icon ui-icon "+q+'"></span>');if(b[m].bgImage){e.find("span").css("background-image",b[m].bgImage)}}}}}this.list.find("li:last").addClass("ui-corner-bottom");if(f.style=="popup"){this.list.find("li:first").addClass("ui-corner-top")}if(f.transferClasses){var s=this.element.attr("class")||"";this.newelement.add(this.list).addClass(s)}var g=this.element.width();this.newelement.width((f.width)?f.width:g);if(f.style=="dropdown"){this.list.width((f.menuWidth)?f.menuWidth:((f.width)?f.width:g))}else{this.list.width((f.menuWidth)?f.menuWidth:((f.width)?f.width-f.handleWidth:g-f.handleWidth))}if(f.maxHeight&&f.maxHeight<this.list.height()){this.list.height(f.maxHeight)}this._optionLis=this.list.find("li:not(."+r.widgetBaseClass+"-group)");this.list.keydown(function(j){var i=true;switch(j.keyCode){case a.ui.keyCode.UP:case a.ui.keyCode.LEFT:i=false;r._moveFocus(-1);break;case a.ui.keyCode.DOWN:case a.ui.keyCode.RIGHT:i=false;r._moveFocus(1);break;case a.ui.keyCode.HOME:i=false;r._moveFocus(":first");break;case a.ui.keyCode.PAGE_UP:i=false;r._scrollPage("up");break;case a.ui.keyCode.PAGE_DOWN:i=false;r._scrollPage("down");break;case a.ui.keyCode.END:i=false;r._moveFocus(":last");break;case a.ui.keyCode.ENTER:case a.ui.keyCode.SPACE:i=false;r.close(j,true);a(j.target).parents("li:eq(0)").trigger("mouseup");break;case a.ui.keyCode.TAB:i=true;r.close(j,true);break;case a.ui.keyCode.ESCAPE:i=false;r.close(j,true);break}return i});if(f.style=="dropdown"){this.newelement.addClass(r.widgetBaseClass+"-dropdown");this.list.addClass(r.widgetBaseClass+"-menu-dropdown")}else{this.newelement.addClass(r.widgetBaseClass+"-popup");this.list.addClass(r.widgetBaseClass+"-menu-popup")}this.newelement.prepend('<span class="'+r.widgetBaseClass+'-status">'+b[this._selectedIndex()].text+"</span>");this.element.hide();if(this.element.attr("disabled")==true){this.disable()}this.value(this._selectedIndex());a(window).resize(function(){r._refreshPosition()})},destroy:function(){this.element.removeData(this.widgetName).removeClass(this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").removeAttr("aria-disabled").unbind("click");a("label[for="+this.newelement.attr("id")+"]").attr("for",this.element.attr("id")).unbind("click");this.newelement.remove();this.list.remove();this.element.show();a.Widget.prototype.destroy.apply(this,arguments)},_typeAhead:function(f,e){var b=this;if(!b._prevChar){b._prevChar=["",0]}var h=String.fromCharCode(f);c=h.toLowerCase();var d=false;function g(i,j){d=true;a(i).trigger(e);b._prevChar[1]=j}this.list.find("li a").each(function(j){if(!d){var k=a(this).text();if(k.indexOf(h)==0||k.indexOf(c)==0){if(b._prevChar[0]==h){if(b._prevChar[1]<j){g(this,j)}}else{g(this,j)}}}});this._prevChar[0]=h},_uiHash:function(){var b=this.value();return{index:b,option:a("option",this.element).get(b),value:this.element[0].value}},open:function(e){var d=this;var b=this.newelement.attr("aria-disabled");if(b!="true"){this._refreshPosition();this._closeOthers(e);this.newelement.addClass("ui-state-active");this.list.appendTo("body").addClass(d.widgetBaseClass+"-open").attr("aria-hidden",false).find("li:not(."+d.widgetBaseClass+"-group):eq("+this._selectedIndex()+") a")[0].focus();if(this.options.style=="dropdown"){this.newelement.removeClass("ui-corner-all").addClass("ui-corner-top")}this._refreshPosition();this._trigger("open",e,this._uiHash())}},close:function(d,b){if(this.newelement.is(".ui-state-active")){this.newelement.removeClass("ui-state-active");this.list.attr("aria-hidden",true).removeClass(this.widgetBaseClass+"-open");if(this.options.style=="dropdown"){this.newelement.removeClass("ui-corner-top").addClass("ui-corner-all")}if(b){this.newelement[0].focus()}this._trigger("close",d,this._uiHash())}},change:function(b){this.element.trigger("change");this._trigger("change",b,this._uiHash())},select:function(b){this._trigger("select",b,this._uiHash())},_closeOthers:function(b){a("."+this.widgetBaseClass+".ui-state-active").not(this.newelement).each(function(){a(this).data("selectelement").selectmenu("close",b)});a("."+this.widgetBaseClass+".ui-state-hover").trigger("mouseout")},_toggle:function(d,b){if(this.list.is("."+this.widgetBaseClass+"-open")){this.close(d,b)}else{this.open(d)}},_formatText:function(b){return this.options.format?this.options.format(b):b},_selectedIndex:function(){return this.element[0].selectedIndex},_selectedOptionLi:function(){return this._optionLis.eq(this._selectedIndex())},_focusedOptionLi:function(){return this.list.find("."+this.widgetBaseClass+"-item-focus")},_moveSelection:function(e){var d=parseInt(this._selectedOptionLi().data("index"),10);var b=d+e;return this._optionLis.eq(b).trigger("mouseup")},_moveFocus:function(f){if(!isNaN(f)){var e=parseInt(this._focusedOptionLi().data("index")||0,10);var d=e+f}else{var d=parseInt(this._optionLis.filter(f).data("index"),10)}if(d<0){d=0}if(d>this._optionLis.size()-1){d=this._optionLis.size()-1}var b=this.widgetBaseClass+"-item-"+Math.round(Math.random()*1000);this._focusedOptionLi().find("a:eq(0)").attr("id","");this._optionLis.eq(d).find("a:eq(0)").attr("id",b).focus();this.list.attr("aria-activedescendant",b)},_scrollPage:function(d){var b=Math.floor(this.list.outerHeight()/this.list.find("li:first").outerHeight());b=(d=="up")?-b:b;this._moveFocus(b)},_setOption:function(b,d){this.options[b]=d;if(b=="disabled"){this.close();this.element.add(this.newelement).add(this.list)[d?"addClass":"removeClass"](this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").attr("aria-disabled",d)}},value:function(b){if(arguments.length){this.element[0].selectedIndex=b;this._refreshValue();this._refreshPosition()}return this.element[0].selectedIndex},_refreshValue:function(){var e=(this.options.style=="popup")?" ui-state-active":"";var d=this.widgetBaseClass+"-item-"+Math.round(Math.random()*1000);this.list.find("."+this.widgetBaseClass+"-item-selected").removeClass(this.widgetBaseClass+"-item-selected"+e).find("a").attr("aria-selected","false").attr("id","");this._selectedOptionLi().addClass(this.widgetBaseClass+"-item-selected"+e).find("a").attr("aria-selected","true").attr("id",d);var b=this.newelement.data("optionClasses")?this.newelement.data("optionClasses"):"";var f=this._selectedOptionLi().data("optionClasses")?this._selectedOptionLi().data("optionClasses"):"";this.newelement.removeClass(b).data("optionClasses",f).addClass(f).find("."+this.widgetBaseClass+"-status").html(this._selectedOptionLi().find("a:eq(0)").html());this.list.attr("aria-activedescendant",d)},_refreshPosition:function(){var d=this,i=this.options;var g=d._pageScroll();var f=this.newelement.offset().top;var b=a(window).height();var e=a(this.list[0]).outerHeight();if((f+e)>(b+g)){f-=e}else{if((f-g)<(e)){f+=this.newelement.height()+4}else{if(this.newelement.is("."+this.widgetBaseClass+"-popup")){var h=this.list[0].scrollTop;this.list.find("li:lt("+this._selectedIndex()+")").each(function(){h-=a(this).outerHeight()});f+=h}else{f+=this.newelement.height()}}}this.list.css({top:f,left:this.newelement.offset().left})},_pageScroll:function(){var b;if(self.pageYOffset){b=self.pageYOffset}else{if(document.documentElement&&document.documentElement.scrollTop){b=document.documentElement.scrollTop}else{if(document.body){b=document.body.scrollTop}}}return b}})})(jQuery);

