 // Don't change these parameters
var delay        = 200; /////
var menuElement  = new Array ();
var usedWidth    = 0;
var numOfMenus   = 0;
/// ----------------------------
 
// check browser version
isNC    = (document.layers) ? 1 : 0;
isOPERA = (navigator.userAgent.indexOf('Opera') >= 0)? true : false;
isIE    = (document.all && !isOPERA)? true : false;
isDOM   = (document.getElementById && !isIE && !isOPERA)? true : false;
 
var topID  = -1;
 
// constructor of menu elements
function menuConstructor (id, content, menuType)
{       
    this.ID            = id;
    this.parentID      = content [0]*1;
    this.parentItemID  = content [1]*1;
    this.width         = content [2]*1;
    this.timerID       = -1;
    this.isOn          = false;
    this.item          = new Array ();
    this.currItemID    = -1;
    this.height              = 220;
    this.x = content [3]*1;
        this.hrefLoc = content[6] || "main";
              
 
                  
    if (this.x < 0 && this.parentID == -1)
    {
        this.x = initX + usedWidth;
        usedWidth = usedWidth + this.width;
    }
    else if (this.x < 0 && this.parentID > -1)
    {
        this.x =  menuElement [this.parentID].x
                  + menuElement [this.parentID].width
                  - xOverlap;
    }
    
    this.y = content [4]*1;
    if (this.y < 0 && this.parentID == -1) {
        this.y = initY;
            //alert(this.y);    
    }
    else if (this.y < 0 && this.parentID > -1)
        this.y =  menuElement [this.parentID].y
                  + itemHeight*this.parentItemID
                  + yOverlap;
    
    items = content [5];
 
    
    if(menuType=='bottom') { /* aan de onderkant uitgelijnt */
    layerBody = '<table width=' + this.width + ' style=" height: ' + this.height + 'px" cellpadding=0 cellspacing=' + borderSize + ' border=0>';
        layerBody += '<tr><td height="100%">';
    layerBody += '<table id=table' + this.ID + ' style="height: 0px" cellpadding=0 cellspacing=0 border=0><tr><td></td></tr></table>';
        layerBody += '</td><tr>';
        layerBody += '<tr><td height="1"> </td></tr>';
  } else {                /* aan de bovenkant uitgelijnt */
    layerBody = '<table width=' + this.width + ' cellpadding=0 cellspacing=' + borderSize + ' border=0>';
  }
  
    for (j = 0; j <= items.length - 2; j = j + 2)
    {
        controlBlock = ' onMouseOver = "enterItem (' + this.ID + ', ' + ((j + 2)/2 - 1) + ');" onMouseOut = "exitItem (' + this.ID + ', ' + ((j + 2)/2 - 1) + ');" ';
        layerBody += '<td height=' + itemHeight + ' width=' + this.width + '><a class=subMenu href='+ items [j + 1] +' ' + controlBlock + 'target="' + this.hrefLoc + '">' + items [j] + '</a></td>';
        if (j < items.length - 2)
            layerBody = layerBody +  '<tr>\n';
        else
            layerBody = layerBody + '\n';
    }
 
    if (!isNC)
        layerHeader = '<div id=Menu' + this.ID +
                       ' onMouseOver="enterMenu (' + this.ID + ');" onMouseOut = "exitMenu (' + this.ID + ');"' +
                       ' style="background: ; width: ' + this.width  + '; visibility: hidden; position: absolute; z-index:1; filter:alpha(opacity=0);">';
    else
        layerHeader = '<layer id=Menu' + this.ID +
                       ' onMouseOver="enterMenu (' + this.ID + ');" onMouseOut = "exitMenu (' + this.ID + ');"' +
                       ' visibility=hide left=' + this.x +
                       ' top =' + this.y + '>';
 
    layerHeader += '<table width=' + this.width + ' cellpadding=0 cellspacing=0 border=0>' +
                    '<td >';
 
    if(menuType=='bottom') {
    layerFooter = '</table></td></table>';  
    } else {
    layerFooter = '</table></td></tr><tr><td height="1"> </td></tr></table>';
 
    }
 
 
    if (!isNC)
        layerFooter = layerFooter + '</div>';
    else
        layerFooter = layerFooter + '</layer>';
 
    document.writeln (layerHeader + layerBody + layerFooter);
 
    return this;
}
function enterTopItem (ID)
{
    if (topID != ID && topID != -1)
        hideTree (topID);
    releaseTree (ID);
    topID = ID;
    show (ID);
}
function exitTopItem (ID)
{
    menuElement [ID].timerID = setTimeout ('hide (' + ID + ')', delay);
}
function enterItem (menuID, itemID)
{
    var currItemID = menuElement [menuID].currItemID;
 
    if (currItemID != i & currItemID > -1)  
        hide (currItemID);
    
 
    for (var i = 0; i < numOfMenus; i++)
    {
        if (menuElement [i].parentID == menuID &&
            menuElement [i].parentItemID == itemID)
        {
            clearTimeout (menuElement [i].timerID);
            menuElement [i].timerID = -1;
            show (i);
            return 0;
        }
    }
 
    return -1;
}
function exitItem (menuID, itemID)
{
    for (var i = 0; i < numOfMenus; i++)
    {
        if (menuElement [i].parentID == menuID &&
            menuElement [i].parentItemID == itemID)
        {
            menuElement [i].timerID = setTimeout ('hide (' + i + ')', delay);
            return 0;
        }
    }
}
function enterMenu (ID)
{
    var parentID = menuElement [ID].parentID;
    if (parentID == -1)
    {
        clearTimeout (menuElement [ID].timerID);
        menuElement [ID].timerID = -1;
    }
    else
        releaseTree (ID);
}
 
