var bolFormSubmetido = false;

function fnMostraMsg()
{
	if(document.all('divMsg')){
		if(document.all('comeco')){	
			document.location = '#comeco';
		}else{
			alert('nao tem')
		}
		setTimeout("divMsg.style.visibility='visible'",0)
	}

}

function fnSubmeter(strEvento, intForm)

	//************************************************************************************
	// Objetivo: Função que submete o form da tela
	// Parâmetros:	strEvento - Parâmetro que será passado para o ASP através do campo hdnEvento,
	//							este parâmetro funciona como um array onde para cada índice se 
	//							tem um determinado parâmetro, mas por ter que ser colocado 
	//							dentro de um campo hidden do browser ele não pode ser um array tendo
	//							então que ser uma string onde utiliza-se vírgulas para separar 
	//							os parâmetros. Foi definido como padrão que o primeiro parâmetro terá 
	//							sempre que ser o evento que o ASP irá executar, por exemplo, se deseja
	//							executar um evento de alteração de uma determinado tabela onde sua chave
	//							seja de valor 2, o parâmetro terá o seguinte formato: strEvento = 'AL,2'
	//				intForm - Inteiro que identifica qual o form que será submetido
	// Responsavel: Renato Peters da Cunha
	// Data: 18/11/2002
	//*****************************************************************************
{
	var frm = eval('document.frm' + intForm)
	frm.hdnEvento.value = strEvento;
	frm.hdnForm.value = intForm;
	
	//Função Genérica fnSalvaForm
	//verifica a existência da função fnSalvaForm e se existir roda a função fnSalvaForm (localizada no JS do modulo)
	//que irá chamar a função fnSalvaForms popular o campo hdnSalvaForm com os valores do form.
	//
	if(document.all('fnValidaCampos'))
	{	
		if(fnValidaCampos(frm))
		{
			bolFormSubmetido=true;
			//if(document.all('divMsg')){divMsg.style.visibility='visible';}
			fnMostraMsg();
				if(document.all('fnSalvaForm'))
				{
					fnSalvaForm();
				}
			frm.submit();
		}
	}
	else
	{
		bolFormSubmetido = true;
		//if(document.all('divMsg')){divMsg.style.visibility='visible';}
		fnMostraMsg();
			if(document.all('fnSalvaForm'))
			{
				fnSalvaForm();
			}		
		frm.submit();
	}
}

function fnWindowOpen(strURL, strNomWindow, intWidth, intHeight)
//************************************************************************************
// Objetivo: Função que abre uma Window
// Parâmetros:	strURL - endereço URL da Window 
//		strNomWindow - Nome da Window para o titulo
//		intWidth - largura da window
//		intHeight - altura da window
// Responsavel: Roseli Arruda
// Data: 02/12/2002
//*****************************************************************************
{
	window.open(strURL, strNomWindow,"width=" + intWidth + ",height=" + intHeight);
}

function fnMarcaDesmarcaTodos(intForm) 
//************************************************************************************
// Objetivo: Função que seta para true ou para falso todos os checkbox das tabelas da tela
// Parâmetros:	intForm - Inteiro que identifica qual o form que será submetido
// Responsavel: Renato Peters da Cunha
// Data: 18/11/2002
//*****************************************************************************
{
	var f = document.forms(intForm);
	var l_bolCheckado = true
	for (i=0; i<f.length; i++) 
	if (f.elements[i].type == "checkbox")
	{	if (f.elements[i].name.toString().substring(0,8) == "checkOpt")
			if (!(f.elements[i].checked) && f.elements[i].disabled==false) l_bolCheckado = false
			
	}
	for (i=0; i<f.length; i++) 
	if (f.elements[i].type == "checkbox")
	{	if (f.elements[i].name.toString().substring(0,8) == "checkOpt")
			if (!(l_bolCheckado) && f.elements[i].disabled==false) f.elements[i].checked = true
			else f.elements[i].checked = false
	}

}

function fnQtdeCheckSetado(frm) 
//************************************************************************************
// Objetivo: Função que retorna a quantidade de checkbox setados como true
// Parâmetros:	intForm - Inteiro que identifica qual o form que será submetido
// Responsavel: Renato Peters da Cunha
// Data: 18/11/2002
//*****************************************************************************
{
	var intQtde = 0
	var f = frm
	for (i=0; i<f.length; i++) 
	if (f.elements[i].type == "checkbox")
	{
		if (f.elements[i].name.toString().substring(0,8) == "checkOpt")
			if (f.elements[i].checked == true){intQtde++}
			
	}
	return intQtde
}

function fnQtdechkSetadoGenerico(nomeOpt) 
//************************************************************************************
// Objetivo	  : Função que retorna a quantidade de check setados como true
// Parametros : é o campo que está sendo testado
// Responsavel: Luiz Henrique
// Data: 18/11/2002
//*****************************************************************************
{
	var intQtde = 0
	if (nomeOpt){
		if (nomeOpt.length){
			for (i=0; i<nomeOpt.length; i++){
				if (nomeOpt[i].checked){
					intQtde++
				}
			}
		}else{
			if(nomeOpt.checked){
				intQtde++
			}
		}
	}
	return intQtde
}

function fnQtdeOptSetado(frm,nomeOpt) 
//************************************************************************************
// Objetivo: Função que retorna a quantidade de radio setados como true
// Parâmetros:	intForm - Inteiro que identifica qual o form que será submetido
// Responsavel: Renato Peters da Cunha
// Data: 18/11/2002
//*****************************************************************************
{
	var intQtde = 0
	var f = frm
	for (i=0; i<f.length; i++) 
	if (f.elements[i].type == "radio")
	{
		if (f.elements[i].name.toString().substring(0,nomeOpt.length) == nomeOpt)
			if (f.elements[i].checked == true){intQtde++}
			
	}
	return intQtde
}

function fnOnKeyPressCampoData()
//************************************************************************************
// Objetivo: Função que permite somente a digitação de números e do caracter </> para 
//			 os campos de data
// Responsavel: Renato Peters da Cunha
// Data: 18/11/2002
//*****************************************************************************
{
	var l_strLetra
	var l_strValor
	
	l_strValor = event.srcElement.value + ""
	
	if (!fnEhKeyCodeNumero(event.keyCode)){
		event.keyCode=0
	}else{
		if (event.srcElement.TipoDado){
			if (event.srcElement.TipoDado.toUpperCase() == "DTA"){
			
				switch (event.srcElement.Mascara.toUpperCase()){
					case "DD/MM/YYYY":
						if (	(l_strValor.length == 2) || (l_strValor.length == 5)	) {
							event.srcElement.value = event.srcElement.value + "/"
						}
						break
					case "MM/YYYY":
						if (l_strValor.length == 2){
							event.srcElement.value = event.srcElement.value + "/"
						}
						break
				}
			}
			
		}else{
			if ((l_strValor.length == 2) || (l_strValor.length == 5)) {
				event.srcElement.value = event.srcElement.value + "/"
			}
		}
	
	}
		
	
}


function fnOnKeyPressCampoNumerico()
//************************************************************************************
// Objetivo: Função que permite somente a digitação de números para
//			 os campos numéricos
// Responsavel: Renato Peters da Cunha
// Data: 18/11/2002
//*****************************************************************************
{
	if (!(fnEhKeyCodeNumero(event.keyCode)))
	{event.keyCode=0}
	
}


function fnOnKeyPressCampoValor()
//************************************************************************************
// Objetivo: Função que permite somente a digitação de números e uma virgula para
//			 os campos numéricos
// Responsavel: Luiz Henrique Barretto Cerqueira
// Data: 12/01/2003
//*****************************************************************************
{
	if (!(fnEhKeyCodeNumero(event.keyCode) || (event.keyCode == 44))){
		event.keyCode=0
	}else if ((event.keyCode == 44) && (fnTemVirgula(event.srcElement.value))){
		event.keyCode=0
	}
}

function fnTemVirgula(v_strValor)
//************************************************************************************
// Objetivo: Retorna true se a string conte uma virgula
// Responsavel: Luiz Henrique Barretto Cerqueira
// Data: 16/01/2003
//*****************************************************************************
{
	// Consistencia de numerico
	for (i = 0; i < v_strValor.length; i++)
	{
		// Verifica a existencia de caracteres nao numericos
		if (v_strValor.toString().charAt(i) == ",")
			return true;
	}
	return false;

}

function fnVerificaIntervaloValor (v_vlrMinimo, v_vlrTeste, v_vlrMaximo)
//************************************************************************************
// Objetivo: Retorna true se o valor esta dentro do informado
// Responsavel: Luiz Henrique Barretto Cerqueira
// Data: 18/01/2003
//*****************************************************************************
{
	var l_vlrMinimo, l_vlrMaximo, l_vlrTeste
	
	l_vlrMinimo	= fnTrocaVirgulaPorPonto(v_vlrMinimo)*1
	l_vlrMaximo	= fnTrocaVirgulaPorPonto(v_vlrMaximo)*1
	l_vlrTeste	= fnTrocaVirgulaPorPonto(v_vlrTeste)*1

	if ((l_vlrTeste > l_vlrMaximo)||(l_vlrTeste < l_vlrMinimo)){
		return false
	}else{
		return true
	}
}

function fnTrocaVirgulaPorPonto(v_strValor)
//************************************************************************************
// Objetivo: Retorna troca virgula por ponto
// Responsavel: Luiz Henrique Barretto Cerqueira
// Data: 18/01/2003
//*****************************************************************************
{
	// Consistencia de numerico
	for (i = 0; i < v_strValor.length; i++)
	{
		// Verifica a existencia de caracteres nao numericos
		if (v_strValor.toString().charAt(i) == ","){
			v_strValor = v_strValor.toString().substring(0,(i)) + "." + v_strValor.toString().substring(i+1,v_strValor.length) 
		}
	}
	return v_strValor

}	







function fnOnKeyPressCampoAlfabetico()
//************************************************************************************
// Objetivo: Função que permite somente a digitação de números para
//			 os campos numéricos
// Responsavel: Renato Peters da Cunha
// Data: 18/11/2002
//*****************************************************************************
{
	if (fnEhKeyCodeNumero(event.keyCode))
	{event.keyCode=0}
	
}



