//------------------------------------------------------------------------------- // global variable. var gNodeList = new Array; var gCurrImageObj = null; var gnTOP_POS = 16; var gnTop = gnTOP_POS; var gnHiddenTop = gnTOP_POS; var gsName = "bookmark"; var gBrowser = 0; var IE = 1; var NN = 2; var gsTarget = "_blank"; var gBlankImg = new Image; var gVertLineImg = new Image; var gNodeImg = new Image; var gLastNodeImg = new Image; var gCloseFileImg = new Array; var gOpenFileImg = new Array; var gFileImg = new Array; gCloseFileImg[0] = new Image; gCloseFileImg[1] = new Image; gOpenFileImg[0] = new Image; gOpenFileImg[1] = new Image; gFileImg[0] = new Image; gFileImg[1] = new Image; //------------------------------------------------------------------------------- function list(sTitle, nDstPage, sURL, nID) { this.sTitle = sTitle; this.nDstPage = nDstPage; this.bExpanded = false; this.bShow = false; this.parent = null; this.children = new Array; this.objectID = null; this.imageID = null; if(nID) { this.sURL = sURL; this.nID = nID; } else { // this is for older Magellan generated HTML. this.sURL = null; this.nID = sURL; } } //------------------------------------------------------------------------------- function appendList(parentNode, childNode) { childNode.parent = parentNode; parentNode.children[parentNode.children.length] = childNode; return childNode; } //------------------------------------------------------------------------------- // this is a recursive function. function displayList(nodeList, nDepth) { var i, j, k; var parentNode, grandParentNode; for(i = 0; i < nodeList.length; i++) { if(gBrowser == IE) { if(nodeList[i].children.length > 0) document.write('\n'); else document.write('block">\n'); } else if(gBrowser == NN) { if(nodeList[i].parent == null) { nodeList[i].bShow = true; if(i == 0 && nodeList[i].parent != null) gnTop = gnTop + nodeList[i].parent.objectID.clip.height; else if(i > 0) gnTop = gnTop + nodeList[i - 1].objectID.clip.height; } else nodeList[i].bShow = false; if(i == 0 && nodeList[i].parent != null) gnHiddenTop = gnHiddenTop + nodeList[i].parent.objectID.clip.height; else if(i > 0) gnHiddenTop = gnHiddenTop + nodeList[i - 1].objectID.clip.height; if(nodeList[i].children.length > 0) document.write('\n'); else document.write(nodeList[i].nID + '" top=' + gnTop + ' visibility="show">\n'); } document.write('\n\n'); document.write(''); document.write('\n
'); for(j = nDepth - 1; j > 0; j--) { parentNode = nodeList[i]; for(k = j; k > 0; k--) parentNode = parentNode.parent; grandParentNode = parentNode.parent; if(grandParentNode.children[grandParentNode.children.length - 1] == parentNode) document.write(''); else document.write(''); } if(nDepth > 0) { if((i + 1) == nodeList.length) document.write(''); else document.write(''); } if(nodeList[i].children.length > 0) { document.write(''); document.write(''); document.write(''); } else document.write(''); document.write(''); if(nodeList[i].nDstPage > -2) document.write(''); else document.write(''); document.write('' + nodeList[i].sTitle + ''); document.write(''); document.write('
\n'); if(gBrowser == IE) { document.write('
\n'); if(nodeList[i].children.length > 0) nodeList[i].objectID = document.all["node" + nodeList[i].nID]; else nodeList[i].objectID = document.all["child" + nodeList[i].nID]; nodeList[i].imageID = document.all["image" + nodeList[i].nID]; } else if(gBrowser == NN) { document.write('\n'); if(nodeList[i].children.length > 0) nodeList[i].objectID = document.layers["node" + nodeList[i].nID]; else nodeList[i].objectID = document.layers["child" + nodeList[i].nID]; nodeList[i].imageID = nodeList[i].objectID.document.images[nodeList[i].objectID.document.images.length-1]; } if(nodeList[i].children.length > 0) displayList(nodeList[i].children, nDepth + 1); } } //------------------------------------------------------------------------------- function openPage(nPageNum, imageObj) { if(nPageNum > 0) { changeSelectedIcon(imageObj); parent.nav.openPage2(nPageNum); } else alert("This link has no destination."); } //------------------------------------------------------------------------------- function openNode(nID) { var node = searchNode(gNodeList, nID); if(node == null) return; if(node.bExpanded == false) { node.bExpanded = true; expandNode(node.children) } else { node.bExpanded = false; shrinkNode(node.children) } changeExpandIcon(node.imageID, node.bExpanded); if(gBrowser == NN) { gnTop = gnTOP_POS; adjustListPos(gNodeList); } } //------------------------------------------------------------------------------- function expandNode(node) { var i; for(i = 0; i < node.length; i++) { if(gBrowser == IE) { if(node[i].objectID.style.display == "none") if(node[i].parent == null || node[i].parent.bExpanded == true) node[i].objectID.style.display = "block"; } else if(gBrowser == NN) { if(node[i].bShow == false) if(node[i].parent != null && node[i].parent.bExpanded == true) node[i].bShow = true; } if(node[i].children.length > 0 && node[i].bExpanded == true) expandNode(node[i].children); } } //------------------------------------------------------------------------------- function shrinkNode(node) { var i; for(i = 0; i < node.length; i++) { if(gBrowser == IE) { if(node[i].objectID.style.display == "block") node[i].objectID.style.display = "none"; } else if(gBrowser == NN) { if(node[i].bShow == true) node[i].bShow = false; } if(node[i].children.length > 0) shrinkNode(node[i].children); } } //------------------------------------------------------------------------------- function updateTree(nPageNum) { var node = ProcessOpenedNode(gNodeList, nPageNum); if(gBrowser == NN) { gnTop = gnTOP_POS; adjustListPos(gNodeList); } } //------------------------------------------------------------------------------- // this is a recursive function. function ProcessOpenedNode(nodeList, nPageNum) { var i, k; var node; for(i = 0; i < nodeList.length; i++) { if(nodeList[i].nDstPage == nPageNum) { if(nodeList[i].children.length > 0) { node = ProcessOpenedNode(nodeList[i].children, nPageNum); if(node != null) { nodeList[i].bExpanded = true; // expand parent. changeExpandIcon(nodeList[i].imageID, nodeList[i].bExpanded); for(k = 0; k < nodeList.length; k++) { if(gBrowser == IE) { if(nodeList[k].objectID.style.display == "none") nodeList[k].objectID.style.display = "block"; } else if(gBrowser == NN) { if(nodeList[k].bShow == false) nodeList[k].bShow = true; } } changeSelectedIcon(node.imageID); return node; } } for(k = 0; k < nodeList.length; k++) { if(gBrowser == IE) { if(nodeList[k].objectID.style.display == "none") nodeList[k].objectID.style.display = "block"; } else if(gBrowser == NN) { if(nodeList[k].bShow == false) nodeList[k].bShow = true; } } changeSelectedIcon(nodeList[i].imageID); return nodeList[i]; } else if(nodeList[i].children.length > 0) { node = ProcessOpenedNode(nodeList[i].children, nPageNum); if(node != null) { nodeList[i].bExpanded = true; // expand parent. changeExpandIcon(nodeList[i].imageID, nodeList[i].bExpanded); for(k = 0; k < nodeList.length; k++) { if(gBrowser == IE) { if(nodeList[k].objectID.style.display == "none") nodeList[k].objectID.style.display = "block"; } else if(gBrowser == NN) { if(nodeList[k].bShow == false) nodeList[k].bShow = true; } } changeSelectedIcon(node.imageID); return node; } } } return null; } //------------------------------------------------------------------------------- //------------------------------------------------------------------------------- //------------------------------------------------------------------------------- //------------------------------------------------------------------------------- //------------------------------------------------------------------------------- function adjustListPos(nodeList) { var i; for(i = 0; i < nodeList.length; i++) { if(nodeList[i].bShow == true) { if(i == 0 && nodeList[i].parent != null) gnTop = gnTop + nodeList[i].parent.objectID.clip.height; else if(i > 0) gnTop = gnTop + nodeList[i - 1].objectID.clip.height; nodeList[i].objectID.moveTo(nodeList[i].objectID.left, gnTop) nodeList[i].objectID.visibility = "show"; } else nodeList[i].objectID.visibility = "hide"; if(nodeList[i].children.length > 0) adjustListPos(nodeList[i].children); } } //------------------------------------------------------------------------------- //------------------------------------------------------------------------------- //------------------------------------------------------------------------------- //------------------------------------------------------------------------------- //------------------------------------------------------------------------------- function changeExpandIcon(imageObj, bExpand) { if(imageObj == null) return; if(bExpand == true) { if(imageObj.src == gCloseFileImg[1].src) imageObj.src = gOpenFileImg[1].src; else imageObj.src = gOpenFileImg[0].src; } else { if(imageObj.src == gOpenFileImg[1].src) imageObj.src = gCloseFileImg[1].src; else imageObj.src = gCloseFileImg[0].src; } } //------------------------------------------------------------------------------- function changeSelectedIcon(imageObj) { if(imageObj != null) { if(imageObj.src == gCloseFileImg[0].src) imageObj.src = gCloseFileImg[1].src; else if(imageObj.src == gOpenFileImg[0].src) imageObj.src = gOpenFileImg[1].src; else if(imageObj.src == gFileImg[0].src) imageObj.src = gFileImg[1].src; } if(gCurrImageObj != null && gCurrImageObj != imageObj) { if(gCurrImageObj.src == gCloseFileImg[1].src) gCurrImageObj.src = gCloseFileImg[0].src; else if(gCurrImageObj.src == gOpenFileImg[1].src) gCurrImageObj.src = gOpenFileImg[0].src; else if(gCurrImageObj.src == gFileImg[1].src) gCurrImageObj.src = gFileImg[0].src; } gCurrImageObj = imageObj; } //------------------------------------------------------------------------------- // this is a recursive function. function searchNode(nodeList, nID) { var node; var i; for(i = 0; i < nodeList.length; i++) { if(nodeList[i].nID == nID) return nodeList[i]; else if(nodeList[i].children.length > 0) { node = searchNode(nodeList[i].children, nID); if(node != null) return node; } } return null; } //------------------------------------------------------------------------------- function initialize() { if(document.all) gBrowser = IE; else if(document.layers) gBrowser = NN; else return; // display list. displayList(gNodeList, 0, 0); // create dummy layer on the bottom so NN will have correct scrolling height. if(gBrowser == NN) document.write('\n'); // select first item on the list. if(gNodeList.length > 0) parent.nav.updateContents(1); } //------------------------------------------------------------------------------- //------------------------------------------------------------------------------- //------------------------------------------------------------------------------- //------------------------------------------------------------------------------- //-------------------------------------------------------------------------------