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<parent.childNodes.length;i++) {
|
var child = parent.childNodes[i];
|
if (after && child.id && child.id.indexOf("tn") > -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<parent.childNodes.length;i++) {
|
var child = parent.childNodes[i];
|
if (after && child.id && child.id.indexOf("tn") > -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);
|
}
|
}
|