﻿/*
 * Finalidade: Classe que contém funções para validação de campos.
 * Criação   : Evelyn Rodrigues Sales Barbosa   Data: 01/12/2008
 */

NUM_DIGITOS_CPF=11;
NUM_DIGITOS_CNPJ=14;
NUM_DGT_CNPJ_BASE=8;

function ValidaData(control) {
    ///	<summary>
    ///     Realiza a validação de uma data apartir do controle passado como parâmetro,
    ///     exibindo uma mensagem caso a data não seja válida.
    ///	</summary>
    ///	<param name="control" type="">
    ///     Controle atual que contém a data a ser validada
    ///	</param>
    ///	<returns type="" />
    /// <remarks>
    ///     Alteração : Evelyn Rodrigues Sales Barbosa Data: 28/11/2008
    ///     Manutenção: Acrescentei para retornar verdadeiro (true) quando a data estiver válida.
    /// </remarks>

	var result=control.value;
	var msg="";
	if(result=='')
		return(false);
	var barras=result.split("/");
	if((!barras.length==3)||(result.length!=10)){
		alert("A data deve ter o formato: dia/mes/ano. Por exemplo: 25/09/1981");
		control.focus();
		control.value='';
		return(false);
	};
	if(barras[0]<1||barras[0]>31)
		msg="Dia invalido";
	if(barras[1]<1||barras[1]>12)
		msg="Mes invalido";
	if((barras[1]==4||barras[1]==6||barras[1]==9||barras[1]==11)&&barras[0]>30)
		msg="Dia invalido";
	if(barras[1]==2){
		var bissexto=Number(barras[2])%4;
		if(bissexto!=0&&barras[0]>28)
			msg="Dia invalido";
		if(bissexto==0&&barras[0]>29)
			msg="Dia invalido";
	};
	if(msg!=""){
		alert(msg);
		control.focus();
		control.value='';
		return(false);
    };
    return (true);
};

function ValidaHora(control){
	var result=control.value;
	var msg="";
	if(result=='')
		return(false);
	var barras=result.split(":");
	if((!barras.length==2)||(result.length!=5)){
		alert("A Hora deve ter o formato: Hora:Minutos. Por exemplo: 16:40");
		control.focus();
		control.value='';
		return(false);
	};
	if(barras[0]>23)
		msg="Formato da hora inválido. Hora deve estar entre 00 e 23.";
	if(barras[1]>59)
		msg="Formato do minuto inválido. Minuto deve estar entre 00 e 59.";
	if(msg!=""){
		alert(msg);
		control.focus();
		control.value='';
		return(false);
	};
};

function ValidaCpf(pCpf){
	var numero=formatCpfCnpj(pCpf,false,false);
	var base=numero.substring(0,numero.length-2);
	var digitos=dvCpfCnpj(base,false);
	var algUnico,i;
	if(numero!=base+digitos)
		return false;
	algUnico=true;
	for(i=1;i<NUM_DIGITOS_CPF;i++){
		algUnico=algUnico&&(numero.charAt(i-1)==numero.charAt(i));
	};
	return(!algUnico);
};

function ValidaCnpj(pCnpj){
	var numero=formatCpfCnpj(pCnpj,false,true);
	var base=numero.substring(0,NUM_DGT_CNPJ_BASE);
	var ordem=numero.substring(NUM_DGT_CNPJ_BASE,12);
	var digitos=dvCpfCnpj(base+ordem,true);
	var algUnico;
	if(numero!=base+ordem+digitos)
		return false;
	algUnico=numero.charAt(0)!='0';
	for(i=1;i<NUM_DGT_CNPJ_BASE;i++){
		algUnico=algUnico&&(numero.charAt(i-1)==numero.charAt(i));
	};
	if(algUnico)
		return false;
	if(ordem=="0000")
		return false;
	return(base=="00000000"||parseInt(ordem,10)<=300||base.substring(0,3)!="000");
};

function ValidaCpfCnpj(pCpfCnpj){
	if(pCpfCnpj.value=='')
		return false;
	var numero=pCpfCnpj.value.replace(/\D/g,"");
	if(numero.length>NUM_DIGITOS_CPF){
		if(!isCnpj(pCpfCnpj.value)){
			pCpfCnpj.value='';
			alert("CNPJ Invalido!");
			pCpfCnpj.focus();
		}
	}else{
		if(!isCpf(pCpfCnpj.value)){
			pCpfCnpj.value='';
			alert("CPF Invalido!");
			pCpfCnpj.focus();
		}
	};
};
