var MDmenuWidth = 145;
var MDmenuItemHeight = 22;
var JSmenuItemHeight = 20;

var dfnMenu = false;
var dfnSubmenu;
var seeSubmenu = false;
var mouseSteps = 0;
var menuPosition = new menuPos(0,0,0);  
var submenuPosition = new menuPos(0,0,0); 
var nc4 = document.layers ? 1:0;
var ie5 = document.all && !document.getElementById ? 1:0;

/*if (nc4) { alert("Netscape 4");
} else {
  if (ie5) { alert("IE 5.0");
  } else { 
    alert ("DOM compatible"); 
  }
} */ 
 
function initMenu() {
  if (!nc4) {
    dfnMenu = document.getElementById("MDmenu");
    dfnSubmenu = document.getElementById("MDsubmenu");
  //dfnMenu = document.getElementById("MDmenu").innerHTML;
    document.onmousemove = mouse;       
  }  
  
} 

function mouse(mousePos) {
  if (mouseSteps++ < 8 ) return;
  else {
    mouseSteps = 0;
    if ( dfnMenu.style.display == "block" || (seeSubmenu && dfnSubmenu.style.display == "block") ) {
      if (window.pageXOffset) XOffset = window.pageXOffset;
       else if ( document.documentElement.scrollLeft) XOffset = document.documentElement.scrollLeft;
        else XOffset = document.body.scrollLeft;
      if (window.pageYOffset) YOffset = window.pageYOffset;
       else if (document.documentElement.scrollTop) YOffset = document.documentElement.scrollTop;
        else YOffset = document.body.scrollTop;
    
      if (!mousePos) mousePos = window.event;
      mousePosX = mousePos.clientX + XOffset;
      mousePosY = mousePos.clientY + YOffset;
      if ( seeSubmenu )  checkPos = submenuPosition;
       else checkPos = menuPosition;
      if (document.getElementById("debug")) document.getElementById("debug").value = "x=" + mousePosX + "y=" + mousePosY + "| top" + checkPos.top + "| bottom"+checkPos.bottom +"| left"+ checkPos.left +"| right"+ checkPos.right + "| SCROLL - x:"+window.pageXOffset+" y:"+ YOffset;
      if ( (mousePosX < checkPos.left || mousePosX > checkPos.right || mousePosY < checkPos.top || mousePosY > checkPos.bottom) &&
           (mousePosX < checkPos.menuLeft || mousePosX > checkPos.menuRight || mousePosY < checkPos.menuTop || mousePosY > checkPos.menuBottom) ) 
        hide();
    }        
  }
}

function show(id, submenu, top) {
 if ( submenu == -1 ) {
   showMenu = menuItems[id];
   showMenuItems = submenuItems[id];
 } else {
   if (submenuItems[id]) showMenu = submenuItems[id][submenu];  
   if (subSubmenuItems[id]) showMenuItems = subSubmenuItems[id][submenu];
   id = -1;
 }  
 if (showMenu && showMenuItems && dfnMenu) {
   posX = ((document.body.offsetWidth  - document.getElementsByTagName("table")[1].offsetWidth ) / 2 ) + MDmenuWidth;
   if ( posX < MDmenuWidth) posX = MDmenuWidth ;
   menuPosition= new menuPos(showMenu, posX, top);
   if ( (top + showMenu.height) >= (document.body.offsetHeight) ) {
       top = document.body.offsetHeight - ( showMenu.height + 5); 
       menuPosition.menuTop = top;
   }   
   //scrollUp(showMenu.width);  
   dfnMenu.style.width = showMenu.width+"px";
   dfnMenu.style.height = showMenu.height+"px";
   dfnMenu.style.top = top+"px";
   dfnMenu.style.left = posX+"px";
   dfnMenu.style.display = "block";
   //  dfnMenu.style.border = "1px solid red";
   if (dfnMenu.firstChild) dfnMenu.removeChild(dfnMenu.firstChild);
   dfnMenu.appendChild(createMenu(showMenuItems,id));
 }  
}

function showSubmenu(id, submenu) {   
    
  if ( submenuItems[id] && submenuItems[id][submenu] && subSubmenuItems[id][submenu] && dfnSubmenu ) {
   // alert ("id: "+id+", submenu: "+submenu);
    seeSubmenu = true;
    submenuTop = 2+ submenu * MDmenuItemHeight + menuPosition.menuTop;
    dfnSubmenu.style.top = submenuTop+"px";
    dfnSubmenu.style.width = submenuItems[id][submenu].width+"px";
    dfnSubmenu.style.height = submenuItems[id][submenu].height+"px";
    dfnSubmenu.style.left = (menuPosition.menuRight-25)+"px";
    dfnSubmenu.style.display = "block";  
    submenuPosition= new menuPos(submenuItems[id][submenu],menuPosition.menuRight, submenuTop);
    // dfnSubmenu.style.border = "1px solid green";
    if (dfnSubmenu.firstChild) dfnSubmenu.removeChild(dfnSubmenu.firstChild);
    dfnSubmenu.appendChild(createMenu(subSubmenuItems[id][submenu]), id);
  } 
}     

function menuPos(menuBulk, posX, top) { 
  this.top = top;
  this.right = posX;
  this.left = posX - MDmenuWidth;
  this.bottom = this.top + menuBulk.size;
  this.width = menuBulk.width;
  this.menuTop = this.top;
  this.menuLeft = posX;
  this.menuRight = posX + menuBulk.width;
  this.menuBottom = this.top + menuBulk.height;
}
 
