/* 



	List Expander 

	written by Alen Grakalic, provided by Css Globe (cssglobe.com)

	justeret af JL: <li>-tags giver lukkede menupunkter, <ol>-tags aabne. 



	

*/





this.listexpander = function(){

	

	// edit 

	

	var expandTo = 1; // level up to which you want your lists to be initially expanded. 1 is minimum

	var expandText = "&#229;ben"; // text for expand all button
	var collapseText = "Luk"; // text for collapse all button		

	var listClass = "foldeliste" // 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");

		for (var i=0;i<ul.length;i++){

			if(ul[i].className == listClass){

				create(ul[i]);

				buttons(ul[i]);

			};

		};

		var ol = document.getElementsByTagName("ol");

		for (var i=0;i<ol.length;i++){

			if(ol[i].className == listClass){

				create(ol[i]);

				/*buttons(ol[i]);*/

			};

		};

		

	};



	this.create = function(list) {	

		var items = list.getElementsByTagName("li");

		for(var i=0;i<items.length;i++){

			listItem(items[i]);

		};

	};	



	this.listItem = function(li){

		if(li.getElementsByTagName("ul").length > 0){

			var ul = li.getElementsByTagName("ul")[0];

			ul.style.display = (depth(ul) <= expandTo) ? "block" : "none";

			li.className = (depth(ul) <= expandTo) ? "expanded" : "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";				

				};

			};

		};

		if(li.getElementsByTagName("ol").length > 0){

			var ol = li.getElementsByTagName("ol")[0];

			ol.style.display = (depth(ol) <= expandTo) ? "block" : "none";

			li.className = (depth(ol) <= expandTo) ? "expanded" : "collapsed";

			li.over = true;	

			ol.onmouseover = function(){li.over = false;} 

			ol.onmouseout = function(){li.over = true;} 

			li.onclick = function(){

				if(this.over){

					ol.style.display = (ol.style.display == "none") ? "block" : "none";

					this.className = (ol.style.display == "none") ? "collapsed" : "expanded";				

				};

			};

		};			

	};	

	

	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);
		parent.insertBefore(p,list);
	};

	

	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";
			};

			if(li[i].getElementsByTagName("ol").length > 0){
				var ol = li[i].getElementsByTagName("ol")[0];
				ol.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";

			};

			if(li[i].getElementsByTagName("ol").length > 0){

				var ul = li[i].getElementsByTagName("ol")[0];

				ol.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;

