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