//funcao para validar CNPJ
function valida_cnpj( pcgc ){

	if (pcgc.length != 14) {
		return false;
	}else {
		sim=true
	}

	if (sim){	
		for (i=0;((i<=(pcgc.length-1))&& sim); i++){  //>
			val = pcgc.charAt(i)
			if((val!="9")&&(val!="0")&&(val!="1")&&(val!="2")&&(val!="3")&&(val!="4")&&(val!="5")&&(val!="6")&&(val!="7")&&(val!="8")) {
				return false;
			}
		}
		
		if (sim){
			m2 = 2
			soma1 = 0
			soma2 = 0
			
			for (i=11;i>=0;i--){
				val = eval(pcgc.charAt(i))
				m1 = m2
				if  (m2<9){ 
					m2 = m2+1
				}else {
					m2 = 2
				}
				
				soma1 = soma1 + (val * m1)
				soma2 = soma2 + (val * m2)
			}
			
			soma1 = soma1 % 11
			if (soma1 < 2) { 
				d1 = 0
			}else { 
				d1 = 11- soma1
			}
			soma2 = (soma2 + (2 * d1)) % 11
			
			if (soma2 < 2) {
				d2 = 0
			}else { 
				d2 = 11- soma2
			}
		
			if ((d1==pcgc.charAt(12)) && (d2==pcgc.charAt(13))){
				return true;
			}else{
				return false;
			}
		}
	}
}


//funcao para validar CPF
function valida_cpf( StrCPF ){
	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;

	return false;

	/*
   var result = true;
   var digit;
   var calc;
 
	if(strNumber == '00000000000' || strNumber == '11111111111' || strNumber == '22222222222' || strNumber == '33333333333' || strNumber == '44444444444' || strNumber == '55555555555' || strNumber == '66666666666' || strNumber == '77777777777' || strNumber == '88888888888' ||strNumber == '99999999999'){
		result = false;
	}
 
   strNumber = getNumber(strNumber);
   if (strNumber.length < 4) {
      result = false;
   }
 
   if (!parseInt(strNumber.substring(strNumber.length - 6 , strNumber.length)))
   {
      result = false;
   }
 
   digit = parseInt(strNumber.substring(strNumber.length-2, strNumber.length));
   number = strNumber.substring(0 , strNumber.length - 2);
 
   calc = parseInt(getCPFDigit(number));
 
   if ( digit != calc )
   {
      result = false;
   }
   return result;
  */
}

function getCPFDigit(strNumber){
   var i;
   var digit1;
   var digit2;
   var total;
   var result;
   
   strNumber = '000000000' + getNumber(strNumber)
   strNumber = strNumber.substring(strNumber.length - 9, strNumber.length)
 
   total=0
   for (i = 1 ; i < 10; i++) 
      total = total + strNumber.substring(i - 1 , i) * (11 - i);
 
   digit1 = total * 10 % 11;
   if (digit1 == 10)
   {
      digit1 = 0;
   }
 
   aux = digit1.toString(10);
   strNumber = strNumber + aux.substring(aux.length - 1 , aux.length);
 
   total=0;
 
   for (i = 1 ; i < 11 ; i++) 
      total = total + strNumber.substring(i - 1 , i) * (12 - i);
 
   digit2 = total * 10 % 11;
   if (digit2 == 10)
   {
      digit2 = 0;
   }
 
   aux = digit1 * 10 + digit2;
   caux = aux.toString(10);
   result = caux.substring(caux.length - 2 , caux.length);
 
   
   return result;
}

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;
}



//############################# Funções de CPF e CNPJ ########################//
//Função para duplo validar CPF/CNPJ
function validaCampoCnpjCpf( objValor ){
	objValor = objValor.replace(/\./g,'');
	objValor = objValor.replace(/\//g,'');
	objValor = objValor.replace(/\-/g,'');
	
	if( objValor.length < 12 ){
		return valida_CPF( objValor );
	}else{
		return valida_CNPJ( objValor );
	}

}

// Função para validar CPF
function valida_CPF(cpf) {
	var i;
	
	cpf = cpf.replace(".", "");
	cpf = cpf.replace(".", "");
	cpf = cpf.replace("/", "");
	cpf = cpf.replace("-", "");
	var c  = cpf.substr(0,9);
	var dv = cpf.substr(9,2);
	
	for( i = 0 ; i < 11 ; i++ ){
		if( cpf == (i*11111111111) ){
			return false;
		}
	}
	
	var d1 = 0;
	
	for (i = 0; i < 9; i++) {
		d1 += c.charAt(i)*(10-i);
	}
	
	d1 = 11 - (d1 % 11);
	if (d1 > 9) d1 = 0;
	
	d2 = d1 * 2;
	
	for (i = 0; i < 9; i++) {
		d2 += c.charAt(i)*(11-i);
	}
	d2 = 11 - (d2 % 11);
	if (d2 > 9) d2 = 0;
	
	if (dv.charAt(0) != d1 || dv.charAt(1) != d2) {
		return false;
	}
	return true;
}

// Função para validar CNPJ
function valida_CNPJ(cnpj) {
	var i;
	
	cnpj = cnpj.replace(".", "");
	cnpj = cnpj.replace(".", "");
	cnpj = cnpj.replace("/", "");
	cnpj = cnpj.replace("-", "");
	var c  = cnpj.substr(0,12);
	var dv = cnpj.substr(12,2);
	
	if (cnpj == "00000000000000") {
		return false;
	}
	
	var d1 = 0;
	var ms = "543298765432";
	
	for (i = 0; i < 12; i++) {
		d1 += c.charAt(i)*ms.charAt(i);
	}
	d1 = (d1 % 11);
	if (d1 == 0 || d1 == 1) {
		d1 = 0;
	} else {
		d1 = 11 - d1;
	}
	
	var d1 = 0;
	var ms = "543298765432";
	
	for (i = 0; i < 12; i++) {
		d1 += c.charAt(i)*ms.charAt(i);
	}
		d1 = (d1 % 11);
	if (d1 == 0 || d1 == 1) {
		d1 = 0;
	} else {
		d1 = 11 - d1;
	}
	
	var c = c + d1;
	
	var d2 = 0;
	var ms = "6543298765432";
	for (i = 0; i < 13; i++) {
		d2 += c.charAt(i)*ms.charAt(i);
	}
	d2 = (d2 % 11);
	if (d2 == 0 || d2 == 1) {
		d2 = 0;
	} else {
		d2 = 11 - d2;
	}
	
	if (dv.charAt(0) != d1 || dv.charAt(1) != d2) {
		return false;
	}
	return true;
}
