var isMinIE5_5 = (isMinIE5 && navigator.appVersion.indexOf("5.5") >= 0) ? 1 : 0;

var navBars = new Array();


function NavBarMenuItem(text, link) {

  this.text = text;

  this.link = link;
}

// NavBarMenu constructor.

function NavBarMenu(hdrWidth, menuWidth) {

  this.hdrWidth  = hdrWidth;

  this.width     = menuWidth;

  this.height    = 0;

  this.items = new Array();

  this.addItem = navBarMenuAddItem;
}

// NavBarMenu methods.

function navBarMenuAddItem(item) {

  this.items[this.items.length] = item;
}

// NavBar constructor.

function NavBar(width) {

  this.x = 0;

  this.y = 0;

  this.width  = width;

  this.height = 0;

  this.align    = "left";

  this.minWidth = 0;

  this.inverted = false;

  this.menus = new Array();

  this.created = false;

  // Set default sizes.

  this.border    = 1;

  this.padding   = 4;

  this.separator = 1;

  // Set default colors.

  this.borderColor  = "#000000";

  this.hdrFgColor   = "#000000";

  this.hdrBgColor   = "#999999";

  this.hdrHiFgColor = "#ffffff";

  this.hdrHiBgColor = "#666666";

  this.itmFgColor   = "#000000";

  this.itmBgColor   = "#cccccc";

  this.itmHiFgColor = "#ffffff";

  this.itmHiBgColor = "#000080";

  // Set default fonts.

  this.hdrFontFamily = "Arial,Helvetica,sans-serif";

  this.hdrFontStyle  = "plain";

  this.hdrFontWeight = "bold";

  this.hdrFontSize   = "10pt";

  this.itmFontFamily = "Arial,Helvetica,sans-serif";

  this.itmFontStyle  = "plain";

  this.itmFontWeight = "normal";

  this.itmFontSize   = "8pt";

  // Define methods.

  this.setSizes    = navBarSetSizes;

  this.setColors   = navBarSetColors;

  this.setFonts    = navBarSetFonts;

  this.addMenu     = navBarAddMenu;

  this.create      = navBarCreate;

  this.hide        = navBarHide;

  this.show        = navBarShow;

  this.moveTo      = navBarMoveTo;

  this.moveBy      = navBarMoveBy;

  this.getzIndex   = navBarGetzIndex;

  this.setzIndex   = navBarSetzIndex;

  this.getWidth    = navBarGetWidth;

  this.getMinWidth = navBarGetMinWidth;

  this.getAlign    = navBarGetAlign;

  this.setAlign    = navBarSetAlign;

  this.resize      = navBarResize;

  this.invert      = navBarInvert;

  this.isInverted  = navBarIsInverted;

  // Add to the list.

  this.index = navBars.length;

  navBars[this.index] = this;
}

// NavBar methods.

function navBarSetSizes(border, padding, separator) {

  if (!this.created) {

    this.border = border;

    this.padding = padding;

    this.separator = separator;
  }
}


function navBarSetColors(bdColor,

                         hdrFgColor, hdrBgColor, hdrHiFgColor, hdrHiBgColor,

                         itmFgColor, itmBgColor, itmHiFgColor, itmHiBgColor) {

  if (!this.created) {

    this.borderColor  = bdColor;

    this.hdrFgColor   = hdrFgColor;

    this.hdrBgColor   = hdrBgColor;

    this.hdrHiFgColor = hdrHiFgColor;

    this.hdrHiBgColor = hdrHiBgColor;

    this.itmFgColor   = itmFgColor;

    this.itmBgColor   = itmBgColor;

    this.itmHiFgColor = itmHiFgColor;

    this.itmHiBgColor = itmHiBgColor;
  }
}


function navBarSetFonts(hdrFamily, hdrStyle, hdrWeight, hdrSize, itmFamily, itmStyle, itmWeight, itmSize) {

  if (!this.created) {

    this.hdrFontFamily = hdrFamily;

    this.hdrFontStyle  = hdrStyle;

    this.hdrFontWeight = hdrWeight;

    this.hdrFontSize   = hdrSize;

    this.itmFontFamily = itmFamily;

    this.itmFontStyle  = itmStyle;

    this.itmFontWeight = itmWeight;

    this.itmFontSize   = itmSize;
  }
}



function navBarAddMenu(menu) {

  if (!this.created)

    this.menus[this.menus.length] = menu;
}


