// Declaração de variáveis globais
var xmlDoc;


/*=================================
	Executa a busca avançada
==================================*/
function execSearch(tipoBuca){

	//Efetua validações
	if(tipoBuca == "Search"){
		if($('#txtBusca').val() == "" || $('#txtBusca').val() == "Digite uma palavra-chave"){
			alert("Informe os filtros para a busca");
			$('#txtBusca').focus();
			return false;
		}
	}else{
		if(!ValidaData($('#dataIni').val()) || !ValidaData($('#dataFim').val()))
			alert("Informe as datas do período no formato 'dd/mm/yyyy'");
		if($('#palavraChave').val() == ""){
			alert("Informe a Palavra-Chave para a busca");
			return false;
		}
	}

	//Ajusta o tamanho do div de conteúdo
	$("div#content").css("height","100%");

	//Monta parâmetros para envio à função conforme tipo da busca
	if(tipoBuca == "Search"){
		parametro		= "SearchMedia||Search_Criterio=E";
		parametro		+= "?|?TextoBusca=" + $('#txtBusca').val();
		textoBusca      = $('#txtBusca').val();
	}else{
		parametro		= "SearchMedia||Search_Criterio=E";
		parametro		+= "?|?TipoAcervo=" + $('#tipoAcervo').val();
		parametro		+= "?|?DataInicio=" + $('#dataIni').val();
		parametro		+= "?|?DataFim=" + $('#dataFim').val();
		parametro		+= "?|?TextoBusca=" + $('#palavraChave').val();
		textoBusca      = $('#palavraChave').val();
	}

	//Chama rotina ajax para executar a busca e exibr os resultados
	$.ajax({
		type: 'POST',
		url: dataBasePath + "/(Search)?OpenAgent",
		data: escape(parametro),
		beforeSend: function(){
			$('#secWait').show();
		},
		success: function(xmlReturn){
			$('#secWait').hide();
			showAdvancedSearchResult(xmlReturn, textoBusca);
		},
		error: function(txt){
			$('#secWait').hide();
		}
	});
	
	trk_pid	= 4096;
	trk_info = "txt=" + $('#txtBusca').val();
	
	//Registra o acesso do usuario a pagina
	if (trk_pid > 0){
		faz_tracking();
		trk_info = "";
	}
}


/*=======================================================
Efetua a busca avançada e exibe o resultado categorizado
=========================================================*/
function showAdvancedSearchResult(xmlhttp, textoBusca){

	//Se busca executada com sucesso
	try{

		//Chama rotina para categorizar o html da buca recebido
		xmlView 		= xmlhttp; 
		xmlCateg		= categorizaBusca(xmlView);

		//Processa o xml categorizado com o respectivo XSL
		$("#divSearchResultCateg").html(aplicaXSL(xmlCateg, "idCategXsl", ["textoBusca"], [textoBusca]));
		$("body").attr("id","homeBody");

		//Insere funções de controle de abertura e fechamento das seções
	    $(".itemTtl > a").click(function(){
        	$(this).parent().toggleClass("atv");
        	$(this).parent().find("ul:eq(0)").slideToggle("fast")
    	});
		$(".itemTtlSub > a").click(function(){
        	$(this).parent().toggleClass("atv");
       		$(this).parent().find("ul:eq(0)").slideToggle("fast");
   		 });
		 $(".midiaElement").click(function(){
			if(isMember($(this).attr("tipoMidia"), ["Fotos", "Videos", "Peças do Acervo", "Aeronave"]) && parseInt($(this).attr("totReg")) == 1){
			//if(isMember($(this).attr("tipoMidia"), ["Fotos", "Videos", "Peças do Acervo"]) && parseInt($(this).attr("totReg")) == 1){
				cp_CategSearch    = $(this).attr("categoria");
				cp_SubCategSearch = $(this).attr("subCategoria");
				cp_MidiaSearch    = $(this).attr("tipoMidia");
				showSearchDetails(cp_MidiaSearch, 0, "CategorizedSearchResult" ,cp_CategSearch, cp_SubCategSearch);
			}else{
				showSearch($(this).attr("categoria"), $(this).attr("subCategoria"), $(this).attr("tipoMidia"));
			}
   		 });

	//Chama rotina para exibir o resultado da busca
	showPage("CategorizedSearchResult");

	//Tratativa de erros
	}catch(e){
		alert(e);
	}
}


