/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

function H_getText(el) {
	var text = "";
	for (var i = el.firstChild; i != null; i = i.nextSibling) {
		if (i.nodeType == 3 /* Node.TEXT_NODE, IE doesn't speak constants */) {
			text += i.data;
		} else if (i.firstChild != null) {
			text += H_getText(i);
		}
	}
	return text;
}

function getHeadlines(el) {
	var l = new Array;
	var rx = /[hH]([1-6])/;
	var rec = function (el) {
		for (var i = el.firstChild; i != null; i = i.nextSibling) {
			if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
				if (rx.exec(i.tagName)) {
					l[l.length] = {
						element: i,
						text: H_getText(i),
						level: parseInt(RegExp.$1)
					};
				}
				rec(i);
			}
		}
	}
		rec(el);
	return l;
}

function generate_TOC(parent) {
	var hs = getHeadlines(document.getElementsByTagName("body")[0]);
	for (var i = 0; i < hs.length; ++i) {
		var hi = hs[i];
		var el = hi.element;
		el.className += " pointer";
		el.title = "Go to the top of the page";
		el.onclick = function() { scrollTo(0,0); }
		var d = document.createElement("div");
		if (el.id == "")
			el.id = "gen" + i;
		var a = document.createElement("a");
		a.href = "#" + el.id;
		a.appendChild(document.createTextNode(hi.text));
		d.appendChild(a);
		d.className = "level" + hi.level;
		parent.appendChild(d);
	}
}
