// Elementos de la forma registro
// Campo		Validaciones
// ------------------	--------------------------------------
// usr_nombre 		No vacio, solo letras
// usr_apellido		No vacio, solo letras
// usr_dia		Valor != 0, debe corresponder al mes
// usr_mes		Valor != 0, debe corresponder al día
// usr_dec_anio		Ninguna
// usr_uni_anio		Ninguna
// usr_email		Correo valido, con arroba, con puntos
// usr_pais		Ninguna
// usr_telefono_oficina	Si tel_casa vacio, no vacio.
// usr_telefono_casa   	Si tel_oficina vacio, no vacio.
// usr_sexo		Ninguna
// usr_pregunta		No vacio. Long 3

	
// -----------------------------------------------------
// Funcion:  CadenaVacia
// Retorna:  true Si la cadena no es vacia
//           false si solo hay uno o mas espacios vacios
// -----------------------------------------------------
	
function CadenaVacia(cad)
{
   var i;  
   for (i=0; i<cad.length; i++) {
      if (cad.charAt(i) != ' ') // Encontro algo diferente de ' '
	return false;
   }
   return true; // Todos los caractes son espacios
}


// -----------------------------------------------------
// Funcion: ValidarNumero
// Retorna:  true  si la cadena contiene solo números
//           false dlc.
// -----------------------------------------------------

function ValidarNumero(checkStr)
{
  var checkOK = "0123456789";

  for (i = 0;  i < checkStr.length;  i++) {
     ch = checkStr.charAt(i); // i-esimo caracter de texto
     for (j = 0;  j < checkOK.length;  j++) {
        if (ch == checkOK.charAt(j)) // el i-esimo caracter es un digito
           break;
     }

     if (j == checkOK.length) { // El i-esimo caracter no es un digito
        return false;
     }
  }

  return true; // Todos los caracteres son dígitos
}

// -----------------------------------------------------
// Funcion: ValidarLetras
// Retorna:  true  si la cadena contiene solo letras y espacios 
//           false dlc.
// -----------------------------------------------------

function ValidarLetras(checkStr)
{
  for (i = 0;  i < checkStr.length;  i++) {
     ch = checkStr.charAt(i); // i-esimo caracter de texto
        // Acaba si no es letra o texto
        if ( ch != ' ' ) {
           if ( ch < 'A' || ch > 'z') {
              return false;
           }
        }
  }

  return true; // Todos los caracteres letras o espacios
}

// -----------------------------------------------------
// Funcion: ValidarCorreo
// Retorna:  true si el texto es un correo válido
//           false dlc.
// -----------------------------------------------------

function ValidarCorreo (mail)
{
    var i = 1;
    var sLength = mail.length;

    if (CadenaVacia(mail))
       return false;

    while ((i < sLength) && (mail.charAt(i) != "@"))
    { i++
    }

    if ((i >= sLength) || (mail.charAt(i) != "@")) return false;
    else i += 2;

    while ((i < sLength) && (mail.charAt(i) != "."))
    { i++
    }

    if ((i >= sLength - 1) || (mail.charAt(i) != ".")) return false;
    else return true;
}

// -----------------------------------------------------
// Funcion: ValidarFecha
// Retorna:  true si la fecha es valida
//            false dlc.
// -----------------------------------------------------

function ValidarFecha(dia, mes, anio) {

   var anioTexto = anio;

   if ( dia < 1 || mes < 1 || anio < 1900){
      return false;  
   }
   if ( (mes == 4 || mes == 6 || mes == 9 || mes == 11 ) && dia > 30 ) {
      return false;
   }
   if ( mes == 2 && anio%4 != 0 && dia > 28 ) {
      return false;
   }
   if ( mes == 2 && anio%4 == 0 && dia > 29 ) {
      return false;
   }
   return true; 
}

// -----------------------------------------------------
// Funcion: ValidarLongitud
// Retorno:  true si el texto tiene longotud >= longitud
//           false dlc
// -----------------------------------------------------

function ValidarLongitud (texto, longitud) {
   if ( texto.length >= longitud )
      return true;
   else return false;
}

// -----------------------------------------------------
// Funcion: VerificarServicios
// Retorna:  Cuenta el numero de checkboxes chequeados
//           en la forma
// -----------------------------------------------------

function VerificarServicios(elCheckbox) {
    if ( elCheckbox.checked ){
      document.usr_nuevo.chequeado.value++;
    }
    else {
      document.usr_nuevo.chequeado.value--;
    }
}

// -----------------------------------------------------
// Funcion: ValidarAlias
// Retorno:  true si el alias solo tiene numero y letras
//           false dlc
// -----------------------------------------------------

