function MudaCampo( pTamCampOri,pCampOri, pCampDest )
{
	var sCamp = '';
	sCamp = document.FRM.elements[pCampOri].value;
	
	//status = sCamp.length +  '//' + pTamCampOri + '-' + pTamCampOri +  '==" + sCamp;
	if (pTamCampOri == sCamp.length)
		document.FRM.elements[pCampDest].focus();
}
function setFocus(p) 
{
	p.focus();
}

function Verifica_CPF(objCpf) {
var valor = '';
var CPF = '';
CPF = objCpf.value; // Recebe o valor digitado no campo

// Elimina Caracteres não numericos
for (i=0 ; i <= CPF.length ; i++) {
		if (CPF.substring(i,i+1)<=9 && CPF.substring(i,i+1)!=" " ){
			valor = valor + CPF.substring(i,i+1);
			}
}
CPF = valor;	


// Verifica se o campo é nulo
if (CPF == '') {
  alert('Campo obrigatorio!');
  return false;
}
if (apenasNumerosRepetidos(CPF)){
  alert('CPF Invalido!');
  return false;
}
// Aqui começa a checagem do CPF
var POSICAO, I, SOMA, DV, DV_INFORMADO;
var DIGITO = new Array(10);
DV_INFORMADO = CPF.substr(9, 2); // Retira os dois últimos dígitos do número informado

// Desemembra o número do CPF na array DIGITO
for (I=0; I<=8; I++) {
  DIGITO[I] = CPF.substr( I, 1);
}

// Calcula o valor do 10º dígito da verificação
POSICAO = 10;
SOMA = 0;
   for (I=0; I<=8; I++) {
      SOMA = SOMA + DIGITO[I] * POSICAO;
      POSICAO = POSICAO - 1;
   }
DIGITO[9] = SOMA % 11;
   if (DIGITO[9] < 2) {
        DIGITO[9] = 0;
}
   else{
       DIGITO[9] = 11 - DIGITO[9];
}

// Calcula o valor do 11º dígito da verificação
POSICAO = 11;
SOMA = 0;
   for (I=0; I<=9; I++) {
      SOMA = SOMA + DIGITO[I] * POSICAO;
      POSICAO = POSICAO - 1;
   }
DIGITO[10] = SOMA % 11;
   if (DIGITO[10] < 2) {
        DIGITO[10] = 0;
   }
   else {
        DIGITO[10] = 11 - DIGITO[10];
   }

// Verifica se os valores dos dígitos verificadores conferem
DV = DIGITO[9] * 10 + DIGITO[10];
   if (DV != DV_INFORMADO) {
      alert('CPF invalido');
      objCpf.value = '';
      objCpf.focus();
      return false;
   } 
}

