var tipoMensaje = "tablaConListado";
function verificarForma(nombreFormulario, accionEnviar, parametros){
	var forma = document.getElementById(nombreFormulario);
	if (arguments.length > 1) {
		if (accionEnviar == ""){
			tipoMensaje = parametros;
		}
	}
	var boolExito = revisarCampos(["input", "textArea", "select"], forma);
	if (boolExito) {
		if (arguments.length > 1) {
			if(accionEnviar != ""){
				eval(accionEnviar)(forma, parametros);
			} else {
				forma.submit();
			}
		} else {
			forma.submit();
		}
	}
}
function revisarCampos(arrTipoCampos, forma){
	var intTipoCamposLen = arrTipoCampos.length;
	var l = 0;
	var arrCamposError = new Array();
	var arrCamposCorrectos = new Array();
	for (var n = 0; n < intTipoCamposLen; n++){
		var campos = forma.getElementsByTagName(arrTipoCampos[n]);
		var intCamposLen = campos.length; 
		var arrCamposText = new Array();
		for (var k = 0; k < intCamposLen; k++){
			var campo = campos[k];
			switch(arrTipoCampos[n]){
				case "input":
					if (campo.type == "text"){
						arrCamposText.push(campo);
					} else if (campo.type == "password"){
						arrCamposText.push(campo);
					}
					break;
				case "textArea":
					arrCamposText.push(campo);
					break;
				case "select":
					arrCamposText.push(campo);
					break;
				default :
					alert ("El tipo de campo no se reconoce");
				break;
			}
		}
		var j = 0;
		var m = arrCamposText.length;
		for (var i = 0; i < m; i++){
			var campo = arrCamposText[i];
			var propiedadVerificacion = String(campo.getAttribute('tipoVerificacion'));
			switch(propiedadVerificacion){
				case "isEmail" :
					boolVerificacion = isEmail(campo.value);
					break;
				case "isNotEmpty" :
					boolVerificacion = isNotEmpty(campo.value, true);
					break;
				case "isURL" :
					boolVerificacion = isURL(campo.value);
					break;
				case "isDate" :
					boolVerificacion = isDate(campo.value);
					break;
				case "isNotDefault" :
					boolVerificacion = isNotDefault(campo.value);
					break;
				case "noVerificar" :
					boolVerificacion = true;
					break;
				default:
					boolVerificacion = true;
					break;
			}
			if (boolVerificacion) {
				arrCamposCorrectos.push(campo);
				j++;
			} else {
				arrCamposError.push(campo);
			}
		}
		if (j == m) {
			l++;
		}
	}
	if (l == intTipoCamposLen){
		mostrarCorrectos(arrCamposCorrectos);
		return true;
	} else {
		mostrarError(arrCamposError);
		mostrarCorrectos(arrCamposCorrectos);
	}
}
function mostrarError(arrCamposError){
	switch (tipoMensaje) {
		case "tablaConListado" :
			var intInputsErrorLen = arrCamposError.length;
			var strMensaje = "";
			strMensaje += "<ul>";
			for (var i = 0; i < intInputsErrorLen; i++){
				var campo = arrCamposError[i];
				Element.setStyle(campo, {borderColor: '#CC0000'});
				strMensaje += "<li class='listadoFlecha'>" + campo.getAttribute('mensajeError') + "</li>";
			}
			strMensaje += "</ul><br />";
			strMensaje += "Por favor arregle estos problemas e intente nuevamente.";
			Element.show('mensajeError');

		break;
		case "textoPlano" :
			var intInputsErrorLen = arrCamposError.length;
			Element.setStyle($('mensajes'), {color: '#CC0000'});
			var strMensaje = "";
			strMensaje += "<ul>";
			for (var i = 0; i < intInputsErrorLen; i++){
				var campo = arrCamposError[i];
				strMensaje += "<li class='listadoFlecha'>" + campo.getAttribute('mensajeError') + "</li>";
			}
			strMensaje += "</ul><br />";
		break;
	}
	var parrafoMensaje = document.getElementById("mensajes");
	parrafoMensaje.innerHTML = strMensaje;
	window.scrollTo(0,0);
}
function mostrarCorrectos(arrCamposCorrectos){
	var intInputsCorrectosLen = arrCamposCorrectos.length;
	for (var i = 0; i < intInputsCorrectosLen; i++){
		var campo = arrCamposCorrectos[i];
		Element.setStyle(campo, {borderColor: '#CCCCCC'});
	}
}