var Validacao = function() {
	valido = true;
	cnterr = 0;
	fl = (document.forms.length-1);
	for(f=0;f<=fl;f++) {

		el = (document.forms[f].length-1);

		for(i=0;i<=el;i++) {
			I(f,i).style.backgroundColor = "#ffffff"; //Resetar cores de fundo
			var valido = true;
			var tipo = I(f,i).alt;
			var dis = I(f,i).disabled;

			if (tipo!==undefined && tipo!=="" && !dis) { //Identifica se há string de validação.
				var tipo = tipo.toLowerCase().split(",");
				var vlr  = I(f,i).value.toLowerCase();
				var vazio = vlr==="" ? true : false;
				var requerido = tipo[1]==="r" ? true : false;

				if (requerido) {
					if (vazio) { valido = false; } else { valido = Val[tipo[0]].test(vlr); }
				}
				else {
					if (vazio) { valido = true; } else { valido = Val[tipo[0]].test(vlr); }
				}
	
				if (!valido) {
					cnterr = (cnterr+1);
					I(f,i).style.backgroundColor = "#FFCC00";
					I(f,i).focus();
				}
			}
		}
	}

	if (cnterr>0) {
	alert("Seu formulário não pôde ser enviado, pois alguns campos violaram as regras de validação.\n\nVerifique os campos destacados e corrija os dados para poder enviá-los!\n\nEm caso de dúvidas, clique na interrogação [?] ao lado do controle.");
	return false;
	}
	else {
	return true;
	}
}

var Val = {
	int: /^\d+$/,
	curr: /^\d+\,\d{2}$/,
	dec: /^[+-]?((\d+|\d{1,3}(\.\d{3})+)(\,\d*)?|\,\d+)$/,
	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}$/,
	hora: /^([0-1]\d|2[0-3]):[0-5]\d$/,
	datahora: /^((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}\s([0-1]\d|2[0-3]):[0-5]\d$/,
	cpf: /^(\d{3}).(\d{3}).(\d{3})-(\d{2})$/,
	cnpj: /^(\d{2,3}).(\d{3}).(\d{3})\/(\d{4})-(\d{2})$/,
	txtpuro: /^[\wi]+$/,
	txtrestrito: /^[\w\sáàâãäéèêëíìîïóòôõöúùûüç%,.?!]+$/,
	txtlivre: /^[^´`]+$/,
	caminho: /^[\w\s/\.\/\\:áàâãäéèêëíìîïóòôõöúùûüç]+$/,
	email: /^[\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}\])$/
}
