
/*

string str_repeat  ( string $input  , int $multiplier  )
	Returns input repeated multiplier times.

Parameters
	@input		The string to be repeated.
	@multiplier	Number of time the input string should be repeated.
			multiplier has to be greater than or equal to 0. If the multiplier is set to 0, the function will return an empty string.
	@return		Returns the repeated string.

*/

function str_repeat(input, multiplier) {
	var newString = "";
	for (var x=0; x<parseInt(multiplier, 10); x++) {
		newString += input;
	}
	return (newString);
} 


function getElementsByClass(searchClass) {
	var classElements = new Array();
	var els = this.getElementsByTagName('*');
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

function genTOC(content) {

	Object.prototype.getElementsByClass = getElementsByClass;

	var toc = document.createElement("div");

	toc.setAttribute("style", "background:white;border:2px solid black;float:right;margin: 10px 0 0 10px;width:280px;");
	toc.setAttribute("class", "no_print");

	toc.innerHTML += '<a name="_TOP_"></a>';

	var page_contents = document.getElementsByClass(content)[0];

	var page_tags = page_contents.getElementsByTagName('*');

	var h_count = 0;

	for ( i=0; i<page_tags.length; i++ ) {

		ele = page_tags[i];

		if ( ele.tagName.match(/H[1-3]/) ) {

			h_count++;

			toc.innerHTML += '&nbsp;' + str_repeat('&nbsp;', (parseInt(ele.tagName.replace(/H/, ''))-1) * 2) + '<a href="'+document.location+'#toc_' + i + '">' + ele.innerHTML + '</a><br />';

			if ( h_count > 4 ) {

				ele.innerHTML = '<div class="return_top no_print"><a href="#_TOP_">Top</a></div>'+ele.innerHTML;

			}

			ele.innerHTML = '<a name="toc_'+i+'"></a>'+ele.innerHTML;
		}

	}
	if ( h_count >= 4 ) {
		page_contents.insertBefore(toc, page_contents.firstChild);
	}

}
