// funcs.js;  top directory
//
// -------------------------------------------------------------------

function error_alert(msg, url, line) {
  s = 'javascript error in\n'
    + url + '\n' + 'on line number ' + line + '\n'
    + msg;

  alert(s);
}

window.onerror = error_alert;

// -------------------------------------------------------------------

function TopOfPage(url) {
  var eb1 = document.images.length;
  var image_over = USER_IMAGES + 'TopOfPageBlue_t.gif';
  var image_out  = USER_IMAGES + 'TopOfPage_t.gif';

  var top_of_page =
      '<a href="' + url + '"\n'
    + '    onmouseover=\n'
    + '      "document.images[' + eb1 + '].src = \'' + image_over + '\';"\n'
    + '    onmouseout=\n'
    + '      "document.images[' + eb1 + '].src = \'' + image_out + '\';">\n'
    + '    <img src="' + image_out + '" align=right\n'
    + '         width=80 height=15 border=0></a>\n';

  return top_of_page;
}

// -------------------------------------------------------------------

function DateLastModified() {
  timezoneOffset_hours = 0;      // EST on web server??
  timezoneOffset = timezoneOffset_hours*60*60*1000;
  datelastmod = new Date(Date.parse(document.lastModified) - timezoneOffset);
  datestr = datelastmod.toLocaleString();
  datev = datestr.split(" ");

  var date_last_modified = '<i>Last modified</i> : &nbsp;\n';
  if (datev.length == 5) {
    date_last_modified += (datev[0] + '&nbsp; ' + datev[1] + ' ' +
                           datev[2] + ', ' + datev[4] +
                           '&nbsp; &nbsp; ' + datev[3]);
  }
  else if (datev.length == 6) {
    date_last_modified += (datev[0] + '&nbsp; ' + datev[1] + ' ' +
                           datev[3] + ', ' + datev[5] +
                           '&nbsp; &nbsp; ' + datev[4]);
  }
  else {
    date_last_modified += datestr;
  }
  date_last_modified += '\n';

  return date_last_modified;
}

// -------------------------------------------------------------------

function WriteTopOfPage() {
  var url = document.URL;

  if ( arguments.length > 0 ) {
    if ( (arguments[0] + 'x') != 'x' ) {
      url = arguments[0];
    }
  }

  document.write(TopOfPage(url));
}

// -------------------------------------------------------------------

function WriteDateLastModified() {
  document.write(DateLastModified());
}

// -------------------------------------------------------------------

function Home_Header_Top() {

  var header_top_left =
      '   <a href="' + STEVENS_HOME + '"\n'
    + '   <img src="' + USER_IMAGE_STEVENS + '"\n'
    + '        alt="Stevens Inst of Tech" border=0></a><br>';

      '  <a href="' + MATH_HOME + '"\n'
    + '  <font size=+1 color=#000066>\n'
    + '  <b>Department of Mathematical Sciences</b></font></a>\n';

  var header_top_right =
      '  <a href="' + MATH_HOME + '">\n'
    + '  <img src="' + USER_IMAGE_MATH + '"\n'
    + '       alt="Dept of Math Sciences" align=bottom border=0></a><br>';

  var header_top =
      '<body bgcolor="f0f0f0"\n'
    + '      onLoad="if (self != top) top.location = self.location">\n\n'
    + '<table width=100% cellpadding=0 cellspacing=2>\n'
    + '<tr>\n'
    + '<td align=left  valign=bottom>\n' + header_top_left  + '</td>\n'
    + '<td align=right valign=center>\n' + header_top_right + '</td>\n'
    + '</tr>\n'
    + '</table>\n';

  return (header_top);
}

// -------------------------------------------------------------------

function Header_Top() {
  var header_top_left =
      '  <a href="' + MATH_HOME + '"\n'
    + '  <font size=+1 color=#000066>\n'
    + '  <b>Department of Mathematical Sciences</b></font></a>\n';

  var header_top_right =
      '  <a href="' + USER_HOME + '"\n'
    + '  <font size=+1 color=#000066>\n'
    + '  <b>P. Miller</b></font></a>\n';

  var header_top =
      '<body bgcolor="f0f0f0">\n\n'
    + '<table width=100% cellpadding=0 cellspacing=2>\n'
    + '<tr>\n'
    + '<td align=left  valign=bottom>\n' + header_top_left  + '</td>\n'
    + '<td align=right valign=center>\n' + header_top_right + '</td>\n'
    + '</tr>\n'
    + '</table>\n';

  return (header_top);
}

// -------------------------------------------------------------------

