171 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
		
		
			
		
	
	
			171 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| 
								 | 
							
								var nodeLayer = null;
							 | 
						||
| 
								 | 
							
								var sonLayer = null;
							 | 
						||
| 
								 | 
							
								var oldstyle = '';
							 | 
						||
| 
								 | 
							
								var newstyle = '';
							 | 
						||
| 
								 | 
							
								var oldimg = '';
							 | 
						||
| 
								 | 
							
								var newimg = '';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function readCollapsedNodes() {
							 | 
						||
| 
								 | 
							
									collapsedNodes = new Array();
							 | 
						||
| 
								 | 
							
									cn = document.cookie.split('collapsedNodes=');
							 | 
						||
| 
								 | 
							
									if (cn.length < 2) return;
							 | 
						||
| 
								 | 
							
									vl = cn[1];
							 | 
						||
| 
								 | 
							
									if (vl.indexOf(';') != -1) {
							 | 
						||
| 
								 | 
							
										vl = vl.split(';');
							 | 
						||
| 
								 | 
							
										vl = vl[0];
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									if (vl) {
							 | 
						||
| 
								 | 
							
										collapsed = vl.split('|');
							 | 
						||
| 
								 | 
							
										for (i = 0; i < collapsed.length; i++) {
							 | 
						||
| 
								 | 
							
											collapsedNodes[i] = collapsed[i];
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function writeCollapsedNodes() {
							 | 
						||
| 
								 | 
							
									document.cookie = 'collapsedNodes=' + collapsedNodes.join('|') + ';path=/';
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function addCollapsedNode(nodeId) {
							 | 
						||
| 
								 | 
							
									for (i = 0; i < collapsedNodes.length; i++) {
							 | 
						||
| 
								 | 
							
										if (collapsedNodes[i] == nodeId) return;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									collapsedNodes[collapsedNodes.length] = nodeId;
							 | 
						||
| 
								 | 
							
									writeCollapsedNodes();
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function delCollapsedNode(nodeId) {
							 | 
						||
| 
								 | 
							
									newCollapsedNodes = new Array();
							 | 
						||
| 
								 | 
							
									j = 0;
							 | 
						||
| 
								 | 
							
									for (i = 0; i < collapsedNodes.length; i++) {
							 | 
						||
| 
								 | 
							
										if (collapsedNodes[i] != nodeId) {
							 | 
						||
| 
								 | 
							
											newCollapsedNodes[j++] = collapsedNodes[i];
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									collapsedNodes = newCollapsedNodes;
							 | 
						||
| 
								 | 
							
									writeCollapsedNodes();
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function updateNewStyle() {
							 | 
						||
| 
								 | 
							
									nodeLayer.src = newimg;
							 | 
						||
| 
								 | 
							
									sonLayer.style.display = newstyle;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function cancelNewStyle() {
							 | 
						||
| 
								 | 
							
									nodeLayer.src = oldimg;
							 | 
						||
| 
								 | 
							
									sonLayer.style.display = oldstyle;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function alertTreeNodeContents(html) {
							 | 
						||
| 
								 | 
							
									if (html.replace(/(^\s*)|(\s*$)/g, '')) {
							 | 
						||
| 
								 | 
							
										includeHTML(sonLayer, html);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									updateNewStyle();
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function opencloseTreeNode(nodeid,params,imgdir) {
							 | 
						||
| 
								 | 
							
									cancelHttpRequest(); // cancel last request
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// get the node element
							 | 
						||
| 
								 | 
							
									if ((!DOM || Opera56 || Konqueror22) && !IE4) return;
							 | 
						||
| 
								 | 
							
									if (!IE4) {
							 | 
						||
| 
								 | 
							
										sonLayer = document.getElementById('jt' + nodeid + 'son');
							 | 
						||
| 
								 | 
							
										nodeLayer = document.getElementById('jt' + nodeid + 'node');
							 | 
						||
| 
								 | 
							
									} else {
							 | 
						||
| 
								 | 
							
										sonLayer = document.all('jt' + nodeid + 'son');
							 | 
						||
| 
								 | 
							
										nodeLayer = document.all('jt' + nodeid + 'node');
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									if (!sonLayer || !nodeLayer) return false;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// update global variables
							 | 
						||
| 
								 | 
							
									oldstyle = sonLayer.style.display;
							 | 
						||
| 
								 | 
							
									oldimg = nodeLayer.src;
							 | 
						||
| 
								 | 
							
									var action = 0; // (action = 1) => expand ; (action = 2) => collapse
							 | 
						||
| 
								 | 
							
									if (oldimg.indexOf(imgdir+'/tree_expand.png') > -1) {
							 | 
						||
| 
								 | 
							
										newimg = imgdir+'/tree_collapse.png';
							 | 
						||
| 
								 | 
							
										action = 1;
							 | 
						||
| 
								 | 
							
									} else if (oldimg.indexOf(imgdir+'/tree_expand_first.png') > -1) {
							 | 
						||
| 
								 | 
							
										newimg = imgdir+'/tree_collapse_first.png';
							 | 
						||
| 
								 | 
							
										action = 1;
							 | 
						||
| 
								 | 
							
									} else if (oldimg.indexOf(imgdir+'/tree_expand_corner.png') > -1) {
							 | 
						||
| 
								 | 
							
										newimg = imgdir+'/tree_collapse_corner.png';
							 | 
						||
| 
								 | 
							
										action = 1;
							 | 
						||
| 
								 | 
							
									} else if (oldimg.indexOf(imgdir+'/tree_expand_corner_first.png') > -1) {
							 | 
						||
| 
								 | 
							
										newimg = imgdir+'/tree_collapse_corner_first.png';
							 | 
						||
| 
								 | 
							
										action = 1;
							 | 
						||
| 
								 | 
							
									} else if (oldimg.indexOf(imgdir+'/tree_collapse.png') > -1) {
							 | 
						||
| 
								 | 
							
										newimg = imgdir+'/tree_expand.png';
							 | 
						||
| 
								 | 
							
										action = 2;
							 | 
						||
| 
								 | 
							
									} else if (oldimg.indexOf(imgdir+'/tree_collapse_first.png') > -1) {
							 | 
						||
| 
								 | 
							
										newimg = imgdir+'/tree_expand_first.png';
							 | 
						||
| 
								 | 
							
										action = 2;
							 | 
						||
| 
								 | 
							
									} else if (oldimg.indexOf(imgdir+'/tree_collapse_corner.png') > -1) {
							 | 
						||
| 
								 | 
							
										newimg = imgdir+'/tree_expand_corner.png';
							 | 
						||
| 
								 | 
							
										action = 2;
							 | 
						||
| 
								 | 
							
									} else if (oldimg.indexOf(imgdir+'/tree_collapse_corner_first.png') > -1) {
							 | 
						||
| 
								 | 
							
										newimg = imgdir+'/tree_expand_corner_first.png';
							 | 
						||
| 
								 | 
							
										action = 2;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									nodeLayer.src = 'images/ajax-spinner.gif';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// perform action
							 | 
						||
| 
								 | 
							
									if (action == 2) {
							 | 
						||
| 
								 | 
							
										newstyle = 'none';
							 | 
						||
| 
								 | 
							
										updateNewStyle();
							 | 
						||
| 
								 | 
							
										addCollapsedNode(nodeid);
							 | 
						||
| 
								 | 
							
									} else if (action == 1) {
							 | 
						||
| 
								 | 
							
										newstyle = 'block';
							 | 
						||
| 
								 | 
							
										if (sonLayer.innerHTML == '') {
							 | 
						||
| 
								 | 
							
											makeHttpRequest('cmd.php',params+'&cmd=draw_tree_node&action=1','GET','alertTreeNodeContents','cancelNewStyle');
							 | 
						||
| 
								 | 
							
										} else {
							 | 
						||
| 
								 | 
							
											updateNewStyle();
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										delCollapsedNode(nodeid);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									return false;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function getDiv(div) {
							 | 
						||
| 
								 | 
							
									if (!IE4) {
							 | 
						||
| 
								 | 
							
										return document.getElementById('aj'+div);
							 | 
						||
| 
								 | 
							
									} else {
							 | 
						||
| 
								 | 
							
										return document.all('aj'+div);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function alertAJ(html,div) {
							 | 
						||
| 
								 | 
							
									var pageDiv = getDiv(div);
							 | 
						||
| 
								 | 
							
									if (pageDiv) includeHTML(pageDiv, html);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function cancelAJ(div) {
							 | 
						||
| 
								 | 
							
									var pageDiv = getDiv(div);
							 | 
						||
| 
								 | 
							
									if (pageDiv) includeHTML(pageDiv, '');
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// close initial collapsed nodes
							 | 
						||
| 
								 | 
							
								// Cant figure out why, but this runs twice in AJAX mode when using "refresh".
							 | 
						||
| 
								 | 
							
								// Causing the collapsedNodes to be incorrect.
							 | 
						||
| 
								 | 
							
								readCollapsedNodes();
							 | 
						||
| 
								 | 
							
								for (k = 0; k < collapsedNodes.length; k++) {
							 | 
						||
| 
								 | 
							
									opencloseTreeNode(collapsedNodes[k],'#','images/default');
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var current;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function tree_unhide(whichLayer,old) {
							 | 
						||
| 
								 | 
							
									if (current == null) current = old;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									var oldtree = document.getElementById('ajSID_'+current).style;
							 | 
						||
| 
								 | 
							
									oldtree.display = 'none';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									if (document.getElementById) {
							 | 
						||
| 
								 | 
							
										// this is the way the standards work
							 | 
						||
| 
								 | 
							
										var newtree = document.getElementById(whichLayer).value;
							 | 
						||
| 
								 | 
							
										var newtree_div = document.getElementById('ajSID_'+newtree).style;
							 | 
						||
| 
								 | 
							
										newtree_div.display = 'block';
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									current = newtree;
							 | 
						||
| 
								 | 
							
								}
							 |