function validaCGC_CPF(objname) 
{

	var datafield = objname;
	var StrData = datafield.value;
	
	var CGCPat = /^(\d{2}).(\d{3}).(\d{3})\/(\d{4})-(\d{2})/;
	var CGCPat2 = /^(\d{14})/;
	var CPFPat = /^(\d{3}).(\d{3}).(\d{3})-(\d{2})/;
	var CPFPat2 = /^(\d{11})/;
	
	var matchCGCArray = StrData.match(CGCPat);
	var matchCGCArray2 = StrData.match(CGCPat2);
	var matchCPFArray = StrData.match(CPFPat);
	var matchCPFArray2 = StrData.match(CPFPat2);
	
	if (StrData == ""){return true;}
	if (apenasNumerosRepetidos(StrData))
	{
		cpfalert = 'O número do CPF deve ser informado incluindo-se os dois dígitos verificadores. Não são necessários zeros à esquerda.\nExemplo: 000.000.000-00 ou 00000000000\n\n';
		cgcalert = 'O número do CGC deve ser informado incluindo-se os 14 dígitos. Não são necessários zeros à esquerda.\nExemplo: 00.000.000\/0000-00 ou 00000000000000';
		alert(cgcalert);
		//alert('Você deve fornecer um CGC ou um CPF válido\n\n' + cpfalert + cgcalert);
		
		return false;
	}
	if (matchCGCArray == null && matchCGCArray2 == null && matchCPFArray == null
	&& matchCPFArray2 == null) 
	{
		cpfalert = 'O número do CPF deve ser informado incluindo-se os dois dígitos verificadores. Não são necessários zeros à esquerda.\nExemplo: 000.000.000-00 ou 00000000000\n\n';
		cgcalert = 'O número do CGC deve ser informado incluindo-se os 14 dígitos. Não são necessários zeros à esquerda.\nExemplo: 00.000.000\/0000-00 ou 00000000000000';
		alert(cgcalert);
		//alert('Você deve fornecer um CGC ou um CPF válido\n\n' + cpfalert + cgcalert);
		
		//return false;
	}
	else if(matchCGCArray != null) 
	{
		StrData = matchCGCArray[1] + matchCGCArray[2] + matchCGCArray[3] +
		matchCGCArray[4] + matchCGCArray[5] ;
		return check_cgc(StrData,datafield);
	}
	else if(matchCGCArray2 != null) 
	{
		StrData = matchCGCArray2[1];
		return check_cgc(StrData,datafield);
	}
	else if(matchCPFArray != null) 
	{
		StrData = matchCPFArray[1] + matchCPFArray[2] + matchCPFArray[3] +
		matchCPFArray[4];
		return check_cpf(StrData,datafield);
	}
	else if(matchCPFArray2 != null) 
	{
		StrData = matchCPFArray2[1];
		return check_cpf(StrData,datafield);
	}
	return false;
}
function apenasNumerosRepetidos(str)
{
	var prim= str.charAt(0);
	var numbers= new String("0123456789");
	if (numbers.indexOf(prim) == -1)
		return false;
	for( var i=1; i< str.length; i++)
	{
		if( str.charAt(i) != prim)
			return false;
	}
	return true;
}
function check_cpf (StrCPF,obj)
{
x = 0;
soma = 0;
dig1 = 0;
dig2 = 0;
texto = "";
StrCPF1="";
len = StrCPF.length;
x = len -1;
for (var i=0; i <= len - 3; i++)
{
y = StrCPF.substring(i,i+1);
soma = soma + ( y * x);
x = x - 1;
texto = texto + y;
}
dig1 = 11 - (soma % 11);
if (dig1 == 10) dig1=0 ;
if (dig1 == 11) dig1=0 ;
StrCPF1 = StrCPF.substring(0,len - 2) + dig1 ;
x = 11; soma=0;
for (var i=0; i <= len - 2; i++)
{
soma = soma + (StrCPF1.substring(i,i+1) * x);
x = x - 1;
}
dig2= 11 - (soma % 11);
if (dig2 == 10) dig2=0;
if (dig2 == 11) dig2=0;
if ((dig1 + "" + dig2) == StrCPF.substring(len,len-2))
{
// alert ("Número do CPF Válido !");
return true;
}
//alert ("Número do CPF Inválido !");
//obj.focus();
return false;
}

function check_cgc (StrCGC,obj)
{
	var varFirstChr = StrCGC.charAt(0);
	var vlMult,vlControle,s1, s2 = "";
	var i,j,vlDgito,vlSoma = 0;
	var vaCharCGC = false;
	
	for ( var i=0; i<=13; i++ ) 
	{
		var c = StrCGC.charAt(i);
		if( ! (c>="0")&&(c<="9") )
		{
			//alert("Número do CGC Inválido !");
			//obj.focus();
			return false; 
		}
		if( c!=varFirstChr ) { vaCharCGC = true; }
	}
	
	if( ! vaCharCGC ) 
	{
		//alert("Número do CGC Inválido !");
		//obj.focus();
		return false ;
	}
	
	s1 = StrCGC.substring(0,12);
	s2 = StrCGC.substring(12,15);
	vlMult = "543298765432";
	vlControle = "";
	
	for ( j=1; j<3; j++ ) 
	{
		vlSoma = 0;
		for ( i=0; i<12; i++ )
		{ vlSoma += eval( s1.charAt(i) )* eval( vlMult.charAt(i) );}
		if( j == 2 ){ vlSoma += (2 * vlDgito); }
		vlDgito = ((vlSoma*10) % 11);
		if( vlDgito == 10 ){ vlDgito = 0; }
		vlControle = vlControle + vlDgito;
		vlMult = "654329876543";
	}
	
	if( vlControle != s2 ) 
	{
		//alert("Número do CGC Inválido !");
		//obj.focus();
		return false;
	}
	else 
	{
		// alert("Número do CGC Válido !");
		return true;
	}
}

