function elementContains(elmOuter, elmInner) {
	while (elmInner && elmInner != elmOuter) {
		elmInner = elmInner.parentNode;
	}
	if (elmInner == elmOuter) {
		return true;
	}
	return false;
}

// page coordinates
function getPageXY(elm) {
	var point = { x: 0, y: 0 };
	while (elm) {
		point.x += elm.offsetLeft;
		point.y += elm.offsetTop;
		elm = elm.offsetParent;
	}
	return point;
}

function setPageXY(elm, x, y) {
	var parentXY = {x: 0, y: 0 };
	if (elm.offsetParent) {
		parentXY = getPageXY(elm.offsetParent);
	}
	elm.style.left = (x - parentXY.x) + 'px';
	elm.style.top  = (y - parentXY.y) + 'px';
}

function cssjsmenu(listId) {

	var myUl = document.getElementById(listId);
	var ulTop = myUl.offsetTop;
	var ul_li = myUl.childNodes;
	var shim = document.createElement('IFRAME');
	shim.src = 'javascript: false;'
	shim.style.position = 'absolute'
	shim.style.zIndex = '1';
	
	for (var l = 0; l < ul_li.length;l++) {
		if (ul_li.item(l).nodeName=='LI') {
			//alert('li');
			var tab = ul_li.item(l);
			tab.onmouseover = function(e) {
				var point = getPageXY(this);
				var child = this.childNodes;
				this.className = 'view';
				for (var m =0; m< child.length; m++) {
					if (child.item(m).nodeName=='UL') {
						var menu = child.item(m);
						menu.style.display = 'block';
						menu.style.position = 'absolute';
						setPageXY(menu, point.x, point.y + this.offsetHeight);
						// position iframe shim
						if (document.all) {
							this.appendChild(shim);
							setPageXY(shim, point.x, point.y + this.offsetHeight);
							shim.style.width = menu.offsetWidth;
							shim.style.height = menu.offsetHeight;
							shim.style.display = 'block';
						}
					}
				}
			}
			
			tab.onmouseout = function(e) {
				// check for mouse out or 'on' to a non menu element
				var relatedTarget = null;
				if (e) {
					relatedTarget = e.relatedTarget;
				}
				else if (window.event) {
					relatedTarget = window.event.toElement;
				}
				if (elementContains(this, relatedTarget)) {
					return false;
				}
				this.className = '';
				// re-hide menus
				var child = this.childNodes;
				for (var m =0; m< child.length; m++) {
					if (child.item(m).nodeName=='UL') {
						var menu = child.item(m);
						menu.style.display = 'none';
						//shim.style.display = 'none';
						if (document.all) {
							this.removeChild(shim);
						}
					}
				}
			}
		}
	} // ul_li.length
}