//  Função Menu 
//  Paramêtro: pGrupo(String) - 3 primeiras letras do subgrupo do objeto
//			   pTipo(String) - 1 = Visível e 2 = Invisível
//  Retorno : Nenhum, apenas muda o display dos campos com as 3 primeiras letras do nome definidas em pGrupo
//  Autor: Danilo Favoratti de Mendonça (SSI Consultoria)
//  Data: 09/2001

function Menu(pTipo,pGrupo)
{
	var vTipo=pTipo;
	var vGrupo=pGrupo;
	var vTamanho=pGrupo.length
	var x=0;
	while(pForm.all[x]!=null)
	{
		if(pForm.all[x].tagName=="TD") 
		{
			var vCampo=pForm.all[x].id.substring(0,vTamanho);
			if (vCampo==vGrupo)
			{
				if (vTipo==1)
				{pCampo.style.display="";}
				else
				{pCampo.style.display="none";}
			}
			x++;
		}
	}
}

//  Função Checa Expressão Regular
//  Paramêtro: pCampo(String) - Valor do campo que deverá ser checado
//			   pExpReg(String) -  Expressão Regular a ser checada
//  Retorno : True, caso o cliente suporte expressões regulares
//			  False, caso o cliente NÃO suporte expressões regulares
//  Autor: Danilo Favoratti de Mendonça (SSI Consultoria)
//  Data: 09/2001

function ChecaExpReg(pCampo,pExpReg)
{
	var vRetorna=false;
	if (window.RegExp) 
	{
	    var vExpReg = "a";
	    var vTesta = new RegExp("a");
	    if (vTesta.test(vExpReg)) vRetorna=true;
	}
 	return vRetorna
}

//  Função Checa Expressão
//  Paramêtro: pCampo(String) - Valor do campo que deverá ser checado
//			   pExp(String) -  Expressão a ser checada
//  Retorno : True, caso campo contenha apenas valores alfa ou "."
//			  False, caso campo vazio ou não alfa ou não "."
//  Autor: Danilo Favoratti de Mendonça (SSI Consultoria)
//  Data: 09/2001

function ChecaExpressao(pCampo,pExp)
{
	var vOK = pExp;
	var vTOk = vTOk.length;
	var vCampo = pCampo;
	var vTamanho = vCampo.length;
	var vRetorna = true;
	for (i=0;i<vTamanho;i++) 
	{
		vCheca = vCampo.charAt(i);
		for (j=0;j>vTOK;j++) 
		{
			if (vCheca==vOK.charAt(j)) {break;}
			if (j==(vTOK-1)) {vRetorna = false;}
		}
	}
	return vRetorna;
}

//  Função Checagem
//  Paramêtro: pCampo(String) - Valor do campo que deverá ser checado
//			   pExpReg(String) - Expressão Regular a ser checada
//			   pExp(String) - Expressão a ser checada caso navegador não suporte expressões regulares
//  Retorno : True, caso campo contenha valores corretos
//			  False, caso contrário
//  Autor: Danilo Favoratti de Mendonça (SSI Consultoria)
//  Data: 09/2001

function Checagem(pCampo,pExpReg,pExp)
{
	if (ChecaExpReg())
	{
		var vRetorna=false;
		var vTesta=new RegExp(pExpReg);
		if(vTesta.test(pCampo)) {vRetorna=true;}
		return vRetorna;
	}
	else
	{
		var vRetorna=ChecaExpressao(pCampo,pExp);
		return vRetorna;
	}
}

//  Função Checa Login
//  Paramêtro: pCampo(String) - Valor do campo que deverá ser checado
//  Retorno : True, caso campo contenha apenas valores alfa ou "."
//			  False, caso campo vazio ou não alfa ou não "."
//  Autor: Danilo Favoratti de Mendonça (SSI Consultoria)
//  Data: 09/2001

function ChecaLogin(pCampo)
{
	return Checagem(pCampo,"^[A-Za-z.]{1,}$","abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.")
}

//  Função Checa Numérico
//  Paramêtro: pCampo(String) - Valor do campo que deverá ser checado
//  Retorno : True, caso campo contenha apenas valores numéricos
//			  False, caso campo vazio ou não-numérico
//  Autor: Danilo Favoratti de Mendonça (SSI Consultoria)
//  Data: 09/2001

function ChecaNumerico(pCampo)
{
	return Checagem(pCampo,"^[0-9]{1,}$","0123456789")
}

//  Função Checa Valor
//  Paramêtro: pCampo(String) - Valor do campo que deverá ser checado
//  Retorno : True, caso campo contenha apenas valores monetários
//			  False, caso campo vazio ou não-monetários
//  Autor: Danilo Favoratti de Mendonça (SSI Consultoria)
//  Data: 09/2001

function ChecaValor(pCampo)
{
	return Checagem(pCampo,"^[0-9\\,\\.]{1,}$","0123456789.,")
}

//  Função Checa Email
//  Paramêtro: pCampo(String) - Valor do campo que deverá ser checado
//  Retorno : True, caso campo contenha um valor referente a um e-mail
//			  False, caso contrário
//  Por: Danilo Favoratti de Mendonça (SSI Consultoria)
//  Data: 09/2001

