
function init() {
	sendRequest('sitemapExtra.txt',insertExtra);
}

var linkHierView,linkLastModView;

function insertExtra(req) {
	document.getElementById('controls').innerHTML = req.responseText;
	linkHierView = document.getElementById('setHierView');
	linkHierView.onclick = setHierView;
	linkLastModView = document.getElementById('setLastModView')
	linkLastModView.onclick = setLastModView;
}

var storeHierView,storeLastModView;

function setHierView() {
	if (document.getElementById('hierView')) return false;
	var toReplace = document.getElementById('lastModView');
	storeLastModView = toReplace.parentNode.replaceChild(storeHierView,toReplace);
	linkHierView.className = 'active';
	linkLastModView.className = '';
	return false;
}

var waitMessage;

function setLastModView() {
	var currentLink;
	function nextLink() {
		waitMessage.innerHTML = helperArray.length;
		currentLink = helperArray.shift();
		if (currentLink) {
			requestObj.open('HEAD',currentLink.href,true);
			requestObj.onreadystatechange = function () {
				if (requestObj.readyState != 4) return;
				calculateLastMod(requestObj);
			}
			requestObj.send(null);
		}
		else
			createLastModView(lastModViewArray);
	}
	function calculateLastMod(req) {
		var lastModString = req.getResponseHeader("Last-Modified");
		var lastModDate = new Date(lastModString);
		var lastModObj = {};
		lastModObj.lastModString = lastModDate.getDate() + ' ' +  monthNames[lastModDate.getMonth()] + ' ' + lastModDate.getFullYear();
		lastModObj.MS = lastModDate.getTime();
		lastModObj.HumanReadable = lastMod(lastModDate);
		createDOMNode(lastModObj);
		nextLink();
	}
	
	function createDOMNode(lastModObj) {
		var newNode = templateNode.cloneNode(true);
		newNode.MS = lastModObj.MS;
		newNode.HumanReadable = lastModObj.HumanReadable;
		newNode.appendChild(currentLink.cloneNode(true));
		newNode.appendChild(document.createTextNode(' (' + lastModObj.lastModString + ')'));
		lastModViewArray.push(newNode);
	}


	if (document.getElementById('lastModView')) return false;
	if (storeLastModView) {
		insertLastModView(storeLastModView);
		return false;
	}		
	
	var x = document.createElement('span');
	x.appendChild(document.createTextNode('One moment please; gathering information...'));	
	waitMessage = document.createElement('span');
	x.appendChild(waitMessage);
	linkLastModView.parentNode.appendChild(x);
	
	var requestObj = createXMLHTTPObject();
	
	var templateNode = document.createElement('span');
	templateNode.className = 'lastModSpan';

	var allLinks = document.getElementById('hierView').getElementsByTagName('a');
	var helperArray = [];
	var lastModViewArray = [];
	for (var i=0;i<allLinks.length;i++)
		helperArray.push(allLinks[i]);
	nextLink();	
	return false;
}

function createLastModView(viewArray) {
	var writeroot = document.createElement('div');
	writeroot.id = 'lastModView';	
	var currentHeader = '';
	viewArray.sort(function (a,b) {
		return b.MS - a.MS;
	});
	while(viewArray.length) {
		if (viewArray[0].HumanReadable != currentHeader) {
			currentHeader = viewArray[0].HumanReadable;
			var header = document.createElement('h4');
			header.appendChild(document.createTextNode(currentHeader));
			writeroot.appendChild(header);
		}
		writeroot.appendChild(viewArray.shift());
	}
	insertLastModView(writeroot);
}

function insertLastModView(writeroot) {
	var toReplace = document.getElementById('hierView');
	storeHierView = toReplace.parentNode.replaceChild(writeroot,toReplace);
	linkLastModView.className = 'active';
	linkHierView.className = '';
	if (waitMessage) {
		waitMessage.parentNode.parentNode.removeChild(waitMessage.parentNode);
		waitMessage = null;
	}
}

var monthNames = [
	'January',
	'February',
	'March',
	'April',
	'May',
	'June',
	'July',
	'August',
	'September',
	'October',
	'November',
	'December',
];
