String.prototype.trim = function() {
    return this.replace(/^\s+|\s+$/g,"");
}

 <!--// BASED ON Table of contents generator 1.0. Copyright (c) 2008, Mikael Söderström.// -->
function createTOCForIdSubString(headerText, idPrefix )
{
	var articleHeaders =  getPsWithPrefix( idPrefix );

	var cont = document.getElementById('contents');
	
	var ul = document.createElement('ul');
	ul.className ="tocUl";
	
	var header = document.createElement('h2');
	header.innerHTML = headerText;
	var i = 0;
	
	cont.innerHTML = '';
	cont.appendChild(header);
	
	for(i;i<articleHeaders.length;i++)
	{
		//ul.appendChild(makeTOCItem(articleHeaders[i].innerHTML, articleHeaders[i].id ));
		ul.appendChild(makeTOCItem2(articleHeaders[i] ));
	}
	
	cont.appendChild(ul);
}

function sortTOCParas( articleHeaders )
{
	
	
}

function makeTOCItem2(artH )
{
	var ctrl = document.createElement('li');
	var link = document.createElement('a');
	link.className="tocLi";
	
 	var countDepth = countOccenrces( artH.id , ".");
	ctrl.title = "Go to story";
	//right now, we just have 2 level list.
	if( countDepth > 1 )
		 ctrl.className+=" indent30";
 	link.setAttribute('href', '#' + artH.id);
 
 	var kids = artH.childNodes  ;
	for( i = 0; i < kids.length; i++ )
	{
	    var copy = kids[i].cloneNode(true);link.appendChild(copy);
	}
	ctrl.appendChild(link);
	return ctrl;
}


function makeTOCItem(title, id  )
{

	var ctrl = document.createElement('li');
	var link = document.createElement('a');
	link.className="tocLi";
	
	//title.value = title.replace("<",/&lt;/g ).replace(/&gt;/g,">").replace(/&amp;/g,'&');
//alert(t1 + "\n" + title);
	link.setAttribute('href', '#' + id);
	link.setAttribute('title', title.trim());
	link.appendChild(document.createTextNode(title));
	 
	ctrl.appendChild(link);
	return ctrl;
}

function countOccenrces( orig, seekVal )
{
	 
	return orig.split(seekVal).length-1 ;
	
}

function getPsWithPrefix( prefix )
{
	var ps  =document.getElementsByTagName("p");
	var tocEl = new Array();
	
	for( i = 0; i < ps.length; i++ )
	{
		var id = ps[i].id;
		if( id != null && id.length > 0 )
		if( id.indexOf( prefix ) == 0 )
		tocEl.push( ps[i] );
	}
	return tocEl;
}
function sortElById(a, b) {
    var x = a.id.toLowerCase();
    var y = b.id.toLowerCase();
    return ((x < y) ? -1 : ((x > y) ? 1 : 0));
}  
function ra()
{

alert( document.body.innerHTML );
}