var objNavMenu = null;
var prevObjNavMenu = null;
var prevObjDropMenu = null;
var numDropMenu = 2;
var dialogShowing = null;
var storeDocOnClick = null;

// nav background colours
var highlightNavMenuColor = '#a4bbd8';
var unhighlightNavMenuColor = '#bed8f3';
var activeNavMenuColor = '#ffffff';

function initDropMenu() {
   var dropName;
   var navName;
   var objDropMenu;

   for (i=1; i<=numDropMenu; i++) {
      dropName = 'dropMenu' + i;
      navName = 'navMenu' + i;
      objDropMenu = document.getElementById(dropName);
      objDropMenu.style.visibility = 'hidden';
      objDropMenu.onmouseout = doMouseOutDropMenu;
      objNavMenu = document.getElementById(navName);
      objNavMenu.onmouseover = highlightNavMenu;
      objNavMenu.onmouseout = unhighlightNavMenu;
      objNavMenu.onclick = showDropMenu;
   }
   objNavMenu = null;
   return;
}

function highlightNavMenu(e) {

   var menuName = 'drop' + this.id.substring(3, this.id.length);
   var obj = document.getElementById(this.id);
	if (prevObjDropMenu == null) {
      var obj = document.getElementById(this.id);
      obj.style.backgroundColor = highlightNavMenuColor;
	}
	else if (prevObjDropMenu.id != menuName) {
		this.onclick();
	}
}

function unhighlightNavMenu(e) {

   var menuName = 'drop' + this.id.substring(3, this.id.length);
	if (prevObjDropMenu == null) {
      var obj = document.getElementById(this.id);
      obj.style.backgroundColor = unhighlightNavMenuColor;
	}
	else {
		var evt = (evt) ? evt : ((window.event) ? window.event : null);
		var objControlsLeft = document.getElementById('menuBar');
		var pos = getPosition( objControlsLeft);
		if ((pos.offsetTop > evt.clientY) ||
			(pos.offsetLeft + objControlsLeft.offsetWidth - 2 < evt.clientX) ||
		   (pos.offsetLeft > evt.clientX)) {
			hideDropMenu();
		}
	}
}

function showDropMenu(e) {
   var menuName = 'drop' + this.id.substring(3, this.id.length);
   var objDropMenu = document.getElementById(menuName);
   if ((prevObjDropMenu != null) && (prevObjDropMenu != objDropMenu)) 
	                                                       hideDropMenu();
   objNavMenu = document.getElementById(this.id);
   objNavMenu.style.backgroundColor = activeNavMenuColor;
	var height = objNavMenu.offsetHeight;
	var objElement = objNavMenu;
   if (objDropMenu) {
		var pos = getPosition( objElement);
		pos.offsetTop += height;
      objDropMenu.style.left = pos.offsetLeft + 'px';
      objDropMenu.style.top = pos.offsetTop + 'px';
      objDropMenu.style.visibility = 'visible';
      prevObjDropMenu = objDropMenu;
      prevObjNavMenu = objNavMenu;
   }
}

function hideDropMenu() {
   if (prevObjDropMenu) {
      prevObjDropMenu.style.visibility = 'hidden';
   }
   if (prevObjNavMenu) {
		prevObjNavMenu.style.backgroundColor = unhighlightNavMenuColor;
	}
   prevObjDropMenu = null;
   prevObjNavMenu = null;
}

function getPosition(element) {
	
   var left = 0;
	var top = 0;
	if (element.offsetParent) {
		while (element) {
			left += element.offsetLeft;
			top += element.offsetTop;
			element = element.offsetParent;
		}
	}
	return {offsetLeft: left, offsetTop: top}
}

function doMouseOutDropMenu(evt) {
   var obj = prevObjDropMenu;
	if (obj == null) return 1;
	var evt = (evt) ? evt : ((window.event) ? window.event : null);
	if ((obj.offsetLeft > evt.clientX) ||
	      (obj.offsetLeft + obj.offsetWidth - 2 < evt.clientX) ||
		   (obj.offsetTop + obj.offsetHeight - 2 < evt.clientY)) {
	   hideDropMenu();
	}
	else if (obj.offsetTop > evt.clientY) {
		var objControlsLeft = document.getElementById('menuBar');
		var pos = getPosition( objControlsLeft);
		if (pos.offsetLeft + objControlsLeft.offsetWidth - 2 < evt.clientX) {
			hideDropMenu();
		}
	}
	return 1;
}

function doDialogClose() {
	if (dialogShowing) {
      dialogShowing.style.visibility = 'hidden';
		dialogShowing = null;
	   document.onclick = storeDocOnClick;
	}
}

function doScreenSetup() {
	hideDropMenu()
	dialogShowing = document.getElementById('dialogBoxScreenSetup');
	if (dialogShowing) {
      dialogShowing.style.visibility = 'visible';
	}
	storeDocOnClick = document.onclick;
	document.onclick = checkDialogFocus;
}

function isDialogClicked() {
   var obj = dialogShowing;
	if (obj == null) return 1;
	var evt = (evt) ? evt : ((window.event) ? window.event : null);
	if ((obj.offsetLeft < evt.clientX) &&
	      (obj.offsetLeft + obj.offsetWidth - 2 > evt.clientX) &&
			(obj.offsetTop < evt.clientY) &&
		   (obj.offsetTop + obj.offsetHeight - 2 > evt.clientY)) {
	   return true;
	}
	else {
		return false;
	}
}

function checkDialogFocus() {
	if (isDialogClicked()) {
		return true;
	}
	else {
		var obj = dialogShowing;
		for (var count = 0; count < 5; count++) {
         obj.style.backgroundColor = '#8899dd';
		   for (var i = 0; i < 1000; i++) {
			   i = i * 1;
		   }
         obj.style.backgroundColor = '#ffffff';
		}
      document.SoundEffects.oneBeep();
		return false;
	}
}

window.onload=initDropMenu;


