var TwitterCache = {};
var numberOfPosts = 8;
var url = "http://twitter.com/status/user_timeline/NYSMRT.json?count=" + numberOfPosts + "&callback=?";
var twitterprofile = "http://twitter.com/NYSMRT/statuses/";
var updating = false;

$(document).ready(function()
{
	twitterupdate();
	setInterval(twitterupdate,300000);
	setTimeout(settoupdate,5000);
});

function twitterupdate()
{
	twitterarray = '';
	$.getJSON(url, function(data)
	{
		$.each(data, function(i, item)
		{
			var HTML = '';
			if(!TwitterCache[item.id])
			{
				TwitterCache[item.id] = "displayed";
				HTML = '<li style="display:none;" ' + (i == data.length - 1 ? ' class="last"' : '') + 'id="' + item.id + '">' + item.text.linkify() + '<br /><span class="info">' + FormatTime(item.created_at) + ' from ' + item.source + '</span></li>';

				if(HTML != '')
				{
					if(updating)
					{
						$("#twitter_update_list").prepend( HTML ).find('li:hidden').slideToggle('slow');
					}
					else
					{
						$("#twitter_update_list").append( HTML ).find('li:hidden').slideToggle('slow');
					}
				}
			}
			twitterarray[i] = item.id;
		});
	});
}

String.prototype.linkify = function() 
{
	return this.replace(/[A-Za-z]+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&\?\/.=]+/g, function(m)
	{
		return m.link(m);
	}).replace(/@\w+/g, function(m)
	{
		return m.link("http://twitter.com/" + m.substring(1));
	}).replace(/#\w+/g, function(m)
	{
		return m.link("http://twitter.com/search?q=" + m);
	});
};

function FormatTime(s)
{
	var date_parts = s.split(" ");
	var time = (new Date(Date.parse(s))).toLocaleTimeString().replace(/:\d\d\s/, ' ');
	var month = date_parts[1];
	var day = date_parts[2];
	switch(day.charAt(day.length - 1))
	{
		case "1":
			day = day + "st";
			break;
		case "2":
			day = day + "nd";
			break;
		case "3":
			day = day + "rd";
			break;
		default:
			day = day + "th";
			break;
	}
	var year = date_parts[5];

	return time + ' ' + month + ' ' + day + (year != (new Date()).getFullYear() ? ', ' + year : '');
}

function twitter_callback()
{
	return true;
}

function settoupdate()
{
	updating = true;
}