function treeview_addClass() {
	var first = document.getElementById("first");
	var closed = false;
	if (/closed/.test(first.className)) {
		closed = true;
	}
	var li = first.getElementsByTagName("li");
	var children;
	var name;
	var handle;
	var current;
	var tmp;
	for (var i = li.length - 1; i >= 0; i--) {
		if (children = li[i].childNodes) {
			for (var j = children.length - 1; j >= 0; j--) {
				name = children[j].tagName;
				if (name) {
					if (name.toLowerCase()=="ul") {
						if (closed) {
							try {
								if (!li[i].nextSibling.tagName) {
									var next = li[i].nextSibling.nextSibling;
								} else {
									var next = li[i].nextSibling;
								}
							} 
							catch (e) {
								var next = false;
							}
							if (!next) {
								li[i].className = "lastExpandable";
								li[i].getElementsByTagName("ul")[0].style.display = "none";								
							} else {
								li[i].className = "expandable";
								li[i].getElementsByTagName("ul")[0].style.display = "none";
							}
						} else {
							try {
								if (!li[i].nextSibling.tagName) {
									var next = li[i].nextSibling.nextSibling;
								} else {
									var next = li[i].nextSibling;
								}
							} 
							catch (e) {
								var next = false;
							}
							if (!next) {
								li[i].className = "lastCollapsible";
								li[i].getElementsByTagName("ul")[0].style.display = "block";								
							} else {							
								li[i].className = "collapsible";
								li[i].getElementsByTagName("ul")[0].style.display = "block";
							}
						}
						handle = document.createElement("span");
						handle.className = "handle";
						li[i].insertBefore(handle, li[i].firstChild);
						handle.onclick = function () {treeview_toggle(this, this.parentNode);};
						continue;
					}
				}
				if (i == (li.length-1)) {
					li[i].className = "last";
				}
				try {
					if (!li[i].nextSibling.tagName) {
						var next = li[i].nextSibling.nextSibling;
					} else {
						var next = li[i].nextSibling;
					}
				} 
				catch (e) {
					var next = false;
				}
				if (!next) {
					li[i].className = "last";
				}
			}
		}
	}
}

function treeview_toggle(handle,list){
	var ul = list.getElementsByTagName("ul")[0];
	if (ul.style.display=="none"){
		ul.style.display = "block";
		if (/lastExpandable/.test(ul.className)) {
			list.className = "lastCollapsible";
		} else {
			list.className = "collapsible";
		}
	} else {
		ul.style.display="none";
		if (/lastExpandable/.test(ul.className)) {
			list.className = "lastExpandable";
		} else {
			list.className = "expandable";
		}
	}
}

if (Drupal.jsEnabled) {
	if (!typeof addLoadEvent) {
		addLoadEvent(treeview_addClass);
	} else {
		window.onload = treeview_addClass;
	}
}
