/*
 *  File:  mailForm3.js
 *  
 *  Note:  This script has been deprecated (use mailForm.js instead)
 *
 *  Send e-mail to selected addresses
 *
 *  Usage:
 *  
 *    <script type="text/javascript"
 *            src="http://www.bgsu.edu/scripts/mailForm3.js">
 *    </script>
 *
 *  Insert the <script> element into the <body> of your document.
 *
 *  Constructor:
 *      MailForm()                       Create mail form window
 *
 *  Methods:
 *      open()                           Open mail form window
 *      close()                          Close mail form window
 *
 *      addRecipients( name1, email1,    Add multiple recipients
 *                     name2, email2,     
 *                     ... )              
 *      addRecipient( name, email )      Add single recipient
 *      addGroups( group1, group2, ... ) Add multiple groups
 *      addGroup( group )                Add single group
 *      setGroupLineDisplayed( boolean ) Turn group line on/off
 *      setMailFromAddress( email )      Set hard-coded "From" address
 *      setMailFromDefaultText( text )   Set "From" default text
 *
 *  Note:  A "boolean" value is either true or false
 *
 *  Example 1:  mailForm3Test1.html
 *
 *    <!-- a simple mailform with multiple recipients -->
 *    <script type="text/javascript"
 *            src="http://www.bgsu.edu/scripts/mailForm3.js">
 *    </script>
 *    <script type="text/javascript">
 *      var mailForm = new MailForm();
 *      mailForm.addRecipients(
 *        "Admissions Office", "admissions@bgnet.bgsu.edu",
 *        "Human Resources", "ohr@bgnet.bgsu.edu",
 *        "Registration and Records", "registrar@bgnet.bgsu.edu",
 *        "Tech Support Center", "tsc@bgnet.bgsu.edu",
 *        "Webmaster", "webmaster@bgnet.bgsu.edu" );           
 *    </script>
 *    <!-- Put this link in the <body> of your document -->
 *    <a href="javascript:mailForm.open()">Contact us!</a>
 *
 *  Example 2:  mailForm3Test2.html
 *
 *    <!-- a single recipient renders differently -->
 *    <script type="text/javascript"
 *            src="http://www.bgsu.edu/scripts/mailForm3.js">
 *    </script>
 *    <script type="text/javascript">
 *      var mailForm = new MailForm();
 *      mailForm.addRecipient( 
 *        "Webmaster", "webmaster@bgnet.bgsu.edu" );           
 *    </script>
 *    <!-- Put this form in the <body> of your document -->
 *    <form>
 *      <input type="button" value="Contact the Webmaster!" 
 *             onclick="mailForm.open()">
 *    </form>
 *
 *  Note:  According to the HTML 4.0 specification, the <form> tag is 
 *         not needed in the above code, but a lone <input> tag will 
 *         not render in Netscape Navigator 4 without it.
 *
 *  Example 3:  mailForm3Test3.html
 *
 *    <!-- groups are configurable -->
 *    <script type="text/javascript"
 *            src="http://www.bgsu.edu/scripts/mailForm3.js">
 *    </script>
 *    <script type="text/javascript">
 *      var mailForm = new MailForm();
 *      mailForm.addRecipient(
 *        "Admissions Office", "admissions@bgnet.bgsu.edu" );
 *      mailForm.addRecipient(
 *        "Human Resources", "ohr@bgnet.bgsu.edu" );
 *      mailForm.addRecipient(
 *        "Registration and Records", "registrar@bgnet.bgsu.edu" );
 *      mailForm.addRecipient(
 *        "Tech Support Center", "tsc@bgnet.bgsu.edu" );
 *      mailForm.addRecipient(
 *        "Webmaster", "webmaster@bgnet.bgsu.edu" );
 *      mailForm.addGroup( "Prospective Student" );
 *      mailForm.addGroups( "Parent", "Guest" );
 *    </script>
 *    <!-- Put this link in the <body> of your document -->
 *    <a href="javascript:mailForm.open()">Contact us!</a>
 *
 *  Example 4:  mailForm3Test4.html
 *
 *    <!-- groups may be eliminated altogether -->
 *    <script type="text/javascript"
 *            src="http://www.bgsu.edu/scripts/mailForm3.js">
 *    </script>
 *    <script type="text/javascript">
 *      var mailForm = new MailForm();
 *      mailForm.addRecipient(
 *        "Tech Support Center", "tsc@bgnet.bgsu.edu" );           
 *      mailForm.setGroupLineDisplayed( false );
 *    </script>
 *    <!-- Put this form in the <body> of your document -->
 *    <form>
 *      <input type="button" value="Contact the TSC!" 
 *             onclick="mailForm.open()">
 *    </form>
 *
 *  Example 5:  mailForm3Test5.html
 *
 *    <!-- a single group will be hidden from the user -->
 *    <script type="text/javascript"
 *            src="http://www.bgsu.edu/scripts/mailForm3.js">
 *    </script>
 *    <script type="text/javascript">
 *      var mailForm = new MailForm();
 *      mailForm.addRecipients(
 *        "Admissions Office", "admissions@bgnet.bgsu.edu",
 *        "Human Resources", "ohr@bgnet.bgsu.edu",
 *        "Registration and Records", "registrar@bgnet.bgsu.edu",
 *        "Tech Support Center", "tsc@bgnet.bgsu.edu",
 *        "Webmaster", "webmaster@bgnet.bgsu.edu" );           
 *      // a single group will not be shown on the form:
 *      mailForm.addGroup( "student" );
 *    </script>
 *    <!-- Put this link in the <body> of your document -->
 *    <a href="javascript:mailForm.open()">Contact us!</a>
 *
 *  Example 6:  mailForm3Test6.html
 *
 *    <!-- the sender may be fixed, rather than input -->
 *    <script type="text/javascript"
 *            src="http://www.bgsu.edu/scripts/mailForm3.js">
 *    </script>
 *    <script type="text/javascript">
 *      var mailForm = new MailForm();
 *      mailForm.addRecipient(
 *        "Admissions Office", "admissions@bgnet.bgsu.edu" );
 *      // sender could be used in an authenticated environment:
 *      mailForm.setMailFromAddress( "someone@somewhere.com" );
 *    </script>
 *    <!-- Put this form in the <body> of your document -->
 *    <form>
 *      <input type="button" value="Contact Admissions!" 
 *             onclick="mailForm.open()">
 *    </form>
 *
 *  Example 7:  mailForm3Test7.html
 *
 *    <!-- the default text in the mailFrom field may be modified -->
 *    <script type="text/javascript"
 *            src="http://www.bgsu.edu/scripts/mailForm3.js">
 *    </script>
 *    <script type="text/javascript">
 *      var mailForm = new MailForm();
 *      mailForm.addRecipients(
 *        "Admissions Office", "admissions@bgnet.bgsu.edu",
 *        "Human Resources", "ohr@bgnet.bgsu.edu",
 *        "Registration and Records", "registrar@bgnet.bgsu.edu",
 *        "Tech Support Center", "tsc@bgnet.bgsu.edu",
 *        "Webmaster", "webmaster@bgnet.bgsu.edu" );           
 *      // Use with care.  For example, the default text should not
 *      // take the form of an email address (someone@somewhere)
 *      // since this might confuse the user.
 *      mailForm.setMailFromDefaultText( "Your email here" );  
 *    </script>
 *    <!-- Put this link in the <body> of your document -->
 *    <a href="javascript:mailForm.open()">Contact us!</a>
 *
 */

