NS4 = (document.layers);
NS6 =  ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 5))
IE4 = (document.all);
MAC45 = (navigator.appVersion.indexOf("MSIE 4.5") != -1)
ver4 = (NS4 || IE4);   
isMac = (navigator.appVersion.indexOf("Mac") != -1);
menuOffset=5;
var overmenu = 0;
var openmenu = new Array(null, null, null, null);
var overcheck = 0;
var menu_x_offset = new Array(0, -40, -40, -40);
var menu_y_offset = new Array(11, -4, -4, -4);

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
function getRealLeft(img) 
{
	// Find Position of Image File
	xPos = img.offsetLeft;
	tempEl = img.offsetParent;
  	while (tempEl != null) {
  		xPos += tempEl.offsetLeft;
  		tempEl = tempEl.offsetParent;
  	}
	return xPos;
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

function getRealTop(img) 
{
	// Find Position of Image File
	yPos = img.offsetTop;
	tempEl = img.offsetParent;
	while (tempEl != null) {
  		yPos += tempEl.offsetTop;
  		tempEl = tempEl.offsetParent;
  	}
	if (MAC45) yPos=menuOffset;
	return yPos;
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

function findloc (imgname)
{
	// Find Position of Image File
	var holding;
	if (document.all) holding = document.all[imgname + "_image"];
	if (document.getElementById) holding = document.getElementById(imgname + "_image");
	if (!holding) alert("Can't find '" + imgname + "'!");
	var canvasLeft = (NS4 && !NS6) ? holding.x : getRealLeft(holding); //
	var canvasTop = (NS4 && !NS6) ? holding.y : getRealTop(holding); //
	return ([canvasLeft,canvasTop]);
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

function showMenu(tier, imgname)
{
	// Find the menu layer
	if (NS6) 
		menu=document.getElementById(imgname+"layer")
	else if (NS4)
		menu=eval("document.layers."+imgname+"layer")
	else 
		menu=eval(imgname+"layer");

	// Set its visibility flag
	if (NS4) menu.visibility = "show"
	else if (NS6) menu.style.visibility = "visible"
    else {
        menu.filters[0].apply();
        menu.style.visibility = "visible";
        menu.filters[0].play();
    }

	// Mark the menu as open
	openmenu[tier] = imgname;
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

function hideMenu(tier)  
{
    // We want to close anything at our level or below
	for (var i = tier;i <= openmenu.length;i++) {

    	// Only do this work if the menu is open
    	if (openmenu[i] != null)  {
    
        	// Find the menu object
    		if (NS6) 
    			menu=document.getElementById(openmenu[i]+"layer")
    		else if (NS4)
    			menu=eval("document.layers."+openmenu[i]+"layer")
    		else
    			menu=eval(openmenu[i]+"layer");
    
        	// Set the menu's visibility
    		if (NS4) menu.visibility = "hide"
        	else if (NS6) menu.style.visibility = "hidden"
            else {
                menu.filters[0].apply();
                menu.style.visibility = "hidden";
                menu.filters[0].play();
            }
        	
        	// Turn off the menu
        	openmenu[i] = null;
    	}
	}
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

function popup (tier, imgname)  
{
	// First find the menu
	if (NS6) 
		menu=document.getElementById(imgname+"layer")
	else if (NS4)
		menu=eval("document.layers."+imgname+"layer")
	else
		menu=eval(imgname+"layer");

	// Now figure out the coordinates where it will appear
	if (NS4)  {
		menu.top = findloc(imgname)[1] + menu_y_offset[tier];
		menu.left = findloc(imgname)[0] + menu_x_offset[tier];
	} else if (NS6)  {
		menu.style.top = findloc(imgname)[1] + menu_y_offset[tier];
		menu.style.left = findloc(imgname)[0] + menu_x_offset[tier];
	} else  {
		menu.style.pixelTop = findloc(imgname)[1] + menu_y_offset[tier];
		menu.style.pixelLeft = findloc(imgname)[0] + menu_x_offset[tier];
	}
	
	// Now show the menu
	showMenu(tier, imgname);
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

function checkmenu (tier, check)  
{
	// Check to see if menu is open but not used, if so it is closed
	if ((openmenu[tier] != null) && (overmenu == 0) && (check == overcheck))  {
        hideMenu(tier);
	}
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

function menutimeout(tier)
{
	// Set a half second timeout when the menu is not being used to close
	overcheck = overcheck + 1;
	setTimeout("checkmenu(" + tier + ", " + overcheck + ")",500);
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