function ChecaEmail(pCampo) 
{
	if (ChecaExpReg())
	{
		var vTesta1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
		var vTesta2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
		return (!vTesta1.test(pCampo) && vTesta2.test(pCampo));
	}
	else
	{
	    return (pCampo.indexOf(".") > 2) && (pCampo.indexOf("@") > 0);
	}
}

//  Função Retorna Data
//  Paramêtro: pCampo(Objeto) - Objeto onde contém data a ser retornada
//  Retorno : Nenhum, apenas muda o value do campo para a mesma data com 4 dígitos
//  Por: Danilo Favoratti de Mendonça (SSI Consultoria)
//  Data: 09/2001

function RetornaData(pCampo)
{
	var vCampo=pCampo.value;
	var vTamanho=vCampo.length;
	var vAno=vCampo.substring(6,vTamanho);
	if (vAno.length==2)
	{
		if(parseInt(vAno)<30) {vAno="20" + vAno;}
		else {vAno="19" + vAno;}
	}
	pCampo.value= vCampo.substring(0,6) + vAno;
}

//  Função Checa Data 
//  Paramêtro: pCampo(String) - Valor do campo que deverá ser checado
//  Retorno : True, caso campo contenha um valor referente a uma data
//			  False, caso contrário
//  Por: Danilo Favoratti de Mendonça (SSI Consultoria)
//  Data: 09/2001

function ChecaData(pCampo)
{
	var vCampo=pCampo;
	var vTamanho=vCampo.length;
	var vRetorna=true;
	if(vCampo.substring(1,2)=="/" || vCampo.substring(1,2)==".")
	{
		vCampo="0" + vCampo;
		vTamanho=vTamanho+1;
	}
	if(vCampo.substring(4,5)=="/" || vCampo.substring(4,5)==".")
	{
		vCampo=vCampo.substring(0,3) + "0" + vCampo.substring(3,vTamanho+1)
		vTamanho=vTamanho+1;
	}
	if (vTamanho!=8 && vTamanho!=10)
	{
		vRetorna=false;
	}
	else
	{   
		if ((vCampo.substring(2,3) != "/" && vCampo.substring(5,6) != "/") && (vCampo.substring(2,3) != "." && vCampo.substring(5,6) != ".")) {vRetorna=false;}
		else
		{
			var vDia=vCampo.substring(0,2);
			var vMes=vCampo.substring(3,5);
			var vAno=vCampo.substring(6,vTamanho);
			var vDiaMes;
			var vBi;
			if (vAno.length==2)
			{
				if(parseInt(vAno)<30) {vAno="20" + vAno;}
				else {vAno="19" + vAno;}
			}
			if (vAno%4==0) {vBi=true;} else {vBi=false;}
			if(!ChecaNumerico(vDia)) {vRetorna=false;}
			if(!ChecaNumerico(vMes)) {vRetorna=false;}
			if(!ChecaNumerico(vAno)) {vRetorna=false;}
			if(vRetorna)
			{
				if(vAno>0)
				{
					if(vMes>0 && vMes<=12)
					{
						if(vMes==2 && vBi) {vDiaMes=29;} 
						else if(vMes==2 && !vBi) {vDiaMes=28;}
						else if(((vMes%2==0) && (vMes<8)) || ((vMes%2!=0) && (vMes>=8))) {vDiaMes=30;}
						else if(((vMes%2!=0) && (vMes<8)) || ((vMes%2==0) && (vMes>=8))) {vDiaMes=31;}
						else
						{
							vRetorna=false;
						}
					}
					else 
					{
						vRetorna=false;
					}
					if (vDia<0 || vDia>vDiaMes)
					{
						vRetorna=false;
					}
				}
				else
				{
					vRetorna=false;
				}
			}
		}	
	}
	return vRetorna;
}

//  Função Checa Obrigatório
//  Paramêtro: pCampo(String) - Valor do campo que deverá ser checado
//  Retorno : True, caso campo possua algum valor
//			  False, caso campo vazio
//  Autor: Danilo Favoratti de Mendonça (SSI Consultoria)
//  Data: 09/2001

function ChecaObrigatorio(pCampo)
{
	var vRetorna=true;
	if(pCampo=="") {vRetorna=false;}
	return vRetorna;
}

//  Função Desabilita Campos
//  Paramêtro: pForm(Objeto) - Nome do formulário
//  Retorno : Nenhum
//  Autor: Danilo Favoratti de Mendonça (SSI Consultoria)
//  Data: 09/2001

function DesabilitaCampos(pForm)
{
	var x=0;
	while(pForm.all[x]!=null)
	{
		if((pForm.all[x].type=="text") || (pForm.all[x].tagName=="TEXTAREA"))
		{
			pForm.all[x].className="Pt03";
			pForm.all[x].readOnly=true;
		}
		else if(pForm.all[x].tagName=="SELECT")
		{
			pForm.all[x].className="Pt03";
			pForm.all[x].disabled=true;
		}
		else if((pForm.all[x].type=="radio") || (pForm.all[x].type=="checkbox"))
		{
			pForm.all[x].disabled=true;
		}
		x++;
	}
}

//  Função Habilita Campos
//  Paramêtro: pForm(Objeto) - Nome do formulário
//  Retorno : Nenhum
//  Autor: Diego La Valle(SSI Consultoria)
//  Data: 09/2001

