function displayTweets()
{
	var displayCount = 1;
	var currIndex = 0;
	sortTweetsByDate(tweets,tweets.length);
	$.each(tweets, function(t, tweet)
	{
		if (currIndex<displayCount)
		{
			var formattedText = tweet.text.toString().replace( /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig, '<a href="$1">$1</a>' ).replace( /(^|\s)@(\w+)/, '<a href="http://www.twitter.com/$2">@$2</a>' ).replace( /[#]+[A-Za-z0-9-_]+/ig, function(t) { var tag = t.replace("#","%23"); return t.link("http://search.twitter.com/search?q="+tag); } );
			var formattedTime = relative_time(tweet.created_at);
			
			$("#tweets").append(formattedText);
			$("#tweets").append("<br /><a href=\"http://twitter.com/"+tweet.user.screen_name+"\">"+tweet.user.screen_name+"</a> :: "+formattedTime);
			//$("#tweets").append("<center>"+formattedTime+"</center>");
			currIndex++;
		}
	});
}

function sortTweetsByDate(arrayName,length)
{
    for (var i=0; i<(length-1); i++)
    {
        for (var j=i+1; j<length; j++)
        {
        	date1 = Date.parse(arrayName[j].created_at);
        	date2 = Date.parse(arrayName[i].created_at);
            if (date1 > date2)
            {
                var dummy = arrayName[i];
                arrayName[i] = arrayName[j];
                arrayName[j] = dummy;
            }
		}
	}
}

var monthDict = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];

function relative_time(time_value) {
    var values = time_value.split(" "),
        parsed_date = Date.parse(values[1] + " " + values[2] + ", " + values[5] + " " + values[3]),
        date = new Date(parsed_date),
        relative_to = (arguments.length > 1) ? arguments[1] : new Date(),
        delta = parseInt((relative_to.getTime() - parsed_date) / 1000),
        r = '';
    
    function formatTime(date) {
        var hour = date.getHours(),
            min = date.getMinutes() + "",
            ampm = 'AM';
        
        if (hour == 0) {
            hour = 12;
        } else if (hour == 12) {
            ampm = 'PM';
        } else if (hour > 12) {
            hour -= 12;
            ampm = 'PM';
        }
        
        if (min.length == 1) {
            min = '0' + min;
        }
        
        return hour + ':' + min + ' ' + ampm;
    }
    
    function formatDate(date) {
        var ds = date.toDateString().split(/ /),
            mon = monthDict[date.getMonth()],
            day = date.getDate()+'',
            dayi = parseInt(day),
            year = date.getFullYear(),
            thisyear = (new Date()).getFullYear(),
            th = 'th';
        
        // anti-'th' - but don't do the 11th, 12th or 13th
        if ((dayi % 10) == 1 && day.substr(0, 1) != '1') {
            th = 'st';
        } else if ((dayi % 10) == 2 && day.substr(0, 1) != '1') {
            th = 'nd';
        } else if ((dayi % 10) == 3 && day.substr(0, 1) != '1') {
            th = 'rd';
        }
        
        if (day.substr(0, 1) == '0') {
            day = day.substr(1);
        }
        
        return mon + ' ' + day + th + (thisyear != year ? ', ' + year : '');
    }
    
    delta = delta + (relative_to.getTimezoneOffset() * 60);

    if (delta < 5) {
        r = 'less than 5 seconds ago';
    } else if (delta < 30) {
        r = 'half a minute ago';
    } else if (delta < 60) {
        r = 'less than a minute ago';
    } else if (delta < 120) {
        r = '1 minute ago';
    } else if (delta < (45*60)) {
        r = (parseInt(delta / 60)).toString() + ' minutes ago';
    } else if (delta < (2*90*60)) { // 2* because sometimes read 1 hours ago
        r = 'About 1 hour ago';
    } else if (delta < (24*60*60)) {
        r = 'About ' + (parseInt(delta / 3600)).toString() + ' hours ago';
    } else {
        if (delta < (48*60*60)) {
            r = formatTime(date) + ' yesterday';
        } else {
            r = formatTime(date) + ' ' + formatDate(date);
            // r = (parseInt(delta / 86400)).toString() + ' days ago';
        }
    }

    return r;
}
