function validaCNPJ_ASPNET(source, arguments)
{
	if(checkrealCGC(arguments.Value))
		arguments.IsValid=true;
	else
		arguments.IsValid=false;
}

function validaCNPJ(campo)
{
	if(checkrealCGC(campo))
		return true;
	else
		return false;
}

function FormataCNPJ(Campo, teclapres)
{

	var tecla = teclapres.keyCode;

	var vr = new String(Campo.value);
	vr = vr.replace(".", "");
	vr = vr.replace(".", "");
	vr = vr.replace("/", "");
	vr = vr.replace("-", "");

	tam = vr.length + 1 ;

	
	if (tecla != 9 && tecla != 8)
		{
		if (tam > 2 && tam < 6)
			Campo.value = vr.substr(0, 2) + '.' + vr.substr(2, tam);
		if (tam >= 6 && tam < 9)
			Campo.value = vr.substr(0,2) + '.' + vr.substr(2,3) + '.' + vr.substr(5,tam-5);
		if (tam >= 9 && tam < 13)
			Campo.value = vr.substr(0,2) + '.' + vr.substr(2,3) + '.' + vr.substr(5,3) + '/' + vr.substr(8,tam-8);
		if (tam >= 13 && tam < 15)
			Campo.value = vr.substr(0,2) + '.' + vr.substr(2,3) + '.' + vr.substr(5,3) + '/' + vr.substr(8,4)+ '-' + vr.substr(12,tam-12);
		}

}

function checkrealCGC(campo){

   var campo_filtrado = "", valor_1 = " ", valor_2 = " ", ch = "";
   var valido = false;

   for (i = 0; i < campo.length; i++){
      ch = campo.substring(i, i + 1);
      if (ch >= "0" && ch <= "9"){
         campo_filtrado = campo_filtrado.toString() + ch.toString()
         valor_1 = valor_2;
         valor_2 = ch;
      }
      if ((valor_1 != " ") && (!valido)) valido = !(valor_1 == valor_2);
   }
   if (!valido) campo_filtrado = "12345678912";


   if (campo_filtrado.length < 11)
   {
      for (i = 1; i <= (11 - campo_filtrado.length); i++)
         campo_filtrado = "0" + campo_filtrado;
   }

   if (campo_filtrado.length >= 14)
   {
      if ((campo_filtrado.substring(0,1) == "0") && (campo_filtrado.length == 15))
      {
        campo_filtrado = campo_filtrado.substring(1,15);
      }

      var validacao_var_CGC = checkCGC(campo_filtrado.substring(0,12) );

      if ( campo_filtrado.substring(12,14) == validacao_var_CGC )
      {
         return true;
      }
      else
      {
//         alert('CNPJ incorreto\nPor favor, corrija seu CNPJ');
//         document.form.cnpj.focus();
         return false;
      }
   }
   else
   {
//      alert('CNPJ incorreto\nPor favor, corrija seu CNPJ');
//      document.form.cnpj.focus();
      return false;
   }
}

function checkCGC(vCGC)
{
   var mControle = "";
   var aTabCGC = new Array(5,4,3,2,9,8,7,6,5,4,3,2);
   for (i = 1 ; i <= 2 ; i++){
      mSoma = 0;
      for (j = 0 ; j < vCGC.length ; j++)
         mSoma = mSoma + (vCGC.substring(j,j+1) * aTabCGC[j]);
      if (i == 2 ) mSoma = mSoma + ( 2 * mDigito );
      mDigito = ( mSoma * 10 ) % 11;
      if (mDigito == 10 ) mDigito = 0;
      mControle1 = mControle ;
      mControle = mDigito;
      aTabCGC = new Array(6,5,4,3,2,9,8,7,6,5,4,3);
   }

   return( (mControle1 * 10) + mControle );
}