function positionMenu (ID)
{
    
    defaultHeight = menuElement [ID].height;
    this.scrolloffset   = 0;
    
    if(window.innerHeight) {
        if(isIE) { this.scrolloffset = document.body.scrollTop; }
        else if(isNC) { this.scrolloffset = window.pageYOffset; } 
    }
    else if(document.documentElement && document.documentElement.clientHeight) {
        if(isIE) {this.scrolloffset = document.documentElement.scrollTop; }
        else if(isNC) { this.scrolloffset = window.pageYOffset; }
    }
    else if(document.body) {
        if(isIE) { this.scrolloffset = document.body.scrollTop; }
        else if(isNC) { this.scrolloffset = window.pageYOffset; }
    }
 
    //newHeight = parseInt(defaultHeight) - parseInt(this.scrolloffset);
    //document.all['table' + ID].style.height = newHeight+'px';
    //alert(document.all['specialHeight'].style);
    //document.all['specialHeight'].style.height = newHeight+'px';
    newHeight = parseInt(this.scrolloffset);
    document.all['table' + ID].style.height = newHeight+'px';
 
}
 
function exitMenu (ID)
{
    timeoutTree (ID);
}
function hideTree (ID)
{
    hide (ID);
    for (var j = 0; j < numOfMenus; j++)
    {
        if (menuElement [j].parentID == ID &&
            menuElement [j].isOn)
        {
            hideTree (j);
            return 0;
        }
    }
}
function releaseTree (ID)
{
    clearTimeout (menuElement [ID].timerID);
    menuElement [ID].timerID = -1;
 
    var parentID = menuElement [ID].parentID;
    if (parentID > -1)
        releaseTree (parentID);
}
function timeoutTree (ID)
{
    menuElement [ID].timerID = setTimeout ('hide (' + ID + ')', delay);
    var parentID = menuElement [ID].parentID;
    if (parentID > -1)
        timeoutTree (parentID);
}
 
function FadeIn (fadeNaam) 
{  
  if (document.all[fadeNaam].filters.alpha.opacity < 100) 
  { 
    document.all[fadeNaam].filters.alpha.opacity=document.all[fadeNaam].filters.alpha.opacity+30;
    setTimeout("FadeIn('" + fadeNaam + "')",20)
  } 
} 
 
 
 
function show (ID)
{
    if (isDOM) 
      document.getElementById('Menu' + ID).style.visibility = "visible";
 
  else if (isIE) 
    {
        document.all['Menu' + ID].style.visibility = "visible";
        document.all['Menu' + ID].filters.alpha.opacity = 85;
        var fadeNaam = 'Menu' + ID
  }
  else if (isNC) 
        document.layers[ID].visibility = "show";        
 
   //window.status = "height: " +document.getElementById('Menu' + ID).style.height + "Width: " +document.getElementById('Menu' + ID).style.width;
 
    menuElement [ID].isOn = true;
 
    if (menuElement [ID].parentID > -1)
        menuElement [menuElement [ID].parentID].currItemID = ID;
 
}
 
function hide (ID)
{
    if (isDOM) 
        document.getElementById('Menu' + ID).style.visibility = "hidden";
        else if (isIE) 
        document.all['Menu' + ID].style.visibility = "hidden";
        else if (isNC) 
        document.layers[ID].visibility = "hide";
 
    menuElement [ID].isOn = false;
 
    if (menuElement [ID].parentID > -1)
        menuElement [menuElement [ID].parentID].currItemID = -1;
}
 
function createMenuTree ()
{
    for (var i = 0; i < menuContent.length; i++)
    {
 
   var menuType = 'bottom';
 
       
        menuElement [i] = new menuConstructor (i, menuContent [i], menuType);
        numOfMenus++;
    }
}
 
//window.onload=function() {
createMenuTree ();
//} 