// Copyright © 2000 by Apple Computer, Inc., All Rights Reserved.
//
// You may incorporate this Apple sample code into your own code
// without restriction. This Apple sample code has been provided "AS IS"
// and the responsibility for its operation is yours. You may redistribute
// this code, but you are not permitted to redistribute it as
// "Apple sample code" after having made changes.
// ********************************
// application-specific functions *
// ********************************

// 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 = 30;
var yOffset = -5;

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)
  	// Make sure the pop-up is on the right side of the link that has been clicked
    var newXCoordinate = (eventObj.pageX)?eventObj.pageX:eventObj.x;  		
  	newXCoordinate = ((newXCoordinate<300)?newXCoordinate+xOffset:newXCoordinate-xOffset-150) + ((document.body.scrollLeft)?document.body.scrollLeft:0);	
  	var newYCoordinate = (eventObj.pageY)?eventObj.pageY + yOffset:eventObj.y + yOffset + ((document.body.scrollTop)?document.body.scrollTop: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
  	  window.currentlyVisiblePopup = 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;
  }
} // hideCurrentPopup



// ***********************
// 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);
}
