   function validate_login () {
      var l_email_entry     = document.theform.l_email.value;
      var l_password_entry  = document.theform.l_password.value;

      if ( ! validate_email ( l_email_entry, document.theform.l_email ) ) {
         return false;
      }

      if ( ! check_for_text ( l_password_entry ) ) {
         error_message ( document.theform.l_password,
                         "Please enter your password." );
         return false;
      }

      return true;
   }

   function validate_signup () {
      var s_email_entry     = document.theform2.s_email.value;
      var s_password_entry  = document.theform2.s_password.value;
      var s_password2_entry = document.theform2.s_password2.value;

      if ( ! validate_email ( s_email_entry, document.theform2.s_email ) ) {
         return false;
      }

      if ( ! check_for_text ( s_password_entry ) ) {
         error_message ( document.theform2.s_password,
                         "Please create a password." );
         return false;
      }

      if ( ! check_for_text ( s_password2_entry ) ) {
         error_message ( document.theform2.s_password2,
                         "Please confirm your password." );
         return false;
      }

      if ( s_password_entry.length < 5 ) {
         error_message ( document.theform2.s_password,
                         "The password must be at least 5 characters." );
         return false;
      }

      if ( s_password_entry.length > 20 ) {
         error_message ( document.theform2.s_password,
                         "The password must be no more than 20 characters." );
         return false;
      }

      if ( s_password_entry != s_password2_entry ) {
         error_message ( document.theform2.s_password,
                         "Passwords do not match." );
         return false;
      }

      return true;
   }

   function validate_email ( email_val, email_element ) {
      if ( ! check_for_text ( email_val ) ) {
         error_message ( email_element,
                         "Please enter your email address." );
         return false;
      }

      if ( ! check_email ( email_val ) ) {
         error_message ( email_element,
                         "Invalid email address." );
         return false;
      }

      return true;
   }

   function check_email ( email_value ) {
      var email_ats    = 0;
      var email_dots   = 0;
      var at_position  = 0;
      var dot_position = 0;
      var email_spaces = 0;
      var i;
 
      if ( email_value.length < 6 ) {
         return false;
      }

      for ( i = 0; i < email_value.length; i++ ) {
         if ( email_value.charAt (i) == "@" ) {
            email_ats++;
            at_position = i;
         }
         if ( email_value.charAt (i) == "." ) {
            email_dots++;
            dot_position = i;  // Will be set to last occurrence
         }
         if ( email_value.charAt (i) == " " ) {
            email_spaces++;
         }
      }

      if ( ( email_ats == 0 ) || ( email_ats > 1 ) ) {
         return false;
      }

      if ( email_dots == 0 ) {
         return false;
      }

      // Email must have characters after the @ sign:
      if ( ( email_value.charAt ( at_position + 1 ) == "" ) ||
           ( email_value.charAt ( at_position + 1 ) == " " ) ) {
         return false;
      }

      // Email must have characters after the dot:
      if ( ( email_value.charAt ( dot_position + 1 ) == "" ) ||
           ( email_value.charAt ( dot_position + 1 ) == " " ) ) {
         return false;
      }

      // Email must have characters before the @ sign:
      if ( ( email_value.charAt ( at_position - 1 ) == "" ) ||
           ( email_value.charAt ( at_position - 1 ) == " " ) ) {
         return false;
      }

      // Email must have characters before the dot:
      if ( ( email_value.charAt ( dot_position - 1 ) == "" ) ||
           ( email_value.charAt ( dot_position - 1 ) == " " ) ) {
         return false;
      }

      // Email must have dot after @ sign:
      if ( dot_position < at_position ) {
         return false;
      }

      if ( email_spaces > 0 ) {
         return false;
      }
 
      return true;
   }

   function check_for_text ( elem_value ) {
      var text_entry = 0;
      var i;

      for ( i = 0; i < elem_value.length; i++ ) {
         if ( elem_value.charAt (i) != " " ) {
            text_entry = 1;
         }
      }

      if ( text_entry == 0 ) {
         return false;
      }
      return true;
   }

   function error_message ( elem, text ) {
      window.alert ( text );
      elem.select ();
      elem.focus ();
   }