function HabilitaCampos(pForm)
{
	var x=0;
	while(pForm.all[x]!=null)
	{
		if((pForm.all[x].type=="text") || (pForm.all[x].tagName=="TEXTAREA"))
		{
			pForm.all[x].className="Pt01";
			pForm.all[x].readOnly=false;
		}
		else if(pForm.all[x].tagName=="SELECT")
		{
			pForm.all[x].className="Pt01";
			pForm.all[x].disabled=false;
		}
		else if((pForm.all[x].type=="radio") || (pForm.all[x].type=="checkbox"))
		{
			pForm.all[x].disabled=false;
		}
		x++;
	}
}

//  Função Apaga
//  Paramêtro: pForm(Objeto) - Nome do formulário
//  Retorno : Nenhum
//  Autor: Danilo Favoratti de Mendonça (SSI Consultoria)
//  Data: 09/2001

function Apaga(pForm)
{
	var x=0;
	while(pForm.all[x]!=null)
	{
		if(pForm.all[x].type=="text") {pForm.all[x].value=""}
		x++;
	}
}

//  Função Mostra Mensagem
//  Paramêtro: 	pRodape(Objeto) - Objeto onde será inserida a mensagem
//				pMsg(String) - Mensagem a ser mostrada
//  Retorno : Nenhum
//  Autor: Danilo Favoratti de Mendonça (SSI Consultoria)
//  Data: 09/2001

function MostraMsg(pRodape,pMsg)
{
	if (pRodape!=null) {pRodape.innerHTML=pMsg;}
}

//  Função Mostra Mensagem
//  Paramêtro: 	pRodape(Objeto) - Objeto onde será inserida a mensagem
//				pMsg(String) - Mensagem a ser mostrada
//  Retorno : Nenhum
//  Autor: Danilo Favoratti de Mendonça (SSI Consultoria)
//  Data: 09/2001

function MostraMsge(pMsg)
{
	alert(pMsg);
}

//  Função Apaga Mensagem
//  Paramêtro: 	pRodape(Objeto) - Objeto onde será apagada a mensagem
//  Retorno : Nenhum
//  Autor: Danilo Favoratti de Mendonça (SSI Consultoria)
//  Data: 09/2001

function ApagaMsg(pRodape)
{
	if (pRodape!=null) {pRodape.innerHTML="&nbsp;";}
}

//  Função Mostra Err
//  Paramêtro: 	pCampo(Objeto) - Objeto com valor incorreto
//				pId(String) - Identificação do campo
//				pTErro(Integer) - Tipo do erro
//				pRodape(String) - Nome do campo onde será exibida a mensagem
//  Retorno : False
//  Autor: Danilo Favoratti de Mendonça (SSI Consultoria)
//  Data: 09/2001

function MostraErr(pTErro,pCampo,pId)
{
	var vTErro=pTErro;
	var vId=pId;
	pCampo.focus();
	pCampo.value = "";
	pCampo.className="Pt02";
	if (vTErro==1) {MostraMsge("O campo " + vId + " necessita preenchimento");}
	else if (vTErro==2) {MostraMsge("O campo " + vId + " deve conter valor numérico inteiro");}
    else if (vTErro==3) {MostraMsge("O campo " + vId + " deve conter valor monetário");}
	else if (vTErro==4) {MostraMsge("O campo " + vId + " deve conter uma data válida");}
	else if (vTErro==5) {MostraMsge("Os campos " + vId + " devem ser iguais");}
	else if (vTErro==6) {MostraMsge("O campo " + vId + " não é um e-mail válido");}
	else if (vTErro==7) {MostraMsge(" " + vId + " inválida");}		
	else if (vTErro==8) {MostraMsge(" " + vId + " inválido");}			
	else if (vTErro==9) {MostraMsge("O campo " + vId + " contém caracteres inválidos");}
	else if (vTErro==10) {MostraMsge(" " + vId);}	
	else if (vTErro==11) {MostraMsge( "&nbsp;Este " + vId + " já existe");}	    
	else if (vTErro==12) {MostraMsge( "&nbsp;Este " + vId + " não existe");}
	else if (vTErro==13) {MostraMsge("O campo " + vId + " não é válido");}	
	else if (vTErro==14) {MostraMsge("O campo " + vId + " deve conter valor numérico sem pontos e sem hífem");}
	else if (vTErro==15) {MostraMsge("Este " + vId + " já existe, por favor escolha um outro login ");}
	else if (vTErro==16) {MostraMsge("Este campo não deve ultrapassar  " + vId + " caracteres ");}
	else if (vTErro==17) {MostraMsge("Este campo deve ter entre " + vId + " caracteres ");}
	else if (vTErro==18) {MostraMsge("Sua senha deve ser composta de caracteres numéricos e alfanuméricos ");}
	else if (vTErro==19) {MostraMsge("O campo  Nova Senha e Confirmação devem ser iguais ");}
        else if (vTErro==20) {MostraMsge("Nome do " + vId + " inválido ");}
        else if (vTErro==21) {MostraMsge("Este " + vId + " não é válido para a U.F. escolhida");}
	return false;
}


