//==========================================================================================================================
// Índice de Funções de Validação
//==========================================================================================================================
// 1 - Função que verifica se o campo esta vazio
// 2 - Função que verifica se o campo é numérico
// 3 - Função que valida um número de CPF
// 4 - Função que valida um número de CNPJ
// 5 - Função que limpa os caracteres do CNPJ e CPF para validação
// 6 - Função que valida o email
// 7 - Função que valida o cep
// 8 - Função que valida datas
// 9 - Função que valida campos obrigatórios
//==========================================================================================================================

//==========================================================================================================================
// Função que verifica se o campo esta vazio
//==========================================================================================================================				
function isEmpty(s) { return ((s == null) || (s.length == 0)); }

//==========================================================================================================================
// Função que verifica se o campo é numérico
//==========================================================================================================================
function isNum(str){
	var VBlnIsNum;
	VIntTam = str.length;
	VBlnIsNum = true;
		if (VIntTam == 0)
			{return false;}
		else{
			for (i=0; i < VIntTam; i++){
				if (str.substring(i,i+1) < '0' || str.substring(i,i+1) > '9')
				{VBlnIsNum = false;}}
				return VBlnIsNum;}}
				
//==========================================================================================================================
// Função que valida um número de CPF (Pessoa Física)
//==========================================================================================================================
function isCPF(st) {
	st = LIMP(st);
	if (st=="11111111111" || st=="22222222222" || st=="33333333333" || st=="44444444444" || st=="55555555555" || st=="66666666666" || st=="77777777777" || st=="88888888888" || st=="99999999999")
		return (false);
		l = st.length;
	// se o usuário não digitar os zeros na frente do CPF, completar sozinho
	if ((l == 9) || (l == 8))
	{for (i = l ; i < 10; i++){st = '0' + st}}
		l = st.length;
		st2 = "";
		for (i = 0; i < l; i++) {
		caracter = st.substring(i,i+1);

	if ((caracter >= '0') && (caracter <= '9'));
		st2 = st2 + caracter;
		}
	if ((st2.length > 11) || (st2.length < 10))
		return (false);
	if (st2.length==10)
		st2 = '0' + st2;
		digito1 = st2.substring(9,10);
		digito2 = st2.substring(10,11);
		digito1 = parseInt(digito1,10);
		digito2 = parseInt(digito2,10);
		sum = 0; mul = 10;
		for (i = 0; i < 9 ; i++) {
		digit = st2.substring(i,i+1);
		tproduct = parseInt(digit ,10) * mul;
		sum += tproduct;
		mul--;}
		dig1 = ( sum % 11 );
	if ( dig1==0 || dig1==1 )
		dig1=0;
	else
		dig1 = 11 - dig1;
	if (dig1!=digito1)
		return (false);
		sum = 0;
		mul = 11;
	for (i = 0; i < 10 ; i++) {
		digit = st2.substring(i,i+1);
		tproduct = parseInt(digit ,10)*mul;
		sum += tproduct;
		mul--;
		}
		dig2 = (sum % 11);
	if ( dig2==0 || dig2==1 )
		dig2=0;
	else
		dig2 = 11 - dig2;
	if (dig2 != digito2)
		return (false);
		return (true);}
		
//==========================================================================================================================
// Função que valida um número de CNPJ (Pessoa Jurídica)
//==========================================================================================================================
function isCNPJ(CNPJ){
	CNPJ = LIMP(CNPJ);
	if(isNum(CNPJ) != 1)
		{return(0);}
	else
		{if(CNPJ == 0)
			{return(0);}
		else
			{g=CNPJ.length-2;
			if(RealTestaCNPJ(CNPJ,g) == 1){
				g=CNPJ.length-1;
				if(RealTestaCNPJ(CNPJ,g) == 1)
					{return(1);}
				else
					{return(0);}}
			else
				{return(0);}}}}

function RealTestaCNPJ(CNPJ,g){
	var VerCNPJ=0;
	var ind=2;
	var tam;
	for(f=g;f>0;f--)
		{VerCNPJ+=parseInt(CNPJ.charAt(f-1))*ind;
		if(ind>8)
			{ind=2;}
		else
			{ind++;}}
		VerCNPJ%=11;
		if(VerCNPJ==0 || VerCNPJ==1)
			{VerCNPJ=0;}
		else
			{VerCNPJ=11-VerCNPJ;}
	if(VerCNPJ!=parseInt(CNPJ.charAt(g)))
		{return(0);}
	else
		{return(1);}}