function fnEhKeyCodeNumero(keyCode)
{
	if ((keyCode>= 48 && keyCode<=57))
	{return true}else{return false}
}


function fnValidaCampoData(objData)
{
	if(!(fnEhDataValida(objData.value)))
	{
		alert('Data inválida!')
		objData.focus()
		return false
	}
	else
	{
		return true
	}
}

function fnEhDataValida(strData)
{

	if(strData.length!=0)
	{	

		if(strData.length!=10)
		{
			return false
		}
		else
		{
			var intPos = strData.indexOf("/")
			var dia = strData.substr(0,intPos)
		
			intPos2 = strData.lastIndexOf("/")
			var mes = strData.substr(intPos+1,intPos2-intPos-1)
	
			intPos = strData.lastIndexOf("/")
			var ano = strData.substr(intPos2+1,intPos)
			if (ano.length == 2)
			{	ano = '20'+ano}
	
			var ehAnoBiSexto = (ano % 4)==0
	
			if (ano < 1800){
				return false
			}
			else if (mes < 1 || mes > 12){
				return false
			}
			else if(mes == 1 || mes == 3 || mes == 5 || mes == 7 || mes == 8 || mes == 10 || mes == 12)
			{
				if (dia < 1 || dia > 31)
				{
				return false
				}
				else
				{
				return true
				}
			}
			else if (mes == 2)
			{
				if (ehAnoBiSexto)
				{
					if(dia<1 || dia>29)
					{
					return false
					}
					else
					{
					return true
					}
				}
				else
				{
				if(dia<1 || dia>28)
					{
					return false
					}
					else
					{
					return true
					}
				}
			}
			else 
			{
				if (dia < 1 || dia > 30)
				{
				return false
				}
				else
				{
				return true
				}
			}
		
		}
	}
	else
	{
	return true
	}
}

function fnEhNumero(v_strValor)
//************************************************************************************
// Objetivo: Função que valida se o valor de um campo é numérico
// Parâmetros:	v_strValor - Valor para validação
// Responsavel: Renato Peters da Cunha
// Data: 18/11/2002
//*****************************************************************************
	{
		// Consistencia de numerico
		v_strValor.value = fnTrimJs(v_strValor.value)		
		for (i = 0; i < v_strValor.value.length; i++)
		{
			
			// Verifica a existencia de caracteres nao numericos
			if	(((v_strValor.value.toString().charAt(i) < "0") || (v_strValor.value.toString().charAt(i) > "9")) &&
				 ((v_strValor.value.toString().charAt(i) != ",") && (v_strValor.value.toString().charAt(i) != "-") && 
				 (v_strValor.value.toString().charAt(i) != "."))
				){
				return false;
			}
		}

		// OK todo o conteudo é numerico...
		return true;

	}
	


function fnValidaCamposObrigatorios(frm){
	var i, j, blnChecked, blnErro
	
	/*
	Para utilizar essa função coloque o seguinte texto nos campos que são obrigatórios:
		NomeCampoObrigatorio="Nome do campo na tela"
	Ex.:
		<input name="txt_fct_cod_crf" size="15" maxlength="10" NomeCampoObrigatorio="CRF">
	*/
	
	for (i=0 ;i<frm.elements.length;i++){
		
		blnChecked = false
		blnErro = false
		switch (frm.elements[i].type){
			case "textarea":
				if (frm.elements[i].NomeCampoObrigatorio){
					if (fnTrimJs(frm.elements[i].value)==""){
						alert("O campo '" + frm.elements[i].NomeCampoObrigatorio + " é obrigatório")
						blnErro=true
					}
				}
				break
			case "select-one":
				if (frm.elements[i].NomeCampoObrigatorio){
					if ((frm.elements[i].value=="") || (frm.elements[i].selectedIndex=="-1")){
						alert("O campo '" + frm.elements[i].NomeCampoObrigatorio + "' é obrigatório!")
						blnErro=true
					}
				}
				break
						
			case "text":
				if (frm.elements[i].NomeCampoObrigatorio){
					if (fnTrimJs(frm.elements[i].value)==""){
						alert("O campo '" + frm.elements[i].NomeCampoObrigatorio + "' é obrigatório!")
						blnErro=true
					}
				}
				break
			
			case "radio":
				var objTemp;
				objTemp = eval("frm." + frm.elements[i].name);
				if ((isArray(objTemp) && objTemp[0].NomeCampoObrigatorio) || 
					(!isArray(objTemp) && objTemp.NomeCampoObrigatorio)){

					for (j=0; j<(eval("frm." + frm.elements[i].name).length); j++){
						blnChecked =  ((eval("frm." + frm.elements[i].name)[j].checked) || (blnChecked == true))
					}
					if (!blnChecked){
						alert("O campo '" + eval("frm." + frm.elements[i].name)[0].NomeCampoObrigatorio + "' é obrigatório!")
						blnErro=true
					}
				}
				break
		}
		if (blnErro){
			break
		}
	}
	if (blnErro){
		if (frm.txtCampo1){
			if (!frm.txtCampo1.disabled && !frm.txtCampo1.readOnly)
				frm.txtCampo1.focus()
			
		}
		if (!frm.elements[i].disabled  && !frm.elements[i].readOnly)
			frm.elements[i].focus()
	}
	return !blnErro 
}

function isArray(elementInQuestion) {
	if (elementInQuestion.length) {
		return true;
	} else {
		return false;
	}
}
function MM_goToURL() { 
  var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
  for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
}



function fnEhAlfabetico(Campo)
	{
		// Consistencia de numerico
		for (i = 0; i < Campo.value.length; i++)
		{
			
			// Verifica a existencia de caracteres especiais
			if (((Campo.value.toString().charAt(i) < "a")  ||
				 (Campo.value.toString().charAt(i) > "z")) &&
				((Campo.value.toString().charAt(i) < "A")  ||
				 (Campo.value.toString().charAt(i) > "Z")) &&
				((Campo.value.toString().charAt(i) < "0")  ||
				 (Campo.value.toString().charAt(i) > "9")) &&
				 (Campo.value.toString().charAt(i) != " ") &&
				 (Campo.value.toString().charAt(i) != "."))
				return false;
		}
		
		// OK todo o conteudo é Alfa...
		return true;
	
	}
	
	
	
function fnSubmeterCombo()
{	var obj = event.srcElement
	var strSubmeter
	
	if ((obj.item(obj.selectedIndex).value != -1) ){
		strSubmeter = 'SC,' + obj.item(obj.selectedIndex).value + ',' + obj.options[obj.selectedIndex].text
		fnSubmeter(strSubmeter,0)
	}
}

function fnSubmeterComboPrm(v_strCodigos)
{	
	var obj = event.srcElement
	var strSubmeter
	if (obj.item(obj.selectedIndex).value == "") {
		alert('Selecione uma Empresa!')
		return true;
	}		
	if ((obj.item(obj.selectedIndex).value != -1) ){
		strSubmeter = 'SC,' + obj.item(obj.selectedIndex).value + ',' + obj.options[obj.selectedIndex].text + ',' + v_strCodigos
		fnSubmeter(strSubmeter,0)	
	}
}

function fnValidaNroCPF (CPF) {
	if (CPF.length != 11 || CPF == "00000000000" || CPF == "11111111111" ||
		CPF == "22222222222" ||	CPF == "33333333333" || CPF == "44444444444" ||
		CPF == "55555555555" || CPF == "66666666666" || CPF == "77777777777" ||
		CPF == "88888888888" || CPF == "99999999999"){
		return false;
	}
	soma = 0;
	for (i=0; i < 9; i ++){
		soma += parseInt(CPF.charAt(i)) * (10 - i);
	}
	resto = 11 - (soma % 11);
	if (resto == 10 || resto == 11){
		resto = 0;
	}
	if (resto != parseInt(CPF.charAt(9))){
		return false;
	}
	soma = 0;
	for (i = 0; i < 10; i ++){
		soma += parseInt(CPF.charAt(i)) * (11 - i);
	}
	resto = 11 - (soma % 11);
	if (resto == 10 || resto == 11){
		resto = 0;
	}
	if (resto != parseInt(CPF.charAt(10))){
		return false;
	}
	return true;
}

// Calcula o 1º dígito verificador do CGC (CNPJ)
function DV1CNPJ( strNumero ) 
{
   var strPeso
   var nNumero, nPosPeso, nPeso, nTotal, nResto, i
   var nDigito
   
   strPeso = "6543298765432"
   nTotal = 0
   nPosPeso = strPeso.length -1
   for( i = strNumero.length-1; i > 0;  i--){
      nNumero = parseInt( strNumero.charAt(i) )
      nPeso = parseInt( strPeso.charAt( nPosPeso) )
      if( nPosPeso >= 1)
      {
         nPosPeso = nPosPeso -1
      }
      else
      {
         nPosPeso = strPeso.length -1
      }
      nTotal = nTotal + ( nNumero * nPeso )
   }
   
   nResto = nTotal % 11
   if( nResto == 0 || nResto ==1){
	return(0)
   }
    else
    {
       return( 11 - nResto)
    }
}

// Calcula o 2º dígito verificador do CGC (CNPJ).
function DV2CNPJ( strNumero ) 
{
	var strPeso
	var nNumero, nPosPeso, nPeso, nTotal, nResto, i
	var nDigito
   
	strPeso = "6543298765432"
	nTotal = 0
	nPosPeso = strPeso.length -1
	for( i = strNumero.length-1; i > 0;  i--){
		nNumero = parseInt( strNumero.charAt(i) )
		nPeso = parseInt( strPeso.charAt( nPosPeso) )
		if( nPosPeso >= 1)
		{
			nPosPeso = nPosPeso -1
		}
		else
		{
			nPosPeso = strPeso.length -1
		}
		nTotal = nTotal + ( nNumero * nPeso )
	}
   
	nResto = nTotal % 11
	if( nResto == 0 || nResto ==1)
	{
		return(0)
	}
    else
    {
       return( 11 - nResto)
    }
}

