// onKeyPress=formataData(this);
//  ||          é ou
//  +=       é valor anterior + algo
function formataData( input ) {
	if ( ( input.value.length == 2 ) || ( input.value.length == 5 ) ) {
	   input.value = input.value + "/";
	}
}

// onKeyPress=formataCPF(this);
function formataCPF( input ) {
	if ( ( input.value.length == 3 ) || ( input.value.length == 7 ) ) {
	    input.value=input.value + "." ;
	} else {
		if ( input.value.length == 11 ) {
			input.value = input.value + "-";
		}
	}
}

// onblur=this.value=editadata(this.value,8);
function editaData( strCampo,tam) {
	var i;
	var j;
	var nTamanho;
	var szCampo;
	nTamanho = strCampo.length;
	szCampo = "";
	j = 0;

	for ( i = nTamanho-1; i >= 0; i-- ) {
		if ( isDigit( strCampo.charAt( i ) ) ) {
			szCampo = strCampo.charAt(i) + szCampo;
			j++;
			if ( j > tam ) break;
        }
	}
	
	if ( szCampo.length < tam ) {
		for ( i = szCampo.length; i < tam; i++ ) {
			szCampo = "0" + szCampo;
		}
	}
	if ( j == 0 ) return "";
	return ( szCampo.substr( 0, 2 ) + "/" + szCampo.substr( 2, 2 ) + "/" + szCampo.substr( 4, 4 ) );
}

// onblur=this.value=editacpf(this.value,11);
function editacpf(strCampo,tam)
{
	var i;
	var j;
	var nTamanho;
	var szCampo;
	j=0;
	nTamanho = strCampo.length;
	szCampo = "";
	for (i = nTamanho-1;i>=0;i--)
	{
		if (isDigit(strCampo.charAt(i)))
		{
			szCampo = strCampo.charAt(i) + szCampo;
			j++;
			if (j > tam) break;
        	}
	}
	if (szCampo.length < tam) {
		for (i = szCampo.length;i<tam;i++)
		{
			szCampo = "0" + szCampo;
		}
	}
	if (j==0) return "";
	return (szCampo.substr(0,3)+"."+szCampo.substr(3,3)+"."+szCampo.substr(6,3)+"-"+szCampo.substr(9,2));
}


// onblur=validadata(this)
function ValidaData(input)
{
                  var msgstatus;
                  msgstatus="";
	if ((input.value.length<10)||(input.value.length>10))
	{
		msgstatus = msgstatus + "Informe a data de nascimento no formato (DDMMAAAA).\n\n";
                                    return aviso(input,msgstatus);
	}
	var i = parseInt(input.value.substring(6,10));
	if (i < 1840 || i > 2005)
	{
		msgstatus = msgstatus + "O ano da data de cadastramento deve ser igual ou superior a 1840 e anterior a 2005.\n\n";
		return aviso(input,msgstatus);
	}
	var j = parseInt(input.value.substring(3,5),10);
	if (j < 1 || j > 12)
	{
		msgstatus = msgstatus + "O mês da data de nascimento deve estar entre 1 e 12.\n\n";
		return aviso(input,msgstatus);
	}
	var k = parseInt(input.value.substring(0,2),10);
	if (k < 1 || k > 31)
	{
		msgstatus = msgstatus + "O dia da data de cadastramento deve estar entre 1 e 31.\n\n";
		return aviso(input,msgstatus);
	}
	return true;
}


