/*
 * Dynamic Table of Contents script
 * by Matt Whitlock <http://www.whitsoftdev.com/>
 * $LastChangedDate: 2008-03-17 12:59:25 -0700 (Mon, 17 Mar 2008) $
 */

function createLink(href, innerHTML) {
	var a = document.createElement("a");
	a.setAttribute("href", href);
	a.innerHTML = innerHTML;
	return a;
}

function generateTOC(toc, minLevel) {
	var parentNodes = new Array(toc, null, null, null, null, null, null);
	var counters = new Array(0, 0, 0, 0, 0, 0, 0);
	for (var i = 0; i < document.body.childNodes.length; ++i) {
		var bodyNode = document.body.childNodes[i];
		var tagName = bodyNode.nodeName.toLowerCase();
		var level;
		if (tagName == "h6") level = 7 - minLevel;
		else if (tagName == "h5") level = 6 - minLevel;
		else if (tagName == "h4") level = 5 - minLevel;
		else if (tagName == "h3") level = 4 - minLevel;
		else if (tagName == "h2") level = 3 - minLevel;
		else if (tagName == "h1") level = 2 - minLevel;
		else continue;
		if (level <= 0) continue;
		var parentNode = parentNodes[level];
		if (parentNode == null) {
			var j = level;
			while (parentNodes[--j] == null) ++counters[j];
			while (++j <= level) parentNodes[j] = parentNodes[j - 1].appendChild(document.createElement("ul"));
			parentNode = parentNodes[level];
		}
		for (var j = level + 1; j <= 6; ++j) {
			parentNodes[j] = null;
			counters[j] = 0;
		}
		var section = ++counters[level];
		for (var j = level - 1; j > 0; --j) {
			section = counters[j] + "." + section;
		}
		bodyNode.insertBefore(document.createTextNode(section + ". "), bodyNode.firstChild);
		bodyNode.id = "section" + section;
		parentNode.appendChild(document.createElement("li")).appendChild(createLink("#section" + section, bodyNode.innerHTML));
	}
}
