
// función GENÉRICA para cualquier formulario
//------------------------------------------------------------------------------------------------
function chekea(cual) {
	var i, tipo, valor;
	if (cual.elements) {
		for (i=0; i<cual.elements.length; i++) {
			if (cual.elements[i].name != null) {
				if (cual.elements[i].name.substr(0,4) == "chk|") {
					tipo = cual.elements[i].name.split("|");
					valor = cual.elements[i].value;
					//if (valor != null) alert(valor);
					switch (tipo[2]) {
						case "str":	// alfanumérico
							// Primero veo si es obligatorio RELLENARLO
							if ((valor.length == 0) && tipo[5] == "true") {
								alert("O campo \""+tipo[6]+"\" é OBRIGATORIO");
								if (cual.elements[i].type!="hidden"){
									cual.elements[i].focus();
								}
								return false;
							}
							// Después veo si es menor que el mínimo
							if (tipo[5] == "true" && valor.length < parseInt(tipo[3],10)) {
								alert("O campo \""+tipo[6]+"\" NON pode ser menor de "+tipo[3]+" caracteres");
								if (cual.elements[i].type!="hidden"){
									cual.elements[i].focus();
								}
								return false;
							}
							// Y por último si es mayor que el máximo
							if (valor.length > parseInt(tipo[4],10)) {
								alert("O campo \""+tipo[6]+"\" NON pode ser meirande que "+tipo[4]+" caracteres");
								if (cual.elements[i].type!="hidden"){
									cual.elements[i].focus();
								}
								return false;
							}
							break;
						case "int":	// numerico
							// Primero veo si es obligatorio RELLENARLO
							if ((valor.length == 0) && tipo[5] == "true") {
								alert("O campo \""+tipo[6]+"\" é OBRIGATORIO");
								if (cual.elements[i].type!="hidden"){
									cual.elements[i].focus();
								}
								return false;
							}
							// Después compruebo que sea NUMÉRICO
							if (!(esNumerico(valor))) {
								alert("O campo \""+tipo[6]+"\" debe ser un NÚMERO entero");
								if (cual.elements[i].type!="hidden"){
									cual.elements[i].focus();
									cual.elements[i].select();
								}
								return false;
							}
							// Después veo si es menor que el mínimo
							if (parseInt(valor,10) < parseInt(tipo[3],10)) {
								alert("O campo \""+tipo[6]+"\" NON pode ser menor de "+tipo[3]);
								if (cual.elements[i].type!="hidden"){
									cual.elements[i].focus();
								}
								return false;
							}
							// Y por último si es mayor que el máximo
							if (parseInt(valor,10) > parseInt(tipo[4],10)) {
								alert("O campo \""+tipo[6]+"\" NON pode ser meirande de "+tipo[4]);
								if (cual.elements[i].type!="hidden"){
									cual.elements[i].focus();
									cual.elements[i].select();
								}
								return false;
							}
							break;
						case "date":	// fecha
							// Primero veo si es obligatorio RELLENARLO
							if ((valor.length == 0) && tipo[5] == "true") {
								alert("O campo \""+tipo[6]+"\" é OBRIGATORIO");
								if (cual.elements[i].type!="hidden"){
									cual.elements[i].focus();
								}
								return false;
							}
							// Después compruebo que sea FECHA
							if (validaFecha(valor) != "ok" && valor != "") {
								alert("O campo \""+tipo[6]+"\" debe ser de tipo data: DD/MM/AAAA\n"+validaFecha(valor));
								if (cual.elements[i].type!="hidden"){
									cual.elements[i].focus();
								}
								return false;
							}
							// Después veo si es menor que el mínimo
							if (convierteFecha(valor) < convierteFecha(tipo[3])) {
								alert("O campo \""+tipo[6]+"\" NON pode ser menor de "+tipo[3]);
								if (cual.elements[i].type!="hidden"){
									cual.elements[i].focus();
								}
								return false;
							}
							// Después veo si es mayor que el máximo
							if (convierteFecha(valor) > convierteFecha(tipo[4])) {
								alert("O campo \""+tipo[6]+"\" NON pode ser meirande de "+tipo[4]);
								if (cual.elements[i].type!="hidden"){
									cual.elements[i].focus();
								}
								return false;
							}
							break;
						case "eml":	//E-mail
							// Primero veo si es obligatorio RELLENARLO
							if ((tipo[5] == "true") && (valor.length == 0)) {
								alert("O campo \""+tipo[6]+"\" é OBRIGATORIO");
								if (cual.elements[i].type!="hidden"){
									cual.elements[i].focus();
								}
								return false;
							}
							// Después compruebo que sea EMAIL válido
							if ((esMail(valor)!=true) && (valor!="")){
								alert("O campo \""+tipo[6]+"\" NON é unha dirección válida");
								if (cual.elements[i].type!="hidden"){
									cual.elements[i].focus();
								}
								return false;
							}
							break;
						default:
							alert("No existen restricciones de tipo \""+tipo[2]+"\"");
							return false;
							break;
					}
				}
			}
		}
	}
	return true;
}


