

function validacnpj(Campo){
var i;
var Valida=true;
var s = Campo;
var c = s.substr(0,12);
var dv = s.substr(12,2);
var d1 = 0;
for (i = 0; i < 12; i++){d1 += c.charAt(11-i)*(2+(i % 8));}
if (d1 == 0) Valida=false;
d1 = 11 - (d1 % 11);
if (d1 > 9) d1 = 0;
if (dv.charAt(0) != d1){Valida=false;}
d1 *= 2;
for (i = 0; i < 12; i++){d1 += c.charAt(11-i)*(2+((i+1) % 8));}
d1 = 11 - (d1 % 11);
if (d1 > 9) d1 = 0;
if (dv.charAt(1) != d1){Valida=false;}
return Valida; 
}





function validacpf(Campo){  
var i; 
var Valida=true;  
s = Campo;
var c = s.substr(0,9);  
var dv = s.substr(9,2); 
var d1 = 0;  
for (i = 0; i < 9; i++){d1 += c.charAt(i)*(10-i);}  
if (d1 == 0){Valida=false;}  
d1 = 11 - (d1 % 11);  
if (d1 > 9) d1 = 0;  
if (dv.charAt(0) != d1){Valida=false;}  
d1 *= 2;  
for (i = 0; i < 9; i++){ d1 += c.charAt(i)*(11-i);} 
d1 = 11 - (d1 % 11);
if (d1 > 9) d1 = 0;
if (dv.charAt(1) != d1){Valida=false;} 
return Valida;  
} 





function validadata(pStr)
{
reDate = /^\d{2}\/\d{2}\/\d{4}$/;
	if (reDate.test(pStr) && pStr.length>0) {
		if(parseInt(pStr.substring(0,2))<=31 && parseInt(pStr.substring(3,5))<=12 && parseInt(pStr.substring(6,10))<=2050 && parseInt(pStr.substring(6,10))>=1900 )
		{return true;}else{return false;}
	} else{return false;}
} 





