/*
 Outputs a Twitter feed via the Google AJAX Feed API
 (http://code.google.com/apis/ajaxfeeds/).

 By Emmet Connolly (http://blog.thoughtwax.com/?id=310)
 Updated by David Hollander, 9/10/2009
 
*/

google.load("feeds", "1");

function initialize() {
	var feedURL = "http://twitter.com/statuses/user_timeline/" + THWX_twitter_id + ".rss";
	var feed = new google.feeds.Feed(feedURL);
	var feedReturn = "";
	var THWX_num_posts = 3;
	feed.load(function(result) {
	if (!result.error) {
		var username = result.feed.title.substring(10);
		for (var i = 0; i < THWX_num_posts; i++) {
			var entry = result.feed.entries[i];
			var tweetcontents = entry.title.substring(username.length + 2) + " ";
			var created_at = entry.publishedDate;
			tweetcontents = tweetcontents.parseURL().parseUsername().parseHashtag();
			feedReturn += "<li>";
			feedReturn += "<span>" + tweetcontents + "</span>";
			feedReturn += "<a style=\"font-size: 85%\" href=\"http://twitter.com/"+username+"\" target=\"_blank\">" + relative_time(created_at) + "</a>";
			feedReturn += "</li>\n";
		}
		document.getElementById("twitter_update_list").innerHTML = feedReturn;
	}});
}

google.setOnLoadCallback(initialize);

String.prototype.parseURL = function() {
	return this.replace(/[A-Za-z]+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&\?\/.=]+/g, function(url) {
		//return url.link(url);
		return "<a href=\"" + url + "\" target=\"_blank\">" + url + "</a>";
	});
};
String.prototype.parseUsername = function() {
	return this.replace(/[@]+[A-Za-z0-9-_]+/g, function(u) {
		var username = u.replace("@","")
		return "<a href=\"http://twitter.com/" + username + "\" target=\"_blank\">" + u + "</a>";
	});
};
String.prototype.parseHashtag = function() {
	return this.replace(/[#]+[A-Za-z0-9-_]+/g, function(t) {
		var tag = t.replace("#","%23")
		//return t.link("http://search.twitter.com/search?q="+tag);
		return "<a href=\"http://search.twitter.com/search?q=" + tag + "\" target=\"_blank\">" + t + "</a>";
	});
};
function relative_time(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 = 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 {
		return (parseInt(delta / 86400)).toString() + ' days ago';
	}
}