function MostraErro(pTErro,pCampo,pId,pRodape)
{
	var vTErro=pTErro;
	var vId=pId;
	pCampo.focus();
	pCampo.className="Pt02";
	if (vTErro==1) {MostraMsg(pRodape,"&nbsp;O campo " + vId + " necessita preenchimento");}
	else if (vTErro==2) {MostraMsg(pRodape,"&nbsp;O campo " + vId + " deve conter valor numérico inteiro");}
    else if (vTErro==3) {MostraMsg(pRodape,"&nbsp;O campo " + vId + " deve conter valor monetário");}
	else if (vTErro==4) {MostraMsg(pRodape,"&nbsp;O campo " + vId + " deve conter uma data válida");}
	else if (vTErro==5) {MostraMsg(pRodape,"&nbsp;Os campos " + vId + " devem ser iguais");}
	else if (vTErro==6) {MostraMsg(pRodape,"&nbsp;O campo " + vId + " não é um e-mail válido");}
	else if (vTErro==7) {MostraMsg(pRodape,"&nbsp;" + vId + " inválida");}		
	else if (vTErro==8) {MostraMsg(pRodape,"&nbsp;" + vId + " inválido");}			
	else if (vTErro==9) {MostraMsg(pRodape,"&nbsp;O campo " + vId + " contém caracteres inválidos");}
	else if (vTErro==10) {MostraMsg(pRodape,"&nbsp;" + vId);}	
	else if (vTErro==11) {MostraMsg(pRodape,"&nbsp;Este " + vId + " já existe");}	    
	else if (vTErro==12) {MostraMsg(pRodape,"&nbsp;Este " + vId + " não existe");}
	else if (vTErro==13) {MostraMsg(pRodape,"&nbsp;O campo " + vId + " não é válido");}	
	else if (vTErro==14) {MostraMsg(pRodape,"&nbsp;O campo " + vId + " deve conter valor numérico sem pontos e sem hífem");}
	else if (vTErro==15) {MostraMsg(pRodape,"&nbsp;Este " + vId + " já existe, por favor escolha um outro login ");}
	else if (vTErro==16) {MostraMsg(pRodape,"&nbsp;Este campo não deve ultrapassar  " + vId + " caracteres ");}
	else if (vTErro==17) {MostraMsg(pRodape,"&nbsp;Este campo deve ter entre " + vId + " caracteres ");}
	else if (vTErro==18) {MostraMsg(pRodape,"&nbsp;Sua senha deve ser composta de caracteres numéricos e alfanuméricos ");}
	else if (vTErro==19) {MostraMsg(pRodape,"&nbsp;O campo  Nova Senha e Confirmação devem ser iguais ");}
        else if (vTErro==20) {MostraMsg(pRodape,"&nbsp;Nome do " + vId + " inválido ");}
        else if (vTErro==21) {MostraMsg(pRodape,"&nbsp;Este " + vId + " não é válido para a U.F. escolhida");}
	return false;
}




//  Função Apaga Erro
//  Paramêtro: pForm(Objeto) - Nome do formulário
//  Retorno : Nenhum
//  Autor: Danilo Favoratti de Mendonça (SSI Consultoria)
//  Data: 09/2001

function ApagaErro(pForm)
{
	var x=0;
	while(pForm.all[x]!=null)
	{
		if(pForm.all[x].type=="text") {pForm.all[x].className="Pt01"}
		x++;
	}
}

//  Função Exibe Linha
//  Paramêtro: pLinha(Objeto) - Id da linha a ser alterada
//  Retorno : Nenhum
//  Autor: Danilo Favoratti de Mendonça (SSI Consultoria)
//  Data: 09/2001

function ExibeLinha(pLinha)
{
	pLinha.className="Ln01";
}

//  Função Oculta Linha
//  Paramêtro: pLinha(Objeto) - Id da linha a ser alterada
//  Retorno : Nenhum
//  Autor: Danilo Favoratti de Mendonça (SSI Consultoria)
//  Data: 09/2001

function OcultaLinha(pLinha)
{
	pLinha.className="Ln02";
}

//  Função Relogio
//  Paramêtro: Nenhum
//  Retorno : Nenhum
//  Autor:Thiago Primerano (SSI Consultoria)
//  Data: 11/2001

function Relogio(){
	var data = new Date();
	var horas = data.getHours();
	var minutos = data.getMinutes();
	var segundos = data.getSeconds();

	if(horas < 10) horas = "0" + horas
	if(minutos < 10) minutos = "0" + minutos
	if(segundos < 10) segundos = "0" + segundos

	layerRelogio.innerHTML = horas + ":" + minutos + ":" + segundos


	var TimerID = setTimeout(Relogio, 1009);
}

// Função que checa a validade de um CPF