function navBarCreate() {

  var str;

  var i, j;

  var norm, high, end;

  var width, height;

  var x, y;

  var scrX, scrY;

  if (this.created || (!isMinNS4 && !isMinIE4))

    return;

  // Build HTML for filler and header layers.

  str = "";

  // For IE4, need to scroll to end of page before inserting HTML.

  if (isMinIE4 && !isMinIE5) {

    scrX = getPageScrollX();

    scrY = getPageScrollY();

    window.scrollTo(getPageWidth(), getPageHeight());
  }

  if (isMinNS4)

    str += '<layer name="navBar' + this.index + '_filler"></layer>\n'

        +  '<layer name="navBar' + this.index + '_hdrsBase">\n';

  if (isMinIE4)

    str += '<div id="navBar' + this.index + '_filler"'

        +  ' style="position:absolute;">'

        +  '</div>\n'

        +  '<div id="navBar' + this.index + '_hdrsBase"'

        +  ' style="position:absolute;">\n';

  // Build HTML for the headers.

  for (i = 0; i < this.menus.length; i++) {

    norm = '<table border=0 cellpadding=' + this.padding

         + ' cellspacing=0'

         + (this.menus[i].hdrWidth > 0 ? ' width=' + this.menus[i].hdrWidth : '')

         + ((isMinIE4 && !isMinIE5) ? ' id="navBar' + this.index + '_tbl' + i + '"': '')

         + '><tr><td'

         + (this.menus[i].hdrWidth == 0 ? ' nowrap=1' + this.menus[i].hdrWidth : '')

         + '>'

         + '<span style="color:' + this.hdrFgColor + ';'

         + 'font-family:' + this.hdrFontFamily + ';'

         + 'font-size:' + this.hdrFontSize + ';'

         + 'font-style:' + this.hdrFontStyle + ';'

         + 'font-weight:' + this.hdrFontWeight + ';">';

    high = '<table border=0 cellpadding=' + this.padding

         + ' cellspacing=0'

         + (this.menus[i].hdrWidth > 0 ? ' width=' + this.menus[i].hdrWidth : '')

         + '><tr><td'

         + (this.menus[i].hdrWidth == 0 ? ' nowrap=1' + this.menus[i].hdrWidth : '')

         + '>'

         + '<span style="color:' + this.hdrHiFgColor + ';'

         + 'font-family:' + this.hdrFontFamily + ';'

         + 'font-size:' + this.hdrFontSize + ';'

         + 'font-style:' + this.hdrFontStyle + ';'

         + 'font-weight:' + this.hdrFontWeight + ';">';

    end  = '</span></td></tr></table>';

    if (isMinNS4)

      str += '<layer name="navBar' + this.index + '_head' + i + '">'

          +  norm + this.menus[i].items[0].text + end

          +  '</layer>\n'

          +  '<layer name="navBar' + this.index + '_headHigh' + i + '">'

          +  high + this.menus[i].items[0].text + end

          +  '</layer>\n'

          +  '<layer name="navBar' + this.index + '_headDummy' + i + '">'

          +  '</layer>\n';

    if (isMinIE4) {

      str += '<div id="navBar' + this.index + '_head' + i + '"'

          +  ' style="position:absolute;">'

          +  norm + this.menus[i].items[0].text + end

          +  '</div>\n'

          +  '<div id="navBar' + this.index + '_headHigh' + i + '"'

          +  ' style="position:absolute;">'

          +  high + this.menus[i].items[0].text + end

          +  '</div>\n'

          +  '<div id="navBar' + this.index + '_headDummy' + i + '"'

          +  ' style="position:absolute;">';

      if (isMinIE5_5)

        str += '<table cellspacing=0 width="100%" height="100%"><tr><td></td></tr></table>';

      str += '</div>\n';
    }
  }

  if (isMinNS4) {

    str += '</layer>\n';

    this.baseLayer = new Layer(this.width);

    this.baseLayer.document.open();

    this.baseLayer.document.write(str);

    this.baseLayer.document.close();
  }

  if (isMinIE4) {

    str += '</div>\n';

    str = '<div id="navBar' + this.index + '"'

        + ' style="position:absolute;left:0px;top:0px;">\n'

        + str

        + '</div>\n';

    document.body.insertAdjacentHTML("beforeEnd", str);

    this.baseLayer = getLayer("navBar" + this.index);
  }

  // Position and initialize each header.

  width = 0;

  height = 0;

  for (i = 0; i < this.menus.length; i++) {

    this.menus[i].hdrNormLayer = getLayer('navBar' + this.index + '_head' + i);

    this.menus[i].hdrHighLayer = getLayer('navBar' + this.index + '_headHigh' + i);

    this.menus[i].hdrDmmyLayer = getLayer('navBar' + this.index + '_headDummy' + i);

    height = Math.max(height, getHeight(this.menus[i].hdrNormLayer));

    this.height = height + 2 * this.border;

    // Fix for IE4 to resize headers to fit text width.

    if (isMinIE4 && !isMinIE5) {

      width = this.menus[i].hdrWidth;

      if (width == 0)

        width = eval('document.all.navBar' + this.index + '_tbl' + i + '.clientWidth');

      navBarIEResizeLayer(this.menus[i].hdrNormLayer, width, height);

      navBarIEResizeLayer(this.menus[i].hdrHighLayer, width, height);

      navBarIEResizeLayer(this.menus[i].hdrDmmyLayer, width, height);
    }
  }

  x = this.border;

  y = this.border;

  for (i = 0; i < this.menus.length; i++) {

    width = Math.max(this.menus[i].hdrWidth, getWidth(this.menus[i].hdrNormLayer));

    if (this.menus[i].width == 0)

      this.menus[i].width = width + 2 * this.border;

    moveLayerTo(this.menus[i].hdrNormLayer, x, y);

    setBgColor(this.menus[i].hdrNormLayer, this.hdrBgColor);

    clipLayer(this.menus[i].hdrNormLayer, 0, 0, width, height);

    inheritLayer(this.menus[i].hdrNormLayer);

    moveLayerTo(this.menus[i].hdrHighLayer, x, y);

    setBgColor(this.menus[i].hdrHighLayer, this.hdrHiBgColor);

    clipLayer(this.menus[i].hdrHighLayer, 0, 0, width, height);

    hideLayer(this.menus[i].hdrHighLayer);

    moveLayerTo(this.menus[i].hdrDmmyLayer, x, y);

    if (isMinIE4)

      navBarIEResizeLayer(this.menus[i].hdrDmmyLayer, width, height);

    clipLayer(this.menus[i].hdrDmmyLayer, 0, 0, width, height);

    inheritLayer(this.menus[i].hdrDmmyLayer);

    this.menus[i].hdrDmmyLayer.highLayer = this.menus[i].hdrHighLayer;

    this.menus[i].hdrLeft = x;

    x += width + this.border;

    this.menus[i].hdrRight = x;
  }

  // Save resulting width of headers and total width.

  this.minWidth = x;

  this.width = Math.max(this.minWidth, this.width);

  // Position and initialize base, filler and headers base layers.

  moveLayerTo(this.baseLayer, this.x, this.y);

  setBgColor(this.baseLayer, this.borderColor);

  if (isMinIE4)

    navBarIEResizeLayer(this.baseLayer, this.width, this.height);

  clipLayer(this.baseLayer, 0, 0, this.width, this.height);

  this.fillerLayer = getLayer('navBar' + this.index + '_filler');

  moveLayerTo(this.fillerLayer, this.border, this.border);

  setBgColor(this.fillerLayer, this.hdrBgColor);

  width = this.width - 2 * this.border;

  height = this.height - 2 * this.border;

  if (isMinIE4)

    navBarIEResizeLayer(this.fillerLayer, width, height);

  clipLayer(this.fillerLayer, 0, 0, width, height);

  inheritLayer(this.fillerLayer);

  this.hdrsBaseLayer = getLayer('navBar' + this.index + '_hdrsBase');

  if (this.align == "left")

    this.hdrsOffsetX = 0;

  else if (this.align == "center")

    this.hdrsOffsetX = Math.round((this.width - this.minWidth) / 2);

  else if (this.align == "right")

    this.hdrsOffsetX = this.width - this.minWidth;

  else

    this.hdrsOffsetX = Math.min(parseInt(this.align, 10), this.width - this.minWidth);

  moveLayerTo(this.hdrsBaseLayer, this.hdrsOffsetX, 0);

  setBgColor(this.hdrsBaseLayer, this.borderColor);

  if (isMinIE4)

    navBarIEResizeLayer(this.hdrsBaseLayer, this.minWidth, this.height);

  clipLayer(this.hdrsBaseLayer, 0, 0, this.minWidth, this.height);

  inheritLayer(this.hdrsBaseLayer);

  // Set up event handling and positioning for headers.

  for (i = 0; i < this.menus.length; i++) {

    this.menus[i].hdrDmmyLayer.index = this.index;

    this.menus[i].hdrDmmyLayer.offsetX = this.menus[i].hdrLeft - this.border;

    if (this.menus[i].hdrDmmyLayer.offsetX + this.menus[i].width > this.width)

      this.menus[i].hdrDmmyLayer.offsetX = this.menus[i].hdrRight - this.menus[i].width;

    this.menus[i].hdrDmmyLayer.offsetY = this.height - this.border;

    this.menus[i].hdrDmmyLayer.onmouseover = navBarHeaderOn;

    this.menus[i].hdrDmmyLayer.onmouseout = navBarHeaderOff;

    if (isMinNS4) {

      this.menus[i].hdrDmmyLayer.document.highLayer = this.menus[i].hdrHighLayer;

      this.menus[i].hdrDmmyLayer.document.link = this.menus[i].items[0].link;

      this.menus[i].hdrDmmyLayer.document.captureEvents(Event.MOUSEUP);

      this.menus[i].hdrDmmyLayer.document.onmouseup = navBarItemClick;
    }

    if (isMinIE4) {

      this.menus[i].hdrDmmyLayer.highLayer = this.menus[i].hdrHighLayer;

      this.menus[i].hdrDmmyLayer.link = this.menus[i].items[0].link;

      this.menus[i].hdrDmmyLayer.onclick = navBarItemClick;
    }
  }

  // Build the drop down menus.

  norm = '<table border=0 cellpadding=' + this.padding

       + ' cellspacing=0 width="100%"><tr><td>'

       + '<span style="color:' + this.itmFgColor + ';'

       + 'font-family:' + this.itmFontFamily + ';'

       + 'font-size:' + this.itmFontSize + ';'

       + 'font-style:' + this.itmFontStyle + ';'

       + 'font-weight:' + this.itmFontWeight + ';">';

  high = '<table border=0 cellpadding=' + this.padding

       + ' cellspacing=0 width="100%"><tr><td>'

       + '<span style="color:' + this.itmHiFgColor + ';'

       + 'font-family:' + this.itmFontFamily + ';'

       + 'font-size:' + this.itmFontSize + ';'

       + 'font-style:' + this.itmFontStyle + ';'

       + 'font-weight:' + this.itmFontWeight + ';">';

  end  = '</span></td></tr></table>';

  for (i = 0; i < this.menus.length; i++) {

    width = this.menus[i].width - 2 * this.border;

    str = "";

    for (j = 1; j < this.menus[i].items.length; j++) {

      if (isMinNS4)

        str += '<layer name="navBar' + this.index + '_menu' + i + '_norm' + j + '"'

            +  ' width=' + width + '>'

            +  norm + this.menus[i].items[j].text + end

            +  '</layer>\n'

            +  '<layer name="navBar' + this.index + '_menu' + i + '_high' + j + '"'

            +  ' width=' + width + '>'

            +  high + this.menus[i].items[j].text + end

            +  '</layer>\n'

            +  '<layer name="navBar' + this.index + '_menu' + i + '_dmmy' + j + '"'

            +  ' width=' + width + '>'

            +  '</layer>\n';

      if (isMinIE4) {

        str += '<div id="navBar' + this.index + '_menu' + i + '_norm' + j + '"'

            +  ' style="position:absolute;width:' + width + 'px;">'

            +  norm + this.menus[i].items[j].text + end

            +  '</div>\n'

            +  '<div id="navBar' + this.index + '_menu' + i + '_high' + j + '"'

            +  ' style="position:absolute;width:' + width + 'px;">'

            +  high + this.menus[i].items[j].text + end

            +  '</div>\n'

            +  '<div id="navBar' + this.index + '_menu' + i + '_dmmy' + j + '"'

            +  ' style="position:absolute;width:' + width + 'px;">';

        if (isMinIE5_5)

          str += '<table cellspacing=0 width="100%" height="100%"><tr><td></td></tr></table>';

        str += '</div>\n';
      }
    }

    if (isMinNS4) {

      this.menus[i].baseLayer = new Layer(this.menus[i].width);

      this.menus[i].baseLayer.document.open();

      this.menus[i].baseLayer.document.write(str);

      this.menus[i].baseLayer.document.close();
    }

    if (isMinIE4) {

      str = '<div id="navBar' + this.index + '_menu' + i + '"'

          + ' style="position:absolute;left:0px; top:0px;'

          + 'width:' + this.menus[i].width + 'px;visibility:hidden;">\n'

          + str

          + '</div>\n';

      document.body.insertAdjacentHTML("beforeEnd", str);

      this.menus[i].baseLayer = getLayer("navBar" + this.index + "_menu" + i);
    }
  }

  // Restore original scroll position in IE4.

  if (isMinIE4 && !isMinIE5)

    window.scrollTo(x, y);

  // Position and initialize each menu.

  for (i = 0; i < this.menus.length; i++) {

    moveLayerTo(this.menus[i].baseLayer, this.menus[i].hdrDmmyLayer.offsetX, this.menus[i].hdrDmmyLayer.offsetY);

    setBgColor(this.menus[i].baseLayer, this.borderColor);

    if (this.menus[i].items.length > 1) {

      this.menus[i].hdrDmmyLayer.menuLayer = this.menus[i].baseLayer;

      if (isMinNS4)

        this.menus[i].hdrDmmyLayer.document.menuLayer = this.menus[i].baseLayer;
    }
    else {

      this.menus[i].hdrDmmyLayer.menuLayer = null;

      if (isMinNS4)

        this.menus[i].hdrDmmyLayer.document.menuLayer = this.menus[i].baseLayer;
    }

    // Position and initialize each item in the menu.

    x = this.border;

    y = this.border;

    width = this.menus[i].width - 2 * this.border;

    for (j = 1; j < this.menus[i].items.length; j++) {

      this.menus[i].items[j].normLayer = getLayer('navBar' + this.index + '_menu' + i + '_norm' + j);

      this.menus[i].items[j].highLayer = getLayer('navBar' + this.index + '_menu' + i + '_high' + j);

      this.menus[i].items[j].dmmyLayer = getLayer('navBar' + this.index + '_menu' + i + '_dmmy' + j);

      height = getHeight(this.menus[i].items[j].normLayer);

      moveLayerTo(this.menus[i].items[j].normLayer, x, y);

      setBgColor(this.menus[i].items[j].normLayer, this.itmBgColor);

      clipLayer(this.menus[i].items[j].normLayer, 0, 0, width, height);

      inheritLayer(this.menus[i].items[j].normLayer);

      moveLayerTo(this.menus[i].items[j].highLayer, x, y);

      setBgColor(this.menus[i].items[j].highLayer, this.itmHiBgColor);

      clipLayer(this.menus[i].items[j].highLayer, 0, 0, width, height);

      hideLayer(this.menus[i].items[j].highLayer);

      // Set up event handling for each item.

      moveLayerTo(this.menus[i].items[j].dmmyLayer, x, y);

      if (isMinIE4)

        navBarIEResizeLayer(this.menus[i].items[j].dmmyLayer, width, height);

      clipLayer(this.menus[i].items[j].dmmyLayer, 0, 0, width, height);

      inheritLayer(this.menus[i].items[j].dmmyLayer);

      this.menus[i].items[j].dmmyLayer.highLayer = this.menus[i].items[j].highLayer;

      this.menus[i].items[j].dmmyLayer.onmouseover = navBarItemOn;

      this.menus[i].items[j].dmmyLayer.onmouseout = navBarItemOff;

      if (isMinNS4) {

        this.menus[i].items[j].dmmyLayer.document.highLayer = this.menus[i].items[j].highLayer;

        this.menus[i].items[j].dmmyLayer.document.parentHighLayer = this.menus[i].hdrHighLayer;

        this.menus[i].items[j].dmmyLayer.document.menuLayer = this.menus[i].baseLayer;

        this.menus[i].items[j].dmmyLayer.document.link = this.menus[i].items[j].link;

        this.menus[i].items[j].dmmyLayer.document.captureEvents(Event.MOUSEUP);

        this.menus[i].items[j].dmmyLayer.document.onmouseup = navBarItemClick;
      }

      if (isMinIE4) {

        this.menus[i].items[j].dmmyLayer.highLayer = this.menus[i].items[j].highLayer;

        this.menus[i].items[j].dmmyLayer.parentHighLayer = this.menus[i].hdrHighLayer;

        this.menus[i].items[j].dmmyLayer.menuLayer = this.menus[i].baseLayer;

        this.menus[i].items[j].dmmyLayer.link = this.menus[i].items[j].link;

        this.menus[i].items[j].dmmyLayer.onclick = navBarItemClick;
      }

      y += height + this.separator;
    }

    width = this.menus[i].width;

    height = y - this.separator + this.border;

    this.menus[i].baseLayer.width = this.menus[i].width;

    this.menus[i].baseLayer.height = height;

    if (isMinIE4)

      navBarIEResizeLayer(this.menus[i].baseLayer, width, height);

    clipLayer(this.menus[i].baseLayer, 0, 0, width, height);

    // Set up event handling for the menu.

    this.menus[i].baseLayer.parentHighLayer = this.menus[i].hdrHighLayer;

    this.menus[i].baseLayer.onmouseout = navBarMenuOff;
  }

  this.created = true;

  this.resize(this.width);

  showLayer(this.baseLayer);
}


