/* Funções p/ validação de CPF eCNPJ
   Autor : Wellington Pérez Valdez <wpvaldez@consultant.com
   Criado em : 01/12/2003 */

function padl(str, tam, caracter) {
	/* Acrescenta o $caracter na string pela esquerda até que o tamanho seja == $tam */
	var resto, i;
	var junta = '';

	resto = tam - str.length;
	// Verifica se a string é maior que o tam especificado
	if (resto < 0) {
		// Se sim, devolve a string sem editar
		return str;
	}
	for (i = 0; i < resto; i++) {
		junta = junta.concat('0');
	}

	str = junta.concat(str);

	return str;
}

function padr(str, tam, caracter) {
	/* Acrescenta o $caracter na string pela esquerda até que o tamanho seja == $tam */
	var resto, i;
	var junta = '';

	resto = tam - str.length;
	// Verifica se a string é maior que o tam especificado
	if (resto < 0) {
		// Se sim, devolve a string sem editar
		return str;
	}
	for (i = 0; i < resto; i++)	{
		junta = junta.concat('0');
	}

	str = str.concat(junta);

	return str;
}

function DeixaDigitos(cText){
	cNewValue = "";
	for ( nI=0; nI<cText.length; nI++){
		cChar = cText.substring(nI, nI+1);
		if ( cChar >= "0" && cChar <= "9" ) cNewValue += cChar;
	}
	return cNewValue;
}

function isCPF(cpf_num) {
//	cpf_num = padl(DeixaDigitos(cpf_num), 11, '0');
	cpf_num = DeixaDigitos(cpf_num);
	if ( cpf_num.length != 11 ) return false;
	var dg1 = parseInt(cpf_num.charAt(0));
	var dg2 = parseInt(cpf_num.charAt(1));
	var dg3 = parseInt(cpf_num.charAt(2));
	var dg4 = parseInt(cpf_num.charAt(3));
	var dg5 = parseInt(cpf_num.charAt(4));
	var dg6 = parseInt(cpf_num.charAt(5));
	var dg7 = parseInt(cpf_num.charAt(6));
	var dg8 = parseInt(cpf_num.charAt(7));
	var dg9 = parseInt(cpf_num.charAt(8));
	var dg10 = parseInt(cpf_num.charAt(9));
	var dg11 = parseInt(cpf_num.charAt(10));
	// Verificação do 10.o digito
	var dc10 = (dg9*2) + (dg8*3) + (dg7*4) + (dg6*5) + (dg5*6) + (dg4*7) + (dg3*8) + (dg2*9) + (dg1*10);
	var rdiv = dc10 % 11;
	//
	rdiv = ( (rdiv == 0) || (rdiv == 1) ? 0 : 11 - rdiv );
	// Verifica se o resultado é igual ao décimo digito
	if ( rdiv != dg10 ) return false;

	// Verificacao do 11.o digito
	var dc11 = (dg10*2) + (dg9*3) + (dg8*4) + (dg7*5) + (dg6*6) + (dg5*7) + (dg4*8) + (dg3*9) + (dg2*10) + (dg1*11);
	rdiv = dc11 % 11;
	rdiv = ( (rdiv == 0) || (rdiv == 1) ? 0 : 11 - rdiv );
	return ( rdiv == dg11 );
}

function isCNPJ(cnpj_num) {
//	cnpj_num = padl(DeixaDigitos(cnpj_num), 14, '0');
	cnpj_num = DeixaDigitos(cnpj_num);
	if ( cnpj_num.length != 14 ) return false;
	var dg1 = parseInt(cnpj_num.charAt(0));
	var dg2 = parseInt(cnpj_num.charAt(1));
	var dg3 = parseInt(cnpj_num.charAt(2));
	var dg4 = parseInt(cnpj_num.charAt(3));
	var dg5 = parseInt(cnpj_num.charAt(4));
	var dg6 = parseInt(cnpj_num.charAt(5));
	var dg7 = parseInt(cnpj_num.charAt(6));
	var dg8 = parseInt(cnpj_num.charAt(7));
	var dg9 = parseInt(cnpj_num.charAt(8));
	var dg10 = parseInt(cnpj_num.charAt(9));
	var dg11 = parseInt(cnpj_num.charAt(10));
	var dg12 = parseInt(cnpj_num.charAt(11));
	var dg13 = parseInt(cnpj_num.charAt(12));
	var dg14 = parseInt(cnpj_num.charAt(13));
	// Verificação do 13o digito
	var dc13 = (dg12*2) + (dg11*3) + (dg10*4) + (dg9*5) + (dg8*6) + (dg7*7) + (dg6*8) + (dg5*9) + (dg4*2) + (dg3*3) + (dg2*4) + (dg1*5);
	var rdiv = dc13 % 11;
	//
	rdiv = ( (rdiv == 0) || (rdiv == 1) ? 0 : 11 - rdiv );
	// Verifica se o resultado é igual ao 13o digito
	if ( rdiv != dg13 ) return false;
	
	// Verificacao do 14o digito
	var dc14 = (dg13*2) + (dg12*3) + (dg11*4) + (dg10*5) + (dg9*6) + (dg8*7) + (dg7*8) + (dg6*9) + (dg5*2) + (dg4*3) + (dg3*4) + (dg2*5) + (dg1*6);
	rdiv = dc14 % 11;
	rdiv = ( (rdiv == 0) || (rdiv == 1) ? 0 : 11 - rdiv );
	return ( rdiv == dg14 );
}