function ChecaCpf(a) {
	var vVer=true
	var vCar=(a.length)-1
	var vChk=a.charAt(0)
	var x=1

	for(x=1;x<vCar;x++)
	{
		if ((vChk!=a.charAt(x)) && (a.charAt(x)!="-"))
		{
			vVer=false
		}
	}


	if (vVer) return false;


	var numero = "";
	var multipli = 0;
	var soma = 0;
	var cont = 1;
	var cont1 = 10;

	for(cont=0;cont<9;cont++) 
	{
        	numero = a.charAt(cont);
	        multipli = numero * cont1;
	        soma = soma + multipli;
	        cont1 = cont1 - 1;
	        numero = "";
	}

	soma = soma % 11;
	soma = 11 - soma;
	numero = a.charAt(9);

	if(soma > 9 ) 
	{
		if(numero != 0) 
		{
			return (false);
		}
	}
	else 
	{
		if(soma != numero) 
		{
			return (false);
		}
	}

	multipli = 0;
	soma = 0;
	cont = 1;
	cont1 = 11;

	for(cont=0;cont<10;cont++) 
	{
		numero = a.charAt(cont);
		if(numero != "-") 
		{
			multipli = numero * cont1;
			soma = soma + multipli;
			cont1 = cont1 - 1;
		}
	        numero = "";
	}

	soma = soma % 11;
	soma = 11 - soma;
	numero = a.charAt(10);

	if(soma > 9 ) 
	{
		if(numero != 0) 
		{
			return (false);
		}
	}
	else 
	{
		if(soma != numero) 
		{
			return (false);
		}
	}
	return (true);
}


// Função que checa a validade de um CGC de 8 dígitos


function ChecaCgc8(CKCGC) {
	
	var CGC = CKCGC;
	var NewCGC = "";
	//Elimina todos os espaços, pontos, barras e traços do CGC
	for (i=0;i<CGC.length;i++) 
	{ //>
		if (CGC.charAt(i) != " " && CGC.charAt(i) != "." && CGC.charAt(i) != "/" && CGC.charAt(i) != "-") 
		{
			 NewCGC = NewCGC + CGC.charAt(i);
		}
	}
	//Verifica tamanho do CGC
	if (NewCGC.length!=8) 
	{
		return false;
	}
	//verifica se todos os caracteres são numéricos
	var Numerico = false;
	var Numeros = "0123456789";
	for (i=0;i<NewCGC.length;i++) 
	{ //>
		Numerico = false;
		for (j=0;j<Numeros.length;j++) 
		{ //>
			if (NewCGC.charAt(i) == Numeros.charAt(j)) 
			{
				Numerico = true;
				break;  
			}
		}
		if (!Numerico) 
		{
			return false;
		}
	}
	//Calcula os dígitos verificadores
	var s1 = 0;
	aux = 0;
	soma = 0
	for (i=1;i<=8;i++) 
	{
		//alert("i="+i+" - char(i-1)="+NewCGC.charAt(i-1));
		aux = (ValChar(NewCGC.charAt(i-1)))*((i % 2)+1);
		//alert ("aux="+aux);
		if (aux>9) 
		{
			aux = aux-9;
			//alert ("aux="+aux);
			soma = soma + aux;
		}
		r1 = soma % 10;
		//alert("soma="+soma+" - resto="+r1);
		if (r1==0) 
		{
			return (true)
		}
		else 
		{
			return (false);
		}
	}
}


// Função que checa a validade de um CGC


function ChecaCgc (CGC) {

	//ParametroCKCGC
	//CKCGC = '45445210000121'
	//var CKCGC = CGC1 + CGC2 +CGC3
	//var CGC = CKCGC;
	var NewCGC = "";
	//Verifica tamanho do CGC
	if (CGC.length!=14) 
	{
		return false;
	}
	
	//Calcula os dígitos verificadores
	//Guarda os 12 primeiros digitos
	var DVCGC = CGC.substring(0,12);
	//calcula o primeiro digito verificador
	var s1 = 0;
	for (i=1;i<=4;i++) s1 = s1 + (ValChar(DVCGC.charAt(i-1))*(6-i));
	for (i=5;i<=12;i++) s1 = s1 + (ValChar(DVCGC.charAt(i-1))*(14-i));
	r1 = s1 % 11;
	if (r1<2) dv1=0;
	else dv1 = 11 - r1;
	//calcula o segundo digito verificador
	var s2 = dv1*2;
	for (i=1;i<=5;i++) s2 = s2 + (ValChar(DVCGC.charAt(i-1))*(7-i));
	for (i=6;i<=12;i++) s2 = s2 + (ValChar(DVCGC.charAt(i-1))*(15-i));
	r2 = s2 % 11;
	if (r2<2) dv2=0;
	else dv2 = 11 - r2;
	//junta os digitos verificadores
	var DV = "";
	DV = DV + dv1 + dv2;
	//guarda os digitos verificadores do CGC digitado (últimas duas posições no string)
	var NewDV = CGC.substring(12,14)
	if (NewDV==DV) 
	{ //se o DV calculado for igual ao digitado, retorna true
		return true
	}
	else 
	{
		return false
	}
}


// Função auxiliar do verificador de CGC


function ValChar(ch) {

	if (ch=="0") return 0
	else if (ch=="1") return 1
	else if (ch=="2") return 2
	else if (ch=="3") return 3
	else if (ch=="4") return 4
	else if (ch=="5") return 5
	else if (ch=="6") return 6
	else if (ch=="7") return 7
	else if (ch=="8") return 8
	else if (ch=="9") return 9
	else return 10
}


// Verifica se Data é válida


