/*********************************************************
 *  Menu Objekt                                          *
 *  Version: 2.05                                        *
 *                                                       *
 *  von Roland Steffen                                   *
 *  e-Mail: rolandsteffen@gmx.de                         *
 *  Homepage: http://www.rolandsteffen.de                *
 *  22. September 2003                                   *
 *                                                       *
 *  Copyright:                                           *
 *  http://www.rolandsteffen.de/copy.html                *
 *********************************************************/

/* Änderungen:
 * 
 * 27.02.2003, Änderung beim Anzeigen von Pfeilen für SubItems und SubMainItems, v2.03 --> v2.04
 * 15.09.2003, Änderung beim Menüaufbau --> horizontale Ausrichtung der Untermenüs möglich, v2.04 --> v2.05
 * 22.09.2003, Möglichkeit der Targetangabe bei Aufruf der Funktionen zum Erstellen des Menüs
 * 
 */

function Menu(id, top, left, cellwidth, cellheight)
  {
  this.align = "center";
  this.bgcolor = "#ece9d8";
  this.bgcoloractive = "#316ac5";
  this.bordercolor = "#aca899";
  this.borderbottom = 1;
  this.borderleft = 1;
  this.borderright = 1;
  this.bordertop = 1;
  this.cellheight = cellheight;
  this.cellwidth = cellwidth;
  this.color = "#000000";
  this.coloractive = "#ffffff";
  this.font = "Arial";
  this.fontsize = "12px";
  this.fontstyle = "normal";
  this.fontweight = "normal";
  this.id = id;
  this.imgalign = "center";
  this.imgsrc = "";
  this.imgsrcactive = "";
  this.imgsrcarrow = "";
  this.imgsrcarrowactive = "";
  this.left = left;
  this.letterspacing = "0px";
  this.padding = 5;
  this.textdecoration = "none";
  this.top = top;
  this.vertical = false;

  this.addItem = Menu_addItem;
  this.addMainItem = Menu_addMainItem;
  this.addSubMainItem = Menu_addSubMainItem;
  this.addSubItem = Menu_addSubItem;
  this.toString = Menu_toString;

  Menu.MenuStructList[this.id] = null;
  }

Menu.getElementCode = Menu_getElementCode;
Menu.getMenuPoint = Menu_getMenuPoint;
Menu.hide = Menu_hide;
Menu.hideall = Menu_hideall;
Menu.MenuStructList = new Object();
Menu.show = Menu_show;
Menu.writeItem = Menu_writeItem;

document.onclick = Menu.hideall;

function Menu_addMainItem(text, url)  // addMainItem(String TEXT, String URL, [String TARGET])
  {
  var arg = Menu_addMainItem.arguments;
  var i = 0;
  var lastMenuPoint = null;
  var MenuPoint = Menu.MenuStructList[this.id];
  while(MenuPoint != null)
    {
    lastMenuPoint = MenuPoint;
    MenuPoint = MenuPoint.next;
    i++;
    }

/* Änderung 22.09.03 wegen Targetangabe:
 */
  var target = (arg.length > 2) ? arg[2] : false;

  var id = this.id + "X" + i;

  var element = Menu.getElementCode(id);

/* Änderung 15.09.03 wegen Menüaufbau:
 * folgende Zeilen wurden ersetzt
 *
 *  var top = (!this.vertical) ? this.top : (i == 0) ? this.top : lastMenuPoint.top + lastMenuPoint.height - this.bordertop;
 *  var left = (this.vertical) ? this.left : (i == 0) ? this.left : lastMenuPoint.left + lastMenuPoint.width - this.borderleft;
 */

  var top = (!this.vertical || i == 0) ? (this.top) : (lastMenuPoint.top + lastMenuPoint.height - this.bordertop);
  var left = (this.vertical || i == 0) ? (this.left) : (lastMenuPoint.left + lastMenuPoint.width - this.borderleft);
  var width = this.cellwidth + this.borderleft + this.borderright;
  var height = this.cellheight + this.bordertop + this.borderbottom;

  var next = '';
  for(var j = 0; j < i; j++) next += '.next';
  eval('Menu.MenuStructList[this.id]' + next + ' = new MenuStruct(id, text, url, "MainItem", element, top, left, width, height, this.vertical, target);');  // 22.09.03

  var hide = "Menu.MenuStructList['" + this.id + "']";
  Menu.writeItem(this, new MenuStruct(id, text, url, "MainItem", element, top, left, width, height, this.vertical, target), hide);  // 22.09.03
  }

