
/************************************\
| Função para definir/alterar cookie |
\************************************/
function defineCookie(nome, valor){
	operationCookie("adiciona", nome, valor);
}

/************************************\
|     Função para apagar cookie      |
\************************************/
function apagaCookie(nome, valor){
	operationCookie("apaga", nome, valor);
}

var req;

function operationCookie(acao, nome, valor){
	url = "/_includes/cookieFunctions.asp";
	if (acao == "adiciona")
		url = url + "?action=add";
	else if(acao == "apaga")
		url = url + "?action=del";
	url = url + "&name=" + nome;
	url = url + "&value=" + valor;

	req = false;
    if(window.XMLHttpRequest) {
    	try {
			req = new XMLHttpRequest();
        } catch(e) {
			req = false;
        }
    } else if(window.ActiveXObject) {
       	try {
        	req = new ActiveXObject("Msxml2.XMLHTTP");
      	} catch(e) {
        	try {
          		req = new ActiveXObject("Microsoft.XMLHTTP");
        	} catch(e) {
          		req = false;
        	}
		}
    }
	if(req) {
		req.onreadystatechange = processaErro;
		req.open("GET", url, true);
		req.send("");
	}
}

function processaErro() {
    if (req.readyState == 4)
        if (req.status == 200) {
        } else 
            alert("Houve um problema na hora de processar o pedido:\n" +
                req.status + ": " + req.statusText);
}

/*******************************************************************\
|                   fim das funções de cookie                       |
\*******************************************************************/


//Função para redimencionar o tamanho do text


//Função para redimencionar o tamanho do corpo da texto 
function tamanhoTexto(valor)
{
	var arr_tags = document.getElementsByTagName("div");
	for (x=0;x<arr_tags.length;x++)
	{	
		if(arr_tags[x].getAttribute('title') || arr_tags[x].getAttribute('expand_text') )
		{
			switch (valor)
			{					
				case "0":
					arr_tags[x].style.fontSize="11px";
					//arr_tags[x].style.lineHeight="18px";
				break;
				
				case "0.8":
					arr_tags[x].style.fontSize="14px";
					//arr_tags[x].style.lineHeight="22px";
				break;
				case "1.02":
					arr_tags[x].style.fontSize="18px";
					//arr_tags[x].style.lineHeight="40px";
				break;
			}
		}
	}
}

/************************************************************************
*		Função para aumentar a fonte em trê tamanhos fixo				*
*		é necessário a utilização do include link_controle_js.inc		*
*		o mesmo se encontra no headtags.inc								*
************************************************************************/
	//verifica se vai ser necessário aumentar ou diminuir a fonte
	function mudaTamanho(acao,iFs){
		var iRet = iFs;
		
		switch(acao){
			case 0:
				if (tamanhoFonte==1) {
					iRet = iRet - TAMFONTE1;
				} else if (tamanhoFonte==2) {
					iRet = iRet - TAMFONTE1 - TAMFONTE2;
				}
				break;		 
			case 1:
				if (tamanhoFonte==0) {
					iRet = iRet + TAMFONTE1;
				} else if (tamanhoFonte==2) {
					iRet = iRet - TAMFONTE2;
				}
				break;
			case 2:
				if (tamanhoFonte==0) {
					iRet = iRet + TAMFONTE1 + TAMFONTE2;
				} else if (tamanhoFonte==1) {
					iRet = iRet + TAMFONTE2;
				}
				break;
		}
		return iRet;
	}
	
	//muda o tamanho da fonte dos objetos
	function tamFontSize(acao){
		//objetoPai será  ".expand_text"	 
		var objetoPai = ".expand_text"; 
		var interacaoFilho, interacaoPai;

		var pegaTodos = {pega : function(maiorDeTodos){
				var filho;
				var iAux;
				
				

				//verifica se o objeto têm filhos
				if ($(maiorDeTodos).children().length>0){
					 
					// Passa por todos os objetos filhos
					$(maiorDeTodos).children().each(function(i){
							filho = $(this);
							if ($(filho)[0].tagName!="OBJECT" && $(filho)[0].tagName!="PARAM"){
								//pega o tamanho da fonte
								$fs = parseInt($(filho).css("font-size"));
								
								//muda o tamanho
								iAux = mudaTamanho(acao,$fs);
								if (iAux!=$fs) 
									$fs=iAux;
								//seta o novo valor da fonte
								$(filho).css("font-size", $fs);
								//verifica se o objeto analisado se têm filhos
								if ($(filho).children().length != 0) {
									//muda a fonte de cada filho
									pegaTodos.pega($(filho));
								}
							}
						}
					);
				} else {
					
					filho = $(maiorDeTodos);
					if ($(filho)[0].tagName!="OBJECT" && $(filho)[0].tagName!="PARAM"){
						//pega o tamanho da fonte	
						$fs = parseInt($(filho).css("font-size"));

						//muda o tamanho
						iAux = mudaTamanho(acao,$fs);
						if (iAux!=$fs) 
							$fs=iAux;

						//seta o novo valor da fonte
						$(filho).css("font-size", $fs);
					}
				}
			}
		};
		 
		//verifica se o objetoPai existe na página
		if ($(objetoPai).length != 0) {
			//alterar a fonte dos objetos selecionados
			$(objetoPai).each(function(interacaoPai){
				pegaTodos.pega(this);
			});
		}
	
		//identifica qual foi a mudança da fonte realizada
		tamanhoFonte = acao;
	}
	
