/**************** ARCHIVO: VALIDADOR  ****************/
// ***
// *** Fecha creación: 31/10/2006
// *** Última actualización: 31/10/2006
// ***
// *** Descripción: En este archivo existen funciones relacionadas con la validación de datos.
// ***
/**************** ARCHIVO: VALIDADOR ****************/


// *** FUNCIÓN VALIDADOR *** //
// *** Parametros:			frm formulario.
// *** Devuelve:			void.
// *** Descripción:		Valida el formulario web.
function validador(frm) {
	MuestraTexto = false;
	for(i=0; i<frm.elements.length; i++) {
		switch (frm.elements[i].getAttribute("requerido")) {
			case "Vacio":
				if (!validaVacio(frm.elements[i])) {return false;}
				break;
			case "Selec":
				if (!validaSelec(frm.elements[i])) {return false;}
				break;
			case "Email":
				if (!validaEmail(frm.elements[i])) {return false;}
				break;
			case "Entero":
				if (!validaEntero(frm.elements[i])) {return false;}
				break;
			case "Numerico":
				if (!validaNumerico(frm.elements[i])) {return false;}
				break;
			case "Fecha":
				if (!validaFecha(frm.elements[i], frm)) {return false;}
				break;
			case "Radio":
				if (!validaRadio(frm.elements[i], frm)) {return false;}
				break;
			case "check":
							if (!validaCheck(frm.elements[i])) {return false;}
				break;
			case "MuestraTexto":
				MuestraTexto = true;
				ElementoSubmit = frm.elements[i];
			case "Contra":
				if (!validaContra(frm.elements[i])) {return false;}
				break;
				break;
	
		}
	}
	
	if (MuestraTexto) {document.getElementById("FrmSubmit").innerHTML = ElementoSubmit.getAttribute("texto");}
}
// *** FIN FUNCIÓN VALIDADOR *** //

// *** FUNCIÓN VALIDA VACIO *** //
// *** Parametros:			elemento elemento de formulario.
// *** Devuelve:			void.
// *** Descripción:		Valida que el campo no sea vacio.
function validaVacio(elemento) {
	if (elemento.value == "") {
		alert("Debe teclear "+elemento.getAttribute("nombre")+".");
		elemento.focus();
		return false;
	} else {
		return true;
	}
}
// *** FIN FUNCIÓN VALIDA VACIO *** //

// *** FUNCIÓN VALIDA EMAIL *** //
// *** Parametros:			elemento elemento de formulario.
// *** Devuelve:			void.
// *** Descripción:		Valida que el campo sea un mail válido.
function validaEmail(elemento) {
	var filtro = /^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@+([_a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]{2,200}\.[a-zA-Z]{2,6}$/;
	if (!filtro.test(elemento.value)) {
		alert("Debe teclear un "+elemento.getAttribute("nombre")+" válido.");
		elemento.focus();
		return false;
	} else {
		return true;
	}
}
// *** FIN FUNCIÓN VALIDA EMAIL *** //


// *** FUNCIÓN VALIDA ENTERO *** //
// *** Parametros:			elemento elemento de formulario.
// *** Devuelve:			void.
// *** Descripción:		Valida que el campo sea un mail válido.
function validaEntero(elemento) {	
	var numeros = "0123456789";
	
	for (j=0;j<elemento.value.length+1;j++) {
		if (numeros.indexOf(elemento.value.charAt(j)) == -1 || elemento.value == "") {
			alert("Debe ingresar un número entero en el campo "+elemento.getAttribute("nombre")+".");
			elemento.focus();
			return false;
		}
	}
	return true;
}
// *** FIN FUNCIÓN VALIDA ENTERO *** //


// *** FUNCIÓN VALIDA NUMÉRICO *** //
// *** Parametros:			elemento elemento de formulario.
// *** Devuelve:			void.
// *** Descripción:		Valida que el campo sea un número.
function validaNumerico(elemento) {
	var valor = elemento.value.replace(/,/,'.');
	
	if ((isNaN(valor)) || (elemento.getAttribute("extra") == "NoVacio" && valor == "")) {
		alert("Debe ingresar un valor numérico en el campo "+elemento.getAttribute("nombre")+".");
		elemento.focus();
		return false;
	} else {
		return true;
	}
}
// *** FIN FUNCIÓN VALIDA NUMÉRICO *** //


// *** FUNCIÓN VALIDA FECHA *** //
// *** Parametros:			elemento elemento de formulario, frm formulario..
// *** Devuelve:			void.
// *** Descripción:		Valida que el campo no sea vacio.
function validaFecha(elemento, frm) {
	var Dia 		= frm.elements[elemento.getAttribute("dia")].value;
	var Mes 	= frm.elements[elemento.getAttribute("mes")].value;
	var Anio 	= frm.elements[elemento.getAttribute("anio")].value;

	if (Anio != "" && Mes != "" && Anio != "") {
		var DiasMeses = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
		
		// Para años bisiestos.
		if ((Anio%4) == 0) {DiasMeses[1] = 29;}
		
		if (Dia <= DiasMeses[Mes-1]) {return true;}
	}
	
	alert("La fecha ingresada en el campo "+elemento.getAttribute("nombre")+" es inválida.");
	frm.elements[elemento.getAttribute("dia")].focus();
	return false;
}
// *** FIN FUNCIÓN VALIDA FECHA *** //


// *** FUNCIÓN VALIDA RADIO *** //
// *** Parametros:			elemento elemento de formulario, frm formulario..
// *** Devuelve:			void.
// *** Descripción:		Valida que al una opción haya sido seleccionada.
function validaCheck(elemento){
 if( elemento.checked=="") {
		alert("Debe aceptar las condiciones de uso. "+elemento.getAttribute("nombre")+".");
		elemento.focus();
		return false;
	} else {
		return true;
	}
}
// *** FIN FUNCIÓN VALIDA clave *** //
// *** FUNCIÓN VALIDA VACIO *** //
// *** Parametros:			elemento elemento de formulario.
// *** Devuelve:			void.
// *** Descripción:		Valida que el campo no sea vacio.
function validaContra(elemento, frm) {
	if (elemento.value.length<4) {
		alert("Debe ingresar un valor en el campo "+elemento.getAttribute("nombre")+".");
		elemento.focus();
		return false;
	} else {
		return true;
	}
}
// *** FIN FUNCIÓN VALIDA VACIO *** //

// *** FIN FUNCIÓN VALIDA clave *** //
// *** FUNCIÓN VALIDA VACIO *** //
// *** Parametros:			elemento elemento de formulario.
// *** Devuelve:			void.
// *** Descripción:		Valida que el campo no sea vacio.
function validaSelec(elemento, frm) {
	if (elemento.selectedIndex==0) {
		alert("Debe seleccionar un valor en el campo "+elemento.getAttribute("nombre")+".");
		elemento.focus();
		return false;
	} else {
		return true;
	}
}
// *** FIN FUNCIÓN VALIDA VACIO *** //



