function getElementsByTagNames(list,obj) {
	if (!obj) var obj = document;
	var tagNames = list.split(',');
	var resultArray = new Array();
	for (var i=0;i<tagNames.length;i++) {
		var tags = obj.getElementsByTagName(tagNames[i]);
		for (var j=0;j<tags.length;j++) {
			resultArray.push(tags[j]);
		}
	}
	var testNode = resultArray[0];
	if (!testNode) return [];
	if (testNode.sourceIndex) {
		resultArray.sort(function (a,b) {
				return a.sourceIndex - b.sourceIndex;
		});
	}
	else if (testNode.compareDocumentPosition) {
		resultArray.sort(function (a,b) {
				return 3 - (a.compareDocumentPosition(b) & 6);
		});
	}
	return resultArray;
}

function createTOC(toplevel) {
  if (toplevel == null) toplevel = document;
	var y = document.createElement('div');
	y.id = 'innertoc';
	var a = y.appendChild(document.createElement('span'));
	a.id = 'contentheader';
	var z = y.appendChild(document.createElement('div'));
	var toBeTOCced = getElementsByTagNames('h3,h4,h5', toplevel);
	if (toBeTOCced.length < 2) return false;

	for (var i=0;i<toBeTOCced.length;i++) {
		var tmp = document.createElement('a');
		tmp.innerHTML = toBeTOCced[i].innerHTML;
		tmp.className = 'page';
		var lvl = parseInt(toBeTOCced[i].nodeName.substring(1));
		for (var l = 3; l < lvl; l++)
		  tmp.innerHTML = '&nbsp;&nbsp;' + tmp.innerHTML;
		z.appendChild(tmp);
		var headerId = toBeTOCced[i].id || 'link' + i;
		tmp.href = '#' + headerId;
		toBeTOCced[i].id = headerId;
	}
	return y;
}

function printelem(elem) {
	var a = window.open('','','width=300,height=300');
	a.document.open("text/html");
	a.document.write(elem.innerHTML);
	a.document.close();
	a.print();
	a.close();
}

