   var debug1_b = false;

   function initialize_page() {
      f = document.forms.input_form;

      // If input_check_f set, this page has been reloaded so could get tree
      // uploaded from file.  Do checks and if ok submit page.

      var input_check_f = f.input_check_f.value;
      if ( input_check_f == 1 ) {
         f.input_check_f.value = "";
         if ( debug1_b ) {
            alert( "submitform( 1 )" );
         }
         submitform( 1 );
      } else {
      
         // Set focus to input textarea.

         f.data.focus();
      }
   }


   function help ( helpURL ) {
      helpWindow = window.open( helpURL, "helpwindow",
                                "width=500, height=500, scrollbars=yes, "
                                + "menubar=yes, resizable=yes" );
      helpWindow.focus();
   }


   // Reload this page, with show_advanced_f set.

   function open_advanced() {
      f = document.forms.input_form;
      f.show_advanced_f.value = 1;
      f.action = "/treenotator/index.php"
      f.submit()
   }
   

   // Reload this page, with show_advanced_f unset.

   function close_advanced() {
      f = document.forms.input_form;
      f.show_advanced_f.value = "";
      f.action = "/treenotator/index.php"
      f.submit()
   }
   

   function clear_data_input() {
      f = document.forms.input_form;
      f.data.value = "";
      f.data.focus();
   }


   var errorm;
   var n_headers;
   seq_chars = new Array();
   seq_chars[0] = "";

   function submitform( data_moved_to_textarea_f ) {
      f = document.forms.input_form;
      var data = f.data.value;
      var email = f.email.value;
      var data_file = f.data_file.value;

      var errorm = "";
      var cancel_b = false;
    
      // Tree data and email address.

      if ( is_blank( data ) && is_blank( data_file ) ) {
         errorm += "Please enter Newick-format data or file name\n";
      } else if ( ! is_blank( data ) && ! is_blank( data_file ) ) {
         errorm += "Entered both data and file to upload.\n"
                   + "Please enter one or the other, not both.\n";
      }
      if ( email == "" ) {
         errorm += "Please enter email address\n";
      } else {
         errorm += check_email_address( 0 );
      }

      // If tree data entered, check balanced parens.

      if ( errorm == "" && ! is_blank( data ) ) {
         var i_paren = 0;
         var any_paren_f = false;
         for ( var i=0; i < data.length; i++ ) {
            var c = data.charAt(i);
            if ( c == "(" ) {
               i_paren++;
               any_paren_f = true;
            } else if ( c == ")" ) {
               i_paren--;
            }
         }
         if ( i_paren != 0 ) {
            errorm += "Unbalanced parentheses in tree data.  Please correct.\n";
         }
         if ( ! any_paren_f ) {
            errorm += "No parentheses in tree data.  Please correct.\n";
         }
      }
      if ( errorm != "" ) {
         if( data_moved_to_textarea_f == 1 ) {
            errorm += "\nNote: tree data from uploaded file has been "
                      + "placed in text box.\n";
         }
         alert( errorm );
      } else {
         if( ! cancel_b ) {

            // If data file name entered, reload this page with flag set to
            // do checks and submit to weblookup2 if ok.

            if ( ! is_blank( data_file ) ) {
               f.input_check_f.value = 1;
               f.action = "/treenotator/index.php"
               f.submit();
            } else {
               if ( debug1_b ) {
                  alert( "submit" );
               } else {
                  f.submit();
               }
            }
         }
      }
   }


   function check_email_address( alert_f ) {
      f = document.forms.input_form;
      var msg = "";
      var email = f.email.value;
      var emsg = is_valid_email_address( email );
      if ( emsg != "" ) {
         msg = "Email address: " + emsg + "\n";
      }
      if ( alert_f == 1 ) {
         if ( msg != "" ) {
            alert( msg );
            setTimeout( "document.forms.input_form.email.focus()", 
                        100 );
         }
      } else {
         return msg;
      }
   }


   function is_valid_email_address( email ) {
      var emsg = "";
      if ( email != "" ) {

         // Strip leading and trailing blanks.

         var n = email.length;
         for ( var i=0; i<n; i++ ) {
            if ( email.charAt(i) != " " ) {
               i_beg = i;
               break;
            }
         }
         for ( var i=n-1; i>0; i-- ) {
            if ( email.charAt(i) != " " ) {
               i_end = i;
               break;
            }
         }
         email = email.slice( i_beg, i_end+1 )
         if ( email.indexOf( " " ) != -1 ) {
            emsg += "Blanks not allowed. ";
         }
         var i_at = email.indexOf("@");
         if ( i_at < 0 ) {
            emsg += "\"@\" sign missing. "
         } else if ( i_at == 0 || i_at == email.length-1 ) {
            emsg += "\"@\" sign misplaced. "
         } else {
            var domain = email.slice( i_at + 1 );
            var dot_at = domain.indexOf( "." )
            if ( dot_at < 0 ) {
               emsg += "\".\" (dot) missing. "
            } else if ( dot_at == 0 || dot_at == domain.length-1 ) {
               emsg += "\".\" (dot) misplaced. "
            }
         }
      }
      return emsg;
   }


   function is_blank( val ) {
      if ( val == null ) { 
         return true; 
      } else {
         for (var i=0; i < val.length; i++) {
            if (    (val.charAt(i) != ' ') 
                 && (val.charAt(i) != "\t") 
                 && (val.charAt(i) != "\n") ) { 
               return false; 
            }
         }
         return true;
      }
   }


   function resetform() {
      f = document.forms.form_for_reset;
      f.submit();
   }