//Verifica se o CNPJ é válido.
function fnValidaNroCNPJ( strNumero )
{
	var strCorpCNPJ
	var strDv1
	var strDv2
   	if( strNumero.length != 14){
		return(false)
	}
	else {
		strCorpCNPJ = strNumero.substring(0, 12)
	}
	strDv1 = DV1CNPJ( "0" + strCorpCNPJ )
	strDv2 = DV2CNPJ( "0" + strCorpCNPJ+strDv1 )
		  
   	if( strNumero == strCorpCNPJ+strDv1+strDv2){
      		return(true)
	}
   	else {
	  	return(false)
	}
}


function fnVerificaPreferencia(frm){
	var l_intI
	var l_blnRetorno
	
	l_blnRetorno = true
	for(l_intI = 0; l_intI < frm.checkOpt.length; l_intI++){
		if (frm.checkOpt[l_intI].checked && frm.checkOpt[l_intI].preferencia=='S'){
			l_blnRetorno = false
			break
		}
	}
	return l_blnRetorno
}

function fnValidaEmail(email){


	//obtem posição do '@' na string
	var intPosCarac=email.indexOf("@");
	if((intPosCarac==-1)||(validaChr(email))){
		return false;
	}
	else{
		//obtem string apos '@'
		var strDepois=email.substr(intPosCarac+1,email.length-intPosCarac)
		var strAntes=email.substr(0,intPosCarac);
		//verifica existencia do '.'
		intPosCarac=strDepois.indexOf(".");
		if(intPosCarac==-1){
			return false;
		}
		else{
			//faz enquanto fim string ,diferente de '..' e carecteres invalidos
			while(intPosCarac!=-1){
				if(strAntes==""||strAntes=="."||strDepois=="."||(!ValidaAlfa(strDepois))||(!ValidaAlfa(strAntes))){
					return false;
				}
				
				else{
					strDepois=strDepois.substr(intPosCarac+1,strDepois.length-intPosCarac);
					strAntes=strDepois.substr(0,intPosCarac)			
						//verifica caracteres
						if(strAntes==""||(!ValidaAlfa(strDepois))||(!ValidaAlfa(strAntes))){
							return false;
						}
				}
				intPosCarac=strDepois.indexOf(".")
			}
			return true;
		}
	}
}
	
	function ValidaAlfa(nome){
	//fc de validacao,nome deve ser igual a caracteres da cadeia
		cadeia="'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvxwzyz0123456789.-_";
		for(i=0;i<nome.length;i++){
			if(cadeia.indexOf(nome.substring(i,i+1))==-1){
				return false;
			}
		}
	return true;
	}
	
	function validaChr(strEmail){
	//fc de validacao,nome deve ser diferente da cadeia
	cadeia=' []{}ÄËÏÖÜäëïöüÁÉÍÓÚáéíóúÃÕãõÂÊÎÔÛâêîôûàìòùÀÈÌÒÙàèìòùÇç,!#$%^&*"~`/\\()|';
		for(i=0;i<strEmail.length;i++){
			if(cadeia.indexOf(strEmail.substring(i,i+1))==-1){
				return false;
			}
		}
	return true;
	}
	
function comparaDatas (valor1	, valor2) {
   // -----------------------------------------------------
   // esta função retorna 1 ou -1
   // foi criada nova versão com o nome de fnComparaDatas 
   // que retorna true ou false
   // ----------------------------------------------------
   // João Otávio Fonseca
   // data: 07/03/2003
   /* 
    Se valor1 > valor2 retorna  1
    Se igual, retorna 0
    
    */
   var dia1, dia2;
   var mes1, mes2;
   var ano1, ano2;

   dia1 = valor1.substring (0, valor1.indexOf ("/"));
   mes1 = valor1.substring (valor1.indexOf ("/")+1, valor1.lastIndexOf ("/"));
   ano1 = valor1.substring (valor1.lastIndexOf ("/")+1, valor1.length);

   dia2 = valor2.substring (0, valor2.indexOf ("/"));
   mes2 = valor2.substring (valor2.indexOf ("/")+1, valor2.lastIndexOf ("/"));
   ano2 = valor2.substring (valor2.lastIndexOf ("/")+1, valor2.length);

   if (ano1 > ano2) return 1;
   else if (ano1 < ano2) return -1;
   else if (mes1 > mes2) return 1;
   else if (mes1 < mes2) return -1;
   else if (dia1 > dia2) return 1;
   else if (dia1 < dia2) return -1;
   else return 1;
} 	
	
function fnComparaDatas (valor1	, valor2) {
    /*
    Luiz Henrique
    data: 03/09/2003
    
    Se valor1 > valor2 retorna  1
    Se igual, retorna 0
    
    */
	var dia1, dia2;
	var mes1, mes2;
	var ano1, ano2;

	dia1 = valor1.substring (0, valor1.indexOf ("/"));
	mes1 = valor1.substring (valor1.indexOf ("/")+1, valor1.lastIndexOf ("/"));
	ano1 = valor1.substring (valor1.lastIndexOf ("/")+1, valor1.length);

	dia2 = valor2.substring (0, valor2.indexOf ("/"));
	mes2 = valor2.substring (valor2.indexOf ("/")+1, valor2.lastIndexOf ("/"));
	ano2 = valor2.substring (valor2.lastIndexOf ("/")+1, valor2.length);
	if((ano2 + "-" + mes2 + "-" + dia2) < (ano1 + "-" + mes1 + "-" + dia1)){
		return false
	}
	else {
		return true
	}

}


function fnAbreJanelaRelatorio(frm)
//*********************************************************************************************
// Objetivo: Função que prepara o retorno para a página chamadora de execução de Relatórios
//			 que depois de finalizado deve executar o evento "ATZ"-Atualização 
//           (Ex.: Método que será executado para marcar os registros processados)
//
// Parâmetros: frm ( form chamador)
// Responsavel: Roseli Arruda
// Data: 25/03/2003
//**********************************************************************************************
{
	if (frm.hdnNamePagina) 
	{
		arrNamePagina = document.location.href.split("/");
		strNamePagina = arrNamePagina[arrNamePagina.length-3] + "/" + arrNamePagina[arrNamePagina.length-2] + "/" + arrNamePagina[arrNamePagina.length-1];	
		frm.hdnNamePagina.value = strNamePagina;
	}
}


function fnOnKeyPressCampoIdt()
//************************************************************************************
// Objetivo: Função para os campos que podem aceitar "/", ",", ".", "-" e numeros
// Responsavel: Luiz Henrique Barretto Cerqueira
// Data: 26/03/2003
//*****************************************************************************
{
	if	(!(fnEhKeyCodeNumero(event.keyCode)) && 
		 (event.keyCode!=44) &&
		 (event.keyCode!=45) &&
		 (event.keyCode!=46) &&
		 (event.keyCode!=47))
	{
		event.keyCode=0
	}
	
}


function fnMarcaDesmarcaTodosGenerico(objCheck){
//************************************************************************************
// Objetivo		: Marca todos os componetes check do arrey passado 
// Responsavel	: Luiz Henrique Barretto Cerqueira
// Data			: 08/04/2003
//*****************************************************************************
	var i
	var indexBase
	if (objCheck){
		if(objCheck.length){
			for (i=0; i<objCheck.length; i++){
				if (!objCheck[i].ValorInicial){
					indexBase = i
					break
				}
			}
			objCheck[indexBase].checked = !objCheck[indexBase].checked && !objCheck[indexBase].disabled
			for (i=indexBase+1; i<objCheck.length; i++){
				objCheck[i].checked = objCheck[indexBase].checked
				if (objCheck[i].ValorInicial){
					objCheck[i].checked = true && !objCheck[i].disabled
				}
			}
		}else{
			objCheck.checked = !objCheck.checked
			if (objCheck.ValorInicial){
				objCheck.checked = true && !objCheck.disabled
			}
		}
	}
}



function fnConverteDateToTimestamp(str){
//************************************************************************************
// Objetivo: Função para converter data para timestamp
// Responsavel: Luiz Henrique Barretto Cerqueira
// Data: 15/04/2003
//*****************************************************************************

	str = str.split("/")[2] + "/" + 
		  str.split("/")[1] + "/" + 
		  str.split("/")[0] + " 00:00:00"

	return str
}

function fnConverteTimestampToDate(str){
//************************************************************************************
// Objetivo: Função para converter timestamp  para  data
// Responsavel: Filipe
// Data: 29/05/2003
//*****************************************************************************

	str = str.split(" ")[0];
	str = str.split("-")[2] + "/" + 
		  str.split("-")[1] + "/" + 
		  str.split("-")[0];

	return str
}


function MenuFixo(top){
//************************************************************************************
// Objetivo: Função mover o menu junto com o scrol da tela
// Responsavel: Luiz Henrique Barretto Cerqueira
// Data: 18/04/2003
//*****************************************************************************
	if (document.body.scrollTop > top)	Layer1.style.top = (document.body.scrollTop) + "px";
	else Layer1.style.top = top;
}



function fnOnKeyPressAnulaCaracter(cadeia)
	//************************************************************************************
	// Objetivo: Função que só permite digitar os caracteres diferentes dos caracteres da cadeia de caracteres passada
	// Responsavel: Luiz Henrique Barretto Cerqueira
	// Data: 18/04/2003
	//*****************************************************************************
{	
	for(i=0;i<cadeia.length;i++){
		if (cadeia.charCodeAt(i)== event.keyCode ){
			event.keyCode = 0
		}
	}
}

function fnOnKeyPressApenasCaracter(cadeia)
	//************************************************************************************
	// Objetivo: Função que só permite digitar os caracteres da cadeia de caracteres passada
	// Responsavel: Luiz Henrique Barretto Cerqueira
	// Data: 18/04/2003
	//*****************************************************************************
{	
	var l_blnEncontrou = false
	for(i=0;i<cadeia.length;i++){
		if (cadeia.charCodeAt(i)== event.keyCode ){
			l_blnEncontrou = true
			break
		}
	}
	if (!l_blnEncontrou){
		event.keyCode = 0
	}
}