function Menu_addItem(text, url)  // addMainItem(String TEXT, String URL, [String TARGET], Int NUMMER, [...])
  {
  var arg = Menu_addItem.arguments;
  var MenuPoint = Menu.MenuStructList[this.id];

/* Änderung 22.09.03 wegen Targetangabe:
 */
  if(isNaN(arg[2]))
    {
    var l = 3;
    var target = arg[2];
    }
  else
    {
    var l = 2;
    var target = false;
    }

  var pfad = new Array();
  for(var i = l; i < arg.length; i++) pfad[i-l] = arg[i];
  MenuPoint = Menu.getMenuPoint(MenuPoint, pfad);

  var i = 0;
  var lastMenuPoint = null;
  if(MenuPoint.sub != null)
    {
    MenuPoint = MenuPoint.sub;
    while(MenuPoint != null)
      {
      lastMenuPoint = MenuPoint;
      MenuPoint = MenuPoint.next;
      i++;
      }
    }

  var id = this.id;
  for(var j = l; j < arg.length; j++)
    {
    id += "X" + arg[j];
    }
  id += "X" + i;

  var element = Menu.getElementCode(id);

/* Änderung 15.09.03 wegen Menüaufbau:
 * folgende Zeilen wurden ersetzt
 *
 *  var top = (i == 0) ? ((MenuPoint.type == "SubItem" || this.vertical) ? MenuPoint.top : MenuPoint.top + MenuPoint.height) : lastMenuPoint.top + lastMenuPoint.height - this.bordertop;
 *  var left = (i == 0) ? ((MenuPoint.type == "SubItem" || this.vertical) ? MenuPoint.left + MenuPoint.width : MenuPoint.left) : lastMenuPoint.left;
 */

  var top = (i == 0) ? ((this.vertical) ? ((MenuPoint.vertical) ? MenuPoint.top : MenuPoint.top + MenuPoint.height) : (MenuPoint.top + MenuPoint.height)) : ((this.vertical) ? (lastMenuPoint.top + lastMenuPoint.height - this.bordertop) : (lastMenuPoint.top));
  var left = (i == 0) ? ((this.vertical) ? ((MenuPoint.vertical) ? MenuPoint.left + MenuPoint.width : MenuPoint.left) : (this.left)) : ((this.vertical) ? (lastMenuPoint.left) : (lastMenuPoint.left + lastMenuPoint.width - this.borderleft));
  var width = this.cellwidth + this.borderleft + this.borderright;
  var height = this.cellheight + this.bordertop + this.borderbottom;

  var next = '';
  for(var j = l; j < arg.length; j++)
    {
    for(var k = 0; k < arg[j]; k++) next += '.next';
    next += '.sub';
    }
  var firstSubItem = next;
  for(var j = 0; j < i; j++) next += '.next';
  eval('Menu.MenuStructList[this.id]' + next + ' = new MenuStruct(id, text, url, "Item", element, top, left, width, height, this.vertical, target);');  // 22.09.03

  var hide = "Menu.MenuStructList['" + this.id + "']" + firstSubItem;
  Menu.writeItem(this, new MenuStruct(id, text, url, "Item", element, top, left, width, height, this.vertical, target), hide);  // 22.09.03
  }

function Menu_addSubMainItem(text)  // addMainItem(String TEXT, [String TARGET])
  {
  var arg = Menu_addSubMainItem.arguments;
  var i = 0;
  var lastMenuPoint = null;
  var MenuPoint = Menu.MenuStructList[this.id];
  while(MenuPoint != null)
    {
    lastMenuPoint = MenuPoint;
    MenuPoint = MenuPoint.next;
    i++;
    }

/* Änderung 22.09.03 wegen Targetangabe:
 */
  var target = (arg.length > 1) ? arg[1] : false;

  var id = this.id + "X" + i;

  var element = Menu.getElementCode(id);

/* Änderung 15.09.03 wegen Menüaufbau:
 * folgende Zeilen wurden ersetzt
 *
 *  var top = (!this.vertical) ? this.top : (i == 0) ? this.top : lastMenuPoint.top + lastMenuPoint.height - this.bordertop;
 *  var left = (this.vertical) ? this.left : (i == 0) ? this.left : lastMenuPoint.left + lastMenuPoint.width - this.borderleft;
 */

  var top = (!this.vertical || i == 0) ? (this.top) : (lastMenuPoint.top + lastMenuPoint.height - this.bordertop);
  var left = (this.vertical || i == 0) ? (this.left) : (lastMenuPoint.left + lastMenuPoint.width - this.borderleft);
  var width = this.cellwidth + this.borderleft + this.borderright;
  var height = this.cellheight + this.bordertop + this.borderbottom;

  var next = '';
  for(var j = 0; j < i; j++) next += '.next';
  eval('Menu.MenuStructList[this.id]' + next + ' = new MenuStruct(id, text, url, "SubMainItem", element, top, left, width, height, this.vertical, target);');  // 22.09.03

  var hide = "Menu.MenuStructList['" + this.id + "']";
  var show = "Menu.MenuStructList['" + this.id + "']" + next;
  var url = "javascript:Menu.show(" + show + ");";
  Menu.writeItem(this, new MenuStruct(id, text, url, "SubMainItem", element, top, left, width, height, this.vertical, target), hide, show);  // 22.09.03
  }

