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()
{	//	adds an icon to external links
	//	adds ?all to links when the menus are open

	// if 'all' is on, find the internal links in the document and add '?all' to them
	if (window.location.href.indexOf('?all') != -1)
	{	var links = document.getElementsByTagName("A");
		for (var x=0; x<links.length; x++)
		{	var link = links[x].href;
			//	link to a page on this site but not on this page
			if (link.indexOf(window.location.hostname) != -1 // page on this site
				&& link.indexOf('?all') == -1  // "all" not in the link already
				&& link.indexOf('html') != -1) // href contains html

			{	var alt = escape(window.location.search);
				var url = link.toString().split('#', 2);
				var xlink = escape(url[0]);
				if (url.length == 2)
				{	var hash = escape(url[1]);
					links[x].setAttribute("href", unescape(xlink + alt + '#' + hash));
				}
				else
				{	links[x].setAttribute("href", unescape(xlink + alt));
				}
			}
		}
		var closeLinks = document.getElementById('openclosemenus');
		if (closeLinks.href.indexOf('?all') != -1)
		{	closeLinks.setAttribute("href", closeLinks.href.replace(/\?all/, ""));
		}
	}

	if (document.getElementById("navBox"))
	{	var navLinks = document.getElementById('navBox').getElementsByTagName('A');
		var here = window.location.pathname;
		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;
			}
		}
	}
	



/*
		var spans = links[x].getElementsByTagName("span");
		for (var a = 0; a < spans.length; a++)
		{	if (spans[a].className == "extLink")
			{	// remove the text, put in the little icon
				var parent = spans[a].parentNode;
				var ext = document.createElement('img');
				ext.src = "http://www.geneontology.org/images/icon-external.png";
				ext.alt = "external link";
				parent.replaceChild(ext,spans[a]);
			}
		}
	}
*/
}

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)
{	//if (! me.className || me.className.indexOf("noDisplay") == -1)
	//{	me.className += me.className ? ' noDisplay' : 'noDisplay';
	//}
	//else
	//{	// remove 'noDisplay' from the className
	//	me.className.replace(/noDisplay/, "");
	//}
	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 = true;
		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;
}