/************************************************************************
*		Fim Função para aumentar a fonte em trê tamanhos fixo			*
************************************************************************/
	

//Função é utilizada para mudar o fundo da pagina
function muda_fundo(obj_div,obj_imagem)
{
		document.getElementById(obj_div).style.background = obj_imagem;
}

/*
Função para validação de campos numericos
12/01/2006 - José Lino de Araújo Neto
Ex: onkeypress="return ValidaCaracteres(true,false,null,event)"
*/
function ValidaCaracteres(numbers,letters,others,e){
	if(window.event)key=window.event.keyCode
	else if(e)key=e.which
	else return true
	S=(others)?others:''
	if(numbers)S+='0123456789'
	if(letters)S+='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
	if(key==null||key==0||key==8||key==9||key==13||key==27)return true
	else if(S.indexOf(String.fromCharCode(key))!=-1)return true
	else return false
}

/*
Função para avançar para o proximo campo
12/01/2006 - José Lino de Araújo Neto
Ex: onkeyup="ProximoCampo(this)"
*/
function ProximoCampo(f){
	if(f.value.length==f.maxLength){
      	for(var i=0;i<f.form.length;i++){
        	if(f.form[i]==f && f.form[i+1] && f.form[i + 1].type !='hidden' ){
               f.form[i+1].focus();
               break
            }
		}
	}
}
/*
Função para efetuar a busca de CEP ou Cidade
12/01/2006 - José Lino de Araújo Neto
Ex: onkeyup="ProximoCampo(this)"
*/
function buscar(){
	document.frmBusca.submit();
}

 /*
	Função para trabalhar com cookie
 */
 function setaCookie(value,name,idSetaPortal)
{
	var exdate=new Date();
	exdate.setDate(365);
	document.cookie=name+ "=" +escape(value)+";expires="+exdate+ ";path=/;domain=10.197.201.38"; //";domain=caixa.gov.br";
	//document.cookie=name + '=' + value + "; expires=Sat, 06-Mai-06 00:00:01 GMT";
	//verifica se foi selecionado para setar o portal, caso seja tirado a seleção apaga o cookie	
/*
	if (document.getElementById(idSetaPortal).checked)
	{
		document.cookie=name + '=' + value;
	}
	else
	{
		deleteCookie(name);
	}
*/
}


function Set_Cookie( name, value, expires, path, domain, secure ) {	
	var today = new Date();
	today.setTime( today.getTime() );
	if ( expires )
	{
		expires = expires * 1000 * 60 * 60;
	}	
	var expires_date = new Date( today.getTime() + (expires) );
	document.cookie = name + "=" +escape( value ) +
		( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) + //expires.toGMTString()
		( ( path ) ? ";path=" + path : "" ) + 
		( ( domain ) ? ";domain=" + domain : "" ) +
		( ( secure ) ? ";secure" : "" );
}


//recupera o valor do cookie passando o nome dele
function getCookie(name) 
{
	var dc = document.cookie;
	var prefix = name + "=";
	var begin = dc.indexOf("; " + prefix);
	var end;

	  //varre o cookie até a posição desejada 
	  if (begin == -1) 
	  {
			begin = dc.indexOf(prefix);
			if (begin != 0) return null;
	  }
	else
		begin += 2;
	
	  end = document.cookie.indexOf(";", begin);
	if (end == -1)end = dc.length;
	
	  return unescape(dc.substring(begin + prefix.length, end));
}

//apaga o cookie que foi passado o nome
function deleteCookie(name) 
{
	var exdate=new Date();
	exdate.setDate(-1);

	document.cookie = name + "=; expires=" + exdate + ";path=/;domain=10.197.201.38";
}
/**************************************************************************
 Function:	enviaPaginaSelect
 Purpose:	Envia para a pagina selecionada na combo
 **************************************************************************/
