/* 

	List Expander 
	written by Alen Grakalic, provided by Css Globe (cssglobe.com)
	
*/

this.listexpander = function(){
	
	// edit 
	
	var expandTo = 1; // level up to which you want your lists to be initially expanded. 1 is minimum
	var expandText = "Expand All"; // text for expand all button
	var collapseText = "Collapse All"; // text for collapse all button		
	var listClass = "listexpander" // class name that you want to assign to list(s). If you wish to change it make sure to update the css file as well  
	
	// end edit (do not edit below this line)
	
	this.start = function(){
		var ul = document.getElementsByTagName("ul");
		var fileName =window.location.href.substr(window.location.href.lastIndexOf("/")+1,window.location.href.length-window.location.href.lastIndexOf("/")-1);
		for (var i=ul.length-1;i>=0;i-=1){
			if(ul[i].className==listClass){
				create(ul[i],fileName);
				buttons(ul[i]);
			};
		};
	};

	this.create = function(list,fileName) {	
		var items = list.getElementsByTagName("li");
		for(var i=items.length-1;i>=0;i-=1){
			listItem(items[i],fileName);
		};
	};	

	this.listItem = function(li,fileName){
		var temp=li.getElementsByTagName("ul");
		if(temp.length> 0){
			var ul = li.getElementsByTagName("ul")[0];
			var selected=(selectedPage(ul,fileName)) ? "block" : "none";
			ul.style.display = selected;
			if(selected=="block")
				li.className = "expanded";
			else
				li.className = "collapsed";
			li.over = true;	
			ul.onmouseover = function(){li.over = false;} 
			ul.onmouseout = function(){li.over = true;} 
			li.onclick = function(){
				if(this.over){
					ul.style.display = (ul.style.display == "none") ? "block" : "none";
					this.className = (ul.style.display == "none") ? "collapsed" : "expanded";				
				};
			};
		}
		else{
			li.className="leaf";
			if(li.title.indexOf(fileName)>-1){
				li.getElementsByTagName("a")[0].className="lMenuLinkH";
			}
		}
	};	
	
	this.selectedPage = function(ul,page){
		var bBool=false;
		li=ul.getElementsByTagName("li");
		if(li.length>1){
			for(var i=li.length-1;i>=0;i-=1){
				ul2=li[i].getElementsByTagName("ul");
				if(ul2.length > 0){
					for(var j=ul2.length-1;j>=0;j-=1){
						if(selectedPage(ul2[j],page)) bBool=true;
					};
				}
				else{
					if(li[i].title.indexOf(page)>-1) bBool=true;
				}
			};
		}
		else{
			if(li[0].title.indexOf(page)>-1) bBool=true;
		}
		return bBool;
	}
	
	this.buttons = function(list){
		var parent = list.parentNode;
		var p = document.createElement("p");
		p.className = listClass;
		var a = document.createElement("a");
		a.innerHTML = expandText;
		a.onclick = function(){expand(list)};
		p.appendChild(a);
		var a = document.createElement("a");
		a.innerHTML = collapseText;
		a.onclick = function(){collapse(list)};
		p.appendChild(a);
	};
	
	this.expand = function(list){
		li = list.getElementsByTagName("li");
		for(var i=0;i<li.length;i++){
			if(li[i].getElementsByTagName("ul").length > 0){
				var ul = li[i].getElementsByTagName("ul")[0];
				ul.style.display = "block";
				li[i].className = "expanded";
			};
		};
	};
	
	this.collapse = function(list){
		li = list.getElementsByTagName("li");
		for(var i=0;i<li.length;i++){
			if(li[i].getElementsByTagName("ul").length > 0){
				var ul = li[i].getElementsByTagName("ul")[0];
				ul.style.display = "none";
				li[i].className = "collapsed";
			};
		};
	};
	
	this.depth = function(obj){
		var level = 1;
		while(obj.parentNode.className != listClass){
			if (obj.tagName == "UL") level++;
			obj = obj.parentNode;
		};
		return level;
	};	
	
	start();
	
};

window.onload = listexpander;
