(function(a){a.cmbBoxSimple=function(c){var c=c||{};var b=a(c.el);b.attr("autocomplete","off");var d=(b.parent());this.init({wrapper:d,inputBox:b,store:c.store,emptyText:c.emptyText||"Enter text",lastListItem:c.lastListItem,onSelect:c.onSelect,onClearValue:c.onClearValue,displayHiddenValue:c.displayHiddenValue})};a.cmbBoxSimple.prototype={isValid:function(){},clearInvalid:function(){this.el.removeClass("addrNotFound")},markInvalid:function(){this.el.addClass("addrNotFound")},clearValid:function(){this.el.removeClass("addrFound")},markValid:function(){this.el.addClass("addrFound")},collapseIf:function(c,b){if(!a.isAncestor(b.componentWrapper,a(c.target))){b.collapse()}},getEl:function(){return this.el},collapse:function(){if(!this.isExpanded()){return}this.wrapper.hide();this.list.find("li.hover").removeClass("hover");a(document).unbind("mousedown")},isExpanded:function(){return this.wrapper.is(":visible")},getEmptyText:function(){return this.emptyText},toggleExpand:function(){if(this.isExpanded()){this.collapse()}else{this.expand()}},expand:function(){if(this.isExpanded()||this.getCount()<1||!this.hasFocus){return}this.wrapper.show();this.select(++this.selectedIndex);var b=this;a(document).mousedown(function(c){b.collapseIf(c,b)})},init:function(b){var c=this;this.componentWrapper=b.wrapper;this.largeWrapper=b.wrapper.parent();this.arrow=b.wrapper.find(".cmbArrow");this.cmbInputWrapper=b.wrapper.find(".cmbInputWrapper");this.el=b.inputBox;this.list=b.wrapper.find("ul.cmbSuggestions");this.wrapper=b.wrapper.find(".cmbSuggestionBox");this.emptyText=b.emptyText||"Enter text";this.hiddenField=a("<input name='"+this.el.attr("name")+"Value' style='display:none' type='hidden'/>").insertAfter(this.el);this.selectedIndex=-1;this.optsStore=b.store;this.lastListItem=b.lastListItem||null;this.onSelect=b.onSelect||null;this.onClearValue=b.onClearValue||null;this.displayHiddenValue=(typeof b.displayHiddenValue=="boolean"?b.displayHiddenValue:false);this.timeOut=100;if(this.optsStore.mode=="remote"){this.mode="remote";this.store={};this.storeUrlSuggest=this.optsStore.urlSuggest.url}else{throw ("Fatal error initializing store!!!")}if(!this.el.val().length||this.el.val()==this.emptyText){this.applyEmptyText()}this.initEvents()},applyEmptyText:function(){this.el.val(this.emptyText).addClass("defaultText");this.clearInvalid();this.clearValid();this.hiddenField.attr("value","")},initEvents:function(){var b=this;this.el.focus(function(){if(b.getRawValue()==""){b.setValue({text:"",value:""})}if(b.ajaxSuggestCall){b.ajaxSuggestCall.abort()}b.hasFocus=true;b.loadIndicator(false);a(this).removeClass("defaultText")}).blur(function(c){b.onBlur(c)}).keydown(function(c){switch(c.keyCode){case 9:break;case 27:b.collapse();break;case 38:b.selectPrev();return false;break;case 40:if(!b.isExpanded()){b.onTriggerClick()}else{b.selectNext()}return false;break;case 13:b.onViewClick();c.preventDefault();return false;break}}).keyup(function(c){switch(c.keyCode){case 9:case 16:case 27:case 38:case 39:case 37:case 40:case 13:break;default:if(b.getRawValue()!=""){b.clearValue();if(b.ajaxSuggestCall){b.ajaxSuggestCall.abort()}setTimeout(function(){b.doQuery(b.getRawValue())},b.timeOut)}else{b.collapse()}break}});this.arrow.click(function(c){c.stopPropagation();c.preventDefault();b.el.focus();b.onTriggerClick();return false}).mousedown(function(){if(b.isExpanded()){b.mouseDown=true}})},initListEvents:function(){this.listItems=this.list.find("li:not('.category')");var b=this;this.listItems.hover(function(){b.listItems.filter(".hover").removeClass("hover");a(this).addClass("hover")},function(){}).mousedown(function(c){b.mouseDown=true}).click(function(){if(!a(this).hasClass("editHistory")){b.onViewClick()}})},renderList:function(f){if(this.getCount()>0){var c=this.store;var b="";var e=[];for(var d in c){if(d!="length"&&(this.mode=="remote"?c[d].length>0:true)){e.push("<LI class='category'>");e.push(d);e.push("</LI>");a.each(c[d],function(h,g){if(h<250){e.push("<LI itemValue=");e.push(g.value);e.push(">");e.push(g.label);e.push("</LI>")}})}}if(this.lastListItem){e.push("<LI class='lastItem'>");e.push(this.lastListItem);e.push("</LI>")}var b=e.join("");this.list.html(b);this.selectedIndex=-1;this.initListEvents()}},getCount:function(){return this.store.length},setValue:function(b){this.el.removeClass("defaultText");if(this.displayHiddenValue){this.el.val(b.value)}else{this.el.val(b.text)}if(b.text!=""&&b.value!=""){this.hiddenField.attr("value",b.value);if(this.onSelect){this.onSelect.call(this)}else{this.collapse();this.clearInvalid();this.markValid()}}},clearValue:function(){this.hiddenField.attr("value","");this.clearInvalid();this.clearValid();if(this.onClearValue){this.onClearValue.call(this)}},getValue:function(){var b=this.hiddenField.attr("value");return b},getRawValue:function(){var b=this.el.val();if(b===this.emptyText){b=""}return b},doQuery:function(c){var b=0;if(this.mode=="remote"){this.storeLoad({value:c,loadIndicator:true})}},storeLoad:function(c){if(typeof c.loadIndicator=="undefined"){c.loadIndicator=true}if(c.loadIndicator){this.loadIndicator(true)}var d=this;var b={type:"GET",url:d.storeUrlSuggest,dataType:"json",cache:false,success:function(e){d.store=e;d.onLoad()},error:function(){d.onLoadError()},data:{}};b.data[d.optsStore.urlSuggest.queryText]=c.value;this.ajaxSuggestCall=a.ajax(b)},loadIndicator:function(b){if(b){this.el.addClass("loading")}else{this.el.removeClass("loading")}},onViewClick:function(){var b=this.list.find("li.hover:first");if(a(b).text()){this.setValue({text:a(b).text(),value:a(b).attr("itemValue")});this.el.focus()}},onBlur:function(b){if(this.mouseDown){this.mouseDown=false;return}this.hasFocus=false;this.collapse();this.loadIndicator(false);if(this.ajaxSuggestCall){this.ajaxSuggestCall.abort()}if(this.getRawValue()==""){this.applyEmptyText()}},onTriggerClick:function(){if(!this.isExpanded()){this.loadIndicator(true);var c=this;var b={type:"GET",url:c.storeUrlSuggest,dataType:"json",cache:false,success:function(d){c.store=d;c.onLoad()},error:function(){c.onLoadError()},data:{query:""}};a.ajax(b)}else{this.collapse()}},onLoad:function(){this.selectedIndex=-1;this.ajaxSuggestCall=null;this.collapse();if(this.getCount()>0){this.renderList();this.expand()}else{this.onEmptyResults()}this.loadIndicator(false)},onLoadError:function(){this.loadIndicator(false);this.markInvalid()},onEmptyResults:function(){this.collapse();this.markInvalid()},select:function(b){this.selectedIndex=b;this.listItems.removeClass("hover").eq(b).addClass("hover");var c=this.listItems.eq(b);if(c.position().top<0){this.list.scrollTop(this.list.scrollTop()-c.outerHeight())}if(c.position().top+c.outerHeight()>this.wrapper.height()){this.list.scrollTop(this.list.scrollTop()+c.outerHeight())}},selectNext:function(){var b=this.getCount();if(b>0){if(this.selectedIndex==-1){this.select(0)}else{if(this.selectedIndex<b-1){this.select(++this.selectedIndex)}}}},selectPrev:function(){var b=this.getCount();if(b>0){if(this.selectedIndex==-1){this.select(0)}else{if(this.selectedIndex!=0){this.select(--this.selectedIndex)}}}}}})(jQuery);