// onblur=validatitulo(this)
function validaTitulo(Titulo)
{
	var  Soma=0;
	var i = 0;
	var j = 0;
	var DV1c = "";
	var DV2c = "";
	var Sequencial = Titulo.substr(0,9);
	var UF = Titulo.substr(9, 2);
	var DV1 = Titulo.charAt(11);
	var DV2 = Titulo.charAt(12);
	var controle = "";
	var ContIni = 2;
	var ContFim = 10;
	for (j = 1; j <= 2; j++)
	{
		Soma = 0;
		for (i = ContIni; i<= ContFim; i++)
		{
			Soma = Soma + (Sequencial.charAt(i-2) * (ContFim + 2 - i));
		}
		Digito = Soma % 11;
		if ((UF == "01") || (UF == "02"))
		{
			if (Digito == 1)
				Digito = 0;
			else 	if  (Digito == 0)
						Digito = 1;
					else
						Digito = 11 - Digito;
		}
		else
		{
			if ((Digito == 1) || (Digito == 0))
				Digito = 0;
			else
				Digito = 11 - Digito;
		}
		if (j == 1)
			DV1c = Digito;
		else
			DV2c = Digito;

		ContFim = 4;
		controle = controle + Digito;
		Sequencial = UF + controle;
	}
	if ((DV1 != DV1c) || (DV2 != DV2c))
	{
		msgstatus = msgstatus + "CPF inválido. Proceda a correção.\n\n";
		return false;
	}
	else
		return true;
}


// onblur=validaCPF(this)
function validaCPF(rcpf1,rcpf2,c)
{
  d1 = 0;
  for (i=0;i<9;i++)
    d1 += rcpf1.charAt(i)*(10-i);
  d1 = 11 - (d1 % 11);
  if (d1>9) d1 = 0;

  if (rcpf2.charAt(0) != d1)
    return false;

  d1 *= 2;
  for (i=0;i<9;i++)
    d1 += rcpf1.charAt(i)*(11-i);
  d1 = 11 - (d1 % 11);
  if (d1>9) d1 = 0;

  if (rcpf2.charAt(1) != d1)
    return false;
  return true;
}


function isDigit(c)
{

	return ((c >= "0") && (c <= "9"))
}


function isEmpty(s)
{
   return ((s == null) || (s.length == 0))
}


function isInteger(s)
{
	var i

	if (isEmpty(s)) return false;

	for (i=0; i<s.length; i++)
		{
			var c=s.charAt(i)
			if (!isDigit(c)) return false;
		}
	return true;
}


function aviso(campo, msg)
{
	alert(msg);
	campo.focus();
	campo.select();
	return false;
}



function ValidaCNPJ(field)
{
   var valor = field.value;
   if (field.value.length == 0) return true;
   if ( !isInteger(valor) )
   	  { fcnpj = 1; return aviso(field,"CNPJ inválido.");}
    return true;
}


function validaCNPJ(cgc)
{
    var CGC1, CGC2, Matriz;
    var Soma, Digito;
    var i , j;
    var ContIni , ContFim;
    var controle;
	 cgc  = RetiraCaracteresInvalidos(cgc,14);
	 if  (cgc == "00000000000000")
		return false;
    CGC1 = cgc.substring(0,12);
    CGC2 = cgc.substring(12,14);
    controle = "";
    ContIni = 1;
    ContFim = 12;
    K = 0;
    for (j = 1; j <= 2; j++)
    {
	Soma = 0;
        	for (i = ContIni; i <=ContFim; i++)
	{
		Mult = (ContFim + 1 + j - i);
		 if (Mult > 9) Mult = Mult - 8;
          		 Soma = Soma + (parseInt(CGC1.substring(i - j, i-K)) * Mult);
        	}
        	 if (j == 2) Soma = Soma + (2 * Digito);
	 			Digito = (Soma * 10) % 11;
       	 if (Digito == 10) Digito = 0;
        	 controle = controle + Digito;
         	 ContIni = 2;
	 K=1;
        	 ContFim = 13;
      }
      if (controle != CGC2) return false; return true;
}


function RetiraCaracteresInvalidos(strCampo,tam) {
	nTamanho = strCampo.length;
	szCampo = "";
	j=0;
	for (i = nTamanho-1;i>=0;i--)
	{
		if (isDigit(strCampo.charAt(i)))	{
			szCampo = strCampo.charAt(i) + szCampo;
			j++;
			if (j > tam) break;
		}
	}
	if (szCampo.length < tam) {
		for (i = szCampo.length;i<tam;i++)
		{
			szCampo = "0" + szCampo;
		}
	}
    return szCampo;
}