
/*
 * Initialise all trees identified by <ul class="tree">
 */
function initTrees() {
	var candidates = document.getElementsByTagName('ul');
	for(var i=0;i<candidates.length;i++) {
		if(candidates[i].className && candidates[i].className.indexOf('nivel1') != -1) {
			initTree(candidates[i]);
			candidates[i].className = candidates[i].className.replace(/ ?unformatted ?/, ' ');
		}
	}
}

/*
 * Initialise a tree node, converting all its LIs appropriately
 */
 function initTree(el) {

	for (var i=0; i<el.childNodes.length; ++i) {
		if (!el.childNodes[i].tagName || el.childNodes[i].tagName.toLowerCase() != 'li') continue;

		var li = el.childNodes[i];
		var span = document.createElement('span');

		span.className = 'treenode';
		span.subMenu = null;

		if (li.firstChild) {
			li.insertBefore(span, li.firstChild);
		} else {
			li.appendChild(span);
		}

		for (var j=0; j<li.childNodes.length; ++j) {
			if(!li.childNodes[j].tagName || li.childNodes[j].tagName.toLowerCase() != 'ul') continue;
			span.subMenu = li.childNodes[j];
			break;
		}

		// Process the children
		if(span.subMenu != null) {
			if(initTree(span.subMenu)) {
				var handler = document.createElement('span');
				handler.className = 'handler';
				handler.subMenu = span.subMenu;
				handler.subMenu.handler = handler;
				handler.isOpen = true;
				span.appendChild(handler);

				handler.onclick = treeToggle;
			}
		}
	}

	if (li) {
		li.className += " last";
		return true;
	} else {
		return false;
	}
}

/*
 * +/- toggle the tree, where el is the <span class="b"> node
 * force, will force it to "open" or "close"
 */
function treeToggle() {
	if (this.subMenu == null) return;
	if (this.isOpen) {
		treeClose(this);
	} else {
		treeOpen(this);
	}
}


function treeOpen(handler){
	handler.className = 'handler';
	handler.subMenu.style.display = '';
	handler.isOpen = true;
}


function treeClose(handler){
	handler.className = 'handler handlerclosed';
	handler.subMenu.style.display = 'none';
	handler.isOpen = false;
}

/*
 * Handlers for automated loading
 */
Event.observe(window, 'load', initTrees);
