function Browser() {
     var userA, s, i;
     this.isIE = false; 
     this.isNS = false;
     this.version = null;
     userA = navigator.userAgent;
     s = "MSIE";
     if ((i = userA.indexOf(s)) >= 0) {
          this.isIE = true;
          this.version = parseFloat(userA.substr(i + s.length));
          return;
     }
     s = "Netscape6/";
     if ((i = userA.indexOf(s)) >= 0) {
          this.isNS = true;
          this.version = parseFloat(userA.substr(i + s.length));
          return;
     }
     s = "Gecko";
     if ((i = userA.indexOf(s)) >= 0) {
          this.isNS = true;
          this.version = 6.1;
          return;
     }
}
var browser = new Browser();
var activeButton = null;
function mouseClick(event, menuId) {
     var button;
     if (browser.isIE)
          button = window.event.srcElement;
     else
          button = event.currentTarget;
     button.blur();
     if (button.menu == null) {
          button.menu = document.getElementById(menuId);
          if (button.menu.isInitialized == null)
               initializeMenu(button.menu);
     }
 if (button.onmouseout == null)
          button.onmouseout = buttonOrMenuMouseout;
     if (button == activeButton)
          return false;
     if (activeButton != null)
          buttonReset(activeButton);
     if (button != activeButton) {
          buttonPressed(button);
          activeButton = button;
     }
     else
          activeButton = null;
     return false;
}
function mouseOverButton(event, menuId) {
     var button;
     if (activeButton == null) {
          mouseClick(event, menuId);
          return;
     }
     if (browser.isIE)
          button = window.event.srcElement;
     else
          button = event.currentTarget;
     if (activeButton != null && activeButton != button)
          mouseClick(event, menuId);
}
function buttonPressed(button) {
     var x, y;
     button.className += " menuButtonActive";
     if (button.onmouseout == null)
          button.onmouseout = buttonOrMenuMouseout;
     if (button.menu.onmouseout == null)
          button.menu.onmouseout = buttonOrMenuMouseout;
     x = getOffsetLeft(button);
     y = getOffsetTop(button) + button.offsetHeight;
     if (browser.isIE) {
          x += button.offsetParent.clientLeft;
          y += button.offsetParent.clientTop;
     }
     button.menu.style.left = x + "px";
     button.menu.style.top     = y + "px";
     button.menu.style.visibility = "visible";
}
function buttonReset(button) {
     removeClassName(button, "menuButtonActive");
     if (button.menu != null) {
          closeSubMenu(button.menu);
          button.menu.style.visibility = "hidden";
     }
}
function mouseOverMenu(event) {
     var menu;
     if (browser.isIE)
          menu = getContainer(window.event.srcElement, "DIV", "menu");
     else
          menu = event.currentTarget;
     if (menu.activeItem != null)
          closeSubMenu(menu);
}
function mouseOverItem(event, menuId) {
     var item, menu, x, y;
     if (browser.isIE)
          item = getContainer(window.event.srcElement, "A", "menuItem");
     else
          item = event.currentTarget;
     menu = getContainer(item, "DIV", "menu");
     if (menu.activeItem != null)
          closeSubMenu(menu);
     menu.activeItem = item;
     item.className += " menuItemHighlight";
     if (item.subMenu == null) {
          item.subMenu = document.getElementById(menuId);
          if (item.subMenu.isInitialized == null)
               initializeMenu(item.subMenu);
     }
     if (item.subMenu.onmouseout == null)
          item.subMenu.onmouseout = buttonOrMenuMouseout;
     x = getOffsetLeft(item) + item.offsetWidth;
     y = getOffsetTop(item);
     var maxX, maxY;
     if (browser.isNS) {
          maxX = window.scrollX + window.innerWidth;
          maxY = window.scrollY + window.innerHeight;
     }
     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);
     }
     maxX -= item.subMenu.offsetWidth;
     maxY -= item.subMenu.offsetHeight;
     if (x > maxX)
          x = Math.max(0, x - item.offsetWidth - item.subMenu.offsetWidth
               + (menu.offsetWidth - item.offsetWidth));
     y = Math.max(0, Math.min(y, maxY));
     item.subMenu.style.left = x + "px";
     item.subMenu.style.top     = y + "px";
     item.subMenu.style.visibility = "visible";
     if (browser.isIE)
          window.event.cancelBubble = true;
     else
          event.stopPropagation();
}
function closeSubMenu(menu) {
     if (menu == null || menu.activeItem == null)
          return;
     if (menu.activeItem.subMenu != null) {
          closeSubMenu(menu.activeItem.subMenu);
          menu.activeItem.subMenu.style.visibility = "hidden";
          menu.activeItem.subMenu = null;
     }
     removeClassName(menu.activeItem, "menuItemHighlight");
     menu.activeItem = null;
}
function buttonOrMenuMouseout(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 (getContainer(el, "DIV", "menu") == null) {
          buttonReset(activeButton);
          activeButton = null;
     }
}
function initializeMenu(menu) {
     var itemList, spanList;
     var elText, elArrow;
     var iWidth;
     var w, dw;
     var i, j;
     if (browser.isIE) {
          menu.style.lineHeight = "2.5ex";
          spanList = menu.getElementsByTagName("SPAN");
          for (i = 0; i < spanList.length; i++)
               if (hasClassName(spanList[i], "menuItemArrow")) {
                    spanList[i].style.fontFamily = "Webdings";
                    spanList[i].firstChild.nodeValue = "4";
               }
     }
     itemList = menu.getElementsByTagName("A");
     if (itemList.length > 0)
          iWidth = itemList[0].offsetWidth;
     else
          return;
     for (i = 0; i < itemList.length; i++) {
          spanList = itemList[i].getElementsByTagName("SPAN");
          elText     = null;
          elArrow = null;
          for (j = 0; j < spanList.length; j++) {
               if (hasClassName(spanList[j], "menuItemText"))
                    elText = spanList[j];
               if (hasClassName(spanList[j], "menuItemArrow"))
                    elArrow = spanList[j];
          }
          if (elText != null && elArrow != null)
               elText.style.paddingRight = (iWidth
                    - (elText.offsetWidth + elArrow.offsetWidth)) + "px";
     }
     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";
     }
     menu.isInitialized = true;
}
function getContainer(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 counter, list;
     list = el.className.split(" ");
     for (counter = 0; counter < list.length; counter++)
          if (list[counter] == name)
               return true;
     return false;
}
function removeClassName(el, name) {
     var counter, curList, newList;
     if (el.className == null)
          return;
     newList = new Array();
     curList = el.className.split(" ");
     for (counter = 0; counter < curList.length; counter++)
          if (curList[counter] != name)
               newList.push(curList[counter]);
     el.className = newList.join(" ");
}
function getOffsetLeft(el) {
     var x;
     x = el.offsetLeft;
     if (el.offsetParent != null)
          x += getOffsetLeft(el.offsetParent);
     return x;
}
function getOffsetTop(el) {
     var y;
     y = el.offsetTop;
     if (el.offsetParent != null)
          y += getOffsetTop(el.offsetParent);
     return y;
}