function InitializeSubmenu(submenucontainerid, tablecellroid, tablecellid, fname) { var s = ""; s = s + "function " + fname + "() { "; s = s + "document.getElementById(submenucontainerid).style.visibility='';"; s = s + "BringToFront(submenucontainerid);"; s = s + "}"; if ((index = navigator.userAgent.indexOf("MSIE")) >= 0) s = s + "document.getElementById('" + tablecellid + "').attachEvent(\"onmouseover\", " + fname + ");"; else s = s + "document.getElementById('" + tablecellid + "').addEventListener(\"mouseover\", " + fname + ", true);"; s = s + "document.getElementById(tablecellroid).onclick = function() {"; s = s + "if( document.createEvent ) {"; s = s + "var evObj = document.createEvent('MouseEvents');"; s = s + "evObj.initEvent( 'click', true, false );"; s = s + "document.getElementById(tablecellid).dispatchEvent(evObj);"; s = s + "} else if( document.createEventObject ) {"; s = s + "document.getElementById(tablecellid).fireEvent('onclick');"; s = s + "}"; s = s + "}"; eval(s); } function getAbsoluteNodeTop(node) { var currentNode=node; var top=0; while(currentNode.tagName!="BODY"){ top+=currentNode.offsetTop; currentNode=currentNode.offsetParent; } return top; } function IsNodeVisible(nodeId) { var current = document.getElementById(nodeId); var parent = current.parentNode; //move all the parent's children that are below the node and their annotations while (current.className != "treeroot") { if (parent.style.visibility == 'hidden') return false; current = parent; parent = parent.parentNode; } return true; } function ExpandNode(nodeId, childContainerId, plusMinusId) { var container = document.getElementById(childContainerId); if (!container || container.style.visibility != 'hidden') { return; } container.style.visibility = ''; if (plusMinusId != '') { ApplyImageAndTextStyles('s', plusMinusId, '', '', false) } var delta = GetExpandCollapseDelta(nodeId, childContainerId); var isVisible = IsNodeVisible(nodeId); var current = document.getElementById(nodeId); var parent = current.parentNode; //move all the parent's children that are below the node and their annotations while (current.className != "treeroot") { var after = false; var i = 0; for (i=0;i -1) { var id = child.id.substring(2); child.style.top = Number(child.style.top.replace("px","")) + delta; var tn = document.getElementById(id); if (tn) tn.style.top = Number(tn.style.top.replace("px","")) + delta; var ann = document.getElementById(id + "ann"); if (ann) ann.style.top = Number(ann.style.top.replace("px","")) + delta; } if (child == current) after = true; } current = parent; parent = parent.parentNode; if (!isVisible && parent.style.visibility != 'hidden') break; } } function CollapseNode(nodeId, childContainerId, plusMinusId) { var container = document.getElementById(childContainerId); if (!container || container.style.visibility == 'hidden') { return; } container.style.visibility = 'hidden'; if (plusMinusId != '') { ApplyImageAndTextStyles('o', plusMinusId, '', '', false) } var delta = GetExpandCollapseDelta(nodeId, childContainerId); var isVisible = IsNodeVisible(nodeId); var current = document.getElementById(nodeId); var parent = current.parentNode; //move all the parent's children that are below the node and their annotations while (current.className != "treeroot") { var after = false; var i = 0; for (i=0;i -1) { var id = child.id.substring(2); child.style.top = Number(child.style.top.replace("px","")) - delta; var tn = document.getElementById(id); if (tn) tn.style.top = Number(tn.style.top.replace("px","")) - delta; var ann = document.getElementById(id + "ann"); if (ann) ann.style.top = Number(ann.style.top.replace("px","")) - delta; } if (child == current) after = true; } current = parent; parent = current.parentNode; if (!isVisible && parent.style.visibility != 'hidden') break; } } function GetExpandCollapseDelta(nodeId, childContainerId) { //find the distance by diffing the bottom of the node to the bottom of the last child var node = document.getElementById(nodeId); var lastNode = GetLastVisibleChild(childContainerId); var nodetop = getAbsoluteNodeTop(node); var nodebottom = nodetop + Number(node.style.height.replace("px","")); var lastNodeTop = getAbsoluteNodeTop(lastNode); var lastNodeBottom = lastNodeTop + Number(lastNode.style.height.replace("px","")); var delta = lastNodeBottom - nodebottom; return delta; } function GetLastVisibleChild(containerId) { var container = document.getElementById(containerId); //get the last node that's not an annotation var lastNode = container.lastChild; while (!lastNode.id || lastNode.id.indexOf("tn") < 0) { lastNode = lastNode.previousSibling; } var lastNodeId = lastNode.id; //see if it has a visible container for child nodes var subContainer = document.getElementById('cnc' + lastNodeId.replace("tn","")); if (subContainer && subContainer.style.visibility != 'hidden') { return GetLastVisibleChild(subContainer.id); } return lastNode; } function InitializeTreeNode(nodeId, plusminusid, childContainerId, selectText) { var s = ""; s = s + "function ExpandCollapse" + plusminusid + "() { "; s = s + "var container = document.getElementById('" + childContainerId + "');"; s = s + "if (container.style.visibility != 'hidden') CollapseNode('" + nodeId + "', '" + childContainerId + "', '" + plusminusid+ "'); else ExpandNode('" + nodeId + "', '" + childContainerId + "', '" + plusminusid + "');"; s = s + selectText; s = s + "}"; if ((index = navigator.userAgent.indexOf("MSIE")) >= 0) s = s + "document.getElementById('" + plusminusid + "').attachEvent(\"onclick\", ExpandCollapse" + plusminusid + ");"; else s = s + "document.getElementById('" + plusminusid + "').addEventListener(\"click\", ExpandCollapse" + plusminusid + ", true);"; eval(s); } function SelectTreeNode(currentSelected, applySelected, buttonShapeId, buttonShapeTextId, txtSelected) { if (currentSelected.buttonShapeId && currentSelected.buttonShapeId != '') { ApplyImageAndTextStyles('o', currentSelected.buttonShapeId, currentSelected.buttonShapeTextId, '', false); } if (applySelected) { ApplyImageAndTextStyles('s', buttonShapeId, buttonShapeTextId, txtSelected, false); } currentSelected.buttonShapeId = buttonShapeId; currentSelected.buttonShapeTextId = buttonShapeTextId; } function DeSelectTreeNode(currentSelected, applySelected, buttonShapeId, buttonShapeTextId, txtSelected) { if (currentSelected.buttonShapeId && currentSelected.buttonShapeId == buttonShapeId) { ApplyImageAndTextStyles('o', currentSelected.buttonShapeId, currentSelected.buttonShapeTextId, '', false); currentSelected.buttonShapeId = ''; currentSelected.buttonShapeTextId = ''; } } function ToggleSelectTreeNode(currentSelected, applySelected, buttonShapeId, buttonShapeTextId, txtSelected) { if (currentSelected.buttonShapeId && currentSelected.buttonShapeId == buttonShapeId) { DeSelectTreeNode(currentSelected, applySelected, buttonShapeId, buttonShapeTextId, txtSelected); } else { SelectTreeNode(currentSelected, applySelected, buttonShapeId, buttonShapeTextId, txtSelected); } }