var enablepersist = "on";	//Enable saving state of content structure using session cookies? (on/off)
var collapseprevious = "no";//Collapse previously open content when opening present? (yes/no)

var contractsymbol = '- '; 	//HTML for contract symbol. For image, use: <img src="whatever.gif">
var expandsymbol = '+ ';	//HTML for expand symbol.

if(document.getElementById) 
{
	document.write('<style type="text/css">');
	document.write('.switchcontent{display:none;}');
	document.write('</style>');
}

function getElementbyClass(rootobj, classname)
{
	var temparray = new Array();
	var inc = 0;
	for(i = 0; i < rootobj.length; i++)
		if(rootobj[i].className == classname) temparray[inc++] = rootobj[i];
	return temparray;
}

function contractcontent(omit)
{
	var inc = 0;
	while(ccollect[inc])
	{
		if(ccollect[inc].id != omit)
			ccollect[inc].style.display = "none";
		inc++;
	}
}

function expandcontent(curobj, cid)
{
	var spantags = curobj.getElementsByTagName("SPAN");
	var showstateobj = getElementbyClass(spantags, "showstate");
	if(ccollect.length > 0)
	{
		if(collapseprevious == "yes") contractcontent(cid);
		
		document.getElementById(cid).style.display = (document.getElementById(cid).style.display != "block") ? "block" : "none";
		
		if(showstateobj.length > 0) //if "showstate" span exists in header
		{
			if(collapseprevious == "no")
				showstateobj[0].innerHTML = (document.getElementById(cid).style.display == "block") ? contractsymbol : expandsymbol;
			else
				revivestatus();
		}
	}
}

function revivecontent()
{
	contractcontent("omitnothing");
	selectedItem = getselectedItem();
	selectedComponents = selectedItem.split("|");
	
	for(i = 0; i < selectedComponents.length - 1; i++)
		document.getElementById(selectedComponents[i]).style.display="block";
}

function revivestatus()
{
	var inc = 0;
	while(statecollect[inc])
	{
		if(ccollect[inc].style.display == "block")
			statecollect[inc].innerHTML=contractsymbol;
		else
			statecollect[inc].innerHTML=expandsymbol;
		inc++;
	}
}

function get_cookie(Name)
{
	var search = Name + "=";
	var returnvalue = "";
	
	if(document.cookie.length > 0)
	{
		offset = document.cookie.indexOf(search);
		if(offset != -1) 
		{
			offset += search.length;
			end = document.cookie.indexOf(";", offset);
			if(end == -1)
				end = document.cookie.length;
			returnvalue = unescape(document.cookie.substring(offset, end));
		}
	}
	return returnvalue;
}

function getselectedItem()
{
	if(get_cookie(window.location.pathname) != "")
	{
		selectedItem = get_cookie(window.location.pathname);
		return selectedItem;
	}
	else
		return "";
}

function saveswitchstate()
{
	var inc = 0;
	var selectedItem = "";
	
	while(ccollect[inc])
	{
		if(ccollect[inc].style.display == "block")
			selectedItem += ccollect[inc].id + "|";
		inc++;
	}
	
	document.cookie = window.location.pathname + "=" + selectedItem;
}

function do_onload()
{
	uniqueidn = window.location.pathname + "firsttimeload";
	var alltags = document.all ? document.all : document.getElementsByTagName("*");
	ccollect = getElementbyClass(alltags, "switchcontent");
	statecollect = getElementbyClass(alltags, "showstate");
	
	if(enablepersist == "on" && ccollect.length > 0)
	{
		document.cookie = (get_cookie(uniqueidn) == "") ? uniqueidn + "=1" : uniqueidn + "=0";
		firsttimeload = (get_cookie(uniqueidn)==1) ? 1 : 0; //check if this is 1st page load
		if(!firsttimeload)
			revivecontent();
	}
	if(ccollect.length > 0 && statecollect.length > 0)
		revivestatus();
}

if(window.addEventListener)
	window.addEventListener("load", do_onload, false);
else if(window.attachEvent)
	window.attachEvent("onload", do_onload);
else if(document.getElementById)
	window.onload=do_onload;

if(enablepersist == "on" && document.getElementById)
	window.onunload = saveswitchstate;
