/**
 * @author davi_menegotto
 * 
 * Classe paginação -> possui somente a parte de negocios necessita de um extenção para as funções de layout
 */

function Paginacao(){
	
	//metodos publicos
	this.navigate = navigate;
	this.avanca10 = avanca10;
	this.volta10 = volta10;
	this.anterior = anterior;
	this.proxima = proxima;
	this.ultima = ultima;
	this.avancar = avancar;
	this.setPagAtual = setPagAtual;
	this.getPagAtual = getPagAtual;
	this.irpara = irpara;
	
	//variaveis locais
	var urlBase = "";
	var pagAtual = "";
	
	function setPagAtual(pPagAtual){
		pagAtual = pPagAtual;
	}
	
	function getPagAtual(){
		return pagAtual; 
	}
	
	//metodos
	function setUrlBase(page){ //seta a url base para o links
		var url = limpaAncora(document.URL);
		if (url.search('&page=') > 0) {
			url = url.replace( /((\?|&)page=)\d*(&|$)/, "$1"+page+"$3" );
		}
		return url;
	}
	
	function navigate(page){ //faz a navegação
		document.location.href = setUrlBase(page);
		setPagAtual(page);
		
	}
	
	function irpara(page,total){ //faz a navegação
		if ( ( page < 1 ) || ( page > total ) ){
			alert("Pagina não encontrada.");
		}else{
			navigate(page);
		}
	}
	
	function anterior(pagAtual){
		anterior = eval(pagAtual)-1;
		navigate(anterior);
	}
	
	function proxima(pagAtual){
		proxima = eval(pagAtual)+1;
		navigate(proxima);
	}
	
	function ultima(total){
		navigate(total);
	}
	
	function avancar(){ //avança
		var page = document.pag.num.value;
		if ( ( page < 1 ) || ( page > total ) ){
			alert("Pagina não encontrada.");
			return false;
		}else{			
			document.location.href = setUrlBase(page);
		}
	}
	
	function avanca10(total){ //avança 10
		var pgAux = eval(getPagAtual())+10;
		if ( pgAux > total )
		pgAux = total;
		document.location.href = setUrlBase(pgAux);
	}
	
	function volta10(){ //volta 10
		var pgAux = eval(getPagAtual())-10;
		if ( pgAux < 1 ) pgAux = 1;
		document.location.href = setUrlBase(pgAux);
	}
	
	function limpaAncora(url) {
		if (url.search('#') > 0) {
			url = url.replace(/(#)(\w+)/ig,"");
		}
		return url;
	}
}

var paginacao = new Paginacao();