function validaCPF(cpf) {
		valor = true;
		erro = "";
		//substituir os caracteres que nao sao numeros
		if(document.layers && parseInt(navigator.appVersion) == 4){
		x = cpf.substring(0,3);
		x += cpf.substring(4,7);
		x += cpf.substring(8,11);
		x += cpf.substring(12,14);
		cpf = x; 
		} else {
		cpf = cpf.replace(".","");
		cpf = cpf.replace(".","");
		cpf = cpf.replace("-","");
		cpf = cpf.replace("/","");
		}
		if (cpf.length < 11) erro += "Sao necessarios 11 digitos para verificacao do CPF! \n\n"; 
		var nonNumbers = /\D/;
		if (nonNumbers.test(cpf)) erro += "A verificacao de CPF suporta apenas numeros! \n\n";	
		if (cpf == "00000000000" || cpf == "11111111111" || cpf == "22222222222" || cpf == "33333333333" || cpf == "44444444444" || cpf == "55555555555" || cpf == "66666666666" || cpf == "77777777777" || cpf == "88888888888" || cpf == "99999999999"){
			erro += "Numero de CPF invalido!"
		}
		var a = [];
		var b = new Number;
		var c = 11;
		for (z=0; z<11; z++){
			a[z] = cpf.charAt(z);
			if (z < 9) b += (a[z] *  --c);
		}
		if ((x = b % 11) < 2) { a[9] = 0 } else { a[9] = 11-x }
		b = 0;
		c = 11;
		for (y=0; y<10; y++) b += (a[y] *  c--); 
		if ((x = b % 11) < 2) { a[10] = 0; } else { a[10] = 11-x; }
		if ((cpf.charAt(9) != a[9]) || (cpf.charAt(10) != a[10])){
			{
				erro +="Digito verificador com problema!";
			}
		}
		return erro;
	}

function validaCNPJ(CNPJ) {
	erro = new String;
	if (CNPJ.length < 14) erro += "Numero do CNPJ com menos de 14 digitos! \n\n";
	//if ((CNPJ.charAt(2) != ".") || (CNPJ.charAt(6) != ".") || (CNPJ.charAt(10) != "/") || (CNPJ.charAt(15) != "-")){
		//if (erro.length == 0) erro += "Não foram digitados caracteres não númericos (. . / -)! \n\n";
	//}
	//substituir os caracteres que nao sao numeros
	if(document.layers && parseInt(navigator.appVersion) == 4){
	x = CNPJ.substring(0,2);
	x += CNPJ.substring(3,6);
	x += CNPJ.substring(7,10);
	x += CNPJ.substring(11,15);
	x += CNPJ.substring(16,18);
	CNPJ = x; 
	} else {
	CNPJ = CNPJ.replace(".","");
	CNPJ = CNPJ.replace(".","");
	CNPJ = CNPJ.replace("-","");
	CNPJ = CNPJ.replace("/","");
	}
	var nonNumbers = /\D/;
	if (nonNumbers.test(CNPJ)) erro += "A verificacao de CNPJ suporta apenas numeros! \n\n"; 
	var a = [];
	var b = new Number;
	var c = [6,5,4,3,2,9,8,7,6,5,4,3,2];
	for (j=0; j<12; j++){
	a[j] = CNPJ.charAt(j);
	b += a[j] * c[j+1];
	}
	if ((x = b % 11) < 2) { a[12] = 0 } else { a[12] = 11-x }
	b = 0;
	for (y=0; y<13; y++) {
	b += (a[y] * c[y]); 
	}
	if ((x = b % 11) < 2) { a[13] = 0; } else { a[13] = 11-x; }
	if ((CNPJ.charAt(12) != a[12]) || (CNPJ.charAt(13) != a[13])){
	erro +="Digito verificador com problema!";
	}
	return erro;
}