function navBarHide() {

  if (this.created)

    hideLayer(this.baseLayer);
}


function navBarShow() {

  if (this.created)

    showLayer(this.baseLayer);
}


function navBarMoveTo(x, y) {

  this.x = x;

  this.y = y;

  if (this.created)

    moveLayerTo(this.baseLayer, this.x, this.y);
}


function navBarMoveBy(dx, dy) {

  this.x += dx;

  this.y += dy;

  if (this.created)

    moveLayerTo(this.baseLayer, this.x, this.y);
}


function navBarGetzIndex() {

  if (this.created)

    return getzIndex(this.baseLayer);

  return 0;
}


function navBarSetzIndex(z) {

  var i;

  if (this.created) {

    setzIndex(this.baseLayer, z);

    for (i = 0; i < this.menus.length; i++)

      setzIndex(this.menus[i].baseLayer, z);
  }
}


function navBarGetWidth() {

  return this.width;
}


function navBarGetMinWidth() {

  return this.minWidth;
}


function navBarGetAlign() {

  return this.align;
}


function navBarSetAlign(align) {

  this.align = align;

  if (this.created)

    this.resize(this.width);
}


function navBarResize(width) {

  if (this.created) {

    this.width = Math.max(width, this.minWidth);

    if (isMinIE4) {

      navBarIEResizeLayer(this.fillerLayer, this.width - 2 * this.border, this.height - 2 * this.border);

      navBarIEResizeLayer(this.baseLayer, this.width, this.height);
    }

    clipLayer(this.fillerLayer, 0, 0, this.width - 2 * this.border, this.height - 2 * this.border);

    clipLayer(this.baseLayer, 0, 0, this.width, this.height);

    if (this.align == "left")

      this.hdrsOffsetX = 0;

    else if (this.align == "center")

      this.hdrsOffsetX = Math.round((this.width - this.minWidth) / 2);

    else if (this.align == "right")

      this.hdrsOffsetX = this.width - this.minWidth;

    else

      this.hdrsOffsetX = Math.min(parseInt(this.align, 10), this.width - this.minWidth);

    moveLayerTo(this.hdrsBaseLayer, this.hdrsOffsetX, 0);

    for (i = 0; i < this.menus.length; i++) {

      this.menus[i].hdrDmmyLayer.offsetX = this.menus[i].hdrLeft - this.border;

      if (this.hdrsOffsetX + this.menus[i].hdrDmmyLayer.offsetX + this.menus[i].width > this.width)

        this.menus[i].hdrDmmyLayer.offsetX = this.menus[i].hdrRight - this.menus[i].width;
    }
  }
  else

    this.width = width;
}