// This script uses a PopUpWindow object:
document.writeln( '<script type="text/javascript"' );
document.writeln( '        src="http://www.bgsu.edu/scripts/popUpWindow.js">' );
document.writeln( '</script>' );

// This script uses isEmail() from validation.js: 
document.writeln( '<script type="text/javascript"' );
document.writeln( '        src="http://intranet.bgsu.edu/scripts/validation.js">' );
document.writeln( '</script>' );


// Recipient object constructor:
function Recipient( name, email ) {
  this.name = name;
  this.email = email;
}


// MailForm object constructor:
function MailForm() {
  this.recipients = new Array();
  this.groups = new Array();
  this.mailFromAddress = "";
  this.groupLineDisplayed = true;
  this.mailFromDefaultText = "Enter your email address"; 
  this.mailFormWin = null;
}


// Necessary for older browsers (NN3) to create prototype property:
new MailForm();

// PRIVATE methods:

// PRIVATE: Add default groups:
function MailForm_private_setGroupsToDefaults() {
  this.addGroups(
    'BGSU Student',
    'BGSU Faculty',
    'BGSU Staff',
    'BGSU Alumni',
    'Prospective Student',
    'Parent',
    'Guest' );
}
MailForm.prototype._setGroupsToDefaults 
  = MailForm_private_setGroupsToDefaults;


