function Browser() {

  var ua, s, i;

  this.isIE    = false;  // Internet Explorer
  this.isOP    = false;  // Opera
  this.isNS    = false;  // Netscape
  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;
  }

  // Treat any other "Gecko" browser as Netscape 6.1.

  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 menuid = null;



var activeButton = null;


function buttonClick(event, menuId) 
{
    var button;
    
    // Get the target button element.

      if (browser.isIE)
          button = window.event.srcElement;
      else
          button = event.currentTarget;

    // Blur focus from the link to remove that annoying outline.

          button.blur();

    // Associate the named menu to this button if not already done.
    // Additionally, initialize menu display.

      if (button.menu == null) 
      {
          button.menu = document.getElementById(menuId);
          if (button.menu.isInitialized == null)
              menuInit(button.menu);
      }
      
  
    // activate/deactivate on mouseover.

    
      if (button.onmouseout == null)
          button.onmouseout = buttonOrMenuMouseout;
      if (menuid != menuId)
      {    
          ItemOff(menuid);    
          menuid =menuId;}
          
     

      // Exit if this button is the currently active one.

      if (button == activeButton)
          return false;


  // Reset active button

      if (activeButton != null)
          resetButton(activeButton);


      if (button != activeButton) 
      {
          depressButton(button);
          activeButton = button;
      }
      else
          activeButton = null;

      return false;
}

function ItemOn(menuId) {
	if(_img = eval('document.i_'+ menuId)) {
		_img.src = 'clients/stadtstreicher/layout/images/menu/m_'+menuId+'_sel.gif';
	}
}

function ItemOff(menuId) {
 
	if(_img = eval('document.i_'+ menuId)) {
		_img.src = 'clients/stadtstreicher/layout/images/menu/m_'+menuId+'_def.gif';
	}
}

function buttonMouseover(event, menuId)
{
    var button;

  // activate/deactivate mouseover.
    
    if (activeButton == null) 
    {
        ItemOn(menuId);
        buttonClick(event, menuId);
        return;
    }

    if (browser.isIE){
        button = window.event.srcElement;}
    else{
        button = event.currentTarget;}
  
    if (activeButton != null && activeButton != button){
        buttonClick(event, menuId);
        
        }
        
}

function depressButton(button) 
{
     var x, y;

    button.className += " menuButtonActive";

  //for activate/deactivate mouseover.


    if (button.onmouseout == null)
        button.onmouseout = buttonOrMenuMouseout;
    if (button.menu.onmouseout == null)
        button.menu.onmouseout = buttonOrMenuMouseout;

  // Position the associated drop down menu under the button and
  // show it.

      x = getPageOffsetLeft(button);
      y = getPageOffsetTop(button) + button.offsetHeight;

  // For IE
      if (browser.isIE) 
      {
          x += button.offsetParent.clientLeft;
          y += button.offsetParent.clientTop;
      }
      button.menu.style.left = (x-35) + "px";
      button.menu.style.top  = (y)+ "px";
      button.menu.style.visibility = "visible";

  // For IE;

      if (button.menu.iframeEl != null)
      {
          button.menu.iframeEl.style.left = button.menu.style.left;
          button.menu.iframeEl.style.top  = button.menu.style.top;
          button.menu.iframeEl.style.width  = button.menu.offsetWidth + "px";
          button.menu.iframeEl.style.height = button.menu.offsetHeight + "px";
          button.menu.iframeEl.style.display = "";
      }
}

function resetButton(button) 
{
  removeClassName(button, "menuButtonActive");

  // Hide the button's menu

      if (button.menu != null) 
      {
      
          closeSubMenu(button.menu);
          button.menu.style.visibility = "hidden";

      // For IE
      if (button.menu.iframeEl != null)
           button.menu.iframeEl.style.display = "none";
      }
}