//==========================================================================================================================
// Função Limpa Campos (Tira do campo - / , . ( ) ) e também espaços em branco
//==========================================================================================================================
function LIMP(c){
	while((cx=c.indexOf("-"))!=-1)
		{c = c.substring(0,cx)+c.substring(cx+1);}
	while((cx=c.indexOf("/"))!=-1)
		{c = c.substring(0,cx)+c.substring(cx+1);}
	while((cx=c.indexOf(","))!=-1)
		{c = c.substring(0,cx)+c.substring(cx+1);}
	while((cx=c.indexOf("."))!=-1)
		{c = c.substring(0,cx)+c.substring(cx+1);}
	while((cx=c.indexOf("("))!=-1)
		{c = c.substring(0,cx)+c.substring(cx+1);}
	while((cx=c.indexOf(")"))!=-1)
		{c = c.substring(0,cx)+c.substring(cx+1);}
	while((cx=c.indexOf(" "))!=-1)
		{c = c.substring(0,cx)+c.substring(cx+1);}
	return(c);}

//==========================================================================================================================
// Função valida E-mail
//==========================================================================================================================
function isEmail(mail) {
	var ponto = 0;
	var arroba = 0;
	var letraAntes = 0;
	var letraDepois = 0;
	var i = 0;
	var l = mail.length;
	var ch = 0;
	if (l < 10)	return (false);
	for (i = 0; i < l; i++) {
		ch = mail.charCodeAt(i);
		if (ch == 46) {
			if (arroba > 0)	ponto += 1;
		} else {
			if (ch == 64) {
				arroba += 1;
			} else {
				if (((ch >= 48) && (ch <= 57)) || ((ch >= 65) && (ch <= 90)) || ((ch >= 97) && (ch <= 122))) {
					if (arroba > 0)
						letraDepois += 1;
					else
						letraAntes += 1;
				} else {
					if ((ch != 45) && (ch != 95)) {
						if ((ch < 48) || (ch > 57)) {
							return (false);}}}}}}
	if ((arroba == 1) && (ponto > 0) && (letraAntes > 1) && (letraDepois > 5))
		{return (true);}
	else {return (false);}}
	
//==========================================================================================================================
// Função valida CEP
//==========================================================================================================================
function isCep(cep){
	cep = LIMP(cep);
	if (cep.length < 8)
		return false;		
	if (!isNum(cep))
		return false;
	if (cep == "")
		return false;		
	return true;}

//==========================================================================================================================
// Função valida Data
//==========================================================================================================================
function isDate(campo) {
	if (campo != ""){
		if(campo.charAt(2) != "/" || campo.charAt(5) != "/" || campo.length != 10){
			return(false);
		}
		for(i=0;i<10;i++){
			if(i != 2 && i != 5){
				if(campo.charAt(i) != 0 && campo.charAt(i) != 1 && campo.charAt(i) != 2 && campo.charAt(i) != 3 && campo.charAt(i) != 4 && campo.charAt(i) != 5 && campo.charAt(i) != 6 && campo.charAt(i) != 7 && campo.charAt(i) != 8 && campo.charAt(i) != 9 || campo.charAt(i) == " "){
					return(false);
				}
			}
		}
		var Dia = 0;
		var Mes = 0;
		var Ano = 0;
		var Resto = 0;
		Dia = campo.substring(0,2);
		Mes = campo.substring(3,5);
		Ano = campo.substring(6,10);
		if (Ano < 1900) {return(false);	}
		if ((Mes < 1) || (Mes > 12)) {return(false);}
		if ((Dia < 1) || (Dia > 31)) {return(false);}
		if ((Mes == "01") && (Dia <= 31)) {return(true);}
		if (Mes == "02") {Resto = Ano % 4;
			if ((Resto == 0) && (Dia <= 29))
				{return(true);}
			if ((Resto != 0) && (Dia <= 28))
				{return(true);}}
		if ((Mes == "03") && (Dia <= 31)) {return(true);}
		if ((Mes == "04") && (Dia <= 30)) {return(true);}
		if ((Mes == "05") && (Dia <= 31)) {return(true);}
		if ((Mes == "06") && (Dia <= 30)) {return(true);}
		if ((Mes == "07") && (Dia <= 31)) {return(true);}
		if ((Mes == "08") && (Dia <= 31)) {return(true);}
		if ((Mes == "09") && (Dia <= 30)) {return(true);}
		if ((Mes == "10") && (Dia <= 31)) {return(true);}
		if ((Mes == "11") && (Dia <= 30)) {return(true);}
		if ((Mes == "12") && (Dia <= 31)) {return(true);}
		return(false);}}

//==========================================================================================================================
// Função valida campos obrigatórios
//==========================================================================================================================
function obriga(campo,rotulo){
	var resultado = true;
	
	if (campo.value == ""){
		alert('Você deve preencher o campo "' + rotulo + '" para prosseguir com o cadastro!');
		campo.focus();
		resultado = false;}
	
	return resultado;}
	
//==========================================================================================================================
// Função valida DDD
//==========================================================================================================================
function isDDD(ddd){

	if (ddd.length != 2)
		return false;		
	if (!isNum(ddd))
		return false;	
	return true;}
	
//==========================================================================================================================
// Função valida Telefone
//==========================================================================================================================
function istel(tel){

	if (tel.length < 7)
		return false;		
	if (!isNum(tel))
		return false;	
	return true;}