//************************************************************************************
// Objetivo: Função para os campos que podem aceitar "/", ",", ".", "-" e numeros
// Responsavel: Luiz Henrique Barretto Cerqueira
// Data: 26/03/2003
//*****************************************************************************
function validaChr(str){
cadeia='[]{},!#$%^&*"~`/\\()|';
	for(i=0;i<str.length;i++){
		if(cadeia.indexOf(str.substring(i,i+1))==-1){
			return false;
		}
	}
return true;
}

function trocarcaracter(texto,de,por) {
//************************************************************************************
// Objetivo: Função que trtoca caracteres
//           texto em questão; de: trocar de... por: trocar por
//ex. de chamada: trocarcaracter(this.form.exemplo.value,'-','/')
// Responsavel: João Otávio Fonseca
// Data: 03/05/2003
//*****************************************************************************

    var tamanho = texto.length, txtLength = de.length;
    if ((tamanho == 0) || (txtLength == 0)) return texto;

    var i = texto.indexOf(de);
    if ((!i) && (de != texto.substring(0,txtLength))) return texto;
    if (i == -1) return texto;

    var novoTexto = texto.substring(0,i) + por;

    if (i+txtLength < tamanho)
        novoTexto += trocarcaracter(texto.substring(i+txtLength,tamanho),de,por);

    return novoTexto;
}

function fnOnKeyPressAnulaCaracterEspeciais()
	//************************************************************************************
	// Objetivo: Função que só permite digitar os caracteres diferentes dos caracteres da cadeia de caracteres passada
	// Responsavel: Luiz Henrique Barretto Cerqueira
	// Data: 18/04/2003
	//*****************************************************************************
{	
	var cadeia='[]{},!#$%^&*"~`/\\()|';
	fnOnKeyPressAnulaCaracter(cadeia)
}



function fnCarregaCampoApartirCombo(obj,numValue){
	//*********************************************************************************
	// Objetivo: Carrega o objeto passado com o valoe do combo napossição corrente
	// Responsavel: Luiz Henrique Barretto Cerqueira
	// Data: 09/05/2003
	//*********************************************************************************

	
	if ((numValue == 0) || (numValue == "0")){
		numValue = ""
	}
	obj.value = eval("event.srcElement.options[event.srcElement.selectedIndex].value" + numValue)
}

function fnVerificaSelecaoCombo(v_strAlert,v_obj )
{
	if (v_obj.item(v_obj.selectedIndex).value == "") {
		alert(v_strAlert)
		return true;
	}
}	

function fnPosicionaCombo(objCmb,numValue){
	//*********************************************************************************
	// Objetivo: Posiciona o combo conforme o valor do txt passado e o numero do value escolhido
	// Responsavel: Luiz Henrique Barretto Cerqueira
	// Data: 09/05/2003
	//*********************************************************************************
	var l_lngI, l_lngTot, l_strValor
	
	l_lngTot = objCmb.options.length
	
	if	(		(numValue == 0 )
			||	(numValue == "0") 
		)
	{	
		numValue = ""
	}
	
	for (l_lngI=0;l_lngI < l_lngTot; l_lngI++){
		l_strValor = eval("objCmb.options[l_lngI].value" + numValue)
		if( l_strValor == event.srcElement.value )
		{
			objCmb.options[l_lngI].selected = true
			break
		}else{
			objCmb.options[0].selected = true
		}
	}
}

function comparaMesAno (valor1	, valor2) {
   /*
    João Otávio Fonseca
    data: 21/05/2003
    
    Se valor1 > valor2 retorna  1
    Se igual, retorna 0
    
    */
   
   var mes1, mes2;
   var ano1, ano2;

   var intPos = valor1.indexOf("/")
   var mes1 = valor1.substr(0,intPos)
		
   intPos = valor1.lastIndexOf("/")
   var ano1 = valor1.substr(intPos+1,4)	
   
     
   var intPos = valor2.indexOf("/")
   var mes2 = valor2.substr(0,intPos)
	  
		
   intPos = valor2.lastIndexOf("/")
   var ano2 = valor2.substr(intPos+1,4)

   if (ano1 > ano2) return 1;
   if (ano1 < ano2) return -1;
   if (ano1 = ano2)
   {
    if (mes1 > mes2) return 1; 
    if (mes1 < mes2) return -1;
    if (mes1 = mes2) return -1;
   }
   
}

function fnEhMesAnoValido(strData)
{
	//*********************************************************************************
	// Objetivo		: Validar mes e ano
	// Responsavel	: João Otávio
	// Data			: 20/05/2003
	//*********************************************************************************
	if(strData.length!=0)
	{	
		if(strData.length!=7)
		{
			return false
		}
		else
		{
			var intPos = strData.indexOf("/")
			var mes = strData.substr(0,intPos)
		
			intPos = strData.lastIndexOf("/")
			var ano = strData.substr(intPos+1,4)
			if (ano.length == 2)
			{	ano = '20'+ano}
	
			var ehAnoBiSexto = (ano % 4)==0
	
			if (ano < 1900)
			{
			return false
			}
			else if (mes < 1 || mes > 12)
			{
			return false
			}
				
		}
	}
	return true
}



function fnSetaAparenciaHabilitaDesabilita(v_frm){
	/********************************************************************
	* OBJETIVO	:	Altera a aparencia dos campos para ficar de acordo	*
	*				com o status de habilidato e desabilitado			*
	*				ESSA FUNÇÂO NÂO DESABILITA OU HABILITA.				*
	* POR		: Luiz Henrique Barretto Cerqueira						*
	* EM		: 22/05/2003											*
	********************************************************************/
	var i
		
	for (i=0 ; i<v_frm.elements.length ; i++){
		if	(
			((v_frm.elements[i].disabled) || (v_frm.elements[i].readOnly)) &&
			(v_frm.elements[i].type != "checkbox") && 
			(v_frm.elements[i].type != "radio")
			){
				v_frm.elements[i].style.backgroundColor	= "#fff5ee"
		}else{ 
			if	(
				((!v_frm.elements[i].disabled) && (!v_frm.elements[i].readOnly)) &&
				(v_frm.elements[i].type != "checkbox") && 
				(v_frm.elements[i].type != "radio")
				){
					v_frm.elements[i].style.backgroundColor = "#ffffff"
				}
		}
		
	}
}


function fnKeyPressGenerica(){
	/********************************************************************
	* OBJETIVO	: Validar os campos do tipo TEXT e TEXTAREA do html.	*
	* POR		: Luiz Henrique Barretto Cerqueira						*
	* EM		: 30/06/2003											*
	********************************************************************/
	
	var strTipoDado		= event.srcElement.TipoDado.toUpperCase() + ""
	var strMinimo		= event.srcElement.Minimo + ""
	var strMaximo		= event.srcElement.Maximo + ""
	var strMascara		= event.srcElement.Mascara.toUpperCase() + ""
	var strDescricao	= event.srcElement.Descricao + ""
	var strValue		= event.srcElement.value + ""

	switch (strTipoDado){
		case "INT":
			fnOnKeyPressCampoNumerico()
			break
		case "DBL":
			fnOnKeyPressCampoValor()
			break
		case "TXT":
			fnOnKeyPressAnulaCaracter("'")
			break
		case "DTA":
			fnOnKeyPressCampoData()
			break
		case "HRA":
			fnOnKeyPressCampoHora()
			break
			
	}

}

function fnKeyUpGenerica(){
	/********************************************************************
	* OBJETIVO	: Validar os campos do tipo TEXT e TEXTAREA do html.	*
	* POR		: Luiz Henrique Barretto Cerqueira						*
	* EM		: 30/06/2003											*
	********************************************************************/
	
	var strTipoDado		= event.srcElement.TipoDado.toUpperCase() + ""
	var strMinimo		= event.srcElement.Minimo + ""
	var strMaximo		= event.srcElement.Maximo + ""
	var strMascara		= event.srcElement.Mascara.toUpperCase() + ""
	var strDescricao	= event.srcElement.Descricao + ""
	var strValue		= event.srcElement.value + ""
	
	if (strValue != ""){
		switch (strTipoDado){
			case "INT":
				if (strMinimo == ""){strMinimo = -2147483648}
				if (strMaximo == ""){strMaximo = 2147483647}
				if (!fnVerificaIntervaloValor (strMinimo, strValue, strMaximo)){
					alert('O campo (' + strDescricao + ') está fora do valor correto!')
				}
				break
			case "DBL":
				if (strMinimo == "") strMinimo = -9999999999999.99
				if (strMaximo == "") strMaximo = 9999999999999.99
				if (strMinimo != "" && strMaximo != ""){
					if (!fnVerificaIntervaloValor (strMinimo, strValue, strMaximo)){
						alert('O campo (' + strDescricao + ') está fora do valor correto!')
					}
				}
				break
			case "DTA":
				switch (strMascara){
					case "DD/MM/YYYY":
						if (strValue.length >= 10){
							if (!fnEhDataValida(strValue)){
								alert("A data do campo (" + strDescricao + ") está inválida!")
								event.srcElement.select()
								return false
							}
							if (strMinimo != ""){
								if (!fnComparaDatas(strMinimo,strValue) && strMinimo != strValue){
									alert("A menor data permitida para o campo " + strDescricao + " é (" + strMinimo + ") informe uma data maior ou igual a essa!")
									event.srcElement.select()
									return false
								}
							}
							if (strMaximo){
								if (!fnComparaDatas(strValue, strMaximo) && strMaximo != strValue) {
									alert("A maior data permitida para o campo " + strDescricao + " é (" + strMaximo + ") informe uma data menor ou igual a essa!")
									event.srcElement.select()
									return false
								}
							}
						}

						break
					case "MM/YYYY":
						if (strValue.length >= 7){
							if (!fnEhDataValida("01/" + strValue)){
								alert("A data do campo (" + strDescricao + ") está inválida!")
							}
							
							if (strMinimo != ""){
								if (!fnComparaDatas(strMinimo,"01/" + strValue) && strMinimo != strValue){
									alert("A menor data permitida para o campo " + strDescricao + " é (" + strMinimo + ") informe uma data maior ou igual a essa!")
									return false
								}
							}
							if (strMaximo){
								if (!fnComparaDatas("01/" + strValue, strMaximo) && strMaximo != strValue) {
									alert("A maior data permitida para o campo " + strDescricao + " é (" + strMaximo + ") informe uma data menor ou igual a essa!")
									return false
								}
							}
						}
						break
				}
				break
		}
	}
}

