UNPKG

jquery.ajax-combobox

Version:

jQuery plugin to create a text box which can auto-complete and pull-down-select.

1 lines 31.9 kB
/*! jquery.ajax-combobox v7.5.3 | Yuusaku Miyazaki <toumin.m7@gmail.com> | license: MIT */!function(e){var t={};function o(s){if(t[s])return t[s].exports;var n=t[s]={i:s,l:!1,exports:{}};return e[s].call(n.exports,n,n.exports,o),n.l=!0,n.exports}o.m=e,o.c=t,o.d=function(e,t,s){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:s})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var s=Object.create(null);if(o.r(s),Object.defineProperty(s,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)o.d(s,n,function(t){return e[t]}.bind(null,n));return s},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s=0)}([function(e,t,o){"use strict";o.r(t);var s={_setOption:function(e,t){return t=this._setOption1st(e,t),t=this._setOption2nd(t)},_setOption1st:function(e,t){return $.extend({source:e,lang:"en",plugin_type:"combobox",init_record:!1,db_table:"tbl",field:"name",and_or:"AND",per_page:10,navi_num:5,primary_key:"id",button_img:'<svg class="octicon octicon-chevron-down" viewBox="0 0 10 16" version="1.1" aria-hidden="true"><path fill-rule="evenodd" d="M5 11L0 6l1.5-1.5L5 8.25 8.5 4.5 10 6z"></path></svg>',bind_to:!1,navi_simple:!1,sub_info:!1,sub_as:{},show_field:"",hide_field:"",select_only:!1,tags:!1,shorten_btn:!1,shorten_src:"dist/bitly.php",shorten_min:20,shorten_reg:!1},t)},_setOption2nd:function(e){return e.search_field=e.search_field?e.search_field:e.field,e.and_or=e.and_or.toUpperCase(),e.hide_field=this._strToArray(e.hide_field),e.show_field=this._strToArray(e.show_field),e.search_field=this._strToArray(e.search_field),""===e.show_field[0]&&(e.show_field[0]="*"),e.order_by=void 0===e.order_by?e.search_field:e.order_by,e.order_by=this._setOrderbyOption(e.order_by,e.field),"textarea"==e.plugin_type&&(e.shorten_reg=this._setRegExpShort(e.shorten_reg,e.shorten_min)),e.tags&&(e.tags=this._setTagPattern(e)),e},_strToArray:function(e){return e.replace(/[\s ]+/g,"").split(",")},_setRegExpShort:function(e,t){if(e)return e;var o="(?:^|[\\s| \\[(<「『(【[<〈《]+)";return o+="(",o+="https:\\/\\/[^\\s| \\])>」』)】]>〉》]{"+(t-7)+",}",o+="|",o+="http:\\/\\/[^\\s| \\])>」』)】]>〉》]{"+(t-6)+",}",o+="|",o+="ftp:\\/\\/[^\\s| \\])>」』)】]>〉》]{"+(t-5)+",}",o+=")",new RegExp(o,"g")},_setTagPattern:function(e){for(var t=0;t<e.tags.length;t++)e.tags[t]=this._setTagOptions(e,t),e.tags[t].pattern=this._setRegExpTag(e.tags[t].pattern,e.tags[t].space);return e.tags},_setTagOptions:function(e,t){e.tags[t]=$.extend({space:[!0,!0],db_table:e.db_table,field:e.field,search_field:e.search_field,primary_key:e.primary_key,sub_info:e.sub_info,sub_as:e.sub_as,show_field:e.show_field,hide_field:e.hide_field},e.tags[t]);for(var o=["hide_field","show_field","search_field"],s=0;s<o.length;s++)"object"!=typeof e.tags[t][o[s]]&&(e.tags[t][o[s]]=this._strToArray(e.tags[t][o[s]]));return e.tags[t].order_by=void 0===e.tags[t].order_by?e.order_by:this._setOrderbyOption(e.tags[t].order_by,e.tags[t].field),e.tags[t]},_setRegExpTag:function(e,t){var o=e[0].replace(/[\s\S]*/,this._escapeForReg),s=e[1].replace(/[\s\S]*/,this._escapeForReg);return{left:e[0],right:e[1],reg_left:new RegExp(o+"((?:(?!"+o+"|"+s+")[^\\s ])*)$"),reg_right:new RegExp("^((?:(?!"+o+"|"+s+")[^\\s ])+)"),space_left:new RegExp("^"+o+"$|[\\s ]+"+o+"$"),space_right:new RegExp("^$|^[\\s ]+"),comp_right:new RegExp("^"+s)}},_escapeForReg:function(e){return"\\u"+(65536+e.charCodeAt(0)).toString(16).slice(1)},_setOrderbyOption:function(e,t){"string"==typeof e&&(e=new Array(e));for(var o=[],s=[],n=0;n<e.length;n++)s=$.trim(e[n]).split(/ +/),o[n]=2==s.length?s:s[0].match(/^(ASC|DESC)$/i)?[t,s[0]]:[s[0],"ASC"];return o}},n={_setCssClass:function(){var e={container:"ac_container",container_open:"ac_container_open",selected:"ac_selected",re_area:"ac_result_area",navi:"ac_navi",results:"ac_results",re_off:"ac_results_off",select:"ac_over",sub_info:"ac_subinfo",select_ok:"ac_select_ok",select_ng:"ac_select_ng",input_off:"ac_input_off"};switch(this.option.plugin_type){case"combobox":e=$.extend(e,{button:"ac_button",btn_on:"ac_btn_on",btn_out:"ac_btn_out",input:"ac_input"});break;case"simple":e=$.extend(e,{input:"ac_s_input"});break;case"textarea":e=$.extend(e,{input:"ac_textarea",btn_short_off:"ac_btn_short_off"})}this.css_class=e},_setProp:function(){this.prop={timer_valchange:!1,is_suggest:!1,page_all:1,page_suggest:1,max_all:1,max_suggest:1,is_paging:!1,is_loading:!1,reserve_btn:!1,reserve_click:!1,xhr:!1,key_paging:!1,key_select:!1,prev_value:"",size_navi:null,size_results:null,size_li:null,size_left:null,tag:null}}},i={_setElem:function(e){var t={};if(t.combo_input=$(e).attr("autocomplete","off").addClass(this.css_class.input).wrap("<div>"),t.container=$(t.combo_input).parent().addClass(this.css_class.container),"combobox"==this.option.plugin_type?(t.button=$("<div>").addClass(this.css_class.button),t.img=this.option.button_img.match(/^</)?$(this.option.button_img):$("<img>").attr("src",this.option.button_img)):(t.button=!1,t.img=!1),t.result_area=$("<div>").addClass(this.css_class.re_area),t.navi=$("<div>").addClass(this.css_class.navi),t.navi_info=$("<div>").addClass("info"),t.navi_p=$("<p>"),t.results=$("<ul>").addClass(this.css_class.results),t.sub_info=$("<div>").addClass(this.css_class.sub_info),"textarea"==this.option.plugin_type)t.hidden=!1;else{var o=void 0!==$(t.combo_input).attr("name")?$(t.combo_input).attr("name"):$(t.combo_input).attr("id");o.match(/\]$/)?o=o.replace(/\]?$/,"_primary_key]"):o+="_primary_key",t.hidden=$('<input type="hidden" />').attr({name:o,id:o}).val("")}switch(this.option.plugin_type){case"combobox":$(t.container).append(t.button).append(t.result_area).append(t.hidden),$(t.button).append(t.img);break;case"simple":$(t.container).append(t.result_area).append(t.hidden);break;case"textarea":$(t.container).append(t.result_area)}$(t.result_area).append(t.navi).append(t.results).append(t.sub_info),$(t.navi).append(t.navi_info).append(t.navi_p),"combobox"==this.option.plugin_type?$(t.container).width($(t.combo_input).outerWidth()+$(t.button).outerWidth()):$(t.container).width($(t.combo_input).outerWidth()),this.elem=t},_setButtonAttrDefault:function(){this.option.select_only&&(""!==$(this.elem.combo_input).val()?"textarea"!=this.option.plugin_type&&(""!==$(this.elem.hidden).val()?$(this.elem.combo_input).attr("title",this.message.select_ok).removeClass(this.css_class.select_ng).addClass(this.css_class.select_ok):$(this.elem.combo_input).attr("title",this.message.select_ng).removeClass(this.css_class.select_ok).addClass(this.css_class.select_ng)):("textarea"!=this.option.plugin_type&&$(this.elem.hidden).val(""),$(this.elem.combo_input).removeAttr("title").removeClass(this.css_class.select_ng))),"combobox"==this.option.plugin_type&&$(this.elem.button).attr("title",this.message.get_all_btn)}},a={_setInitRecord:function(){if(!1!==this.option.init_record)if("textarea"!=this.option.plugin_type&&$(this.elem.hidden).val(this.option.init_record),"object"==typeof this.option.source){for(var e,t=0;t<this.option.source.length;t++)if(this.option.source[t][this.option.primary_key]==this.option.init_record){e=this.option.source[t];break}this._afterInit(this,e)}else{var o=this;$.ajax({dataType:"json",url:o.option.source,data:{db_table:this.option.db_table,pkey_name:this.option.primary_key,pkey_val:this.option.init_record},success:function(e){o._afterInit(o,e)},error:function(e,t,s){o._ajaxErrorNotify(o,s)}})}},_afterInit:function(e,t){$(e.elem.combo_input).val(t[e.option.field]),"textarea"!=e.option.plugin_type&&$(e.elem.hidden).val(t[e.option.primary_key]),e.prop.prev_value=t[e.option.field],e.option.select_only&&$(e.elem.combo_input).attr("title",e.message.select_ok).removeClass(e.css_class.select_ng).addClass(e.css_class.select_ok)}},r={_ehButton:function(){if("combobox"==this.option.plugin_type){var e=this;$(e.elem.button).mouseup(function(t){$(e.elem.result_area).is(":hidden")?(clearInterval(e.prop.timer_valchange),e.prop.is_suggest=!1,e._suggest(e),$(e.elem.combo_input).focus()):e._hideResults(e),t.stopPropagation()}).mouseover(function(){$(e.elem.button).addClass(e.css_class.btn_on).removeClass(e.css_class.btn_out)}).mouseout(function(){$(e.elem.button).addClass(e.css_class.btn_out).removeClass(e.css_class.btn_on)}).mouseout()}},_ehComboInput:function(){var e=this;$(e.elem.combo_input).keydown(function(t){e._processKey(e,t)}),$(e.elem.combo_input).focus(function(){e._setTimerCheckValue(e)}).click(function(){e._setCssFocusedInput(e),$(e.elem.results).children("li").removeClass(e.css_class.select)})},_ehWhole:function(){var e=this,t=!1;$(e.elem.container).mousedown(function(){t=!0}),$("html").mousedown(function(){t?t=!1:e._hideResults(e)})},_ehResults:function(){var e=this;$(e.elem.results).children("li").mouseover(function(){e.prop.key_select?e.prop.key_select=!1:(e._setSubInfo(e,this),$(e.elem.results).children("li").removeClass(e.css_class.select),$(this).addClass(e.css_class.select),e._setCssFocusedResults(e))}).click(function(t){e.prop.key_select?e.prop.key_select=!1:(t.preventDefault(),t.stopPropagation(),e._selectCurrentLine(e,!1))})},_ehNaviPaging:function(e){$(e.elem.navi).find(".navi_first").mouseup(function(t){$(e.elem.combo_input).focus(),t.preventDefault(),e._firstPage(e)}),$(e.elem.navi).find(".navi_prev").mouseup(function(t){$(e.elem.combo_input).focus(),t.preventDefault(),e._prevPage(e)}),$(e.elem.navi).find(".navi_page").mouseup(function(t){$(e.elem.combo_input).focus(),t.preventDefault(),e.prop.is_suggest?e.prop.page_suggest=parseInt($(this).text(),10):e.prop.page_all=parseInt($(this).text(),10),e.prop.is_paging=!0,e._suggest(e)}),$(e.elem.navi).find(".navi_next").mouseup(function(t){$(e.elem.combo_input).focus(),t.preventDefault(),e._nextPage(e)}),$(e.elem.navi).find(".navi_last").mouseup(function(t){$(e.elem.combo_input).focus(),t.preventDefault(),e._lastPage(e)})},_ehTextArea:function(){var e=this;e.option.shorten_btn&&$(e.option.shorten_btn).click(function(){e._getShortURL(e)})}},l={_getShortURL:function(e){$(e.elem.combo_input).attr("disabled","disabled");for(var t=$(e.elem.combo_input).val(),o=[],s=null;null!==(s=e.option.shorten_reg.exec(t));)o[o.length]=s[1];if(o.length<1)$(e.elem.combo_input).removeAttr("disabled");else{for(var n={},i=0;i<o.length;i++)n["p_"+i]=o[i];$.ajax({dataType:"json",url:e.option.shorten_src,data:n,success:function(o){var s=0,n=t.replace(e.option.shorten_reg,function(){var e=arguments[0].replace(arguments[1],o[s]);return s++,e});$(e.elem.combo_input).val(n),e.prop.prev_value=n,e._disableButtonShort(e)},error:function(t,o,s){e._ajaxErrorNotify(e,s)},complete:function(){$(e.elem.combo_input).removeAttr("disabled").focus()}})}},_ajaxErrorNotify:function(e,t){alert(e.message.ajax_error)}},p={_scrollWindow:function(e,t){var o,s=e._getCurrentLine(e),n=s&&!t?s.offset().top:$(e.elem.container).offset().top;if(e.option.sub_info){var i=$(e.elem.sub_info).children("dl:visible");o=$(i).height()+parseInt($(i).css("border-top-width"))+parseInt($(i).css("border-bottom-width"))}else e.prop.size_li=$(e.elem.results).children("li:first").outerHeight(),o=e.prop.size_li;var a,r=$(window).height(),l=$(window).scrollTop(),p=l+r-o;if($(s).length)if(n<l||o>r)a=n-l;else{if(!(n>p))return;a=n-p}else n<l&&(a=n-l);window.scrollBy(0,a)},_setCssFocusedInput:function(e){$(e.elem.results).addClass(e.css_class.re_off),$(e.elem.combo_input).removeClass(e.css_class.input_off),$(e.elem.sub_info).children("dl").hide()},_setCssFocusedResults:function(e){$(e.elem.results).removeClass(e.css_class.re_off),$(e.elem.combo_input).addClass(e.css_class.input_off)},_enableButtonShort:function(e){$(e.option.shorten_btn).removeClass(e.css_class.btn_short_off).removeAttr("disabled")},_disableButtonShort:function(e){$(e.option.shorten_btn).addClass(e.css_class.btn_short_off).attr("disabled","disabled")}},_={_setTimerCheckValue:function(e){e.prop.timer_valchange=setTimeout(function(){e._checkValue(e)},500)},_checkValue:function(e){var t=$(e.elem.combo_input).val();if(t!=e.prop.prev_value)if(e.prop.prev_value=t,"textarea"==e.option.plugin_type){e._findUrlToShorten(e);var o=e._findTag(e,t);o&&(e._setTextAreaNewSearch(e,o),e._suggest(e))}else $(e.elem.combo_input).removeAttr("sub_info"),"textarea"!=e.option.plugin_type&&$(e.elem.hidden).val(""),e.option.select_only&&e._setButtonAttrDefault(),e.prop.page_suggest=1,e.prop.is_suggest=!0,e._suggest(e);else if("textarea"==e.option.plugin_type&&$(e.elem.result_area).is(":visible")){var s=e._findTag(e,t);s?s.str==e.prop.tag.str&&s.pos_left==e.prop.tag.pos_left||(e._setTextAreaNewSearch(e,s),e._suggest(e)):e._hideResults(e)}e._setTimerCheckValue(e)},_setTextAreaNewSearch:function(e,t){e.prop.tag=t,e.prop.page_suggest=1,e.option.search_field=e.option.tags[e.prop.tag.type].search_field,e.option.order_by=e.option.tags[e.prop.tag.type].order_by,e.option.primary_key=e.option.tags[e.prop.tag.type].primary_key,e.option.db_table=e.option.tags[e.prop.tag.type].db_table,e.option.field=e.option.tags[e.prop.tag.type].field,e.option.sub_info=e.option.tags[e.prop.tag.type].sub_info,e.option.sub_as=e.option.tags[e.prop.tag.type].sub_as,e.option.show_field=e.option.tags[e.prop.tag.type].show_field,e.option.hide_field=e.option.tags[e.prop.tag.type].hide_field},_findUrlToShorten:function(e){for(var t=null;null!==e.option.shorten_reg.exec($(e.elem.combo_input).val());){t=!0,e.option.shorten_reg.lastIndex=0;break}t?e._enableButtonShort(e):e._disableButtonShort(e)},_findTag:function(e,t){for(var o,s,n,i,a,r=e._getCaretPosition($(e.elem.combo_input).get(0)),l=0;l<e.option.tags.length;l++)if(o=(o=t.substring(0,r)).match(e.option.tags[l].pattern.reg_left))return(s=r-(o=o[1]).length)<0&&(s=0),(n=(n=t.substring(r,t.length)).match(e.option.tags[l].pattern.reg_right))?i=r+(n=n[1]).length:(n="",i=r),a=o+""+n,e.prop.is_suggest=""!==a,{type:l,str:a,pos_left:s,pos_right:i};return!1},_getCaretPosition:function(e){var t=0;if(document.selection){e.focus();var o=document.selection.createRange();o.moveStart("character",-e.value.length),t=o.text.length}else(e.selectionStart||"0"==e.selectionStart)&&(t=e.selectionStart);return t},_setCaretPosition:function(e,t){var o=$(e.elem.combo_input).get(0);if(o.setSelectionRange)o.focus(),o.setSelectionRange(t,t);else if(o.createTextRange){var s=o.createTextRange();s.collapse(!0),s.moveEnd("character",t),s.moveStart("character",t),s.select()}}},c={_processKey:function(e,t){if($.inArray(t.keyCode,[27,38,40,9])>-1&&$(e.elem.result_area).is(":visible")||$.inArray(t.keyCode,[37,39,13,9])>-1&&e._getCurrentLine(e)||40==t.keyCode&&"textarea"!=e.option.plugin_type)switch(t.preventDefault(),t.stopPropagation(),t.cancelBubble=!0,t.returnValue=!1,t.keyCode){case 37:t.shiftKey?e._firstPage(e):e._prevPage(e);break;case 38:e.prop.key_select=!0,e._prevLine(e);break;case 39:t.shiftKey?e._lastPage(e):e._nextPage(e);break;case 40:$(e.elem.results).children("li").length?(e.prop.key_select=!0,e._nextLine(e)):(e.prop.is_suggest=!1,e._suggest(e));break;case 9:e.prop.key_paging=!0,e._hideResults(e);break;case 13:e._selectCurrentLine(e,!0);break;case 27:e.prop.key_paging=!0,e._hideResults(e)}else 16!=t.keyCode&&e._setCssFocusedInput(e),e._checkValue(e)},_abortAjax:function(e){e.prop.xhr&&(e.prop.xhr.abort(),e.prop.xhr=!1)}},u={_suggest:function(e){var t;if("textarea"!=e.option.plugin_type){if((t=e.prop.is_suggest?$.trim($(e.elem.combo_input).val()):"").length<1&&e.prop.is_suggest)return void e._hideResults(e);t=t.split(/[\s ]+/)}else t=[e.prop.tag.str];if(e._abortAjax(e),e._setLoading(e),$(e.elem.sub_info).children("dl").hide(),e.prop.is_paging){var o=e._getCurrentLine(e);e.prop.is_paging=o?$(e.elem.results).children("li").index(o):-1}else e.prop.is_suggest||(e.prop.is_paging=0);var s=e.prop.is_suggest?e.prop.page_suggest:e.prop.page_all;"object"==typeof e.option.source?e._searchForJson(e,t,s):e._searchForDb(e,t,s)},_setLoading:function(e){$(e.elem.navi_info).text(e.message.loading),""===$(e.elem.results).html()&&($(e.elem.navi).children("p").empty(),e._calcWidthResults(e),$(e.elem.container).addClass(e.css_class.container_open))}},d={_searchForDb:function(e,t,o){e.prop.xhr=$.ajax({dataType:"json",url:e.option.source,data:{q_word:t,page_num:o,per_page:e.option.per_page,search_field:e.option.search_field,and_or:e.option.and_or,order_by:e.option.order_by,db_table:e.option.db_table},success:function(s){if(s.candidate=[],s.primary_key=[],s.subinfo=[],"object"!=typeof s.result)return e.prop.xhr=null,void e._notFoundSearch(e);s.cnt_page=s.result.length;for(var n=0;n<s.cnt_page;n++)for(var i in s.subinfo[n]=[],s.result[n])if(i==e.option.primary_key&&s.primary_key.push(s.result[n][i]),i==e.option.field)s.candidate.push(s.result[n][i]);else if(-1==$.inArray(i,e.option.hide_field)){if(""!==e.option.show_field&&-1==$.inArray("*",e.option.show_field)&&-1==$.inArray(i,e.option.show_field))continue;s.subinfo[n][i]=s.result[n][i]}delete s.result,e._prepareResults(e,s,t,o)},error:function(t,o,s){"abort"!=o&&(e._hideResults(e),e._ajaxErrorNotify(e,s))},complete:function(){e.prop.xhr=null}})}},g={_searchForJson:function(e,t,o){var s=[],n=[],i=[],a={},r=0,l=[];do{n[r]=t[r].replace(/\W/g,"\\$&").toString(),l[r]=new RegExp(n[r],"gi"),r++}while(r<t.length);for(r=0;r<e.option.source.length;r++){for(var p=!1,_=0;_<l.length;_++)if(e.option.source[r][e.option.field].match(l[_])){if(p=!0,"OR"==e.option.and_or)break}else if(p=!1,"AND"==e.option.and_or)break;p&&s.push(e.option.source[r])}if(void 0!==s.length){a.cnt_whole=s.length;var c=new RegExp("^"+n[0]+"$","gi"),u=new RegExp("^"+n[0],"gi"),d=[],g=[],h=[];for(r=0;r<s.length;r++)s[r][e.option.order_by[0][0]].match(c)?d.push(s[r]):s[r][e.option.order_by[0][0]].match(u)?g.push(s[r]):h.push(s[r]);e.option.order_by[0][1].match(/^asc$/i)?(d=e._sortAsc(e,d),g=e._sortAsc(e,g),h=e._sortAsc(e,h)):(d=e._sortDesc(e,d),g=e._sortDesc(e,g),h=e._sortDesc(e,h)),i=i.concat(d).concat(g).concat(h);for(var f=(o-1)*e.option.per_page,m=f+e.option.per_page,b=(r=f,0);r<m&&void 0!==i[r];r++,b++)for(var v in i[r])if(v==e.option.primary_key&&(void 0===a.primary_key&&(a.primary_key=[]),a.primary_key.push(i[r][v])),v==e.option.field)void 0===a.candidate&&(a.candidate=[]),a.candidate.push(i[r][v]);else if(-1==$.inArray(v,e.option.hide_field)){if(""!==e.option.show_field&&-1==$.inArray("*",e.option.show_field)&&-1==$.inArray(v,e.option.show_field))continue;void 0===a.subinfo&&(a.subinfo=[]),void 0===a.subinfo[b]&&(a.subinfo[b]=[]),a.subinfo[b][v]=i[r][v]}void 0===a.candidate&&(a.candidate=[]),a.cnt_page=a.candidate.length,e._prepareResults(e,a,t,o)}else e._notFoundSearch(e)}},h={_sortAsc:function(e,t){return t.sort(function(t,o){return t[e.option.order_by[0][0]].localeCompare(o[e.option.order_by[0][0]])}),t},_sortDesc:function(e,t){return t.sort(function(t,o){return o[e.option.order_by[0][0]].localeCompare(t[e.option.order_by[0][0]])}),t},_notFoundSearch:function(e){$(e.elem.navi_info).text(e.message.not_found),$(e.elem.navi_p).hide(),$(e.elem.results).empty(),$(e.elem.sub_info).empty(),e._calcWidthResults(e),$(e.elem.container).addClass(e.css_class.container_open),e._setCssFocusedInput(e)}},f={_prepareResults:function(e,t,o,s){if(e._setNavi(e,t.cnt_whole,t.cnt_page,s),t.subinfo&&e.option.sub_info||(t.subinfo=!1),t.primary_key||(t.primary_key=!1),e.option.select_only&&1===t.candidate.length&&t.candidate[0]==o[0]&&("textarea"!=e.option.plugin_type&&$(e.elem.hidden).val(t.primary_key[0]),this._setButtonAttrDefault()),e._displayResults(e,t.candidate,t.subinfo,t.primary_key),!1===e.prop.is_paging)e._setCssFocusedInput(e);else{var n=e.prop.is_paging,i=$(e.elem.results).children("li").length-1;n>i&&(n=i);var a=$(e.elem.results).children("li").eq(n);$(a).addClass(e.css_class.select),e._setSubInfo(e,a),e.prop.is_paging=!1,e._setCssFocusedResults(e)}},_setNavi:function(e,t,o,s){var n=e.option.per_page*(s-1)+1,i=n+o-1,a=e.message.page_info.replace("cnt_whole",t).replace("num_page_top",n).replace("num_page_end",i);$(e.elem.navi_info).text(a);var r=Math.ceil(t/e.option.per_page);if(r>1){$(e.elem.navi_p).empty(),e.prop.is_suggest?e.prop.max_suggest=r:e.prop.max_all=r;for(var l=s-Math.ceil((e.option.navi_num-1)/2),p=s+Math.floor((e.option.navi_num-1)/2);l<1;)l++,p++;for(;p>r;)p--;for(;p-l<e.option.navi_num-1&&l>1;)l--;1==s?(e.option.navi_simple||$("<span>").text("<< 1").addClass("page_end").appendTo(e.elem.navi_p),$("<span>").text(e.message.prev).addClass("page_end").appendTo(e.elem.navi_p)):(e.option.navi_simple||$("<a>").attr({href:"javascript:void(0)",class:"navi_first"}).text("<< 1").attr("title",e.message.first_title).appendTo(e.elem.navi_p),$("<a>").attr({href:"javascript:void(0)",class:"navi_prev",title:e.message.prev_title}).text(e.message.prev).appendTo(e.elem.navi_p));for(var _=l;_<=p;_++){var c=_==s?'<span class="current">'+_+"</span>":_;$("<a>").attr({href:"javascript:void(0)",class:"navi_page"}).html(c).appendTo(e.elem.navi_p)}s==r?($("<span>").text(e.message.next).addClass("page_end").appendTo(e.elem.navi_p),e.option.navi_simple||$("<span>").text(r+" >>").addClass("page_end").appendTo(e.elem.navi_p)):($("<a>").attr({href:"javascript:void(0)",class:"navi_next"}).text(e.message.next).attr("title",e.message.next_title).appendTo(e.elem.navi_p),e.option.navi_simple||$("<a>").attr({href:"javascript:void(0)",class:"navi_last"}).text(r+" >>").attr("title",e.message.last_title).appendTo(e.elem.navi_p)),$(e.elem.navi_p).show(),e._ehNaviPaging(e)}else $(e.elem.navi_p).hide()},_setSubInfo:function(e,t){if(e.option.sub_info){e.prop.size_results=($(e.elem.results).outerHeight()-$(e.elem.results).height())/2,e.prop.size_navi=$(e.elem.navi).outerHeight(),e.prop.size_li=$(e.elem.results).children("li:first").outerHeight(),e.prop.size_left=$(e.elem.results).outerWidth();var o=$(e.elem.results).children("li").index(t);$(e.elem.sub_info).children("dl").hide();var s=0;"none"!=$(e.elem.navi).css("display")&&(s+=e.prop.size_navi),s+=e.prop.size_results+e.prop.size_li*o;var n=e.prop.size_left;s+="px",n+="px",$(e.elem.sub_info).children("dl").eq(o).css({position:"absolute",top:s,left:n,display:"block"})}}},m={_displayResults:function(e,t,o,s){$(e.elem.results).empty(),$(e.elem.sub_info).empty();for(var n=0;n<t.length;n++){var i=$("<li>").text(t[n]).attr({pkey:s[n],title:t[n]});if("textarea"!=e.option.plugin_type&&s[n]==$(e.elem.hidden).val()&&$(i).addClass(e.css_class.selected),$(e.elem.results).append(i),o){var a,r,l=[],p=$("<dl>");for(var _ in o[n]){var c=_.replace("'","\\'");null===o[n][_]?o[n][_]="":o[n][_]+="";var u=o[n][_].replace("'","\\'");l.push("'"+c+"':'"+u+"'"),a=e.option.sub_as[_]?e.option.sub_as[_]:_,a=$("<dt>").text(a),"simple"==e.option.sub_info&&$(a).addClass("hide"),p.append(a),r=$("<dd>").text(o[n][_]),p.append(r)}l="{"+l.join(",")+"}",$(i).attr("sub_info",l),$(e.elem.sub_info).append(p),"simple"==e.option.sub_info&&""===p.children("dd").text()&&p.addClass("ac_dl_empty")}}e._calcWidthResults(e),$(e.elem.container).addClass(e.css_class.container_open),e._ehResults(),"combobox"==e.option.plugin_type&&$(e.elem.button).attr("title",e.message.close_btn)},_calcWidthResults:function(e){var t;if(t="combobox"==e.option.plugin_type?$(e.elem.combo_input).outerWidth()+$(e.elem.button).outerWidth():$(e.elem.combo_input).outerWidth(),$(e.elem.container).width(t),"static"==$(e.elem.container).css("position")){var o=$(e.elem.combo_input).offset();$(e.elem.result_area).css({top:o.top+$(e.elem.combo_input).outerHeight()+"px",left:o.left+"px"})}else $(e.elem.result_area).css({top:$(e.elem.combo_input).outerHeight()+"px",left:"0px"});$(e.elem.result_area).width($(e.elem.container).width()-($(e.elem.result_area).outerWidth()-$(e.elem.result_area).innerWidth())).show()},_hideResults:function(e){e.prop.key_paging&&(e._scrollWindow(e,!0),e.prop.key_paging=!1),e._setCssFocusedInput(e),$(e.elem.results).empty(),$(e.elem.sub_info).empty(),$(e.elem.result_area).hide(),$(e.elem.container).removeClass(e.css_class.container_open),e._abortAjax(e),e._setButtonAttrDefault()}},b={_selectCurrentLine:function(e,t){e._scrollWindow(e,!0);var o=e._getCurrentLine(e);if(o){if("textarea"!=e.option.plugin_type)$(e.elem.combo_input).val($(o).text()),e.option.sub_info&&$(e.elem.combo_input).attr("sub_info",$(o).attr("sub_info")),e.option.select_only&&e._setButtonAttrDefault(),$(e.elem.hidden).val($(o).attr("pkey"));else{var s,n,i,a,r=e.prop.prev_value.substring(0,e.prop.tag.pos_left),l=e.prop.prev_value.substring(e.prop.tag.pos_right);s=$(o).text(),e.option.tags[e.prop.tag.type].space[0]&&!r.match(e.option.tags[e.prop.tag.type].pattern.space_left)&&(n=e.option.tags[e.prop.tag.type].pattern.left.length,i=r.length,r=r.substring(0,i-n)+" "+r.substring(i-n)),l.match(e.option.tags[e.prop.tag.type].pattern.comp_right)||(l=e.option.tags[e.prop.tag.type].pattern.right+l),e.option.tags[e.prop.tag.type].space[1]&&!l.match(e.option.tags[e.prop.tag.type].pattern.space_right)&&(n=e.option.tags[e.prop.tag.type].pattern.right.length,l=l.substring(0,n)+" "+l.substring(n)),$(e.elem.combo_input).val(r+""+s+l),a=r.length+s.length,e._setCaretPosition(e,a)}e.prop.prev_value=$(e.elem.combo_input).val(),e._hideResults(e)}e.option.bind_to&&$(e.elem.combo_input).trigger(e.option.bind_to,t),$(e.elem.combo_input).focus(),$(e.elem.combo_input).change(),e._setCssFocusedInput(e)},_getCurrentLine:function(e){if($(e.elem.result_area).is(":hidden"))return!1;var t=$(e.elem.results).children("li."+e.css_class.select);return!!$(t).length&&t}},v={_nextLine:function(e){var t,o=e._getCurrentLine(e);if(o?(t=$(e.elem.results).children("li").index(o),$(o).removeClass(e.css_class.select)):t=-1,++t<$(e.elem.results).children("li").length){var s=$(e.elem.results).children("li").eq(t);e._setSubInfo(e,s),$(s).addClass(e.css_class.select),e._setCssFocusedResults(e)}else e._setCssFocusedInput(e);e._scrollWindow(e,!1)},_prevLine:function(e){var t,o=e._getCurrentLine(e);if(o?(t=$(e.elem.results).children("li").index(o),$(o).removeClass(e.css_class.select)):t=$(e.elem.results).children("li").length,--t>-1){var s=$(e.elem.results).children("li").eq(t);e._setSubInfo(e,s),$(s).addClass(e.css_class.select),e._setCssFocusedResults(e)}else e._setCssFocusedInput(e);e._scrollWindow(e,!1)}};$.fn.ajaxComboBox=function(e,t){var o=[];return this.each(function(){o.push(new $.ajaxComboBox(this,e,t))}),void 0!==t&&void 0!==t.instance&&t.instance?$(o):this},$.ajaxComboBox=function(e,t,o){this.option=this._setOption(t,o),this._setMessage(),this._setCssClass(),this._setProp(),this._setElem(e),this._setButtonAttrDefault(),this._setInitRecord(),this._ehButton(),this._ehComboInput(),this._ehWhole(),this._ehTextArea(),this.option.shorten_btn&&this._findUrlToShorten(this)},$.extend($.ajaxComboBox.prototype,s,{_setMessage:function(){var e;switch(this.option.lang){case"de":e={add_btn:"Hinzufügen-Button",add_title:"Box hinzufügen",del_btn:"Löschen-Button",del_title:"Box löschen",next:"Nächsten",next_title:"Nächsten"+this.option.per_page+" (Pfeil-rechts)",prev:"Vorherigen",prev_title:"Vorherigen"+this.option.per_page+" (Pfeil-links)",first_title:"Ersten (Umschalt + Pfeil-links)",last_title:"Letzten (Umschalt + Pfeil-rechts)",get_all_btn:"alle (Pfeil-runter)",get_all_alt:"(Button)",close_btn:"Schließen (Tab)",close_alt:"(Button)",loading:"lade...",loading_alt:"(lade)",page_info:"num_page_top - num_page_end von cnt_whole",select_ng:"Achtung: Bitte wählen Sie aus der Liste aus.",select_ok:"OK : Richtig ausgewählt.",not_found:"nicht gefunden",ajax_error:"Bei der Verbindung zum Server ist ein Fehler aufgetreten. (ajax-combobox)"};break;case"en":e={add_btn:"Add button",add_title:"add a box",del_btn:"Del button",del_title:"delete a box",next:"Next",next_title:"Next"+this.option.per_page+" (Right key)",prev:"Prev",prev_title:"Prev"+this.option.per_page+" (Left key)",first_title:"First (Shift + Left key)",last_title:"Last (Shift + Right key)",get_all_btn:"Get All (Down key)",get_all_alt:"(button)",close_btn:"Close (Tab key)",close_alt:"(button)",loading:"loading...",loading_alt:"(loading)",page_info:"num_page_top - num_page_end of cnt_whole",select_ng:"Attention : Please choose from among the list.",select_ok:"OK : Correctly selected.",not_found:"not found",ajax_error:"An error occurred while connecting to server. (ajax-combobox)"};break;case"es":e={add_btn:"Agregar boton",add_title:"Agregar una opcion",del_btn:"Borrar boton",del_title:"Borrar una opcion",next:"Siguiente",next_title:"Proximas "+this.option.per_page+" (tecla derecha)",prev:"Anterior",prev_title:"Anteriores "+this.option.per_page+" (tecla izquierda)",first_title:"Primera (Shift + Left)",last_title:"Ultima (Shift + Right)",get_all_btn:"Ver todos (tecla abajo)",get_all_alt:"(boton)",close_btn:"Cerrar (tecla TAB)",close_alt:"(boton)",loading:"Cargando...",loading_alt:"(Cargando)",page_info:"num_page_top - num_page_end de cnt_whole",select_ng:"Atencion: Elija una opcion de la lista.",select_ok:"OK: Correctamente seleccionado.",not_found:"no encuentre",ajax_error:"Un error ocurrió mientras conectando al servidor. (ajax-combobox)"};break;case"pt-br":e={add_btn:"Adicionar botão",add_title:"Adicionar uma caixa",del_btn:"Apagar botão",del_title:"Apagar uma caixa",next:"Próxima",next_title:"Próxima "+this.option.per_page+" (tecla direita)",prev:"Anterior",prev_title:"Anterior "+this.option.per_page+" (tecla esquerda)",first_title:"Primeira (Shift + Left)",last_title:"Última (Shift + Right)",get_all_btn:"Ver todos (Seta para baixo)",get_all_alt:"(botão)",close_btn:"Fechar (tecla TAB)",close_alt:"(botão)",loading:"Carregando...",loading_alt:"(Carregando)",page_info:"num_page_top - num_page_end de cnt_whole",select_ng:"Atenção: Escolha uma opção da lista.",select_ok:"OK: Selecionado Corretamente.",not_found:"não encontrado",ajax_error:"Um erro aconteceu enquanto conectando a servidor. (ajax-combobox)"};break;default:e={add_btn:"追加ボタン",add_title:"入力ボックスを追加します",del_btn:"削除ボタン",del_title:"入力ボックスを削除します",next:"次へ",next_title:"次の"+this.option.per_page+"件 (右キー)",prev:"前へ",prev_title:"前の"+this.option.per_page+"件 (左キー)",first_title:"最初のページへ (Shift + 左キー)",last_title:"最後のページへ (Shift + 右キー)",get_all_btn:"全件取得 (下キー)",get_all_alt:"画像:ボタン",close_btn:"閉じる (Tabキー)",close_alt:"画像:ボタン",loading:"読み込み中...",loading_alt:"画像:読み込み中...",page_info:"num_page_top - num_page_end 件 (全 cnt_whole 件)",select_ng:"注意 : リストの中から選択してください",select_ok:"OK : 正しく選択されました。",not_found:"(0 件)",ajax_error:"サーバとの通信でエラーが発生しました。(ajax-combobox)"}}this.message=e}},n,i,a,r,l,p,_,c,u,d,g,h,f,m,{_firstPage:function(e){e.prop.is_suggest?e.prop.page_suggest>1&&(e.prop.page_suggest=1,e.prop.is_paging=!0,e._suggest(e)):e.prop.page_all>1&&(e.prop.page_all=1,e.prop.is_paging=!0,e._suggest(e))},_prevPage:function(e){e.prop.is_suggest?e.prop.page_suggest>1&&(e.prop.page_suggest--,e.prop.is_paging=!0,e._suggest(e)):e.prop.page_all>1&&(e.prop.page_all--,e.prop.is_paging=!0,e._suggest(e))},_nextPage:function(e){e.prop.is_suggest?e.prop.page_suggest<e.prop.max_suggest&&(e.prop.page_suggest++,e.prop.is_paging=!0,e._suggest(e)):e.prop.page_all<e.prop.max_all&&(e.prop.page_all++,e.prop.is_paging=!0,e._suggest(e))},_lastPage:function(e){e.prop.is_suggest?e.prop.page_suggest<e.prop.max_suggest&&(e.prop.page_suggest=e.prop.max_suggest,e.prop.is_paging=!0,e._suggest(e)):e.prop.page_all<e.prop.max_all&&(e.prop.page_all=e.prop.max_all,e.prop.is_paging=!0,e._suggest(e))}},b,v)}]);