function Browser() {
  var ua, s, i;
  this.isIE    = false;  // IE
  this.isOP    = false;  // OP
  this.isNS    = false;  // NS
  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 = "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;
  }
  s = "MSIE";
  if ((i = ua.indexOf(s))) {
    this.isIE = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }
}
var browser = new Browser();
var activeButton = null;
function buttonClick(event, navId) {
  var button;
  if (browser.isIE)
    button = window.event.srcElement;
  else
    button = event.currentTarget;
  button.blur();
  if (button.nav == null) {
    button.nav = document.getElementById(navId);
    if (button.nav.isInitialized == null)
      navInit(button.nav);
  }
  if (button.onmouseout == null)
    button.onmouseout = buttonOrnavMouseout;
  if (button == activeButton)
    return false;
  if (activeButton != null)
    resetButton(activeButton);
  if (button != activeButton) {
    depressButton(button);
    activeButton = button;
  }
  else
    activeButton = null;
  return false;
}
function buttonMouseover(event, navId) {
  var button;
  if (activeButton == null) {
    buttonClick(event, navId);
    return;
  }
  if (browser.isIE)
    button = window.event.srcElement;
  else
    button = event.currentTarget;
  if (activeButton != null && activeButton != button)
    buttonClick(event, navId);
}
function depressButton(button) {
  var x, y;
  button.className += " nav_buttonActive";
  if (button.onmouseout == null)
    button.onmouseout = buttonOrnavMouseout;
  if (button.nav.onmouseout == null)
    button.nav.onmouseout = buttonOrnavMouseout;
  x = getPageOffsetLeft(button);
  y = getPageOffsetTop(button) + button.offsetHeight;
  if (browser.isIE) {
    x += button.offsetParent.clientLeft;
    y += button.offsetParent.clientTop;
  }
  button.nav.style.left = x + "px";
  button.nav.style.top  = y + "px";
  button.nav.style.visibility = "visible";
  if (button.nav.iframeEl != null)
  {
    button.nav.iframeEl.style.left = button.nav.style.left;
    button.nav.iframeEl.style.top  = button.nav.style.top;
    button.nav.iframeEl.style.width  = button.nav.offsetWidth + "px";
    button.nav.iframeEl.style.height = button.nav.offsetHeight + "px";
    button.nav.iframeEl.style.display = "";
  }
}
function resetButton(button) {
  removeClassName(button, "nav_buttonActive");
  if (button.nav != null) {
    closeSubnav(button.nav);
    button.nav.style.visibility = "hidden";
    if (button.nav.iframeEl != null)
      button.nav.iframeEl.style.display = "none";
  }
}
function navMouseover(event) {
  var nav;
  if (browser.isIE)
    nav = getContainerWith(window.event.srcElement, "DIV", "nav");
  else
    nav = event.currentTarget;
  if (nav.activeItem != null)
    closeSubnav(nav);
}
function nav_itemMouseover(event, navId) {
  var item, nav, x, y;
  if (browser.isIE)
    item = getContainerWith(window.event.srcElement, "A", "nav_item");
  else
    item = event.currentTarget;
  nav = getContainerWith(item, "DIV", "nav");
  if (nav.activeItem != null)
    closeSubnav(nav);
  nav.activeItem = item;
  item.className += " nav_itemHighlight";
  if (item.subnav == null) {
    item.subnav = document.getElementById(navId);
    if (item.subnav.isInitialized == null)
      navInit(item.subnav);
  }
  if (item.subnav.onmouseout == null)
    item.subnav.onmouseout = buttonOrnavMouseout;
  x = getPageOffsetLeft(item) + item.offsetWidth;
  y = getPageOffsetTop(item);
  var maxX, maxY;
  if (browser.isIE) {
    maxX = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft) +
      (document.documentElement.clientWidth != 0 ? document.documentElement.clientWidth : document.body.clientWidth);
    maxY = Math.max(document.documentElement.scrollTop, document.body.scrollTop) +
      (document.documentElement.clientHeight != 0 ? document.documentElement.clientHeight : document.body.clientHeight);
  }
  if (browser.isOP) {
    maxX = document.documentElement.scrollLeft + window.innerWidth;
    maxY = document.documentElement.scrollTop  + window.innerHeight;
  }
  if (browser.isNS) {
    maxX = window.scrollX + window.innerWidth;
    maxY = window.scrollY + window.innerHeight;
  }
  maxX -= item.subnav.offsetWidth;
  maxY -= item.subnav.offsetHeight;
  if (x > maxX)
    x = Math.max(0, x - item.offsetWidth - item.subnav.offsetWidth
      + (nav.offsetWidth - item.offsetWidth));
  y = Math.max(0, Math.min(y, maxY));
  item.subnav.style.left       = x + "px";
  item.subnav.style.top        = y + "px";
  item.subnav.style.visibility = "visible";
  if (item.subnav.iframeEl != null)
  {
    item.subnav.iframeEl.style.left    = item.subnav.style.left;
    item.subnav.iframeEl.style.top     = item.subnav.style.top;
    item.subnav.iframeEl.style.width   = item.subnav.offsetWidth + "px";
    item.subnav.iframeEl.style.height  = item.subnav.offsetHeight + "px";
    item.subnav.iframeEl.style.display = "";
  }
  if (browser.isIE)
    window.event.cancelBubble = true;
  else
    event.stopPropagation();
}
function closeSubnav(nav) {
  if (nav == null || nav.activeItem == null)
    return;
  if (nav.activeItem.subnav != null) {
    closeSubnav(nav.activeItem.subnav);
    nav.activeItem.subnav.style.visibility = "hidden";
    if (nav.activeItem.subnav.iframeEl != null)
      nav.activeItem.subnav.iframeEl.style.display = "none";
    nav.activeItem.subnav = null;
  }
  removeClassName(nav.activeItem, "nav_itemHighlight");
  nav.activeItem = null;
}
function buttonOrnavMouseout(event) {
  var el;
  if (activeButton == null)
    return;
  if (browser.isIE)
    el = window.event.toElement;
  else if (event.relatedTarget != null)
      el = (event.relatedTarget.tagName ? event.relatedTarget : event.relatedTarget.parentNode);
  if (getContainerWith(el, "DIV", "nav") == null) {
    resetButton(activeButton);
    activeButton = null;
  }
}
function navInit(nav) {
  var itemList, spanList;
  var textEl, arrowEl;
  var itemWidth;
  var w, dw;
  var i, j;
  if (browser.isIE) {
    nav.style.lineHeight = "2.5ex";
    spanList = nav.getElementsByTagName("SPAN");
    for (i = 0; i < spanList.length; i++)
      if (hasClassName(spanList[i], "nav_itemArrow")) {
        spanList[i].style.fontFamily = "Webdings";
        spanList[i].firstChild.nodeValue = "4";
      }
  }
  itemList = nav.getElementsByTagName("A");
  if (itemList.length > 0)
    itemWidth = itemList[0].offsetWidth;
  else
    return;
  for (i = 0; i < itemList.length; i++) {
    spanList = itemList[i].getElementsByTagName("SPAN");
    textEl  = null;
    arrowEl = null;
    for (j = 0; j < spanList.length; j++) {
      if (hasClassName(spanList[j], "nav_itemText"))
        textEl = spanList[j];
      if (hasClassName(spanList[j], "nav_itemArrow"))
        arrowEl = spanList[j];
    }
    if (textEl != null && arrowEl != null) {
      textEl.style.paddingRight = (itemWidth 
        - (textEl.offsetWidth + arrowEl.offsetWidth)) + "px";
   
      if (browser.isOP)
        arrowEl.style.marginRight = "0px";
    }
  }
  if (browser.isIE) {
    w = itemList[0].offsetWidth;
    itemList[0].style.width = w + "px";
    dw = itemList[0].offsetWidth - w;
    w -= dw;
    itemList[0].style.width = w + "px";
  }
  if (browser.isIE) {
    var iframeEl = document.createElement("IFRAME");
    iframeEl.frameBorder = 0;
    iframeEl.src = "javascript:;";
    iframeEl.style.display = "none";
    iframeEl.style.position = "absolute";
    iframeEl.style.filter = "progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)";
    nav.iframeEl = nav.parentNode.insertBefore(iframeEl, nav);
  }
  nav.isInitialized = true;
}
function getContainerWith(node, tagName, className) {
  while (node != null) {
    if (node.tagName != null && node.tagName == tagName &&
        hasClassName(node, className))
      return node;
    node = node.parentNode;
  }
  return node;
}
function hasClassName(el, name) {
  var i, list;
  list = el.className.split(" ");
  for (i = 0; i < list.length; i++)
    if (list[i] == name)
      return true;
  return false;
}
function removeClassName(el, name) {
  var i, curList, newList;
  if (el.className == null)
    return;
  newList = new Array();
  curList = el.className.split(" ");
  for (i = 0; i < curList.length; i++)
    if (curList[i] != name)
      newList.push(curList[i]);
  el.className = newList.join(" ");
}
function getPageOffsetLeft(el) {
  var x;
  x = el.offsetLeft;
  if (el.offsetParent != null)
    x += getPageOffsetLeft(el.offsetParent);
  return x;
}
function getPageOffsetTop(el) {
  var y;
  y = el.offsetTop;
  if (el.offsetParent != null)
    y += getPageOffsetTop(el.offsetParent);
  return y;
}