function fnKeyDownGenerica(){
	/********************************************************************
	* OBJETIVO	: Validar os campos do tipo TEXT e TEXTAREA do html.	*
	* POR		: Luiz Henrique Barretto Cerqueira						*
	* EM		: 30/06/2003											*
	********************************************************************/
//alert('aqui1');
}

function fnDblClickGenerica(){
	/********************************************************************
	* OBJETIVO	: Validar os campos do tipo TEXT e TEXTAREA do html.	*
	* POR		: Luiz Henrique Barretto Cerqueira						*
	* EM		: 30/06/2003											*
	********************************************************************/
//alert('aqui2');
}


function fnBlurGenerica(){
	/********************************************************************
	* OBJETIVO	: Validar os campos do tipo TEXT e TEXTAREA do html.	*
	* POR		: Luiz Henrique Barretto Cerqueira						*
	* EM		: 30/06/2003											*
	********************************************************************/
//alert('aqui3');
}

function fnValidaCamposPorTipoDado(v_frm){
	/********************************************************************
	* OBJETIVO	: Validar os campos do formulario.						*
	* POR		: Luiz Henrique Barretto Cerqueira						*
	* EM		: 02/07/2003											*
	********************************************************************/
	function fnFocus(v_obj){
		if (!v_obj.disabled && !v_obj.readOnly){
			v_obj.focus()
		}
	}

	var l_lngI, l_lngJ, l_obj, l_arrChar, l_strCaracterProibido
	
	for (l_lngI=0 ;l_lngI<v_frm.elements.length;l_lngI++){
		
		l_obj = v_frm.elements[l_lngI]
		
		if (l_obj.TipoDado){
			switch (l_obj.TipoDado.toUpperCase()){
				case "TXT":
						l_strCaracterProibido = "'"
						l_arrChar = l_strCaracterProibido.split("")
					
						for (l_lngJ=0; l_lngJ < l_arrChar.length; l_lngJ++){	
							if (l_obj.value.indexOf(l_arrChar[l_lngJ],0) != -1){
								alert('Existem caracteres proibidos no campo (' + l_obj.Descricao + ')\nEsse campo não pode ter os caracteres (     ' + l_strCaracterProibido + '     )' );
								fnFocus(l_obj)
								return false
							}
						}
					break
				case "INT":
					if (!fnEhNumero(l_obj)){
						alert('O campo (' + l_obj.Descricao + ') deve ser numérico!')
						fnFocus(l_obj)
						return false
					}else{
						if (l_obj.Minimo == "") l_obj.Minimo = -2147483648
						if (l_obj.Maximo == "") l_obj.Maximo = 2147483647
					
						if (!fnVerificaIntervaloValor (l_obj.Minimo, l_obj.value, l_obj.Maximo)){
							alert('O campo (' + l_obj.Descricao + ') está fora do intervalo correto!')
							fnFocus(l_obj)
							return false
						}
					}
					break
				case "DBL":
					if (!fnEhNumero(l_obj)){
						alert('O campo (' + l_obj.Descricao + ') deve ser numérico!')
						fnFocus(l_obj)
						return false
					}else{
						if (l_obj.Minimo == "") l_obj.Minimo = -999999999999999
						if (l_obj.Maximo == "") l_obj.Maximo = 999999999999999
					
						if (!fnVerificaIntervaloValor (l_obj.Minimo, l_obj.value, l_obj.Maximo)){
							alert('O campo (' + l_obj.Descricao + ') está fora do intervalo correto!')
							fnFocus(l_obj)
							return false
						}
					}

					break
				case "DTA":
					switch (l_obj.Mascara.toUpperCase()){
						case "DD/MM/YYYY":
							if (!fnEhDataValida(l_obj.value)){
								alert('O campo (' + l_obj.Descricao + ') está com uma data inválida!');
								fnFocus(l_obj);
								return false;
							}
							if (l_obj.Minimo){
								if (!fnComparaDatas(l_obj.Minimo,l_obj.value) && l_obj.Minimo != l_obj.value){
									alert("A menor data permitida para o campo " + l_obj.Descricao + " é (" + l_obj.Minimo + ") informe uma data maior ou igual a essa!")
									return false
								}
							}
							if (l_obj.Maximo){
								if (!fnComparaDatas(l_obj.value, l_obj.Maximo) && l_obj.Maximo != l_obj.value) {
									alert("A maior data permitida para o campo " + l_obj.Descricao + " é (" + l_obj.Maximo + ") informe uma data menor ou igual a essa!")
									return false
								}
							}
							break;
						case "MM/YYYY":
							if (l_obj.value != ""){
								if (!fnEhDataValida('01/' + l_obj.value)){
									alert('O campo (' + l_obj.Descricao + ') está com um mês/ano inválido!');
									fnFocus(l_obj);
									return false;
								}
								if (l_obj.Minimo){
									if (!fnComparaDatas("01/" + l_obj.Minimo, "01/" + l_obj.value) && l_obj.Minimo != l_obj.value){
										alert("A menor data permitida para o campo " + l_obj.Descricao + " é (" + l_obj.Minimo + ") informe uma data maior ou igual a essa!")
										fnFocus(l_obj);
										return false
									}
								}
								if (l_obj.Maximo){
									if (!fnComparaDatas("01/" + l_obj.value, "01/" + l_obj.Maximo) && l_obj.Maximo != l_obj.value){
										alert("A maior data permitida para o campo " + l_obj.Descricao + " é (" + l_obj.Maximo + ") informe uma data menor ou igual a essa!")
										fnFocus(l_obj);
										return false
									}
								}
							}
							break;
					}
					break;
				case "HRA":
					var arrHora
					arrHora = l_obj.value.split(":");
					if((parseInt(arrHora[0])>23)||(parseInt(arrHora[0])<0))
					{
						alert('Hora inválida');
						l_obj.focus();
						return false;
					}
					if((parseInt(arrHora[1])>59)||(parseInt(arrHora[1])<0))
					{
						alert('Minuto inválido');
						l_obj.focus();
						return false;
					}
			}
		}
	}
	return true
}

// BRQ


function fnValidaCamposObrigatoriosSeletivo(frm, nomesCamposValidar, nomesCamposIgnorar)
//*********************************************************************************
// Objetivo: Derivado de fnValidaCamposObrigatorios, porém permitindo especificar
//           uma lista de nomes de controles separados por vírgula, que devem ser
//           validados ('' significa validar todos) e um lista de controle que de-
//           vem ser ignorados ('' significa validar todos).
// Responsavel: Edmundo
// Data: 10/07/2003
//*********************************************************************************
{
	var i, j, blnChecked, blnErro
	
	/*
	Para utilizar essa função coloque o seguinte texto nos campos que são obrigatórios:
		NomeCampoObrigatorio="Nome do campo na tela"
	Ex.:
		<input name="txt_fct_cod_crf" size="15" maxlength="10" NomeCampoObrigatorio="CRF">
	*/
	
	var strValidar = "," + nomesCamposValidar + ",";
	var strIgnorar = "," + nomesCamposIgnorar + ",";
	
	for (i=0 ;i<frm.elements.length;i++){

		if (((nomesCamposValidar == '') || (strValidar.indexOf("," + frm.elements[i].name + ",") != -1) ) &&
			((nomesCamposIgnorar == '') || (strIgnorar.indexOf("," + frm.elements[i].name + ",") == -1) ))
		{
			blnChecked = false
			blnErro = false
			switch (frm.elements[i].type){
				
				case "textarea":
					if (frm.elements[i].NomeCampoObrigatorio){
						if (fnTrimJs(frm.elements[i].value)==""){
							alert("O campo '" + frm.elements[i].NomeCampoObrigatorio + " é obrigatório")
							blnErro=true
						}
					}
					break
				case "select-one":
					if (frm.elements[i].NomeCampoObrigatorio){
						if ((frm.elements[i].value=="") || (frm.elements[i].value=="-1")){
							alert("O campo '" + frm.elements[i].NomeCampoObrigatorio + "' é obrigatório!")
							blnErro=true
						}
					}
					break
							
				case "text":
					if (frm.elements[i].NomeCampoObrigatorio){
						if (fnTrimJs(frm.elements[i].value)==""){
							alert("O campo '" + frm.elements[i].NomeCampoObrigatorio + "' é obrigatório!")
							blnErro=true
						}
					}
					break;

				case "radio":
					if (eval("frm." + frm.elements[i].name)[0].NomeCampoObrigatorio){
						for (j=0; j<(eval("frm." + frm.elements[i].name).length); j++){
							blnChecked =  ((eval("frm." + frm.elements[i].name)[j].checked) || (blnChecked == true))
						}
						if (!blnChecked){
							alert("O campo '" + eval("frm." + frm.elements[i].name)[0].NomeCampoObrigatorio + "' é obrigatório!")
							blnErro=true
						}
					}
					break
			}
			if (blnErro){
				break
			}
		}
	}
	if (blnErro){
		if (frm.txtCampo1){
			if (!frm.txtCampo1.disabled)
				frm.txtCampo1.focus()
			
		}
		if (!frm.elements[i].disabled)
			frm.elements[i].focus()
	}
	return !blnErro 
}

/**
 * Remove espacos a esquerda e direita.
 */
function fnTrimJs(str)
{
	return fnTrimRight(fnTrimLeft(str));
}
/**
 * Remove espacos a direita.
 */
function fnTrimRight(str) {
    var RESULTSTR = "";
    var i = 0;
    if (str + "" == "undefined" || str == null) {return null;}
    str += "";
    if (str.length == 0) {resultStr = "";
    }else{
    i = str.length - 1;
    while ((i >= 0) && (str.charAt(i) == " ")) {i--;}
    resultStr = str.substring(0, i + 1);
    }
    return resultStr;   
}
/**
 * Remove espacos a esquerda.
 */
