var Trackback = {
	xmlUrl: "",
	ajax: "",
	trackbacks: "",
	listString: "",
	listMaxCount: "",
	showAllString: "",
	showAllString2: "",
	tbNumString: "",

	init: function() {
		xmlUrl = location.href.replace(/^https?:\/\/[^\/]+\/(.*?)/i,'/tb/$1').replace(/#.*/,'') + ".xml";

        	ajax = new Ajax.Request(xmlUrl, {onComplete: Trackback.showResponse});
		},

	list: function(string, maxCount) {
		document.write("<div id='trackback_list'></div>");
		Trackback.listString = string;
		Trackback.listMaxCount = maxCount;
	},

	listSub: function(maxCount) {
		var div = $("trackback_list");
		div.innerHTML = '';
		for(var i=0; i<maxCount; i++) {
			var tb = Trackback.parseTrackback(Trackback.trackbacks[i]);
			div.innerHTML += new Template(Trackback.listString).evaluate(
				{tb: {
					title:		tb.title,
					url:		tb.url,
					excerpt:	tb.excerpt,
					blog_name:	tb.blog_name,
					year:		tb.year,
					month:		tb.month,
					day:		tb.day,
					hour:		tb.hour,
					min:		tb.min,
					sec:		tb.sec
				}}
			);
		}
	},

	listSubAlt: function(maxCount) {
		Trackback.listSub(maxCount);
		location.href = '#trackback_list';
	},

	showAll: function(string) {
		document.write("<span id='trackback_all'></span>");
		Trackback.showAllString = string;
		Trackback.showAllSub(0);
	},

	showAllSub: function(length) {
		var span = $("trackback_all");
		span.innerHTML = '';
		span.innerHTML = "<a href='javascript: Trackback.listSubAlt("+length+")'>"+new Template(Trackback.showAllString).evaluate({count: length})+"</a>";
	},

	showAll2: function(string) {
		document.write("<span id='trackback_all2'></span>");
		Trackback.showAllString2 = string;
		Trackback.showAllSub2(0);
	},

	showAllSub2: function(length) {
		var span = $("trackback_all2");
		span.innerHTML = '';
		span.innerHTML = "<a href='javascript: Trackback.listSub("+length+")'>"+new Template(Trackback.showAllString2).evaluate({count: length})+"</a>";
	},

	tbNum: function(string) {
		document.write("<span id='trackback_num'></span>");
		Trackback.tbNumString = string;
		Trackback.tbNumSub(0);
	},

	tbNumSub: function(length) {
		var span = $("trackback_num");
		span.innerHTML = '';
		span.innerHTML = new Template(Trackback.tbNumString).evaluate({count: length});
	},

	write: function(string) {
		document.write("<a href='"
			+ "http://sns.nikkansports.com/diary/new?"
			+ "title="
			+ encodeURI(document.title)
			+ "&trackback="
			+ escape("http://sso-c.nikkansports.com/cgi-bin/tb/?tburl="+escape(location.href.replace(/#.*/,'')))
			+ "'>"
			+ string
			+ "</a>");
	},

	showResponse: function(request) {
		Trackback.trackbacks = request.responseXML.getElementsByTagName('tb');
		if(Trackback.listMaxCount > Trackback.trackbacks.length) {
			Trackback.listSub(Trackback.trackbacks.length);
		} else {
			Trackback.listSub(Trackback.listMaxCount);
		}
		Trackback.showAllSub(Trackback.trackbacks.length);
		Trackback.showAllSub2(Trackback.trackbacks.length);
		Trackback.tbNumSub(Trackback.trackbacks.length);
	},

	parseTrackback: function(tb) {
		var timestamp = tb.getElementsByTagName("date")[0].childNodes[0].nodeValue;
		var date = timestamp.split(" ")[0];
		date = date.split("-");
		var time = timestamp.split(" ")[1];
		time = time.split(":");

		var tbJson = {
			title:		tb.getElementsByTagName("title")[0].childNodes[0].nodeValue,
			url:		tb.getElementsByTagName("url")[0].childNodes[0].nodeValue,
			excerpt:	tb.getElementsByTagName("excerpt")[0].childNodes[0].nodeValue,
			blog_name:	tb.getElementsByTagName("blog_name")[0].childNodes[0].nodeValue,
			year:	date[0],
			month:	parseInt(date[1]),
			day:	parseInt(date[2]),
			hour:	parseInt(time[0]),
			min:	parseInt(time[1]),
			sec:	parseInt(time[2])
		};

		return tbJson;
	}
};
