function getState(layer_ref) {
	if (document.all) {
		state = eval("document.all." + layer_ref + ".style.display");
	}

	if (document.layers) {
		state = document.layers[layer_ref].display;
	}

	if (document.getElementById && !document.all) {
		state = document.getElementById(layer_ref).style.display;
	}
}

function hideshow(layer_ref) {
	
	getState(layer_ref);
	// just a little patching - if there's no state for what we're trying to show, then changes are its state hasn't been defined and it's already visible. So, we set the state to 'block' (because that's what it is anyway) so that when hideshow() gets it, it'll change it to "none" right away.
	if (state == 'block' || state == null) {
		state = 'none';
	} else {
		state = 'block';
	}
	
	setvisibility(layer_ref);
}

function setvisibility(layer_ref) {	
	// hooks for IE
	if (document.all) {
		eval( "document.all." + layer_ref + ".style.display = state");
	}
	
	// hooks for NS 4 or lower
	if (document.layers) {
		document.layers[layer_ref].display = state;
	}
	
	// hooks for everyone else
	if (document.getElementById && !document.all) {
		theref = document.getElementById(layer_ref);
		theref.style.display = state;
	}
	
	eraseCookie('mc_'+layer_ref+'_state');
	createCookie('mc_'+layer_ref+'_state', state, 100);
	
}

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

function eraseCookie(name) {
	createCookie(name, "", -1);
}

function getElementsByClass(searchClass, node, tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp('(^|\\s)'+searchClass+'(\\s|$)');
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	} else {
		window.onload = function() {
			oldonload();
			func();
		}
	}
}

var state;

addLoadEvent(function () {

	var things = getElementsByClass('upper', document, 'div');  //grab all the divs of class "upper"
	if (location.href.substr(7, 1) == "b") {
		var things = document.getElementsByTagName('div');
		for (i=0; i < things.length; i++) {
		var layer_ref = things[i].getAttribute('id');
			var theState = readCookie('mc_'+layer_ref+'_state');
			if (theState) {
				state = theState;
			} else {
				state = 'block';
			}
			
			setvisibility(things[i].id);
		}
	} else {
		for (i = 0; i < things.length; i++) {
			var theUL = things[i].getElementsByTagName('ul')[0];	//there should be only one ul set in each upper class, so get it.
			var layer_ref = theUL.getAttribute('id');				//what's the ul's id?
			//alert(layer_ref);										//for testing purposes - make sure it gets the id's right.
			var theState = readCookie('mc_'+layer_ref+'_state');	//get the cookie for that ul, if it exists
			if (theState) {
				state = theState;
			} else {
				state = 'block';									//if there's no cookie set, the default is 'block'
			}
			
			setvisibility(layer_ref);								//set the visibility of that ul
		}
	}
	
});