function fnTrimLeft(str) {
    var resultStr = "";
    var i = 0;
    if (str + "" == "undefined" || str == null) {return null;}
    str += "";
    if (str.length == 0) {resultStr = "";
    }else{
    while ((str.charAt(i) == " "))
    {i++;}
    resultStr = str.substring(i, str.length+i);
    }
    return resultStr;   
}

function fnOnKeyPressCampoHora()
//************************************************************************************
// Objetivo: Função que permite somente a digitação de números e do caracter <:> para 
//			 os campos de Hora
// Responsavel: Leonardo Magalhães
// Data: 04/12/2003
//*****************************************************************************
{
	var l_strLetra
	var l_strValor
	
	l_strValor = event.srcElement.value + ""
	
	if (!fnEhKeyCodeNumero(event.keyCode)){
		event.keyCode=0
	}else{
		if (event.srcElement.TipoDado){
			if (event.srcElement.TipoDado.toUpperCase() == "HRA"){
			
				switch (event.srcElement.Mascara.toUpperCase()){
					case "HH:MM":
						if (	(l_strValor.length == 2) ) {
							event.srcElement.value = event.srcElement.value + ":"
						}
						break
				}
			}
			
		}else{
			if ((l_strValor.length == 2) || (l_strValor.length == 5)) {
				event.srcElement.value = event.srcElement.value + ":"
			}
		}
	
	}
		
	
}

function fnEhHoraValida(strHora)
{

	if(strHora.length!=0)
	{	

		if(strHora.length!=5)
		{
			return false
		}
		else
		{
			var intPos = strHora.indexOf(":")
			var Hor    = strHora.substr(0,intPos)
		
			var Min    = strHora.substr(intPos+1,2)
	
			if (Hor > 23){
				return false
			}
			
			if (Hor < 0){
				return false
			}
			
			if (Min > 59){
				return false
			}
			
			if (Min < 0){
				return false
			}
		}
	}
	return true
}


function fnTrimCharJs(str, ch)



{
	return fnTrimRightChar(fnTrimLeftChar(str, ch), ch);
}

/**
 * Remove o caracter especificado a direita.
 */

function fnTrimRightChar(str, ch) {
    var RESULTSTR = "";
    var i = 0;
    if (str + "" == "undefined" || str == null) {return null;}
    str += "";
    if (str.length == 0) {resultStr = "";
    }else{
    i = str.length - 1;
    while ((i >= 0) && (str.charAt(i) == ch)) {i--;}
    resultStr = str.substring(0, i + 1);
    }
    return resultStr;   
}

/**
 * Remove o caracter especificado a esquerda
 */
function fnTrimLeftChar(str, ch) {
    var resultStr = "";
    var i = 0;
    if (str + "" == "undefined" || str == null) {return null;}
    str += "";
    if (str.length == 0) {resultStr = "";
    }else{
    while ((str.charAt(i) == ch))
    {i++;}
    resultStr = str.substring(i, str.length+i);
    }
    return resultStr;   
}

function fnValidaIntercessaoData(r_objForm, r_strNomeControleDe, r_strNomeControleAte)
{
	var l_objControleFaixaEtariaDe;
	var l_objControleFaixaEtariaAte;
	var l_objControleFaixaEtariaDe2;
	var l_objControleFaixaEtariaAte2;
	
	for (l_intContador = 1; l_intContador <= r_objForm.hdnNLinhas.value; l_intContador++)
	{
		l_objControleFaixaEtariaDe  = parseInt(eval('document.' + r_objForm.name + '.' + r_strNomeControleDe + l_intContador + '.value'));
		l_objControleFaixaEtariaAte = parseInt(eval('document.' + r_objForm.name + '.' + r_strNomeControleAte + l_intContador + '.value'));
		
		for (l_intContador2 = l_intContador+1; l_intContador2 <= r_objForm.hdnNLinhas.value; l_intContador2++)
		{
			l_objControleFaixaEtariaDe2  = parseInt(eval('document.' + r_objForm.name + '.' + r_strNomeControleDe + l_intContador2 + '.value'));
			l_objControleFaixaEtariaAte2 = parseInt(eval('document.' + r_objForm.name + '.' + r_strNomeControleAte + l_intContador2 + '.value'));
			if (((l_objControleFaixaEtariaDe2 >= l_objControleFaixaEtariaDe) && (l_objControleFaixaEtariaAte2 <= l_objControleFaixaEtariaAte)) && (l_objControleFaixaEtariaDe2 != l_objControleFaixaEtariaAte2))
			{
					alert('Rever a intercessão das Datas');
					return false;
			}
			if ((l_objControleFaixaEtariaDe2 >= l_objControleFaixaEtariaDe) && (l_objControleFaixaEtariaDe2 < l_objControleFaixaEtariaAte))
			{
				alert('Rever a intercessão das Datas');
				return false;
			}

			if (l_objControleFaixaEtariaDe2 == l_objControleFaixaEtariaAte)
			{
				alert('Rever a intercessão das Datas');
				return false;
			}
			if (l_objControleFaixaEtariaAte == l_objControleFaixaEtariaAte2)
			{
				alert('Rever a intercessão das Datas');
				return false;
			}
			if ( (l_objControleFaixaEtariaDe2 <= l_objControleFaixaEtariaDe) && (l_objControleFaixaEtariaAte2 >= l_objControleFaixaEtariaAte) )
			{
				alert('Rever a intercessão das Datas');
				return false;			
			}
		}
	}
	return true;
}

/*
SINISTRO 26092003
*/

function carregaPopup(nomePopup) 
{
	fnPopupBGscroll(nomePopup,'pop','750','500')
	return true;
}

function fnPopupBGscroll (a,b,x,y) 
{
	window.open (a,b,'width=' + x + ',height=' + y + ',resizable=1,status=0,menubar=0,scrollbars=1,left=' + ((screen.width-x)/2) + ',top=' + ((screen.height-y)/2));
}

//*********************************************************************************
// Objetivo: Salva os valores dos campos de um ou mais forms, registra o valor em 
//           campo Hidden para ser recuperado por Request.Form quando ocorrer PostBack.
// Responsavel: Fernando Ramos
// Data: 06/11/2003
//*********************************************************************************
// BRQ - MS Knowledge Base e Reuso - Suporte MS
// Função genérica de Form Saver por RequestForm
// Responsável: Fernando Ramos - Suporte e Qualidade
// Original:  Nick Baker.JavaScriptCode

// Trabalha campos texto e dropdowns no IE 5+
// Somente trabalha com campos texto no Netscape 4.5

function fnSalvaForms() {  
	var mode = fnSalvaForms.arguments[0];
	for(f=1; f < fnSalvaForms.arguments.length; f++) {
		formName = fnSalvaForms.arguments[f];
		if(mode == 'open') {
			SalvaFormValue = GetSalvaForm(formName);
			if(SalvaFormValue != null) {
				var cookieArray = SalvaFormValue.split('-cf-');
				if(cookieArray.length == document[formName].elements.length) {
					for(i=0; i<document[formName].elements.length; i++) {
						if(cookieArray[i].substring(0,6) == 'select') 
						{ 
							document[formName].elements[i].options.selectedIndex = cookieArray[i].substring(6, cookieArray[i].length); 
						}
						else if((cookieArray[i] == 'cbtrue') || (cookieArray[i] == 'rbtrue')) { document[formName].elements[i].checked = true; }
						else if((cookieArray[i] == 'cbfalse') || (cookieArray[i] == 'rbfalse')) { document[formName].elements[i].checked = false; }
						else
						{ 
							if (document[formName].elements[i].value == '[NULL]')
							{
								document[formName].elements[i].value = '';
							}
							else if (document[formName].elements[i].value == '')
							{
								document[formName].elements[i].value = (cookieArray[i]) ? cookieArray[i] : '';
							}
						}
					}
				}
			}
			document[formName].hdnSalvaForm.value='';
		}
		if(mode == 'save') {	
			SalvaFormValue = '';
			document[formName].hdnSalvaForm.value='';
			for(i=0; i<document[formName].elements.length; i++) {
				fieldType = document[formName].elements[i].type;
				if((fieldType == 'password')||(fieldType == 'button'))
				{ 
					passValue = '';
				}else{
					if(fieldType == 'checkbox')
					{ 
						passValue = 'cb'+document[formName].elements[i].checked; 
					}else{
						if(fieldType == 'radio') 
						{ 
							passValue = 'rb'+document[formName].elements[i].checked; 
						}else{
							if(fieldType == 'select-one') 
							{ 
								passValue = 'select'+document[formName].elements[i].options.selectedIndex; 
							}else{ 
								passValue = document[formName].elements[i].value; 
							}
						}
					}
				}
				SalvaFormValue = SalvaFormValue + passValue + '-cf-';
				//alert(document[formName].elements[i].name + '<-->' + document[formName].elements[i].value)
			}
			SalvaFormValue = SalvaFormValue.substring(0, SalvaFormValue.length-4); // Remove last delimiter
			SetSalvaForm( formName, SalvaFormValue);		
		}	
	}
}

function getSalvaFormVal (offset, name) {  
	var endstr = document[name].elements['hdnSalvaForm'].value.indexOf (";", offset);  
	if (endstr == -1) { endstr = document[name].elements['hdnSalvaForm'].value.length; }
	return unescape(document[name].elements['hdnSalvaForm'].value.substring(offset, endstr));
}

function GetSalvaForm (name) {  
	var arg = name + "=";  
	var alen = arg.length;  
	var clen = document[name].elements['hdnSalvaForm'].value.length;  
	var i = 0;  

	while (i < clen) {    
		var j = i + alen;    
		if (document[name].elements['hdnSalvaForm'].value.substring(i, j) == arg) return getSalvaFormVal (j,name);
		i = document[name].elements['hdnSalvaForm'].value.indexOf(" ", i) + 1;    
		if (i == 0) break;   
	}  
	return null;
}

function SetSalvaForm (name, value) {  
	var argv = SetSalvaForm.arguments;  
	var argc = SetSalvaForm.arguments.length;  
	document[name].elements['hdnSalvaForm'].value = name + "=" + escape(value);
}

