Array.prototype.push = function(element) { this[this.length] = element; } Array.prototype.contains = function(element) { for(var i=0; i0) { this[i-1] = this[i]; } if(this[i] == element) { found = true; } } if(found) { this.length--; } } Array.prototype.addUnique = function(element) { if(this.contains(element)) { return; } this[this.length] = element; } Array.prototype.replace = function(element, replaceElement) { for(var i=0; i a - Nodlänk. * boolean collapseSiblings - TRUE om syskon skall stängas, annars FALSE. * */ function toggleNode(a, collapseSiblings) { // Hämta
  • -tagg. var li=a; do { li = li.parentNode; } while(li.tagName.toLowerCase() != "li"); // Stänga? if(isOpen(li)) { collapseNode(li); // Öppna? } else { // Stänga syskon? if(collapseSiblings) { collapseNodeSiblings(li); } // Öppna upp nod. expandNode(li); } } /** * Kontrollerar om en nod har ett öppet subträd. * *
  • li - Nod att kontrollera. * * Returnerar TRUE om subträdet är öppet, annars FALSE. */ function isOpen(li) { var ul = li.getElementsByTagName("ul"); if(ul.length==0) return false; var classes = ul[0].className.split(" "); return classes.contains("opened"); } /** * Kontrollerar om en nod är ett löv. * *
  • li - Nod att kontrollera. * * Returnerar TRUE om noden är ett löv, annars FALSE. */ function isLeaf(li) { var classes = li.className.split(" "); return classes.contains("leaf") || classes.contains("lastLeaf"); } /** * Stänger en nod. * *
  • li - Nod att stänga. */ function collapseNode(li) { if(li==null) return; var ul = li.getElementsByTagName("ul")[0]; var classes = ul.className.split(" "); classes.remove("opened"); classes.addUnique("closed"); ul.className = classes.join(" "); var img = li.getElementsByTagName("img")[0]; toggleImage(img); link = li.getElementsByTagName("a")[0]; toggleDirImage(link); } /** * Öppnar upp en nod. * *
  • li - Nod att öppna upp. * */ function expandNode(li) { if(li==null) return; var ul = li.getElementsByTagName("ul"); if(ul.length == 0) return; ul = ul[0]; var classes = ul.className.split(" "); classes.remove("closed"); classes.addUnique("opened"); ul.className = classes.join(" "); var img = li.getElementsByTagName("img")[0]; toggleImage(img); var link = li.getElementsByTagName("a")[0]; toggleDirImage(link); } /** * Ändrar mellan + och - för angiven bild. * * img - Bild-tagg att ändra. */ function toggleImage(img) { if(img==null) return; //folderImg = img.parentNode.parentNode.childNodes[1].childNodes[0]; // Toggle. img.src = img.src.indexOf("minus") == -1 ? img.src.replace(/plus/, "minus") : img.src.replace(/minus/, "plus"); } /** * * * */ function toggleDirImage(link) { if(link==null) return; var classes = link.className.split(" "); if(classes.contains("linkDirClosed")) { classes.replace("linkDirClosed", "linkDirOpened"); } else { classes.replace("linkDirOpened", "linkDirClosed"); } link.className = classes.join(" "); } /** * Öppnar upp sökträd till en viss nod. * * integer nodeID - ID på nod att öppna upp. * boolean openNode - TRUE om noden skall öppnas, annars FALSE. * */ function expandToNode(nodeID, openNode) { var li = document.getElementById(nodeID); // Öppna endast nod om det ej är ett löv. if(openNode && !isLeaf(li)) { expandNode(li); } else if(isLeaf(li)) { var link = li.getElementsByTagName("a")[0]; toggleDirImage(link); } // Öppna noder från slut-nod till start-nod (rot). while(li.parentNode!=null && li.parentNode.id!="menuTree") { li = li.parentNode; // Expandera LI-element. if(li.tagName!=null && li.tagName.toLowerCase() == "li") { expandNode(li); } } } /** * Öppnar alla noder i menyträdet. * * integer rootID - ID på menyträd (
      ). */ function expandAll(rootID) { var root = document.getElementById(rootID); if(root==null) return; // Öppna upp alla subträd. var uls = root.getElementsByTagName("ul"); for(var i=0; i li - Nod vars syskon som skall stängas. */ function collapseNodeSiblings(li) { var ul = li.parentNode; // Gå igenom syskon (inklusive angiven nod). for(var i=0; i-tagg och att taggen // är ett syskon. if(childNode.tagName.toLowerCase() == "li" && childNode!=li) { // Öppna upp nod om det är öppet samt om det inte är ett löv. if(!isLeaf(childNode) && isOpen(childNode)) { collapseNode(childNode); } } } } /* string */ String.prototype.trim = function() { return this.lTrim().rTrim(); } String.prototype.lTrim = function() { return this.replace(/^\s*/, ""); } String.prototype.rTrim = function() { return this.replace(/\s*$/, ""); } /* window */ function openWindow(url, windowName, width, height, centerScreen) { if(width>screen.availWidth) { width = screen.availWidth-60; } if(height>screen.availHeight) { height = screen.availHeight-60; } handle = window.open(url, windowName, "width=" + width + ", height=" + height); handle.moveTo((screen.availWidth-width)/2, (screen.availHeight-height)/2); }