/** * EasyUi Bootstrap 1.3 * * Licensed under the GPL terms * To use it on other terms please contact us * * Copyright(c) 2009-2012 stworthy [ stworthy@gmail.com ] * */ (function($){ function _1(_2,_3){ var _4=$(_2).combo("panel"); var _5=_4.find("div.combobox-item[value=\""+_3+"\"]"); if(_5.length){ if(_5.position().top<=0){ var h=_4.scrollTop()+_5.position().top; _4.scrollTop(h); }else{ if(_5.position().top+_5.outerHeight()>_4.height()){ var h=_4.scrollTop()+_5.position().top+_5.outerHeight()-_4.height(); _4.scrollTop(h); } } } }; function _6(_7){ var _8=$(_7).combo("panel"); var _9=$(_7).combo("getValues"); var _a=_8.find("div.combobox-item[value=\""+_9.pop()+"\"]"); if(_a.length){ var _b=_a.prev(":visible"); if(_b.length){ _a=_b; } }else{ _a=_8.find("div.combobox-item:visible:last"); } var _c=_a.attr("value"); _d(_7,_c); _1(_7,_c); }; function _e(_f){ var _10=$(_f).combo("panel"); var _11=$(_f).combo("getValues"); var _12=_10.find("div.combobox-item[value=\""+_11.pop()+"\"]"); if(_12.length){ var _13=_12.next(":visible"); if(_13.length){ _12=_13; } }else{ _12=_10.find("div.combobox-item:visible:first"); } var _14=_12.attr("value"); _d(_f,_14); _1(_f,_14); }; function _d(_15,_16){ var _17=$.data(_15,"combobox").options; var _18=$.data(_15,"combobox").data; if(_17.multiple){ var _19=$(_15).combo("getValues"); for(var i=0;i<_19.length;i++){ if(_19[i]==_16){ return; } } _19.push(_16); _1a(_15,_19); }else{ _1a(_15,[_16]); } for(var i=0;i<_18.length;i++){ if(_18[i][_17.valueField]==_16){ _17.onSelect.call(_15,_18[i]); return; } } }; function _1b(_1c,_1d){ var _1e=$.data(_1c,"combobox").options; var _1f=$.data(_1c,"combobox").data; var _20=$(_1c).combo("getValues"); for(var i=0;i<_20.length;i++){ if(_20[i]==_1d){ _20.splice(i,1); _1a(_1c,_20); break; } } for(var i=0;i<_1f.length;i++){ if(_1f[i][_1e.valueField]==_1d){ _1e.onUnselect.call(_1c,_1f[i]); return; } } }; function _1a(_21,_22,_23){ var _24=$.data(_21,"combobox").options; var _25=$.data(_21,"combobox").data; var _26=$(_21).combo("panel"); _26.find("div.combobox-item-selected").removeClass("combobox-item-selected"); var vv=[],ss=[]; for(var i=0;i<_22.length;i++){ var v=_22[i]; var s=v; for(var j=0;j<_25.length;j++){ if(_25[j][_24.valueField]==v){ s=_25[j][_24.textField]; break; } } vv.push(v); ss.push(s); _26.find("div.combobox-item[value=\""+v+"\"]").addClass("combobox-item-selected"); } $(_21).combo("setValues",vv); if(!_23){ $(_21).combo("setText",ss.join(_24.separator)); } }; function _27(_28){ var _29=$.data(_28,"combobox").options; var _2a=[]; $(">option",_28).each(function(){ var _2b={}; _2b[_29.valueField]=$(this).attr("value")!=undefined?$(this).attr("value"):$(this).html(); _2b[_29.textField]=$(this).html(); _2b["selected"]=$(this).attr("selected"); _2a.push(_2b); }); return _2a; }; function _2c(_2d,_2e,_2f){ var _30=$.data(_2d,"combobox").options; var _31=$(_2d).combo("panel"); $.data(_2d,"combobox").data=_2e; var _32=$(_2d).combobox("getValues"); _31.empty(); for(var i=0;i<_2e.length;i++){ var v=_2e[i][_30.valueField]; var s=_2e[i][_30.textField]; var _33=$("
").appendTo(_31); _33.attr("value",v); if(_30.formatter){ _33.html(_30.formatter.call(_2d,_2e[i])); }else{ _33.html(s); } if(_2e[i]["selected"]){ (function(){ for(var i=0;i<_32.length;i++){ if(v==_32[i]){ return; } } _32.push(v); })(); } } if(_30.multiple){ _1a(_2d,_32,_2f); }else{ if(_32.length){ _1a(_2d,[_32[_32.length-1]],_2f); }else{ _1a(_2d,[],_2f); } } _30.onLoadSuccess.call(_2d,_2e); $(".combobox-item",_31).hover(function(){ $(this).addClass("combobox-item-hover"); },function(){ $(this).removeClass("combobox-item-hover"); }).click(function(){ var _34=$(this); if(_30.multiple){ if(_34.hasClass("combobox-item-selected")){ _1b(_2d,_34.attr("value")); }else{ _d(_2d,_34.attr("value")); } }else{ _d(_2d,_34.attr("value")); $(_2d).combo("hidePanel"); } }); }; function _35(_36,url,_37,_38){ var _39=$.data(_36,"combobox").options; if(url){ _39.url=url; } _37=_37||{}; if(_39.onBeforeLoad.call(_36,_37)==false){ return; } _39.loader.call(_36,_37,function(_3a){ _2c(_36,_3a,_38); },function(){ _39.onLoadError.apply(this,arguments); }); }; function _3b(_3c,q){ var _3d=$.data(_3c,"combobox").options; if(_3d.multiple&&!q){ _1a(_3c,[],true); }else{ _1a(_3c,[q],true); } if(_3d.mode=="remote"){ _35(_3c,null,{q:q},true); }else{ var _3e=$(_3c).combo("panel"); _3e.find("div.combobox-item").hide(); var _3f=$.data(_3c,"combobox").data; for(var i=0;i<_3f.length;i++){ if(_3d.filter.call(_3c,q,_3f[i])){ var v=_3f[i][_3d.valueField]; var s=_3f[i][_3d.textField]; var _40=_3e.find("div.combobox-item[value=\""+v+"\"]"); _40.show(); if(s==q){ _1a(_3c,[v],true); _40.addClass("combobox-item-selected"); } } } } }; function _41(_42){ var _43=$.data(_42,"combobox").options; $(_42).addClass("combobox-f"); $(_42).combo($.extend({},_43,{onShowPanel:function(){ $(_42).combo("panel").find("div.combobox-item").show(); _1(_42,$(_42).combobox("getValue")); _43.onShowPanel.call(_42); }})); }; $.fn.combobox=function(_44,_45){ if(typeof _44=="string"){ var _46=$.fn.combobox.methods[_44]; if(_46){ return _46(this,_45); }else{ return this.combo(_44,_45); } } _44=_44||{}; return this.each(function(){ var _47=$.data(this,"combobox"); if(_47){ $.extend(_47.options,_44); _41(this); }else{ _47=$.data(this,"combobox",{options:$.extend({},$.fn.combobox.defaults,$.fn.combobox.parseOptions(this),_44)}); _41(this); _2c(this,_27(this)); } if(_47.options.data){ _2c(this,_47.options.data); } _35(this); }); }; $.fn.combobox.methods={options:function(jq){ return $.data(jq[0],"combobox").options; },getData:function(jq){ return $.data(jq[0],"combobox").data; },setValues:function(jq,_48){ return jq.each(function(){ _1a(this,_48); }); },setValue:function(jq,_49){ return jq.each(function(){ _1a(this,[_49]); }); },clear:function(jq){ return jq.each(function(){ $(this).combo("clear"); var _4a=$(this).combo("panel"); _4a.find("div.combobox-item-selected").removeClass("combobox-item-selected"); }); },loadData:function(jq,_4b){ return jq.each(function(){ _2c(this,_4b); }); },reload:function(jq,url){ return jq.each(function(){ _35(this,url); }); },select:function(jq,_4c){ return jq.each(function(){ _d(this,_4c); }); },unselect:function(jq,_4d){ return jq.each(function(){ _1b(this,_4d); }); }}; $.fn.combobox.parseOptions=function(_4e){ var t=$(_4e); return $.extend({},$.fn.combo.parseOptions(_4e),$.parser.parseOptions(_4e,["valueField","textField","mode","method","url"])); }; $.fn.combobox.defaults=$.extend({},$.fn.combo.defaults,{valueField:"value",textField:"text",mode:"local",method:"post",url:null,data:null,keyHandler:{up:function(){ _6(this); },down:function(){ _e(this); },enter:function(){ var _4f=$(this).combobox("getValues"); $(this).combobox("setValues",_4f); $(this).combobox("hidePanel"); },query:function(q){ _3b(this,q); }},filter:function(q,row){ var _50=$(this).combobox("options"); return row[_50.textField].indexOf(q)==0; },formatter:function(row){ var _51=$(this).combobox("options"); return row[_51.textField]; },loader:function(_52,_53,_54){ var _55=$(this).combobox("options"); if(!_55.url){ return false; } $.ajax({type:_55.method,url:_55.url,data:_52,dataType:"json",success:function(_56){ _53(_56); },error:function(){ _54.apply(this,arguments); }}); },onBeforeLoad:function(_57){ },onLoadSuccess:function(){ },onLoadError:function(){ },onSelect:function(_58){ },onUnselect:function(_59){ }}); })(jQuery);