
<!-- 2005-2006 PLEIONE SYSTEMS SL -->
<!-- Todos los derechos reservados -->
<!-- Las condiciones de uso de este programa se rigen según licencia específica para cada instalación individual -->

<!-- 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, guión bajo y punto -->
<!--				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 || ascii == 46)) {
				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) {
			if (ascii == 39 || ascii == 34) {
				return false;
			}

			numeroCaracteres++;
		}
		else if (tipo == 7) {
			if (ascii == 92) {
				return false;
			}

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

	if (numeroCaracteres > 0 && numeroComas <= 1 && numeroArrobas <= 1) {
		if (tipo == 5 && ! (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(campo.value))) return false; 

		return true;
	}
	else {
		return false;
	}
}