// PRIVATE: Write group options into mail form:
function MailForm_private_writeGroupOptions() {
  for (var i = 0; i < this.groups.length; ++i) 
    this.mailFormWin.document.writeln( '                 <option>' 
      + this.groups[i] + '</option>' );
}
MailForm.prototype._writeGroupOptions 
  = MailForm_private_writeGroupOptions;


// PRIVATE: Write group selection line:
function MailForm_private_writeGroupLine() {
  var doc = this.mailFormWin.document;
    
  if ( this.groupLineDisplayed == true ) {
    if ( this.groups.length == 0 ) 
      this._setGroupsToDefaults();
    if ( this.groups.length > 1 ) {
      // this._writeLines( doc,
      doc.writeln( '            <select name="group" size="1">' );
      doc.writeln( '              <option selected value="">Identify yourself:</option>' );
      this._writeGroupOptions();
      doc.writeln( '            </select>' );
    } else 
      doc.writeln( '            <input type="hidden" name="group" value="' + this.groups[0] + '">' );
  } else { 
    // We still allow a single undisplayed group in case 
    // the user thought the line had to be made invisible 
    // for the single group case
    if ( this.groups[0] != null && this.groups.length == 0 ) 
      doc.writeln( '            <input type="hidden" name="group" value="' + this.groups[0] + '">' );
    else 
      doc.writeln( '            <input type="hidden" name="group" value="">' );
  }
}
MailForm.prototype._writeGroupLine = MailForm_private_writeGroupLine;


// PRIVATE: Write "From" line:
function MailForm_private_writeFromLine() {
  var email = "", doc = this.mailFormWin.document;
  
  if (this.mailFromAddress == "") {
    doc.writeln( '          <td><input type="text" name="mailFrom" value = "' 
      + this.mailFromDefaultText + '" size="24" tabindex="2"></td>' );
  } else {
    doc.write( '          <td><input type="hidden" name="mailFrom" value="' );
    
    // Verify email address
    if ( isEmail( this.mailFromAddress ) == "" )        
      doc.write( '">INVALID EMAIL ADDRESS' );
    else
      doc.write( this.mailFromAddress + '">' + this.mailFromAddress );
    doc.writeln( '</td>' );
  }
}
MailForm.prototype._writeFromLine = MailForm_private_writeFromLine;


// PRIVATE: Write the <option> elements into the mail form window:
function MailForm_private_writeRecipientOptions() {
  var name, email, doc = this.mailFormWin.document;
  
  doc.writeln( '              <option selected value = "">Choose a recipient</option>' );
  for ( var i = 0; i < this.recipients.length; ++i ) {
    name = this.recipients[i].name;
    email = this.recipients[i].email;
    doc.writeln( '              <option value="' + email + '">' 
      + name + '</option>' );
  }
}
MailForm.prototype._writeRecipientOptions
  = MailForm_private_writeRecipientOptions;


