// Função de paginação inteligente
var elm = new Array(); // Elements
var pos = new Array(); // Page
var data = new Array(); //elementos a serem analisados

// Calculator
function calcStart(el,page){
	page = (page - 1);
	return (data[el].maxitens * page) + 1;
}
function calcEnd(el,page){
	limit = elm[el];
	if( (data[el].maxitens * page) > limit ){return limit;}
	else{return (data[el].maxitens * page);}
}

// Generator
function pageLinks(el){
	if( data[el].paginator != false ){
		pages = Math.ceil( elm[el] / data[el].maxitens );
		if( pages > 1 ){
			html = new Array();
			for( i=1; i<=pages; i++ ){
				css = '';if( pos[el] == i ){css = ' class="active"';}
				html.push('<a href="javascript:void(0);" id="goto" onclick="goto('+ i +','+ el +');"'+ css +'>'+ i +'</a>');
			}
			$(data[el].paginator).html('<span id="gotoContainer">' + html.join(data[el].pagesplit) + '</span>');
		}
	}
}

// Executor
function paginator(el,start,end){
	for( i=1; i<=elm[el]; i++ ){
		$(data[el].root + data[el].elements + i).hide();
	}
	for( p=start; p<=end; p++ ){
		$(data[el].root + data[el].elements + p).fadeIn("fast");
	}
	pageLinks(el);
}

// Controles
function previous(el){
	el = parseInt( el );
	$(data[el].next).show();
	$(data[el].previous).show();
	if( pos[el] >= 1 ){
		if( (pos[el] - 1) > 0 ){pos[el] = (pos[el] - 1);}
		paginator(el,calcStart(el,pos[el]),calcEnd(el,pos[el]));
		if( (pos[el] - 1) <= 0 ){$(data[el].previous).fadeOut("fast");}		
	}
}
function next(el){
	el = parseInt( el ); 
	$(data[el].previous).show(); $(data[el].next).show();
	if( calcEnd(el,pos[el]) != elm[el] ){pos[el] = (pos[el] + 1);}
	paginator(el,calcStart(el,pos[el]),calcEnd(el,pos[el]));
	if( calcEnd(el,pos[el]) == elm[el] ){$(data[el].next).fadeOut("fast");}
}
function goto(p,el){
	$(data[el].previous).show(); $(data[el].next).show();
	pos[el] = p;
	paginator(el,calcStart(el,pos[el]),calcEnd(el,pos[el]));
	if( (pos[el] - 1) <= 0 ){$(data[el].previous).fadeOut("fast");}		
	if( calcEnd(el,pos[el]) == elm[el] ){$(data[el].next).fadeOut("fast");}	
}

// Initialization
function pageInit( conf ) {
	data = conf;
	for( z=0; z<data.length; z++ ){// load all data
		pos[z] = 1;
		elm[z] = parseInt( $(data[z].root).length );
		for( i=1; i<=elm[z]; i++ ){// hide all elements
			$(data[z].root + data[z].elements + i).hide();
		}
		for( i=1; i<=data[z].maxitens; i++ ){// show first elements
			$(data[z].root + data[z].elements + i).fadeIn("fast");
		}
		$(data[z].previous).hide(); $(data[z].next).hide(); $(data[z].controls).hide();// hide all buttons and controls
		if( elm[z] > data[z].maxitens ){// show next button and controls, if needed
			$(data[z].next).fadeIn("fast");
			$(data[z].controls).fadeIn("fast");
		}
		pageLinks(z);// initalizes page links, if exist
	}
}
