/**
* <script>
*
* EasyGUI Tree Script
*
* @author Gaetan Lauff <glauff@plansoft.de>
* @copyright Plan Software GmbH, 2002 - 2004
* @version	1.0
* @package 	Base
*
* This is not free software
*/

var currentOpenedFolder		= null;
var currentOpenedDocument 	= null;
var lastActivePath			= null;

function initTree(id) {
	var element = document.getElementById(id);
	
	if ((target = element.getAttribute('target')) == null) {
		element.setAttribute('target','');
	}
	
	var treeRoot = element.firstChild.childNodes[0];
	
	if (treeRoot == null) {
		return;
	}

	if (treeRoot.childNodes.length > 0) {
		rootIdx = 0;
		
		if (ns6) {
			rootIdx = 1;
		}
		
		treeRoot.childNodes[rootIdx].style.marginLeft = '0px';
		treeRoot.childNodes[rootIdx].setAttribute('isytype','root');
	
	
		if (treeRoot.childNodes[rootIdx].childNodes.length > 0) {
			treeRoot.childNodes[rootIdx].removeChild(treeRoot.childNodes[rootIdx].childNodes[0]);
			treeRoot.childNodes[rootIdx].childNodes[1].setAttribute('isytype','root');
			
			if (treeRoot.childNodes[rootIdx].childNodes[3] != null) {
				treeRoot.childNodes[rootIdx].childNodes[3].style.marginLeft = '0px';
				treeRoot.childNodes[rootIdx].childNodes[3].style.display = 'block';
			}
		}
	}
	
	allTreeItems = treeRoot.getElementsByTagName('LI');

	for (var i=0; i < allTreeItems.length; i++) {
		uls = allTreeItems[i].getElementsByTagName('UL');
		
		if (uls.length > 0) {
			for (j=0; j < allTreeItems[i].childNodes.length; j++) {
				treeItem = allTreeItems[i].childNodes[j];
				
				if (treeItem.nodeName == 'A') {
					treeItem.className = element.getAttribute('folderstyle');
				}
				
				if (treeItem.nodeName == 'IMG') {
					if (treeItem.isytype == 'folder') {
						treeItem.src = element.getAttribute('folderclosedimg');
					} else if (treeItem.isytype == 'node') {
						treeItem.src = element.getAttribute('pnode');
					}
				}
			}	
		} else {
			for (j=0; j < allTreeItems[i].childNodes.length; j++) {
				treeItem = allTreeItems[i].childNodes[j];
				
				if (treeItem.nodeName == 'A') {
					treeItem.className = element.getAttribute('documentstyle');
				}
				
				if (treeItem.nodeName == 'IMG') {
					if (treeItem.isytype == 'document') {
						treeItem.src = element.getAttribute('documentclosedimg');
					}
				}
			}
		}
	}
	
	createNewHiddenFormField(id, '')
	
	if ((selected = element.getAttribute('selected')) != null && selected != '') {
		document.isycat[id].value = selected;
		openSubTree(selected);
	}
	
	treeRoot.style.display = 'block';
	
	addEvent(element, "click", toggleEvents, false);
	addEvent(document, "selectstart", noSelect, false);
}

function toggleEvents(evt) {
	var element = getElement(evt);
	
	if (element.nodeName == 'DIV') {
		cancelEventBubble();
		return;
	}
	
	var listItem = getElementFromElementByTagName(element, 'LI');
	var isytype = element.getAttribute('isytype');
	
	if (isytype == 'node') {
		openTreeItem(element);
	}
	
	if (isytype == 'folder' || isytype== 'root') {
		if (listItem.childNodes[0].state == 'collapsed') {
			openTreeItem(element);
		}
		
		openFolder(element);
		tracePath(element);
		navigate2(element);
	}
	
	if (isytype == 'document') {
		openDocument(element);
		tracePath(element);
		navigate2(element);
	}
	
	
}

function openTreeItem(element) {
	var listItem = getElementFromElementByTagName(element, 'LI');
	var subTree = listItem.getElementsByTagName('UL');
	var isytype = element.getAttribute('isytype');
	var state = element.getAttribute('state');
	var treeCtrl = getElementFromElementByTagName(element, 'DIV');

	var mnode = treeCtrl.getAttribute('mnode');
	var pnode = treeCtrl.getAttribute('pnode');
	
	if (listItem.isytype== 'root') return;
	
	if (subTree.length > 0) {
		(subTree[0].style.display == 'none') ? subTree[0].style.display = 'block' : subTree[0].style.display = 'none';
		
		if (listItem.isytype != 'root') {
			if (isytype != 'node') {
				element = listItem.childNodes[0];
				state = element.getAttribute('state');
			}
			
			if (state == 'collapsed') {
				element.src = mnode;
				element.setAttribute('state','expanded');
			} else {
				element.src = pnode;
				element.setAttribute('state','collapsed');
			}
		}
	}
}