function hide() {
  if (seeSubmenu ) {
    seeSubmenu = false;
    currentMenu = dfnSubmenu;
  } else currentMenu = dfnMenu; 
  currentMenu.style.display = "none"; 
  currentMenu.removeChild(currentMenu.firstChild);
  // mouse();
}  
     
function createMenu(menuData, menuID) {
  
  var MDmenuTable = document.createElement("table");
    MDmenuTable.style.margin = "0px";
    MDmenuTable.style.padding = "0px";
    MDmenuTable.className = "JSmenu";
  var MDmenuTbody = document.createElement("tbody");
    MDmenuTable.appendChild(MDmenuTbody);
  for (i=0; i < menuData.length ; i++) {
    var MDmenuRow = document.createElement("tr");
      MDmenuTbody.appendChild(MDmenuRow);
    var MDmenuCell = document.createElement("td");
      MDmenuCell.style.height= JSmenuItemHeight + "px";
     MDmenuRow.appendChild(MDmenuCell); 
    var menuItemTable = document.createElement("table");
    menuItemTable.className = "JSmenuItem";
    menuItemTbody = document.createElement("tbody");
    menuItemTable.appendChild(menuItemTbody);
    var menuItemRow = document.createElement("tr");
      rowID = "Sdfn" + menuID + "s" + i;
      menuItemRow.id = rowID + "r";  
      menuItemRow.className = "submenu"; 
      menuItemRow.onmouseover = new Function("mouseOver('"+rowID+"',true); showSubmenu("+menuID+","+i+");");
      menuItemRow.onmouseout = new Function("mouseOver('"+rowID+"');");
      menuItemRow.onclick = new Function("loadHref('"+rowID+"');");  
     menuItemTbody.appendChild(menuItemRow);
    var menuItemCell = document.createElement("td");
    menuItemCell.className = "JSmenuItem";
    var arrowCell = document.createElement("td"); 
    arrowCell.style.width= "7px";
  // create Anker TAG ->  <a href="link" target="target" class="submenu" >Name</a>  
    var newMenuLink = document.createElement("a");
     newMenuLink.href= menuData[i].href;
     newMenuLink.target = menuData[i].target;
     newMenuLink.className = "submenu";
     newMenuLink.id = rowID+"l";
     newMenuLink.appendChild(document.createTextNode(menuData[i].name));
    var arrow = document.createElement("img");
    if ( subSubmenuItems[menuID] && subSubmenuItems[menuID][i] && menuID ) {
      newMenuLink.setAttribute("onmouseover", "showSubmenu("+menuID+","+i+");");
   /* Pfeil anzeigen */         
      arrow.src = "/images/arr_blue.gif";             
      arrow.id = rowID+"i";
    } else arrow.src = "/images/clear.gif";
     arrow.border= 0;
     arrow.style.width= "7px";
     arrow.style.height= "7px"; 
     arrow.alt = "";
    arrowCell.appendChild(arrow);
    menuItemCell.appendChild(newMenuLink);   // Link hinzuf&uuml;gen
    menuItemRow.appendChild(menuItemCell);
    menuItemRow.appendChild(arrowCell);
     
   MDmenuCell.appendChild(menuItemTable);
  } 
  return MDmenuTable;
} 

/* menu OBJECT */

var menuItems = new Array();
var submenuItems = new Array();
var subSubmenuItems = new Array();
var activeMenu;
var activeSubmenu;

function newMenuItem(name,width,height) {
  activeMenu = menuItems.length;
  menuItems[activeMenu] = new MenuItem(name, width, height);
  return activeMenu;
}

function MenuItem(name, width, height, size, href, target) {
  this.width = width;
  this.height = height;
  if (!size ) size = MDmenuItemHeight;
  this.size = size;
  this.name = name;
  if ( href ) {
    this.href = href;
    if ( target ) this.target = target;
     else this.target = "_self"; 
  }
}

function addSubItem(name, href, target, menuIndex) {
  if (!menuIndex) menuIndex = activeMenu;
  if ( menuItems[menuIndex] ) {
    activeMenu = menuIndex;
    activeSubmenu = _addItem( submenuItems, menuIndex, name, href, target);
    return activeSubmenu;
  } else return -1;  
}

function setSubmenuPosition(width, height, size) {
  submenuItems[activeMenu][activeSubmenu].width = width;
  submenuItems[activeMenu][activeSubmenu].height = height;
  submenuItems[activeMenu][activeSubmenu].size = size;
}

function addSubSubItem(name, href, target, menuIndex, subMenuIndex) {
  if (!menuIndex) menuIndex = activeMenu;
  if (!subMenuIndex) subMenuIndex = activeSubmenu;
  if (!subSubmenuItems[menuIndex]) subSubmenuItems[menuIndex] = new Array();
  return _addItem( subSubmenuItems[menuIndex], subMenuIndex, name, href, target);
}

function _addItem(menuOBJ, menuIndex, name, href, target ) {
  if (!menuOBJ[menuIndex] ) {
    menuOBJ[menuIndex] = new Array();
    index= 0;
  } else index = menuOBJ[menuIndex].length;
  menuOBJ[menuIndex][index] = new MenuItem(name, 0, 0, 0, href, target); 
  return index;
}

function getActiveMenuName() {
  return menuItems[activeMenu]['name'];
}  

function countSubmenu(menuIndex) {
  if(!menuIndex) menuIndex = activeMenu;
    return submenuItems[menuIndex].length;
}    