/*
#############################################################################################################
Padrão de Preenchimento

Os campos que serão validados devem ter o id com a seguinte estrutura

id="campo_validaXY"

X =  tipo de dados a ser validado, este que pode ser:
t: texto qualquer
d: numérico decimal
i: numérico inteiro
e: e-mail
c: cpf
p: senha
a: data

Y = tipo de dados obrigatório ou não obrigatório, este que pode ser:
R: obrigatorio
N: não obrigatorio

Cada campo deve ter sua respectiva DIV, onde será apresentada a mensagem de erro daquele campo
deve ter o id igual ao nome do campo mais "_msg"
<div id="campo_validaXY_msg">

padrão de preenchimento do campo senha (seguindo letras maiúsculas e minúsculas)
senha1_PR
senha2_PR
ou
senha1_PN
senha2_PN



#############################################################################################################
*/

 
function verificaFORM(NomeForm) {
var campo;
var form;
var errocampo;
var id;
var i=0;
form = eval('document.' + NomeForm);
erroGeral = 0;


//alert(form.name);

//alert(form.elements.length);

//limpa todas a div´s de mensagem
for(i=0; i< form.elements.length ; i++){
	
	if((form.elements[i].type == 'text') || (form.elements[i].type == 'textarea') || (form.elements[i].type == 'password')){
	//alert((form.elements[i].name));
	//alert('document.all.' + form.elements[i].id + '_msg');
		campo = eval('document.all.' + form.elements[i].id + '_msg');
		campo.innerHTML = '';
	}
}

//verifica cada campo
for(i=0; i< form.elements.length ; i++){

	
if((form.elements[i].type == 'text') || (form.elements[i].type == 'textarea') || (form.elements[i].type == 'password')){

//alert('vai verificar')
errocampo = 0;

	//alert(form.elements.length);
	//alert(i);
	//alert(form.elements[i].name);
	//alert(form.elements[i].id);
	

	var valor;
	valor = form.elements[i].id
	
	Requerido = valor.substring(valor.length - 1,valor.length);
	Requerido = Requerido.toLowerCase();
	TipoValidacao = valor.substring(valor.length - 2,valor.length - 1);
	TipoValidacao = TipoValidacao.toLowerCase();

	campo = form.elements[i]
	valor = campo.value;
	msg = eval('document.all.' + campo.id + '_msg');

	
	//alert('valor = '+ valor + '\n r = ' + Requerido + '\n tipo = ' + TipoValidacao);
	
	//verifica caracteres inválidos
    //CaracteresInvalidos = '* < > | & %';
    CaracteresInvalidos = '* |';
	vCaracInv = CaracteresInvalidos.split(" ");
		//alert(valor);
		for(q=0;q < vCaracInv.length ; q++){
			//alert(vCaracInv[i] + '---C');
			for(j=0;j<valor.length;j++){
				//alert( vCaracInv[q] + " = " + valor.substring(j,j+1));
				if(vCaracInv[q] == valor.substring(j,j+1)){
					msg.innerHTML = "Caractere Inválido: ( "+CaracteresInvalidos+" )";
					errocampo = 1;
				}
			}
		}


if((Requerido=='r') && (valor =="" || valor == null)){
		//caso seja campo do tipo senha exibir apenas uma mensagem
		if(TipoValidacao == 'p'){
			msg = eval('document.all.' + campo.id.substring(0,campo.id.length-4) + '1_P'+ Requerido.toUpperCase() + '_msg');
		}
		msg.innerHTML = 'Obrigatório';
		errocampo = 1;
}else if(valor !="" ) {
//alert(TipoValidacao);
		switch(TipoValidacao){
		case 't':
				break;
		case 'd':
				if(isNaN(valor.replace(",",".")) == true){
					msg.innerHTML = 'O Valor deve ser numérico';
					errocampo = 1;
				}
				break;
		case 'i':
				if(isNaN(valor.replace(",",".")) != true){
					if(valor.search(/,/g) > -1){
						msg.innerHTML = 'O Valor deve ser numérico Inteiro';
						errocampo = 1;
					}
				}else{
					msg.innerHTML = 'O Valor deve ser numérico';
					errocampo = 1;
				}
				break;
		case 'e':
					if((valor.search(/@/g) == -1) || (valor.search(/./g) == -1) || (valor.length < 5)){
						msg.innerHTML = 'Endereço de e-mail inválido';
						errocampo = 1;
					}
				break;
		case 'c':
				var_erro1=validaCNPJ(valor);
				var_erro2=validaCPF(valor);
				if((var_erro1 != "")&&(var_erro2 != ""))
				{
					msg.innerHTML = var_erro2;
					errocampo = 1;
				}
				break;
		case 'p':
				Valor1 = eval('form1.' + campo.id.substring(0,campo.id.length-4) + '1_P'+ Requerido.toUpperCase() +'.value');
				Valor2 = eval('form1.' + campo.id.substring(0,campo.id.length-4) + '2_P'+ Requerido.toUpperCase() +'.value');
				
				msg = eval('document.all.' + campo.id.substring(0,campo.id.length-4) + '1_P'+ Requerido.toUpperCase() + '_msg');
				
				//alert(Valor1 + "!=" + Valor2);
				//alert("\n msg :" + msg);
								
				if((Valor1 == "" || Valor1 == null) || (Valor2 == "" || Valor2 == null)){
					msg.innerHTML = "Obrigatório de os campos";
					errocampo = 1;
				}else{
					if(Valor1 != Valor2){
						msg.innerHTML = "As senhas não são iguais";
						errocampo = 1;
					}
					else{
						msg.innerHTML = "";
						}
				}
				break;
		
		case 'a':
			barras = valor.split("/");
			if (barras.length == 3){
				dia = barras[0];
				mes = barras[1];
				ano = barras[2];
				resultado = (!isNaN(dia) && (dia > 0) && (dia < 32)) && (!isNaN(mes) && (mes > 0) && (mes < 13)) && (!isNaN(ano) && (ano.length == 4));
				if (!resultado) {
					msg.innerHTML = "Formato de data inválido (dd/mm/aaaa)";
					errocampo = 1;
				}
			} else {
				msg.innerHTML = "Formato de data inválido (dd/mm/aaaa)";
				errocampo = 1;
			}
			break;
		}
	}
}
			//alert(campo.id + ' - ' +errocampo);
			if(errocampo == 1){
				erroGeral = 1;
				campo.className = 'Form_Erro'; 
			}
			else{
				campo.className = 'Form_Campo'; 
			}
}
	//alert('Erro Geral: ' + erroGeral);
	if(erroGeral == 1)
	{
		return false; 
	}
	else
	{
		return true;
	} 
} 

