!function(a,b){function g(a){throw new Error("Pagination: "+a)}function h(a){a.dataSource||g('"dataSource" is required.'),"string"==typeof a.dataSource?"undefined"==typeof a.totalNumber?g('"totalNumber" is required.'):b.isNumeric(a.totalNumber)||g('"totalNumber" is incorrect. (Number)'):f.isObject(a.dataSource)&&("undefined"==typeof a.locator?g('"dataSource" is an Object, please specify "locator".'):"string"==typeof a.locator||b.isFunction(a.locator)||g(""+a.locator+" is incorrect. (String | Function)"))}function i(a){var c=["go","previous","next","disable","enable","refresh","show","hide","destroy"];b.each(c,function(b,c){a.off(e+c)}),a.data("pagination",{}),b(".paginationjs",a).remove()}function j(a,b){return("object"==(b=typeof a)?null==a&&"null"||Object.prototype.toString.call(a).slice(8,-1):b).toLowerCase()}var c,d,e,f;"undefined"==typeof b&&g("Pagination requires jQuery."),c="pagination",d="addHook",e="__pagination-",b.fn.pagination&&(c="pagination2"),b.fn[c]=function(c){var d,j,k,l;if("undefined"==typeof c)return this;if(d=b(this),j={initialize:function(){var c,a=this;d.data("pagination")||d.data("pagination",{}),a.callHook("beforeInit")!==!1&&(d.data("pagination").initialized&&b(".paginationjs",d).remove(),a.disabled=!!l.disabled,c=a.model={pageRange:l.pageRange,pageSize:l.pageSize},a.parseDataSource(l.dataSource,function(b){if(a.sync=f.isArray(b),a.sync&&(c.totalNumber=l.totalNumber=b.length),c.totalPage=a.getTotalPage(),!(l.hideWhenLessThanOnePage&&c.totalPage<=1)){var e=a.render(!0);l.className&&e.addClass(l.className),c.el=e,d["bottom"===l.position?"append":"prepend"](e),a.observer(),d.data("pagination").initialized=!0,a.callHook("afterInit",e)}}))},render:function(a){var g,h,i,j,k,c=this,d=c.model,e=d.el||b('<div class="paginationjs"></div>'),f=a!==!0;return c.callHook("beforeRender",f),g=d.pageNumber||l.pageNumber,h=l.pageRange,i=d.totalPage,j=g-h,k=g+h,k>i&&(k=i,j=i-2*h,j=1>j?1:j),1>=j&&(j=1,k=Math.min(2*h+1,i)),e.html(c.createTemplate({currentPage:g,pageRange:h,totalPage:i,rangeStart:j,rangeEnd:k})),c.callHook("afterRender",f),e},createTemplate:function(a){var I,J,c=this,d=a.currentPage,e=a.totalPage,f=a.rangeStart,g=a.rangeEnd,h=l.totalNumber,i=l.showPrevious,j=l.showNext,k=l.showPageNumbers,m=l.showNavigator,n=l.showGoInput,o=l.showGoButton,p=l.pageLink,q=l.prevText,r=l.nextText,s=l.ellipsisText,t=l.goButtonText,u=l.classPrefix,v=l.activeClassName,w=l.disableClassName,x=l.ulClassName,y=b.isFunction(l.formatNavigator)?l.formatNavigator():l.formatNavigator,z=b.isFunction(l.formatGoInput)?l.formatGoInput():l.formatGoInput,A=b.isFunction(l.formatGoButton)?l.formatGoButton():l.formatGoButton,B=b.isFunction(l.autoHidePrevious)?l.autoHidePrevious():l.autoHidePrevious,C=b.isFunction(l.autoHideNext)?l.autoHideNext():l.autoHideNext,D=b.isFunction(l.header)?l.header():l.header,E=b.isFunction(l.footer)?l.footer():l.footer,F="",G='<input type="text" class="J-paginationjs-go-pagenumber">',H='<input type="button" class="J-paginationjs-go-button" value="'+t+'">';if(D&&(I=c.replaceVariables(D,{currentPage:d,totalPage:e,totalNumber:h}),F+=I),i||k||j){if(F+='<div class="paginationjs-pages">',F+=x?'<ul class="'+x+'">':"<ul>",i&&(1===d?B||(F+='<li class="'+u+"-prev "+w+'"><a>'+q+"</a></li>"):F+='<li class="'+u+'-prev J-paginationjs-previous" data-num="'+(d-1)+'" title="Previous page"><a href="'+p+'">'+q+"</a></li>"),k){if(2>=f)for(J=1;f>J;J++)F+=J==d?'<li class="'+u+"-page J-paginationjs-page "+v+'" data-num="'+J+'"><a>'+J+"</a></li>":'<li class="'+u+'-page J-paginationjs-page" data-num="'+J+'"><a href="'+p+'">'+J+"</a></li>";else l.showFirstOnEllipsisShow&&(F+='<li class="'+u+"-page "+u+'-first J-paginationjs-page" data-num="1"><a href="'+p+'">1</a></li>'),F+='<li class="'+u+"-ellipsis "+w+'"><a>'+s+"</a></li>";for(J=f;g>=J;J++)F+=J==d?'<li class="'+u+"-page J-paginationjs-page "+v+'" data-num="'+J+'"><a>'+J+"</a></li>":'<li class="'+u+'-page J-paginationjs-page" data-num="'+J+'"><a href="'+p+'">'+J+"</a></li>";if(g>=e-2)for(J=g+1;e>=J;J++)F+='<li class="'+u+'-page J-paginationjs-page" data-num="'+J+'"><a href="'+p+'">'+J+"</a></li>";else F+='<li class="'+u+"-ellipsis "+w+'"><a>'+s+"</a></li>",l.showLastOnEllipsisShow&&(F+='<li class="'+u+"-page "+u+'-last J-paginationjs-page" data-num="'+e+'"><a href="'+p+'">'+e+"</a></li>")}j&&(d==e?C||(F+='<li class="'+u+"-next "+w+'"><a>'+r+"</a></li>"):F+='<li class="'+u+'-next J-paginationjs-next" data-num="'+(d+1)+'" title="Next page"><a href="'+p+'">'+r+"</a></li>"),F+="</ul></div>"}return m&&y&&(I=c.replaceVariables(y,{currentPage:d,totalPage:e,totalNumber:h}),F+='<div class="'+u+'-nav J-paginationjs-nav">'+I+"</div>"),n&&z&&(I=c.replaceVariables(z,{currentPage:d,totalPage:e,totalNumber:h,input:G}),F+='<div class="'+u+'-go-input">'+I+"</div>"),o&&A&&(I=c.replaceVariables(A,{currentPage:d,totalPage:e,totalNumber:h,button:H}),F+='<div class="'+u+'-go-button">'+I+"</div>"),E&&(I=c.replaceVariables(E,{currentPage:d,totalPage:e,totalNumber:h}),F+=I),F},go:function(a,c){function o(a){if(e.callHook("beforePaging",h)===!1)return!1;if(g.direction="undefined"==typeof g.pageNumber?0:h>g.pageNumber?1:-1,g.pageNumber=h,e.render(),e.disabled&&!e.sync&&e.enable(),d.data("pagination").model=g,b.isFunction(l.formatResult)){var i=b.extend(!0,[],a);f.isArray(a=l.formatResult(i))||(a=i)}d.data("pagination").currentPageData=a,e.doCallback(a,c),e.callHook("afterPaging",h),1==h&&e.callHook("afterIsFirstPage"),h==g.totalPage&&e.callHook("afterIsLastPage")}var h,i,j,k,m,n,e=this,g=e.model;if(!(e.disabled||(h=a,i=l.pageSize,j=g.totalPage,h=parseInt(h),!h||1>h||h>j))){if(e.sync)return o(e.getDataSegment(h)),void 0;k={},m=l.alias||{},k[m.pageSize?m.pageSize:"pageSize"]=i,k[m.pageNumber?m.pageNumber:"pageNumber"]=h,n={type:"get",cache:!1,data:{},contentType:"application/x-www-form-urlencoded; charset=UTF-8",dataType:"json",async:!0},b.extend(!0,n,l.ajax),b.extend(n.data||{},k),n.url=l.dataSource,n.success=function(a){o(e.filterDataByLocator(a))},n.error=function(a,b,c){l.formatAjaxError&&l.formatAjaxError(a,b,c),e.enable()},e.disable(),b.ajax(n)}},doCallback:function(a,c){var d=this,e=d.model;b.isFunction(c)?c(a,e):b.isFunction(l.callback)&&l.callback(a,e)},destroy:function(){this.callHook("beforeDestroy")!==!1&&(this.model.el.remove(),d.off(),b("#paginationjs-style").remove(),this.callHook("afterDestroy"))},previous:function(a){this.go(this.model.pageNumber-1,a)},next:function(a){this.go(this.model.pageNumber+1,a)},disable:function(){var a=this,b=a.sync?"sync":"async";a.callHook("beforeDisable",b)!==!1&&(a.disabled=!0,a.model.disabled=!0,a.callHook("afterDisable",b))},enable:function(){var a=this,b=a.sync?"sync":"async";a.callHook("beforeEnable",b)!==!1&&(a.disabled=!1,a.model.disabled=!1,a.callHook("afterEnable",b))},refresh:function(a){this.go(this.model.pageNumber,a)},show:function(){var a=this;a.model.el.is(":visible")||a.model.el.show()},hide:function(){var a=this;a.model.el.is(":visible")&&a.model.el.hide()},replaceVariables:function(a,b){var c,d,e,f;for(d in b)e=b[d],f=new RegExp("<%=\\s*"+d+"\\s*%>","img"),c=(c||a).replace(f,e);return c},getDataSegment:function(a){var b=l.pageSize,c=l.dataSource,d=l.totalNumber,e=b*(a-1)+1,f=Math.min(a*b,d);return c.slice(e-1,f)},getTotalPage:function(){return Math.ceil(l.totalNumber/l.pageSize)},getLocator:function(a){var c;return"string"==typeof a?c=a:b.isFunction(a)?c=a():g('"locator" is incorrect. (String | Function)'),c},filterDataByLocator:function(a){var d,c=this.getLocator(l.locator);if(f.isObject(a)){try{b.each(c.split("."),function(b,c){d=(d?d:a)[c]})}catch(e){}d?f.isArray(d)||g("dataSource."+c+" must be an Array."):g("dataSource."+c+" is undefined.")}return d||a},parseDataSource:function(a,c){var d=this,e=arguments;f.isObject(a)?c(l.dataSource=d.filterDataByLocator(a)):f.isArray(a)?c(l.dataSource=a):b.isFunction(a)?l.dataSource(function(a){b.isFunction(a)&&g('Unexpect parameter of the "done" Function.'),e.callee.call(d,a,c)}):"string"==typeof a?(/^https?|file:/.test(a)&&(l.ajaxDataType="jsonp"),c(a)):g('Unexpect data type of the "dataSource".')},callHook:function(c){var f,e=d.data("pagination"),g=Array.prototype.slice.apply(arguments);return g.shift(),l[c]&&b.isFunction(l[c])&&l[c].apply(a,g)===!1&&(f=!1),e.hooks&&e.hooks[c]&&b.each(e.hooks[c],function(b,c){c.apply(a,g)===!1&&(f=!1)}),f!==!1},observer:function(){var a=this,c=a.model.el;d.on(e+"go",function(c,d,e){d=parseInt(b.trim(d)),d&&(b.isNumeric(d)||g('"pageNumber" is incorrect. (Number)'),a.go(d,e))}),c.delegate(".J-paginationjs-page","click",function(c){var d=b(c.currentTarget),e=b.trim(d.attr("data-num"));if(e&&!d.hasClass(l.disableClassName)&&!d.hasClass(l.activeClassName))return a.callHook("beforePageOnClick",c,e)===!1?!1:(a.go(e),a.callHook("afterPageOnClick",c,e),l.pageLink?void 0:!1)}),c.delegate(".J-paginationjs-previous","click",function(c){var d=b(c.currentTarget),e=b.trim(d.attr("data-num"));if(e&&!d.hasClass(l.disableClassName))return a.callHook("beforePreviousOnClick",c,e)===!1?!1:(a.go(e),a.callHook("afterPreviousOnClick",c,e),l.pageLink?void 0:!1)}),c.delegate(".J-paginationjs-next","click",function(c){var d=b(c.currentTarget),e=b.trim(d.attr("data-num"));if(e&&!d.hasClass(l.disableClassName))return a.callHook("beforeNextOnClick",c,e)===!1?!1:(a.go(e),a.callHook("afterNextOnClick",c,e),l.pageLink?void 0:!1)}),c.delegate(".J-paginationjs-go-button","click",function(){var f=b(".J-paginationjs-go-pagenumber",c).val();return a.callHook("beforeGoButtonOnClick",event,f)===!1?!1:(d.trigger(e+"go",f),a.callHook("afterGoButtonOnClick",event,f),void 0)}),c.delegate(".J-paginationjs-go-pagenumber","keyup",function(f){if(13===f.which){var g=b(f.currentTarget).val();if(a.callHook("beforeGoInputOnEnter",f,g)===!1)return!1;d.trigger(e+"go",g),b(".J-paginationjs-go-pagenumber",c).focus(),a.callHook("afterGoInputOnEnter",f,g)}}),d.on(e+"previous",function(b,c){a.previous(c)}),d.on(e+"next",function(b,c){a.next(c)}),d.on(e+"disable",function(){a.disable()}),d.on(e+"enable",function(){a.enable()}),d.on(e+"refresh",function(b,c){a.refresh(c)}),d.on(e+"show",function(){a.show()}),d.on(e+"hide",function(){a.hide()}),d.on(e+"destroy",function(){a.destroy()}),l.triggerPagingOnInit&&d.trigger(e+"go",Math.min(l.pageNumber,a.model.totalPage))}},d.data("pagination")&&d.data("pagination").initialized===!0){if(b.isNumeric(c))return d.trigger.call(this,e+"go",c,arguments[1]),this;if("string"==typeof c){switch(k=Array.prototype.slice.apply(arguments),k[0]=e+k[0],c){case"previous":case"next":case"go":case"disable":case"enable":case"refresh":case"show":case"hide":case"destroy":d.trigger.apply(this,k);break;case"getSelectedPageNum":return d.data("pagination").model?d.data("pagination").model.pageNumber:d.data("pagination").attributes.pageNumber;case"getTotalPage":return d.data("pagination").model.totalPage;case"getSelectedPageData":return d.data("pagination").currentPageData;case"isDisabled":return d.data("pagination").model.disabled===!0;default:g("Pagination do not provide action: "+c)}return this}i(d)}else f.isObject(c)||g("Illegal options");return l=b.extend({},arguments.callee.defaults,c),h(l),j.initialize(),this},b.fn[c].defaults={totalNumber:1,pageNumber:1,pageSize:10,pageRange:2,showPrevious:!0,showNext:!0,showPageNumbers:!0,showNavigator:!1,showGoInput:!1,showGoButton:!1,pageLink:"",prevText:"&laquo;",nextText:"&raquo;",ellipsisText:"...",goButtonText:"Go",classPrefix:"paginationjs",activeClassName:"active",disableClassName:"disabled",ulClassName:"pagination",inlineStyle:!0,formatNavigator:"<%= currentPage %> / <%= totalPage %>",formatGoInput:"<%= input %>",formatGoButton:"<%= button %>",position:"bottom",autoHidePrevious:!1,autoHideNext:!1,triggerPagingOnInit:!0,hideWhenLessThanOnePage:!1,showFirstOnEllipsisShow:!0,showLastOnEllipsisShow:!0,callback:function(){}},b.fn[d]=function(a,c){var d,e;arguments.length<2&&g("Missing argument."),b.isFunction(c)||g("callback must be a function."),d=b(this),e=d.data("pagination"),e||(d.data("pagination",{}),e=d.data("pagination")),!e.hooks&&(e.hooks={}),e.hooks[a]=e.hooks[a]||[],e.hooks[a].push(c)},b[c]=function(a,c){arguments.length<2&&g("Requires two parameters.");var d;return d="string"!=typeof a&&a instanceof jQuery?a:b(a),d.length?(d.pagination(c),d):void 0},f={},b.each(["Object","Array"],function(a,b){f["is"+b]=function(a){return j(a)===b.toLowerCase()}}),"function"==typeof define&&define.amd&&define(function(){return b})}(this,window.jQuery);