function navBarInvert() {

  this.inverted = !this.inverted;
}


function navBarIsInverted() {

  return this.inverted;
}

// Layer resize function for IE.

function navBarIEResizeLayer(layer, width, height) {

  layer.style.pixelWidth = width;

  layer.style.pixelHeight = height;
}

// Event handlers for the navigation bar.

function navBarHeaderOn(e) {

  var bar;

  var x, y;

  bar = navBars[this.index];

  // Position drop down menu.

  if (this.menuLayer != null) {

    x = bar.x + bar.hdrsOffsetX + this.offsetX;

    y = bar.y + this.offsetY;

    if (bar.inverted)

      y = bar.y - this.menuLayer.height + bar.border;

    moveLayerTo(this.menuLayer, x, y);

    // Save drop down menu position and show it. Need to fudge values for IE for reasons unknown.

    this.menuLayer.left = x;

    this.menuLayer.top = y;

    this.menuLayer.right = this.menuLayer.left + this.menuLayer.width;

    this.menuLayer.bottom = this.menuLayer.top + this.menuLayer.height;

    if (isMinIE4) {

      this.menuLayer.left += 2;

      this.menuLayer.right -= 2;

      if (bar.inverted) {

        this.menuLayer.top += 2;

        this.menuLayer.bottom += 2;
      }
      else {

        this.menuLayer.top -= 2;

        this.menuLayer.bottom -= 2;
      }
    }
  }

// Hide any currently active header and drop down.

  if (isMinIE4) {

    if (bar.activeHeader != null && bar.activeHeader != this) {

      hideLayer(bar.activeHeader.highLayer);

      if (bar.activeHeader.menuLayer != null)

        hideLayer(bar.activeHeader.menuLayer);

    }

    bar.activeHeader = this;

  }

// Display the header highlight layer and drop down menu.

  showLayer(this.highLayer);

  if (this.menuLayer != null)

    showLayer(this.menuLayer);
}