// PRIVATE: Write "To:" selection component into the mail form window:
function MailForm_private_writeMailToLine() {
  var name = "", email = "";
  var doc = this.mailFormWin.document;
  if ( this.recipients.length > 1 ) {
    doc.writeln( '            <select name="mailTo" size="1" tabindex="1">' );
    this._writeRecipientOptions();
    doc.writeln( '            </select>' );    
  } else if ( this.recipients.length > 0 ) {
    name = this.recipients[0].name;
    email = this.recipients[0].email;
    doc.writeln( '            <input type="hidden" name="mailTo" value="' + email + '">' + name );
  } else 
    doc.writeln( '            <input type="hidden" name="mailTo" value="">NO ADDRESSES PROVIDED' );
}
MailForm.prototype._writeMailToLine 
  = MailForm_private_writeMailToLine;

// PUBLIC methods:

// Set hardcoded "From" address:
function MailForm_setMailFromAddress( address ) {
  this.mailFromAddress = address;
}
MailForm.prototype.setMailFromAddress = MailForm_setMailFromAddress;


// Set "From" line default text:
function MailForm_setMailFromDefaultText( text ) {
  this.mailFromDefaultText = text;
}
MailForm.prototype.setMailFromDefaultText 
  = MailForm_setMailFromDefaultText;


// Add multiple recipients:
function MailForm_addRecipients() {
  var args = MailForm_addRecipients.arguments;

  // is args.length even?
  if ( args.length & 0x1 )
    alert( 'MailForm.addRecipients:\n\n'
      + 'Number of arguments is not even.\n'
      + 'There must be an even number of arguments in '
      + 'name, email address pairs.\n\n' );
    
  for ( var i = 0; i < args.length; i += 2 ) {
    if ( args[i+1] != null  &&  isEmail( args[i+1] ) == "" )
      alert( 'MailForm.addRecipients:\n\n'
        + '"' + args[i+1] + '" is not a valid email address.\n' );

    this.recipients[this.recipients.length] 
      = new Recipient( args[i], args[i+1] );
  }
}
MailForm.prototype.addRecipients = MailForm_addRecipients;


// Add a single recipient:
MailForm.prototype.addRecipient = MailForm_addRecipients;


// Add multiple groups:
function MailForm_addGroups() {
  var args = MailForm_addGroups.arguments;

  for ( var i = 0; i < args.length; ++i ) 
    this.groups[this.groups.length] = args[i];
}
MailForm.prototype.addGroups = MailForm_addGroups;


// Add a single group:
MailForm.prototype.addGroup = MailForm_addGroups;


// Turn group line on or off:
function MailForm_setGroupLineDisplayed( state ) {
  this.groupLineDisplayed = state;
}
MailForm.prototype.setGroupLineDisplayed 
  = MailForm_setGroupLineDisplayed;

  