function Menu_addSubItem(text)  // addMainItem(String TEXT, [String TARGET], Int NUMMER, [...])
  {
  var arg = Menu_addSubItem.arguments;
  var MenuPoint = Menu.MenuStructList[this.id];

/* Änderung 22.09.03 wegen Targetangabe:
 */
  if(isNaN(arg[1]))
    {
    var l = 2;
    var target = arg[1];
    }
  else
    {
    var l = 1;
    var target = false;
    }

  var pfad = new Array();
  for(var i = l; i < arg.length; i++) pfad[i-l] = arg[i];
  MenuPoint = Menu.getMenuPoint(MenuPoint, pfad);

  var i = 0;
  var lastMenuPoint = null;
  if(MenuPoint.sub != null)
    {
    MenuPoint = MenuPoint.sub;
    while(MenuPoint != null)
      {
      lastMenuPoint = MenuPoint;
      MenuPoint = MenuPoint.next;
      i++;
      }
    }

  var id = this.id;
  for(var j = l; j < arg.length; j++)
    {
    id += "X" + arg[j];
    }
  id += "X" + i;

  var element = Menu.getElementCode(id);

/* Änderung 15.09.03 wegen Menüaufbau:
 * folgende Zeilen wurden ersetzt
 *
 *  var top = (i == 0) ? ((MenuPoint.type == "SubItem" || this.vertical) ? MenuPoint.top : MenuPoint.top + MenuPoint.height) : lastMenuPoint.top + lastMenuPoint.height - this.bordertop;
 *  var left = (i == 0) ? ((MenuPoint.type == "SubItem" || this.vertical) ? MenuPoint.left + MenuPoint.width : MenuPoint.left) : lastMenuPoint.left;
 */

  var top = (i == 0) ? ((this.vertical) ? ((MenuPoint.vertical) ? MenuPoint.top : MenuPoint.top + MenuPoint.height) : (MenuPoint.top + MenuPoint.height)) : ((this.vertical) ? (lastMenuPoint.top + lastMenuPoint.height - this.bordertop) : (lastMenuPoint.top));
  var left = (i == 0) ? ((this.vertical) ? ((MenuPoint.vertical) ? MenuPoint.left + MenuPoint.width : MenuPoint.left) : (this.left)) : ((this.vertical) ? (lastMenuPoint.left) : (lastMenuPoint.left + lastMenuPoint.width - this.borderleft));
  var width = this.cellwidth + this.borderleft + this.borderright;
  var height = this.cellheight + this.bordertop + this.borderbottom;

  var next = '';
  for(var j = l; j < arg.length; j++)
    {
    for(var k = 0; k < arg[j]; k++) next += '.next';
    next += '.sub';
    }
  var firstSubItem = next;
  for(var j = 0; j < i; j++) next += '.next';
  eval('Menu.MenuStructList[this.id]' + next + ' = new MenuStruct(id, text, url, "SubItem", element, top, left, width, height, this.vertical, target);');  // 22.09.03

  var hide = "Menu.MenuStructList['" + this.id + "']" + firstSubItem;
  var show = "Menu.MenuStructList['" + this.id + "']" + next;
  var url = "javascript:Menu.show(" + show + ");";
  Menu.writeItem(this, new MenuStruct(id, text, url, "SubItem", element, top, left, width, height, this.vertical, target), hide, show);  // 22.09.03
  }

function Menu_getMenuPoint(MenuPoint, pfad)
  {
  var Fehler = "Es ist ein Fehler beim Aufruf einer Methode aufgetreten.";
  for(var i = 0; i < pfad.length; i++)
    {
    for(var j = 0; j <= pfad[i]; j++)
      {
      if(j == pfad[i])
        {
        if(MenuPoint.type != "SubItem" && MenuPoint.type != "SubMainItem")
          {
          alert(Fehler + "\nElement ist nicht vom Type SubItem oder SubMainItem");
          return;
          }
        if(i == pfad.length - 1) break;
        if(MenuPoint.sub == null)
          {
          alert(Fehler + "\nElement hat kein SubItem.");
          return;
          }
        MenuPoint = MenuPoint.sub;
        }
      else
        {
        if(MenuPoint.next == null)
          {
          alert(Fehler + "\nElement existiert nicht.");
          return; 
          }
        MenuPoint = MenuPoint.next;
        }
      }
    }
  return MenuPoint;
  }

