/*========================================
Classe para controle de navegação da busca
avançada
==========================================*/
function BuscaAvanc(divXml, idXMLDados, idXSL, nRegExib, nTotReg){

	//Atribui valores as variaveis globais
	this.numRegExib = nRegExib;
	this.totReg     = nTotReg;
	this.totPag     = nTotReg%nRegExib>0?Math.floor(nTotReg/nRegExib)+1:nTotReg/nRegExib;
	this.pagAtual   = 1;
	this.exibDe     = 1;
	this.exibAte    = nRegExib;
	this.divXml     = divXml;
	this.xmlDados   = idXMLDados;
	this.xsl        = idXSL;

	//Declara médotos da classe
	this.refreshTable = refreshTable;
	this.navFirst     = navFirst;
	this.navPrev      = navPrev;
	this.navNext      = navNext;
	this.navLast      = navLast;
	this.goToPage     = goToPage;

	//Atualiza a tela
	this.refreshTable();
}

/*=================================
  Método para atualizar a tabela
===================================*/
function refreshTable(){

	//Aplica xsl no xml e o exibe na div correspondente
	htmlView = aplicaXSL(this.xmlDados, this.xsl, ['pag_de', 'pag_ate', 'TotPage', 'numTotPag', 'pagAtual'], [this.exibDe, this.exibAte, this.exibAte, this.totPag, this.pagAtual]);
	htmlView = htmlView.replace(/;&lt;/gi, "<");
	htmlView = htmlView.replace(/;&gt;/gi, ">");
	htmlView = htmlView.replace(/@nemLine@/gi, "<BR>");
	$("#" + this.divXml).html(htmlView);

	//Insere ações de navegação
	$(".itm01").click(function(){buscAvanc.navFirst()});
	$(".itm02").click(function(){buscAvanc.navPrev()});
	$(".itm04").click(function(){buscAvanc.goToPage()});
	$(".itm05").click(function(){buscAvanc.navNext()});
	$(".itm06").click(function(){buscAvanc.navLast()});

	//Insere ação de abertura de detalhes
	$(".lnkVejaMais").click(function(){
		var parametros = this.id.split("@@");
		showSearchDetails(parametros[0], parametros[1], "SearchResult");
	});	
	$(".categOpenMidia").click(function(){
		showSearchDetails($(this).attr("midia"), parseInt($(this).attr("position")), "subCategoria");
	});
	$(".categOpenSubCateg").click(function(){
		showSubCategoryPage(cp_Category, $(this).attr("category"), $(this).html());
	});
}	


/*=================================
    Navega para pagina anterior
==================================*/
function navFirst(){

	//Valida se deverá efetuar a paginação
	if(this.pagAtual == 1)
		return;

	//Recalcula registros a serem exibidos
	this.exibDe	   = 1;
	this.exibAte   = this.numRegExib;
	this.pagAtual  = 1;
	
	//Atualiza a tela
	this.refreshTable();
	
	//Se possuir objeto, posiciona tela no topo da busca
	if(document.getElementById("imgBusca")){
		document.getElementById('tabColDir').focus();
	}
		
}


/*================================
   Navega para pagina anterior
==================================*/
function navPrev(){

	//Valida se deverá efetuar a paginação
	if(this.pagAtual == 1)
		return;

	//Recalcula registros a serem exibidos
	this.exibDe    -= this.numRegExib;
	this.exibAte    = this.exibDe + this.numRegExib -1;
	this.pagAtual--;

	//Se alcançado início dos registros
	if (this.exibDe < 1){
		this.exibDe     -= 1;
		this.exibAte     = this.numRegExib;
		this.pagAtual    = 1;
	}
	
	//Atualiza a tela
	this.refreshTable();

	//Se possuir objeto, posiciona tela no topo da busca
	if(document.getElementById("imgBusca")){
		document.getElementById('tabColDir').focus();
	}
}


/*================================
   Navega para próxima pagina
==================================*/
function navNext(){

	//Se já estiver no ultimo registro, sai da função
	if(this.exibAte >= this.totReg)
		return;

	//Recalcula registros a serem exibidos
	this.exibDe   = this.exibAte + 1;
	this.exibAte += this.numRegExib;
	this.pagAtual++;

	//Se alcançado final dos registros	
	if(this.exibAte > this.totReg){
		this.exibAte = this.totReg;
	}

	//Atualiza a tela
	this.refreshTable();
	
	//Se possuir objeto, posiciona tela no topo da busca
	if(document.getElementById("imgBusca")){
		document.getElementById('tabColDir').focus();
	}
}


/*================================
    Navega para pagina anterior
==================================*/
function navLast(){

	//Se já estiver no ultimo registro, sai da função
	if(this.exibAte >= this.totReg)
		return;

	//Recalcula registros a serem exibidos
	this.exibDe   = this.totReg - (this.totReg%this.numRegExib==0?this.numRegExib:Math.floor(this.totReg%this.numRegExib))+1;
	this.exibAte  = this.totReg;
	this.pagAtual = this.totPag;

	//Atualiza a tela
	this.refreshTable();
	
	//Se possuir objeto, posiciona tela no topo da busca
	if(document.getElementById("imgBusca")){
		document.getElementById('tabColDir').focus();
	}
}


/*================================
   Navega para pagina anterior
==================================*/
function goToPage(){

	//Verifica pagina que deverá ser aberta
	irParaPg = $('#txtIrPara').val();
	if(irParaPg == "") 
		return
	if(irParaPg >= this.totPag){
		this.navLast();
		return;
	}
	if(irParaPg <= 0){
		this.navFirst();
		return;
	}

	//Recalcula registros a serem exibidos
	this.exibDe    = ((irParaPg-1)*this.numRegExib) + 1;
	this.exibAte   = irParaPg*this.numRegExib;
	this.pagAtual  = irParaPg;
	
	//Atualiza a tela
	this.refreshTable();
	
	//Se possuir objeto, posiciona tela no topo da busca
	if(document.getElementById("imgBusca")){
		document.getElementById('tabColDir').focus();
	}
}
