/**************** ARCHIVO: VALIDADOR  ****************/
// ***
// *** Fecha creación: 		31/10/2006
// *** Última actualización: 	18/02/2008
// ***
// *** 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 "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 "MuestraTexto":
				MuestraTexto = true;
				ElementoSubmit = frm.elements[i];
				break;
		}
	}
	
	// EXCLUSIVO NILGRUP.
	if (!frm.INDUSTRIA.checked && !frm.HOSTELERIA.checked && !frm.elements['EMPRESAS DE LIMPIEZA'].checked && !frm.Colectividades.checked && !frm.Construccion.checked && !frm.elements['OTROS SECTORES'].checked) {
		alert("Debe marcar el sector al que pertenece su empresa.");
		return false;
	}
	
	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 ingresar un valor en el campo "+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 ingresar 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 filtro = /^\d+$/;
	if (!filtro.test(elemento.value)) {
		alert("Debe ingresar un número entero en el campo "+elemento.getAttribute("nombre")+".");
		elemento.focus();
		return false;
	} else {
		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(",", ".");
	var filtro 	= /^((\d+(\.\d*)?)|((\d*\.)?\d+))$/;
	
	if (!filtro.test(valor)) {
		alert("Debe ingresar un número entero 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 menos una opción haya sido seleccionada.
function validaRadio(elemento, frm) {
	var checked = false;
	
	for (j=0; j<frm.elements[elemento.value].length; j++) {
		if (frm.elements[elemento.value][j].checked) {checked = true; break;}
	}
	
	if (! checked) {
		alert("Debe marcar al menos una opción.");
		frm.elements[elemento.value][0].focus();
		return false;
	} else {
		return true;
	}
}
// *** FIN FUNCIÓN VALIDA RADIO *** //

