<!-- Valida contenido de campos en formularios -->

<!-- Entrada:	campo -->
<!--		longitud mínima -->
<!--		tipo de campo:	1=sin comillas simples ni backslash -->
<!--				2=mayúsculas, minúsculas, dígitos y guión bajo -->
<!--				3=dígitos -->
<!--				4=valores reales -->
<!--				5=direcciones e-mail -->
<!--				6=nombres de fichero -->
<!--				7=sin backslash -->
<!--		longitud fija del campo (0=no) -->

function ValidaCampos(campo, longitud, tipo, longitudFija) {
	var i;
	var numeroCaracteres = 0;					
	var numeroComas = 0;
	var numeroArrobas = 0;
	var ascii;

	if (longitud > 0 && (campo.value == "" || campo.value.length < longitud)) return false;

	if (longitudFija > 0 && (campo.value.length != 0 && campo.value.length != longitudFija)) return false;

	if (campo.value.length == 0 || tipo == 0) return true; 

	for (i = 0; i < campo.value.length; i++) {
		ascii = campo.value.charCodeAt(i);

		if (tipo == 1) {
			if (ascii == 39 || ascii == 92) {
				return false;
			}

			numeroCaracteres++;
		}
		else if (tipo == 2) {
			if (! ((ascii >= 48 && ascii <= 57) || (ascii >= 65 && ascii <= 90) ||
				(ascii >= 97 && ascii <= 122) || ascii == 95)) {
				return false;
			}

			numeroCaracteres++;
		}
		else if (tipo == 3) {
			if (! (ascii >= 48 && ascii <= 57))
			{
				return false;
			}

			numeroCaracteres++;
		}
		else if (tipo == 4) {
			if (! ((i == 0 && ascii == 45) || (ascii >= 48 && ascii <= 57) || ascii == 44)) {
				return false;
			}

			if (ascii == 44) {
				numeroComas++;
			}

			numeroCaracteres++;
		}
		else if (tipo == 5) {
			if (! ((ascii >= 48 && ascii <= 57) || (ascii >= 64 && ascii <= 90) || (ascii >= 97 && ascii <= 122) ||
				(ascii >= 43 && ascii <= 46) || ascii == 95)) {
				return false;
			}

			numeroCaracteres++;

			if (ascii == 64) {
				if (i > 0 && i < campo.value.length - 1) {
					numeroArrobas++;
				}
				else {
					return false;
				}
			}
		}
		else if (tipo == 6) {
			numeroCaracteres++;
		}
		else if (tipo == 7) {
			if (ascii == 92) {
				return false;
			}

			numeroCaracteres++;
		}
		else {
			return false;
		}
	}

	if (numeroCaracteres > 0 && numeroComas <= 1 && (tipo != 5 || numeroArrobas == 1)) {
		return true;
	}
	else {
		return false;
	}
}


<!-- Valida campos fecha -->

<!-- Entrada:   nombre de campo con fecha en formato DD-MM-AAAA. Acepta NULL -->

function ValidaCampoFecha(campo) {
	var dia;
	var mes;
	var anyo;

	if (campo.value.length == 0) return true;

	if (campo.value.substring(2,3) != "-" || campo.value.substring(5,6) != "-") return false;

	dia = parseFloat(campo.value.substring(0,2));
	mes = parseFloat(campo.value.substring(3,5));
	anyo = parseFloat(campo.value.substring(6,10));

	if (mes < 1 || mes > 12 || dia < 1 || dia > 31 ||
		(anyo < 1970) ||
		(anyo > 2050) ||
		(mes == 2 && dia > 29) ||
		(mes == 4 && dia > 30) ||
		(mes == 6 && dia > 30) ||
		(mes == 9 && dia > 30) ||
		(mes == 11 && dia > 30) ||
		(mes == 2 && dia == 29 && anyo % 4)) return false;

	return true;
}