function navBarHeaderOff(e) {
// If over drop down menu, exit. Otherwise hide menu and highlight layers.

  if (this.menuLayer != null) {

    if (isMinIE4) {

      mouseX = window.event.clientX + document.body.scrollLeft;

      mouseY = window.event.clientY + document.body.scrollTop;
    }

    if (mouseX >= this.menuLayer.left  &&

        mouseX <= this.menuLayer.right &&

        mouseY >= this.menuLayer.top   &&

        mouseY <= this.menuLayer.bottom)

      return;

    hideLayer(this.menuLayer);
  }

  hideLayer(this.highLayer);
}


function navBarMenuOff(e) {

  // If over drop down menu, exit. Otherwise hide menu and header highlight layers.

  if (isMinIE4) {

    mouseX = window.event.clientX + document.body.scrollLeft;

    mouseY = window.event.clientY + document.body.scrollTop;

    if (mouseX >= this.left  &&

        mouseX <= this.right &&

        mouseY >= this.top   &&

        mouseY <= this.bottom)

      return;
  }

// Otherwise, hide menu and header highlight layers.

  hideLayer(this);

  hideLayer(this.parentHighLayer);
}


function navBarItemOn() {

  showLayer(this.highLayer);
}


function navBarItemOff() {

  hideLayer(this.highLayer);
}


