var menuShowing      = false;
var currentMenuName  = '';
var timeOutRunning   = false;
var timeOutId        = '';
var menuHideDelay    = 300;	//in milliseconds - 1 second = 1000 milliseconds
var hOffset			 = 0;
var vOffset			 = 22;
var defaultState     = ''; 
var images = new Array();

var posCalculated = new Array();
posCalculated['fingerjl'] = false;
posCalculated['optcutt'] = false;
posCalculated['notching'] = false;
posCalculated['radialarm'] = false;
posCalculated['mitrechop'] = false;
posCalculated['doublmitre'] = false;
posCalculated['vcutting'] = false;
posCalculated['omgastop'] = false;

function showMenu(elem, menuId, state) 
{	
	if ( currentMenuName != '' && menuId != currentMenuName ) {
		//something, not this one, is showing
		hideMenuNow();
		
	} else if ( menuId == currentMenuName && timeOutRunning == true ) {
		clearTimeout(timeOutId);
		timeOutRunning = false;
		timeOutId = '';
		
	}
	
	if ( document.getElementById(menuId) ) {
		var elemImgDiv = document.getElementById("div"+menuId);
		var elemMenu = document.getElementById(menuId);
		currentMenuName = menuId;
		
		var newElem = calculateLocation(elem);
		elemImgDiv.style.left = newElem.left + "px";
		elemImgDiv.style.top = newElem.top + "px";
			
		elemMenu.style.left = newElem.left + hOffset + "px";
		elemMenu.style.top  = newElem.top + vOffset + "px";	 
		posCalculated[menuId] = true;			

		elemImgDiv.style.display = '';
		elemMenu.style.display = '';
		menuShowing = true; 
			
	}
		
}

function showMenuFromDiv(menuId)
{
	if ( menuShowing == true && currentMenuName == menuId ) {
		if ( timeOutRunning == true ) {
			clearTimeout(timeOutId);	
		}	
		
	}
	
}

function calculateLocation(element) 
{
    //This function is passed an object, generally a "this", put could be sent a document.getElementById[]
	//Returns an object of left and right browser coords for the specified document element
	var offsetLeft = element.offsetLeft;
	var offsetTop = element.offsetTop;
	var parentElement = element.offsetParent;
	while (parentElement) {
	    offsetLeft += parentElement.offsetLeft;
		offsetTop += parentElement.offsetTop;
		parentElement = parentElement.offsetParent;
	}
	return {left:offsetLeft, top:offsetTop};
}

function hideMenu()
{
	timeOutId = setTimeout('hideMenuNow()', menuHideDelay);
	timeOutRunning = true;
	
}

function hideMenuNow()
{	
	if ( menuShowing == true && document.getElementById(currentMenuName) ) {
		var elemImgDiv = document.getElementById("div" + currentMenuName);
		elemImgDiv.style.display = "none";
			
		var elemMenu = document.getElementById(currentMenuName);
		elemMenu.style.display = 'none';
		currentMenuName = '';
		menuShowing = false;
		timeOutRunning = false;
		clearTimeout(timeOutId);
		timeOutId = '';
	
		
	}	
	
}

function timalert(str)
{
	var elem = document.getElementById('timtest');
	
	elem.innerHTML = str + "<p>" + elem.innerHTML;
	
}