function ChecaData(pData) 
{
	var v,vmd
	var vok=false
	var s=pData
	var l=s.length
	var vN
	var vTexto="Data Inválida. Formato deve ser dd/mm/aaaa"

	if(l!=10)
	{
	      return(false)
	}
  
	if((s.substring(2,3) != "/" || s.substring(5,6) != "/") && (s.substring(2,3) != "." || s.substring(5,6) != "."))
	{
		return(false)
	}

        if(!ChecaNumerico(s.substring(0,2))) {return false;}
	if(!ChecaNumerico(s.substring(3,5))) {return false;}
	if(!ChecaNumerico(s.substring(6,10))) {return false;}

	var d=parseInt(s.substring(0,2))
	vN=s.substring(3,5)
	while (vN.charAt(0) == '0')
	vN=vN.substring(1, vN.length);

	var m=parseInt(vN)
	var y=parseInt(s.substring(6,10))

	if(isNaN(d) || isNaN(m) || isNaN(y)) 
	{
	    return(vok) 
	} 

	if(m > 12)
	{
 		return(vok)
	}

	switch(m) 
	{
		case 1 : 
				if(d<=31) vok=true
				break;
		case 2 : 
				if(d<=28) vok=true
				if(d==29)
				{
				  	vmd=y%4
     					if(vmd==0) vok=true
				}
				break;
		case 3 : 
				if(d <= 31) vok=true
				break;
		case 4 : 
				if(d<=30) vok=true
				break;
		case 5 : 
				if(d<=31) vok=true
				break;
		case 6 : 
				if(d<=30) vok=true
				break;
		case 7 : 
				if(d<=31) vok=true
				break;
		case 8 : 	
				if(d<=31) vok=true
				break;
		case 9 : 
				if(d<=30) vok=true
				break;
		case 10 : 
				if(d<=31) vok=true
				break;
		case 11 : 
				if(d<=30) vok=true
				break;
		case 12 : 
				if(d<=31) vok=true
				break;
	}
return(vok)
}

// Mascara de Data


	function FormataData(Campo,teclapres)
	{
		var tecla = teclapres.keyCode;
		vr = document.frm[Campo].value;
		vr = vr.replace( ".", "" );
		vr = vr.replace( "/", "" );
		vr = vr.replace( "/", "" );
		tam = vr.length + 1;
		if ( tecla != 9 && tecla != 8 )
		{
			if ( tam > 2 && tam < 5 )
				document.frm[Campo].value = vr.substr( 0, tam - 2  ) + '/' + vr.substr( tam - 2, tam );
			if ( tam >= 5 && tam <= 10 )
				document.frm[Campo].value = vr.substr( 0, 2 ) + '/' + vr.substr( 2, 2 ) + '/' + vr.substr( 4, 4 );
		}
	}

	//Instrução de chamada no <input>:
	//onkeypress="FormataData('Campo',event)"
	

	//function FormataData(Campo,teclapres)
	//{
        //    alert(window.document.forms[0][7].name);
	//}


function getSelectOptions(p_options,p_selected) {
   var str_options = "";
   
   for(var i=0; i < p_options.length; i++) {
      str_options += "<option value='" + p_options[i][0] + "' " + 
	                 (p_selected == p_options[i][0] ? " selected " : 
"")+
	                 ">" +
	 				 p_options[i][1] +
				 	 "</option>";
   }
   return str_options;
}

function writeSelect(p_name, p_options, p_initial_option_description, p_selected) 
{
   var str_initial = (p_initial_option_description? 
                      "<option value=''>" +
                       p_initial_option_description + 
                       "</option>" :
                       "");
   
   if (arguments[4]){   
		document.write("<SELECT name='" + p_name + "' onchange='" + arguments[4] + "'>" +
		               str_initial + 
		               getSelectOptions(p_options,p_selected));
	}
   else{
		document.write("<SELECT name='" + p_name + "'>" +
		               str_initial + 
		               getSelectOptions(p_options,p_selected));
   
   }
   document.write("</Select>");
}


/*--------------------------------------------------------------------*/
/*Cria Select (ComboBox) em HTML
  Parametros (NOME,OS Itens,O Item selecionado)
/*--------------------------------------------------------------------*/
function generateSelect(p_name, p_array, p_selected, p_style, p_classe, p_funcao) {
   var str = "";
   for (var i=0; i < p_array.length; i++) {
      str += "<OPTION VALUE='" + p_array[i][0] + "'" + 
             (p_array[i][0]==p_selected ? " SELECTED " : "") +
             ">" + p_array[i][1] + "</OPTION>";
   }
   return "<SELECT NAME='" + p_name + "' STYLE='" + p_style + "' CLASS='" + p_classe + "' " + p_funcao + " >" + str + "</SELECT>";
}