function ValidarAlias ( alias ) {
   for ( i=0; i<alias.length; i++  ) {
      if ( (alias.charAt(i) >= 'a' && alias.charAt(i) <= 'z' ) ||
           (alias.charAt(i) >= 'A' && alias.charAt(i) <= 'Z' ) ||
           (alias.charAt(i) >= '0' && alias.charAt(i) <= '9' ) ||
            alias.charAt(i) == '_' || alias.charAt(i) == '-' ){    
         // bien 
      }
      else return false;
   }
   return true;
}


// -----------------------------------------------------
// Funcion: ValidarAliasClave
// Retorno: Verifica que los datos alias y clave no son vacios
// -----------------------------------------------------

function ValidarAliasClave () {
   Control = document.accion.usr_alias;
   Dato = Control.value;
   if (CadenaVacia(Dato)) {
      alert ( "Por favor ingrese su alias" );
      Control.focus();
      return;
   }

   Control = document.accion.usr_clave;
   Dato = Control.value;
   if (CadenaVacia(Dato)) {
      alert ( "Por favor ingrese su clave" );
      Control.focus();
      return;
   }
   document.accion.submit();
}

// -----------------------------------------------------
// Funcion: ValidarRecomiende
// Uso:      Para la forma de recomiende un amigo
// Retorna:  Hace submit de la forma si todos los datos son válidos
//           false dlc.
// -----------------------------------------------------

function ValidarRecomiende () {

   var Control;
   var Dato;
   var dia, mes, anio;
   var cadenas = ["usr_nombre", "rec_nombre", "rec_email" ];
   var mensajeCadenas  = [
        "su nombre",
        "el nombre de su amigo(a)",
        "el email de su amigo(a)" ];

   // Casos generales
   for ( i=0; i<3 ; i++ ) {
      Control = eval("document.accion." + cadenas[i]);
      Dato = Control.value;
      if (CadenaVacia(Dato)) {
         alert ( "Por favor ingrese " + mensajeCadenas[i]);
         Control.focus();
         return;
      }
   }

   // Correo con sentido
  if ( !ValidarCorreo( document.accion.rec_email.value ) ) {
     alert ("El correo no es válido");
     document.accion.rec_email.focus();
     return;
  }
  document.accion.submit();
}

// -----------------------------------------------------
// Funcion:  ValidarOlvidoClave
// Uso:      Para la forma de olvido su clave
// Retorna:  Hace submit de la forma si todos los datos son válidos
//           Convierte dia mes y anio en una sola cadena para usr_anio
//           false dlc.
// -----------------------------------------------------

function ValidarOlvidoClave() {

  // Alias no vacio
  if ( CadenaVacia( document.accion.usr_alias.value ) ) {
     alert ("Debe escribir su alias");
     document.accion.usr_alias.focus();
     return;
  }

  // Tamaño alias
  if ( !ValidarLongitud( document.accion.usr_alias.value, 3 ) ) {
     alert ("Verifique su alias, debe tener mínimo tres (3) caracteres.");
     document.accion.usr_alias.focus();
     return;
  }

  // Validar fecha
  dec = document.accion.usr_dec_anio.options[ document.accion.usr_dec_anio.selectedIndex].value;
  uni = document.accion.usr_uni_anio.options[ document.accion.usr_uni_anio.selectedIndex].value;
  document.accion.usr_anio.value = "19" + dec + uni;
  dia = document.accion.usr_dia.options[ document.accion.usr_dia.selectedIndex].value;
  mes = document.accion.usr_mes.options[ document.accion.usr_mes.selectedIndex].value;
  anio = document.accion.usr_anio.value;

  if ( !ValidarFecha (dia, mes, anio) ){
     alert ("La fecha de nacimiento no es válida.");
     document.accion.usr_dia.focus();
     return;
  }

  document.accion.submit();
}

// -----------------------------------------------------
// Funcion:  ValidarOlvidoClave2
// Uso:      Para la forma de olvido su clave2
// Retorna:  Hace submit de la forma si la respuesta no es vacia
//           false dlc.
// -----------------------------------------------------

function ValidarOlvidoClave2() {

  // Respuesta no vacia
  if ( CadenaVacia( document.accion.usr_respuesta.value ) ) {
     alert ("Debe escribir su respuesta");
     document.accion.usr_respuesta.focus();
     return;
  }
  document.accion.submit();
}
	
// -----------------------------------------------------
// Funcion:  ValidarCambioClave
// Uso:      Para la forma de cambio de clave
// Retorna:  Hace submit de la forma si todos los datos son válidos
//           false dlc.
// -----------------------------------------------------

