// Comunes

/* ESTA FUNCION SE UTILIZA PARA COMPROBAR QUE EL ARGUMENTO SUMINISTRADO ES UNA DIRECCION IPv4 VALIDA*/
function comprobar_ip(ip) 
	{
	var ipDomainPat=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;
	if(ip == "")
		{
		alert("Debes rellenar todos los campos");
		return(false);
		}
	if (ip.match(ipDomainPat)==null) 
		{
    	// EL NOMBRE DE USUARIO NO ES VALIDO
    	alert("La ip no es correcta.")
    	alert(ip)
    	return false
		}
	return(true);
	}

/* ESTA FUNCION SE UTILIZA PARA COMPROBAR QUE EL ARGUMENTO SUMINISTRADO ES UNA DIRECCION VALIDA (COMIENZA CON ftp:// o http:// */
function comprobar_direccion(url) 
	{
	var url_template = /^(http:\/\/|ftp:\/\/)/i;
	if(url == "")
		{
		alert("Debes rellenar todos los campos");
		return(false);
		}
	if (url.match(url_template)==null) 
		{
    	// EL NOMBRE DE USUARIO NO ES VALIDO
    	alert("La dirección web no parece correcta. Debería comenzar por http:// o ftp://")
    	return false
		}
	return(true);
	}

/* ESTA FUNCION SE UTILIZA PARA COMPROBAR QUE EL ARGUMENTO SUMINISTRADO ES UNA URL VALIDA */
function comprobar_url(url) 
	{
	var url_template = /^(http:\/\/)/i;
	if(url == "")
		{
		alert("Debes rellenar todos los campos");
		return(false);
		}
	if (url.match(url_template)==null) 
		{
    	// EL NOMBRE DE USUARIO NO ES VALIDO
    	alert("La url no parece correcta. Debería comenzar por http://")
    	return false
		}
	return(true);
	}

/* ESTA FUNCION SE UTILIZA PARA COMPROBAR QUE EL ARGUMENTO SUMINISTRADO ES UN TAMANO DE ESPACIO EN DISCO (UN NUMERO) */
function espacio_disco(espacio_disco) 
	{
	var number_template = /^(\d+)(,|\.)?(\d*)$/;
	if(espacio_disco == "")
		{
		alert("Debes rellenar todos los campos");
		return(false);
		}
	if (espacio_disco.match(number_template)==null) 
		{
    	// EL NOMBRE DE USUARIO NO ES VALIDO
    	alert("El espacio en disco es incorrecto.")
    	return false
		}
	return(true);
	}

/* ESTA FUNCION COMPRUEBA QUE EL ARGUMENTO SUMINISTRADO SEA UNA DIRECCION DE CORREO VALIDA */