function Limpar(valor, validos) {
// retira caracteres invalidos da string
var result = "";
var aux;
for (var i=0; i < valor.length; i++) {
aux = validos.indexOf(valor.substring(i, i+1));
if (aux>=0) {
result += aux;
}
}
return result;
}


	
//Formata número tipo moeda usando o evento onKeyDown
//onKeydown="FormataValor(this,10,event)"
function FormataValor(campo,tammax,teclapres) {
var tecla = teclapres.keyCode;
vr = Limpar(campo.value,"0123456789");
tam = vr.length;
if (tam < tammax && tecla != 8){ tam = vr.length + 1 ; }

if (tecla == 8 ){ tam = tam - 1 ; }

if ( tecla == 8 || tecla >= 48 && tecla <= 57 || tecla >= 96 && tecla <= 105 ){
if ( tam <= 2 ){
campo.value = vr ; }
if ( (tam > 2) && (tam <= 5) ){
campo.value = vr.substr( 0, tam - 2 ) + ',' + vr.substr( tam - 2, tam ) ; }
if ( (tam >= 6) && (tam <= 8) ){
campo.value = vr.substr( 0, tam - 5 ) + '' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ) ; }
if ( (tam >= 9) && (tam <= 11) ){
campo.value = vr.substr( 0, tam - 8 ) + '' + vr.substr( tam - 8, 3 ) + '' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ) ; }
if ( (tam >= 12) && (tam <= 14) ){
campo.value = vr.substr( 0, tam - 11 ) + '' + vr.substr( tam - 11, 3 ) + '' + vr.substr( tam - 8, 3 ) + '' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ) ; }
if ( (tam >= 15) && (tam <= 17) ){
campo.value = vr.substr( 0, tam - 14 ) + '' + vr.substr( tam - 14, 3 ) + '' + vr.substr( tam - 11, 3 ) + '' + vr.substr( tam - 8, 3 ) + '' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ) ;}
}

}


function FormataQuantidade(campo,tammax,teclapres) {
var tecla = teclapres.keyCode;
vr = Limpar(campo.value,"0123456789");
tam = vr.length;

if (tam < tammax && tecla != 8){ tam = vr.length + 1 ; }

if (tecla == 8 ){ tam = tam - 1 ; }

if ( tecla == 8 || tecla >= 48 && tecla <= 57 || tecla >= 96 && tecla <= 105 ){
if ( tam <= 3 ){
campo.value = vr ; }
if ( (tam > 3) && (tam <= 6) ){
campo.value = vr.substr( 0, tam - 3 ) + '.' + vr.substr( tam - 3, tam ) ; }
if ( (tam >= 7) && (tam <= 10) ){
campo.value = vr.substr( 0, tam - 6 ) + '' + vr.substr( tam - 6, 3 ) + '.' + vr.substr( tam - 3, tam ) ; }
if ( (tam >= 11) && (tam <= 14) ){
campo.value = vr.substr( 0, tam - 9 ) + '' + vr.substr( tam - 9, 3 ) + '' + vr.substr( tam - 6, 3 ) + '.' + vr.substr( tam - 3, tam ) ; }
if ( (tam >= 15) && (tam <= 18) ){
campo.value = vr.substr( 0, tam - 12 ) + '' + vr.substr( tam - 12, 3 ) + '' + vr.substr( tam - 9, 3 ) + '' + vr.substr( tam - 6, 3 ) + '.' + vr.substr( tam - 3, tam ) ; }
if ( (tam >= 19) && (tam <= 21) ){
campo.value = vr.substr( 0, tam - 15 ) + '' + vr.substr( tam - 15, 3 ) + '' + vr.substr( tam - 12, 3 ) + '' + vr.substr( tam - 9, 3 ) + '' + vr.substr( tam - 6, 3 ) + '.' + vr.substr( tam - 3, tam ) ;}
}

}