function ValidarCambioClave() {
   var Control;
   var Dato;
   var dia, mes, anio;
   var cadenas = ["usr_alias", "usr_clave", "usr_password", "usr_password2" ];	
   var mensajeCadenas  = [ 
	"su alias",
 	"su clave actual",
	"una  nueva clave",
	"su clave nuevamente" ];

   // Casos generales
   for ( i=0; i<4 ; i++ ) {
      Control = eval("document.accion." + cadenas[i]);
      Dato = Control.value;
      if (CadenaVacia(Dato)) {
         alert ( "Por favor ingrese " + mensajeCadenas[i]);
 	 Control.focus();
	 return;
      }
   }

   // Tamaño clave
  if ( !ValidarLongitud( document.accion.usr_password.value, 3 ) ) {
     alert ("La clave debe tener mínimo tres (3) caracteres.");
     document.accion.usr_password.focus();
     return;
  }
   
   // Clave y confirmacion iguales
  if ( document.accion.usr_password.value != document.accion.usr_password2.value ) {
     alert ("La confirmación de la clave es incorrecta.");
     document.accion.usr_password2.focus();
     return;
  }

  document.accion.submit(); 
}

// -----------------------------------------------------
// Funcion:  ValidarEditarDatos
// Uso:      Para la forma de edicion de datos
// Retorna:  Hace submit de la forma si todos los datos son válidos
//           false dlc.
// -----------------------------------------------------

function ValidarEditarDatos() {
   var Control;
   var Dato;
   var dia, mes, anio;
   var cadenas = ["usr_nombre", "usr_apellido", "usr_email", "usr_pregunta", "usr_respuesta" ];
   var mensajeCadenas  = [
        "sus nombres",
        "sus apellidos",
        "una dirección de correo electrónico",
        "una pregunta (esta se le hará cuando se le olvide su clave).",
        "la respuesta a la pregunta hecha" ];
   // Casos generales
   for ( i=0; i<5 ; i++ ) {
      Control = eval("document.accion." + cadenas[i]);
      Dato = Control.value;
      if (CadenaVacia(Dato)) {
         alert ( "Por favor ingrese " + mensajeCadenas[i]);
         Control.focus();
         return;
      }
   }

   // Debe haber al menos un telefono

   Control = document.accion.usr_telefono_oficina;
   Dato = Control.value;
   Control1 = document.accion.usr_telefono_casa;
   Dato1 = Control1.value;

   if (CadenaVacia(Dato) && CadenaVacia(Dato1)) {
      alert("Por favor ingrese al menos un teléfono.");
      Control.focus();
      return;
   }

  // Validar fecha
  dec = document.accion.usr_dec_anio.options[ document.accion.usr_dec_anio.selectedIndex].value;
  uni = document.accion.usr_uni_anio.options[ document.accion.usr_uni_anio.selectedIndex].value;
  document.accion.usr_anio.value = "19" + dec + uni;
  dia = document.accion.usr_dia.options[ document.accion.usr_dia.selectedIndex].value;
  mes = document.accion.usr_mes.options[ document.accion.usr_mes.selectedIndex].value;
  anio = document.accion.usr_anio.value;

  if ( !ValidarFecha (dia, mes, anio) ){
     alert ("La fecha de nacimiento no es válida.");
     document.accion.usr_dia.focus();
     return;
  }

   // Tamaño  pregunta
  if ( !ValidarLongitud( document.accion.usr_pregunta.value, 3 ) ) {
     alert ("La pregunta debe tener mínimo tres (3) caracteres.");
     document.accion.usr_pregunta.focus();
     return;
  }

   // Correo con sentido
  if ( !ValidarCorreo( document.accion.usr_email.value ) ) {
     alert ("El correo no es válido");
     document.accion.usr_email.focus();
  }

  document.accion.submit();   
}

// -----------------------------------------------------
// Funcion:  ValidarDatos
// Uso:      Para la forma de registro
// Retorna:  Hace submit de la forma si todos los datos son válidos
//           false dlc.
// -----------------------------------------------------

