   function validate_form () {
      var firstname_entry = document.theform.firstname.value;
      var lastname_entry  = document.theform.lastname.value;
      var email_entry     = document.theform.email.value;

      if ( ! check_for_text ( firstname_entry ) ) {
         error_message ( document.theform.firstname,
                         "Please enter your first name." );
         return false;
      }

      if ( ! check_for_text ( lastname_entry ) ) {
         error_message ( document.theform.lastname,
                         "Please enter your last name." );
         return false;
      }

      if ( ! validate_email () ) {
         return false;
      }
   }

   function validate_email () {
      var email_entry  = document.theform.email.value;

      if ( ! check_for_text ( email_entry ) ) {
         error_message ( document.theform.email,
                         "Please enter your email address." );
         return false;
      }

      if ( ! check_email ( email_entry ) ) {
         error_message ( document.theform.email,
                         "Invalid email address." );
         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 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 error_message ( elem, text ) {
      window.alert ( text );
      elem.select ();
      elem.focus ();
   }