//*********************************************************************************
// SALVAFORM2 - Biblioteca para persistência de conteúdo de forms entre páginas
// Responsavel: Luciano Sother
// Data: 13/01/2003
//*********************************************************************************
// Trabalha campos texto e dropdowns no IE 5+
// Somente trabalha com campos texto no Netscape 4.5

function fnSalvaForm2_SalvaForm(nomeFormDestino) {  
// Objetivo: Salva os valores dos campos de todos os forms, registra o valor em 
//           campo Hidden para ser recuperado por Request.Form quando ocorrer PostBack.
// Parâmetro de entrada:
//    nomeFormDestino: Nome do formulário que contém o campo hidden hdnSalvaForm, no qual será salvo
//                     o conteúdo dos formulários.

	var hdnSalvaForm = '';
	
	// varre todos os forms
	for (f = 0; f < document.forms.length; f++) {
		nomeForm = document.forms[f].name;
		if (!isNaN(parseInt(nomeForm.substring(nomeForm.length - 1, nomeForm.length)))) {

			// varre todos os controles do form atual
			for (i = 0; i < document[nomeForm].elements.length; i++) {
				nomeControle = document[nomeForm].elements[i].name;
				
				if (nomeControle != 'hdnSalvaForm2') {
					tipoControle = document[nomeForm].elements[i].type;
					
					if (nomeControle == 'itemGarantia')
						x=0;
						
					if ((tipoControle == 'checkbox' || tipoControle == 'radio')
						&& eval(nomeForm + '.' + nomeControle + '.length') > 1) {
						if (hdnSalvaForm.indexOf(nomeForm + '.' + nomeControle) == -1) {
							for (j=0; j < eval(nomeForm + '.' + nomeControle + '.length'); j++) {
								// obtem o valor do controle atual, codificando-o junto com o tipo do controle
								switch(tipoControle) {
									case 'checkbox'   : valorControle = 'cb' + eval(nomeForm + '.' + nomeControle + '[' + j + '].checked'); break;
									case 'radio'      : valorControle = 'rb' + eval(nomeForm + '.' + nomeControle + '[' + j + '].checked'); break;
								}
								// acrescenta o form, o controle e seu valor na variável hdnSalvaForm
								//if (valorControle != '')
								hdnSalvaForm += '-=-' + nomeForm + '.' + nomeControle + '[' + j + ']=' + valorControle;
							}
						}
					}
					else {
						// obtem o valor do controle atual, codificando-o junto com o tipo do controle
						switch(tipoControle) {
							case 'password'   :
							case 'button'     : nomeControle = ''; break;
							case 'checkbox'   : valorControle = 'cb' + document[nomeForm].elements[i].checked; break;
							case 'radio'      : valorControle = 'rb' + document[nomeForm].elements[i].checked; break;
							//case 'select-one' : valorControle = 'select'+document[nomeForm].elements[i].options.selectedIndex; break;
							default           : valorControle = document[nomeForm].elements[i].value; break;
						}
						
						// acrescenta o form, o controle e seu valor na variável hdnSalvaForm
						if (nomeControle != '')
							hdnSalvaForm += '-=-' + nomeForm + '.' + nomeControle + '=' + valorControle;
					}
				}
			}
		}
		if (hdnSalvaForm.substring(0, 3) == '-=-')
			hdnSalvaForm = hdnSalvaForm.substring(3, hdnSalvaForm.length); // Remove o primeiro separador
		
		// Salva o conteúdo do form no campo hidden hdnSalvaForm.
		document[nomeFormDestino].hdnSalvaForm2.value = hdnSalvaForm;
	}
}

function fnSalvaForm2_RecuperaForm(nomeFormOrigem) {  
// Objetivo: Salva os valores dos campos de todos os forms, registra o valor em 
//           campo Hidden para ser recuperado por Request.Form quando ocorrer PostBack.
// Parâmetro de entrada:
//    nomeFormOrigem: Nome do formulário que contém o campo hidden hdnSalvaForm, do qual será recuperado
//                     o conteúdo dos formulários.

	var hdnSalvaForm = document[nomeFormOrigem].hdnSalvaForm2.value;
	
	if (hdnSalvaForm == null)
		alert("Erro SalvaForm2: Form '" + nomeFormOrigem + "' especificado não existe!")
	else if (hdnSalvaForm.length == 0)
		return false
	else {
		matrizValores = hdnSalvaForm.split('-=-');
		//alert('SalvaForms2: Iniciando recuperação de valores...');
		for (i = 0; i < matrizValores.length; i++) {
			posIgual = matrizValores[i].indexOf('=', 0);
			nomeControle = matrizValores[i].substring(0, posIgual);
			posPrimeiroPontoControle = nomeControle.indexOf('.', 0);
			valorControle = matrizValores[i].substring(posIgual + 1, matrizValores[i].length);
			if (nomeControle.indexOf('itemGarantia') != -1)
				x=0;
			if /* (valorControle.substring(0,6) == 'select') {
				nomeControle += '.options.selectedIndex';
				valorControle = valorControle.substring(7, valorControle.length); 
			}
			else if */ ((valorControle == 'cbtrue') || (valorControle == 'rbtrue')) {
				nomeControle += '.checked';
				valorControle = 'true';
			}
			else if ((valorControle == 'cbfalse') || (valorControle == 'rbfalse')) { 
				nomeControle += '.checked';
				valorControle = 'false';
			}
			else if (nomeControle.indexOf('.', posPrimeiroPontoControle + 1) <= 0) {
				nomeControle += '.value';
				valorControle = '"' + valorControle + '"';
			}
			else {
				valorControle = '"' + valorControle + '"';
			}
			try {
				//alert('document.' + nomeControle + ' = "' + valorControle + '";');
				eval('document.' + nomeControle + ' = ' + valorControle + ';');
			}
			catch(e){
				//alert('SalvaForm2: Falhou: document.' + nomeControle + ' = "' + valorControle + '";');
			}
		}
		document[nomeFormOrigem].hdnSalvaForm2.value = '';
	}
}	

function fnInserirItemCombo(v_Frm,v_txt,v_cmb)
{
	var txtForm = eval('document.frm' + v_Frm + '.' + v_txt);
	var cmbForm = eval('document.frm' + v_Frm + '.' + v_cmb);
	if(fnTrimJs(txtForm.value)!='')
	{
		cmbForm.options[cmbForm.length] = new Option(txtForm.value, txtForm.value);
		txtForm.value='';
		txtForm.focus();
	}else{
		alert("Valor do '" + txtForm.Descricao + "' obrigatório!");
		txtForm.focus();
	}


}

function fnExcluirItemCombo(v_Frm,v_cmb)
{
	var cmbForm = eval('document.frm' + v_Frm + '.' + v_cmb);
	if(cmbForm.selectedIndex>-1)
	{
		cmbForm.remove(cmbForm.selectedIndex);
		cmbForm.focus();
	}else{
		alert("Selecione um item no '" + cmbForm.Descricao + "'!");
		cmbForm.focus();
	}
}

function fnPopularCampo(v_Frm, v_campo, v_strValores)
{
	var campoForm = eval('document.frm' + v_Frm + '.' + v_campo);
	campoForm.value = v_strValores;
}

function fnLimparForm(frm,v_campos)
{
	var i,j,l_strNaoLimpa;
	if(v_campos!='')
	{
		var l_arrCampos = v_campos.split('||');
	}
	for (i=0 ;i<frm.elements.length;i++)
	{
		l_strNaoLimpa='';
		if(v_campos!='')
		{
			for(j=0;j<l_arrCampos.length;j++)
			{
				if(frm.elements[i].name==l_arrCampos[j])
					l_strNaoLimpa = 'N';
			}
		}
		if(l_strNaoLimpa=='')
		{
			if(frm.elements[i].type=="textarea")
			{
				frm.elements[i].value="";




			}
			if(frm.elements[i].type=="select-one")
			{
				frm.elements[i].selectedIndex="";
			}
			if(frm.elements[i].type=="text")
			{
				frm.elements[i].value="";
			}
			if(frm.elements[i].type=="checkbox")
			{
				frm.elements[i].checked=false;
			}
		}
	}
	return true;
}