function funCalculaIdade(pData,pDiaAtual, pMesAtual) {		

		var idade = 0
		dataAtual = new Date;
		dataAtual = dataAtual.getFullYear(); 
		diaAtual = eval(pDiaAtual);		
		mesAtual = eval(pMesAtual);				
		var data = pData;						
		if (pData != "") {
			ano = data.split("/");			
			dia = eval(ano[0]);			
			mes = eval(ano[1]);						
			ano = ano[2];						
			idade =  dataAtual - ano;									
			if (idade != "")  {
				if ((mesAtual < mes) || (mesAtual = mes)) {
					if (diaAtual > dia) {						
						document.FRM.txtIdade.innerText = idade + " anos";
					}
					else if ((diaAtual < dia) || (diaAtual = dia)) {						
						idade = idade - 1;
						document.FRM.txtIdade.innerText = idade + " anos";
					}
				}
				else if (mesAtual > mes) { 
					document.FRM.txtIdade.innerText = idade + " anos";									
				}	
			}			
		}
		else
			document.FRM.txtIdade.innerText = "";			
	}

	function chkDados(campo,tipo,msk,teclapres,acao){		
		var tecla = teclapres.keyCode;
		var valor = "";
		vr = document.FRM.elements[campo].value;
				
		cdCampo = campo;
		nmCampo = document.FRM.elements[cdCampo].name;              
				
		// Elimina Caracteres não numericos
		for (i=0 ; i <= vr.length ; i++) {
			 	if (vr.substring(i,i+1)<=9 && vr.substring(i,i+1)!=" " ){
			 		valor = valor + vr.substring(i,i+1);
			 	 }
		}
		vr = valor;		
							
		if (tipo==2){
			if ((tecla==46)||(tecla==8)||(tecla==37)||(tecla==38)||(tecla==39)||(tecla==40)){
			}else{
				if (isNaN(vr)){
					    alert("Este campo é numérico");
						document.FRM.elements[campo].focus();
						return;
				}else{
					if (acao=="sair"){
						document.FRM.elements[campo].value = incluirMSKSair(nmCampo,vr,msk);
					}else{
						document.FRM.elements[campo].value = incluirMSK(vr,msk);
					}

				}
			}
		}
		if (tipo==3){
			if (acao=="sair"){
				if (tam==0){
					valor="";
				}else{
					var valor =  vr.substr( 0,tam -2) + '.' + vr.substr( tam-2, tam);
					valor = outputMoney(valor);
					if (valor=="0,00"){
						valor="";
					}
				}
				document.FRM.elements[campo].value = valor;
			}else{
				tam = vr.length
				if (tam==0){
					valor = "";
				}else{
					if (tam == 1){
						var valor = vr;
					}else if (tam ==2){
						vr = document.FRM.elements[campo].value;
						var valor =  vr.substr( 0,tam -1) + '.' + vr.substr( tam-1, tam);
					}else{
						var valor =  vr.substr( 0,tam -2) + '.' + vr.substr( tam-2, tam);
						valor = outputMoney(valor);
						if (valor=="0,00"){
							valor = "";
						}
					}
				}
				document.FRM.elements[campo].value = valor;
			}
		}
		if (tipo==4){
			if (acao =="sair"){
				var vr, vr2;
				vr = document.FRM.elements[campo].value;
				if (vr!=""){
					vr2 = vr.split("/");
                        
                                        if (isDate(vr2[0],vr2[1],vr2[2])){
         				   if (vr2[2] < 1800 ){
                                             alert("Informe uma data maior que 01/01/1800."); 
                                                document.FRM.elements[campo].value ="";
						document.FRM.elements[campo].focus();
						return; }

                                        }else{
					    alert("Data não Válida.");
					    document.FRM.elements[campo].value ="";
						document.FRM.elements[campo].focus();
						return;
					}
				   
                                }
			
			}else{ 
				var vr2;
				if (vr!=""){
					vr2 = vr.split("/");			
					if ((tecla==46)||(tecla==8)||(tecla==37)||(tecla==38)||(tecla==39)||(tecla==40)){
					}else{
						vr = document.FRM.elements[campo].value;
						vr = vr.replace( ".", "" );
						vr = vr.replace( "/", "" );
						vr = vr.replace( "/", "" );
						tam = vr.length + 1;
						if ( tecla != 9 && tecla != 8 ){
							if ( tam > 3 && tam < 5 )
								document.FRM.elements[campo].value = vr.substr( 0, tam - 2  ) + '/' + vr.substr( tam - 2, tam );
							if ( tam >= 5)
								document.FRM.elements[campo].value = vr.substr( 0, 2 ) + '/' + vr.substr( 2, 2 ) + '/' + vr.substr( 4, 4 ); 
						}				
					}
				}
			}
		}		
	}

	function incluirMSK(valor,msk){
		var tamanho = 0;
		var output="";
		if (msk.length ==0){
			output=valor;
		}
		// determina o Tamanho da Mascara
		for (i=0 ; i <= msk.length ; i++) {
			 	if (msk.substring(i,i+1)=="#" ){
			 		tamanho = tamanho + 1;
			 	}
		}

		for (i=0 ; i <= valor.length-1 ; i++) {
			 	msk = msk.replace( "#", valor.substring(i,i+1) );

		}

		var fim = 0;
		for (i=0 ; i <= msk.length ; i++) {
				if (msk.substring(i,i+1)=="#"){
				  fim = 1;
			 	}
			 	if (fim ==0){
			 		output += msk.substring(i,i+1);
				}
		}
		return (output);
	}
	
	function incluirMSKSair(nmCampo,valor,msk){
		var tamanho = 0;
		var output="";
		if (msk.length ==0){
			output=valor;
		}else{
			if (valor.length ==0){
				output="";
			}else{			
				// determina o Tamanho da Mascara
				for (i=0 ; i <= msk.length ; i++) {
					 	if (msk.substring(i,i+1)=="#" ){
					 		tamanho = tamanho + 1;
					 	}
				}
				if (valor.length <tamanho){
					for (i=valor.length+1 ; i <=tamanho ; i++){						
						if((nmCampo == "nrTelefoneResidencial") || (nmCampo == "nrCelularCelular")){
							valor = valor + " ";
						}else{
							valor = "0" + valor;
						}	
					}
				}
				output = msk;
				for (i=0 ; i <= valor.length-1 ; i++) {
				 	output = output.replace( "#", valor.substring(i,i+1) );
				}
			}
		}
		return (output);
	}
	
	function y2k(number) { return (number < 1000) ? number + 1900 : number; }


	function isDate (day,month,year) {
		var today = new Date();
		if (!month || !year) return false
		year = ((!year) ? y2k(today.getYear()):year);
		month = ((!month) ? today.getMonth():month-1);
		if (!day) return false
		var test = new Date(year,month,day);
		if ( (y2k(test.getYear()) == year) &&
		     (month == test.getMonth()) &&
		     (day == test.getDate()) )
		    return true;
		else
		    return false;

	}	
	
