dojo.require("dojo.io.script");
dojo.require("dojo.date");

function loadTwit(){
	//borrowed from http://www.dustindiaz.com/basement/ify.html
	var ify = {
		link: function(t) {
			return t.replace(/(^|\s+)(https*\:\/\/\S+[^\.\s+])/g, function(m, m1, link) {
				return m1 + '<a href=' + link + '>' + ((link.length > 25) ? link.substr(0, 24) + '...' : link) + '</a>';
			});
		},
		at: function(t) {
			return t.replace(/(^|\s+)\@([a-zA-Z0-9_]{1,15})/g, function(m, m1, m2) {
				return m1 + '@<a href="http://twitter.com/' + m2 + '">' + m2 + '</a>';
			});
		},
		hash: function(t) {
			return t.replace(/(^|\s+)\#([a-zA-Z0-9_]+)/g, function(m, m1, m2) {
				return m1 + '#<a href="http://search.twitter.com/search?q=%23' + m2 + '">' + m2 + '</a>';
			});
		},
		clean: function(tweet) {
			return this.hash(this.at(this.link(tweet)));
		}
	};

	dojo.io.script.get({
		url: "http://api.twitter.com/1/statuses/user_timeline.json",
		callbackParamName: "callback",
		content: { screen_name: "dojo", count: 2, include_rts: true, exclude_replies: false }
	}).then(function(results){
		var time, now = new Date();

		for(var i = 0, tweet; tweet = results[i]; ++i){
			// ie cannot handle numeric timezone representations
			diff = dojo.date.difference(new Date(tweet.created_at.replace("+0000", "GMT")), now, "minute");

			if(diff / 60 < 0){
				// minutes

				// zero minutes, one minute, n minutes
				time = diff + " minute" + (!diff || diff > 1 ? "s" : "") + " ago";
			}else if(diff / 60 <= 24){
				// hours

				diff = Math.floor(diff / 60);
				time = diff + " hour" + (diff > 1 ? "s" : "") + " ago";
			}else{
				// days

				diff = Math.floor(diff / 60 / 24);
				time = diff + " day" + (diff > 1 ? "s" : "") + " ago";
			}

			dojo.create("li", {
				innerHTML: ify.clean(tweet.text.replace(/&/g, "&amp;").replace(/</g, "&lt;")) + "<div>" + time + "</div>"
			}, "tweets");
		}
	});
}
