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"], 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 "enCampo" :
			var intInputsErrorLen = arrCamposError.length;
			for (var i = 0; i < intInputsErrorLen; i++){
				var campo = arrCamposError[i];
				var idCampoMensajeError = campo.getAttribute('campoMensajeError');
				var campoMensajeError = $(idCampoMensajeError);
				Element.addClassName(campoMensajeError, 'mensajeErrorCampos');
			}
			break;
	}
	
}
function mostrarCorrectos(arrCamposCorrectos){
	var intInputsCorrectosLen = arrCamposCorrectos.length;
	switch (tipoMensaje) {
		case "enCampo" :
			var intInputsCorrectosLen = arrCamposCorrectos.length;
			for (var i = 0; i < intInputsCorrectosLen; i++){
				var campo = arrCamposCorrectos[i];
				var idCampoMensajeError = campo.getAttribute('campoMensajeError');
				var campoMensajeError = $(idCampoMensajeError);
				Element.removeClassName(campoMensajeError, 'mensajeErrorCampos');
				campoMensajeError.innerHTML = campo.getAttribute('mensajeCorrecto');
			}
			break;
	}
}