function ValidarDatos() {
   var Control;
   var Dato;
   var dia, mes, anio;
   var cadenas = ["usr_nombre", "usr_apellido", "usr_email", "usr_alias",
                  "usr_password", "usr_password2", "usr_pregunta", "usr_respuesta" ];	
   var mensajeCadenas  = [ 
	"sus nombres",
 	"sus apellidos",
	"una dirección de correo electrónico",
        "una alias que lo identifique",
	"una clave",
	"su clave nuevamente",
	"una pregunta (esta se le hará cuando se le olvide su clave).",
	"la respuesta a la pregunta hecha" ];
   // Casos generales
   for ( i=0; i<8 ; i++ ) {
      Control = eval("document.usr_nuevo." + cadenas[i]);
      Dato = Control.value;
      if (CadenaVacia(Dato)) {
         alert ( "Por favor ingrese " + mensajeCadenas[i]);
 	 Control.focus();
	 return;
      }
   }

   // Debe haber al menos un telefono
   Control = document.usr_nuevo.usr_telefono_oficina;
   Dato = Control.value;
   Control1 = document.usr_nuevo.usr_telefono_casa;
   Dato1 = Control1.value;
                
   if (CadenaVacia(Dato) && CadenaVacia(Dato1)) {
      alert("Por favor ingrese al menos un teléfono.");
      Control.focus();
      return;
   }

   // Tamaño clave
  if ( !ValidarLongitud( document.usr_nuevo.usr_password.value, 3 ) ) {
     alert ("La clave debe tener mínimo tres (3) caracteres.");
     document.usr_nuevo.usr_password.focus();
     return;
  }
   
   // Tamaño alias
  if ( !ValidarLongitud( document.usr_nuevo.usr_alias.value, 3 ) ) {
     alert ("El alias debe tener mínimo tres (3) caracteres.");
     document.usr_nuevo.usr_alias.focus();
     return;
  }

   // Espacios, tildes, signos o eñes en el alias
  if ( !ValidarAlias( document.usr_nuevo.usr_alias.value ) ) {
     alert ("Elimine espacios,  vocales acentuadas y signos de su alias" );
     document.usr_nuevo.usr_alias.focus();
     return;
  }

   // Espacios, tildes, signos o eñes en la clave 
  if ( !ValidarAlias( document.usr_nuevo.usr_password.value ) ) {
     alert ("Elimine espacios,  vocales acentuadas y signos de su clave" );
     document.usr_nuevo.usr_password.focus();
     return;
  }

   // Clave y confirmacion iguales
  if ( document.usr_nuevo.usr_password.value != document.usr_nuevo.usr_password2.value ) {
     alert ("La confirmación de la clave es incorrecta.");
     document.usr_nuevo.usr_password2.focus();
     return;
  }

  // Validar sexo

  if ( document.usr_nuevo.usr_sexo.options[ document.usr_nuevo.usr_sexo.selectedIndex].value == 'N') {
     alert ("No ha seleccionado el sexo.");
     document.usr_nuevo.usr_sexo.focus();
     return;
  }

  // Validar fecha
  dec = document.usr_nuevo.usr_dec_anio.options[ document.usr_nuevo.usr_dec_anio.selectedIndex].value;
  uni = document.usr_nuevo.usr_uni_anio.options[ document.usr_nuevo.usr_uni_anio.selectedIndex].value;
  document.usr_nuevo.usr_anio.value = "19" + dec + uni;
  dia = document.usr_nuevo.usr_dia.options[ document.usr_nuevo.usr_dia.selectedIndex].value;
  mes = document.usr_nuevo.usr_mes.options[ document.usr_nuevo.usr_mes.selectedIndex].value;
  anio = document.usr_nuevo.usr_anio.value;

  if ( !ValidarFecha (dia, mes, anio) ){
     alert ("La fecha de nacimiento no es válida.");
     document.usr_nuevo.usr_dia.focus();
     return;
  }

   // Tamaño  pregunta
  if ( !ValidarLongitud( document.usr_nuevo.usr_pregunta.value, 3 ) ) {
     alert ("La pregunta debe tener mínimo tres (3) caracteres.");
     document.usr_nuevo.usr_pregunta.focus();
     return;
  }

   // Correo con sentido
  if ( !ValidarCorreo( document.usr_nuevo.usr_email.value ) ) {
     alert ("El correo no es válido");
     document.usr_nuevo.usr_email.focus();
     return;
  }

  // Debe seleccionar al menos un servicio
   if ( document.usr_nuevo.chequeado.value <= 0 ) {
      alert ("Debe suscribirse al menos a un servicio");
      return;
   }

  document.usr_nuevo.submit(); 
}
function abrir_privacidad()
{
        hola=window.open('http://www.eltiempo.com/privacidad/index.html','privacidad','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,menubar=no,width=550,height=450');
}

function abrir_copy()
{
        hola=window.open('http://www.eltiempo.com/privacidad/copyright.html','copyright','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,menubar=no,width=550,height=450');
}
