
var msPerDay = 1000 * 60 * 60 * 24;
var PERSISTENCE_MILLIS = 1 * msPerDay; // 1 day

function setTreeCookie(id) {
	if (!document.getElementById||!TreeList[id])
		return;
	var activeButtons=setTreeCookie.getActiveButtons(id);
	var visibleActiveButtons=[];
	for (var i=0,len=activeButtons.length,count=0; i<len; i++) {
		var container=Button.getLabel(activeButtons[i]).menu.container.el;
		if (setTreeCookie.isButtonVisible(container))
			visibleActiveButtons[count++]=activeButtons[i];
	}
	var visibleActiveButtonIds=[];
	for (var i=0; i<visibleActiveButtons.length; i++)
		visibleActiveButtonIds[i]=findAncestorWithClass(visibleActiveButtons[i],"button").id;
	document.cookie=id+"="+escape(visibleActiveButtonIds)+";path=/;expires="+new Date(new Date().getTime()+PERSISTENCE_MILLIS).toGMTString();
};

setTreeCookie.isButtonVisible=function(el) {
	if (typeof document.defaultView!="undefined"&&typeof document.defaultView.getComputedStyle != "undefined") {
		return document.defaultView.getComputedStyle(el,'').getPropertyValue("display")!="none";
	} else if (el.currentStyle)
		return el.currentStyle.display != "none";
};

setTreeCookie.getActiveButtons=function(id) {
	var activeButtons=[];
	if (TreeParams.OPEN_MULTIPLE_MENUS) {
		activeButtons=getElementsWithClass(document.getElementById(id),"span","labelDown");
	}else if (TreeList[id].activeMenu!=null) {
		activeButtons=getElementsWithClass(TreeList[id].activeMenu.el,"span","labelDown");
		activeButtons.unshift(TreeList[id].activeMenu.ownerButton.el);
	}
	return activeButtons;
};

restoreTreeState=function(treeId,defaultButtonId) {
	var activeButtons=getTreeCookie(treeId);
	var activatedFlag=false;
	if (activeButtons.length>0)
	for (var i=0;i<activeButtons.length;i++)
		if (activeButtons[i])
			restoreMenuState(activeButtons[i],activatedFlag=true);
	if (!activatedFlag&&defaultButtonId)
		activateMenu(defaultButtonId);
};

function restoreMenuState(sButtonId,isTarget) {
	var button=document.getElementById(sButtonId);
	if (!button)
		return;
	var parentMenuEl=findAncestorWithClass(button,"menu");
	var label=Button.getLabel(getElementsWithClass(button,"*","buttonlabel")[0]);
	var menu=label.menu;
	if (isTarget) {
		if (!label.isDepressed) {
			toggleMenu(label.el);
			label.isDepressed=true;
			if (parentMenuEl&&parentMenuEl.style.display!='block')
				for (var i=0; i<menu.items.length; menu.items[i++].style.display='none');
		}
	} else if (!menu.itemsToClose&&!label.isDepressed) {
		menu.itemsToClose=[];
		for (var i=menu.allItems.length-1,j=menu.items.length-1,n=0; i>-1; i--)
			if (menu.allItems[i].style.display=='block')
				(menu.itemsToClose[n++]=menu.allItems[i]).style.display="none";
			else if (menu.allItems[i]==menu.items[j])
				menu.itemsToClose[n++]=menu.items[j--];
	}
	if (parentMenuEl)
		restoreMenuState(parentMenuEl.id.replace(/Menu$/,""));
}

if (!window.addEventListener&&!window.attachEvent&&document.write)
	document.write("<script src='/js/global.js' type='text/javascript'></","script>");

function saveTreeOnUnload(id) {
	var _id=id;
	var handler=function() {
		setTreeCookie(_id);
	};
	if (window.addEventListener)
		window.addEventListener("unload",handler,false);
	else if (window.attachEvent)
		window.attachEvent("onunload",handler);
	else if (document.write) {
		if (!window.id)
			window.id="window";
		var contentPane=(window.contentPane?window.contentPane:new EventQueue(window))
		contentPane.addEventListener("onunload",handler);
	}
}

function getTreeCookie(id) {
	var activeButtons=getCookie(id);
	return(activeButtons!=null?activeButtons.split(","):[]);
}

function getCookie(name) {
	var dc=document.cookie;
	var prefix=name+"=";
	var begin=dc.lastIndexOf(prefix);
	if (begin==-1)
		return null;
	var end=dc.indexOf(";",begin);
	if (end==-1) 
		end=dc.length;
	return unescape(dc.substring(begin+prefix.length,end));
}