function Header_Title(page_title) {
  var j = 0;
  var k = 0;
  var page_no = -1;
  var spacer = '&nbsp; | &nbsp;';
  tdata = new Array(20);

  for ( j=0, k=0; j<NPAGES; j++ ) {
    if ( page_title != TITLE[j] ) {
      tdata[k] = 
          '  <a class=mlink href="' + FILEN[j] + '">'
        + MENU[j] + '</a>\n';
      k++;
    }
  }

  var MenuLen = k;

  var title_tdata =
      '<td width=100% valign=bottom>\n'
    + '  <font color=#000066 size=+0><b>' + page_title + '</b><br>\n'
    + '</td>\n';

  var menu_tdata =
      '<td bgcolor=#f0f0f0 align=right valign=bottom nowrap>'
    + '<font size=-1><b>\n';

  for ( k=MenuLen-1; k>=0; k-- ) {
    if ( k == 0 ) spacer = '&nbsp;';
    menu_tdata += tdata[k] + spacer;
  }

  menu_tdata += '</b></font></td>\n';

  var header_title =
      '<table width=100% cellpadding=0 cellspacing=2>\n'
    + '<tr>\n' + title_tdata + menu_tdata + '</tr>\n'
    + '<tr>\n'
    + '<td colspan=2 width=100% valign=top>\n'
    + '<img src="' + USER_IMAGE_BAR + '" width=100% height=2\n'
    + '     align=top border=0>\n'
    + '</td>\n'
    + '</tr>\n'
    + '</table>\n';

  return header_title;
}

// -------------------------------------------------------------------

function Trailer_Top() {
  var top_url = '';

  if ( arguments.length > 0 ) {
    var url = document.URL;
    if ( (arguments[0] + 'x') != 'x' ) {
      url = arguments[0];
    }
    top_url = TopOfPage(url);
  }

  var trailer_top =
      '<table width=100% cellpadding=0 cellspacing=2>\n'
    + '<tr>\n'
    + '<td align=left class=trailer><font size=-2>&nbsp;\n'
    + '  ' + DateLastModified() + '\n' + '</td>\n'
    + '<td align=right class=trailer><font size=-2>\n'
    + '  ' + top_url + '\n' + '</td>\n'
    + '</tr>\n'
    + '<tr>\n'
    + '<td colspan=2 width=100% valign=top>\n'
    + '  <img src="' + USER_IMAGE_BAR + '" width=100% height=2\n'
    + '       align=top border=0>\n'
    + '</td>\n'
    + '</tr>\n'
    + '</table>\n';

  return trailer_top;
}

// -------------------------------------------------------------------

function Trailer_Bottom() {
  var trailer_bottom =
      '<table width=100% cellpadding=0 cellspacing=2>\n'
    + '<tr>\n'
    + '<td align=center valign=top><font color=#000066 size=-2>\n'
    + '  <a href="' + STEVENS_HOME + '" class=slink>\n'
    + '     Stevens Inst of Technology</a>\n'
    + '  &nbsp;&nbsp;|&nbsp;&nbsp;\n'
    + '  <a href="' + ENGR_HOME + '" class=slink>\n'
    + '     School of Engineering &amp; Science</a>\n'
    + '  &nbsp;&nbsp;|&nbsp;&nbsp;\n'
    + '  <a href="' + MATH_HOME + '" class=slink>\n'
    + '     Dept of Math Sciences</a>\n'
    + '  &nbsp;&nbsp;|&nbsp;&nbsp;\n'
    + '  <a href="' + USER_HOME + '" class=slink>\n'
    + '     P. Miller</a>\n'
    + '</td>\n'
    + '</tr>\n'
    + '</table>\n';

  return trailer_bottom;
}

// -------------------------------------------------------------------

function Header_Write(page_title) {
  if ( page_title == 'Home' ) {
    document.write( Home_Header_Top(), '\n<br>\n\n');
  }
  else {
    document.write( Header_Top(), '\n<br>\n\n',
                    Header_Title(page_title)    );
  }
}

// -------------------------------------------------------------------

function Trailer_Write() {
  if ( arguments.length > 0 ) {
    var first_line = Trailer_Top(arguments[0]);
  }
  else {
    var first_line = Trailer_Top();
  }
  document.write( first_line, Trailer_Bottom() );
}

// -------------------------------------------------------------------

function RedirectPage(new_url) {
  var REDIRECT_HOME  = 'http://www.stevens.edu/ses/math/';
  setTimeout(
    'window.location.replace("' + REDIRECT_HOME + new_url + '");',
    1000 );
}

// -------------------------------------------------------------------

function WriteHref(cname, root, fname, label) {
  document.write('<a class="' + cname + '" href="' + root + fname + '">'
                 + label + '</a>\n');  
}

// -------------------------------------------------------------------
