	// COMPRUEBA SI LA CADENA QUE SE ENVIA COMO PARAMETRO ESTA VACIA

	function esVacia(cadena){
		return ((cadena == null) || (cadena.length == 0))
	}	
	
	
	// Returns true if string s is empty or 
	// COMPRUEBA SI LA CADENA QUE SE ENVIA COMO PARAMETRO ESTA VACIA O SON SOLO ESPACIOS EN BLANCO
	
	function esNula(cadena){
		var i;
		var whitespace = " \t\n\r";
	
	    // Comprobar si es una cadena vacia
	    if (esVacia(cadena)) return true;
	   
	    // Recorrer todos los caracteres de la cadena hasta encontrar un caracter que no sea
	    // un espacio en blanco	
	    for (i = 0; i < cadena.length; i++){
	        // Comprobar que el caracter actual no es un espacio en blaco
	        var c = cadena.charAt(i);
	
	        if (whitespace.indexOf(c) == -1) return false;
	    }
	
	    // Todos los caracteres son espacios en blanco
	    return true;
	}



	// COMPRUEBA SI LA CADENA QUE SE ENVIA COMO PARAMETRO ES UN NUMERO
	
	function esNumero(cadena){
		// La expresion \D incluye a cualquier caracter no numerico
		return (typeof cadena != "undefined" && cadena.toString() && !/\D/.test(cadena));
	}
	
	
	// COMPRUEBA SI LA CADENA QUE SE ENVIA COMO PARAMETRO ES UN NUMERO NEGATIVO
	
	function esNegativo(cadena) {
	    return (parseInt(cadena) < 0);
	}

	
	// COMPRUEBA SI LA CADENA QUE SE ENVIA COMO PARAMETRO ES UNA DIRECCION DE EMAIL VALIDA
	
	function esEmail(cadena){
		//if (esNula(cadena)) return false;
		
	    // Debe haber, al menos, un caracter antes de la "@"
	    // Por eso empezamos la busqueda en la posicion 1
	    var i = 1;
	    var longitudCadena = cadena.length;
	
	    // Buscamos la "@"
	    while ((i < longitudCadena) && (cadena.charAt(i) != "@")){
	    	i++;
	    }
	
	    if ((i >= longitudCadena) || (cadena.charAt(i) != "@")) {
	    	return false;
	    } else {
	    	i += 2;
	    }
	
	    // Buscamos el "."
	    while ((i < longitudCadena) && (cadena.charAt(i) != ".")){
	    	i++;
	    }
	
	    // Debe haber, al menos, un caracter detras de el "."
	    if ((i >= longitudCadena - 1) || (cadena.charAt(i) != ".")) {
	    	return false;
	    } else {
	    	return true;
	    }
	}
	
	
	// COMPRUEBA SI LA CADENA QUE SE ENVIA COMO PARAMETRO ES UNA FECHA VALIDA
	// FORMATO VALIDO: dd/mm/aaaa
	
	function esFecha(cadena){
		// Array con el numero de dias de cada mes
		var aDiasDelMes = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	
		// Separador empleado por el usuario para la fecha
		var sSepFecha = '/';	
		
		// Dividir la cadena que contiene la fecha en elementos de un array
		var aValorMDY = cadena.split(sSepFecha);
		
		// Averiguar el dia, el mes y el ano a partir de la fecha introducida por el usuario
		var iDia = aValorMDY[0];
		var iMes = aValorMDY[1];
		var iAnno = aValorMDY[2];
	
		// Comprobar que el mes, dia y ano son numeros
		if (!esNumero(iMes) || !esNumero(iDia) || !esNumero(iAnno)) return false;
	
		// Comprobar que el ano tiene 4 digitos
		if(iAnno.length != 4) return false;
	
		// Averiguar el numero de dias del mes indicado por el usuario
		if (iMes != 2){
			var iDiasDelMes = aDiasDelMes[iMes-1]
		} else { // Febrero
			if ((iAnno%4 == 0 && iAnno%100 != 0 || iAnno % 400 == 0)) { // Bisiesto
				var iDiasDelMes = 29
			} else {
				var iDiasDelMes = 28
			}
		}
		
		return (iDia != null && iMes != null && iAnno != null	&& iMes<13 && iMes>0 && iDia>0 && iDia <= iDiasDelMes);
	}
	
	/* FUNCIONES DE CHEQUEO DE FORMULARIOS */
	
	// COMPRUEBA SI EL CAMPO CONTIENE UNA FECHA VALIDA
	 
	function comprobarFecha(campo) {
		return esFecha(campo.value);
	}
	
	
	// COMPRUEBA SI EL CAMPO CONTIENE UN VALOR NUMERICO VALIDO
	
	function comprobarNumero(campo) {
		return esNumero(campo.value);
	}
	
	// COMPRUEBA SI UN NUMERO ES NEGATIVO
	function comprobarNumNegativo(campo) {
		return esNegativo(campo.value);
	}
		
	
	// COMPRUEBA SI EL CAMPO CONTIENE UNA DIRECCION DE EMAIL VALIDA
	
	function comprobarEmail(campo) {
		return esEmail(campo.value);
	}
	
	
	// COMPRUEBA SI EL CAMPO CONTIENE UN VALOR NULO
	function comprobarNulo(campo) {
    	return esNula(campo.value);
	}
	
	// COMPRUEBA UN RANGO DE FECHAS
	function comprobarRangoFechas(campoInicio, campoFin) {
		fechaDesde = campoInicio.value;
		fechaHasta = campoFin.value;
			
		var sSepDate = '/';					
		var aValueMDY = fechaDesde.split(sSepDate);				
			
		var diaDesde = aValueMDY[0];
		var mesDesde = aValueMDY[1];
		var anoDesde = aValueMDY[2];
			
		date1 = Date.parse(anoDesde + "/" + mesDesde + "/" + diaDesde);
			
		aValueMDY = fechaHasta.split(sSepDate);	
			
		var diaHasta = aValueMDY[0];
		var mesHasta = aValueMDY[1];
		var anoHasta = aValueMDY[2];
			
		date2 = Date.parse(anoHasta + "/" + mesHasta + "/" + diaHasta);
			
		numDias = (date2-date1)/(24*60*60*1000);
			
		if (numDias < 0) {
			return false;
		} else {
			return true;
		}
	}
	
	function eliminaAcentos(cadena) {
		var nuevaCadena = "";
		
		nuevaCadena = cadena.replace(/á/gi, "a");
		nuevaCadena = nuevaCadena.replace(/é/gi, "e");
		nuevaCadena = nuevaCadena.replace(/í/gi, "i");
		nuevaCadena = nuevaCadena.replace(/ó/gi, "o");
		nuevaCadena = nuevaCadena.replace(/ú/gi, "u");			
		
		return nuevaCadena;
	}
	
	
	
	// Devuelve el trim de la cadena pasada por parámetro.
	// Además de quitar los espacios del principio y final de la cadena,
	//	disminuye a un solo espacio los que existen entre palabras.
	function trim(textoArea) {
		inicioBlanco = /^[ ]+/ // El ^ indica principio de cadena
		finBlanco = /[ ]+$/ // El $ indica final de cadena
		variosBlancos = /[ ]+/g // El global (g) es para obtener todas las posibles combinaciones

		textoArea = textoArea.replace(inicioBlanco,"");
		textoArea = textoArea.replace(finBlanco,"");
		textoArea = textoArea.replace(variosBlancos," ");

		return textoArea;
	}

	function quitarComillaSimple(cadena) {
		return cadena.replace(/[']+/g, "");
	}

	function quitarTantoPorCiento(cadena) {
		return cadena.replace(/[%]+/g, "");
	}

	function formatearCadena(cadena) {
		lsCadena = cadena;
		return trim(quitarTantoPorCiento(quitarComillaSimple(lsCadena)));
	}



	function completarFecha(pFecha) {
		// Separador empleado por el usuario para la fecha
		var sSepFecha = '/';	
		var fecha = pFecha.value;
			
		if (pFecha.value.length > 0) {
			
			// Dividir la cadena que contiene la fecha en elementos de un array
			var aValorMDY = fecha.split(sSepFecha);
			
			// Averiguar el dia, el mes y el ano a partir de la fecha introducida por el usuario
			var iDia = aValorMDY[0];
			var iMes = aValorMDY[1];
			var iAnno = aValorMDY[2];
			
			// Comprobación de que las variables tienen contenido ya que si no es así falla al preguntar por la propiedad length.
			if ( typeof iDia == "undefined" ) return false;
			if ( typeof iMes == "undefined" ) return false;
			if ( typeof iAnno == "undefined" ) return false;
			
	
			// Completar año
			if(iAnno.length == 1) iAnno = "200" + iAnno;
			else if(iAnno.length == 2) iAnno = "20" + iAnno;
			else if(iAnno.length == 3) iAnno = "2" + iAnno;
	
			// Completar mes
			if(iMes.length == 1) iMes = "0" + iMes;
	
			// Completar día
			if(iDia.length == 1) iDia = "0" + iDia;
		

			return iDia + sSepFecha + iMes + sSepFecha + iAnno;
		} else
			return "";
	}
