$(document).ready(function() {
	$.getJSON('http://blog.suredev.com/lib/reference/twitter.json.inc', function(data) {
		$.each(data, function(i, item) {						
			// link links
			var message = item.text.replace(/(http[s]?:\/\/([a-z0-9\-]+\.){1,4}[a-z0-9\-]+[^\s]*)/ig, '<a href="$1" onclick="window.open(this.href); return false;">$1</a>', message);

			// link @username references
			message = message.replace(/@([a-z0-9_]+)/ig, '<a href="http://twitter.com/$1" class="twitter-user">@$1</span></a>');
			
			// add posted notice
			message = message + '<div class="twitter-time">Posted ' + timeDifference(item.created_at) + '</div>';
			
			$('#tweet').html(message);
		});
	});
});

function timeDifference(date)
{
	var target  = new Date();
	var now     = new Date();
	var diff    = 0;
	var negate  = 1;
	var output  = '';
	
	target.setTime(Date.parse(date));
	
	diff = target.getTime() - now.getTime();
	
	if (diff < 0) {
		negate = -1;
		diff = Math.abs(diff) / 1000;
	}
	
	if (diff == 0) {
		return 'now';
	} else if (diff > 0 && diff < 60) {
		output = (diff == 1) ? ' second ' : ' seconds ';
		amount = diff;
	} else if (diff >= 60 && diff < 3600) {
		output = (diff < 120) ? ' minute ' : ' minutes ';
		amount = (diff - (diff % 60)) / 60;
	} else if (diff >= 3600 && diff < 86400) {
		output = (diff < 7200) ? ' hour ' : ' hours ';
		amount = (diff - (diff % 3600)) / 3600;
	} else if (diff >= 86400) {
		output = (diff < 172800) ? ' day ' : ' days ';
		amount = (diff - (diff % 86400)) / 86400;
	}

	if (negate > 0) {
		output = 'in ' + amount + output;
	} else {
		output = amount + output + 'ago';
	}
	
	return output;
}