/* Fichero: registro.js */

  /* Funciones para la validacion previa del
     formulario de registro */

  /* Copyright de estas funciones: Lola Cárdenas Luque.

     Este fichero puede usarse libremente para validar
     formularios siempre y cuando esté completo. La
     función 'Validar' puede modificarse para que se
     ajuste lo mejor posible a las necesidades */

  /* Funciones incluidas:

     Validar(Form) -> Llama a las funciones correspondientes
                      que validan campos de forma separada.
                      El parámetro 'Form' es una referencia
                      al formulario desde el que es llamada.
       Modo de uso: 
         onClick='return Validar(this.form);'
         dentro de un formulario

     ValidarNombre(Nombre, Apellidos)
     ValidarEmail(Email)
     ValidarClave(Usuario, Clave1, Clave2)
     ValidarEdad(Edad)
     ValidarFecha(Form)
     ValidarWeb(Web)

     Para usar estas funciones, debes tener creado un formulario
     cuyos campos reciban nombres muy concretos, o modificar los
     de este script. El campo en el que se escriba el nombre debe
     llamarse 'Nombre', el de los apellidos, 'Apellidos', el del
     e-mail, 'Email', el de la edad, 'Edad'. En la fecha de
     nacimiento, el día debe llamarse 'FNDia', el mes 'FNMes'
     y el año 'FNAnyo'. En cuanto a nombre de usuario y
     contraseña, 'Usuario', 'Clave1' y 'Clave2'. Por último, el
     campo con la dirección de la página web, será 'Web'.

     Es importante respetar estos nombres en los campos si no
     se quiere modificar el script, pues asume que se llamarán
     así. Si se quieren cambiar estos nombres en el código HTML
     del formulario, entonces habrá que cambiar esos valores en
     este fichero.

  */


/* Función genérica para validar el formulario que llama
   a varias funciones: así se desglosa el trabajo y se
   depura más fácilmente en caso de errores */

  function Validar(Form)  {
    return (
         ValidarNombre(Form.apenom.value)
	  && ValidarEmpresa(Form.empresa.value)
	  && ValidarDireccion(Form.direccion.value)
	  && ValidarPoblacion(Form.poblacion.value)
	  && ValidarProvincia(Form.provincia.value)
	  && ValidarPais(Form.pais.value)
      && ValidarEmail(Form.email.value)
      && ValidarTelefono(Form.telefono.value)
      
      );
   }

/* Función para validar los campos con el nombre y apellidos */

  function ValidarNombre(apenom)  {
    var cadena = "El campo nombre y apellidos no contiene datos.\n"
      + "No se pueden enviar los datos del formulario , por favor revise "
      + "sus datos";

    if ( apenom == "" )  {
      alert(cadena);
      return false;
      }
    else return true;
    }

