1/*
2Based on Stuart Langridge's aqtree3clickable.js (http://www.kryogenix.org/code/browser/aqlists/)
3*/
4
5
6function makeTreesC() {
7    // We don't actually need createElement, but we do
8    // need good DOM support, so this is a good check.
9    if (!document.createElement) return;
10
11    uls = document.getElementsByTagName("ul");
12    for (uli=0;uli<uls.length;uli++) {
13        ul = uls[uli];
14        if (ul.nodeName == "UL" && ul.className == "aqtree3clickable") {
15            processULELC(ul);
16        }
17    }
18}
19
20function processULELC(ul) {
21    if (!ul.childNodes || ul.childNodes.length == 0) return;
22    // Iterate LIs
23    for (var itemi=0;itemi<ul.childNodes.length;itemi++) {
24        var item = ul.childNodes[itemi];
25        if (item.nodeName == "LI") {
26            // Iterate things in this LI
27            var a;
28            var subul;
29	    	subul = "";
30            for (var sitemi=0;sitemi<item.childNodes.length;sitemi++) {
31                var sitem = item.childNodes[sitemi];
32                switch (sitem.nodeName) {
33                    case "A": a = sitem; break;
34                    case "SPAN": a = sitem; break;
35                    case "UL": subul = sitem;
36                               processULELC(subul);
37                               break;
38                }
39            }
40            if (subul) {
41                associateELC(a,subul);
42            } else {
43                a.parentNode.className = "bullet";
44            }
45        }
46    }
47}
48
49function associateELC(a,ul) {
50	var el = document.createElement("a");
51	var img = document.createElement("img");
52	img.src="lib/plugins/fullindex/images/open.gif";
53	el.appendChild(img);
54	el.className = "cat";
55	a.parentNode.insertBefore(el, a.parentNode.firstChild);
56    if (a.parentNode.className.indexOf('open') == -1)
57		a.parentNode.className = 'closed';
58	el.onclick = function () {
59        if (this.parentNode.className=='open') {
60        	this.parentNode.className = "closed";
61			this.firstChild.src="lib/plugins/fullindex/images/closed.gif";
62        } else {
63        	this.parentNode.className = "open";
64			this.firstChild.src="lib/plugins/fullindex/images/open.gif";
65        }
66        return false;
67    }
68}
69
70function aq_collapseAll() {
71	//walk through entire tree and change "open" to "closed" class
72    uls = document.getElementsByTagName("ul");
73    for (uli=0;uli<uls.length;uli++) {
74        ul = uls[uli];
75        if (ul.nodeName == "UL" && ul.className == "aqtree3clickable") {
76			if (!ul.childNodes || ul.childNodes.length == 0) return;
77			for (var itemi=0;itemi<ul.childNodes.length;itemi++) {
78				var item = ul.childNodes[itemi];
79				item.className = 'closed';
80			}
81        }
82    }
83}
84
85function aq_showLevel(ul, level, currLevel) {
86	currLevel = currLevel + 1;
87    if (!ul.childNodes || ul.childNodes.length == 0) return;
88    // Iterate LIs
89    for (var itemi=0;itemi<ul.childNodes.length;itemi++) {
90        var item = ul.childNodes[itemi];
91        if (item.nodeName == "LI") {
92            // Iterate things in this LI
93            var subul;
94	    	subul = "";
95	    	var hasChild;
96	    	//if not reached level look for ul and process recursively
97	    	if (currLevel < level){
98				for (var sitemi=0;sitemi<item.childNodes.length;sitemi++) {
99					var sitem = item.childNodes[sitemi];
100					switch (sitem.nodeName) {
101					  case "UL": subul = sitem;
102					    aq_showLevel(subul, level, currLevel);
103					    hasChild = true;
104						break;
105					}
106				}
107				if (hasChild) {
108					item.className = 'open';
109					hasChild = false;
110				} else {
111					item.className = 'bullet';
112				}
113			} else {
114				//check to see if there's a end node
115				for (var sitemi=0;sitemi<item.childNodes.length;sitemi++) {
116					var sitem = item.childNodes[sitemi];
117					switch (sitem.nodeName) {
118					  case "UL": subul = sitem;
119					    hasChild = true;
120						break;
121					}
122				}
123				if (hasChild) {
124					item.className = 'closed';
125					item.firstChild.firstChild.src="lib/plugins/fullindex/images/closed.gif";
126					hasChild = false;
127				} else {
128					item.className = 'bullet';
129				}
130            }
131        }
132    }
133}
134
135
136function aq_show(level, obj) {
137	//walk through entire tree and change "open" to "closed" class based on the level passed
138    uls = document.getElementsByTagName("ul");
139    for (uli=0;uli<uls.length;uli++) {
140        ul = uls[uli];
141        if (ul.nodeName == "UL" && ul.className == "aqtree3clickable") {
142        	if(level > 0) {
143        		aq_set(obj);
144            	aq_showLevel(ul, level, 0);
145            }
146        }
147    }
148}
149
150//find the clicked item and set classes accordingly
151function aq_set(obj) {
152    var ul = document.getElementById("aqNav");
153    for (i=0;i<ul.childNodes.length;i++) {
154    	var li = ul.childNodes[i];
155    	//find clicked item
156    	if(li.id == obj.parentNode.id) {
157    		li.className = "on";
158    	} else {
159    		li.className = "";
160    	}
161    }
162}
163
164//initialize
165addInitEvent(makeTreesC);
166