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