﻿(function(a){a.PaginationCalculator=function(b,c){this.maxentries=b;this.opts=c};a.extend(a.PaginationCalculator.prototype,{numPages:function(){return Math.ceil(this.maxentries/this.opts.items_per_page)},getInterval:function(b){var d=Math.floor(this.opts.num_display_entries/2);var e=this.numPages();var g=e-this.opts.num_display_entries;var f=b>d?Math.max(Math.min(b-d,g),0):0;var c=b>d?Math.min(b+d+(this.opts.num_display_entries%2),e):Math.min(this.opts.num_display_entries,e);return{start:f,end:c}}});a.PaginationRenderers={};a.PaginationRenderers.defaultRenderer=function(b,c){this.maxentries=b;this.opts=c;this.pc=new a.PaginationCalculator(b,c)};a.extend(a.PaginationRenderers.defaultRenderer.prototype,{createLink:function(f,c,b){var d,e=this.pc.numPages();f=f<0?0:(f<e?f:e-1);b=a.extend({text:f+1,classes:""},b||{});if(f==c){d=a("<td class='current'>"+b.text+"</td>")}else{d=a("<td><a>"+b.text+"</a></td>").attr("href",this.opts.link_to.replace(/__id__/,f))}if(b.classes){d.addClass(b.classes)}d.data("page_id",f);return d},appendRange:function(b,c,g,d,f){var e;for(e=g;e<d;e++){this.createLink(e,c,f).appendTo(b)}},getLinks:function(c,e){var b,d,g=this.pc.getInterval(c),h=this.pc.numPages(),f=a("<table class='pagination'></table>");tr=a("<tr></tr>");f.append(tr);if(this.opts.prev_text&&(c>0||this.opts.prev_show_always)){tr.append(this.createLink(c-1,c,{text:this.opts.prev_text,classes:"prev"}))}if(g.start>0&&this.opts.num_edge_entries>0){d=Math.min(this.opts.num_edge_entries,g.start);this.appendRange(tr,c,0,d,{classes:"sp"});if(this.opts.num_edge_entries<g.start&&this.opts.ellipse_text){jQuery("<td>"+this.opts.ellipse_text+"</td>").appendTo(tr)}}this.appendRange(tr,c,g.start,g.end);if(g.end<h&&this.opts.num_edge_entries>0){if(h-this.opts.num_edge_entries>g.end&&this.opts.ellipse_text){jQuery("<td>"+this.opts.ellipse_text+"</td>").appendTo(tr)}b=Math.max(h-this.opts.num_edge_entries,g.end);this.appendRange(tr,c,b,h,{classes:"ep"})}if(this.opts.next_text&&(c<h-1||this.opts.next_show_always)){tr.append(this.createLink(c+1,c,{text:this.opts.next_text,classes:"next"}))}a("a",f).click(e);return f}});a.fn.pagination=function(e,g){g=jQuery.extend({items_per_page:10,num_display_entries:11,current_page:0,num_edge_entries:0,link_to:"#",prev_text:"Prev",next_text:"Next",ellipse_text:"...",prev_show_always:true,next_show_always:true,renderer:"defaultRenderer",load_first_page:false,callback:function(){return false}},g||{});var b=this,j,d,c;function h(m){var n,o=a(m.target).data("page_id"),l=k(o);if(!l){m.stopPropagation()}return l}function k(m){b.data("current_page",m);d=j.getLinks(m,h);b.empty();d.appendTo(b);var l=g.callback(m,b);return l}c=g.current_page;b.data("current_page",c);e=(!e||e<0)?1:e;g.items_per_page=(!g.items_per_page||g.items_per_page<0)?1:g.items_per_page;if(!a.PaginationRenderers[g.renderer]){throw new ReferenceError("Pagination renderer '"+g.renderer+"' was not found in jQuery.PaginationRenderers object.")}j=new a.PaginationRenderers[g.renderer](e,g);var i=new a.PaginationCalculator(e,g);var f=i.numPages();b.bind("setPage",{numPages:f},function(l,m){if(m>=0&&m<l.data.numPages){k(m);return false}});b.bind("prevPage",function(m){var l=a(this).data("current_page");if(l>0){k(l-1)}return false});b.bind("nextPage",{numPages:f},function(m){var l=a(this).data("current_page");if(l<m.data.numPages-1){k(l+1)}return false});d=j.getLinks(c,h);b.empty();d.appendTo(b);if(g.load_first_page){g.callback(c,b)}}})(jQuery);