function openFolder(element) {
	var listItem = getElementFromElementByTagName(element, 'LI');
	var folderImg = listItem.childNodes[1];
	var isytype = element.getAttribute('isytype');
	var treeCtrl = getElementFromElementByTagName(element, 'DIV');
	
	var openedImg = treeCtrl.getAttribute('folderopenedimg');
	var closedImg = treeCtrl.getAttribute('folderclosedimg');
	
	if (currentOpenedFolder == folderImg) {
		return;
	}
	
	if (isytype == 'root') {
		folderImg = listItem.childNodes[0];
	}
	
	var state 	= element.getAttribute('state');
	
	if (currentOpenedFolder != null) {
		currentOpenedFolder.src = closedImg;
		currentOpenedFolder.setAttribute('state','closed');
	}
		
	folderImg.src = openedImg;
	folderImg.setAttribute('state','opened');
	
	currentOpenedFolder = folderImg;
}

function openDocument(element) {
	var listItem = getElementFromElementByTagName(element, 'LI');
	var documentImg = listItem.childNodes[1];
	var isytype = element.getAttribute('isytype');
	var treeCtrl = getElementFromElementByTagName(element, 'DIV');
	
	var openedImg = treeCtrl.getAttribute('documentopenedimg');
	var closedImg = treeCtrl.getAttribute('documentclosedimg');
	
	if (currentOpenedDocument == documentImg) {
		return;
	}
	
	var state = element.getAttribute('state');
	
	documentImg.src = openedImg;
	documentImg.setAttribute('state','opened');

	currentOpenedDocument = documentImg;
}

function navigate2(element) {
	var listItem = getElementFromElementByTagName(element, 'LI');
	
	if ((url = listItem.getAttribute('url')) == null) {
		return;
	}

	var treeCtrl = getElementFromElementByTagName(element, 'DIV');
	
	parent.document.isycat[treeCtrl.id].value = listItem.id;
	target = treeCtrl.getAttribute('target');
	document.isycat.target = target;

	if(url.indexOf("http:") != -1) {
		open(url);
	} else {
		if (url.indexOf('javascript:') != -1) {
			url = url.replace(/javascript: /, '');
			eval(url);
			return false;
		}
		
		if (((url.indexOf(".htm") != -1) || (url.indexOf(".php") != -1)) && 
			  url.indexOf("open(") == -1 && 
			  url.indexOf("window.open(") != -1) {
			
			if (target == '') {
				self.location.href = url
				return false;
			} else {
				document.getElementById(target).src = url
				return false;
			}
		} else {
			if ((url.indexOf("ekSubmit") != -1) || (url.indexOf("eksubmit") != -1)) {
				ekSubmit(listItem.id);
				return false;
			} else {
				eval(url);
				return false;
			}
		}
	}
}

function openSubTree(id) {
	element = document.getElementById(id);
	
	openTreeItem(element.childNodes[0]);
	openFolder(element.childNodes[1]);
	
	while(element.nodeName != 'DIV') {
		if (element.nodeName == 'LI') {
			openTreeItem(element);
		}
		
		element = element.parentNode;
	}
}

function tracePath(element) {
	var treeCtrl 			= getElementFromElementByTagName(element, 'DIV');
	
	if (treeCtrl.getAttribute('tracepath') == null) { return; }
	
	var folderOpenedImg 	= treeCtrl.getAttribute('folderopenedimg');
	var folderClosedImg 	= treeCtrl.getAttribute('folderclosedimg');
	var documentOpenedImg 	= treeCtrl.getAttribute('documentopenedimg');
	var documentClosedImg 	= treeCtrl.getAttribute('documentclosedimg');
	
	var traceFolderImg		= treeCtrl.getAttribute('tracefolderimg');
	var traceDocumentImg	= treeCtrl.getAttribute('tracedocumentimg');
	
	if (lastActivePath != null) {
		while (lastActivePath.nodeName != 'DIV') {
			if (lastActivePath.nodeName == 'LI') {
				var treeImage = lastActivePath.childNodes[1];
				var isytype = treeImage.getAttribute('isytype');

				if (isytype == 'folder') {
					treeImage.src = folderClosedImg;
				} else {
					treeImage.src = documentClosedImg;
				}
			}
			
			lastActivePath = lastActivePath.parentNode;
		}
	}
	
	var currentElement = element;
	
	while(element.nodeName != 'DIV') {
		if (element.nodeName == 'LI') {
			var treeImage = element.childNodes[1];
			var isytype = treeImage.getAttribute('isytype');
			
			if (isytype == 'root') {
				treeImage = element.childNodes[0];
			}
			
			if (isytype == 'folder' || isytype == 'root') {
				//treeImage.src = folderOpenedImg;
				treeImage.src = traceFolderImg;
			} else {
				//treeImage.src = documentOpenedImg;
				treeImage.src = traceDocumentImg;
			}
		}
		
		element = element.parentNode;
	}
	
	lastActivePath = currentElement;
}