function Menu_getElementCode(id)
  {
  var element = new Array(3);
  element[0] = (document.all) ? "document.all." + id + ".style" : (document.getElementById) ? "document.getElementById('" + id + "').style" : (document.layers) ? "document." + id : null;
  element[1] = (document.all) ? "document.all." + id + "XonMouseout.style" : (document.getElementById) ? "document.getElementById('" + id + "XonMouseout').style" : (document.layers) ? "document." + id + ".document." + id + "XonMouseout" : null;
  element[2] = (document.all) ? "document.all." + id + "XonMouseover.style" : (document.getElementById) ? "document.getElementById('" + id + "XonMouseover').style" : (document.layers) ? "document." + id + ".document." + id + "XonMouseover" : null;
  return element;
  }

function Menu_hideall()
  {
  for(var item in Menu.MenuStructList)
    {
    var P = Menu.MenuStructList[item];
    Menu.hide(P);
    while(P != null)
      {
      P.element[1].visibility = ((document.all || document.getElementById) ? "visible" : (document.layers) ? "show" : "");
      P.element[2].visibility = ((document.all || document.getElementById) ? "hidden" : (document.layers) ? "hide" : "");
      P = P.next;
      }
    }
  return true;
  }

function Menu_hide(MenuPoint, close)
  {
  while(MenuPoint != null)
    {
    if(MenuPoint.type == "SubItem" || MenuPoint.type == "SubMainItem") Menu.hide(MenuPoint.sub, true);
    if(close) for(i = 0; i < 3; i++) MenuPoint.element[i].visibility = ((document.all || document.getElementById) ? "hidden" : (document.layers) ? "hide" : "");
    MenuPoint = MenuPoint.next;
    }
  }

function Menu_show(MenuPoint)
  {
  MenuPoint = MenuPoint.sub;
  while(MenuPoint != null)
    {
    for(i = 0; i < 2; i++) MenuPoint.element[i].visibility = ((document.all || document.getElementById) ? "visible" : (document.layers) ? "show" : "");
    MenuPoint = MenuPoint.next;
    }
  }

