// store variables to control where the popup will appear relative to the cursor position
// positive numbers are below and to the right of the cursor, negative numbers are above and to the left
var xOffset = 0;
var yOffset = 0;
var isPosAbsX = false;
var isPosAbsY = false;
var posAbsX = 0;
var posAbsY = 0;


	// Global variables
	xMousePos = 0; // Horizontal position of the mouse on the screen
	yMousePos = 0; // Vertical position of the mouse on the screen

	function captureMousePosition(e) {
		if (document.layers) {
			xMousePos = e.pageX;
			yMousePos = e.pageY;
		} else if (e.pageX&&e.pageY) {
			xMousePos = e.pageX;
			yMousePos = e.pageY;
		} else if (document.all) {
			xMousePos = event.clientX+document.body.scrollLeft;
			yMousePos = event.clientY+document.body.scrollTop;
		}
	}

	function showPopupAtMousePos(targetObjectId, eventObj){
		captureMousePosition(eventObj);
		//var newXCoordinate = (eventObj.pageX)?eventObj.pageX + xOffset:eventObj.x + xOffset + ((document.body.scrollLeft)?document.body.scrollLeft:0);
		//var newYCoordinate = (eventObj.pageY)?eventObj.pageY + yOffset:eventObj.y + yOffset + ((document.body.scrollTop)?document.body.scrollTop:0);
		var newXCoordinate = xMousePos;
		var newYCoordinate = yMousePos;
		if (isPosAbsX) newXCoordinate = posAbsX;
		if (isPosAbsY) newYCoordinate = posAbsY;
		if (newXCoordinate<0)newXCoordinate=0;
		if (newYCoordinate<0)newYCoordinate=0;
		moveObject(targetObjectId, newXCoordinate+(5*1), newYCoordinate+(5*1));
		changeObjectVisibility(targetObjectId, 'visible')
	}


function showPopupX(targetObjectId, eventObj){
	var newXCoordinate = (eventObj.pageX)?eventObj.pageX + xOffset:eventObj.x + xOffset + ((document.body.scrollLeft)?document.body.scrollLeft:0);
	var newYCoordinate = (eventObj.pageY)?eventObj.pageY + yOffset:eventObj.y + yOffset + ((document.body.scrollTop)?document.body.scrollTop:0);
	if (isPosAbsX) newXCoordinate = posAbsX;
	if (isPosAbsY) newYCoordinate = posAbsY;
	if (newXCoordinate<0)newXCoordinate=0;
	if (newYCoordinate<0)newYCoordinate=0;
	moveObject(targetObjectId, newXCoordinate, newYCoordinate);
	changeObjectVisibility(targetObjectId, 'visible')
}


function showPopup (targetObjectId, eventObj) {
    if(eventObj) {
	// hide any currently-visible popups
	//hideCurrentPopup();
	// stop event from bubbling up any farther
	eventObj.cancelBubble = true;
	// move popup div to current cursor position 
	// (add scrollTop to account for scrolling for IE)
	var newXCoordinate = (eventObj.pageX)?eventObj.pageX + xOffset:eventObj.x + xOffset + ((document.body.scrollLeft)?document.body.scrollLeft:0);
	var newYCoordinate = (eventObj.pageY)?eventObj.pageY + yOffset:eventObj.y + yOffset + ((document.body.scrollTop)?document.body.scrollTop:0);
	if (isPosAbsX) newXCoordinate = posAbsX;
	if (isPosAbsY) newYCoordinate = posAbsY;
	if (newXCoordinate<0)newXCoordinate=0;
	if (newYCoordinate<0)newYCoordinate=0;
	moveObject(targetObjectId, newXCoordinate, newYCoordinate);
	// and make it visible
	if(changeObjectVisibility(targetObjectId, 'visible') ) {
	    // if we successfully showed the popup
	    // store its Id on a globally-accessible object
	    if (!window.currentlyVisiblePopup) {
			window.currentlyVisiblePopup = targetObjectId;
		}else if(!window.currentlyVisiblePopup1){
			window.currentlyVisiblePopup1 = targetObjectId;
		}else{
			window.currentlyVisiblePopup2 = targetObjectId;
		}
	    return true;
	} else {
	    // we couldn't show the popup, boo hoo!
	    return false;
	}
    } else {
	// there was no event object, so we won't be able to position anything, so give up
	return false;
    }
} // showPopup

function hideCurrentPopup() {
    // note: we've stored the currently-visible popup on the global object window.currentlyVisiblePopup
    if(window.currentlyVisiblePopup) {
	changeObjectVisibility(window.currentlyVisiblePopup, 'hidden');
	window.currentlyVisiblePopup = false;
    }
    if(window.currentlyVisiblePopup1) {
	changeObjectVisibility(window.currentlyVisiblePopup1, 'hidden');
	window.currentlyVisiblePopup1 = false;
    }
    if(window.currentlyVisiblePopup2) {
	changeObjectVisibility(window.currentlyVisiblePopup2, 'hidden');
	window.currentlyVisiblePopup2 = false;
    }
    if (getObject("hideCorrectMnuLyrs")) hideCorrectMnuLyrs(0);
    if (getObject("hideSelectBoxes")) hideSelectBoxes();
} // hideCurrentPopup

function hideMenuPopup() {
    // note: we've stored the currently-visible popup on the global object window.currentlyVisiblePopup
    if(window.currentlyVisiblePopup1) {
    //alert(window.currentlyVisiblePopup);
	changeObjectVisibility(window.currentlyVisiblePopup1, 'hidden');
	window.currentlyVisiblePopup1 = false;
    }
    hideMenuPopup1();
} // hideCurrentPopup


function hideMenuPopup1() {
    // note: we've stored the currently-visible popup on the global object window.currentlyVisiblePopup
    if(window.currentlyVisiblePopup2) {
    //alert(window.currentlyVisiblePopup);
	changeObjectVisibility(window.currentlyVisiblePopup2, 'hidden');
	window.currentlyVisiblePopup2 = false;
    }
} // hideCurrentPopup


var timerID;

function AutoHideMenu(delay){
	if (ns4){
		var theProc="hideMenuPopup()";
		clearTimeout(timerID);
		timerID =  setTimeout(theProc, delay);
	}
}


// ***********************
// hacks and workarounds *
// ***********************

// initialize hacks whenever the page loads
window.onload = initializeHacks;

// setup an event handler to hide popups for generic clicks on the document
document.onclick = hideCurrentPopup;

function initializeHacks() {
    // this ugly little hack resizes a blank div to make sure you can click
    // anywhere in the window for Mac MSIE 5
    if ((navigator.appVersion.indexOf('MSIE 5') != -1) 
	&& (navigator.platform.indexOf('Mac') != -1)
	&& getStyleObject('blankDiv')) {
	window.onresize = explorerMacResizeFix;
    }
    resizeBlankDiv();
    // this next function creates a placeholder object for older browsers
    createFakeEventObj();
}

function createFakeEventObj() {
    // create a fake event object for older browsers to avoid errors in function call
    // when we need to pass the event object to functions
    if (!window.event) {
	window.event = false;
    }
} // createFakeEventObj

function resizeBlankDiv() {
    // resize blank placeholder div so IE 5 on mac will get all clicks in window
    if ((navigator.appVersion.indexOf('MSIE 5') != -1) 
	&& (navigator.platform.indexOf('Mac') != -1)
	&& getStyleObject('blankDiv')) {
	getStyleObject('blankDiv').width = document.body.clientWidth - 20;
	getStyleObject('blankDiv').height = document.body.clientHeight - 20;
    }
}

function explorerMacResizeFix () {
    location.reload(false);
}