function enviaPaginaSelect(strIdElemento)
{
	location.href=document.getElementById(strIdElemento).value;
}

/**************************************************************************
 Function:	enviaPagina
 Purpose:	Envia para a pagina passada como paramento e se tiver o parametro
 **************************************************************************/
function enviaPaginaParam(strIdElemento,strCaminho)
{
	if (strIdElemento!='')
		location.href=strCaminho + '?' +document.getElementById(strIdElemento).name +'=' + document.getElementById(strIdElemento).value;
	else
		location.href=strCaminho;
}

/******************************* Funções usadas para o ajax dos portais *************************/

/**************************************************************************
 Function:	strCodFormat
 Purpose:	formata e codifica uma string, passada por parametro,
			dependendo da expressão regular adotada
			Usado para transmmitir entre os objetos para poder ter
			a comunicação entre o institucional e transacional
 **************************************************************************/
function strCodFormat(strO){
	/* 
		define as váriaveis a serem usadas e os objetos
		contendo as expressões regulares
	*/
	var sTexto;
	var objREFormata,objRECodifica;

	sTexto=strO;
	/*
		Objeto RegExp("Exp","opção")
		Exp:Expressão Regular
		opção:
			g> procurar na String Inteira
			i> ignora se é maiuscula ou minuscula
			m> executa em multiplas linhas
	*/
	//objREFormata=new RegExp("\ \ ","gim"); Não vai ser usadoagora
	objRECodifica=new RegExp("'","gim");

	//troca todas a ocorrência do objREFormata pela string passada
	//sTexto=sTexto.replace(objREFormata,"\ ");
	sTexto=sTexto.replace(objRECodifica,"!");
	return (sTexto);
}

/**************************************************************************
 Function:	strDecodFormat
 Purpose:	decodifica uma string, passada por parametro,
			formatada pelo strCodFormat
			Usado para exibir a string em sua forma normal
 **************************************************************************/
function strDecodFormat(strO,objD){
	/*
		define as váriaveis a serem usadas e os objetos
		contendo as expressões regulares
	*/
	var sTexto;
	var objREDecodifica;

	sTexto=strO;
	/*
		Objeto RegExp("Exp","opção")
		Exp:Expressão Regular
		opção:
			g> procurar na String Inteira
			i> ignora se é maiuscula ou minuscula
			m> executa em multiplas linhas
	*/
	objREDecodifica=new RegExp("!","gim");

	//troca todas a ocorrência do objREFormata pela string passada
	sTexto=sTexto.replace(objREDecodifica,"'");
	return (sTexto);
}

/**************************************************************************
 Function:	limpaComboAjax
 Purpose:	limpa a combo que não vai ser usada
 **************************************************************************/
function limpaComboAjax(strCombo)
{
	
	//apagar os bairros---------
	document.getElementById(strCombo).options.length = 0;
	document.getElementById(strCombo).options[0]=new Option("","");
}

/**************************************************************************
 Function:	criarIframe
 Purpose:	cria um iframe passando o id dele, a página que vai ser carregada
			e o id do objeto conteiner
 **************************************************************************/
function criarIframe(idIframe,strSRC,idObjConteiner,strCampo,strIdCampoChamador,strIdCampoApagar)
{
	var strIFrame;
	//alert(strCampo!="");	
	if (strCampo!=""){
		if (strIdCampoApagar!=""){
			//preenche a combo dinamicamente com os atributos dos nos selecionados			
			document.getElementById(strIdCampoApagar).length=0;
			document.getElementById(strIdCampoApagar)[0] = new Option('','');
		}			
		strIFrame="<iframe name='" + idIframe + "' id='" + idIframe + "' src='" + strSRC +"' width='1' height='1' style='display:none'></iframe>";
		document.getElementById(idObjConteiner).innerHTML = "";
		document.getElementById(idObjConteiner).innerHTML = strIFrame;
	}else{
		mostraCarrega('none');
		//preenche a combo dinamicamente com os atributos dos nos selecionados		
		document.getElementById(strIdCampoChamador).length=0;
		document.getElementById(strIdCampoChamador)[0] = new Option('','');
	}
}

/**************************************************************************
 Function:	carregaIframeMoz 
 Purpose:	carrega o conteudo passado por parametro ate que todos os
			pacotes tenham sidos carregados, assim chamando a função que
			vai alimentar o objeto que está esperando o mesmo
			conteudo: conteudo passado
			pacote: número do pacote que está sendo trafegado
			pacotes: o número total de pacotes que vão ser trafegados
			objDestino: objeto que vai receber a consulta
			urlConsulta: qual caminho para fazer o resultado
			ambiente: váriavel destinada a indicar em qual servidor 
						está sendo trabalhado
 Atenção só vale para o Mozilla e afins
 **************************************************************************/
