
function Validador(titulo)
{

	var reDigits = /^\d+$/;
	var reDate1 = /^\d{1,2}\/\d{1,2}\/\d{1,4}$/;
	var reDate2 = /^[0-3]?\d\/[01]?\d\/(\d{2}|\d{4})$/;
	var reDate3 = /^(0?[1-9]|[12]\d|3[01])\/(0?[1-9]|1[0-2])\/(19|20)?\d{2}$/;
	var reDate4 = /^((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}$/;
	var reDate5 = /^((0[1-9]|[12]\d)\/(0[1-9]|1[0-2])|30\/(0[13-9]|1[0-2])|31\/(0[13578]|1[02]))\/\d{4}$/;
	var reDate = reDate4;
	
	var reDecimalPt = /^[+-]?((\d+|\d{1,3}(\.\d{3})+)(\,\d*)?|\,\d+)$/;
	var reDecimalEn = /^[+-]?((\d+|\d{1,3}(\,\d{3})+)(\.\d*)?|\.\d+)$/;
	var reDecimal = reDecimalPt;	
	
	var reMoeda = /^\d{1,3}(\.\d{3})*\,\d{2}$/;
	
	var reTime1 = /^\d{2}:\d{2}$/;
	var reTime2 = /^([0-1]\d|2[0-3]):[0-5]\d$/;
	var reTime3 = /^(0[1-9]|1[0-2]):[0-5]\d$/;
	var reTime4 = /^\d+:[0-5]\d:[0-5]\d$/;
	var reTime5 = /^\d+:[0-5]\d:[0-5]\.\d{3}\d$/;
	var reEmail1 = /^[\w!#$%&'*+\/=?^`{|}~-]+(\.[\w!#$%&'*+\/=?^`{|}~-]+)*@(([\w-]+\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/;
	var reEmail2 = /^[\w-]+(\.[\w-]+)*@(([\w-]{2,63}\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/;
	var reEmail3 = /^[\w-]+(\.[\w-]+)*@(([A-Za-z\d][A-Za-z\d-]{0,61}[A-Za-z\d]\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/;
	var reEmail = reEmail3;
	this.idDisplayResposta ="validado";
	this.validado = "ok";
	this.estado=false;
	this.campos = new Array(10);
	this.obrigatorio = true;
	this.habilite = "";
	this.tamMinimo=1;
	this.isTipo = function(pVal,tipo)
	{		
		return tipo.test(pVal);
	}
	this.Resposta= function(msg)
	{
		if(this.idDisplayResposta =="")
		{
			alert(msg);			
		}
		else
		{
			dpl = document.getElementById(this.idDisplayResposta);
			if(dpl == null)
			{
				alert(msg);				
			}
			else
			{
				
				dpl.innerHTML = msg;
			}
			
		}
	}
	this.Numero = function(id)
	{		
		val = document.getElementById(id).value
		if(this.isTipo(val,reDigits))
		{
			this.Resposta(this.validado);
		}
		else
		{
			this.Resposta("Não é um número válido.");
		}
	}

	this.Decimal = function(id)
	{		
		val = document.getElementById(id).value
		if(this.isTipo(val,reDecimal))
		{
			this.Resposta(this.validado);
			this.verificaNavegacao(id,true);
			return true;
		}				
		if(val != "")
		{
			this.Resposta("Não é um número válido. (ex: 74 ou 85,00)");
			this.verificaNavegacao(id,false);
			return false;
		}
		if(this.obrigatorio)
		{				
			this.Resposta("Campo Obrigatório.");
			this.verificaNavegacao(id,false);
			return false;
		}					
		this.verificaNavegacao(id,true);
		return true;			
		
	}
	
	this.Email=function(id)
	{
		val = document.getElementById(id).value;
		if(this.isTipo(val,reEmail))
		{
			this.Resposta(this.validado);
			this.verificaNavegacao(id,true);
			return true;
		}				
		if(val != "")
		{
			this.Resposta("seulogin@seudominio");
			this.verificaNavegacao(id,false);
			return false;
		}
		if(this.obrigatorio)
		{				
			this.Resposta("Campo Obrigatório.");
			this.verificaNavegacao(id,false);
			document.getElementById(id).focus();
			return false;
		}
		this.verificaNavegacao(id,true);
		
		return true;			
	
	}
	this.verificaNavegacao = function(id,estado)
	{
		
		if(this.habilite != "")
		{
			this.habilite.navegacao = estado;
		}
		this.estado = estado;
		
	
	}
	this.NotNull= function(id)
	{
		val = document.getElementById(id).value;
		if(val.length < this.tamMinimo)
		{
			this.Resposta("obrigatório.");
			this.verificaNavegacao(id,false);
			return false;
		}
		else
			this.Resposta(this.validado);
		this.verificaNavegacao(id,true);
		return true;
	}
};
vali  = new Validador();
