﻿function tweet() {
	var userName = "jeronevw";
	var numTweets = 3;
	window.setInterval(function() {
		$.getJSON("http://twitter.com/statuses/user_timeline/" + userName + ".json?callback=?&count=" + numTweets, function(datas) {
			var list = $("#twitter ul"), listFirst = $("li:first", list), listLast = $("li:last", list), items = [];

			$.each(datas, function(i, data) {
				items.push(data.id.toString());
				if ($("li#twit" + data.id, list).length <= 0) {
					var tweet = $("<li/>").hide().attr("id", "twit" + data.id);
					tweet.append($("<span/>").html(
						data.text.toString().replace("<", "&lt;").replace(">", "&gt;").replace("&", "&amp;")
							.replace(/\b(((https?|ftp):\/\/|(www\.))([a-z0-9\/%@\?:#&\+\._=-]*))\b/i, "<a href=\"$1\">$1</a>")
							.replace(/@([a-z0-9]*)/i, "@<a href=\"http://twitter.com/$1\">$1</a>")
							.replace(/#([a-z0-9]*)/i, "<a href=\"http://twitter.com/search?q=%23$1\">#$1</a>")
					));
					tweet.append($("<a/>").text(relative_time(data.created_at)).attr("href", "http://twitter.com/" + userName + "/statuses/" + data.id));
					tweet.show("slow").slideDown(1000);

					if (data.id > parseInt($(listFirst).attr("id").replace("twit", ""))) {
						listFirst.before(tweet);
					} else if (data.id < parseInt($(listLast).attr("id").replace("twit", ""))) {
						list.append(tweet);
					}
				}
			});

			$("li", list).each(function(i, item) {
				if ($.inArray($(item).attr("id").replace("twit", ""), items) == -1) {
					$(item).hide("slow", function() {
						$(this).remove();
					}).slideUp(1000);
				}
			});

			// http://twitter.com/javascripts/blogger.js
			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';
				}
			}
		});
	}, 3 * 60 * 1000);
}