var agt = navigator.userAgent.toLowerCase();
var is_safari = (agt.indexOf("safari") != -1);

function showDropdown(whichMenu, image) {
	document.images[whichMenu + "_image"].src = "/images/" + image;
	var dropdown = document.getElementById(whichMenu + '_pulldown').style;
	dropdown.left = document.getElementById(whichMenu).offsetLeft;
	dropdown.top = document.getElementById(whichMenu).offsetTop + document.getElementById(whichMenu).offsetHeight;	
	dropdown.visibility = "visible";	
}

function hideDropdown(whichMenu, eventObj, image) {
	var eventSource = (eventObj.fromElement) ? eventObj.fromElement : eventObj.target;
	var fudgeFactor = 5;
	if (!is_safari) {		
		if ((eventObj.clientX <= (document.getElementById(whichMenu).offsetLeft + fudgeFactor)) ||
			(eventObj.clientX >= (document.getElementById(whichMenu).offsetLeft + eventSource.offsetWidth) - fudgeFactor) ||
			(eventObj.clientY <= ((document.getElementById(whichMenu).offsetTop - document.body.scrollTop) + fudgeFactor))) {   
			document.images[whichMenu + "_image"].src = "/images/" + image;
			var dropdown = document.getElementById(whichMenu + '_pulldown').style;		
			dropdown.visibility = "hidden"; 
		}
	}
	else {
		if ((eventObj.clientX <= (document.getElementById(whichMenu).offsetLeft + fudgeFactor)) ||
			(eventObj.clientX >= (document.getElementById(whichMenu).offsetLeft + eventSource.offsetWidth) - fudgeFactor) ||
			(eventObj.clientY <= (document.getElementById(whichMenu).offsetTop + fudgeFactor))) {  
			document.images[whichMenu + "_image"].src = "/images/" + image;
			var dropdown = document.getElementById(whichMenu + '_pulldown').style;		
			dropdown.visibility = "hidden"; 
		}	
	}	
}

function hideLayer(layer, image) {
	var menuImage = layer.substring(0, layer.indexOf("_")) + "_image";
	document.images[menuImage].src = "/images/" + image;
	document.getElementById(layer).style.visibility = "hidden"; 
}

function containsDOM (container, containee) {
  var isParent = false;
  do {
    if ((isParent = container == containee))
      break;
    containee = containee.parentNode;
  }
  while (containee != null);
  return isParent;
}

function checkMouseEnter (element, evt) {
  if (element.contains && evt.fromElement && !is_safari) {
    return !element.contains(evt.fromElement);
  }
  else if (evt.relatedTarget) {
    return !containsDOM(element, evt.relatedTarget);
  }
}

function checkMouseLeave (element, evt) {
  if (element.contains && evt.toElement && !is_safari) {
    return !element.contains(evt.toElement);
  }
  else if (evt.relatedTarget) {
    return !containsDOM(element, evt.relatedTarget);
  }
}