// Display MailForm window:
function MailForm_open() {
  var doc = null;
  
  this.mailFormWin = new PopUpWindow();

  this.mailFormWin.setWidth( 465 );
  this.mailFormWin.setHeight( 375 );
  this.mailFormWin.setScrollbars( true );
  this.mailFormWin.setResizable( true );
  this.mailFormWin.open();
 
  doc = this.mailFormWin.document;

  doc.open();
  doc.writeln( '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">' );
  doc.writeln( '' );
  doc.writeln( '<html>' );
  doc.writeln( '' );
  doc.writeln( '  <head>' );
  doc.writeln( '    <title>BGSU Mail Form</title>' );
  doc.writeln( '    <script type="text/javascript"' );
  doc.writeln( '            src="http://www.bgsu.edu/scripts/checkForm.js">' );
  doc.writeln( '    </script>' );
  doc.writeln( '    <script type="text/javascript">' );
  doc.writeln( '      // Override default behavior of checkSelectOne():' );
  doc.writeln( '      var checkSelectOne = checkSelectSpecial;' );
  doc.writeln( '    </script>' );
  doc.writeln( '    <script type="text/javascript">' );
  doc.writeln( '      function initialize() {' );
  doc.writeln( '        self.focus();' );
  doc.writeln( '        var form = self.document.mailForm;' );
  doc.writeln( '        var selectObj = form.mailTo;' );
  doc.writeln( '        // if there are no options, must be <= 1 recipients ' );
  doc.writeln( '        if (selectObj.options == null) {' );
  doc.writeln( '          // move focus to subject if mailFrom hardcoded' );
  doc.writeln( '          if (form.mailFrom != null) {' );
  doc.writeln( '            form.mailFrom.focus();' );
  doc.writeln( '          } else {' );
  doc.writeln( '            form.mailSubject.focus();' );
  doc.writeln( '          }' );
  doc.writeln( '        } else {' );
  doc.writeln( '          selectObj.focus();' );
  doc.writeln( '        }' );
  doc.writeln( '      }' );
  doc.writeln( '      function closeThisWindow() {' );
  doc.writeln( '        self.close();' );
  doc.writeln( '      }' );
  doc.writeln( '    </script>' );
  doc.writeln( '  </head>' );
  doc.writeln( '  ' );
  doc.writeln( '  <body onload="initialize()">' );
  doc.writeln( '    <form name="mailForm" method="post" onsubmit="return checkForm( this )"' );
  doc.writeln( '          action="http://webapps.bgsu.edu/cgi-bin/bgsuform/submit3">' );
  doc.writeln( '      <table>' );
  doc.writeln( '        <caption><big><strong>BGSU Mail Form</strong></big></caption>' );
  doc.writeln( '        <tr>' );
  doc.writeln( '          <td align="right">To:</td>' );
  doc.writeln( '          <td>' );
  this._writeMailToLine();
  doc.writeln( '          </td>' );
  doc.writeln( '          <td  align="center">' );
  doc.writeln( '            <input type="submit" value="Send">' );
  doc.writeln( '          </td>' );
  doc.writeln( '        </tr>' );
  doc.writeln( '        <tr>' );
  doc.writeln( '          <td align="right">From:</td>' );
  this._writeFromLine();
  doc.writeln( '          <td  align="center">' );
  doc.writeln( '            <input type="reset" value="Cancel" onclick="closeThisWindow()">' );
  doc.writeln( '          </td>' );
  doc.writeln( '        </tr>' );
  doc.writeln( '        <tr>' );
  doc.writeln( '          <td align="right">Subject:</td>' );
  doc.writeln( '          <td><input type="text" name="mailSubject" size="24" tabindex="3"></td>' );
  doc.writeln( '          <td align="center">' );
  this._writeGroupLine();
  doc.writeln( '          </td>' );
  doc.writeln( '        </tr>' );
  doc.writeln( '        <tr>' );
  doc.writeln( '          <td align="center" colspan="3">' );
  doc.writeln( '            <textarea rows="10" cols="50" name="message" tabindex="4"></textarea>' );
  doc.writeln( '          </td>' );
  doc.writeln( '        </tr>' );
  doc.writeln( '        <tr>' );
  doc.writeln( '          <td align="center" colspan="3">' );
  doc.writeln( '            <small>' );
  doc.writeln( '              Bowling Green State University,' );
  doc.writeln( '              Bowling Green, OH 43403 USA<br>' );
  doc.writeln( '              Switchboard: 1-419-372-2531' );
  doc.writeln( '            </small>' );
  doc.writeln( '          </td>' );
  doc.writeln( '        </tr>' );
  doc.writeln( '      </table>' );
  doc.writeln( '    </form>' );
  doc.writeln( '  </body>' );
  doc.writeln( '  ' );
  doc.writeln( '</html>' );
  doc.close();
}
MailForm.prototype.open = MailForm_open;


// Close MailForm window:
function MailForm_close() {
  this.mailFormWin.close();
}
MailForm.prototype.close = MailForm_close;