/*function menuMouseover(event) 
{alert('ich geh');
    var menu;

    // Find the target menu element.

      if (browser.isIE)
         menu = getContainerWith(window.event.srcElement, "DIV", "menu");
      else
          menu = event.currentTarget;

      if (menu.activeItem != null)
          closeSubMenu(menu);
}

function menuItemMouseover(event, menuId) 
{alert('geht');
    var item, menu, x, y;

    // Find the target item element and its parent menu element.

      if (browser.isIE)
          item = getContainerWith(window.event.srcElement, "A", "menuItem");
      else
          item = event.currentTarget;
          menu = getContainerWith(item, "DIV", "menu");


      if (menu.activeItem != null)
          closeSubMenu(menu);
          menu.activeItem = item;

    // Highlight the item element.

        item.className += " menuItemHighlight";

    if (item.subMenu == null) {
    item.subMenu = document.getElementById(menuId);
    if (item.subMenu.isInitialized == null)
      menuInit(item.subMenu);
  }



  // For IE; size, position and display the menu's IFRAME as well.

  if (item.subMenu.iframeEl != null)
  {
    item.subMenu.iframeEl.style.left    = item.subMenu.style.left;
    item.subMenu.iframeEl.style.top     = item.subMenu.style.top;
    item.subMenu.iframeEl.style.width   = item.subMenu.offsetWidth + "px";
    item.subMenu.iframeEl.style.height  = item.subMenu.offsetHeight + "px";
    item.subMenu.iframeEl.style.display = "";
  }

  // Stop the event from bubbling.

  if (browser.isIE)
    window.event.cancelBubble = true;
  else
    event.stopPropagation();
}*/

function closeSubMenu(menu) {

  if (menu == null || menu.activeItem == null)
    return;

  // Recursively close any sub menus.

  if (menu.activeItem.subMenu != null) {
    closeSubMenu(menu.activeItem.subMenu);
    menu.activeItem.subMenu.style.visibility = "hidden";

    // For IE, hide the sub menu's IFRAME as well.

    if (menu.activeItem.subMenu.iframeEl != null)
      menu.activeItem.subMenu.iframeEl.style.display = "none";

    menu.activeItem.subMenu = null;
  }

  // Deactivate the active menu item.

    removeClassName(menu.activeItem, "menuItemHighlight");
    menu.activeItem = null;
}

// event on buttons and menus.

function buttonOrMenuMouseout(event,menuId) 
{
    var el;

    // If there is no active button, exit.

    if (activeButton == null){
        
        return;}

    // Find the element the mouse is moving to.

    if (browser.isIE)
        el = window.event.toElement;
    else if (event.relatedTarget != null){//alert('2');
            el = (event.relatedTarget.tagName ? event.relatedTarget : event.relatedTarget.parentNode);
            }

  // If the element is not part of a menu, reset the active button.

    if (getContainerWith(el, "DIV", "menu", menuId) == null) 
    {
       ItemOff(menuid)
        resetButton(activeButton);
        
        activeButton = null;
        
    }
}

function menuInit(menu) 
{
    var itemList, spanList;
    var textEl, arrowEl;
    var itemWidth;
    var w, dw;
    var i, j;

    // For IE, replace arrow characters.

    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)
        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], "menuItemText"))
                    textEl = spanList[j];
                if (hasClassName(spanList[j], "menuItemArrow"))
                    arrowEl = spanList[j];
          }
          if (textEl != null && arrowEl != null) 
          {
              textEl.style.paddingRight = (itemWidth 
              - (textEl.offsetWidth + arrowEl.offsetWidth)) + "px";
      // For Opera 
          if (browser.isOP)
              arrowEl.style.marginRight = "0px";
          }
    }

      // For IE
          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:false;";
              iframeEl.style.display = "none";
              iframeEl.style.position = "absolute";
              iframeEl.style.filter = "progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)";
              menu.iframeEl = menu.parentNode.insertBefore(iframeEl, menu);
          } 

  
      menu.isInitialized = true;
}

function getContainerWith(node, tagName, className,menuId) 
{
     while (node != null) 
     {
          if (node.tagName != null && node.tagName == tagName &&
          hasClassName(node, className,menuId))
              return node;
              node = node.parentNode;
    }

      return node;
}

function hasClassName(el, name,menuId) 
{
      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;
      
  // Return the x coordinate of an element relative to the page.
      x = el.offsetLeft;
      if (el.offsetParent != null)
           x += getPageOffsetLeft(el.offsetParent);

      return x;
}

function getPageOffsetTop(el) 
{
      var y;

  // Return the x coordinate of an element relative to the page.
      y = el.offsetTop;
      if (el.offsetParent != null)
          y += getPageOffsetTop(el.offsetParent);

      return y;
}
