/* [Discuz!] (C)2001-2099 Comsenz Inc. This is NOT a freeware, use is subject to license terms $Id: tree.js 23838 2011-08-11 06:51:58Z monkey $ */ var icon = new Object(); icon.root = IMGDIR + '/tree_root.gif'; icon.folder = IMGDIR + '/tree_folder.gif'; icon.folderOpen = IMGDIR + '/tree_folderopen.gif'; icon.file = IMGDIR + '/tree_file.gif'; icon.empty = IMGDIR + '/tree_empty.gif'; icon.line = IMGDIR + '/tree_line.gif'; icon.lineMiddle = IMGDIR + '/tree_linemiddle.gif'; icon.lineBottom = IMGDIR + '/tree_linebottom.gif'; icon.plus = IMGDIR + '/tree_plus.gif'; icon.plusMiddle = IMGDIR + '/tree_plusmiddle.gif'; icon.plusBottom = IMGDIR + '/tree_plusbottom.gif'; icon.minus = IMGDIR + '/tree_minus.gif'; icon.minusMiddle = IMGDIR + '/tree_minusmiddle.gif'; icon.minusBottom = IMGDIR + '/tree_minusbottom.gif'; function treeNode(id, pid, name, url, target, open) { var obj = new Object(); obj.id = id; obj.pid = pid; obj.name = name; obj.url = url; obj.target = target; obj.open = open; obj._isOpen = open; obj._lastChildId = 0; obj._pid = 0; return obj; } function dzTree(treeName) { this.nodes = new Array(); this.openIds = getcookie('leftmenu_openids'); this.pushNodes = new Array(); this.addNode = function(id, pid, name, url, target, open) { var theNode = new treeNode(id, pid, name, url, target, open); this.pushNodes.push(id); if(!this.nodes[pid]) { this.nodes[pid] = new Array(); } this.nodes[pid]._lastChildId = id; for(k in this.nodes) { if(this.openIds && this.openIds.indexOf('_' + theNode.id) != -1) { theNode._isOpen = true; } if(this.nodes[k].pid == id) { theNode._lastChildId = this.nodes[k].id; } } this.nodes[id] = theNode; }; this.show = function() { var s = '
'; s += this.createTree(this.nodes[0]); s += '
'; document.write(s); }; this.createTree = function(node, padding) { padding = padding ? padding : ''; if(node.id == 0){ var icon1 = ''; } else { var icon1 = ''; } var icon2 = ''; var s = '
' + padding + icon1 + icon2 + this.getName(node) + '
'; s += '
'; for(k in this.pushNodes) { var id = this.pushNodes[k]; var theNode = this.nodes[id]; if(theNode.pid == node.id) { if(node.id == 0){ var thePadding = ''; } else { var thePadding = padding + (node.id == this.nodes[node.pid]._lastChildId ? '' : ''); } if(!theNode._lastChildId) { var icon1 = ''; var icon2 = ''; s += '
' + thePadding + icon1 + icon2 + this.getName(theNode) + '
'; } else { s += this.createTree(theNode, thePadding); } } } s += '
'; return s; }; this.getIcon1 = function(theNode) { var parentNode = this.nodes[theNode.pid]; var src = ''; if(theNode._lastChildId) { if(theNode._isOpen) { if(theNode.id == 0) { return icon.minus; } if(theNode.id == parentNode._lastChildId) { src = icon.minusBottom; } else { src = icon.minusMiddle; } } else { if(theNode.id == 0) { return icon.plus; } if(theNode.id == parentNode._lastChildId) { src = icon.plusBottom; } else { src = icon.plusMiddle; } } } else { if(theNode.id == parentNode._lastChildId) { src = icon.lineBottom; } else { src = icon.lineMiddle; } } return src; }; this.getIcon2 = function(theNode) { var src = ''; if(theNode.id == 0 ) { return icon.root; } if(theNode._lastChildId) { if(theNode._isOpen) { src = icon.folderOpen; } else { src = icon.folder; } } else { src = icon.file; } return src; }; this.getName = function(theNode) { if(theNode.url) { return ' '+theNode.name+''; } else { return theNode.name; } }; this.switchDisplay = function(nodeId) { eval('var theTree = ' + treeName); var theNode = theTree.nodes[nodeId]; if($('nodes_' + nodeId).style.display == 'none') { theTree.openIds = updatestring(theTree.openIds, nodeId); setcookie('leftmenu_openids', theTree.openIds, 8640000000); theNode._isOpen = true; $('nodes_' + nodeId).style.display = ''; $('icon1_' + nodeId).src = theTree.getIcon1(theNode); $('icon2_' + nodeId).src = theTree.getIcon2(theNode); } else { theTree.openIds = updatestring(theTree.openIds, nodeId, true); setcookie('leftmenu_openids', theTree.openIds, 8640000000); theNode._isOpen = false; $('nodes_' + nodeId).style.display = 'none'; $('icon1_' + nodeId).src = theTree.getIcon1(theNode); $('icon2_' + nodeId).src = theTree.getIcon2(theNode); } }; }