/*
DESCRIPCION:
Valida la informacion de diferentes campos de un formulario, y envia el formulario si se aprobaron todas las validaciones.

UTILIZACION:
<script type="text/javascript" language="javascript" src="validaciones_campos.js"></script>
<script type="text/javascript" language="javascript">
<!--

function procesar_formulario(nombre_formulario) {
	var nombre_formulario;
	
	validar_campo("[nombre campo]", "obligatorio", "[mensaje de error]");
	validar_campo("[nombre campo]", "numerico", "[mensaje de error]");
	validar_campo("[nombre campo]", "email", "[mensaje de error]");
	
	enviar_formulario(nombre_formulario);
}

-->
</script>

*/

var validaciones_errores = "";
var hay_errores_en_formulario = false;

function validar_campo(campo, tipo_validacion, mensaje_error) {
	var campo;
	var tipo_validacion;
	var mensaje_error;
	var campo_valido;
	
	campo_valido = true;
	switch (tipo_validacion) {
		case "obligatorio":
			if (document.getElementsByName(campo)[0].value == "") {
				campo_valido = false;
			}
			break;
		case "numerico":
			if (!isNaN(document.getElementsByName(campo)[0].value)) {
				campo_valido = false;
			}
			break;
		case "email":
			// Separacion del e-mail por la arroba para corroborar luego que exista una, pero solamente una.
			email_separado_arroba = document.getElementsByName(campo)[0].value.split("@");
			// Si no hay exactamente dos elementos al separar el e-mail por la "@" el e-mail no es válido.
			if (email_separado_arroba.length != 2) {
				campo_valido = false;
			}
			
			// Debe haber al menos un punto en el segundo elemento del e-mail separado.
			if (email_separado_arroba[1]) {
				if (email_separado_arroba[1].search(/\./) == -1) {
					campo_valido = false;
				}
			}
			break;
		case "numero_tarjeta_credito":
			// Verificacion de que el numero tenga exactamente 16 digitos.
			if (document.getElementsByName(campo)[0].value.length != 16) {
				campo_valido = false;
			}
			// Se recorren los 16 digitos del numero.
			for (i = 0; i <= 15; i++) {
				if (isNaN(document.getElementsByName(campo)[0].value.substr(i, 1))) {
					campo_valido = false;
				}
			}
			break;
	}
	
	// Si se encontró un error agrego el mesaje de error correspondiente e indico que hubo uno.
	if (!campo_valido) {
		validaciones_errores += "- " + mensaje_error + "\n";
		hay_errores_en_formulario = true;
	}
	
	return campo_valido;
}


function enviar_formulario(nombre_formulario) {
	var nombre_formulario;
	
	if (hay_errores_en_formulario) {
		alert(validaciones_errores);
		validaciones_errores = "";
		hay_errores_en_formulario = false;
	} else {
		document.forms[nombre_formulario].submit();
	}
}