var selectedItem = null; var isMenuVisible = false; document.body.onclick=""; function GetSelectedElement(elem, tagName) { while(elem != null && elem.tagName != tagName) elem = elem.parentNode; return elem; } function showZone(item) { if (isMenuVisible && selectedItem == item) hideMenu(); if (isMenuVisible) return; selectedItem = item; item.className="selected-menu-item"; iconCell = item.children[0].children[0].children[2]; iconCell.className="selected-menu-icon"; iconCell.onclick = showMenu; } function showMenu() { var table = GetSelectedElement(selectedItem, "TABLE") menu.style.top = (GetAbsoluteTop(selectedItem) + selectedItem.offsetHeight) + 'px'; menu.style.left = GetAbsoluteLeft(table) + 'px'; menu.className = "menu-display"; window.document.onclick=hideMenu; isMenuVisible = true; return false; } function hideMenu() { var srcElement = GetSelectedElement(event.srcElement, "TABLE"); if (srcElement == selectedItem && selectedItem != null) return; menu.className = "menu-hidden"; isMenuVisible = false; hideZone(); } function hideZone() { if (isMenuVisible || selectedItem == null) return; iconCell.onclick = ""; selectedItem.className="unselected-menu-item"; iconCell = selectedItem.children[0].children[0].children[2]; iconCell.className="unselected-menu-icon"; iconCell.onclick = ""; //menu = document.all["menu"]; //selectedItem = null; } // Gets real Top value with respect to client area function GetAbsoluteTop(elem) { var topPosition = 0; while (elem) { if (elem.tagName == 'BODY') { //break; } topPosition += elem.offsetTop; elem = elem.offsetParent; } return topPosition; } // Get real Left value with respect to client area function GetAbsoluteLeft(elem) { var leftPosition = 0; while (elem) { if (elem.tagName == 'BODY') { //break; } leftPosition += elem.offsetLeft; elem = elem.offsetParent; } return leftPosition; }