// COMPRUEBA el formato de los campos fecha en buscadores
// -----------------------------------------------------------------------------------------------
function chekeaBuscador(cual) {
	if (cual.elements){
		var i, valor;
		for (i=0; i<cual.elements.length; i++) {
			if (cual.elements[i].name != null) {
				// Comprobamos que no sea un campo oculto
				if (cual.elements[i].type != "hidden"){
				// Comprobamos el formato si es de tipo FECHA
					if (cual.elements[i].name.substr(0, 8) == "bsqFecha" || cual.elements[i].name == "bsqFechaInicio" || cual.elements[i].name == "bsqFechaFin") {
						valor = cual.elements[i].value;
						if (validaFecha(valor) != "ok" && valor != "") {
							alert("Os campo data deben ter formato DD/MM/AAAA");
							cual.elements[i].focus();
							return false;
						}
					}
				}
			}
		}
	}
	return true;
}


// COMPRUEBA que una fecha sea correcta
// -----------------------------------------------------------------------------------------------
function validaFecha(dato){
	var fecha, dia, mes, ano, aux, formato;

	dia 	= dato.substr(0, 2);
	mes 	= dato.substr(3, 2);
	ano 	= dato.substr(6, 4);

	aux		= "DD"+dato.substr(2, 1)+"MM"+dato.substr(5, 1)+"AAAA";
	formato	= "DD/MM/AAAA";	// formato de fecha y hora
	
//	comprobamos si el formato recibido es el correcto
	if(isNaN(dia+mes+ano)==false && aux==formato && dato.length==formato.length){
		fecha=new Date(ano, mes-1, dia);
		
		if(fecha.getDate() != dia){
			aux="El día no es correcto";
		}else if(fecha.getMonth() != (mes-1)){
			 aux="El mes no es correcto";
		}else if(fecha.getFullYear() != ano){
			aux="El año no es correcto";
		}else{
			aux="ok"; // la fecha es correcta
		}
	}else{
		aux="'"+dato+"'";
	}
	return aux;
}

// CONVIERTE una FECHA
// -----------------------------------------------------------------------------------------------
function convierteFecha(quien) {
	var fecha_split;	
	var tdia, tmes, tano;
	fecha_split = quien.split('/');
	tdia = parseInt(fecha_split[0],10);
	tmes = parseInt(fecha_split[1],10);
	tano = parseInt(fecha_split[2],10);
	return date = new Date(tano,tmes-1,tdia);
}

// VALIDA un email
// -----------------------------------------------------------------------------------------------
function esMail(texto){
    var valido = true;             
    var cadena = "abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ1234567890@._-";
    var arroba = texto.indexOf("@", 0);
    if ((texto.lastIndexOf("@")) != arroba) arroba = -1;
    var punto = texto.lastIndexOf(".");
	var i;
    for (i=0 ;i<texto.length;i++){
		if (cadena.indexOf(texto.substr(i, 1),0) == -1){
			valido = false;
			break;
    	}
    }
	if ((arroba > 1) && (arroba + 1 < punto) && (punto + 1 < (texto.length)) && (valido == true) && (texto.indexOf("..",0) == -1)){
    	valido = true;
	}else{
		valido = false;
	}
    return valido;
}