function Menu_writeItem(currentMenu, MenuPoint)
  {
  var menufunctions = ((Menu_writeItem.arguments[2]) ? " Menu.hide(" + Menu_writeItem.arguments[2] + ", false);" : "") + ((Menu_writeItem.arguments[3]) ? " Menu.show(" + Menu_writeItem.arguments[3] + ");" : "");

/* Änderung 27.02.03 wegen Pfeil bei Submenüs:
 * Anfang -->
 *  var arrow = '<font style="font-family:' + currentMenu.font + '; font-size:' + currentMenu.fontsize + '; font-weight:' + currentMenu.fontweight + '; color:' + currentMenu.color + ';">&gt;<font>';
 *  var arrowactive = '<font style="font-family:' + currentMenu.font + '; font-size:' + currentMenu.fontsize + '; font-weight:' + currentMenu.fontweight + '; color:' + currentMenu.coloractive + ';">&gt;<font>';
 * <-- Ende
 */

  var code = '';

  if(document.all || document.getElementById)
    {
	code += '<DIV ID=' 		+ MenuPoint.id		 	+ ' ';
	code += 'STYLE="';
	code += 'position:'		+ 'absolute'			+ '; ';
	code += 'top:' 			+ MenuPoint.top 		+ '; ';
	code += 'left:' 		+ MenuPoint.left	 	+ '; ';
	code += 'width:' 		+ MenuPoint.width 		+ '; ';
	code += 'height:' 		+ MenuPoint.height		+ '; ';
	code += 'background-color:' 	+ currentMenu.bordercolor 	+ ';';
	code += '">\n';

	code += '<DIV ID=' 		+ MenuPoint.id + "XonMouseout" 	+ ' ';
	code += 'STYLE="';
	code += 'position:'		+ 'absolute'			+ '; ';
	code += 'top:' 			+ currentMenu.bordertop		+ '; ';
	code += 'left:' 		+ currentMenu.borderleft	+ '; ';
	code += 'width:' 		+ currentMenu.cellwidth		+ '; ';
	code += 'height:' 		+ currentMenu.cellheight	+ '; ';
	code += 'background-color:' 	+ currentMenu.bgcolor		+ '; ';
	code += 'text-align:'		+ currentMenu.align 		+ '; ';
	code += 'line-height:' 		+ currentMenu.cellheight	+ 'px; ';
	code += 'visibility:'		+ 'visible'			+ ';';
	code += '">\n';

	code += '<TABLE ';
	code += 'WIDTH='		+ currentMenu.cellwidth		+ ' ';
	code += 'HEIGHT='		+ currentMenu.cellheight	+ ' ';
	code += 'CELLPADDING='		+ 0				+ ' ';
	code += 'CELLSPACING='		+ 0				+ ' ';
	code += 'BORDER='		+ 0				+ '';
	code += '>\n';
	code += '<TR>\n';
	code += '<TD ';
	code += 'WIDTH='		+ ((currentMenu.imgsrc == "") ? currentMenu.padding : currentMenu.cellheight) + ' ';
	code += 'HEIGHT='		+ currentMenu.cellheight	+ ' ';
	code += 'ALIGN='		+ currentMenu.imgalign		+ '';
	code += '>';

	code += ((currentMenu.imgsrc == "") ? '&nbsp;' : ('<img src=' + currentMenu.imgsrc + '>'));

	code += '</TD>\n';
	code += '<TD ';
	code += 'HEIGHT='		+ currentMenu.cellheight	+ ' ';
	code += 'ALIGN='		+ currentMenu.align		+ '';
	code += '>\n';

	code += '<A ';
	code += 'onMouseover="' 	+ MenuPoint.element[1] + ".visibility = 'hidden';" + MenuPoint.element[2] + ".visibility = 'visible'; " + menufunctions + '" ';
	code += 'onClick="'		+ 'javascript:setTimeout(\'Menu.hideall()\', 0);'	+ '" ';
	code += 'HREF="' 		+ MenuPoint.url		 	+ '" ';
        code += (MenuPoint.target) ? 'TARGET="' + MenuPoint.target + '" ' : '';  // 22.09.03
	code += 'STYLE="';
	code += 'color:' 		+ currentMenu.color		+ '; ';
	code += 'font-family:' 		+ currentMenu.font		+ '; ';
	code += 'font-size:' 		+ currentMenu.fontsize		+ '; ';
	code += 'font-style:'		+ currentMenu.fontstyle		+ '; ';
	code += 'font-weight:' 		+ currentMenu.fontweight	+ '; ';
	code += 'letter-spacing:'	+ currentMenu.letterspacing 	+ '; ';
	code += 'text-decoration:'	+ currentMenu.textdecoration	+ '; ';
	code += 'text-align:'		+ currentMenu.align		+ ';';
	code += '">';
	code += MenuPoint.text;
	code += '</A>\n';

	code += '</TD>\n';
	code += '<TD ';
	code += 'WIDTH='		+ ((currentMenu.imgsrcarrow == "") ? currentMenu.padding : currentMenu.cellheight) + ' ';
	code += 'HEIGHT='		+ currentMenu.cellheight	+ ' ';
	code += 'ALIGN='		+ currentMenu.imgalign		+ '';
	code += '>';

/* Änderung 27.02.03 wegen Pfeil bei Submenüs:
 * Anfang -->
 *	code += ((currentMenu.imgsrcarrow == "") ? ((MenuPoint.type == "SubItem") ? arrow : '&nbsp;') : (MenuPoint.type == "SubItem") ? ('<img src=' + currentMenu.imgsrcarrow + '>') : '&nbsp;');
 */	code += ((currentMenu.imgsrcarrow == "") ? '&nbsp;' : (MenuPoint.type == "SubItem" || MenuPoint.type == "SubMainItem") ? ('<img src=' + currentMenu.imgsrcarrow + '>') : '&nbsp;');
/* <-- Ende
 */

	code += '</TD>\n';
	code += '</TR>\n';
	code += '</TABLE>\n';

	code += '</DIV>\n';

	code += '<DIV ID=' 		+ MenuPoint.id + "XonMouseover"	+ ' ';
	code += 'STYLE="';
	code += 'position:'		+ 'absolute'			+ '; ';
	code += 'top:' 			+ currentMenu.bordertop		+ '; ';
	code += 'left:' 		+ currentMenu.borderleft	+ '; ';
	code += 'width:' 		+ currentMenu.cellwidth		+ '; ';
	code += 'height:' 		+ currentMenu.cellheight	+ '; ';
	code += 'background-color:' 	+ currentMenu.bgcoloractive	+ '; ';
	code += 'text-align:'		+ currentMenu.align		+ '; ';
	code += 'line-height:' 		+ currentMenu.cellheight	+ 'px; ';
	code += 'visibility:'		+ 'hidden'			+ ';';
	code += '">\n';

	code += '<TABLE ';
	code += 'WIDTH='		+ currentMenu.cellwidth		+ ' ';
	code += 'HEIGHT='		+ currentMenu.cellheight	+ ' ';
	code += 'CELLPADDING='		+ 0				+ ' ';
	code += 'CELLSPACING='		+ 0				+ ' ';
	code += 'BORDER='		+ 0				+ '';
	code += '>\n';
	code += '<TR>\n';
	code += '<TD ';
	code += 'WIDTH='		+ ((currentMenu.imgsrc == "") ? currentMenu.padding : currentMenu.cellheight) + ' ';
	code += 'HEIGHT='		+ currentMenu.cellheight	+ ' ';
	code += 'ALIGN='		+ currentMenu.imgalign		+ '';
	code += '>';

	code += ((currentMenu.imgsrcactive == "") ? '&nbsp;' : ('<img src=' + currentMenu.imgsrcactive + '>'));

	code += '</TD>\n';
	code += '<TD ';
	code += 'HEIGHT='		+ currentMenu.cellheight	+ ' ';
	code += 'ALIGN='		+ currentMenu.align		+ '';
	code += '>\n';

	code += '<A ';
	code += 'onMouseover="'		+ menufunctions			+ '" ';
	code += 'onMouseout="' 		+ MenuPoint.element[2] + ".visibility = 'hidden'; " + MenuPoint.element[1] + ".visibility = 'visible';" + '" ';
	code += 'onClick="'		+ 'javascript:setTimeout(\'Menu.hideall()\', 0);'	+ '" ';
	code += 'HREF="' 		+ MenuPoint.url			+ '" ';
        code += (MenuPoint.target) ? 'TARGET="' + MenuPoint.target + '" ' : '';  // 22.09.03
	code += 'STYLE="';
	code += 'color:' 		+ currentMenu.coloractive	+ '; ';
	code += 'font-family:' 		+ currentMenu.font		+ '; ';
	code += 'font-size:' 		+ currentMenu.fontsize		+ '; ';
	code += 'font-style:'		+ currentMenu.fontstyle		+ '; ';
	code += 'font-weight:' 		+ currentMenu.fontweight	+ '; ';
	code += 'letter-spacing:'	+ currentMenu.letterspacing 	+ '; ';
	code += 'text-decoration:'	+ currentMenu.textdecoration	+ '; ';
	code += 'text-align:'		+ currentMenu.align		+ ';';
	code += '">';
	code += MenuPoint.text;
	code += '</A>\n';

	code += '</TD>\n';
	code += '<TD ';
	code += 'WIDTH='		+ ((currentMenu.imgsrcarrow == "") ? currentMenu.padding : currentMenu.cellheight) + ' ';
	code += 'HEIGHT='		+ currentMenu.cellheight	+ ' ';
	code += 'ALIGN='		+ currentMenu.imgalign		+ '';
	code += '>';

/* Änderung 27.02.03  wegen Pfeil bei Submenüs:
 * Anfang -->
 *	code += ((currentMenu.imgsrcarrowactive == "") ? ((MenuPoint.type == "SubItem") ? arrowactive : '&nbsp;') : (MenuPoint.type == "SubItem") ? ('<img src=' + currentMenu.imgsrcarrowactive + '>') : '&nbsp;');
 */	code += ((currentMenu.imgsrcarrowactive == "") ? '&nbsp;' : (MenuPoint.type == "SubItem" || MenuPoint.type == "SubMainItem") ? ('<img src=' + currentMenu.imgsrcarrowactive + '>') : '&nbsp;');
/* <-- Ende
 */

	code += '</TD>\n';
	code += '</TR>\n';
	code += '</TABLE>\n';

	code += '</DIV>\n';

	code += '</DIV>\n\n';
    }
  else if(document.layers)
    {
	code +=	'<style type="text/css">\n';
	code += '.'			+ MenuPoint.id + "onMOutS"	+ ' {\n';
	code += 'color:' 		+ currentMenu.color		+ ';\n';
	code += 'font-family:' 		+ currentMenu.font		+ ';\n';
	code += 'font-size:' 		+ currentMenu.fontsize		+ ';\n';
	code += 'font-style:'		+ currentMenu.fontstyle		+ ';\n';
	code += 'font-weight:' 		+ currentMenu.fontweight	+ ';\n';
	code += 'letter-spacing:'	+ currentMenu.letterspacing 	+ ';\n';
	code += 'text-decoration:'	+ currentMenu.textdecoration	+ ';\n';
	code += 'text-align:'		+ currentMenu.align		+ ';\n';
        code += '}\n';

	code += '.'			+ MenuPoint.id + "onMOverS"	+ ' {\n';
	code += 'color:' 		+ currentMenu.coloractive	+ ';\n';
	code += 'font-family:' 		+ currentMenu.font		+ ';\n';
	code += 'font-size:' 		+ currentMenu.fontsize		+ ';\n';
	code += 'font-style:'		+ currentMenu.fontstyle		+ ';\n';
	code += 'font-weight:' 		+ currentMenu.fontweight	+ ';\n';
	code += 'letter-spacing:'	+ currentMenu.letterspacing 	+ ';\n';
	code += 'text-decoration:'	+ currentMenu.textdecoration	+ ';\n';
	code += 'text-align:'		+ currentMenu.align		+ ';\n';
        code += '}\n';
	code += '</style>\n';

        document.write(code);
        code = '';

	code += '<LAYER NAME=' 		+ MenuPoint.id		 	+ ' ';
	code += 'TOP=' 			+ MenuPoint.top 		+ ' ';
	code += 'LEFT=' 		+ MenuPoint.left	 	+ ' ';
	code += 'WIDTH=' 		+ MenuPoint.width 		+ ' ';
	code += 'HEIGHT=' 		+ MenuPoint.height		+ ' ';
	code += 'BGCOLOR=' 		+ currentMenu.bordercolor 	+ '';
	code += '>\n';

	code += '<LAYER NAME=' 		+ MenuPoint.id + "XonMouseout" 	+ ' ';
	code += 'TOP=' 			+ currentMenu.bordertop		+ ' ';
	code += 'LEFT=' 		+ currentMenu.borderleft	+ ' ';
	code += 'WIDTH=' 		+ currentMenu.cellwidth		+ ' ';
	code += 'HEIGHT=' 		+ currentMenu.cellheight	+ ' ';
	code += 'BGCOLOR=' 		+ currentMenu.bgcolor		+ ' ';
	code += 'VISIBILITY=show';
	code += '>\n';

	code += '<TABLE ';
	code += 'WIDTH='		+ currentMenu.cellwidth		+ ' ';
	code += 'HEIGHT='		+ currentMenu.cellheight	+ ' ';
	code += 'CELLPADDING='		+ 0				+ ' ';
	code += 'CELLSPACING='		+ 0				+ ' ';
	code += 'BORDER='		+ 0				+ ' ';
	code += '>\n';
	code += '<TR>\n';
	code += '<TD ';
	code += 'WIDTH='		+ ((currentMenu.imgsrc == "") ? currentMenu.padding : currentMenu.cellheight) + ' ';
	code += 'HEIGHT='		+ currentMenu.cellheight	+ ' ';
	code += 'ALIGN='		+ currentMenu.imgalign		+ '';
	code += '>';

	code += ((currentMenu.imgsrc == "") ? '&nbsp;' : ('<img src=' + currentMenu.imgsrc + '>'));

	code += '</TD>\n';
	code += '<TD ';
	code += 'WIDTH='		+ (currentMenu.cellwidth - ((currentMenu.imgsrc == "") ? currentMenu.padding : currentMenu.cellheight) - ((currentMenu.imgsrcarrow == "") ? currentMenu.padding : currentMenu.cellheight)) + ' ';
	code += 'HEIGHT='		+ currentMenu.cellheight	+ ' ';
	code += 'ALIGN='		+ currentMenu.align		+ '';
	code += '>\n';

	code += '<A ';
	code += 'onMouseover="' 	+ MenuPoint.element[2] + ".visibility = 'show'; " + MenuPoint.element[1] + ".visibility = 'hide';" + menufunctions + '" ';
	code += 'onClick="'		+ 'javascript:setTimeout(\'Menu.hideall()\', 0);'	+ '" ';
	code += 'HREF="' 		+ MenuPoint.url		 	+ '" ';
        code += (MenuPoint.target) ? 'TARGET="' + MenuPoint.target + '" ' : '';  // 22.09.03
	code += 'class="'		+ MenuPoint.id + "onMOutS"	+ '">';
	code += MenuPoint.text;
	code += '</A>\n';

	code += '</TD>\n';
	code += '<TD ';
	code += 'WIDTH='		+ ((currentMenu.imgsrcarrow == "") ? currentMenu.padding : currentMenu.cellheight) + ' ';
	code += 'HEIGHT='		+ currentMenu.cellheight	+ ' ';
	code += 'ALIGN='		+ currentMenu.imgalign		+ '';
	code += '>';

/* Änderung 27.02.03  wegen Pfeil bei Submenüs:
 * Anfang -->
 *	code += ((currentMenu.imgsrcarrow == "") ? ((MenuPoint.type == "SubItem") ? arrow : '&nbsp;') : (MenuPoint.type == "SubItem") ? ('<img src=' + currentMenu.imgsrcarrow + '>') : '&nbsp;');
 */	code += ((currentMenu.imgsrcarrow == "") ? '&nbsp;' : (MenuPoint.type == "SubItem" || MenuPoint.type == "SubMainItem") ? ('<img src=' + currentMenu.imgsrcarrow + '>') : '&nbsp;');
/* <-- Ende
 */

	code += '</TD>\n';
	code += '</TR>\n';
	code += '</TABLE>\n';
	code += '</LAYER>\n';

	code += '<LAYER NAME=' 		+ MenuPoint.id + "XonMouseover"	+ ' ';
	code += 'TOP=' 			+ currentMenu.bordertop		+ ' ';
	code += 'LEFT=' 		+ currentMenu.borderleft	+ ' ';
	code += 'WIDTH=' 		+ currentMenu.cellwidth		+ ' ';
	code += 'HEIGHT=' 		+ currentMenu.cellheight	+ ' ';
	code += 'BGCOLOR=' 		+ currentMenu.bgcoloractive	+ ' ';
	code += 'VISIBILITY=hide';
	code += '>\n';

	code += '<TABLE ';
	code += 'WIDTH='		+ currentMenu.cellwidth		+ ' ';
	code += 'HEIGHT='		+ currentMenu.cellheight	+ ' ';
	code += 'CELLPADDING='		+ 0				+ ' ';
	code += 'CELLSPACING='		+ 0				+ ' ';
	code += 'BORDER='		+ 0				+ ' ';
	code += '>\n';
	code += '<TR>\n';
	code += '<TD ';
	code += 'WIDTH='		+ ((currentMenu.imgsrc == "") ? currentMenu.padding : currentMenu.cellheight) + ' ';
	code += 'HEIGHT='		+ currentMenu.cellheight	+ ' ';
	code += 'ALIGN='		+ currentMenu.imgalign		+ '';
	code += '>';

	code += ((currentMenu.imgsrcactive == "") ? '&nbsp;' : ('<img src=' + currentMenu.imgsrcactive + '>'));

	code += '</TD>\n';
	code += '<TD ';
	code += 'WIDTH='		+ (currentMenu.cellwidth - ((currentMenu.imgsrc == "") ? currentMenu.padding : currentMenu.cellheight) - ((currentMenu.imgsrcarrow == "") ? currentMenu.padding : currentMenu.cellheight)) + ' ';
	code += 'HEIGHT='		+ currentMenu.cellheight	+ ' ';
	code += 'ALIGN='		+ currentMenu.align		+ '';
	code += '>\n';

	code += '<A ';
	code += 'onMouseover="'		+ menufunctions			+ '" ';
	code += 'onMouseout="' 		+ MenuPoint.element[1] + ".visibility = 'show'; " + MenuPoint.element[2] + ".visibility = 'hide';" + '" ';
	code += 'onClick="'		+ 'javascript:setTimeout(\'Menu.hideall()\', 0);'	+ '" ';
	code += 'HREF="' 		+ MenuPoint.url		 	+ '" ';
        code += (MenuPoint.target) ? 'TARGET="' + MenuPoint.target + '" ' : '';  // 22.09.03
	code += 'class="'		+ MenuPoint.id + "onMOverS"	+ '">';
	code += MenuPoint.text;
	code += '</A>\n';

	code += '</TD>\n';
	code += '<TD ';
	code += 'WIDTH='		+ ((currentMenu.imgsrcarrow == "") ? currentMenu.padding : currentMenu.cellheight) + ' ';
	code += 'HEIGHT='		+ currentMenu.cellheight	+ ' ';
	code += 'ALIGN='		+ currentMenu.imgalign		+ '';
	code += '>';

/* Änderung 27.02.03  wegen Pfeil bei Submenüs:
 * Anfang -->
 *	code += ((currentMenu.imgsrcarrowactive == "") ? ((MenuPoint.type == "SubItem") ? arrowactive : '&nbsp;') : (MenuPoint.type == "SubItem") ? ('<img src=' + currentMenu.imgsrcarrowactive + '>') : '&nbsp;');
 */	code += ((currentMenu.imgsrcarrowactive == "") ? '&nbsp;' : (MenuPoint.type == "SubItem" || MenuPoint.type == "SubMainItem") ? ('<img src=' + currentMenu.imgsrcarrowactive + '>') : '&nbsp;');
/* <-- Ende
 */

	code += '</TD>\n';
	code += '</TR>\n';
	code += '</TABLE>\n';
	code += '</LAYER>\n';
	code += '</LAYER>\n\n';
    }
  document.write(code);
  for(var i = 0; i < 3; i++) MenuPoint.element[i] = eval(MenuPoint.element[i]);
  setTimeout("Menu.hideall()", 100);
  }

function Menu_toString()
  {
  var text = this.id + ":\n\n"
  text += MenuStruct.getStructString(Menu.MenuStructList[this.id], 0);
  return text;
  }

function MenuStruct(id, text, url, type, element, top, left, width, height, vertical, target)
  {
  this.id = id;
  this.text = text;
  this.url = url;
  this.type = type;
  this.element = element;
  this.top = top;
  this.left = left;
  this.width = width;
  this.height = height;
  this.vertical = vertical;  // Änderung 15.09.03
  this.target = target;  // Änderung 22.09.03
  this.sub = null;
  this.next = null;
  }

MenuStruct.getStructString = MenuStruct_getStructString;

function MenuStruct_getStructString(MenuPoint, i)
  {
  var text = "";
  var k = 0;
  while(MenuPoint != null)
    {
    for(var j = 0; j < i; j++) text += "\t";
    text += "[" + (k++) + "|" + MenuPoint.text + "]\n";
    if(MenuPoint.type == "SubItem" || MenuPoint.type == "SubMainItem")
      {
      text += MenuStruct.getStructString(MenuPoint.sub, i+1);
      }
    MenuPoint = MenuPoint.next;
    }
  return text;
  }