/*
	[	Desenvolvimento	] 
		Filter Netmarketing
			www.filter.com.br
			falecom@filter.com.br
			
		[	Responsável	]
			Marco Aurélio Neuwiem
			marco@filter.com.br
			06/2004
*/

function chk_post(){
//str		=	STRING
//int		=	APENAS INTEIRO
//email		=	E-mail
//data		=	Data válida
//diferente	=	Campo deve ser diferente dos limites
//hora		=	Valida a HORA
//cpf		=	Valida CPF - Apenas números
//cep		=	Valida CEP - Apenas números


var ER_email = /^[A-Za-z0-9_.-]+@([A-Za-z0-9_]+\.)+[A-Za-z]{2,4}$/;
var ER_data = /^((0?[1-9]|[12]\d)\/(0?[1-9]|1[0-2])|30\/(0?[13-9]|1[0-2])|31\/(0?[13578]|1[02]))\/(19|20)?\d{2}$/;

campos_desc = document.form.campos_desc.value;
campos_nome = document.form.campos_nomes.value;
campos_tipos = document.form.campos_tipos.value;
campos_limites = document.form.campos_limites.value;

p_de = campos_desc.split(";");

p_nm = campos_nome.split(";");
t_nm = p_nm.length;

p_ti = campos_tipos.split(";");

p_li = campos_limites.split(";");



for(i=0;i<t_nm;i++){
	este_campo = p_nm[i];
	este_tipo = p_ti[i];
	este_limite = p_li[i];
		p_max_min =  este_limite.split("|");
			este_lim_min = p_max_min[0];
			este_lim_max = p_max_min[1];
	este_descritivo = p_de[i];

	este_valor = document.form[este_campo].value;
	este_tamanho = document.form[este_campo].value.length;
	

	if(este_tipo =="str"){
		if(este_tamanho < este_lim_min || este_tamanho > este_lim_max){
			alert("O campo "+este_descritivo+" está fora dos limites: ("+este_lim_min+" - "+este_lim_max+")");
			  document.form[este_campo].focus();
			  return false;
		}
	}

  	if(este_tipo =="int"){
		if(isNaN(este_valor) || parseFloat(este_valor) < parseFloat(este_lim_min) || parseFloat(este_valor) > parseFloat(este_lim_max) || este_valor==""){
			alert("O campo "+este_descritivo+" deve conter apenas números e estar dos limites: ("+este_lim_min+" - "+este_lim_max+")\nCaso necessário use ponto (.) ao invés vírgula (,) para separador decimais.");
			  document.form[este_campo].focus();
			  return false;
		}
	}

   	if(este_tipo =="email"){
		if(!(ER_email.test(este_valor))){
			alert("O campo "+este_descritivo+" está incorreto.");
			  document.form[este_campo].focus();
			  return false;
		}
	}

   	if(este_tipo =="data"){
		if(!(ER_data.test(este_valor))){
			alert("O campo "+este_descritivo+" está incorreto. Formato: DD/MM/AAAA");
			  document.form[este_campo].focus();
			  return false;
		}
	}

   	if(este_tipo =="diferente"){
		if(este_valor == este_lim_min || este_valor == este_lim_max){
			alert("Selecione uma opção para o campo "+este_descritivo+".");
			  document.form[este_campo].focus();
			  return false;
		}
	}

   	if(este_tipo =="hora"){
		if(!valida_hora(este_valor)){
			alert("O campo "+este_descritivo+" está incorreto. Formato: HH:MM");
			  document.form[este_campo].focus();
			  return false;
		}
	}

   	if(este_tipo =="cpf"){
		if(!valida_cpf(este_valor)){
			alert("O campo "+este_descritivo+" está incorreto. Digite apenas números.");
			  document.form[este_campo].focus();
			  return false;
		}
	}

   	if(este_tipo =="cep"){
		if(!valida_cep(este_valor)){
			alert("O campo "+este_descritivo+" está incorreto. Formato: 99999-999");
			  document.form[este_campo].focus();
			  return false;
		}
	}


}
}


function valida_hora(hora){
	if(hora.length != 5){
			return false;
	}

iHour    = hora.substr(0,2);
iMinutes = hora.substr(3,2);
sColon   = hora.substr(2,1);

if(sColon != ":"){
	return false;
}

if(iHour <0 || iHour>23){
	return false;
}

if(iMinutes <0 || iMinutes>59){
	return false;
}

return true;

}


function valida_cpf(cpf) 
      { 
      var numeros, digitos, soma, i, resultado, digitos_iguais; 
      digitos_iguais = 1; 
      if (cpf.length < 11) 
            return false; 
      for (i = 0; i < cpf.length - 1; i++) 
            if (cpf.charAt(i) != cpf.charAt(i + 1)) 
                  { 
                  digitos_iguais = 0; 
                  break; 
                  } 
      if (!digitos_iguais) 
            { 
            numeros = cpf.substring(0,9); 
            digitos = cpf.substring(9); 
            soma = 0; 
            for (i = 10; i > 1; i--) 
                  soma += numeros.charAt(10 - i) * i; 
            resultado = soma % 11 < 2 ? 0 : 11 - soma % 11; 
            if (resultado != digitos.charAt(0)) 
                  return false; 
            numeros = cpf.substring(0,10); 
            soma = 0; 
            for (i = 11; i > 1; i--) 
                  soma += numeros.charAt(11 - i) * i; 
            resultado = soma % 11 < 2 ? 0 : 11 - soma % 11; 
            if (resultado != digitos.charAt(1)) 
                  return false; 
            return true; 
            } 
      else 
            return false; 
      }


function valida_cep(S){
	s = limpa_string(S);
		if (s.length != 8){return false;}else{return true;}
}



function limpa_string(S){
	// Deixa so' os digitos no numero
	var Digitos = "0123456789";
	var temp = "";
	var digito = "";

	for (var i=0; i<S.length; i++)	{
		digito = S.charAt(i);
		if (Digitos.indexOf(digito)>=0)	{
			temp=temp+digito	}
	} //for

	return temp
}