/*==================================================
Exibe o resultado da busca da categoria selecionada
====================================================*/
function showSearch(categ, subCateg, midia){

	//Busca o elemento do xml da subcategoria selecionada
	selActivite = executeXPath(xmlCateg, "/root/Categoria[@categoria = '" + categ + "']/Subcategoria[@categoria = '" + subCateg + "']/Midia[@midia='" + midia + "']");

	//Cria objeto para controle de busca avançada
	xmlDoc      = loadXMLDoc("<root id='xmlBusca'><Categoria><Subcategoria>" + returnXmlStr(selActivite[0]) + "</Subcategoria></Categoria></root>");

	//Verifica xsl que será adota para exibição da busca
	if(midia == "Videos" || midia == "Fotos" || midia == "Peças do Acervo"){
		idXsl   = "idBuscaAudioVisualXsl";
		totPag  = 8;
	}else{
		idXsl   = "idBuscaTextualXsl";
		totPag  = 5;
	}

	//Aplica xsl no xml a ser exibido
	selLine     = executeXPath(xmlDoc, "//line");
	numTotReg   = selLine.length;
	buscAvanc   = new BuscaAvanc("divSearchResult", xmlDoc, idXsl, totPag, numTotReg);

	//Armazena informações da mídia em variável global para exibição no "Caminho de Pão"
	cp_CategSearch    = categ;
	cp_SubCategSearch = subCateg;
	cp_MidiaSearch    = midia;

	//Exibe o resultado da busca
	showPage("SearchResult");
}



/*==================================================
Exibe o resultado da busca da categoria selecionada
===================================================*/
function showSearchDetails(midia, posElement, pagAbertura, categ, subCateg){

	//Se mídia aberta pelos destaques da categoria
	if(pagAbertura == "categDestaque"){
		selActivite = executeXPath(xmlCateg, "/categoria/midiaDestaque/line[" + posElement + "]");

	//Se mídia aberta pela sessão recentes da categoria
	}else if(pagAbertura == "categRecente"){
		selActivite = executeXPath(xmlCateg, "/categoria/midiaRecente/line[" + posElement + "]");

	//Se mídia aberta pela sessão recentes da categoria
	}else if(pagAbertura == "subCategoria"){
		selActivite = executeXPath(xmlDoc, "/root/midiaSubCateg/line[" + posElement + "]");

	//Se mídia aberta pela sessão top hint
	}else if(pagAbertura == "topHint"){
		selActivite = executeXPath(xmlHome, "/root/midiasMaisAcessadas/line[" + posElement + "]");

	//Se mídia aberta pela sessão top hint
	}else if(pagAbertura == "destSec"){
		selActivite = executeXPath(xmlHome, "/root/midiaDestaque[0]/line[" + posElement + "]");
	}else if(pagAbertura == "destSec1"){
		selActivite = executeXPath(xmlHome, "/root/midiaDestaque[1]/line[" + posElement + "]");
		
	//Se mídia aberta pela sessão top hint
	}else if(pagAbertura == "aconteceuEmb"){
		selActivite = executeXPath(xmlHome, "/root/aconteceu/line[" + posElement + "]");

	//Se mídia aberta pelo resultado da busca categorizado
	}else if(pagAbertura == "CategorizedSearchResult"){
		selActivite = executeXPath(xmlCateg, "/root/Categoria[@categoria = '" + categ + "']/Subcategoria[@categoria = '" + subCateg + "']/Midia[@midia='" + midia + "']/line[" + posElement + "]");

	//Se mídia aberta pelo resultado da busca
	}else{
		selActivite = executeXPath(xmlDoc, "/root/Categoria/Subcategoria/Midia/line[uniIdDoc='" + posElement + "']");
	}


	//Cria xml para processamento do detalhe da busca
	xmlDet      = loadXMLDoc("<root>" + returnXmlStr(selActivite[0]) + "</root>");
	
	//Processa o xml categorizado com o respectivo XSL
	if(midia != "Aeronave"){
		$("#divSearchDetales").html(aplicaXSL(xmlDet, "idBuscaDetXsl", ["filePathRep"], [pageLanguage=="PT"?"files":"../files"]).replace(/@nemLine@/gi, "<BR>"));
	}else{
		$("#divSearchDetales").html("");
		$.get(returnProductHtmlPath($(selActivite[0]).find("col2").text()), loadPageToHome);
	}

	//Armazena informações da mídia em variável global para exibição no "Caminho de Pão"
	cp_DetailPage = $(selActivite[0]).find("col2").text();
	if(cp_DetailPage.length > 30)
		cp_DetailPage = trim(cp_DetailPage.substring(0, 30)) + "...";

	//Exibe o resultado da busca
	if(pageLanguage=="EN")
		showPageEng("SearchDetail");
	else
		showPage("SearchDetail");
		
	//Se mídia for de fotos, chama rotina para gerar carrocel de imagens
	if(midia == "Fotos"){
		$("#pikDet").PikaChoose({
			show_captions: true,
			slide_enabled: false,
			auto_play: false,
			show_prev_next: true,
			slide_speed: 5000,
			thumb_width: 147,
			thumb_height: 82,
			buttons_text: { play: "Play", stop: "Stop", previous: "Anterior", next: "Próximo" },
			delay_caption: false,
			user_thumbs: false
		});
		$("#pikDet").SliderJSVertical({
			window_width: 200,
			window_height: 282,
			list_width:175,
			list_height: 800,
			window_padding_left: 30,
			pikachoose: true,
			direction:'vertical'
		});
	}else if(midia == "Videos" || midia == "Depoimentos"){
		$("#videoPreviewImg").click(function(){
			$.get("embedVideo.htm", loadVideo);
		});
	}
	//Seta altera e largura da imagem para que a mesma caiba no box do carrocel
	$('.pika_subdiv > a > img').width('422px').height('267px')

	//Chama rotina ajax para registrar acesso do usuário
	vetIdDoc = $(xmlDet).find("idDoc").text().split("/")
	registerUserAccess(vetIdDoc[vetIdDoc.length-1]);
}




