/* 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 send_form(current_form){
// guardamos el nombre de grupo de radios o el primer radio de un grupo sin seleccionar
// para devolverle el foco

var radio_group = "1"
var ok_form = 1
    for(var ctr = 0 ; ctr < current_form.length; ctr++){
    // comprobamos que el campo es radio y que nombre de grupo de radio
     if(current_form[ctr].type == "radio" && current_form[ctr].name != radio_group){
            //comprobamos si tiene marcado un radio en el grupo
            if(check_radio(eval("current_form." + current_form[ctr].name))){
              // Si no tiene selecionado ningun radio rompemos el bucle
              // y asignamos 0 a ok_form
              ok_form--
              // guardamos el radio para asignar el foco
              radio_group = current_form[ctr]
              break
            }
            // Si hemos llegado aquí asignamos el nombre del grupo
            // para buscar en el siguiente grupo
            radio_group = current_form[ctr].name
        }
    }
if(ok_form){
   
    current_form.submit()
}
else{
   alert("Por favor, complete el cuestionario.")
   radio_group.focus()
}
}
// esta funcion comprueba el grupo  de radio
function check_radio(radio_group){
  // comprobamos que en el grupo de radio haiga uno seleccionado
  for(var ctr = 0 ; ctr < radio_group.length; ctr++){
    if(radio_group[ctr].checked){
     // Si hay uno selecionado
         return false
    }
  }
        // Si no hay ninguno seleccionado
      return true
}
//-->









  function Validar(Form)  {
    return (
         ValidarNombre(Form.nombre.value)
	  && ValidarApellidos(Form.apellidos.value)
	  && ValidarEmail(Form.email.value)
	  && ValidarTelefono(Form.telefono.value)
      && ValidarConsulta(Form.consulta.value)



      
      );
   }

/* Función para validar los campos con el nombre y apellidos */

  function ValidarNombre(nombre)  {
    var cadena = "El campo Nombre no contiene datos.\n"
      + "No se pueden enviar los datos del formulario , por favor revise "
      + "sus datos";

    if ( nombre == "" )  {
      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 válida: " + 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 ValidarApellidos(apellidos)  {
    var cadena = "El campo Apellidos no contiene datos.\n"
      + "No se pueden enviar los datos del formulario , por favor revise "
      + "sus datos";

    if ( apellidos == "" )  {
      alert(cadena);
      return false;
      }
    else return true;
    }

  function ValidarContacto(contacto)  {
    var cadena = "El campo Contacto no contiene datos.\n"
      + "No se pueden enviar los datos del formulario , por favor revise "
      + "sus datos";

    if ( contacto == "" )  {
      alert(cadena);
      return false;
      }
    else return true;
    }


  function ValidarConsulta(consulta)  {
    var cadena = "El campo Consulta no contiene datos.\n"
      + "No se pueden enviar los datos del formulario , por favor revise "
      + "sus datos";

    if ( consulta == "" )  {
      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 ValidarLocalidad(localidad)  {
    var cadena = "El campo localidad no contiene datos.\n"
      + "No se pueden enviar los datos del formulario , por favor revise "
      + "sus datos";

    if ( localidad == "" )  {
      alert(cadena);
      return false;
      }
    else return true;
    }

  function ValidarCodigo(codigo)  {
    var cadena = "El campo código postal no contiene datos.\n"
      + "No se pueden enviar los datos del formulario , por favor revise "
      + "sus datos";

    if ( codigo == "" )  {
      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;
        }
      }
    }

