/*
window.GET = function(name) {
	var query = window.location.search.substring(1);
	var vars = query.split('&');
	for(var i = 0; i < vars.length; ++i) {
		var pair = vars[i].split('=');
		if(pair[0] == name) return pair[1];
	}
	return null;
};

onload_ = window.onload;
window.onload = function() {
	var from = GET('from');
	if (from) createCookie('from', from, 0);
	if (onload_) onload_();
};
*/

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

var nodeClosedClass = "liClosed";
var nodeOpenClass = "liOpen";
var nodeBulletClass = "liBullet";
var nodeLinkClass = "bullet";

var ii = 0; // id iterator, say what?

function convertTrees()
{
	var uls = document.getElementsByTagName("ul");

	if(uls == null)
	{
		return;
	}

	for(var uli = 0; uli < uls.length; ++uli)
	{
		var ul = uls[uli];

		if(ul.nodeName == "UL" && ul.parentNode.id == "admin_menu")
		{
			processList(ul);
		}
	}
}

function treeNodeOnclick()
{
	this.parentNode.className = (this.parentNode.className == nodeOpenClass) ?
		nodeClosedClass : nodeOpenClass;
	createCookie(this.parentNode.id, this.parentNode.className, 7);
	return false;
}

function processList(ul)
{
	if(!ul.childNodes || ul.childNodes.length == 0)
	{
		return;
	}

	var childNodesLength = ul.childNodes.length;
	for (var itemi=0;itemi<childNodesLength;itemi++) {
		var item = ul.childNodes[itemi];
		if (item.nodeName == "LI") {
			// Iterate things in this LI
			var subLists = false;
			var itemChildNodesLength = item.childNodes.length;
			for (var sitemi=0;sitemi<itemChildNodesLength;sitemi++) {
				var sitem = item.childNodes[sitemi];
				if (sitem.nodeName=="UL") {
					subLists = true;
					processList(sitem);
				}
			}
			var s= document.createElement("SPAN");
			var t= '\u00A0'; // &nbsp;
			s.className = nodeLinkClass;
			if (subLists) {
				// This LI has UL's in it, so it's a +/- node
				if (item.className==null || item.className=="") {
					item.id = "ii" + ii++;
					item.className = (readCookie(item.id) == null) ? nodeOpenClass : readCookie(item.id);
				}
				// If it's just text, make the text work as the link also
				if (item.firstChild.nodeName=="#text") {
					t = t+item.firstChild.nodeValue;
					item.removeChild(item.firstChild);
				}
				s.onclick = treeNodeOnclick;
			}
			else {
				// No sublists, so it's just a bullet node
				item.className = nodeBulletClass;
				s.onclick = function() { return false; };
			}
			s.appendChild(document.createTextNode(t));
			item.insertBefore(s,item.firstChild);
		}
	}
}

window.onload = convertTrees;
