/******************************************************************************
* Copyright 2000 by Mike Hall                                                 *
******************************************************************************/

function Browser() {

  var ua, s, i;

  this.isIE    = false;
  this.isOP    = false;
  this.isNS    = false;
  this.version = null;

  ua = navigator.userAgent;

  s = "Opera";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isOP = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }

  s = "MSIE";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isIE = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }

  s = "Netscape6/";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }


  s = "Gecko";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    this.version = 6.1;
    return;
  }
}

var browser = new Browser();


if (browser.isIE)
  document.styleSheets[document.styleSheets.length - 1].addRule(".menu", "width:auto");
if (browser.isNS)
  document.styleSheets[document.styleSheets.length - 1].insertRule(".menu { width:auto; }", document.styleSheets[document.styleSheets.length - 1].cssRules.length);


var activeButton = null;


if (browser.isIE || browser.isOP)
  document.onmousedown = pageMousedown;
if (browser.isNS)
  document.addEventListener("mousedown", pageMousedown, true);

function pageMousedown(event) {

  var el;


  if (!activeButton)
    return;


  if (browser.isIE || browser.isOP)
    el = window.event.srcElement;
  if (browser.isNS)
    el = (event.target.className ? event.target : event.target.parentNode);


  if (el == activeButton)
    return;


  if (el.className != "menuButton"  && el.className != "menuItem"    &&
      el.className != "menuItemHdr" && el.className != "menuItemSep" &&
      el.className != "menu")
    resetButton(activeButton);
}

function buttonClick(button, menuName) {


  button.blur();


  if (!button.menu)
    button.menu = document.getElementById(menuName);


  if (activeButton && activeButton != button)
    resetButton(activeButton);


  if (button.isDepressed)
    resetButton(button);
  else
    depressButton(button);

  return false;
}

function buttonMouseover(button, menuName) {


  if (activeButton && activeButton != button) {
    resetButton(activeButton);
    if (menuName)
      buttonClick(button, menuName);
  }
}

function depressButton(button) {

  var w, dw, x, y;


  button.className = "menuButtonActive";


  if (browser.isIE && !button.menu.firstChild.style.width) {
    w = button.menu.firstChild.offsetWidth;
    button.menu.firstChild.style.width = w + "px";
    dw = button.menu.firstChild.offsetWidth - w;
    w -= dw;
    button.menu.firstChild.style.width = w + "px";
  }


  x = getPageOffsetLeft(button);
  y = getPageOffsetTop(button) + button.offsetHeight;
  if (browser.isIE) {
    x += 2;
    y += -129;
  }
  if (browser.isNS && browser.version < 6.1)
    y--;


  if (browser.isOP) {
    y = getPageOffsetTop(button) + button.style.pixelHeight + 1;
    button.menu.style.pixelLeft = x;
    button.menu.style.pixelTop  = y;
  }
  else {
    button.menu.style.left = x + "px";
    button.menu.style.top  = y + "px";
  }


  button.menu.style.left = x + "px";
  button.menu.style.top  = y + "px";
  button.menu.style.visibility = "visible";


  button.isDepressed = true;
  activeButton = button;
}

function resetButton(button) {


  button.className = "menuButton";


  if (button.menu)
    button.menu.style.visibility = "hidden";


  button.isDepressed = false;
  activeButton = null;
}

function getPageOffsetLeft(el) {


  return el.offsetLeft + (el.offsetParent ? getPageOffsetLeft(el.offsetParent) : 0);
}

function getPageOffsetTop(el) {


  return el.offsetTop + (el.offsetParent ? getPageOffsetTop(el.offsetParent) : 0);
}