function validaemail(pStr)
{
if (pStr != ""){
reEmail = /^[\w!#$%&*+\/=?^`{|}~-]+(\.[\w!#$%&*+\/=?^`{|}~-]+)*@(([\w-]+\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/;
if (reEmail.test(pStr) && pStr.length>0) {return true;} else{return false;}
	}
}




function Val(field,tipo)
{
if (tipo=="txt")pat=/[0-9]/;
if (tipo=="num")pat=/[^0-9]/;
if (tipo=="tel")pat=/[^0-9\-]/;
if (tipo=="dt")pat=/[^0-9\/]/;
idx = field.value.search( pat );
while ( idx > -1 ) {field.value = field.value.replace( pat, '' ); idx = field.value.search( pat );}
}









function formCheckFisica(formobj){
	// Nome dos Campos
	var fieldRequired = Array("Nome","Sexo","CPF","RG","Dt_Nasc","Endereco","Bairro","Cidade","Estado","Pais","CEP","Telefone","Email");
	// Nomes para Exibição
	var fieldDescription = Array("Nome","Sexo","CPF","RG","Data de Nascimento","Endereço","Bairro","Cidade","Estado","País","CEP","Telefone","E-mail");
	
	var alertMsg = "";
	for (var i = 0; i < fieldRequired.length; i++){
		var obj = formobj.elements[fieldRequired[i]];
		if (obj){
		switch(obj.type){//Um case pra cada tipo de campo
		case "select-one":if (obj.selectedIndex == -1 ||  obj.options[obj.selectedIndex].value == ""){alertMsg += " - " + fieldDescription[i] + "\n";}break;
		case "select-multiple":if (obj.selectedIndex == -1 ||  obj.options[obj.selectedIndex].value == ""){alertMsg += " - " + fieldDescription[i] + "\n";}break;
		case "text":if (obj.value == "" || obj.value == null){alertMsg += " - " + fieldDescription[i] + "\n";}break;
		case "password":if (obj.value == "" || obj.value == null){alertMsg += " - " + fieldDescription[i] + "\n";}break;
		case "textarea":if (obj.value == "" || obj.value == null){alertMsg += " - " + fieldDescription[i] + "\n";}break;
		default:if (obj.type == undefined){var blnchecked = false;for (var j = 0; j < obj.length; j++){if (obj[j].checked){blnchecked = true;}}if (!blnchecked){alertMsg += " - " + fieldDescription[i] + "\n";}}
		}
		}
	}
	//EXTRas - Não vazios, mas inválidos --------------------v
	if(validacpf(formobj.CPF.value)==false){alertMsg += " - CPF Inválido\n";}
	if(validadata(formobj.Dt_Nasc.value)==false){alertMsg += " - Data de Nascimento Inválida\n";}
	if(formobj.CEP.value.length<8){alertMsg += " - Cep Inválido\n";}
	if(validaemail(formobj.Email.value)==false){alertMsg += " - E-mail Inválido\n";}
	
	//EXTRAS - Não brancos, mas inválidos --------------------^
	if (alertMsg!=""){alert("Os seguintes campos são obrigatórios:\n" + alertMsg);return false;}else{return true;}
}





function formCheckJuridica(formobj){
	// Nome dos Campos
	var fieldRequired = Array("Nome","CNPJ","IE","Endereco","Bairro","Cidade","Estado","Pais","CEP","Telefone","Email","Responsavel","Resp_Cargo","Resp_Dt_Nasc","Resp_Endereco","Resp_Bairro","Resp_Cidade","Resp_Estado","Resp_Pais","Resp_CEP","Resp_Telefone","Resp_Email");
	// Nomes para Exibição
	var fieldDescription = Array("Nome","CNPJ","IE","Endereço","Bairro","Cidade","Estado","País","CEP","Telefone","E-mail","Responsável","Cargo","Data de Nascimento do Responsável","Endereço do Responsável","Bairro do Responsável","Cidade do Responsável","Estado do Responsável","País do Responsável","CEP do Responsável","Telefone do Responsável","E-mail do Responsável");

	var alertMsg = "";
	for (var i = 0; i < fieldRequired.length; i++){
		var obj = formobj.elements[fieldRequired[i]];
		if (obj){
		switch(obj.type){//Um case pra cada tipo de campo
		case "select-one":if (obj.selectedIndex == -1 ||  obj.options[obj.selectedIndex].value == ""){alertMsg += " - " + fieldDescription[i] + "\n";}break;
		case "select-multiple":if (obj.selectedIndex == -1 ||  obj.options[obj.selectedIndex].value == ""){alertMsg += " - " + fieldDescription[i] + "\n";}break;
		case "text":if (obj.value == "" || obj.value == null){alertMsg += " - " + fieldDescription[i] + "\n";}break;
		case "password":if (obj.value == "" || obj.value == null){alertMsg += " - " + fieldDescription[i] + "\n";}break;
		case "textarea":if (obj.value == "" || obj.value == null){alertMsg += " - " + fieldDescription[i] + "\n";}break;
		default:if (obj.type == undefined){var blnchecked = false;for (var j = 0; j < obj.length; j++){if (obj[j].checked){blnchecked = true;}}if (!blnchecked){alertMsg += " - " + fieldDescription[i] + "\n";}}
		}
		}
	}
	//EXTRas - Não vazios, mas inválidos --------------------v
	if(validacnpj(formobj.CNPJ.value)==false){alertMsg += " - CNPJ Inválido\n";}
	if(formobj.CEP.value.length<8){alertMsg += " - Cep Inválido\n";}
	if(validaemail(formobj.Email.value)==false){alertMsg += " - E-mail Inválido\n";}
	if(validaemail(formobj.Resp_Email.value)==false){alertMsg += " - E-mail do Responsável Inválido\n";}
	if(validadata(formobj.Resp_Dt_Nasc.value)==false){alertMsg += " - Data de Nascimento do Responsável Inválida\n";}
		
	//EXTRAS - Não brancos, mas inválidos --------------------^
	if (alertMsg!=""){alert("Os seguintes campos são obrigatórios:\n" + alertMsg);return false;}else{return true;}
}






