var evento = function() {

	function init(args) {
		var object = args.object;
		if(object.addEventListener) {
			object.addEventListener(args.event, args.func, false);
		} else if(object.attachEvent) {
			object.attachEvent('on' + args.event, args.func);
		}	
	}

	return function(args) {
		init(args);
	}

}();

// valida formularios

var validacao = function() {
	
	var formularios = [];

	function init(args) {
		formularios[args.nome] = args;
		// espera evento onload da pagina
		evento({
			object:window, 
			event:'load', 
			func:load
		});
	}
	
	function blur(args) {
		args.className = args.className.replace(" on", "");
	}
	
	function focus(args) {
		args.className += " on";
	}	
	
	function load() {
		try {
			for(var i in formularios) {
				var formulario = formularios[i];
				if(document.getElementById(formulario.nome)) {
					document.getElementById(formulario.nome).onsubmit = function() {
						var resultado = valida(this);
						if(resultado){
							document.getElementById(formulario.btn).style.display="none";
							document.getElementById(formulario.resp).innerHTML = "Enviando mensagem...";
						}else{
							document.getElementById(formulario.btn).style.display="block";
							document.getElementById(formulario.resp).innerHTML = "&nbsp;";
						}
						return resultado ? true : false;
					}
					var campos = formulario.campos;
					for(var j=0;j<campos.length;j++) {
						var campo = campos[j].nome;
						if(document.getElementById(campo)) {
							document.getElementById(campo).onfocus = function() { focus(this); }
							document.getElementById(campo).onblur = function() { blur(this); }
						}
					}
				}
			}
		} catch(e) {}
	}
	
	function retornaCpfCnpj() {
		for(var i in formularios) {
			var formulario = formularios[i];
		}
		
		var meuForm = document.getElementById(formulario.nome);
		
		for (i=0;i<meuForm.tiporegistro.length;i++) {
			if (meuForm.tiporegistro[i].checked == true) {
				valCpfCnpj = meuForm.tiporegistro[i].value;
				return valCpfCnpj;
			}
		}
	}
	
	function valida(args) {
		var retorno = true;
		var erros = [];
		var campos = formularios[args.id].campos;
		var boxErro = document.getElementById(formularios[args.id].erro);
		var listaErro = document.getElementById(formularios[args.id].lista);
		var inputErro = formularios[args.id].classe;
		boxErro.className = boxErro.className.replace("on","");
		try {
			for(var i=0;i<campos.length;i++) {
				var campo = document.getElementById(campos[i].nome);
				var erro = campos[i].erro;
				var tipo = campos[i].tipo;
				var req = campos[i].req;

				if(campo) {
					if(req) {
						campo.parentNode.className = campo.parentNode.className.replace(inputErro,"");
						switch(tipo) {
							case 'texto' :
								if(!campo.value) {
									retorno = false;
									erros.push( { obj:campo, erro:erro } );
								}
								
							break;
							
							case 'email' :
								emailPadrao = /^[\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}\])$/;
								if (!emailPadrao.test(campo.value)) {
									retorno = false;
									erros.push( { obj:campo, erro:erro } );
								}
								
							break;
						}
					}
				}
			}
		} catch(e) {}

		if(retorno) {
			boxErro.className = boxErro.className.replace("on","");
			return true;
		} else {
			var listagem = "";
			if(erros.length > 1)
				listagem = "<p>Os campos ";
			else
				listagem = "<p>O campo ";
						
			for (var x=0;x<erros.length;x++) {
				var campoErrado = erros[x];
				campoErrado.obj.parentNode.className += " "+inputErro;
				erros[0].obj.focus();
				listagem += "<strong>" + campoErrado.erro + "</strong>, "
			}
			
			if(erros.length > 1)
				listagem += " são obrigatórios.</p>";
			else
				listagem += " é obrigatório.</p>";
			
			boxErro.className += " on";
			listaErro.innerHTML = listagem;
			return false;
		}

		return retorno;
	}

	return function(args) {
		init(args);
	}
	
}();