function carregaIframeMoz(conteudo, pacote, pacotes,objDestino,urlConsulta,strAmbiente,strCaminho){
	var strBuffer = conteudo;

	if(parseInt(pacote)==0){
		document.getElementById("bufferarea").value="";
	}
	document.getElementById("bufferarea").value = document.getElementById("bufferarea").value + strBuffer;
	if((parseInt(pacote)+1)<pacotes){
			
			document.getElementById('spanAjax').innerHTML = "<iframe id='iframeAjax' name='iframeAjax' src='http://"+strCaminho+"/_newincludes/AJAX/comboAjax.asp?pacote=" + (parseInt(pacote)+1) + "&amp;objDestino=" + objDestino + "&url="+strCodFormat(urlConsulta)+"&ambiente="+strAmbiente+"' width='1' height='1'  style='display:none'></iframe>";
			
	}else{
		carregaDados(document.getElementById("bufferarea").value,'nativo',objDestino);
	}
}

/**************************************************************************
 Function:	carregaIframeIE 
 Purpose:	carrega o conteudo passado por parametro, chamando a função que
			vai alimentar o objeto que está esperando o mesmo
			conteudo: conteudo passado
			objDestino: objeto que vai receber a consulta
 Atenção só vale para o Internet Explore
 **************************************************************************/

function carregaIframeIE(conteudo,objDestino){		
		carregaDados(conteudo,'IE',objDestino);
		document.getElementById('spanAjax').innerHTML = "";		
		document.getElementById('spanAjax').innerHTML = "<iframe style='display:none' id='iframeAjax' name='iframeAjax'></iframe>"
}

/**************************************************************************
 Function:	carregaDados
 Purpose:	carrega o conteudo em XML passado por parametro em um objeto de 
			destino passado também por parametro e dependendo do browser
			o XML é tratado diferente
			xmlDoc: conteudo passado em XML tendo como esqueleto:
					<xml><dados><MUNI nome='' value='' /></dados>
			browser: tipo de browser que está ascessando a aplicação
			objDestino: objeto que vai receber o conteudo (uma Combo)
			
 **************************************************************************/
function carregaDados(xmlDoc, browser,objDestino){
			
			var objetoAjax = browser;			
			
			//var xmlDoc = document.getElementById("textarea1").value;
			
			var obj_select = document.getElementById(objDestino);
			
			if(objetoAjax == "Microsoft Internet Explorer" || objetoAjax =="IE"){
				//cria o objeto ms xmldom				
				xdoc = new ActiveXObject("Microsoft.XMLDOM");
				xdoc.async = false;	
				//pega o xml como texto pq ao passar o objeto o objeto nao vem com os nos filhos
				xdoc.loadXML(xmlDoc);
				
				//pega as nos com o nome servico
				var servicos = xdoc.getElementsByTagName("MUNI");
				
				//preenche a combo dinamicamente com os atributos dos nos selecionados
				obj_select.length=0;
				obj_select[0] = new Option('-- Selecione --','');
				for (aux=0;aux<servicos.length;aux++)
				{
					obj_select[aux+1] = new Option(strDecodFormat(servicos[aux].getAttribute("nome")),strDecodFormat(servicos[aux].getAttribute("value")));
				}
			}
			// MOZiLLA e Afins
			else{				
				//aqui ele faz um parse pq o mozilla nao impleta o objeto activex 
				xdoc = document.implementation.createDocument("", "", null);
				
				//funcao criada para suprir o loadxml do activex, aqui ele faz o parse da string para objetos xml
				xdoc.loadXML = function (s)
				{
				   // parse the string to a new doc   
				   var doc2 = (new DOMParser()).parseFromString(s, "text/xml");
					  
				   // remove all initial children
				   while (this.hasChildNodes())
					  this.removeChild(this.lastChild);
						 
				   // insert and import nodes
				   for (var i = 0; i < doc2.childNodes.length; i++) {
						this.appendChild(this.importNode(doc2.childNodes[i], true));
				   }
				};
				
				//chama a funcao para converte a string para os nos xml
			    xdoc.loadXML(xmlDoc);
				
				//pega as nos com o nome servico
				var servicos = xdoc.getElementsByTagName("MUNI");
				//preenche a combo dinamicamente com os atributos dos nos selecionados
				//alert(servicos.length);
				obj_select.length=0;
				obj_select[0] = new Option('-- Selecione --','');
				
				for (aux=0;aux<servicos.length;aux++)
				{
					obj_select[aux+1] = new Option(strDecodFormat(servicos[aux].getAttribute("nome")),strDecodFormat(servicos[aux].getAttribute("value")));
					/*Option(strDecodFormat(servicos[aux].getAttribute("nome")),strDecodFormat(servicos[aux].getAttribute("value")));*/
				}
			}
			xdoc = null;
			mostraCarrega("none");
}

