diff options
Diffstat (limited to 'javascript')
-rw-r--r-- | javascript/treeview.js | 80 |
1 files changed, 50 insertions, 30 deletions
diff --git a/javascript/treeview.js b/javascript/treeview.js index d0041a8..7adbc5b 100644 --- a/javascript/treeview.js +++ b/javascript/treeview.js @@ -4,43 +4,63 @@ // --- Adapted: Dieter Hametner -- // --- Version: 0.2 Date: 13-6-2001 -- // --------------------------------------------- -function Toggle(node) + +function findSibling(node, name) { - // Unfold the branch if it isn't visible - if (node.nextSibling.style.display == 'none') - { - // Change the image (if there is an image) - if (node.childNodes.length > 0) - { - if (node.childNodes.item(0).nodeName == "IMG") - { - node.childNodes.item(0).src = "minus.png"; - } - if (node.childNodes.item(1).nodeName == "IMG") - { - node.childNodes.item(1).src = "folder_open.png"; + while ((node.nextSibling.nodeType != Node.ELEMENT_NODE) + || (node.nextSibling.nodeName != name)) { + node = node.nextSibling; + } + if (node.nextSibling.nodeName == name) + return node.nextSibling; + + return null; +} + +function findImageNode(node, className) +{ + for (var idx = 0; idx < node.childNodes.length; idx++) { + var n = node.childNodes.item(idx); + if ((n.nodeType == Node.ELEMENT_NODE) && (n.nodeName == "IMG")) { + attr = n.getAttributeNode("class"); + if ((attr != null) && (attr.nodeValue == className)) { + return n; } } + } + return null; +} - node.nextSibling.style.display = 'block'; +function setImages(node, expand, folder) +{ + // Change the image (if there is an image) + if (node.childNodes.length > 0) + { + expandNode = findImageNode(node, "recording_expander"); + if (expandNode != null) + expandNode.src = expand; + folderNode = findImageNode(node, "recording_folder"); + if (folderNode != null) + folderNode.src = folder; + } +} + +function Toggle(node) +{ + // Unfold the branch if it isn't visible + sibling = findSibling(node, "UL"); + if (sibling == null) + return; + + if (sibling.style.display == 'none') + { + setImages(node, "minus.png", "folder_open.png"); + sibling.style.display = 'block'; } // Collapse the branch if it IS visible else { - // Change the image (if there is an image) - if (node.childNodes.length > 0) - { - if (node.childNodes.item(0).nodeName == "IMG") - { - node.childNodes.item(0).src = "plus.png"; - } - if (node.childNodes.item(1).nodeName == "IMG") - { - node.childNodes.item(1).src = "folder_closed.png"; - } - } - - node.nextSibling.style.display = 'none'; + setImages(node, "plus.png", "folder_closed.png"); + sibling.style.display = 'none'; } - } |