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;
 | |
| }
 |