function fnAdicionaData(strData,strFuncao,intNumero)
{
	//************************************************************************************
	// Objetivo: Função que adiciona dia, mês ou ano a data 
	// Parâmetros:	strData - Data inicial
	//				strFuncao - "D" para dia, "M" - para mês, "A" - para ano
	//				intNumero - quantidade a ser adicionada
	// Responsavel: Leonardo - BRQ Informatica
	// Data: 02/03/2004
	//*****************************************************************************
	var intTamanho = strData.length;
	
	if(intTamanho>19)
	{
		if(intTamanho==20)
		{
			var strDia = "0" + strData.substr(0,1)
			var strMes = "0" + strData.substr(2,1)
			var strAno = strData.substr(0,4)
		}
		else if(intTamanho==21)
		{
			var strDia = strData.substr(0,2)
			var strMes = "0" + strData.substr(3,1)
			var strAno = strData.substr(0,4)
		}
		else
		{
			var strDia = strData.substr(0,2)
			var strMes = strData.substr(3,2)
			var strAno = strData.substr(0,4)
		}
		var intTamAno = strAno.length
	}
	else if(intTamanho > 15)	
	{
		var str1 = strData.indexOf("T");
		if(str1>0)	// formato timestamp
		{
			var strDia = strData.substr(8,2)
			var strMes = strData.substr(5,2)
			var strAno = strData.substr(0,4)
		}
		else
		{
			var strDia = strData.substr(0,2)
			var strMes = strData.substr(3,2)
			var strAno = strData.substr(6,4)
		}
		var intTamAno = strAno.length
	}
	else if(intTamanho == 8 || intTamanho == 14)  // formatos DD/MM/YY HH:MM e DD/MM/YY
	{
		var strDia = strData.substr(0,2)
		var strMes = strData.substr(3,2)
		var strAno = strData.substr(6,2)
		var intTamAno = strAno.length
	}
	else  // formato DD/MM/YYYY
	{
		var strDia = strData.substr(0,2)
		var strMes = strData.substr(3,2)
		var strAno = strData.substr(6,4)
		var intTamAno = strAno.length
	}
	
	if(strFuncao=="D")
	{
		strDia = parseFloat(strDia) + intNumero
		strDia = strDia.toString()
		if(strDia.length==1)
			strDia = "0" + strDia;
	}
	else if(strFuncao=="M")
	{
		strMes = parseFloat(strMes) + intNumero
		strMes = strMes.toString()
		if(strMes.length==1)
			strMes = "0" + strMes;
	}
	else if(strFuncao=="A")
	{
		strAno = parseFloat(strAno) + intNumero
		strAno = strAno.toString()
		if(strAno.length==1)
			strAno = "200" + strAno;
		else
			strAno = strAno;
	}
	var isleap = (parseFloat(strAno) % 4 == 0 && (parseFloat(strAno) % 100 != 0 || parseFloat(strAno) % 400 == 0));
	if(parseFloat(strMes)==2)
	{
		if(isleap)
		{
			if(parseFloat(strDia) > 29)
			{
				var intCoef = parseInt(parseFloat(strDia)/29)
				strDia = parseFloat(strDia) - (29*intCoef)
				strMes = parseFloat(strMes) + (1*intCoef)
				if(strMes>12)
				{	
					strMes = parseFloat(strMes) - 12;
					strAno = parseFloat(strAno) + 1
				}	
			}
		}
		else
		{
			if(parseFloat(strDia) > 28)
			{
				var intCoef = parseInt(parseFloat(strDia)/28)
				strDia = parseFloat(strDia) - (28*intCoef)
				strMes = parseFloat(strMes) + (1*intCoef)
				if(strMes>12)
				{	
					strMes = parseFloat(strMes) - 12;
					strAno = parseFloat(strAno) + 1
				}	
			}
		}
	}
	else if(parseFloat(strMes)==1 || parseFloat(strMes)==3 || parseFloat(strMes)==5 || parseFloat(strMes)==7 || parseFloat(strMes)==8 || parseFloat(strMes)==10 || parseFloat(strMes)==12)
	{
		if(parseFloat(strDia) > 31)
		{
			var intCoef = parseInt(parseFloat(strDia)/31)
			strDia = parseFloat(strDia) - (31*intCoef)
			strMes = parseFloat(strMes) + (1*intCoef)
			if(strMes>12)
			{
				strMes = parseFloat(strMes) - 12;
				strAno = parseFloat(strAno) + 1
			}
		}
	}
	else if(parseFloat(strMes)==4 || parseFloat(strMes)==6 || parseFloat(strMes)==9 || parseFloat(strMes)==11)
	{
		if(parseFloat(strDia) > 30)
		{
			var intCoef = parseInt(parseFloat(strDia)/30)
			strDia = parseFloat(strDia) - (30*intCoef)
			strMes = parseFloat(strMes) + (1*intCoef)
			if(strMes>12)
			{
				strMes = parseFloat(strMes) - 12;
				strAno = parseFloat(strAno) + 1
			}
		}
	}
	strDia = strDia.toString()
	strMes = strMes.toString()
	if(strDia.length==1)
	strDia = "0" + strDia;
	if(strMes.length==1)
		strMes = "0" + strMes;
	return strDia + "/" + strMes + "/" + strAno
}

function fnMaxlengthTextarea(campo, max) {
	if (campo.value.length > max){
		campo.value = campo.value.substring(0, max);
	}
}

function fnArredondaCasasDecimais(l_campo,casas)
{
/**
 * elimina as casas decimais
 */
	var valor = l_campo.value;
	var result = ''
	valor = valor.replace('.','').replace('.','').replace('.','').replace('.','').replace(',','.');
	var controle = 0;
	var i=0;
	var j=0;
	var k=0;
	var count=valor.length-1;
	while (j<=count)
	{
		if(controle==1)
		{
			if(i<casas)
			{
				result=result+valor.substring(j,j+1);
				k=k+1;
			}
			i=i+1
		}else{
			if ((valor.substring(j,j+1)==",")||(valor.substring(j,j+1)=="."))
				result=result+','
			else
				result=result+valor.substring(j,j+1)
		}
		if ((valor.substring(j,j+1)==",")||(valor.substring(j,j+1)==".")){controle=1;}
		j=j+1;
	}
	if(controle==0)
	{
		result = result + '.00'
	}else{
		for(k=k;k<casas;k++)
			result = result + '0'
	}
	l_campo.value=result;
	return result;
}

function fnFormataValor(objForm) 
{
	var i, nCount, sValue, fldLen, mskLen,bolMask, sCod, nTecla;
	objForm.value = objForm.value.replace('.',',')
	fnArredondaCasasDecimais(objForm,2)
	sMask = '999.999.999.999.999.999.999.999,99'
	sValue = objForm.value;

	sValue = sValue.toString().replace( "-", "" );
	sValue = sValue.toString().replace( "-", "" );
	sValue = sValue.toString().replace( ".", "" );
	sValue = sValue.toString().replace( ".", "" );
	sValue = sValue.toString().replace( ":", "" );
	sValue = sValue.toString().replace( ":", "" );
	sValue = sValue.toString().replace( "/", "" );
	sValue = sValue.toString().replace( "/", "" );
	sValue = sValue.toString().replace( "(", "" );
	sValue = sValue.toString().replace( "(", "" );
	sValue = sValue.toString().replace( ")", "" );
	sValue = sValue.toString().replace( ")", "" );
	sValue = sValue.toString().replace( " ", "" );
	sValue = sValue.toString().replace( " ", "" );
	fldLen = sValue.length;

    mskLen = 0;
    i = sMask.length;
    nCount = sValue.length;
    sCod = "";
    mskLen = fldLen;

    while (mskLen <= i) 
    {
		bolMask = ((sMask.charAt(i) == "-") || (sMask.charAt(i) == ".") || (sMask.charAt(i) == ",") || (sMask.charAt(i) == "/"))
		bolMask = bolMask || ((sMask.charAt(i) == "(") || (sMask.charAt(i) == ")") || (sMask.charAt(i) == " "))
        if (bolMask) 
        {
			sCod = sMask.charAt(i) + sCod;
			if((sValue.charAt(nCount)=='.')||(sValue.charAt(nCount)==','))
				nCount--;
	  		mskLen++;
		}else{
			sCod = sValue.charAt(nCount) + sCod;
			nCount--;
        }
        i--;
        if(nCount<0)
			i=0;
	}
	return sCod;
}

function fnPosicionaAncora(v_strLinkAncora, v_lngForm)
{
	//************************************************************************************
	// Objetivo: Posiciona Ancora
	// Parâmetros:	v_strLinkAncora - Link da ancora
	//				v_lngForm - Identificador do form
	// Responsavel: Edmundo
	// Data: 10/06/2004
	//*****************************************************************************
	
	var l_strLink = '#' + v_strLinkAncora
	document.location.href = l_strLink;
	
	var l_objCampo = eval('document.frm' + v_lngForm + '.hdnEventoAncora')
	if(l_objCampo)
		l_objCampo.value=''
}

function fnAlteraCss(v_obj, v_strClasse)
{
	//************************************************************************************
	// Objetivo: Modifica a classe css de um objeto
	// Parâmetros:	v_obj - Objeto cuja classe será alterada
	//				v_strClasse - Identificador da classe css
	// Responsavel: Daniel Kling
	// Data: 07/10/2004
	//*****************************************************************************

	v_obj.className = v_strClasse;
}

function fnQtdeListBoxSelecionado(obj)
{
	//************************************************************************************
	// Objetivo: Retorna a quantidade de itens selecionados na listbox
	// Parâmetros:	
	//				
	// Responsavel: 
	// Data: 
	//*****************************************************************************
	var i,k
	k=0
	for(i=0;i<obj.options.length;i++){
		if(obj.options[i].selected)
			k++
	}
	return k

}

function fnLimparCamposEspecificos(frm,v_campos)
{
	var i,j,l_strNaoLimpa;
	if(v_campos!='')
	{
		var l_arrCampos = v_campos.split('||');
	}
	for (i=0 ;i<frm.elements.length;i++)
	{
		l_strNaoLimpa='N';
		if(v_campos!='')
		{
			for(j=0;j<l_arrCampos.length;j++)
			{
				if(frm.elements[i].name==l_arrCampos[j]){
					l_strNaoLimpa = '';
					break;
				}
			}
		}
		if(l_strNaoLimpa=='')
		{
			if(frm.elements[i].type=="textarea")
			{
				frm.elements[i].value="";




			}
			if(frm.elements[i].type=="select-one")
			{
				frm.elements[i].selectedIndex="";
			}
			if(frm.elements[i].type=="text")
			{
				frm.elements[i].value="";
			}
			if(frm.elements[i].type=="checkbox")
			{
				frm.elements[i].checked=false;
			}
		}
	}
	return true;
}

function fnOnKeyPressSoLetras(){
	//*****************************************************************************
	// Objetivo: Função que permite somente a digitação de caracteres e espaco
	// Responsavel: Edvaldo Junior
	// Data: 01/09/2005
	//*****************************************************************************
	
	if (!(fnEhKeyCodeLetra(event.keyCode))) {
		event.keyCode=0
	}

}
function fnEhKeyCodeLetra(keyCode) {
	//*****************************************************************************
	// Objetivo: Função que valida se o caracter passado é uma letra ou espaco
	// Responsavel: Edvaldo Junior
	// Data: 01/09/2005
	//*****************************************************************************
	
	//alert(keyCode);
	if (keyCode>= 97 && keyCode<=122) { //verifica de a ate z minusculo
		return true
	}else{
		if (keyCode>= 65 && keyCode<=90) { //verifica de a ate z maiusculo
			return true
		}else{
			if (keyCode == 32) { //verifica se foi digitado espaço
				return true
			}else{
				if(keyCode>= 48 && keyCode<=57){ //vefica se foi digitado numero
					return true
				}else{
					return false
				}	
			}
		}				
	}
}

