/* gleefully stolen from michal kosmulski (with appreciation) */

function toggle(foo) {
	if (document.getElementById(foo).style.display == "none") {
		show(foo);
	} else {
		if (document.getElementById(foo).style.display == "block") {
			hide(foo);
		} else {
			show(foo);
		}
	}
}

function show(foo) {
	document.getElementById(foo).style.display = "block";
	setCookie(foo, "o",null,"/");
}

function hide(foo) {
	document.getElementById(foo).style.display = "none";
	setCookie(foo, "c",null,"/");
}

function setMenuState(id) {
	status = getCookie(id);
	if (status=="o") {
		show(id);
	} else if (status=="c") {
		hide(id);
	}
}

// name - name of the cookie
// value - value of the cookie
// [expires] - expiration date of the cookie (defaults to end of current session)
// [path] - path for which the cookie is valid (defaults to path of calling document)
// [domain] - domain for which the cookie is valid (defaults to domain of calling document)
// [secure] - Boolean value indicating if the cookie transmission requires a secure transmission
// * an argument defaults when it is assigned null as a placeholder
// * a null placeholder is not required for trailing omitted arguments
function setCookie(name, value, expires, path, domain, secure) {
	var curCookie = name + "=" + escape(value) + ((expires) ? "; expires="
		+ expires.toGMTString() : "")
		+ ((path) ? "; path=" + path : "") + ((domain) ? "; domain=" + domain : "")
		+ ((secure) ? "; secure" : "");
	document.cookie = curCookie;
}

// name - name of the desired cookie
// * return string containing value of specified cookie or null if cookie does not exist
function getCookie(name) {
	var dc = document.cookie;
	var prefix = name + "=";
	var begin = dc.indexOf("; " + prefix);
	if (begin == -1) {
		begin = dc.indexOf(prefix);
		if (begin != 0) return null;
	} else begin += 2;
	var end = document.cookie.indexOf(";", begin);
	if (end == -1) end = dc.length;
	return unescape(dc.substring(begin + prefix.length, end));
}

// email obfuscation function, gleefully stolen from drsteve
// see: http://istpub.berkeley.edu:4201/bcc/Winter2003/feat.spamharvest.html
function eaddr(u) {
   var u, h, t, addr, a = "&#64;", d = "lbl.gov", l = arguments.length;
   switch(l)
   {
   case 1: // username only
      u = arguments[0]; addr = u + a + d; t = u + "&#64;" + d; break;
   case 2: // username + domain OR username + hostname OR username + text
      u = arguments[0];
      if ( arguments[1].match(/\./) ) {       // username + domain
         d = arguments[1]; addr = u + a + d; t = u + "&#64;" + d;
      } else if ( arguments[1].match(/ /) ) { // username + text
         t = arguments[1]; addr = u + a + d;
      } else {                                // username + hostname
         h = arguments[1]; addr = u + a + h + "." + d; t = u + "&#64;" + h + " dot " + d;
      }
      break;
   case 3: // username + domain + text OR username + hostname + domain OR username + hostname + text
      u = arguments[0];
      if ( arguments[1].match(/\./) ) {        // username + domain + text
         d = arguments[1]; t = arguments[2]; addr = u + a + d;
      } else if ( arguments[2].match(/ /) ) { // username + hostname + text
         h = arguments[1]; t = arguments[2]; addr = u + a + h + "." + d;
      } else {                                // username + hostname + domain
         h = arguments[1]; d = arguments[2]; addr = u + a + h + "." + d; t = u + " at " + h + " dot " + d;
      }
      break;
   case 4: // username + hostname + domain + text
      u = arguments[0]; h = arguments[1]; d = arguments[2]; t = arguments[3]; addr = u + a + h + "." + d;
      break;
   default:
      document.write("BROKEN CALL TO eaddr()"); var FAIL = "Y";
   }
   if ( ! ( FAIL == "Y" ) ) { document.write("<" + "A" + " " + "HREF=" + "mail" + "to:" + addr + ">" + t + "<\/A>"); }
}

