/*
############################################################################
# Name: inc_VerificaCPFCGC.js
# System: JavaScript
# Created by: Marcio R. A. S. Nigro - 22/06/03 15:24
# Company: NetNigro
# E-mail: marcio@netnigro.com.br.com.br
# Last Change: 
# Purpose: Função que realiza a Validação tanto do CPF quanto do CNPJ de uma empresa.
# History: 
#	. 22/06/03 - Marcio Nigro
#		Criação da Página
#
############################################################################
*/

// ********** FUNCAO QUE REALIZA A VALIDACAO TANTO DE CPF COMO DE CNPJ **********
function Verifica_CPF_CGC(field) 
{
	var cpf='', cgc='', digito='', digitoc='', temp='', k=0; i=0, j=0, soma=0, mt=0, dg='';

	field.value = Trim(field.value);

		    campo = field.value;
		    tam = campo.length;
		    var textos = ""
		    for (j=0;j<=tam;j++)
		    {
		       if(campo.substring(j,j+1) != " ")
		       {
		          textos = textos + campo.substring(j,j+1)
		       }
		    }
	field.value = textos;
	
	// Cria expressões regulares para remover a formatação do campo
	re = /\./g;
	field.value = field.value.replace(re, "");
	re = /\-/g;
	field.value = field.value.replace(re, "");
	re = /\//g;
	field.value = field.value.replace(re, "");

	// Limpa os espacos da variavel
	if (field.value == ' ' || field.value == '  ' || field.value == ''){
		return false;
  	} 
  	else {
		cpf = field.value;
	}
  	if (cpf.length == 19) {
		cpf = cpf.substring(1, cpf.length)
	}
  
	for (i = 0;i < cpf.length; i++) {
		k = i + 1;
		if (isNaN(cpf.substring(i,k))== false){
			temp = temp + cpf.substring(i,k);  	
		}
	}

	if (((cpf.length > 13) && (cpf.length < 19)) && (isNaN(cpf.substring(3,4))==false)){ 
		cgc = temp.substring(0,12);
		digito = temp.substring(12,14);
		mult = '543298765432';
		for (j = 1; j <= 2; j++) {
			soma = 0;
			for (i = 0; i <= 11; i++) {
				k = i + 1;
				soma += parseInt((cgc.substring(i,k)) * (mult.substring(i,k)));
			}
			if (j == 2){
				soma = soma + (2 * digitoc);
			}
			digitoc = ((soma * 10) % 11);
			if (digitoc == 10){
				digitoc = 0;
    		}
			dg +=digitoc;
    		mult = '654329876543';
		}
		if (dg != digito || TudoIgual(field)) {
			alert('Informação inválida!');
			//field.value = '';
			field.focus();
			return false;
		} 
		else {
		    field.value=temp.substring(0,2)+'.'+temp.substring(2,5)+'.'+temp.substring(5,8)+'/'+temp.substring(8,12)+'-'+temp.substring(12,14);
	    	return true;
		}
	}
 	else {
		if (cpf.length < 11) {
			alert('Informação inválida!');
			//field.value = '';
			field.focus();
			return false;
		}
		if (cpf.length >= 11) {
			cpf = temp.substring(0,9);
			digito = temp.substring(9,11);
			for (j = 1; j <= 2; j++) {
	  			soma = 0;
	  			mt = 2;
	  			for (i = 8 + j; i >= 1; i--) {
	    			soma += parseInt(cpf.charAt(i-1),10) * mt;
	    			mt++;
	  			}
	  			dg = 11 - (soma % 11);
	  			if (dg > 9) {dg = 0};
	  				cpf += dg;
			}
		
			if (digito != cpf.substring(9,11) || TudoIgual(field)) {
	  			alert('Informação inválida!');
	  			//field.value = '';
	  			field.focus();
	  			return false;
	  		} 
			else {
	  			field.value=cpf.substring(0,3)+'.'+cpf.substring(3,6)+'.'+cpf.substring(6,9)+'-'+cpf.substring(9,11);
	  			return true;
			}
    		
		 }
  	} // fim if (cpf.length < 15)
}

// ********** FUNÇÃO QUE VERIFICA SEMELHANÇA ENTRE STRINGS *************

function TudoIgual(field) {
	var str = field.value, primeiro='';
	for(i = 0; i < str.length; i++)
	if (str.charAt(i)>='0' && str.charAt(i)<='9')
	if (primeiro=='') primeiro = str.charAt(i);
	else if (str.charAt(i) != primeiro) return 0;
  	return 1;
}


// ************ FUNÇÃO QUE REMOVE ESPAÇOS A DIREITA E A ESQUERDA DE STRINGS **************

function Trim(s) {
	if (s.length == 0)
		return s;
	if (s.length == 1 && s.value == ' ')
		return '';
	var i=0;
	while ( i < s.length && s.substring(i,i+1) == ' ') i++;
	var f = s.length - 1;
	while ( f >= 0 && s.substr(f,f+1) == ' ') f--;
	s = s.substr(i,f+1);
	return s;
}