var menu_id = 'tree_menu';

function addHandlers() {
	var m = document.getElementById(menu_id);
	if(!m) return false;
	var li = m.getElementsByTagName('LI');
	
	var item;
	for (var i = 0; item = li[i]; i++) {
		setListener(item, 'click', toggleTree);
		if (item.getElementsByTagName('UL').length == 0) {
			if (item.parentNode.id == 'tree_menu') {
				addClassName(item, 'top_no_children');
			}
			else {
				addClassName(item, ' end_node');
			}
		}
		
		if (item.className.indexOf('current_article') != -1) {
			setCurrent(item);	
		}
	}
}

function addClassName(el, className) {
	if (el.className != '') {
		el.className += ' ' + className
	}
	else {
		el.className = className;
	}
}

function expand(li) {
	if (li.className.indexOf('end_node') == -1 && li.className.indexOf('top_no_children') == -1) {
		li.style.backgroundImage = 'url(sites/see/assets/tree_menu_open.gif)';
	}
}

function setCurrent(li) {
	expand(li);
	
	var a = firstChild(li, 'a');
	a.style.fontWeight = 'bold';
	a.style.color = 'black';
	
	var child_ul;
	if (child_ul = firstChild(li, 'ul')) {
		child_ul.style.fontWeight = 'normal';
		child_ul.style.display = 'block';
	}
	
	var node = li;
	while (node = node.parentNode) {
		if (node.id == 'tree_menu') {
			break;
		}
		
		switch (node.tagName) {
			case 'UL':
				node.style.display = 'block';
			break;
			
			case 'LI':
				expand(node);
			break;
		}
	}
}

function firstChild(el, tag) {
	var child;
	for (var i = 0; child = el.childNodes[i]; i++) {
		if (child.nodeType == 1 && child.tagName.toLowerCase() == tag.toLowerCase()) {
			return child;
		}
	}
	return false;
}

function toggleTree(e) {
	if (document.all) {
		window.event.cancelBubble = true;
		var obj = window.event.srcElement;
	}
	else {
		e.stopPropagation();
		var obj = e.target;
	}
	
	if (obj.tagName == 'A') {
		return;
	}
	
	// Get child list
	for (var i = 0; i < obj.childNodes.length; i++) {
		if (obj.childNodes[i].tagName == 'UL') {
			var ul = obj.childNodes[i];
			break;
		}
	}
	Effect.toggle(ul, 'slide');
	if (obj.style.backgroundImage == 'url(sites/see/assets/tree_menu_closed.gif)' || obj.style.backgroundImage == "") {
		expand(obj);
	}
	else {
		obj.style.backgroundImage = 'url(sites/see/assets/tree_menu_closed.gif)';
	}	
}

// x-browser utilities
function setListener(obj, event, f) {
	// No IE support yet!
	if (document.all) {
		obj.attachEvent('on' + event, f);
	}
	else {
		obj.addEventListener(event, f, true);
	}
}

function removeListener(obj, event, f) {
	if (document.all) {
		obj.detachEvent('on' + event, f);
	}
	else {
		obj.removeEventListener(event, f, true);
	}
}

$(document).observe('dom:loaded', function() {
	addHandlers();
});
// window.onload = addHandlers;