// MT-Story-Comments - Copyleft © 2006  Simon Bünzli  <zeniko@gmx.ch>

var gStories =  {};

function createXMLHttpRequest()
{
	try { return new XMLHttpRequest(); } catch (ex) { }
	try { return new ActiveXObject("MSXML2.XMLHTTP"); } catch (ex) { }
	
	return null;
}

function findStoryTitle(aObj, aStoryURL)
{
	var h3 = document.getElementsByTagName("H3");
	
	for (var i = 0; i < h3.length; i++)
	{
		if (h3[i].className == "post-title" && h3[i].innerHTML.indexOf('"' + aStoryURL + '"') > -1)
		{
			return (gStories[aStoryURL] = h3[i].innerHTML.replace(/^\s+|<.*?>|\s+$/g, ""));
		}
	}
	
	try
	{
		var request = createXMLHttpRequest();
		
		request.open("GET", aStoryURL, true);
		request.onreadystatechange = function() {
			if (request.readyState == 4)
			{
				gStories[aStoryURL] = request.responseText.match(/<title>[^:]+:\s*(.*?)\s*<\/title>/i)[1];
				processComment(aObj, aStoryURL);
				delete request;
			}
		};
		request.send(null);
	}
	catch (ex) { }
	
	return null;
}

function processComment(aObj, aStoryURL)
{
	var title = gStories[aStoryURL] || findStoryTitle(aObj, aStoryURL);
	if (title)
	{
		var el = aObj.getElementsByTagName("DIV")[0];
		var data = el.innerHTML.match(/(\S.*) - (.*?)\s*$/);
		
		aObj.insertBefore(document.createTextNode(data[1] + " on "), aObj.firstChild);
		aObj.removeChild(el);
		el = aObj.getElementsByTagName("A")[0];
		el.setAttribute("href", aStoryURL);
		el.innerHTML = title;
		aObj.appendChild(document.createTextNode(" (" + data[2].replace(/\s+/g, "\u00A0") + ")"));
	}
}

function processStory(aObj)
{
	var el = aObj.getElementsByTagName("DIV")[0];
	var data = el.innerHTML.match(/(\S.*) - (.*?)\s*$/);
	
	aObj.insertBefore(document.createTextNode(data[1] + ": "), aObj.firstChild);
	aObj.removeChild(el);
	aObj.appendChild(document.createTextNode(" (" + data[2].replace(/\s+/g, "\u00A0") + ")"));
}

function newCommiesFormat()
{
	var div = document.getElementsByTagName("DIV");
	
	for (var i = 0; i < div.length; i++)
	{
		if (div[i].className == "historyItem" && div[i].innerHTML.match(/^<a href="([^"]+#\d+)"/i))
		{
			processComment(div[i], RegExp.$1);
		}
		else if (div[i].className == "historyItem")
		{
			processStory(div[i]);
		}
	}
}

if (document.getElementsByTagName && document.createTextNode)
{
	newCommiesFormat();
}
