var init = function(){
	buildHelpIndex();
}

buildHelpIndex = function(){
	var src = ge('helpContents');
	var dest = ge('helpToc');
	
	var outline = {};
	var currH1 = null,currH2 = null;
	
	var cn = src.childNodes;
	var currNode = src.firstChild;
	
	while(currNode) {
		if(currNode.tagName){
			var tn = currNode.tagName.toLowerCase();
			switch(tn){
				case 'h1':
				case 'h2':
				case 'h3':
					var headingText = currNode.childNodes[0].nodeValue;
					var anchor = document.createElement('a');
					anchor.setAttribute('name', headingText);
					currNode.parentNode.insertBefore(anchor,currNode);
				break;
			}
			
			switch(tn){
				case 'h1':
					currH1 = outline[headingText] = {};
				break;
				case 'h2':
					currH2 = currH1[headingText] = {};
				break;
				case 'h3':
					currH2[headingText] = false;
				break;
			}
		}
		
		currNode = currNode.nextSibling;
	}
	
	var buildTree = function(object, value){
		if(value){
			var retVal = document.createElement('li');
			var link = document.createElement('a');
			link.setAttribute('href', '#' + value);
			link.appendChild(document.createTextNode(value));
			
			retVal.appendChild(link);
		} else {
			var retVal = document.createElement('ul');
		}
		
		if(typeof object == 'object'){
			var subList = document.createElement('ul');
			for(var i in object){
				subList.appendChild(buildTree(object[i],i));
			}
			if(subList.childNodes.length > 0){
				retVal.appendChild(subList);
			}
		}
		
		return retVal;
	}
	
	dest.appendChild(buildTree(outline));
}