function addressMaker()
{	var addrs = document.getElementsByTagName("span");
	for (var i = 0; i < addrs.length; i++)
	{	if (addrs[i].className == "addr")
		{	/*	there will be two or three parts; id, place and name */
			var id, place;
			var name = "";
			for (var j = 0; j < addrs[i].childNodes.length; j++)
			{	var p = addrs[i].childNodes[j];
				/* if p is a span, get the class and the contents */
				if (p.nodeName == 'SPAN')
				{	if (p.className == "id")
					{	id = p.firstChild.data;
					}
					else if (p.className == "place")
					{	place = p.firstChild.data;
					}
					else if (p.className == "name")
					{	name = p.firstChild.data;
					}
				}
			}
			if (id !== "" && place !== "")
			{	/* do the replacement */
				while (addrs[i].childNodes.length > 0)
				{	addrs[i].removeChild(addrs[i].childNodes[0]);
				}
				var link = document.createElement('a');
				link.href = "mailto:" + id + "@" + place;

				var txt;
				if (name.length > 0)
				{	txt = document.createTextNode(name);
					link.title = name;
				}
				else
				{	txt = document.createTextNode(id + "@" + place);
					link.title = id + "@" + place;
				}
				link.appendChild(txt);
				addrs[i].appendChild(link);
			}
		}
	}
}

function linkEnhance()
{	// highlights the current page
	if (document.getElementById("navBox"))
	{	var navLinks = document.getElementById('navBox').getElementsByTagName('A');
		var here = window.location.pathname;
		if (here && here !== '/')
		{	for (var i=0;i<navLinks.length;i++)
			{	if( (! navLinks[i].href.indexOf(here) == -1 ) && (! navLinks[i].id || navLinks[i].id !== 'openclosemenus'))
				{	// we are on this page
					navLinks[i].className += ' here';
					break;
				}
			}
		}
	}
}

function menuCollapse()
{	var nav = document.getElementById("navPage");
	if (!nav)
	{	return; }
	var lis = nav.getElementsByTagName("li");
	var acc = 0;
	for (var l = 0; l < lis.length; l++)
	{	if (lis[l].className == "h3")
		{	acc++;
			break;
		}
	}
	if (acc !== 0)
	{	var toggleOn = document.createElement('a');
		toggleOn.className="toggler";
		toggleOn.href="#navPage";
		toggleOn.id = "switchOn";
		var showTxt = document.createTextNode("toggle subtopics");
		toggleOn.appendChild(showTxt);
		nav.insertBefore(toggleOn,nav.firstChild);
		toggleOn.onclick = function()
		{	navToggle(this);
			return false;
		};
		navToggle();
	}
}

function showPpl()
{	var as = document.getElementById("main").getElementsByTagName('a');
	for (var a = 0; a < as.length; a++)
	{	if (as[a].id && as[a].parentNode.className == "pplToggle")
		{	as[a].onclick = function()
			{	toggleMe(this);
				return false;
			};
			toggleMe(as[a]);
		}
	}
}


function toggleMe(x)
{	var id = x.href.match(/#(\w.+)/)[1];
	if (document.getElementById(id))
	{	showHide(document.getElementById(id));
	}
}

function showShort(s)
{	var bits = document.getElementById(s);
	if (bits)
	{	var x = bits.id.indexOf("Links");
		var str = bits.id.substring(0,x);
		var y = document.getElementById(str+'Ppl');
		showHide(y);
	}
	else
	{	alert('Cannot find '+s);
	}
}

function toggleVis(toggler,section)
{	//	when we click or select the link, change the visibility of that section
	toggler.onlick = function()
	{	showHide(section);
		return false;
	};
	//	initially have the section hidden
	showHide(section);
}

function navToggle()
{	var nav = document.getElementById("navPage");
	var lis = nav.getElementsByTagName("li");
	for (var l = 0; l < lis.length; l++)
	{	if (lis[l].className == "h3")
		{	showHide(lis[l]);
		}
	}
}

function showHide(me)
{	var view = (me.style.display == 'none') ? '' : 'none';
	me.style.display = view;
}

function tableStriper()
{	var tables = document.getElementsByTagName('table');
	for (var t = 0; t < tables.length; t++)
	{	if (tables[t].id)
		{	stripe(tables[t].id);
		}
		else if (tables[t].className && tables[t].className.indexOf('stripey') != -1)
		{	stripe_table(tables[t]);
		}
	}
}

function stripe(id)
{	var table = document.getElementById(id);
	if (! table) { return; }
	stripe_table(table);
}

function stripe_table(table) {
// by definition, tables can have more than one tbody
// element, so we'll have to get the list of child tbody
	var tbodies = table.getElementsByTagName("tbody");
	for (var h = 0; h < tbodies.length; h++)
	{	var trs = tbodies[h].getElementsByTagName("tr");
		var even = false;
		for (var i = 0; i < trs.length; i++)
		{	if (trs[i].className && trs[i].className.indexOf('table-header-row') != -1)
			{ continue; }
			if (even)
			{ trs[i].className += trs[i].className ? ' blue':'blue'; }
			even = ! even;
		}
	}
}

function initialise()
{	linkEnhance();
	addressMaker();
	tableStriper();
//	menuCollapse();
//	showPpl();
}

if (document.getElementById && document.createElement && document.getElementsByTagName) {
	window.onload = initialise;
}


