// JavaScript Document
/*
Title: Headings Menu v.2
Creator: Based on original script by Peter-Paul Koch.  Significantly modified by Robert Fentress (rfentres@vt.edu)
Date: 06/15/2005
Description: This is a Javascript-based dynamic web page navigation system that was designed to meet standards such as Section 508, W3C WAI WCAG, W3C DOM, XHTML 1.1.  It creates on page load an unordered nested list of links to the contents of the page as a hidden menu based on heading tags in the document.  The script has been rewritten to use more standard list markup.
Copyright Holder: Peter-Paul Koch and Virginia Polytechnic Institute & State University, Institute for Distance & Distributed Learning
License: This work is licensed under a Creative Commons License (http://creativecommons.org/licenses/by-sa/1.0/)

Instructions: Will find all the H tags contained in a div element called "main." Must use an onload handler that calls createTOC to activate.  Uses toc.css and images/bg.gif for styling.  Headings must be appropriately nested.  H1 link in list will be renamed to Top.  Use limit Level variable to limit the degree of headings to use.  For instance a levelLimit of 4 will only make a list of elements H3 or lower.
*/
var bugRiddenCrashPronePieceOfJunk = (
	navigator.userAgent.indexOf('MSIE 5.2') != -1
	&&
	navigator.userAgent.indexOf('Mac') != -1
);
var levelLimit = 6;
function createTOC(section)
{
	if (bugRiddenCrashPronePieceOfJunk) return;
	var allNodes = document.getElementById(section).childNodes;
	var tocdiv = document.getElementById('toc');
	/*var tocdiv = document.createElement('div');
	tocdiv.id = 'toc';*/
	var contents = tocdiv.appendChild(document.createElement('a'));
	contents.id = "contents";
	contents.href = "javascript:;";
	contents.onclick = showhideTOC;
	contents.innerHTML = 'Contents';
	var innerToc = tocdiv.appendChild(document.createElement('div'));
	innerToc.id = "innerToc";
	//innerToc.className = "innerToc";
	innerToc.onclick = showhideTOC;
	var toBeTOCced = new Array();
	var lastLevel = 1;
	var lastUL = innerToc.appendChild(document.createElement('ul'));
	for (var i=0;i<allNodes.length;i++)
	{
		if ((allNodes[i].nodeName.indexOf('H') != -1)&&(allNodes[i].nodeName != "HR")) {
			toBeTOCced.push(allNodes[i]);
		}
	}
	for (var i=0;i<toBeTOCced.length;i++)
	{
		var curLevel = toBeTOCced[i].nodeName.substring(1,2);
		if (curLevel < levelLimit) {
			if (lastLevel < curLevel) {
				var tmpli = lastUL.lastChild;
				if (tmpli) {
				var tmpul = tmpli.appendChild(document.createElement('ul'));
					lastUL = tmpul;
				} else {
					tmpul= lastUL;
				}
				var tmpli2 = tmpul.appendChild(document.createElement('li'));
				var tmpa = tmpli2.appendChild(document.createElement('a'));
				tmpa.innerHTML = toBeTOCced[i].innerHTML;
				tmpa.href = '#link' + i;
			} else if (lastLevel == curLevel) {
				var tmpli = lastUL.appendChild(document.createElement('li'));
				var tmpa = tmpli.appendChild(document.createElement('a'));
				if (curLevel==1) {
					tmpa.innerHTML = "Top";
				} else {
					tmpa.innerHTML = toBeTOCced[i].innerHTML;
				}
				tmpa.href = '#link' + i;
			} else {
				lastUL = lastUL.parentNode.parentNode;
				var tmpli = lastUL.appendChild(document.createElement('li'));
				var tmpa = tmpli.appendChild(document.createElement('a'));
				tmpa.innerHTML = toBeTOCced[i].innerHTML;
				tmpa.href = '#link' + i;
			}
			lastLevel = toBeTOCced[i].nodeName.substring(1,2);
			var tmp2 = document.createElement('a');
			tmp2.id = 'link' + i;
			toBeTOCced[i].parentNode.insertBefore(tmp2,toBeTOCced[i]);
		}
	}
	//document.body.insertBefore(tocdiv,document.body.childNodes[0]);
	//tocdiv.style.display='block';
}

var TOCstate = 'none';

function showhideTOC()
{
	TOCstate = (TOCstate == 'none') ? 'block' : 'none';
	document.getElementById('toc').lastChild.style.display = TOCstate;

}