//ELIMINA LOS ESPACIOS EN BLANCO SITUADOS AL COMIENZO Y EL FINAL DE UNA CADENA DE TEXTO.

function Trim(cadena)
{	
	longitud=cadena.length;

	//Elimino los posibles espacios en blanco antes del primer caracter no blanco

	for(cont=0; cont<longitud; cont++)
	{
		if(cadena.charAt(cont) != " ")
		{
			cadena = cadena.substring(cont, longitud);
			break;
		}
	}

	if(cont==longitud)
	{
		cadena="";
	}
	
	for(cont=cadena.length-1; cont>=0; cont--)
	{
		if(cadena.charAt(cont) != " ")
		{
			cadena = cadena.substring(0, cont+1);
			break;
		}
	}

	return cadena;
}

//INDICA SI EL CAMPO DE UN FORMULARIO ESTA VACIO O CONTIENE TAN SOLO ESPACIOS EN BLANCO.
//SI CONTIENE TEXTO, ELIMINA LOS ESPACIOS EN BLANCO SITUADOS AL COMIENZO O FINAL DEL MISMO.

function NoVacio(form)
{
	for(arg=1;arg<NoVacio.arguments.length;arg++)
	{
		with(eval("document.forms."+form+".elements[NoVacio.arguments[arg]]"))
		{
			//Elimino los espacios en blanco al principio y al final de la cadena			
			
			value=Trim(value);

			//Compruebo si se trata de una cadena vacía
			if(value=="")
				return false;
		}
	}

	return true;
}

//COMPRUEBA SI LA DIRECCIÓN DE EMAIL ES VÁLIDA

function ValidarEmail(form, campo)
{
	//Compruebo que la dirección de email introducida presenta una estructura correcta

	eval("email=document.forms."+form+"."+campo+".value");

	//Si el campo esta vacio no lo valido

	if(!email.length)
		return true;

	puntoFinal=false;
	arroba=false;
	cont=0;

	for(pos=0;pos<email.length;pos++)
	{	
		codASCII=email.charCodeAt(pos);
	
		//Si no es letra, número, '-' o '_'

		if((!EsLetra(codASCII))&&(!EsNumero(codASCII))&&(codASCII!=45)&&(codASCII!=95))
		{
			//Si es una arroba

			if((codASCII==64)&&(cont)&&(arroba==false))
			{
				arroba=true;
				cont=-1;
			}
			else
			{
				//Si es un punto
				
				if((codASCII==46)&&(cont))
				{
					if(arroba) puntoFinal=true;
					cont=-1;
				}
				else
					return false;
			}
		}
		
		cont++;
	}

	//Comprobamos que la dirección termina con una cadena de 2 o 3 letras despues del último punto

	if(((cont!=2)&&(cont!=3))||(puntoFinal==false))
		return false;

	return true;
}

//COMPRUEBA SI EL NÚMERO DE TELÉFONO ESTa FORMADO SOLO POR NÚMEROS

function ValidarTelefono(form, campo)
{
	eval("telefono=document.forms."+form+"."+campo+".value");

	//Si el campo esta vacio no lo valido

	if(!telefono.length)
		return true;

	for(pos=0;pos<telefono.length;pos++)
	{
		codASCII=telefono.charCodeAt(pos);
		if(!EsNumero(codASCII))
			return false;
		
	}

	return true;
}

//COMPRUEBA SI EL DNI ESTÁ FORMADO SOLO POR NÚMEROS

function ValidarDNI(form, campo)
{
	eval("dni=document.forms."+form+"."+campo+".value");

	//Si el campo esta vacio no lo valido

	if(!dni.length)
		return true;

	if(dni.length!=8)
		return false;

	for(pos=0;pos<dni.length;pos++)
	{
		codASCII=dni.charCodeAt(pos);
		if(!EsNumero(codASCII))
			return false;
		
	}

	return true;
}

//COMPRUEBA SI EL NÚMERO ESTa FORMADO SOLO POR CARACTERES NUMÉRICOS Y DENTRO DEL RANGO PERMITIDO

function ValidarNumero(form, campo, numMin, numMax)
{
	eval("numero=document.forms."+form+"."+campo+".value");

	//Si el campo esta vacio no lo valido

	if(!numero.length)
		return true;

	//Compruebo si todos los caracteres son numéricos

	marca = false;

	for(pos=0;pos<numero.length;pos++)
	{
		codASCII=numero.charCodeAt(pos);
		
		//Comprobamos que el '.' o ',' decimales no aparezcan en primera o última posición y solo lo hagan una vez
	
		if(codASCII == 46 || codASCII == 44)
		{
			if(pos == 0 || pos == numero.length -1 || marca == true)
				return false;
			else
				marca = true;
		}		

		if(!(EsNumero(codASCII) || codASCII == 46 || codASCII == 44))
			return false;
	}

	//Compruebo que el número se encuentra dentro del rango permitido

	if(numMin != "")
		if(parseFloat(numero) < parseFloat(numMin))
			return false;
	if(numMax != "")
		if(parseFloat(numero) > parseFloat(numMax))
			return false;
	
	return true;
}

//COMPRUEBA SI LA FECHA ES VALIDA

function ValidarFecha(form, campo, fechaMin, fechaMax)
{
	//Compruebo que la fecha introducida presenta una estructura correcta

	eval("fecha=document.forms."+form+"."+campo+".value");

	//Si el campo esta vacio no lo valido

	if(!fecha.length)
		return true;

	if(fecha.length!=10)
		return false;
	
	for(pos=0;pos<fecha.length;pos++)
	{	
		codASCII=fecha.charCodeAt(pos);
	
		//Si no es un número

		if(!(EsNumero(codASCII)&&(pos!=2)&&(pos!=5)))
			if(codASCII!=47)
				return false;
	}

	//Compruebo que la fecha es valida

	fechaEntrada=new Fecha();

	if(!fechaEntrada.ValidaFecha(fecha.substring(0,2),fecha.substring(3,5),fecha.substring(6,10)))
		return false;

	//Compruebo que la fecha se encuentra dentro del rango permitido

	if(fechaMin != "")
		if(!fechaEntrada.EsMayorIgual(fecha,fechaMin))
			return false;

	if(fechaMax != "")
		if(!fechaEntrada.EsMayorIgual(fechaMax,fecha))
			return false;

	return true;
}

//INDICA SI UN CARACTER ES UNA LETRA PERTENECIENTE AL ALFABETO INGLES

function EsLetra(codASCII)
{
	if((codASCII>=97)&&(codASCII<=122))
		return true;
	else
		return false;
}

//INDICA SI UN CARACTER ES UN NÚMERO

function EsNumero(codASCII)
{
	if((codASCII>=48)&&(codASCII<=57))
		return true;
	else
		return false;
}