/**************************************************************************
 Function:	mostraCarrega
 Purpose:	mostra o simbolo da caixa para indicar que está sendo 
			carregado o conteudo pelo ajax ou outro sistema de consulta
			bApresenta: pode ser Block ou None

 **************************************************************************/
function mostraCarrega(bApresenta)
{
	
	if (bApresenta.toLowerCase()=="block"){
		document.getElementById("botao_procurar").style.paddingLeft = "58px";
	}else{
		document.getElementById("botao_procurar").style.paddingLeft = "90px";
	}
	document.getElementById("carregando").style.display = bApresenta;
}

/************************ Fim das funções usadas para o ajax dos portais *************************/		
/**************************************************************************
 Function:	disparaIframe
 Purpose:	coloca os dados de scr passado por parametro 
 **************************************************************************/
function disparaIframe(idIframe,strSRC)
{
	
	//alert(idIframe + "," + strSRC);
	document.getElementById(idIframe).src = strSRC;
	//document.getElementById(idIframe).location.reload();
}


/**************************************************************************
 Function:	mostraAjax
 Purpose:	carrega para o objeto passado como parametro o texto 
			contido no IFrame
 **************************************************************************/
function mostraAjax(param)
{
	document.getElementById(param).innerHTML = parent.ajax.document.body.innerHTML;
}
/**************************************************************************
 Function:	mostraAjaxIf
 Purpose:	carrega para o objeto passado como parametro o texto 
			contido no IFrame passado com parametro
 **************************************************************************/
function mostraAjaxIf(idIframe,idResultado)
{
	
	//alert();
	document.getElementById(idResultado).innerHTML = parent.ajaxFlash.document.body.innerHTML;
	//alert("");
	/*parent.getElementById(idIframe).document.body.innerHTML;
	parent.ajaxFlash.document.body.innerHTML;
	parent.ajaxFlash.document.getElementById('acumula').innerHTML;*/
}

/**************************************************************************/
/**************************************************************************
  Function Retira o link Boas-Vindas
  Purpose: Retira no breadcrumb a informação de Boas-vindas.
  sId=id que contem o breadCrumb
 ***************************************************************************/
function retiraBoasVindas(sId){
	var strProcura="<A class=link_azul title=Boas-vindas href=\"\/index.asp\">Boas-vindas</A> <IMG src=\"\/_newimages\/bullets\/seta_hierarquia_branca.gif\" border=0>&nbsp;";
	var strProcuraFF="<A href=\"\/index.asp\" class=\"link_azul\" title=\"Boas-vindas\">Boas-vindas</A> <img src=\"\/_newimages\/bullets\/seta_hierarquia_branca.gif\" border=\"0\">&nbsp;";
	var strAux,strHierarquia;
	var iPos;
	
	strAux=document.getElementById(sId).innerHTML;
	iPos=0;
	//verifica a posição do ">Boas-vindas<"
	if (navigator.appName=="Netscape"){
		if (strAux.indexOf(strProcuraFF)!=0){
			strHierarquia=strTroca(strAux,strProcuraFF,"");
		}
	}
	else {
		if (strAux.indexOf(strProcura)!=0){
			strHierarquia=strTroca(strAux,strProcura,"");
		}
	}
	document.getElementById(sId).innerHTML=(strHierarquia);
}
/**************************************************************************/
/**************************************************************************
 Function:	strTroca
 Purpose:	Troca dentro de uma string o valor passado como parametro
 **************************************************************************/
function strTroca(strTexto,objProcurado,objTrocado){
	/*
		define as váriaveis a serem usadas e os objetos
		contendo as expressões regulares
	*/
	var sTexto;
	var objREDecodifica;

	sTexto=strTexto;
	/*
		Objeto RegExp("Exp","opção")
		Exp:Expressão Regular
		opção:
			g> procurar na String Inteira
			i> ignora se é maiuscula ou minuscula
			m> executa em multiplas linhas
	*/
	objREDecodifica=new RegExp(objProcurado,"gim");
	//troca todas a ocorrência do objREFormata pela string passada
	sTexto=sTexto.replace(objREDecodifica,objTrocado);
	return (sTexto);
}
/**************************************************************************/