/*================================================================================
	MÓDULO: validar.js
	Define funciones para la comprobación de campos rellenos
	
	Historia de Actualizaciones:
	01/06/2007 - Actualización de ValidarCampoNum() para la conversión automática
				de la coma decimal por punto
	28/08/2006 - Actualizado
=================================================================================*/

/*--------------------------------------------------------------------------------
	FUNCION: ValidarCampo ()
	Comprueba que se haya introducido un valor en el campo indicado
	
	PARÁMETROS:
	campo (object) campo que se desea comprobar
	nombre (string) nombre identificador del campo que se desea comprobar

	VALOR DEVUELTO:
	Devuelve true si se ha validado correctamente el contenido del campo y
	false en caso contrario
--------------------------------------------------------------------------------*/

 function ValidarCampo (campo, nombre) {
	 
	texto = Trim(campo.value);

	if (texto == "") {
		alert ("Debe introducir un valor para el campo '" + nombre + "'.");//"Campo requerido"
        return false;
	}

	return true;
 }
 
/*--------------------------------------------------------------------------------
	FUNCION: ValidarCampoNum ()
	Comprueba que se haya introducido un valor numérico en el campo indicado
	
	PARÁMETROS:
	campo (object) campo que se desea comprobar
	nombre (string) nombre identificador del campo que se desea comprobar

	VALOR DEVUELTO:
	Devuelve true si se ha validado correctamente el contenido del campo y
	false en caso contrario
--------------------------------------------------------------------------------*/

 function ValidarCampoNum (campo, nombre) {
	 
 	texto = Trim(campo.value);

	//Si encuentra una coma la cambia por un punto como separador decimal
	pos = texto.indexOf (",");
	if (pos > -1) {
		texto = parseFloat(texto.substring(0, pos) + "." + texto.substring(pos+1, texto.length));
		campo.value = texto;
	}
	
    if (texto == "" || isNaN(texto)) {
		alert ("Debe introducir un valor numérico para el campo '" + nombre + "'.");
        return false;
	}

    return true;
 }


/*--------------------------------------------------------------------------------
	FUNCION: ValidarCampoClave ()
	Comprueba que se haya introducido un valor válido para usarse como clave o
	contraseña en el campo indicado
	
	PARÁMETROS:
	campo (object) campo que se desea comprobar
	nombre (string) nombre identificador del campo que se desea comprobar

	VALOR DEVUELTO:
	Devuelve true si se ha validado correctamente el contenido del campo y
	false en caso contrario
--------------------------------------------------------------------------------*/

 function ValidarCampoClave (campo, nombre)
 {
 	texto = campo.value;
 
 	if (Trim(texto) == "") {
		alert ("Debe introducir un valor para el campo '" + nombre + "'."); //"Campo requerido"
        return false;
   }
   else {
		//No puede contener espacios en blanco ni otros caracteres especiales
		especial = " !·$%&/()=?¿¡',;.:<>^`[*+]¨´{}Ç@#|áéíóúäëïöüâêîôû" + '"';

		for (i=0; i<texto.length; i++) {
			c = texto.charAt(i);
	   		//if (c == " " || c == "'" || c == '"') {
			if (especial.indexOf (c) > -1) {
		  		alert ("El campo " + nombre + " no puede contener espacios en blanco ni otros caracteres especiales.");
				return false;
			}
		}
   	}
	
	return true;
 } 


/*--------------------------------------------------------------------------------
	FUNCION: ValidarCampoWeb ()
	Comprueba que se haya introducido un valor válido para usarse como dirección web
	en el campo indicado
	
	PARÁMETROS:
	campo (object) campo que se desea comprobar
	nombre (string) nombre identificador del campo que se desea comprobar
	requerido (boolean) indica si es obligatorio introducir un valor en el campo (true)
		o no (false). En este caso solo realiza la comprobación en el caso de introducir
		algún valor

	VALOR DEVUELTO:
	Devuelve true si se ha validado correctamente el contenido del campo y
	false en caso contrario
--------------------------------------------------------------------------------*/

 function ValidarCampoWeb (campo, nombre, requerido)
 {
 	texto = Trim(campo.value);
 
 	if (requerido && texto == "") {
		alert ("Debe introducir un valor para el campo '" + nombre + "'."); //"Campo requerido"
        return false;
    }
    else if (texto != "") {
		//No puede contener espacios en blanco ni otros caracteres especiales
		especial = " !·$%()¿¡',;<>^`[*+]¨´{}Ç@#|" + '"';

		for (i=0; i<texto.length; i++) {
			c = texto.charAt(i);
	   		//if (c == " " || c == "'" || c == '"' || c == "@") {
			if (especial.indexOf (c) > -1) {
		  		alert ("El campo '" + nombre + "' no puede contener espacios en blanco ni otros caracteres especiales.");
				return false;
			}
		}
		
		pos = texto.lastIndexOf('.');
		if (pos < 1 || (texto.length - pos) < 3 || (texto.length - pos) > 4) {
			alert ("Debe introducir una dirección web válida para el campo '" + nombre + "'.");
			return false;
		}
		else
			return true;
	}

	return true;	
 }
 
 
