// @author: Richard Herrera
// @description: Tree Menu
var EnableTree = {
	
 // USER DEFINED PARAMETERS
 
	nestedListType : "ul",// nestedListType: The outer container type. "ul" "ol" "dl"
	
 // singleMode : true, //= collapses all but section clicked. 
    singleMode : false, //= multiple sections can be opened at same time.
	
 // parentIsLink : true, //= main button is an actual link. (arrow is menu trigger) 
	parentIsLink : false, //= main button is not an actual link.(arrow or link is menu triger)
	

	init : function() {
		var container = ClassName.get(document, "*", "tree");
		if (!container) return;

		for (var i = 0; i < container.length; i++) {
			var sub = container[i].getElementsByTagName(EnableTree.nestedListType);

			for (var j = 0; j < sub.length; j++) {
				if (!ClassName.test(sub[j].parentNode, "treeParent")){
					ClassName.add(sub[j].parentNode, "treeParent closed");
				}
				var clicker = document.createElement("a");
					clicker.setAttribute("href", "#");
					clicker.onclick = function() {
						if (!EnableTree.singleMode) {
							return EnableTree.onclick(this);
						} else {
							return EnableTree.once.onclick(this);
						}
					};
				ClassName.add(clicker, "clicker");
				sub[j].parentNode.insertBefore(clicker, sub[j].parentNode.firstChild);
			
				var sibling = clicker.parentNode.getElementsByTagName("a")[1];
				if (!ClassName.test(sibling, "clicker")) {
					sibling.onclick = function() {
						if (!EnableTree.parentIsLink || ClassName.test(this.parentNode, "unlinked")) {
							if (!EnableTree.singleMode) return EnableTree.onclick(this.previousSibling);
							return EnableTree.once.onclick(this.previousSibling);
						}
					};
				}
			}
		}
	},
	onclick : function(e) {
		if (ClassName.test(e.parentNode, "closed")) ClassName.replace(e.parentNode, "closed", "open");
		else if (ClassName.test(e.parentNode, "open")) ClassName.replace(e.parentNode, "open", "closed");

		return false;
	},
	once : {
		onclick : function(e) {
			var parent = ClassName.get(e.parentNode.parentNode, "*", "open");
			for (var i = 0; i < parent.length; i++) if (parent[i] != e.parentNode) ClassName.replace(parent[i], "open", "closed");

			return EnableTree.onclick(e);
		}
	}
};
DomLoaded.load(EnableTree.init);