document.getElementsByClassName = function(cl) {
var retnode = [];
var myclass = new RegExp('\\b'+cl+'\\b');
var elem = this.getElementsByTagName('*');
for (var i = 0; i < elem.length; i++) {
var classes = elem[i].className;
if (myclass.test(classes)) retnode.push(elem[i]);
}
return retnode;
};
/*
 * A Tree Menu
 * Author: Peter Müller <munter@fumle.dk>
 * License: Public Domain
 */

function eventTrigger (e)
{
if (! e)
e = event;
//alert(e.target || e.srcElement);
return e.target || e.srcElement;
}

function stopEvent(e) {
	if (!e) var e = window.event;
	e.cancelBubble = true;
	if (e.stopPropagation) e.stopPropagation();
}

TreeMenuNode.prototype = {
	isFolder : false,
	folded : null,
	
	fold : function() {
		this.domref.className = this.domref.className.replace("minus","plus");
		this.folded = true;
	},

	unfold : function() {
		this.domref.className = this.domref.className.replace("plus","minus");
		this.folded = false;
	},

	mousedown : function(e) {
		var type = eventTrigger(e);
		var strObj = type.toString();
		if (strObj.charAt(0) != "[")
		{
			window.location = strObj;
		}
		else
		{
			if (this.isFolder) {
				if (this.folded) this.unfold();
				else this.fold();
			}
			stopEvent(e);
			}
		}
	}

function TreeMenuNode(objHTMLDefinitionData) {
	this.domref = objHTMLDefinitionData;
	if (this.domref.className) this.isFolder = true;
	var This = this;

	this.domref.onmousedown = function(e){This.mousedown(e);};

	this.folded = !!this.domref.className.match('plus');
}

TreeMenu.prototype = {
	nodes : [],

	returnFalse : function() {
		return false;
	}
}

function TreeMenu(objHTMLTree) {
	var li = objHTMLTree.getElementsByTagName('li');
	var as = objHTMLTree.getElementsByTagName('a');

	for (var i = 0; i < li.length; i++) {
		this.nodes.push(new TreeMenuNode(li[i]));
	}
	for (var i = 0; i < as.length; i++) {
		if (navigator.appName == "Microsoft Internet Explorer")
		{
			as[i].onclick = this.returnFalse;
		}
		if (navigator.appName == "Mozilla")
		{
			as[i].onclick = this.returnTrue;
		}
	}
}

function expandAll() {
	var li = document.getElementsByClassName('plus');
	
	for (var i = 0; i < li.length; i++) {
			li[i].className = "minus";
	}
	new TreeMenu(document.getElementById("site-map"));
}

function collapseAll() {	
	var li = document.getElementsByClassName('minus');
	
	for (var i = 0; i < li.length; i++) {
			li[i].className = "plus";
	}
	new TreeMenu(document.getElementById("site-map"));
}

window.onload = function() {
	new TreeMenu(document.getElementById("site-map"));
}