function CheckShortDate(objName)
{
	var datefield = objName;
	var OldValue = datefield.value;
	
	if (datefield.value == "")
		Exit;
	
	datefield.value = "01/" + OldValue;
	
	if (chkdate(objName) == false) 
	{
		datefield.select();
		alert("Data Invalida. Por favor tente novamente.");
		datefield.value = '';
		datefield.focus();
		return false;
	}
	else 
	{
		datefield.value = OldValue;
		return true;
	}
}

function checkdate(objName) 
{
	var datefield = objName;
	if (chkdate(objName) == false) 
	{
		datefield.select();
		alert("Data Invalida. Por favor tente novamente.");
		datefield.value = '';
		datefield.focus();
		return false;
	}
	else 
	{
		return true;
	}
}

function chkdate(objName) 
{
	//var strDatestyle = "US"; //United States date style
	var strDatestyle = "EU";  //European date style
	var strDate;
	var strDateArray;
	var strDay;
	var strMonth;
	var strYear;
	var intday;
	var intMonth;
	var intYear;
	var booFound = false;
	var datefield = objName;
	var strSeparatorArray = new Array("-"," ","/",".");
	var intElementNr;
	var err = 0;
	var strMonthArray = new Array(12);
	strMonthArray[0] = "Jan";
	strMonthArray[1] = "Fev";
	strMonthArray[2] = "Mar";
	strMonthArray[3] = "Abr";
	strMonthArray[4] = "Mai";
	strMonthArray[5] = "Jun";
	strMonthArray[6] = "Jul";
	strMonthArray[7] = "Ago";
	strMonthArray[8] = "Set";
	strMonthArray[9] = "Out";
	strMonthArray[10] = "Nov";
	strMonthArray[11] = "Dez";
	strDate = datefield.value;
	if (strDate.length < 1) 
	{
		return true;
	}
	for (intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++) 
	{
		if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1) 
		{
			strDateArray = strDate.split(strSeparatorArray[intElementNr]);
			if (strDateArray.length != 3)
			{
				err = 1;
				return false;
			}
			else
			{
				if (IsNum(strDateArray[0])){strDay = strDateArray[0];}else{return false;}
				if (IsNum(strDateArray[1])){strMonth = strDateArray[1];}else{return false;}
				if (IsNum(strDateArray[2])){strYear = strDateArray[2];}else{return false;}
			}
			booFound = true;
		}
	}
	if (booFound == false) 
	{
		if (strDate.length>5)
		{
			if (IsNum(strDate.substr(0, 2))){strDay = strDate.substr(0, 2);}else{return false;}
			if (IsNum(strDate.substr(2, 2))){strMonth = strDate.substr(2, 2);}else{return false;}
			if (IsNum(strDate.substr(4))){strYear = strDate.substr(4);}else{return false;}
		}else{
		return false
		}
	}
	if (strYear.length == 2) 
	{
		strYear = '20' + strYear;
	}
	// US style
	if (strDatestyle == "US") 
		{
		strTemp = strDay;
		strDay = strMonth;
		strMonth = strTemp;
		}
	intday = parseInt(strDay, 10);
	if (isNaN(intday)) 
	{
		err = 2;
		return false;
	}
	intMonth = parseInt(strMonth, 10);
	if (isNaN(intMonth)) 
	{
		for (i = 0;i<12;i++) 
		{
			if (strMonth.toUpperCase() == strMonthArray[i].toUpperCase()) 
			{
				intMonth = i+1;
				strMonth = strMonthArray[i];
				i = 12;
			}
		}
		if (isNaN(intMonth))
		{
			err = 3;
			return false;
		}
	}
	intYear = parseInt(strYear, 10);
	if (isNaN(intYear)) {
	    err = 4;
	    return false;
	} else {
	if (intYear < 1753 || intYear > 9999) {
	    err = 4;
	    return false;
	    } 
	}
	
	if (intMonth>12 || intMonth<1) 
	{
		err = 5;
		return false;
	}
	if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday < 1)) 
	{
		err = 6;
		return false;
	}
	if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intday > 30 || intday < 1)) 
	{
		err = 7;
		return false;
	}
	if (intMonth == 2) 
	{
		if (intday < 1) 
		{
			err = 8;
			return false;
		}
		if (LeapYear(intYear) == true) 
		{
			if (intday > 29) 
			{
				err = 9;
				return false;
			}
		}
		else 
		{
			if (intday > 28) 
			{
				err = 10;
				return false;
			}
		}
	}
	intday = "0" + intday;
	intMonth = "0" + intMonth;
	datefield.value = intday.slice(intday.length-2,intday.length)  + "/" + intMonth.slice(intMonth.length-2,intMonth.length)  + "/" + intYear;
	return true;

}
function LeapYear(intYear) {
	if (intYear % 100 == 0) {
		if (intYear % 400 == 0) { return true; }
		}
		else {
			if ((intYear % 4) == 0) { return true; }
		}
	return false;
}

function IsNum( value )
{
	var strValidos = "0123456789.,-";
	var valor= new String(value);
	for( var i=0; i< valor.length; i++)
	{
		if( strValidos.indexOf(valor.charAt(i)) == -1)
			return false;
	}
	return true;
}

function isTxt(value)
{
	var strValidos = "0123456789";
	var valor= new String(value);
	for( var i=0; i< valor.length; i++)
	{
		if( strValidos.indexOf(valor.charAt(i)) != -1)
			return false;
	}
	return true;
}
