	 bV = parseInt(navigator.appVersion);
	 isPC = (navigator.userAgent.indexOf('Win')  != -1 && navigator.userAgent.indexOf('95')  != -1 )? true : false;
	 IE4 = ((document.all) && (bV>=4)) ? true : false;
	 NS4 = (!(navigator.userAgent.indexOf('4.04') !=-1 && isPC) && document.layers) ? true : false;
	 NS6 = (document.getElementById)? true : false;
	 ver4 = (NS4 || IE4 || NS6) ? true : false;
	 NN4 = NS4 && bV >= 4 && bV < 5;

	function init() {
		initDHTMLAPI(); 
		menuwidth = getObjectWidth(homeMenu)+8;
	}
	
	function layerObj(name,topPos) {
		this.name = name;
		this.top = topPos;
	}

	var fudgeFactor = {top:-1, left:-1};
	var vizLayer = new Array();
	var invisiBot = new Array();
	var homeMenuTop = 100;
	var homeMenu = "homeMenu";
	var menuwidth;
	
	function showMenu(evt, lyrname) { // evt need only be the word 'event' sans quotes
		if(NS4 || (NS6 && !IE4)){
			topPos = evt.pageY;
			leftPos = evt.pageX;
		}else{
			topPos = window.event.y;
			topPos += document.body.scrollTop;
			leftPos = window.event.x;
			// leftPos += document.body.scrollLeft;  //needed?
		}
		
		var level = parseInt(leftPos/menuwidth);
		if (vizLayer.length == 0) {
			level = 0;
		}

		var obj = getRawObject(lyrname);
		var menuPosfudge = homeMenuTop;

		for (var i=0; i < level; i++) {
			menuPosfudge += vizLayer[i].top;
		}
		
		var x = menuwidth;
//		var y = topPos - menuPosfudge - (getObjectHeight(obj)/2);
		var y = topPos - 10; // use 10 as a way to slightly adjust the child menu to meet up with the parent's top menu position.


//		y = (y < (-1*menuPosfudge))? (-1*menuPosfudge):y;

		if (fudgeFactor.top == -1) {
			if ((typeof obj.offsetTop == "number") && obj.offsetTop > 0) {
				fudgeFactor.top = obj.offsetTop;
				fudgeFactor.left = obj.offsetLeft;
			} else {
				fudgeFactor.top = 0;
				fudgeFactor.left = 0;
			}
			if (obj.offsetWidth && obj.scrollWidth) {
				if (obj.offsetWidth != obj.scrollWidth) {
					obj.style.width = obj.scrollWidth;    
				}
			}
		}

		x = x - fudgeFactor.left;
		y = y - fudgeFactor.top;

		shiftTo(obj, x, y);
		show(obj);
		vizLayer[vizLayer.length] = new layerObj(lyrname, y);

		var invisiblerightLyr = getRawObject('invisibleright');
		var invXpos = menuwidth + (x * (level+1)) + 3;

		shiftTo(invisiblerightLyr, invXpos, 0);
		show(invisiblerightLyr);
		
//		invisiBot[invisiBot.length] = getObjectHeight(obj) + y + menuPosfudge;
		invisiBot[invisiBot.length] = getObjectHeight(obj) + y;
		var invisiblebotLyr = getRawObject('invisiblebot');
		old_shiftTo(invisiblebotLyr, 0, findBiggest(invisiBot));
		show(invisiblebotLyr);

	}

	function hideAll(evt) {
		if(vizLayer.length == 0) return;

		if(NS4 || (NS6 && !IE4)){
			topPos = evt.pageY;
			leftPos = evt.pageX;
		}else{
			topPos = window.event.y;
			topPos += document.body.scrollTop;
			leftPos = window.event.x;
			// leftPos += document.body.scrollLeft;  //needed?
		}

		var lvl = parseInt(leftPos/menuwidth);

		if (arguments.length == 2) {
			lvl = 0;
		}

		for(var i=(vizLayer.length -1); i >=lvl ; i--) {
			var obj = getRawObject(vizLayer[i].name);
			hide(obj);
			vizLayer.length --;
			invisiBot.length --;
		}

		var invisiblerightLyr = getRawObject('invisibleright');
		var invisiblebotLyr = getRawObject('invisiblebot');

		if (lvl > 0) {
			shiftTo(invisiblerightLyr, ((lvl+1) * menuwidth), 0);
			shiftTo(invisiblebotLyr, 0, findBiggest(invisiBot));
		} else {
			hide(invisiblerightLyr);
			hide(invisiblebotLyr);
		}

	}

	function findBiggest (arr) {
		var biggest = 0;
		for (var i=0; i<arr.length; i++) {
			if (arr[i] > biggest) {
				biggest = arr[i];
			}
		}
		return biggest;
	}
window.onload = function () {
init();
highlightButton();
}