function comprobar_email (emailStr) 
{
	/* EL SIGUIENTE PATRON SE UTILIZA PARA COMPROBAR SI LA DIRECCION DE EMAIL
		ESTA EN EL FORMATO usuario@dominio. ADEMAS SE UTILIZA PARA SEPARAR EL
		USUARIO DEL DOMINIO */
	var emailPat=/^(.+)@(.+)$/
	
	/* LA SIGUIENTE CADENA REPRESENTA LOS CARACTERES ESPECIALES QUE PUEDE CONTENER UNA
		DIRECCION VALIDA PERO QUE TIENEN FUNCIONES ESPECIALES PARA DELIMITAR CAMPOS: ( ) < > @ , ; : \ " . [ ]    */
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
	
	/* LA SIGUIENTE CADENA CONTIENE LOS CARACTERES PERMITIDOS PARA UN NOMBRE DE USUARIO
		O UN NOMBRE DE DOMINIO	*/
	var validChars="\[^\\s" + specialChars + "\]"
	
	/* EL SIGUIENTE PATRON TIENE EN CUENTA QUE SI EL NOMBRE DE USUARIO ESTA ENTRE COMILLAS
		NO EXISTEN REGLAS SOBRE LOS CARACTERES PERMITIDOS	*/
	var quotedUser="(\"[^\"]*\")"
	
	/* EL SIGUIENTE MODELO SE APLICA PARA DOMINIOS QUE UTILIZAN LA DIRECCION IP PARA 
		FORMAR LA DIRECCION DE EMAIL. EJ: joe@[123.124.233.4] ES UNA DIRECCION LEGAL.
		NOTA: LOS CORCHETES SON OBLIGATORIOS. */
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
	
	/* LA SIGUIENTE CADENA REPRESENTA UN atom (BASICAMENTE UNA SERIE DE CARACTERES NO-ESPECIALES) */
	var atom=validChars + '+'
	
	/* LA SIGUIENTE CADENA REPRESENTA UNA PALABRA EN UN NOMBRE DE USUARIO TIPICO.
	   POR EJEMPLO, EN john.doe@somewhere.com, john Y doe SON PALABRAS.
	   BASICAMENTE, UNA PALABRA ES UN atom O UNA CADENA ENTRECOMILLADA. */
	var word="(" + atom + "|" + quotedUser + ")"
	
	// EL SIGUIENTE PATRON DESCRIBE LA ESCTRUCTURA DEL NOMBRE DE USUARIO
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
	
	/* EL SIGUIENTE PATRON DESCRIBE LA ESTRUCTURA DE UN DOMINIO NORMAL */
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
	
	/* FINALMENTE, COMPROBAREMOS SI LA DIRECCION SUMINISTRADA ES VALIDA. */
	//MIRO SI LA CADENA ESTA VACIA
	if(emailStr == "")
		{
		alert("Debe rellenar todos los campos");
		return false;
		}
	
	/* EMPEZAMOS BUSCANDO EL MODELO SIMPLE user@domain. */
	var matchArray=emailStr.match(emailPat)
	if (matchArray==null) {
	  /* DEMASIADOS O POCOS @'s; BASICAMENTE ESTA DIRECCION NO SE AJUSTA AL MODELO GENERAL. */
		alert("La dirección de email no es correcta")
		return false
	}
	var user=matchArray[1]
	var domain=matchArray[2]
	
	// MIRO SI EL NOMBRE DE USUARIO ES VALIDO
	if (user.match(userPat)==null) {
	    // EL NOMBRE DE USUARIO NO ES VALIDO
	    alert("La dirección de email no es correcta.")
	    return false
	}
	
	/* SI LA DIRECCION DE EMAIL ES UNA DIRECCION IP COMPRUEBO QUE LA DIRECCION IP ES VALIDA. */
	var IPArray=domain.match(ipDomainPat)
	if (IPArray!=null) {
	    // ES UNA DIRECCION IP
		  for (var i=1;i<=4;i++) {
		    if (IPArray[i]>255) {
		        alert("La dirección de email no es correcta")
			return false
		    }
	    }
	    return true
	}
	
	// EL DOMINIO ES UN NOMBRE SIMBOLICO
	var domainArray=domain.match(domainPat)
	if (domainArray==null) {
		alert("La dirección de email no es correcta.")
	    return false
	}
	
	/* EL NOMBRE DEL DOMINIO PARECE CORRECTO, PERO AHORA HAY QUE ASEGURARSE QUE LA TERMINACION ES CORRECTA	*/
	
	/* AHORA NECESITAMOS DIVIDIR EL NOMBRE DEL DOMINIO. */
	var atomPat=new RegExp(atom,"g")
	var domArr=domain.match(atomPat)
	var len=domArr.length
	if (
			(	domArr[domArr.length-1].length<2
									|| 
	    		domArr[domArr.length-1].length>3
			) 
			&&
			(
				domArr[domArr.length-1] != 'info'
			)
			&&
			(
				domArr[domArr.length-1] != 'coop'
			)
			&&
			(
				domArr[domArr.length-1] != 'name'
			)
			&&
			(
				domArr[domArr.length-1] != 'museum'
			)
			&&
			(
				domArr[domArr.length-1] != 'aero'
			)			
		){
	   // LA DIRECCION DEBE ACABAR EN 2 O 3 LETRAS
		// o bien ser un .info
	   alert("La dirección de email no es correcta. TLD no válido")
	   return false
	}
	
	// TENEMOS QUE COMPROBAR QUE EXISTE EL NOMBRE DEL HOST PRECEDIENDO AL NOMBRE DEL DOMINIO.
	if (len<2) {
	   var errStr="La dirección de email no es correcta"
	   alert(errStr)
	   return false
	}
	
	// SI HEMOS LLEGADO HASTA AQUI TODO ES VALIDO
	return true;
}

<!-- This document created by WebScripter 2.0 copyright Code Generation 1998 -->


   fnumeros="0123456789";
   var separadorfecha="/";
    
   // Determina si un caracter es un número
   function fnumero(car)
   {
   return (fnumeros.indexOf(car)>=0)
   }
   
   // Determina si un año es bisiesto
   function bisiesto(anio) 
   {
   if (((anio % 4 == 0) && anio % 100 != 0) || anio % 400 == 0) 
      return true;
   return false;
   }

   // Comprueba si una fecha es correcta
   function comprobar_fechas(contenido)
   {
   
   if ((contenido.length==0))
      {
      return false;
      } 
   var nsep=0;
   // Comprobación de la sintáxis de una fecha 
   for (var i=0; i<contenido.length; ++i)
      {
      var car=contenido.charAt(i);
      if (!fnumero(car)&&car!=separadorfecha)
         {
         return false;
         } 
      if (car==separadorfecha)
        nsep++ 
      }
   if (nsep!=2)
      {
      return false;
      }
   // Comprobación de la semántica de una fecha
   var pos1=contenido.indexOf(separadorfecha);
   var dia=contenido.substring(0,pos1);
   var pos2=contenido.indexOf(separadorfecha,pos1+1);
   var mes=contenido.substring(pos1+1,pos2); 
   var anio=contenido.substring(pos2+1,10);
   if (anio<0||anio>9999)
      {
      return false;
      } 
   if (mes<1||mes>12)
      {
      return false;
      }
   if ((dia<1 || dia>31)||(mes==4&&dia>30)||(mes==6&&dia>30)
         ||(mes==9&&dia>30)||(mes==11&&dia>30)
         ||(mes==2&&bisiesto(anio)&&dia>29)
         ||(mes==2&&!bisiesto(anio)&&dia>28)
         )
      {
      return false;
      } 
   return true 
   }
   