/*
    INICIO: Usar para fazer a validação do CPF e do CNPJ no client
            passar o função na propriedade ClientValidateFunction
*/
function ValidaCPF(source, args) {
    args.IsValid = checkCPF(args.Value);
}

function ValidaCNPJ(source, args) {
    args.IsValid = checkCNPJ(args.Value);
}
/*
    FIM: Usar para fazer a validação do CPF e do CNPJ no client
*/

/*
    INICIO: Validação do CPF no client
*/
function checkCPF(strNumber)
{
   CPF = strNumber
   CPF = CPF.split(".").join("");
   CPF = CPF.split("-").join("");

	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;
//        alert('Correto');
	return true;
}
/*
    FIM: Validação do CPF no client
*/

/*
    INICIO: Validação do CNPJ no client
*/
function getNumber(strNumber)
{
   var number;
   var strRetNumber="";
 
   for (var i=0 ; i < strNumber.length ; i++)
   {
      number = parseInt(strNumber.charAt(i));
      if ( number )
      {
         strRetNumber += strNumber.charAt(i)
      }
      else
      {
         if ( number == 0 )
         {
            strRetNumber += strNumber.charAt(i)
         }
      }
   }
   return strRetNumber;
}

function check1( value )
{
   var count = 1;
   var len = value.length;
   var first;
   if ( len > 1 )
   {
      first = value.charAt( 0 );
   }
   else
   {
      return false;
   }
   for ( var i = 1; i < value.length ; i++ )
   {
      if ( value.charAt( i ) == first )
      {
         count++;
      }
   }

   if ( count == len )
   {
      return false;
   }
      
   return true;
}

function checkCNPJ(cnpj)
{ 
   var cnpjCalc; 
   var cnpjAdd; 
   var i; 
   var cnpjDigit; 
   
   cnpj = getNumber( cnpj , 14 );
      
   check1( cnpj );
 
   // Get only numeric digits
   cnpjCalc = cnpj.substring( 0 , 12 );
      
   // First part of digit verification
   cnpjAdd = 0; 
   for( i = 0 ; i < 4 ; i++ ) 
   { 
      cnpjAdd += parseInt( cnpjCalc.substring( i , i + 1 ) ) * (5 - i); 
   } 
 
   for( i = 0 ; i < 8 ; i++ ) 
   { 
      cnpjAdd += parseInt( cnpjCalc.substring( i + 4 , i + 4 + 1 ) ) * (9 - i); 
   } 
      
   // Fisrt digit
   cnpjDigit = 11 - (cnpjAdd % 11); 
       
   if ( cnpjDigit == 10 || cnpjDigit == 11 ) 
   { 
      cnpjCalc += '0'; 
   } 
   else 
   { 
      cnpjCalc += cnpjDigit; 
   } 
      
   // Second part of digit verification
   cnpjAdd = 0; 
   for ( i = 0 ; i < 5 ; i++ ) 
   { 
      cnpjAdd += parseInt( cnpjCalc.substring( i , i + 1 ) ) * (6 - i); 
   } 
   for ( i = 0 ; i < 8 ; i++ ) 
   { 
      cnpjAdd += parseInt( cnpjCalc.substring( i + 5, i + 5 + 1 ) ) * (9 - i); 
   } 
      
   // Second digit
   cnpjDigit = 11 - (cnpjAdd % 11); 
   if ( cnpjDigit == 10 || cnpjDigit == 11 ) 
   { 
      cnpjCalc += '0'; 
   } 
   else 
   { 
      cnpjCalc += cnpjDigit; 
   } 
   
   return ( cnpj == cnpjCalc ); 
}
/*
    FIM: Validação do CPF no client
*/
