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