var closedarr = {};
var parsedcookieintoarr = false;
var allcollapsed = false;
var numsections = 0;

function assignmenuevents(e) {

	menusets = readCookie('menusets');
	if (menusets)
		closedarr = eval(menusets);
	
	parsedcookieintoarr = true;
	
	if (document.getElementsByTagName) {
		var x = document.getElementsByTagName('H4');
		var w = document.getElementById('image-extra1');
	} else if (document.all) {
		var x = document.all.tags('H4');
		var w = document.all['image-extra1'];
	} else return;
	
	w.onmouseup = menuallclicked;
	
	for (var i=0;i<x.length;i++)
	{
		if (x[i].className.indexOf('menuheading') != -1)
			numsections++;
			
			x[i].onmouseup = menusetstate;
			x[i].style.cursor = 'default';
			
			var setid = x[i].id.substr(11);
			if (setid in closedarr) {
				
				if (document.getElementById)
					var set = document.getElementById('menuset'+setid);
				else if (document.all)
					var set = document.all['menuset'+setid];
				else return;
				
				if (set.className != 'menuset clicked') {
					set.className = 'menuset clicked';
					x[i].className = 'menuheading clicked';
				} else {
					x[i].className = 'menuheading unclicked';
					set.className = 'menuset unclicked';
				}

			}
			
	}
	
}

function savemenupositions(e) {
	
	var saveclosed = obj2str(closedarr);
	
	// Navigating away from a page before it had loaded was unsetting the closed array
	if (parsedcookieintoarr)
		setCookie('menusets',saveclosed,365);
		
}


function menusetstate(e) {

	var targ;
		
	if (!e) var e = window.event;
	
	if (e.target) targ = e.target;
	else if (e.srcElement) targ = e.srcElement;
	if (targ.nodeType == 3) // defeat Safari bug
		targ = targ.parentNode;
		
	var setid = targ.id.substr(11);

	if (document.getElementById)
		var set = document.getElementById('menuset'+setid);
	else if (document.all)
		var set = document.all['menuset'+setid];
	else return;
	
	if (set.className == 'menuset clicked') {
		set.className = 'menuset unclicked';
		targ.className = 'menuheading unclicked';
		if (setid in closedarr) delete closedarr[setid];
	}
	else {
		set.className = 'menuset clicked';
		targ.className = 'menuheading clicked';
		closedarr[setid] = true;
	}

}

function menuallclicked(e) {

	if (objsize(closedarr) >= numsections)
		var collapseem = false;
	else
		var collapseem = true;

	menusetallstate(collapseem);

}

function menusetallstate(collapse) {

	if (document.getElementsByTagName)
		var x = document.getElementsByTagName('H4');	
	else if (document.all)
		var x = document.all.tags('H4');
	else return;
	for (var i=0;i<x.length;i++)
	{
		if (x[i].className.indexOf('menuheading') != -1)
			
			var setid = x[i].id.substr(11);
			
			if (document.getElementById)
				var set = document.getElementById('menuset'+setid);
			else if (document.all)
				var set = document.all['menuset'+setid];
			else return;
			
			if (collapse) {
				set.className = 'menuset clicked';
				x[i].className = 'menuheading clicked';
				closedarr[setid] = true;
			} else {
				x[i].className = 'menuheading unclicked';
				set.className = 'menuset unclicked';
				if (setid in closedarr) delete closedarr[setid];
			}
	}
	
}

function obj2str (obj) {
	try {
		return uneval(obj);
	} catch(e) {
		bits = new Array();
		for (p in obj) {
			bits.push(p + ':' + obj[p]);
		}
		return '({' + bits.join(', ') + '})';
	}
}
function objsize (obj) {
	var size = 0;
	for (var property in obj) {
		size++;
	}
	return size;
}

addonload('assignmenuevents');
addonunload('savemenupositions');