/* Función para validar la dirección de e-mail */

  function ValidarEmail(email){
    var cadena = "Direccion de correo no valida: " + email
      + "\nPor favor, introduce bien tu direccion";

    if( email.indexOf('@',0) <= 0  || email.indexOf(';',0) != -1
     || email.indexOf(' ',0) != -1 || email.indexOf('/',0) != -1
     || email.indexOf(';',0) != -1 || email.indexOf('<',0) != -1
     || email.indexOf('>',0) != -1 || email.indexOf('*',0) != -1
     || email.indexOf('|',0) != -1 || email.indexOf('`',0) != -1
     || email.indexOf('&',0) != -1 || email.indexOf('$',0) != -1
     || email.indexOf('!',0) != -1 || email.indexOf('"',0) != -1
     || email.indexOf(':',0) != -1 )
       { alert(cadena); return false; }
    else return true;
    }



  function ValidarTelefono(telefono)  {
    var cadena = "El campo teléfono no contiene datos.\n"
      + "No se pueden enviar los datos del formulario , por favor revise "
      + "sus datos";

    if ( telefono == "" )  {
      alert(cadena);
      return false;
      }
    else return true;
    }

  function ValidarEmpresa(empresa)  {
    var cadena = "El campo empresa no contiene datos.\n"
      + "No se pueden enviar los datos del formulario , por favor revise "
      + "sus datos";

    if ( empresa == "" )  {
      alert(cadena);
      return false;
      }
    else return true;
    }


  function ValidarDireccion(direccion)  {
    var cadena = "El campo dirección no contiene datos.\n"
      + "No se pueden enviar los datos del formulario , por favor revise "
      + "sus datos";

    if ( direccion == "" )  {
      alert(cadena);
      return false;
      }
    else return true;
    }

  function ValidarPoblacion(poblacion)  {
    var cadena = "El campo poblacion no contiene datos.\n"
      + "No se pueden enviar los datos del formulario , por favor revise "
      + "sus datos";

    if ( poblacion == "" )  {
      alert(cadena);
      return false;
      }
    else return true;
    }

  function ValidarProvincia(provincia)  {
    var cadena = "El campo provincia no contiene datos.\n"
      + "No se pueden enviar los datos del formulario , por favor revise "
      + "sus datos";

    if ( provincia == "" )  {
      alert(cadena);
      return false;
      }
    else return true;
    }

  function ValidarPais(pais)  {
    var cadena = "El campo pais no contiene datos.\n"
      + "No se pueden enviar los datos del formulario , por favor revise "
      + "sus datos";

    if ( pais == "" )  {
      alert(cadena);
      return false;
      }
    else return true;
    }	

  function ValidarComentarios(comentarios)  {
    var cadena = "El campo comentarios no contiene datos.\n"
      + "No se pueden enviar los datos del formulario , por favor revise "
      + "sus datos";

    if ( comentarios == "" )  {
      alert(cadena);
      return false;
      }
    else return true;
    }






  function ValidarFecha(Form)  {
    var Error = "La fecha introducida es inválida.\n"
      + "Revísela, por favor.";
    var Dia, Mes, Anyo, Dia_Mes_Mal = false;
    var MesElegido = Form.FNMes.selectedIndex;

    Dia = Form.FNDia.value;
    Mes = Form.FNMes.options[MesElegido].value;
    Anyo = Form.FNAnyo.value;

    if( Dia == "" && Mes == "" && Anyo == "" ) return true;
    else {
      Dia = parseInt(Dia);
      Mes = parseInt(Mes);
      Anyo = parseInt(Anyo);

      if( !isNaN(Dia) && !isNaN(Mes) && !isNaN(Anyo)
          &&
          Dia >= 1 && Anyo >= 1900
        )  {

        /* Los meses de Enero, Marzo, Mayo, Julio, Agosto,
           Octubre y Diciembre tienen 31 días */

        if( 
           (   Mes == 1 || Mes == 3 || Mes == 5 || Mes == 7
            || Mes == 8 || Mes == 10 || Mes == 12
           )
          && Dia > 31
          )   Dia_Mes_Mal = true;

        /* Los meses de Mayo, Junio, Septiembre
           y Noviembre tienen 30 días */

        if(
           (Mes == 4 || Mes == 6 || Mes == 9 || Mes == 11)
          && Dia > 30
          )   Dia_Mes_Mal = true;

    /* Febrero tiene 28 ó 29 días, dependiendo de si es bisiesto
       o no. Un año es bisiesto si es múltiplo de 4 pero no de
       100 salvo que sea múltiplo de 400. Por ejemplo, 12 y 400
       son bisiestos, pero 100 y 700 no. */

        if( Mes == 2 && 
            ( Dia > 29 ||
              ( Dia == 29 &&
                ( 
                  (Anyo % 400 != 0)
                  && (
                     (Anyo % 4 != 0) || (Anyo % 100 == 0)
                     )
                )
              )
            )
           )  Dia_Mes_Mal = true;

        if(Dia_Mes_Mal)  {
          alert(Error);
          return false;
          }
        else return true;
        }   /* Si la fecha está fuera del rango razonable... */
      else  {
        alert(Error);
        return false;
        }
      }
    }


