var DOM  = (document.getElementById)? true:false;
var OP   = (window.opera)? true:false;
var OP5x = (DOM && OP)? true:false;
var IE   = (document.all && !OP)? true:false;
var IE5x = (DOM && IE)? true:false;
var IE4  = (!DOM && IE)? true:false;       
var NC   = (window.outerWidth && !OP)? true:false;
var NC4  = (!DOM && NC)? true:false;
var NC6x = (DOM && NC)? true:false;
 
function browserObj(oname){
    if (IE4)
       return document.all[oname].style;
    else if(NC4)
       return document.layers[oname];
    else if(DOM)
       return document.getElementById(oname).style;
}
  
function swapLayer(oname,action) {
    if (action=='on')
       browserObj(oname).visibility= (NC4)?'show':'visible';
    else
       browserObj(oname).visibility= (NC4)?'hide':'hidden';
}

function getEventX(obj){
    if (NC4)
       pos = obj.pageX;
    else if(NC6x)
       pos = obj.clientX;
    else
       pos = event.clientX;
    return pos;
}

function getEventY(obj){
    if (NC4)
       pos = obj.pageY;
    else if(NC6x)
       pos = obj.clientY;
    else
       pos = event.clientY;
    return pos;
}

// find the level1 menu-field array-position 
function findPos(level2){
	for (var i=0; i<MenuList.length; i++){
	    if(MenuList[i][0]==level2) return i;
	}
}

// show the selected menu layer and call a function to hide the rest
function openLevel2(level2){
	for (var i=0; i<MenuList.length; i++) {
		if (MenuList[i][0]==0) continue;
		if (MenuList[i][0]!=level2) {
		   hideLayer(MenuList[i][0]);
		} else {
		   clearTimeout(MenuList[i][2]);
		   MenuList[i][2] = 0;
		   if (NC4){
		      activeLevel2   = level2;
		      var level1Obj  = document.layers["M"+level2];
		      var level2Obj  = document.layers[level2];
		      level2Obj.left = level1Obj.left;
		      level2Obj.top  = level1Obj.clip.height + level1Obj.top - 1;
		   }else if(NC6x){
		      activeLevel2   = level2;
		      var level1Obj  = document.getElementById("M"+level2);
		      var level2Obj  = document.getElementById(level2);
		      level2Obj.style.left = parseInt(document.defaultView.getComputedStyle(level1Obj, '').getPropertyValue("left"));
		      level2Obj.style.top  = parseInt(document.defaultView.getComputedStyle(level1Obj, '').getPropertyValue("height")) + parseInt(document.defaultView.getComputedStyle(level1Obj, '').getPropertyValue("top")) - 1;
		   }else{
		      var level1Obj  = document.all["M"+level2];
		      var level2Obj  = document.all[level2];
		      level2Obj.style.pixelLeft = level1Obj.style.pixelLeft;
		      level2Obj.style.pixelTop  = level1Obj.scrollHeight + level1Obj.style.pixelTop - 1;
		   }
		   swapLayer(level2,'on');
		}
	}
}

// hide the last active menu layer after x milliseconds
function closeLevel2(level2,timeout){
	var pos = findPos(level2);
	if (!timeout) timeout=500;
	if (typeof(pos)!= "undefined") {
	   var temp = "hideLayer('"+ level2  +"')";
	   MenuList[pos][2] = setTimeout(temp,timeout);
	}
}

// hide the selected menu layer
function hideLayer(level2){
	swapLayer(level2,'off');
	var pos = findPos(level2);
	if (typeof(pos)!= "undefined") {
	   for (var x=0; x<MenuList[pos][1].length; x++) {
		var level3=MenuList[pos][1][x];
		if (level3==0) continue;
		swapLayer(level3,'off');
	   }
	   subPos = null;
	}
}

function initMenuObjects(){
	if (NC4){
	   window.captureEvents(Event.MOUSEMOVE);
	   window.onmousemove = showLayer3;
	}else if(NC6x){
	   window.addEventListener("mouseover",showLayer3,true);
	}else{
	   // correction for Mac IE4.5 position problem
	   if (MacIE45) document.all["level1"].style.pixelTop = -5;
 	   for (var i=0; i<MenuList.length; i++){
	       if (MenuList[i][0]==0) continue;
	       var level2 = MenuList[i][0];
	       var level2Obj = document.all[level2];
	       eval('level2Obj.onmouseover = function() {activateLayer("'+level2+'");}');
	       eval('level2Obj.onmousemove = function() {showLayer3("'+level2+'");}');
	       eval('level2Obj.onmouseout  = function() {closeLevel2("'+level2+'",100);}');
	       for (var j=0; j<MenuList[i][1].length; j++){
	           if (MenuList[i][1][j]==0) continue;
	           var level3Obj = document.all[MenuList[i][1][j]];
	           eval('level3Obj.onmouseover = function() {activateLayer("'+level2+'");}');
	           eval('level3Obj.onmouseout  = function() {closeLevel2("'+level2+'",100);}');
	       }
	   }
	}
}