/*======================================================
Categoriza o resultado da busca avançada nos parametros
passados
========================================================*/
function categorizaBusca(xmlView){

	//Chama rotina para ordenar categorias, conforme relevância da string de busca
	categ       = sortSimilary(category.categ, $('#txtBusca').val());
	subCategory = category.subCateg;

	//Cria xml para categorização da busca
	xmlDoc		= loadXMLDoc();
	nodeRoot	= xmlDoc.createElement("root");
	xmlDoc.appendChild(nodeRoot);

	//Insere atributo no xml com total de registros localizados
	selActivite	= executeXPath(xmlView, "//table/line");
	nodeRoot.setAttribute("totReg", selActivite.length);

	//Passa por todas as categorias
	for(c=0; c< categ.length; c++){

		//Limpa variáveis de controle da categoria
		nodeCateg	= "";
		totRegCateg	= 0;

		//Passa por todas as subcategorias e verifica se a mesma existe no xml
		for(x=0;x<subCategory.length; x++){
			selActivite		= executeXPath(xmlView, "//table/line[(col12 = '" + categ[c].toLowerCase() + "') and (col13 = '" + subCategory[x].toLowerCase() + "')]");
			if(selActivite.length > 0){

				//Se necessário, cria a categoria
				if(typeof(nodeCateg) != "object"){
					nodeCateg	= xmlDoc.createElement("Categoria");
					nodeCateg.setAttribute("categoria", categ[c]);
					nodeRoot.appendChild(nodeCateg);
				}

				//Cria subCategoria
				nodeSubcateg	= xmlDoc.createElement("Subcategoria");
				nodeSubcateg.setAttribute("categoria", subCategory[x]);
				nodeSubcateg.setAttribute("totReg", selActivite.length);
				totRegCateg		+=selActivite.length;
				nodeCateg.appendChild(nodeSubcateg);

				//Insere resultados da busca no xml criando subCategorias por tipo da midia
				for(i=0;i<selActivite.length;i++){
					$(selActivite[i]).find("col12").text(categ[c]);
					$(selActivite[i]).find("col13").text(subCategory[x]);

					//Insere atributo para ordenação por data
					data			= $(selActivite[i]).find("col1").text();
					data 			= data.indexOf("De ") > -1?data.substring(data.indexOf("De ")+3, data.indexOf("Até ")):data;
					dataSort		= "";
					if(data != "" && data.split("/").length == 3){
						data		= data.split("/");
						dataSort	= data[2] + (data[1].length=="1"?"0":"") + data[1] + (data[0].length=="1"?"0":"") +data[0];
					}
					selActivite[i].setAttribute("dataSort", dataSort);

					tipoMidia		= $(selActivite[i]).find("col14").text();
					sortMidia		= $(selActivite[i]).find("col15").text();
					selMidia		= executeXPath(nodeSubcateg, "Midia[@midia='" + tipoMidia + "']");
					if(selMidia.length == 0){
						nodeMidia	= xmlDoc.createElement("Midia");
						nodeMidia.setAttribute("midia", tipoMidia);
						nodeMidia.setAttribute("sortMidia", sortMidia);
						nodeMidia.setAttribute("totReg", 0);
						nodeSubcateg.appendChild(nodeMidia);
					}else{
						nodeMidia	= selMidia[0];
					}
					nodeMidia.setAttribute("totReg", parseInt(nodeMidia.getAttribute("totReg"),10) + 1);
					nodeMidia.appendChild(selActivite[i]);
				}
	
				//Insere total de documentos da categoria			
				nodeCateg.setAttribute("totReg", totRegCateg);
			}
		}
	}

	//Retorna xml obtido	
	return(xmlDoc);
}


/*======================================================
Busca dados da categoria e da sub-categoria, via chamada
Ajax, e popula variáveis de controle
========================================================*/
function getCategoryData(){

	//Declaração de variáveis
	var categ	= new Array();

	//Chama rotina ajax para busca dos dados
	$.ajax({
		type: 'POST',
		url: dataBasePath + "/(WEB_AJAX)?OpenAgent",
		data: "buscaDadosCategoria",
		success: function(xmlReturn){
			category.categ	  = $(xmlReturn).find("categDados").text().split("; ");
			category.subCateg = $(xmlReturn).find("subCategDados").text().split("; ");
		},
		error: function(txt){
			category.categ	  = [""];
			category.subCateg = [""];
		}
	});
}