function relativeTime(time_value) {
	var values = time_value.split(" ");
	time_value = values[1] + " " + values[2] + ", " + values[5] + " " + values[3];
	var parsed_date = Date.parse(time_value);
	var relative_to = (arguments.length > 1) ? arguments[1] : new Date();
	var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);
	delta += (relative_to.getTimezoneOffset() * 60);

	if (delta < 60) {
		return 'less than a minute ago';
	} else if (delta < 120) {
		return 'about a minute ago';
	} else if (delta < 60*60) {
		return (parseInt(delta / 60)).toString() + ' minutes ago';
	} else if (delta < 120*60) {
		return 'about an hour ago';
	} else if (delta < 24*60*60) {
		return 'about ' + (parseInt(delta / 3600)).toString() + ' hours ago';
	} else if (delta < 48*60*60) {
		return '1 day ago';
	} else if (delta < 48*60*60 * 3) {
		return (parseInt(delta / 86400)).toString() + ' days ago';
	} else {
		var d = new Date(time_value);
		var ld = new Date(d.getTime() - d.getTimezoneOffset() * 60000);
		return ld.toString();
	}
}

function updateTwitterTimeline(data) {
	var tdiv = document.createElement("div");
	tdiv.setAttribute('id', 'twitter_updates');
	var statusHTML = [];
	statusHTML.push('<ul>');
	for (var i = 0; i < data.length; i++) {
		try {
			var t = data[i];
			var username = t.user.screen_name;
			var status = t.text
					.replace(/&/g, '&amp;')
					.replace(/</g, '&lt;')
					.replace(/>/g, '&gt;')
					.replace(/\"/g, '&quot;')
					.replace(
							/(https?\:\/\/[^"\s\<\>]*[^.,;'">\:\s\<\>\)\]\!])/g,
							function(url) {
								return '<a href="'+url+'">'+url+'</a>';
							})
					.replace(/\B@([_a-z0-9]+)/ig, function(reply) {
						return reply.charAt(0) + '<a href="http://twitter.com/'
								+ reply.substring(1) + '">'
								+ reply.substring(1) + '</a>';
					});
			var uli = '<li style="padding-bottom:10px"><span>' + status + '</span>';
			uli += '<br /><span style="font-size:85%; color:#888888; font-style:italic">&#x2015; '
					+ relativeTime(t.created_at);
			uli += ' via ' + t.source.replace(/<[^>]*>/g, "");
			uli += '</span></li>';
			statusHTML.push(uli);
		} catch (e) {}
	}
	statusHTML.push('</ul>');
	tdiv.innerHTML = statusHTML.join('');

	var updateList = document.getElementById('twitter_abstract');
	var body = document.getElementsByTagName("body")[0];
	body.insertBefore(tdiv, updateList.nextSibling);
}

function loadTwitter() {
	var body = document.getElementsByTagName('body')[0];
	if (body) {
		// Use JSONP to get the timeline.
		var script = document.createElement('script');
		script.setAttribute('type', 'text/javascript');
		script.setAttribute('src',
				'http://twitter.com/statuses/user_timeline/'
				+ 'ytsutano.json'
				+ '?count=5&callback=updateTwitterTimeline');
		body.appendChild(script);
	} else {
		setTimeout(loadTwitter, 100);
	}
}

loadTwitter();

