addEvent(window, "load", makeTrees);

function makeTrees () {
	if (!document.createElement) return;
   
	uls = document.getElementsByTagName ("ul");
	for (uli=0; uli < uls.length; uli++) {
		ul = uls[uli];
		if (ul.nodeName == "UL" && ul.className == "aqtree") {
			processULEL (ul);
		}
	}
}

function processULEL (ul) {
	if (!ul.childNodes || ul.childNodes.length == 0) return;
	var log = document.getElementById ("log");
	for (var itemi = 0; itemi < ul.childNodes.length; itemi++) {
		window.status = "item " + itemi;
		var item = ul.childNodes[itemi];
		if (item.nodeName == "LI") {
			item.style.listStyle = "none";

			var atag;
			var subul = 0;

			atag = document.createElement ("a");
			atag.setAttribute ("class", "treenode");
			icon = document.createElement ("img");
			if (item.className == "expand") {
				icon.setAttribute ("src", "bullet.gif");
			} else {
				icon.setAttribute ("src", "plus.gif");
			}
			atag.appendChild (icon);

			var first = item.firstChild;
			item.insertBefore (atag, first);
			item.insertBefore (document.createTextNode (" "), first);

			for (var sitemi = 0; sitemi < item.childNodes.length; sitemi++) {
				if (item.childNodes[sitemi].nodeName == "UL") {
					subul = item.childNodes[sitemi];
					if (item.className != "expand") {
						subul.style.display = "none";
					}
					processULEL (subul);
				}
			}
			if (subul && item.className != "expand") {
				associateEL (atag, subul);
			} else {
				icon = document.createElement ("img");
				icon.setAttribute ("src", "bullet.gif");
				atag.parentNode.replaceChild (icon, atag);
			}
		}
	}
}

function associateEL (anchor, ul) {
	if (!anchor) alert ("associateEL");

	anchor.onclick = function () {
		var display = ul.style.display;
		if (ul.style.display == "none") {
			// open the node
			ul.style.display = "block";
			// change the + to a -
			icon = document.createElement ("img");
			icon.setAttribute ("src", "minus.gif");
			anchor.replaceChild (icon, anchor.firstChild);
		} else {
			// close the node
			ul.style.display = "none";
			// change the - to a +
			icon = document.createElement ("img");
			icon.setAttribute ("src", "plus.gif");
			anchor.replaceChild (icon, anchor.firstChild);
		}
		return false;
	}
	anchor.onmouseover = function() {
		var display = ul.style.display;
		window.status = (display == "block") ? "Collapse" : "Expand";
		return true;
	}
	anchor.onmouseout = function() {
		window.status = "";
		return true;
	}
}

function addEvent(obj, evType, fn){
  if (obj.addEventListener){
	obj.addEventListener(evType, fn, true);
	return true;
  } else if (obj.attachEvent){
   var r = obj.attachEvent("on"+evType, fn);
	return r;
  } else {
   return false;
  }
}
