/**
 * This jQuery plugin displays pagination links inside the selected elements.
 * 
 * This plugin needs at least jQuery 1.4.2
 *
 * @author Gabriel Birke (birke *at* d-scribe *dot* de)
 * @version 2.0rc
 * @param {int} maxentries Number of entries to paginate
 * @param {Object} opts Several options (see README for documentation)
 * @return {Object} jQuery Object
 */
(function($){$.PaginationCalculator=function(maxentries,opts){this.maxentries=maxentries;this.opts=opts;}
$.extend($.PaginationCalculator.prototype,{numPages:function(){return Math.ceil(this.maxentries/this.opts.items_per_page);},getInterval:function(current_page){var ne_half=Math.ceil(this.opts.num_display_entries/2);var np=this.numPages();var upper_limit=np-this.opts.num_display_entries;var start=current_page>ne_half?Math.max(Math.min(current_page-ne_half,upper_limit),0):0;var end=current_page>ne_half?Math.min(current_page+ne_half,np):Math.min(this.opts.num_display_entries,np);return{start:start,end:end};}});$.PaginationRenderers={}
$.PaginationRenderers.defaultRenderer=function(maxentries,opts){this.maxentries=maxentries;this.opts=opts;this.pc=new $.PaginationCalculator(maxentries,opts);}
$.extend($.PaginationRenderers.defaultRenderer.prototype,{createLink:function(page_id,current_page,appendopts){var lnk,np=this.pc.numPages();page_id=page_id<0?0:(page_id<np?page_id:np-1);appendopts=$.extend({text:page_id+1,classes:""},appendopts||{});if(page_id==current_page){lnk=$("<span class='current'>"+appendopts.text+"</span>");}
else
{lnk=$("<a>"+appendopts.text+"</a>").attr('href',this.opts.link_to.replace(/__id__/,page_id));}
if(appendopts.classes){lnk.addClass(appendopts.classes);}
lnk.data('page_id',page_id);return lnk;},appendRange:function(container,current_page,start,end){var i;for(i=start;i<end;i++){this.createLink(i,current_page).appendTo(container);}},getLinks:function(current_page,eventHandler){var begin,end,interval=this.pc.getInterval(current_page),np=this.pc.numPages(),fragment=$("<div class='pagination'></div>");if(this.opts.prev_text&&(current_page>0||this.opts.prev_show_always)){fragment.append(this.createLink(current_page-1,current_page,{text:this.opts.prev_text,classes:"prev"}));}
if(interval.start>0&&this.opts.num_edge_entries>0)
{end=Math.min(this.opts.num_edge_entries,interval.start);this.appendRange(fragment,current_page,0,end);if(this.opts.num_edge_entries<interval.start&&this.opts.ellipse_text)
{jQuery("<span>"+this.opts.ellipse_text+"</span>").appendTo(fragment);}}
this.appendRange(fragment,current_page,interval.start,interval.end);if(interval.end<np&&this.opts.num_edge_entries>0)
{if(np-this.opts.num_edge_entries>interval.end&&this.opts.ellipse_text)
{jQuery("<span>"+this.opts.ellipse_text+"</span>").appendTo(fragment);}
begin=Math.max(np-this.opts.num_edge_entries,interval.end);this.appendRange(fragment,current_page,begin,np);}
if(this.opts.next_text&&(current_page<np-1||this.opts.next_show_always)){fragment.append(this.createLink(current_page+1,current_page,{text:this.opts.next_text,classes:"next"}));}
$('a',fragment).click(eventHandler);return fragment;}});$.fn.pagination=function(maxentries,opts){opts=jQuery.extend({items_per_page:10,num_display_entries:10,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",callback:function(){return false;}},opts||{});var containers=this,renderer,links,current_page;function pageSelected(evt){var links,current_page=$(evt.target).data('page_id');containers.data('current_page',current_page);links=renderer.getLinks(current_page,pageSelected);containers.empty();links.appendTo(containers);var continuePropagation=opts.callback(current_page,containers);if(!continuePropagation){if(evt.stopPropagation){evt.stopPropagation();}
else{evt.cancelBubble=true;}}
return continuePropagation;}
current_page=opts.current_page;containers.data('current_page',current_page);maxentries=(!maxentries||maxentries<0)?1:maxentries;opts.items_per_page=(!opts.items_per_page||opts.items_per_page<0)?1:opts.items_per_page;if(!$.PaginationRenderers[opts.renderer])
{throw new ReferenceError("Pagination renderer '"+opts.renderer+"' was not found in jQuery.PaginationRenderers object.");}
renderer=new $.PaginationRenderers[opts.renderer](maxentries,opts);containers.each(function(){this.selectPage=function(page_id){pageSelected(page_id);}
this.prevPage=function(){var current_page=containers.data('current_page');if(current_page>0){pageSelected(current_page-1);return true;}
else{return false;}}
this.nextPage=function(){var current_page=containers.data('current_page');if(current_page<numPages()-1){pageSelected(current_page+1);return true;}
else{return false;}}});links=renderer.getLinks(current_page,pageSelected);containers.empty();links.appendTo(containers);opts.callback(current_page,containers);}})(jQuery);

function pageselectCallback(page_index, jq){
	$('#comments_ul li').fadeOut(400).delay(400);
	for(var i=(page_index*5); i<(page_index+1)*5; i++) {
		$('#comments_ul li:eq(' + i + ')').fadeIn(400);
	}
	return false;
}
$(document).ready(function(){
	$('#comments_ul li').hide();
	var num_entries = jQuery('#comments ul li').length;
	if(num_entries>0) {
		$("#comments_pagination").pagination(num_entries, {
			callback: pageselectCallback,
			items_per_page:5,
			num_display_entries:5
		});
	}
	else
		$("#comments_pagination").html('Sé el primero en comentar el artículo!').css('font-size','1.2em');
});
