;(function(){$.fn.sexyCombo=function(a){return this.each(function(){new $sc(this,a)})};var i={skin:"sexy",suffix:"__sexyCombo",hiddenSuffix:"__sexyComboHidden",initialHiddenValue:"",emptyText:"",autoFill:false,triggerSelected:false,filterFn:null,dropUp:false,separator:",",showListCallback:null,hideListCallback:null,initCallback:null,initEventsCallback:null,changeCallback:null,textChangeCallback:null};$.sexyCombo=function(b,d){if(b.nodeName!="SELECT")return;this.config=$.extend({},i,d||{});this.selectbox=$(b);this.options=this.selectbox.children().filter("option");this.wrapper=this.selectbox.wrap("<div>").hide().parent().addClass("combo").addClass(this.config.skin);this.input=$("<input type='text' />").appendTo(this.wrapper).attr("autocomplete","off").attr("value","").attr("name",this.selectbox.attr("name")+this.config.suffix);this.hidden=$("<input type='hidden' />").appendTo(this.wrapper).attr("autocomplete","off").attr("value",this.config.initialHiddenValue).attr("name",this.selectbox.attr("name")+this.config.hiddenSuffix);this.icon=$("<div />").appendTo(this.wrapper).addClass("icon");this.listWrapper=$("<div />").appendTo(this.wrapper).addClass("invisible").addClass("list-wrapper");this.updateDrop();this.list=$("<ul />").appendTo(this.listWrapper);var c=this;this.options.each(function(){var a=$.trim($(this).text());$("<li />").appendTo(c.list).text(a).addClass("visible")});this.listItems=this.list.children();if($.browser.opera){this.wrapper.css({position:"relative",left:"0",top:"0"})}this.filterFn=("function"==typeof(this.config.filterFn))?this.config.filterFn:this.filterFn;this.lastKey=null;this.overflowCSS=$.browser.opera?"overflow":"overflowY";this.multiple=this.selectbox.attr("multiple");this.notify("init");this.initEvents()};$sc=$.sexyCombo;$sc.fn=$sc.prototype={};$sc.fn.extend=$sc.extend=$.extend;$sc.fn.extend({initEvents:function(){var b=this;this.icon.bind("click",function(){b.iconClick()});this.listItems.bind("mouseover",function(a){b.highlight(a.target)});this.listItems.bind("click",function(a){b.listItemClick($(a.target))});this.input.bind("keyup",function(a){b.keyUp(a)});this.input.bind("keypress",function(a){if($sc.KEY.RETURN==a.keyCode)a.preventDefault();if($sc.KEY.TAB==a.keyCode)b.hideList()});$(document).bind("click",function(a){if((b.icon.get(0)==a.target)||(b.input.get(0)==a.target))return;b.hideList()});this.triggerSelected();this.applyEmptyText();this.notify("initEvents")},getTextValue:function(){return this.__getValue("input")},getCurrentTextValue:function(){return this.__getCurrentValue("input")},getHiddenValue:function(){return this.__getValue("hidden")},getCurrentHiddenValue:function(){return this.__getCurrentValue("hidden")},__getValue:function(a){a=this[a];if(!this.multiple)return $.trim(a.val());var b=a.val().split(this.config.separator);var d=[];for(var c=0,e=b.length;c<e;++c){d.push($.trim(b[c]))}d=$sc.normalizeArray(d);return d},__getCurrentValue:function(a){a=this[a];if(!this.multiple)return $.trim(a.val());return $.trim(a.val().split(this.config.separator).pop())},iconClick:function(){if(this.listVisible())this.hideList();else this.showList();this.input.focus()},listVisible:function(){return this.listWrapper.hasClass("visible")},showList:function(){if(!this.listItems.filter(".visible").length)return;this.listWrapper.removeClass("invisible").addClass("visible");this.wrapper.css("zIndex","99999");this.listWrapper.css("zIndex","99999");this.setOverflow();this.setListHeight();this.highlightFirst();this.listWrapper.scrollTop(0);this.notify("showList")},hideList:function(){if(this.listWrapper.hasClass("invisible"))return;this.listWrapper.removeClass("visible").addClass("invisible");this.wrapper.css("zIndex","0");this.listWrapper.css("zIndex","99999");this.notify("hideList")},getListItemsHeight:function(){return this.listItems.height()*this.liLen()},setOverflow:function(){if(this.getListItemsHeight()>this.getListMaxHeight())this.listWrapper.css(this.overflowCSS,"scroll");else this.listWrapper.css(this.overflowCSS,"hidden")},highlight:function(a){if(($sc.KEY.DOWN==this.lastKey)||($sc.KEY.UP==this.lastKey))return;this.listItems.removeClass("active");$(a).addClass("active")},setComboValue:function(a,b,d){var c=this.input.val();var e="";if(this.multiple){e=this.getTextValue();if(b)e.pop();e.push($.trim(a));e=$sc.normalizeArray(e);e=e.join(this.config.separator)+this.config.separator}else{e=$.trim(a)}this.input.val(e);this.setHiddenValue(a);this.filter();if(d)this.hideList();this.input.removeClass("empty");if(this.multiple)this.input.focus();if(this.input.val()!=c)this.notify("textChange")},setHiddenValue:function(a){var b=false;a=$.trim(a);var d=this.hidden.val();if(!this.multiple){for(var c=0,e=this.options.length;c<e;++c){if(a==this.options.eq(c).text()){this.hidden.val(this.options.eq(c).val());b=true;break}}}else{var f=this.getTextValue();var h=[];for(var c=0,e=f.length;c<e;++c){for(var g=0,j=this.options.length;g<j;++g){if(f[c]==this.options.eq(g).text()){h.push(this.options.eq(g).val())}}}if(h.length){b=true;this.hidden.val(h.join(this.config.separator))}}if(!b){this.hidden.val(this.config.initialHiddenValue)}if(d!=this.hidden.val())this.notify("change")},listItemClick:function(a){this.setComboValue(a.text(),true,true);this.inputFocus()},filter:function(){var d=this.input.val();var c=this;this.listItems.each(function(){var a=$(this);var b=a.text();if(c.filterFn.call(c,c.getCurrentTextValue(),b,c.getTextValue())){a.removeClass("invisible").addClass("visible")}else{a.removeClass("visible").addClass("invisible")}});this.setOverflow();this.setListHeight()},filterFn:function(a,b,d){if(!this.multiple){return b.toLowerCase().search(a.toLowerCase())==0}else{for(var c=0,e=d.length;c<e;++c){if(b==d[c]){return false}}return b.toLowerCase().search(a.toLowerCase())==0}},getListMaxHeight:function(){return parseInt(this.listWrapper.css("maxHeight"),10)},setListHeight:function(){var a=this.getListItemsHeight();var b=this.getListMaxHeight();var d=this.listWrapper.height();if(a<d){this.listWrapper.height(a)}else if(a>d){this.listWrapper.height(Math.min(b,a))}},getActive:function(){return this.listItems.filter(".active")},keyUp:function(a){this.lastKey=a.keyCode;var b=$sc.KEY;switch(a.keyCode){case b.RETURN:this.setComboValue(this.getActive().text(),true,true);if(!this.multiple)this.input.blur();break;case b.DOWN:this.highlightNext();break;case b.UP:this.highlightPrev();break;case b.ESC:this.hideList();break;default:this.inputChanged();break}},liLen:function(){return this.listItems.filter(".visible").length},inputChanged:function(){this.filter();if(this.liLen()){this.showList();this.setOverflow();this.setListHeight()}else{this.hideList()}this.setHiddenValue(this.input.val());this.notify("textChange")},highlightFirst:function(){this.listItems.removeClass("active").filter(".visible:eq(0)").addClass("active");this.autoFill()},highlightNext:function(){var a=this.getActive().next();while(a.hasClass("invisible")&&a.length){a=a.next()}if(a.length){this.listItems.removeClass("active");a.addClass("active");this.scrollDown()}},scrollDown:function(){if("scroll"!=this.listWrapper.css(this.overflowCSS))return;var a=this.getActiveIndex()+1;if($.browser.opera)++a;var b=this.listItems.height()*a-this.listWrapper.height();if($.browser.msie)b+=a;if(this.listWrapper.scrollTop()<b)this.listWrapper.scrollTop(b)},highlightPrev:function(){var a=this.getActive().prev();while(a.length&&a.hasClass("invisible"))a=a.prev();if(a.length){this.getActive().removeClass("active");a.addClass("active");this.scrollUp()}},getActiveIndex:function(){return $.inArray(this.getActive().get(0),this.listItems.filter(".visible").get())},scrollUp:function(){if("scroll"!=this.listWrapper.css(this.overflowCSS))return;var a=this.getActiveIndex()*this.listItems.height();if(this.listWrapper.scrollTop()>a){this.listWrapper.scrollTop(a)}},applyEmptyText:function(){if(!this.config.emptyText.length)return;var a=this;this.input.bind("focus",function(){a.inputFocus()}).bind("blur",function(){a.inputBlur()});if(""==this.input.val()){this.input.addClass("empty").val(this.config.emptyText)}},inputFocus:function(){if(this.input.hasClass("empty")){this.input.removeClass("empty").val("")}},inputBlur:function(){if(""==this.input.val()){this.input.addClass("empty").val(this.config.emptyText)}},triggerSelected:function(){if(!this.config.triggerSelected)return;var a=this;this.options.each(function(){if($(this).attr("selected")){a.setComboValue($(this).text(),false,true)}})},autoFill:function(){if(!this.config.autoFill||($sc.KEY.BACKSPACE==this.lastKey)||this.multiple)return;var a=this.input.val();var b=this.getActive().text();this.input.val(b);this.selection(this.input.get(0),a.length,b.length)},selection:function(a,b,d){if(a.createTextRange){var c=a.createTextRange();c.collapse(true);c.moveStart("character",b);c.moveEnd("character",d);c.select()}else if(a.setSelectionRange){a.setSelectionRange(b,d)}else{if(a.selectionStart){a.selectionStart=b;a.selectionEnd=d}}},updateDrop:function(){if(this.config.dropUp)this.listWrapper.addClass("list-wrapper-up");else this.listWrapper.removeClass("list-wrapper-up")},setDropUp:function(a){this.config.dropUp=a;this.updateDrop()},notify:function(a){if(!$.isFunction(this.config[a+"Callback"]))return;this.config[a+"Callback"].call(this)}});$sc.extend({KEY:{UP:38,DOWN:40,DEL:46,TAB:9,RETURN:13,ESC:27,COMMA:188,PAGEUP:33,PAGEDOWN:34,BACKSPACE:8},log:function(a){var b=$("#log");b.html(b.html()+a+"<br />")},createSelectbox:function(a){var b=$("<select />").appendTo(a.container).attr({name:a.name,id:a.id,size:"1"});if(a.multiple)b.attr("multiple",true);var d=a.data;var c=false;for(var e=0,f=d.length;e<f;++e){c=d[e].selected||false;$("<option />").appendTo(b).attr("value",d[e].value).text(d[e].text).attr("selected",c)}return b.get(0)},create:function(b){var d={name:"",id:"",data:[],multiple:false,container:$(document),url:"",ajaxData:{}};b=$.extend({},d,b||{});if(b.url){return $.getJSON(b.url,b.ajaxData,function(a){delete b.url;delete b.ajaxData;b.data=a;return $sc.create(b)})}b.container=$(b.container);var c=$sc.createSelectbox(b);return new $sc(c,b)},normalizeArray:function(a){var b=[];for(var d=0,c=a.length;d<c;++d){if(""==a[d])continue;b.push(a[d])}return b}})})(jQuery);