1/** 2 * Catalog navigation 3 * 4 * @package Sprinnet_Accmenu 5 * @copyright Copyright (c) 2010 SPRINNET Systems, s.r.o. (http://www.sprinnet.com/) 6 */ 7DOM = (document.getElementById); 8IE = (navigator.userAgent.indexOf("MSIE") != -1); 9createTreeMenu = function(options, id){ 10 if(DOM){ 11 container = document.getElementById(id); 12 if(container){ 13 treeWalk(container, options); 14 } 15 } 16} 17treeWalk = function(container, options){ 18 isCollapsed = !getStateFromClass(options.expanded, container.className); 19 treeItems = document.getElementsByTagName(options.itemElement); 20 for(var i=0; i<treeItems.length; i++){ 21 if(getStateFromClass(options.containerFlag, treeItems.item(i).className)){ 22 mayHaveContainer = getStateFromClass(options.containerFlag, treeItems.item(i).className); 23 if(mayHaveContainer){ 24 container = getNearestContainer(treeItems.item(i), options.container); 25 if(container){ 26 isItemExpanded = getStateFromClass(options.expanded, treeItems.item(i).className); 27 if((isCollapsed && !isItemExpanded) || (!isCollapsed && !isItemExpanded)){ 28 container.style.display = "none"; 29 } 30 treeItems.item(i).container = container; 31 treeItems.item(i).expanded = options.expanded; 32 treeItems.item(i).collapsed = options.collapsed; 33 treeItems.item(i).onclick = function(e){ 34 this.container.style.display = (this.container.style.display == "none")? "block" : "none"; 35 setItemClass(this); 36 } 37 enableLinkClick(treeItems.item(i), options.itemLink); 38 } 39 } 40 } 41 } 42} 43 44getStateFromClass = function (str, className){ 45 return (className.indexOf(str) != -1)? true : false; 46} 47 48getNearestContainer = function (elem, className){ 49 if(elem.nextSibling.className){ 50 if(getStateFromClass(className, elem.nextSibling.className)){ 51 return elem.nextSibling; 52 }else{ 53 return getNearestContainer(elem.nextSibling, className); 54 } 55 }else{ 56 return getNearestContainer(elem.nextSibling, className); 57 } 58} 59enableLinkClick = function(elem, nodeName){ 60 var links = elem.getElementsByTagName(nodeName); 61 for(var i=0; i<links.length; i++){ 62 links.item(i).onclick = function(e){ 63 if(e){ 64 e.stopPropagation(); 65 }else{ 66 event.cancelBubble = true; 67 } 68 } 69 } 70} 71setItemClass = function(node){ 72 if(node.container.style.display == "block"){ 73 removeClassName(node, node.collapsed) 74 node.className += (" " + node.expanded); 75 }else{ 76 removeClassName(node, node.expanded) 77 node.className += (" " + node.collapsed); 78 } 79} 80removeClassName = function(node, str){ 81 if(typeof node !== 'undefined'){ 82 cName = node.className; 83 re = new RegExp(str,"gi"); 84 node.className = cName.replace(re,""); 85 } 86}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.