 /*
 * jQuery UI selectmenu
 *
 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 *
 * http://docs.jquery.com/UI
 */
(function(d){d.widget("ui.selectmenu",{_init:function(){var a=this,b=this.options,i=Math.round(Math.random()*1E3);this.ids=[this.element.attr("id")+"_button_"+i,this.element.attr("id")+"_menu_"+i];this._safemouseup=true;this.newelement=d('<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);this.element.attr("tabindex")&&this.newelement.attr("tabindex",
tabindex);this.newelement.data("selectelement",this.element);this.selectmenuIcon=d('<span class="'+this.widgetBaseClass+'-icon ui-icon"></span>').prependTo(this.newelement).addClass(b.style=="popup"?"ui-icon-triangle-2-n-s":"ui-icon-triangle-1-s");d("label[for="+this.element.attr("id")+"]").attr("for",this.ids[0]).bind("click",function(){a.newelement.focus();return false});this.newelement.bind("mousedown",function(f){a._toggle(f);if(b.style=="popup"){a._safemouseup=false;setTimeout(function(){a._safemouseup=
true},300)}return false}).bind("click",function(){return false}).keydown(function(f){var e=true;switch(f.keyCode){case d.ui.keyCode.ENTER:e=true;break;case d.ui.keyCode.SPACE:e=false;a._toggle(f);break;case d.ui.keyCode.UP:case d.ui.keyCode.LEFT:e=false;a._moveSelection(-1);break;case d.ui.keyCode.DOWN:case d.ui.keyCode.RIGHT:e=false;a._moveSelection(1);break;case d.ui.keyCode.TAB:e=true;break;default:e=false;a._typeAhead(f.keyCode,"mouseup");break}return e}).bind("mouseover focus",function(){d(this).addClass(a.widgetBaseClass+
"-focus ui-state-hover")}).bind("mouseout blur",function(){d(this).removeClass(a.widgetBaseClass+"-focus ui-state-hover")});d(document).mousedown(function(f){a.close(f)});this.element.click(function(){this._refreshValue()}).focus(function(){this.newelement.focus()});this.list=d('<ul class="'+a.widgetBaseClass+"-menu ui-widget ui-widget-content"+(b.style=="dropdown"?" ui-corner-bottom":" ui-corner-all")+'" aria-hidden="true" role="listbox" aria-labelledby="'+this.ids[0]+'" id="'+this.ids[1]+'"></ul>').appendTo("body");
var h=[];this.element.find("option").each(function(){h.push({value:d(this).attr("value"),text:a._formatText(jQuery(this).text()),selected:d(this).attr("selected"),classes:d(this).attr("class"),parentOptGroup:d(this).parent("optgroup").attr("label")})});var k=a.options.style=="popup"?" ui-state-active":"";for(var g in h){i=d('<li role="presentation"><a href="#" tabindex="-1" role="option" aria-selected="false">'+h[g].text+"</a></li>").data("index",g).addClass(h[g].classes).data("optionClasses",h[g].classes||
"").mouseup(function(f){if(a._safemouseup){var e=d(this).data("index")!=a._selectedIndex();a.value(d(this).data("index"));a.select(f);e&&a.change(f);a.close(f,true)}return false}).click(function(){return false}).bind("mouseover focus",function(){a._selectedOptionLi().addClass(k);a._focusedOptionLi().removeClass(a.widgetBaseClass+"-item-focus ui-state-hover");d(this).removeClass("ui-state-active").addClass(a.widgetBaseClass+"-item-focus ui-state-hover")}).bind("mouseout blur",function(){d(this).is(a._selectedOptionLi())&&
d(this).addClass(k);d(this).removeClass(a.widgetBaseClass+"-item-focus ui-state-hover")});if(h[g].parentOptGroup){var j=a.widgetBaseClass+"-group-"+h[g].parentOptGroup;this.list.find("li."+j).size()?this.list.find("li."+j+":last ul").append(i):d('<li role="presentation" class="'+a.widgetBaseClass+"-group "+j+'"><span class="'+a.widgetBaseClass+'-group-label">'+h[g].parentOptGroup+"</span><ul></ul></li>").appendTo(this.list).find("ul").append(i)}else i.appendTo(this.list);this.list.bind("mousedown mouseup",
function(){return false});if(b.icons)for(var l in b.icons)if(i.is(b.icons[l].find)){i.data("optionClasses",h[g].classes+" "+a.widgetBaseClass+"-hasIcon").addClass(a.widgetBaseClass+"-hasIcon");j=b.icons[l].icon||"";i.find("a:eq(0)").prepend('<span class="'+a.widgetBaseClass+"-item-icon ui-icon "+j+'"></span>')}}this.list.find("li:last").addClass("ui-corner-bottom");b.style=="popup"&&this.list.find("li:first").addClass("ui-corner-top");if(b.transferClasses){g=this.element.attr("class")||"";this.newelement.add(this.list).addClass(g)}g=
this.element.width();this.newelement.width(b.width?b.width:g);b.style=="dropdown"?this.list.width(b.menuWidth?b.menuWidth:b.width?b.width:g):this.list.width(b.menuWidth?b.menuWidth:b.width?b.width-b.handleWidth:g-b.handleWidth);b.maxHeight&&b.maxHeight<this.list.height()&&this.list.height(b.maxHeight);this._optionLis=this.list.find("li:not(."+a.widgetBaseClass+"-group)");this.list.keydown(function(f){var e=true;switch(f.keyCode){case d.ui.keyCode.UP:case d.ui.keyCode.LEFT:e=false;a._moveFocus(-1);
break;case d.ui.keyCode.DOWN:case d.ui.keyCode.RIGHT:e=false;a._moveFocus(1);break;case d.ui.keyCode.HOME:e=false;a._moveFocus(":first");break;case d.ui.keyCode.PAGE_UP:e=false;a._scrollPage("up");break;case d.ui.keyCode.PAGE_DOWN:e=false;a._scrollPage("down");break;case d.ui.keyCode.END:e=false;a._moveFocus(":last");break;case d.ui.keyCode.ENTER:case d.ui.keyCode.SPACE:e=false;a.close(f,true);d(f.target).parents("li:eq(0)").trigger("mouseup");break;case d.ui.keyCode.TAB:e=true;a.close(f,true);break;
case d.ui.keyCode.ESCAPE:e=false;a.close(f,true);break;default:e=false;a._typeAhead(f.keyCode,"focus");break}return e});if(b.style=="dropdown"){this.newelement.addClass(a.widgetBaseClass+"-dropdown");this.list.addClass(a.widgetBaseClass+"-menu-dropdown")}else{this.newelement.addClass(a.widgetBaseClass+"-popup");this.list.addClass(a.widgetBaseClass+"-menu-popup")}this.newelement.prepend('<span class="'+a.widgetBaseClass+'-status">'+h[this._selectedIndex()].text+"</span>");this.element.hide();this.element.attr("disabled")==
true&&this.disable();this.value(this._selectedIndex())},destroy:function(){this.element.removeData(this.widgetName).removeClass(this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").removeAttr("aria-disabled");d("label[for="+this.newelement.attr("id")+"]").attr("for",this.element.attr("id")).unbind("click");this.newelement.remove();this.list.remove();this.element.show()},_typeAhead:function(a,b){function i(j,l){g=true;d(j).trigger(b);h._prevChar[1]=l}var h=this;if(!h._prevChar)h._prevChar=
["",0];var k=String.fromCharCode(a);c=k.toLowerCase();var g=false;this.list.find("li a").each(function(j){if(!g){var l=d(this).text();if(l.indexOf(k)==0||l.indexOf(c)==0)if(h._prevChar[0]==k)h._prevChar[1]<j&&i(this,j);else i(this,j)}});this._prevChar[0]=k},_uiHash:function(){return{value:this.value()}},open:function(a){var b=this;this._refreshPosition();this._closeOthers(a);this.newelement.addClass("ui-state-active");this.list.appendTo("body").addClass(b.widgetBaseClass+"-open").attr("aria-hidden",
false).find("li:not(."+b.widgetBaseClass+"-group):eq("+this._selectedIndex()+") a").focus();this.options.style=="dropdown"&&this.newelement.removeClass("ui-corner-all").addClass("ui-corner-top");this._refreshPosition();this._trigger("open",a,this._uiHash())},close:function(a,b){if(this.newelement.is(".ui-state-active")){this.newelement.removeClass("ui-state-active");this.list.attr("aria-hidden",true).removeClass(this.widgetBaseClass+"-open");this.options.style=="dropdown"&&this.newelement.removeClass("ui-corner-top").addClass("ui-corner-all");
b&&this.newelement.focus();this._trigger("close",a,this._uiHash())}},change:function(a){this.element.trigger("change");this._trigger("change",a,this._uiHash())},select:function(a){this._trigger("select",a,this._uiHash())},_closeOthers:function(a){d("."+this.widgetBaseClass+".ui-state-active").not(this.newelement).each(function(){d(this).data("selectelement").selectmenu("close",a)});d("."+this.widgetBaseClass+".ui-state-hover").trigger("mouseout")},_toggle:function(a,b){this.list.is("."+this.widgetBaseClass+
"-open")?this.close(a,b):this.open(a)},_formatText:function(a){return this.options.format?this.options.format(a):a},_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(a){return this._optionLis.eq(parseInt(this._selectedOptionLi().data("index"),10)+a).trigger("mouseup")},_moveFocus:function(a){a=
isNaN(a)?parseInt(this._optionLis.filter(a).data("index"),10):parseInt(this._focusedOptionLi().data("index"),10)+a;if(a<0)a=0;if(a>this._optionLis.size()-1)a=this._optionLis.size()-1;var b=this.widgetBaseClass+"-item-"+Math.round(Math.random()*1E3);this._focusedOptionLi().find("a:eq(0)").attr("id","").blur();this._optionLis.eq(a).find("a:eq(0)").attr("id",b).focus();this.list.attr("aria-activedescendant",b)},_scrollPage:function(a){var b=Math.floor(this.list.outerHeight()/this.list.find("li:first").outerHeight());
b=a=="up"?-b:b;this._moveFocus(b)},_setData:function(a,b){this.options[a]=b;if(a=="disabled")this.element.add(this.newelement).add(this.list)[b?"addClass":"removeClass"](this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").attr("aria-disabled",b)},value:function(a){if(arguments.length){this.element[0].selectedIndex=a;this._refreshValue();this._refreshPosition()}return this.element[0].selectedIndex},_refreshValue:function(){var a=this.options.style=="popup"?" ui-state-active":"",b=this.widgetBaseClass+
"-item-"+Math.round(Math.random()*1E3);this.list.find("."+this.widgetBaseClass+"-item-selected").removeClass(this.widgetBaseClass+"-item-selected"+a).find("a").attr("aria-selected","false").attr("id","");this._selectedOptionLi().addClass(this.widgetBaseClass+"-item-selected"+a).find("a").attr("aria-selected","true").attr("id",b);a=this.newelement.data("optionClasses")?this.newelement.data("optionClasses"):"";var i=this._selectedOptionLi().data("optionClasses")?this._selectedOptionLi().data("optionClasses"):
"";this.newelement.removeClass(a).data("optionClasses",i).addClass(i).find("."+this.widgetBaseClass+"-status").html(this._selectedOptionLi().find("a:eq(0)").html());this.list.attr("aria-activedescendant",b)},_refreshPosition:function(){this.list.css("left",this.newelement.offset().left);var a=this.newelement.offset().top,b=this.list[0].scrollTop;this.list.find("li:lt("+this._selectedIndex()+")").each(function(){b-=d(this).outerHeight()});a+=this.newelement.is("."+this.widgetBaseClass+"-popup")?b:
this.newelement.height();this.list.css("top",a)}});d.extend(d.ui.selectmenu,{getter:"value",version:"@VERSION",eventPrefix:"selectmenu",defaults:{transferClasses:true,style:"popup",width:null,menuWidth:null,handleWidth:26,maxHeight:null,icons:null,format:null}})})(jQuery);
