(function(b){b.widget("ui.autocomplete",{options:{minLength:1,delay:300},_create:function(){var a=this,d=this.element[0].ownerDocument;
this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(f){var c=b.ui.keyCode;
switch(f.keyCode){case c.PAGE_UP:a._move("previousPage",f);
break;
case c.PAGE_DOWN:a._move("nextPage",f);
break;
case c.UP:a._move("previous",f);
f.preventDefault();
break;
case c.DOWN:a._move("next",f);
f.preventDefault();
break;
case c.ENTER:if(a.menu.active){f.preventDefault()
}case c.TAB:if(!a.menu.active){return
}a.menu.select();
break;
case c.ESCAPE:a.element.val(a.term);
a.close(f);
break;
case c.SHIFT:case c.CONTROL:case 18:break;
default:clearTimeout(a.searching);
a.searching=setTimeout(function(){a.search(null,f)
},a.options.delay);
break
}}).bind("focus.autocomplete",function(){a.previous=a.element.val()
}).bind("blur.autocomplete",function(c){clearTimeout(a.searching);
a.closing=setTimeout(function(){a.close(c)
},150)
});
this._initSource();
this.response=function(){return a._response.apply(a,arguments)
};
this.menu=b("<ul></ul>").addClass("ui-autocomplete").appendTo("body",d).menu({focus:function(g,c){var h=c.item.data("item.autocomplete");
if(false!==a._trigger("focus",null,{item:h})){a.element.val(h.value)
}},selected:function(g,c){var h=c.item.data("item.autocomplete");
if(false!==a._trigger("select",g,{item:h})){a.element.val(h.value)
}a.close(g);
a.previous=a.element.val();
if(a.element[0]!==d.activeElement){a.element.focus()
}},blur:function(f,c){if(a.menu.element.is(":visible")){a.element.val(a.term)
}}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu");
if(b.fn.bgiframe){this.menu.element.bgiframe()
}},destroy:function(){this.element.removeClass("ui-autocomplete-input ui-widget ui-widget-content").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup");
this.menu.element.remove();
b.Widget.prototype.destroy.call(this)
},_setOption:function(a){b.Widget.prototype._setOption.apply(this,arguments);
if(a==="source"){this._initSource()
}},_initSource:function(){var d,a;
if(b.isArray(this.options.source)){d=this.options.source;
this.source=function(g,h){var c=new RegExp(b.ui.autocomplete.escapeRegex(g.term),"i");
h(b.grep(d,function(e){return c.test(e.label||e.value||e)
}))
}
}else{if(typeof this.options.source==="string"){a=this.options.source;
this.source=function(c,f){b.getJSON(a,c,f)
}
}else{this.source=this.options.source
}}},search:function(d,a){d=d!=null?d:this.element.val();
if(d.length<this.options.minLength){return this.close(a)
}clearTimeout(this.closing);
if(this._trigger("search")===false){return
}return this._search(d)
},_search:function(a){this.term=this.element.addClass("ui-autocomplete-loading").val();
this.source({term:a},this.response)
},_response:function(a){if(a.length){a=this._normalize(a);
this._suggest(a);
this._trigger("open")
}else{this.close()
}this.element.removeClass("ui-autocomplete-loading")
},close:function(a){clearTimeout(this.closing);
if(this.menu.element.is(":visible")){this._trigger("close",a);
this.menu.element.hide();
this.menu.deactivate()
}if(this.previous!==this.element.val()){this._trigger("change",a)
}},_normalize:function(a){if(a.length&&a[0].label&&a[0].value){return a
}return b.map(a,function(d){if(typeof d==="string"){return{label:d,value:d}
}return b.extend({label:d.label||d.value,value:d.value||d.label},d)
})
},_suggest:function(a){var h=this.menu.element.empty().zIndex(this.element.zIndex()+1),g,f;
this._renderMenu(h,a);
this.menu.deactivate();
this.menu.refresh();
this.menu.element.show().position({my:"left top",at:"left bottom",of:this.element,collision:"none"});
g=h.width("").width();
f=this.element.width();
h.width(Math.max(g,f))
},_renderMenu:function(e,f){var a=this;
b.each(f,function(d,c){a._renderItem(e,c)
})
},_renderItem:function(a,d){return b("<li></li>").data("item.autocomplete",d).append("<a>"+d.label+"</a>").appendTo(a)
},_move:function(d,a){if(!this.menu.element.is(":visible")){this.search(null,a);
return
}if(this.menu.first()&&/^previous/.test(d)||this.menu.last()&&/^next/.test(d)){this.element.val(this.term);
this.menu.deactivate();
return
}this.menu[d]()
},widget:function(){return this.menu.element
}});
b.extend(b.ui.autocomplete,{escapeRegex:function(a){return a.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi,"\\$1")
}})
}(jQuery));
(function(b){b.widget("ui.menu",{_create:function(){var a=this;
this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(d){d.preventDefault();
a.select()
});
this.refresh()
},refresh:function(){var d=this;
var a=this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem");
a.children("a").addClass("ui-corner-all").attr("tabindex",-1).mouseenter(function(){d.activate(b(this).parent())
}).mouseleave(function(){d.deactivate()
})
},activate:function(g){this.deactivate();
if(this.hasScroll()){var f=g.offset().top-this.element.offset().top,a=this.element.attr("scrollTop"),h=this.element.height();
if(f<0){this.element.attr("scrollTop",a+f)
}else{if(f>h){this.element.attr("scrollTop",a+f-h+g.height())
}}}this.active=g.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end();
this._trigger("focus",null,{item:g})
},deactivate:function(){if(!this.active){return
}this.active.children("a").removeClass("ui-state-hover").removeAttr("id");
this._trigger("blur");
this.active=null
},next:function(){this.move("next","li:first")
},previous:function(){this.move("prev","li:last")
},first:function(){return this.active&&!this.active.prev().length
},last:function(){return this.active&&!this.active.next().length
},move:function(e,f){if(!this.active){this.activate(this.element.children(f));
return
}var a=this.active[e]();
if(a.length){this.activate(a)
}else{this.activate(this.element.children(f))
}},nextPage:function(){if(this.hasScroll()){if(!this.active||this.last()){this.activate(this.element.children(":first"));
return
}var e=this.active.offset().top,f=this.element.height(),a=this.element.children("li").filter(function(){var c=b(this).offset().top-e-f+b(this).height();
return c<10&&c>-10
});
if(!a.length){a=this.element.children(":last")
}this.activate(a)
}else{this.activate(this.element.children(!this.active||this.last()?":first":":last"))
}},previousPage:function(){if(this.hasScroll()){if(!this.active||this.first()){this.activate(this.element.children(":last"));
return
}var d=this.active.offset().top,a=this.element.height();
result=this.element.children("li").filter(function(){var c=b(this).offset().top-d+a-b(this).height();
return c<10&&c>-10
});
if(!result.length){result=this.element.children(":first")
}this.activate(result)
}else{this.activate(this.element.children(!this.active||this.first()?":last":":first"))
}},hasScroll:function(){return this.element.height()<this.element.attr("scrollHeight")
},select:function(){this._trigger("selected",null,{item:this.active})
}})
}(jQuery));