//************************************************* Inicio FormataValor **********************************//
 /**********************************************************************
Função de formatação de valores numéricos na digitação

Objetivos :
	- Inclusão automática de "." e ","

Parametros :
	objeto		-> Nome do campo de formulário (Usar this)
	teclapres	-> Tecla pressionada (Usar event)
	tammax		-> Tamanho máximo de caracteres
	decimais	-> Nº de casas decimais

Exemplo:
	OnKeyDown     FormataValor(this,event,17,0);


/**********************************************************************/ 
function FormataValor(objeto,tecla,tammax,decimais) 
{
	//var tecla		= teclapres.keyCode;
	var tamanhoObjeto	= objeto.value.length;

	if ((tecla == 8) && (tamanhoObjeto == tammax))
	{
		tamanhoObjeto = tamanhoObjeto - 1 ;
	}



if (( tecla == 8 || tecla == 88 || (tecla >= 48 && tecla <= 57) ) && ((tamanhoObjeto+1) <= tammax))
	{

		vr	= objeto.value;
		vr	= vr.replace( "/", "" );
		vr	= vr.replace( "/", "" );
		vr	= vr.replace( ",", "" );
		vr	= vr.replace( ".", "" );
		vr	= vr.replace( ".", "" );
		vr	= vr.replace( ".", "" );
		vr	= vr.replace( ".", "" );
		tam	= vr.length;
		
		if (tam < tammax && tecla != 8)
		{
			tam = vr.length + 1 ;
		}

		if ((tecla == 8) && (tam > 1))
		{
			tam = tam - 1 ;
			vr = objeto.value;
			vr = vr.replace( "/", "" );
			vr = vr.replace( "/", "" );
			vr = vr.replace( ",", "" );
			vr = vr.replace( ".", "" );
			vr = vr.replace( ".", "" );
			vr = vr.replace( ".", "" );
			vr = vr.replace( ".", "" );
		} 
		
		//Cálculo para casas decimais setadas por parametro
		if ( tecla == 8 || tecla >= 48 && tecla <= 57 )
		{
			if (decimais > 0)
			{
				if ( (tam <= decimais) )
				{
					if ( objeto.value.length == 1 )
 					{
 						if (decimais == 2)
 						{
 							objeto.value = ("0,0" + vr) ;
 						}
 						else
 						{
							objeto.value = ("0,00" + vr) ;
						}
					}
					else
					{
						if (objeto.value.length == 2)
						{
							if (decimais == 2)
							{
								objeto.value = ("0," + vr);
							}
							else
							{
								objeto.value = ("0,0" + vr);
							}
						}
						else
						{
							objeto.value = ("0," + vr);
						}
					}
				}
				if( (tam == (decimais + 1)) && (tecla == 8))
				{
					objeto.value = vr.substr( 0, (tam - decimais)) + ',' + vr.substr( tam - (decimais), tam ) ;	
				}
				if ( (tam > (decimais + 1)) && (tam <= (decimais + 3)) &&  ((vr.substr(0,1)) == "0"))
				{
					objeto.value = vr.substr( 1, (tam - (decimais+1))) + ',' + vr.substr( tam - (decimais), tam ) ;
				}
				if ( (tam > (decimais + 1)) && (tam <= (decimais + 3)) &&  ((vr.substr(0,1)) != "0"))
				{
				    objeto.value = vr.substr( 0, tam - decimais ) + ',' + vr.substr( tam - decimais, tam ) ; 
				}
				if ( (tam >= (decimais + 4)) && (tam <= (decimais + 6)) )
				{
			 		objeto.value = vr.substr( 0, tam - (decimais + 3) ) + '.' + vr.substr( tam - (decimais + 3), 3 ) + ',' + vr.substr( tam - decimais, tam ) ;
				}
			 	if ( (tam >= (decimais + 7)) && (tam <= (decimais + 9)) )
				{
			 		objeto.value = vr.substr( 0, tam - (decimais + 6) ) + '.' + vr.substr( tam - (decimais + 6), 3 ) + '.' + vr.substr( tam - (decimais + 3), 3 ) + ',' + vr.substr( tam - decimais, tam ) ;
				}
				if ( (tam >= (decimais + 10)) && (tam <= (decimais + 12)) )
				{
			 		objeto.value = vr.substr( 0, tam - (decimais + 9) ) + '.' + vr.substr( tam - (decimais + 9), 3 ) + '.' + vr.substr( tam - (decimais + 6), 3 ) + '.' + vr.substr( tam - (decimais + 3), 3 ) + ',' + vr.substr( tam - decimais, tam ) ;
				}
				if ( (tam >= (decimais + 13)) && (tam <= (decimais + 15)) )
				{
			 		objeto.value = vr.substr( 0, tam - (decimais + 12) ) + '.' + vr.substr( tam - (decimais + 12), 3 ) + '.' + vr.substr( tam - (decimais + 9), 3 ) + '.' + vr.substr( tam - (decimais + 6), 3 ) + '.' + vr.substr( tam - (decimais + 3), 3 ) + ',' + vr.substr( tam - decimais, tam ) ;
				}
			}
			else if(decimais == 0)
			{
				if ( tam <= 3 )
				{ 
			 		objeto.value = vr ;
				}
				if ( (tam >= 4) && (tam <= 6) )
				{
					if(tecla == 8)
					{
						objeto.value = vr.substr(0, tam);
						window.event.cancelBubble = true;
						window.event.returnValue = false;
					}
					objeto.value = vr.substr(0, tam - 3) + '.' + vr.substr( tam - 3, 3 ); 
				}
				if ( (tam >= 7) && (tam <= 9) )
				{
					if(tecla == 8)
					{
						objeto.value = vr.substr(0, tam);
						window.event.cancelBubble = true;
						window.event.returnValue = false;
					}
					objeto.value = vr.substr( 0, tam - 6 ) + '.' + vr.substr( tam - 6, 3 ) + '.' + vr.substr( tam - 3, 3 ); 
				}
				if ( (tam >= 10) && (tam <= 12) )
				{
			 		if(tecla == 8)
					{
						objeto.value = vr.substr(0, tam);
						window.event.cancelBubble = true;
						window.event.returnValue = false;
					}
					objeto.value = vr.substr( 0, tam - 9 ) + '.' + vr.substr( tam - 9, 3 ) + '.' + vr.substr( tam - 6, 3 ) + '.' + vr.substr( tam - 3, 3 ); 
				}
				if ( (tam >= 13) && (tam <= 15) )
				{
					if(tecla == 8)
					{
						objeto.value = vr.substr(0, tam);
						window.event.cancelBubble = true;
						window.event.returnValue = false;
					}
					objeto.value = vr.substr( 0, tam - 12 ) + '.' + vr.substr( tam - 12, 3 ) + '.' + vr.substr( tam - 9, 3 ) + '.' + vr.substr( tam - 6, 3 ) + '.' + vr.substr( tam - 3, 3 ) ;
				}			
			}
		}
	}
	else if((window.event.keyCode != 8) && (window.event.keyCode != 9) && (window.event.keyCode != 13) && (window.event.keyCode != 35) && (window.event.keyCode != 36) && (window.event.keyCode != 46))
		{
			window.event.cancelBubble = true;
			window.event.returnValue = false;
		}
}

//************************************************* Fim FormataValor **********************************//