function navBarItemClick(e) {

// If there is no link, exit.

  if (this.link == "")

    return true;

// Hide the drop down menu and highlight layer.

  if (this.menuLayer != null) {

    hideLayer(this.menuLayer);
  }

  if (this.parentHighLayer != null) {

    hideLayer(this.parentHighLayer);
  }

  hideLayer(this.highLayer);

// If the link starts with "javascript:" execute the code. Otherwise just link to the URL.

  if (this.link.indexOf("javascript:") == 0)

    eval(this.link);

  else

    window.location.href = this.link;

  return true;
}

// Code for tracking the mouse position. These variables will hold the current mouse pointer position.


var mouseX = 0;

var mouseY = 0;

// Set up event capturing.


if (isMinNS4)

  document.captureEvents(Event.MOUSEMOVE);

document.onmousemove = navBarGetMousePosition;


function navBarGetMousePosition(e) {

// Save mouse pointer position.

  if (isMinNS4) {

    mouseX = e.pageX;

    mouseY = e.pageY;
  }

  if (isMinIE4) {

    mouseX = window.event.clientX + document.body.scrollLeft;

    mouseY = window.event.clientY + document.body.scrollTop;
  }
}


// Code to handle a window resize. These variables are used to determine if a resize event is a true one in
// older releases of NS4.

var origWidth;

var origHeight;

// Reload page in case of a browser resize.


if (isMinNS4) {

  origWidth  = window.innerWidth;

  origHeight = window.innerHeight;
}

window.onresize = navBarReload;


function navBarReload() {

  if (isMinNS4 && origWidth == window.innerWidth && origHeight == window.innerHeight)

    return;

// For IE, reload on a timer in case the Windows 'Show window contents while dragging' display option is on.

  if (isMinIE4)

    setTimeout('window.location.href = window.location.href', 2000);

  else

    window.location.href = window.location.href;
}