/*--------------------------------------------------------------------------------
	FUNCION: ValidarCampoEmail ()
	Comprueba que se haya introducido un valor válido para usarse como dirección 
	de email en el campo indicado
	
	PARÁMETROS:
	campo (object) campo que se desea comprobar
	nombre (string) nombre identificador del campo que se desea comprobar
	requerido (boolean) indica si es obligatorio introducir un valor en el campo (true)
		o no (false). En este caso solo realiza la comprobación en el caso de introducir
		algún valor

	VALOR DEVUELTO:
	Devuelve true si se ha validado correctamente el contenido del campo y
	false en caso contrario
--------------------------------------------------------------------------------*/

 function ValidarCampoEmail (campo, nombre, requerido)
 {
 	texto = Trim(campo.value);
 
 	if (requerido && texto == "") {
		alert ("Debe introducir un valor para el campo '" + nombre + "'."); //"Campo requerido"
        return false;
    }
	
    else if (texto != "") {
		//No puede contener espacios en blanco ni otros caracteres especiales
		especial = " !·$%&/()=?¿¡',;:<>^`[*+]¨´{}Ç#|" + '"';

		for (i=0; i<texto.length; i++) {
			c = texto.charAt(i);
	   		//if (c == " " || c == "'" || c == '"') {
			if (especial.indexOf (c) > -1) {
		  		alert ("El campo '" + nombre + "' no puede contener espacios en blanco ni otros caracteres especiales.");
				return false;
			}
		}
		
		pos_a = texto.lastIndexOf('@');
		if (pos_a < 1)
			valido = false;
		else {
			pos_p = texto.lastIndexOf('.');
			if ((pos_p - pos_a) < 2 || (texto.length - pos_p) < 3 || (texto.length - pos_p) > 4)
				valido = false;
			else
				valido = true;
		}
		
		if (!valido){		
			alert ("Debe introducir una dirección de correo válida para el campo '" + nombre + "'.");
			return false;
		}
		else
			return true;
	}
	
	return true;	
 }
 
 
/*--------------------------------------------------------------------------------
	FUNCION: Trim ()
	Elimina los espacios en blanco del principio y final de una cadena
	
	PARÁMETROS:
	cad (string) la cadena de entrada

	VALOR DEVUELTO:
	Una cadena sin espacios en blanco ni al principio ni al final
--------------------------------------------------------------------------------*/

 function Trim (cad) {
	 
 	pos1 = 0;
	while (cad.charAt(pos1) == " ") pos1++;
	
	pos2 = cad.length-1;
	while (pos2>pos1 && cad.charAt(pos2) == " ") pos2--;
	
	return cad.substring(pos1, pos2+1);
 }


 		function ValidarCampoTexto (campo, nombre) {
 			texto = campo.value;
  			if (Trim(texto) == "") {
				alert ("Debe introducir un valor para el campo '" + nombre + "'."); //"Campo requerido"
        		return false;
   			}
   			else {
				//No puede contener caracteres especiales
				especial = "·$()¿¡,;.:<>^`[*+]¨´{}Ç#|@áéíóúäëïöüâêîôû" + '"';
				for (i=0; i<texto.length; i++) {
					c = texto.charAt(i);
					if (especial.indexOf (c) > -1) {
		  				alert ("El campo " + nombre + " no puede contener signos de puntuación ni otros caracteres especiales.");
						return false;
					}
				}
   			}
			return true;
 		} 

