- /* Copyright 2002 Jean-Claude Manoli [jc@manoli.net]
- *
- * This software is provided 'as-is', without any express or implied warranty.
- * In no event will the author(s) be held liable for any damages arising from
- * the use of this software.
- *
- * Permission is granted to anyone to use this software for any purpose,
- * including commercial applications, and to alter it and redistribute it
- * freely, subject to the following restrictions:
- *
- * 1. The origin of this software must not be misrepresented; you must not
- * claim that you wrote the original software. If you use this software
- * in a product, an acknowledgment in the product documentation would be
- * appreciated but is not required.
- *
- * 2. Altered source versions must be plainly marked as such, and must not
- * be misrepresented as being the original software.
- *
- * 3. This notice may not be removed or altered from any source distribution.
- */
- var treeSelected = null; //last treeNode clicked
- //pre-load tree nodes images
- var imgPlus = new Image();
- imgPlus.src="treenodeplus.gif";
- var imgMinus = new Image();
- imgMinus.src="treenodeminus.gif";
- var imgDot = new Image();
- imgPlus.src="treenodedot.gif";
- function findNode(el)
- {
- // Takes element and determines if it is a treeNode.
- // If not, seeks a treeNode in its parents.
- while (el != null)
- {
- if (el.className == "treeNode")
- {
- break;
- }
- else
- {
- el = el.parentNode;
- }
- }
- return el;
- }
- function clickAnchor(el)
- {
- // handles click on a TOC link
- //
- expandNode(el.parentNode);
- selectNode(el.parentNode);
- el.blur();
- }
- function selectNode(el)
- {
- // Un-selects currently selected node, if any, and selects the specified node
- //
- if (treeSelected != null)
- {
- setSubNodeClass(treeSelected, 'A', 'treeUnselected');
- }
- setSubNodeClass(el, 'A', 'treeSelected');
- treeSelected = el;
- }
- function setSubNodeClass(el, nodeName, className)
- {
- // Sets the specified class name on el's first child that is a nodeName element
- //
- var child;
- for (var i=0; i < el.childNodes.length; i++)
- {
- child = el.childNodes[i];
- if (child.nodeName == nodeName)
- {
- child.className = className;
- break;
- }
- }
- }
- function expandCollapse(el)
- {
- // If source treeNode has child nodes, expand or collapse view of treeNode
- //
- if (el == null)
- return; //Do nothing if it isn't a treeNode
- var child;
- var imgEl;
- for(var i=0; i < el.childNodes.length; i++)
- {
- child = el.childNodes[i];
- if (child.src)
- {
- imgEl = child;
- }
- else if (child.className == "treeSubnodesHidden")
- {
- child.className = "treeSubnodes";
- imgEl.src = "treenodeminus.gif";
- break;
- }
- else if (child.className == "treeSubnodes")
- {
- child.className = "treeSubnodesHidden";
- imgEl.src = "treenodeplus.gif";
- break;
- }
- }
- }
- function expandNode(el)
- {
- // If source treeNode has child nodes, expand it
- //
- var child;
- var imgEl;
- for(var i=0; i < el.childNodes.length; i++)
- {
- child = el.childNodes[i];
- if (child.src)
- {
- imgEl = child;
- }
- if (child.className == "treeSubnodesHidden")
- {
- child.className = "treeSubnodes";
- imgEl.src = "treenodeminus.gif";
- break;
- }
- }
- }
- function syncTree(href)
- {
- // Selects and scrolls into view the node that references the specified URL
- //
- var loc = new String();
- loc = href;
- if (loc.substring(0, 7) == 'file://')
- {
- loc = 'file:///' + loc.substring(7, loc.length);
- loc = loc.replace(/\\/g, '/');
- }
- var base = loc.substr(0, loc.lastIndexOf('/') + 1);
- var tocEl = findHref(document.getElementById('treeRoot'), loc, base);
- if (tocEl != null)
- {
- selectAndShowNode(tocEl);
- }
- }
- function findHref(node, href, base)
- {
- // find the <a> element with the specified href value
- //
- var el;
- var anchors = node.getElementsByTagName('A');
- for (var i = 0; i < anchors.length; i++)
- {
- el = anchors[i];
- var aref = new String();
- aref = el.getAttribute('href');
- if ((aref.substring(0, 7) != 'http://')
- && (aref.substring(0, 8) != 'https://')
- && (aref.substring(0, 7) != 'file://'))
- {
- aref = base + aref;
- }
- if (aref == href)
- {
- return el;
- }
- }
- return null;
- }
- function selectAndShowNode(node)
- {
- // Selects and scrolls into view the specified node
- //
- var el = findNode(node);
- if (el != null)
- {
- selectNode(el);
- do
- {
- expandNode(el);
- el = findNode(el.parentNode);
- } while ((el != null))
- //vertical scroll element into view
- var windowTop;
- var windowBottom;
- var treeDiv = document.getElementById('tree');
- var ua = window.navigator.userAgent.toLowerCase();
- if ((i = ua.indexOf('msie')) != -1)
- {
- windowTop = node.offsetTop - treeDiv.scrollTop;
- windowBottom = treeDiv.clientHeight - windowTop - node.offsetHeight;
- }
- else if (ua.indexOf('gecko') != -1)
- {
- windowTop = node.offsetTop - treeDiv.offsetTop - treeDiv.scrollTop;
- windowBottom = treeDiv.clientHeight - windowTop - node.offsetHeight;
- }
- else
- {
- return;
- }
- if (windowTop < 0)
- {
- treeDiv.scrollTop += windowTop - 18;
- return;
- }
- if (windowBottom < 0)
- {
- treeDiv.scrollTop -= windowBottom - 18;
- return;
- }
- }
- }
- function resizeTree()
- {
- var treeDiv = document.getElementById('tree');
- if(!window.innerHeight)
- {
- // IE method
- treeDiv.style.width = document.documentElement.offsetWidth;
- treeDiv.style.height = document.documentElement.offsetHeight - 27;
- }
- else
- {
- // Netscape/Firefox method
- treeDiv.style.width = window.innerWidth;
- treeDiv.style.height = window.innerHeight - 27;
- }
- }
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#1 | 7889 | Johan Nilsson | Branch from Shawn Hladky's original P4.Net (main branch). Changed file type for StandardT...est.cs and UnicodeTest.cs in order to be able to check them in. « |
14 years ago | |
//guest/shawn_hladky/P4.Net/main/doc/html/tree.js | |||||
#3 | 7709 | Shawn Hladky | P4.Net: Cleanup, documentation, and a a start for implementing an object-based outpu...t for filelog. « | 15 years ago | |
#2 | 6105 | Shawn Hladky | P4.Net: Updating documentation output to sandcastle. | 17 years ago | |
#1 | 5830 | Shawn Hladky | P4.Net: reorg to support release branches | 18 years ago | |
//guest/shawn_hladky/P4.Net/doc/html/tree.js | |||||
#1 | 5812 | Shawn Hladky | P4.Net: More documentation. | 18 years ago |