document.oldonmousemove = document.body.onmousemove;
document.body.onmousemove = bodyMove;

function mouseInElement(X, Y, element) {
	var left = element.style.left.replace("px", "")*1;
	var top = element.style.top.replace("px", "")*1;
	var width = element.clientWidth;
	var height = element.clientHeight;
	if (X <= left + 1) return false;
	if (Y <= top + 1) return false;
	if (X >= left + width) return false;
	if (Y >= top + height) return false;
	return true;
}

function hideVisibleDiv() {
	document.visibleDiv.style.display = "none";
	document.visibleDiv = null;
	clearInterval(document.eid);
	document.eid = null;
}

function mouseOver(event, divName) {
	var div = document.getElementById(divName);
	if (document.visibleDiv != null && document.visibleDiv != div) {
		hideVisibleDiv();
	}
	document.visibleDiv = div;
	if (div.style.display == "none") {
		div.style.display = "";
        // Let events popup below calendar
		div.style.top = event.clientY - 2;
		div.style.left = event.clientX - 2;
		document.eid = setInterval("checkHide();", 3000);
	}
}

// Not sure this works on Mozilla
function checkHide() {
	if (document.visibleDiv != null)
		if (!mouseInElement(document.mouseX, document.mouseY, document.visibleDiv)) {
			hideVisibleDiv();
		}
}
// SRJ: updated 23-March-2005 to fix issue when e is null
function bodyMove(e) {
	if (e == null) e = event;
	document.mouseX = e.clientX; 
	document.mouseY = e.clientY;
	if (document.oldonmousemove)
 	  document.oldonmousemove();
}
function switchCalendar(current_calendar, new_calendar) {
	var cur_cal = document.getElementById(current_calendar);
	var new_cal = document.getElementById(new_calendar);
	cur_cal.style.display = "none";
	new_cal.style.display = "";
}
