/******************************************************************************
* Copyright 2000 by Mike Hall.                                                *
* Web address: http://www.brainjar.com                                        *
* Last update: March 29, 2000.                                                *
******************************************************************************/
// MODIFIZIERT! (sm, dr - 001124.01:17)
// eintraege werden erst aufgebaut, wenn sie gebraucht werden!

var popUpMenuScrollbarSize = 16;    // Estimated width of scrollbars, used in NS
                                    // when positioning menus near window edge.
var popUpMenus = new Array();       // Used to track all menus.
function PopUpMenuItem(text, link) {
  this.text = text;    // Item text.
  this.link = link;    // Link URL or JavaScript code.
  this.isSeparator = false;    // Separator flag.
  this.subMenu = null;         // Submenu to open when item is active.
}
function PopUpMenu(width) {
  this.width  = width;
  this.height = 0;
  this.items = new Array();
  this.created = false;
  this.border    = 2;
  this.padding   = 4;
  this.spSize    = 2;
  this.spPadding = 1;
  this.fgColor    = "#000000";
  this.bgColor    = "#c0c0c0";
  this.hiFgColor  = "#ffffff";
  this.hiBgColor  = "#000080";
  this.bdHiColor  = "#e0e0e0";
  this.bdShColor  = "#000000";
  this.spHiColor  = "#e0e0e0";
  this.spShColor  = "#808080";
  this.fontFamily = "MS Sans Serif,Arial,Helvetica,sans-serif";
  this.fontStyle  = "plain";
  this.fontWeight = "normal";
  this.fontSize   = "8pt";
  this.noneImage   = "graphics/transparent.gif";
  this.normImage   = "graphics/default_norm.gif";
  this.highImage   = "graphics/default_high.gif";
  this.imageWidth  = 8;
  this.imageHeight = 12;
  this.left = 0;
  this.top = 0;
  this.right = this.width;
  this.bottom = this.height;
  this.parentMenu = null;
  this.openChild = null;
  this.offsetX = 0;
  this.offsetY = 0;
  this.isStatic = false;
  this.isOpen = false;
  this.isSubmenu = false;
  this.setSizes = popUpMenuSetSizes;
  this.setColors = popUpMenuSetColors;
  this.setFont = popUpMenuSetFont;
  this.setImages = popUpMenuSetImages;
  this.addItem = popUpMenuAddItem;
  this.addSeparator = popUpMenuAddSeparator;
  this.addSubmenu = popUpMenuAddSubmenu;
  this.copyAttributes = popUpMenuCopyAttributes;
  this.create = popUpMenuCreate;
  this.open = popUpMenuOpen;
  this.close = popUpMenuClose;
  this.setStatic = popUpMenuSetStatic;
  this.moveTo = popUpMenuMoveTo;
  this.moveBy = popUpMenuMoveBy;
  this.getzIndex = popUpMenuGetzIndex;
  this.setzIndex = popUpMenuSetzIndex;
  this.index = popUpMenus.length;
  popUpMenus[this.index] = this;
}
function popUpMenuSetSizes(border, padding, spSize, spPadding) {
  if (!this.created) {
    this.border = border;
    this.padding = padding;
    this.spSize = spSize;
    this.spPadding = spPadding;
  }
}
function popUpMenuSetColors(fgColor, bgColor, hiFgColor, hiBgColor,
                            bdHiColor, bdShColor, spHiColor, spShColor) {
  if (!this.created) {
    this.fgColor = fgColor;
    this.bgColor = bgColor;
    this.hiFgColor = hiFgColor;
    this.hiBgColor = hiBgColor;
    this.bdHiColor = bdHiColor;
    this.bdShColor = bdShColor;
    this.spHiColor = spHiColor;
    this.spShColor = spShColor;
  }
}
function popUpMenuSetFont(family, style, weight, size) {
  if (!this.created) {
    this.fontFamily = family;
    this.fontStyle = style;
    this.fontWeight = weight;
    this.fontSize = size;
  }
}
function popUpMenuSetImages(none, norm, high, width, height) {
  if (!this.created) {
    this.noneImage = none;
    this.normImage = norm;
    this.highImage = high;
    this.imageWidth = width;
    this.imageHeight = height;
  }
}
function popUpMenuAddItem(item) {
  if (!this.created)
    this.items[this.items.length] = item;
}
function popUpMenuAddSeparator() {
  if (!this.created) {
    this.addItem(new PopUpMenuItem("", ""));
    this.items[this.items.length - 1].isSeparator = true;
  }
}
function popUpMenuAddSubmenu(item, menu) {
  if (!this.created && !menu.isSubmenu) {
    item.subMenu = menu;
    this.items[this.items.length] = item;
    menu.parentMenu = this;
    menu.isSubmenu = true;
  }
}
function popUpMenuCopyAttributes(menu) {
  if (!this.created && menu != null) {
    this.border = menu.border;
    this.padding = menu.padding;
    this.spSize = menu.spSize;
    this.spPadding = menu.spPadding;
    this.fgColor = menu.fgColor;
    this.bgColor = menu.bgColor;
    this.hiFgColor = menu.hiFgColor;
    this.hiBgColor = menu.hiBgColor;
    this.bdHiColor = menu.bdHiColor;
    this.bdShColor = menu.bdShColor;
    this.spHiColor = menu.spHiColor;
    this.spShColor = menu.spShColor;
    this.fontFamily = menu.fontFamily;
    this.fontStyle = menu.fontStyle;
    this.fontWeight = menu.fontWeight;
    this.fontSize = menu.fontSize;
    this.noneImage = menu.noneImage;
    this.normImage = menu.normImage;
    this.highImage = menu.highImage;
    this.imageWidth  = menu.imageWidth;
    this.imageHeight = menu.imageHeight;
  }
}
function popUpMenuCreate() {
  var hasSubmenus;
  var norm, high, end1, end2, img1, img2, sep;
  var text;
  var noimg, imgsrc;
  var width, height;
  var str;
  var x, y;
  var i;
  var bevelLayers;
  if (!isMinNS4 && !isMinIE4)
    return;
  if (this.created) return;
  window.status = "Sitemap: Building menu...";
  showBuildingMenu()
  hasSubmenus = false;
  for (i = 0; i < this.items.length; i++)
    if (this.items[i].subMenu != null)
      hasSubmenus = true;
  norm = '<table border=0 cellpadding=' + this.padding
       + ' cellspacing=0 width="100%"><tr valign=top><td>'
       + '<span style="color:' + this.fgColor + ';'
       + 'font-family:' + this.fontFamily + ';'
       + 'font-size:' + this.fontSize + ';'
       + 'font-style:' + this.fontStyle + ';'
       + 'font-weight:' + this.fontWeight + ';">';
  high = '<table border=0 cellpadding=' + this.padding
       + ' cellspacing=0 width="100%"><tr valign=top><td>'
       + '<span style="color:' + this.hiFgColor + ';'
       + 'font-family:' + this.fontFamily + ';'
       + 'font-size:' + this.fontSize + ';'
       + 'font-style:' + this.fontStyle + ';'
       + 'font-weight:' + this.fontWeight + ';">';
  end1 = '</span></td>';
  end2 = '</tr></table>';
  img1 = '';
  img2 = '';
  noimg = '';
  if (hasSubmenus) {
    img1 = '<td align=right><img border=0 hspace=0 vspace=0 src="';
    img2 = '" width=' + this.imageWidth + ' height=' + this.imageHeight + '></td>';
    noimg = this.noneImage;
  }
  sep = '<table border=0 cellpadding=' + this.spPadding
      + ' cellspacing=0 width="100%"><tr><td align=center>'
      + '<table border=0 cellpadding=0 cellspacing=0 width="100%">'
      + '<tr bgcolor="' + this.spShColor + '"><td>'
      + '<img border=0 hspace=0 vspace=0 src="' + this.noneImage + '"'
      + ' width=1 height=' + (this.spSize - Math.round(this.spSize / 2)) + '>'
      + '</td></tr>';
  if (this.spSize - Math.round(this.spSize / 2) > 0)
    sep += '<tr bgcolor="' + this.spHiColor + '"><td>'
        + '<img border=0 hspace=0 vspace=0 src="' + this.noneImage + '"'
        + ' width=1 height=' + Math.round(this.spSize / 2) + '>'
        + '</td></tr>';
  sep += '</table></td></tr></table>';
  str = "";
  if (isMinNS4) {
    this.baseLayer = new Layer(this.width);
    setBgColor(this.baseLayer, this.bdShColor);
  }
  bevelLayers = new Array();
  if (isMinNS4)
    for (i = 0; i < this.border; i++) {
      bevelLayers[bevelLayers.length] = new Layer(this.width, this.baseLayer);
      bevelLayers[bevelLayers.length - 1].visibility = "inherit";
      bevelLayers[bevelLayers.length] = new Layer(this.width, this.baseLayer);
      bevelLayers[bevelLayers.length - 1].visibility = "inherit";
    }
  if (isMinIE4)
    for (i = 0; i < this.border; i++)
      str += '<div id="popUpMenu' + this.index + '_bevel' + (2 * i) + '"'
          +  ' style="position:absolute;'
          +  ' width:' + this.width + 'px;'
          +  ' height:100%;">'
          +  '</div>\n'
          +  '<div id="popUpMenu' + this.index + '_bevel' + (2 * i + 1) + '"'
          +  ' style="position:absolute;'
          +  ' width:' + this.width + 'px;'
          +  ' height:100%;">'
          +  '</div>\n';
  width = this.width - 2 * this.border;
  for (i = 0; i < this.items.length; i++) {
    if (this.items[i].subMenu == null)
      imgsrc = noimg;
    else
      imgsrc = this.normImage;
    if (this.items[i].isSeparator)
      text = sep;
    else
      text = norm + this.items[i].text + end1 + img1 + imgsrc + img2 + end2;
    if (isMinNS4) {
      this.items[i].normLayer = new Layer(width, this.baseLayer);
      this.items[i].normLayer.document.open();
      this.items[i].normLayer.document.write(text);
      this.items[i].normLayer.document.close();
      this.items[i].normLayer.visibility = "inherit";
      setBgColor(this.items[i].normLayer, this.bgColor);
    }
    if (isMinIE4)
      str += '<div id="popUpMenu' + this.index + '_norm' + i + '"'
          +  ' style="position:absolute;'
          +  ' background-color:' + this.bgColor + ';'
          +  ' width:' + width + 'px;">' + text + '</div>\n';
    if (this.items[i].subMenu == null)
      imgsrc = noimg;
    else
      imgsrc = this.highImage;
    if (this.items[i].isSeparator)
      text = sep;
    else
      text = high + this.items[i].text + end1 + img1 + imgsrc + img2 + end2;
    if (isMinNS4) {
      this.items[i].highLayer = new Layer(width, this.baseLayer);
      this.items[i].highLayer.document.open();
      this.items[i].normLayer.document.write(text);
      this.items[i].highLayer.document.close();
      this.items[i].highLayer.visibility = "hide";
      setBgColor(this.items[i].highLayer, this.hiBgColor);
    }
    if (isMinIE4)
      str += '<div id="popUpMenu' + this.index + '_high' + i + '"'
          +  ' style="position:absolute;'
          +  ' background-color:' + this.hiBgColor + ';'
          +  ' width:' + width + 'px;'
          +  ' visibility:hidden;">' + text + '</div>\n';
    if (isMinNS4) {
      this.items[i].dmmyLayer = new Layer(width, this.baseLayer);
      this.items[i].dmmyLayer.visibility = "inherit";
    }
    if (isMinIE4)
      str += '<div id="popUpMenu' + this.index + '_dmmy' + i + '"'
          +  ' style="position:absolute;';
//changed010727(rm): added next two lines, fixed mouseover problem in IE5.5
      str += ' cursor : hand;'
          +  ' background-image : url(' + this.noneImage + ');';
      str += ' width:' + width + 'px;">'
          +  '</div>\n';
  }
  if (isMinIE4 && !isMinIE5) {
    x = getPageScrollX();
    y = getPageScrollY();
    window.scrollTo(getPageWidth(), getPageHeight());
  }
  if (isMinIE4) {
    str = '<div id="popUpMenu' + this.index + '_base"'
        + ' style="position:absolute; left:0px; top:0px;'
        + ' width:' + this.width + 'px;'
        + ' overflow:hidden;'
        + ' visibility:hidden;">'
        + str
        + '</div>\n';
    document.body.insertAdjacentHTML("beforeEnd", str);
    if (!isMinIE5)
      window.scrollTo(x, y);
    this.baseLayer = getLayer("popUpMenu" + this.index + "_base");
    for (i = 0; i < 2 * this.border; i++) {
      bevelLayers[bevelLayers.length] =
        getLayer("popUpMenu" + this.index + "_bevel" + (2 * i));
      bevelLayers[bevelLayers.length] =
        getLayer("popUpMenu" + this.index + "_bevel" + (2 * i + 1));
    }
  }
  x = this.border;
  y = this.border;
  height = 0;
  for (i = 0; i < this.items.length; i++) {
    if (this.items[i].subMenu) {
      this.items[i].subMenu.parentItem = this.items[i];
      this.items[i].subMenu.offsetX = this.width - (this.border + this.padding);
      this.items[i].subMenu.offsetY = y;
    }
    if (isMinIE4) {
      this.items[i].normLayer = getLayer("popUpMenu" + this.index + "_norm" + i);
      this.items[i].highLayer = getLayer("popUpMenu" + this.index + "_high" + i);
      this.items[i].dmmyLayer = getLayer("popUpMenu" + this.index + "_dmmy" + i);
    }
    moveLayerTo(this.items[i].normLayer, x, y);
    moveLayerTo(this.items[i].highLayer, x, y);
    moveLayerTo(this.items[i].dmmyLayer, x, y);
    height = getHeight(this.items[i].normLayer);
    y += height;
    clipLayer(this.items[i].normLayer, 0, 0, width, height);
    clipLayer(this.items[i].highLayer, 0, 0, width, height);
    if (isMinIE4) {
      this.items[i].dmmyLayer.style.pixelWidth = width;
      this.items[i].dmmyLayer.style.pixelHeight = height;
    }
    clipLayer(this.items[i].dmmyLayer, 0, 0, width, height);
    if (!this.items[i].isSeparator) {
      this.items[i].dmmyLayer.index = this.index;
      this.items[i].dmmyLayer.itemIndex = i;
      this.items[i].dmmyLayer.onmouseover = popUpMenuItemOn;
      this.items[i].dmmyLayer.onmouseout = popUpMenuItemOff;
      if (isMinNS4) {
        this.items[i].dmmyLayer.document.index = this.index;
        this.items[i].dmmyLayer.document.itemIndex = i;
        this.items[i].dmmyLayer.document.captureEvents(Event.MOUSEUP);
        this.items[i].dmmyLayer.document.onmouseup = popUpMenuItemClick;
      }
      if (isMinIE4)
        this.items[i].dmmyLayer.onclick = popUpMenuItemClick;
    }
  }
  this.height = y + this.border;
  if (isMinIE4)
    this.baseLayer.style.height = this.height;
  setBgColor(this.baseLayer, this.bdShColor);
  clipLayer(this.baseLayer, 0, 0, this.width, this.height);
  this.baseLayer.index = this.index;
  //hier wird eingestellt,ob das Menue offen bleibt oder nicht:
  this.baseLayer.onmouseout = popUpMenuOff;
  for (i = 0; i < this.border; i++) {
    clipLayer(bevelLayers[2 * i], i, i, this.width - i, this.height - i);
    setBgColor(bevelLayers[2 * i], this.bdHiColor);
    clipLayer(bevelLayers[2 * i + 1], (i + 1), (i + 1), this.width, this.height);
    setBgColor(bevelLayers[2 * i + 1], this.bdShColor);
    if (isMinIE4) {
      bevelLayers[i].index = this.index;
      bevelLayers[i].onmouseout = popUpMenuOff;
    }
  }
  this.created = true;
/*
  for (i = 0; i < this.items.length; i++)
    if (this.items[i].subMenu && !this.items[i].subMenu.created)
      this.items[i].subMenu.create();
*/
  window.status = "Sitemap: Done.";
  hideBuildingMenu()
  if (this.parentMenu == null)
    setTimeout('window.status = window.defaultStatus', 500);
}
function popUpMenuOpenTest(x, y) {
         var xTmp = x
         var yTmp = y
         setTimeout('popUpMenuOpenDelayed(xTmp,yTmp)', 1000)
}
function popUpMenuOpen(x, y) {
  var maxX, maxY;
  // Positionsanpassung zwischen Browsern
/*
  if(isMinIE4){
    x -= 1
    y -= 8  
  }
*/  
  if (this.created) {
    maxX = getPageScrollX() + getWindowWidth() - this.width;
    maxY = getPageScrollY() + getWindowHeight() - this.height;
    if (isMinNS4 && getWindowHeight() < getPageHeight())
      maxX -= popUpMenuScrollbarSize;
    if (isMinNS4 && getWindowWidth() < getPageWidth())
      maxY -= popUpMenuScrollbarSize;
    if ((x == null || y == null)) {
      if (this.isStatic && !this.isSubmenu) {
        x = this.left;
        y = this.top;
      }
      else {
        x = mouseX - (this.border + this.padding);
        y = mouseY - (this.border + this.padding);
      }
    }
    if (this.isSubmenu) {
      x = this.parentMenu.left + this.offsetX;
      y = this.parentMenu.top + this.offsetY;
      if (x > maxX)
        maxX = this.parentMenu.left + this.parentMenu.border - this.width;
      this.parentMenu.openChild = this;
    }
    if (this.isSubmenu || !this.isStatic) {
      x = Math.max(0, Math.min(maxX, x));
      y = Math.max(0, Math.min(maxY, y));
    }
    moveLayerTo(this.baseLayer, x, y);
    showLayer(this.baseLayer);
    this.isOpen = true;
    this.left   = x;
    this.top    = y;
    this.right  = x + this.width;
    this.bottom = y + this.height;
  }
}
function popUpMenuClose() {
  if (this.created) {
    if (this.openChild != null) {
      this.openChild.close();
      this.openChild = null;
    }
    hideLayer(this.baseLayer);
    this.isOpen = false;
    if (this.isSubmenu) {
      hideLayer(this.parentItem.highLayer);
      this.parentMenu.openChild = null;
    }
  }
}
function popUpMenuSetStatic(flag) {
  if (!this.isSubmenu)
    this.isStatic = flag;
}
function popUpMenuMoveTo(x, y) {
  if (this.created)
    moveLayerTo(this.baseLayer, x, y);
  this.left = x;
  this.top = y;
  this.right = this.left + this.width;
  this.bottom = this.top + this.height;
}
function popUpMenuMoveBy(dx, dy) {
  if (this.created)
    moveLayerBy(this.baseLayer, dx, dy);
  this.left += dx;
  this.top += dy;
  this.right += dx;
  this.bottom += dy;
}
function popUpMenuGetzIndex() {
  if (this.created)
    return(getzIndex(this.baseLayer));
  else
    return(0);
}
function popUpMenuSetzIndex(z) {
  var i;
  if (this.created) {
    setzIndex(this.baseLayer, z);
    for (i = 0; i < this.items.length; i++)
      if (this.items[i].subMenu != null)
        this.items[i].subMenu.setzIndex(z);
  }
}
function popUpMenuOff(e) {
  var menu;
  var wasClosed;
  menu = popUpMenus[this.index];
  if (isMinIE4) {
    mouseX = window.event.clientX + document.body.scrollLeft;
    mouseY = window.event.clientY + document.body.scrollTop;
    if (mouseX > menu.left  &&
        mouseX < menu.right &&
        mouseY > menu.top  &&
        mouseY < menu.bottom)
      return true;
  }
  wasClosed = false;
  // Is a child menu open?
  if (menu.openChild == null) {
    // No, close this menu if it is not static.
    if (!menu.isStatic) {
      menu.close();
      wasClosed = true;
    }
  }
  else {
    // Yes. Check the current mouse position to see if the pointer is over that child.
    if (mouseX < menu.openChild.left  ||
        mouseX > menu.openChild.right ||
        mouseY < menu.openChild.top   ||
        mouseY > menu.openChild.bottom) {
      // Mouse is not on the child menu. Close this menu if it is not static,otherwise close the child (because it should no longer be active).
      if (!menu.isStatic) {
        menu.close();
        wasClosed = true;
      }
      else
        menu.openChild.close();
    }
  }
  // If this menu was closed, start looping up the menu hierarchy checking each parent. If the mouse is not over the parent, close it. This will continue until all menus are closed or an active or static menu is found.
  while (wasClosed && menu.isSubmenu && !menu.parentMenu.isStatic) {
    wasClosed = false;
    if (mouseX < menu.parentMenu.left  ||
        mouseX > menu.parentMenu.right ||
        mouseY < menu.parentMenu.top   ||
        mouseY > menu.parentMenu.bottom) {
      menu.parentMenu.close();
      wasClosed = true;
      menu = menu.parentMenu;
    }
  }
  return true;
}
function popUpMenuItemOn(e) {
  var menu, item;
  menu = popUpMenus[this.index];
  item = menu.items[this.itemIndex];
  // If a child menu is open, close it (it may belong to some other item).
  if (menu.openChild)
    menu.openChild.close();
  showLayer(item.highLayer);
  // If this item has a submenu open it.
  if (item.subMenu)
  	item.subMenu.create()
  if (item.subMenu)
    item.subMenu.open(null, null);
}
function popUpMenuItemOff(e) {
  var menu, item;
  menu = popUpMenus[this.index];
  item = menu.items[this.itemIndex];
  // If this item has a submenu and it is open, exit.
  if (item.subMenu != null && item.subMenu.isOpen)
    return;
  hideLayer(item.highLayer);
}
function popUpMenuItemClick(e) {
  var menu, item;
  menu = popUpMenus[this.index];
  item = menu.items[this.itemIndex];
  if (item.link == "")
    return true;
  // Close the entire chain of menus.
  hideLayer(item.highLayer);
  while(menu.isSubmenu)
    menu = menu.parentMenu;
  if (!menu.isStatic)
    menu.close();
  else if (menu.openChild != null)
    menu.openChild.close();
  if (item.link.indexOf("javascript:") == 0)
    eval(item.link);
  else
    top.location.href = item.link;
  return true;
}
var mouseX = 0;
var mouseY = 0;
if (isMinNS4)
  document.captureEvents(Event.MOUSEMOVE);
document.onmousemove = popUpMenuGetMousePosition;
function popUpMenuGetMousePosition(e) {
  if (isMinNS4) {
    mouseX = e.pageX;
    mouseY = e.pageY;
  }
  if (isMinIE4) {
    mouseX = window.event.clientX + document.body.scrollLeft;
    mouseY = window.event.clientY + document.body.scrollTop;
  }
}
var origWidth;
var origHeight;
if (isMinNS4) {
  origWidth  = window.innerWidth;
  origHeight = window.innerHeight;
}
window.onresize = popUpMenuReload;
function popUpMenuReload() {
  if (isMinNS4 && origWidth == window.innerWidth && origHeight == window.innerHeight)
    return;
  if (isMinIE4)
    return;//setTimeout('window.location.href = window.location.href', 2000);
  else
    window.location.href = window.location.href;
}