﻿// Generate a ToC from page headings
function generateTOCforQandA()
{
	//Get language or fallback to english
	var lang = document.getElementsByTagName('html')[0].getAttribute('Lang');
	if (lang == 'undefined')
	{
		lang = 'en';
	}
	
	var topText, pageContentText;

	switch(lang)
	{
		case 'cs':
			topText = 'Horní strana';
			pageContentText = 'Obsah strany';				
			break;
		
		case 'de':
			topText = 'Nach oben';
			pageContentText = 'Seiteninhalt';				
			break;
		
		case 'fr':
			topText = 'Sous';
			pageContentText = 'Sur cette page';				
			break;	
		
		case 'it':
			topText = 'All\'inizio:';
			pageContentText = 'Contenuto della pagina';				
			break;	
		
		case 'nl':
			topText = 'Naar boven';
			pageContentText = 'Op deze pagina';			
			break;	
		
		case 'pl':
			topText = 'Do góry';
			pageContentText = 'Zawartość strony';
			break;
		
		case 'zh':
			topText = '页首';
			pageContentText = '页面内容';				
			break;
		
		default:
			topText = 'Top';
			pageContentText = 'Page content';
			break;
	}
	
	
	var menu = document.getElementById('TOC');
	
	if (null == menu)
		return;
	
	var headings = getElementsByTagNames('h2,h3,h4', document.getElementById('answer'));//ONLY THIS LINE CHANGED
	var anchorContainer, anchor, linkId;
	
	if (headings.length < 3) return;	//only make a TOC if more than one heading
	
	// Don't allow more than 10 headings unless they're all top level ones
	if (headings.length > 10)
	{
		//headings = getElementsByTagNames('h2', document.getElementById('colContent'));
	}

	
	menu.className = 'TOC'; //add classname; only do this now we know we have items as it will make the element appear - visible borders etc

	var tocAnchor = document.createElement('a');
	tocAnchor.setAttribute('name', 'pageTop');
	tocAnchor.id = 'pageTop';
	tocAnchor.className = 'TOCTitle';
	
	var anchorText = document.createTextNode(pageContentText);
	tocAnchor.appendChild(anchorText);
	menu.appendChild(tocAnchor);

	//Create the TOC
	tocList = document.createElement("ul");
	
	for (var entryPosition=0; entryPosition<headings.length; entryPosition++) 
	{
		var thisEntry = headings[entryPosition];
		
		// Determine the link
		linkId = thisEntry.id || uniqueId('tocTarget' + entryPosition);

		// Define the anchor container
		anchorContainer = document.createElement("li");
		anchorContainer.className = 'tocEntry' + thisEntry.nodeName.toLowerCase();

		// Define the anchor
		var anchor = document.createElement("a");
		var killTagsRegex = /<\/?[^>]*?>/gim; // Removes tags |  gim - all matches, case insensitive, multiline
		var tocText = thisEntry.innerHTML.replace(killTagsRegex, '');
		anchor.innerHTML = tocText;
		anchor.href = '#' + linkId;

		// Add the item
		anchorContainer.appendChild(anchor);
		if (anchor.innerHTML.replace(/\&nbsp;/, '').replace(/\&#160;/, '').replace(/\s/, '').length > 0) //not an empty link
		{
			tocList.appendChild(anchorContainer);

			// Modify the link target
			thisEntry.id = linkId;	// Change the element to ensure it has an id

			//Make the wrapper around heading so we can add 'top of page' etc with impunity
			var goTopWrapper = document.createElement('a');
			goTopWrapper.href='#pageTop';
			goTopWrapper.className = 'top';

			var goTopContent = document.createTextNode(topText); //Language concerns?
			goTopWrapper.appendChild(goTopContent);

			var hWrapper = document.createElement('div');
			hWrapper.className = 'tocHeader';
			hWrapper.appendChild(goTopWrapper);


			//then copy heading inside wrapper
			var hClone = thisEntry.cloneNode(true);
			hWrapper.appendChild(hClone);	

			//add wrapper next to target...
			thisEntry.parentNode.replaceChild(hWrapper, thisEntry);
		}
	}

	menu.appendChild(tocList);
}

function elementShowHide(elementToShowHide)
{ 
//support legacy browsers
if (document.all)
el = document.all[elementToShowHide];
else
el = document.getElementById(elementToShowHide);


//show-hide search area
if (el.style.display == ' none')
el.style.display = 'block';

if (el.style.display == '')
el.style.display = ' none';
}

//Show or hide an element
function elementHide(elementId)
{ 
//support legacy browsers
if (document.all)
el = document.all[elementId];
else
el = document.getElementById(elementId);

el.style.display = 'none';
}

function elementShow(elementId)
{ 
//support legacy browsers
if (document.all)
el = document.all[elementId];
else
el = document.getElementById(elementId);

el.style.display = '';
}

function replaceCaptchaImg()
{
var el = document.getElementById('imgCaptcha');
if (el != null){
el.src = 'resources/captcha/img.aspx';
}
}
addLoadListener(replaceCaptchaImg)
