$(document).ready(function () {

    $.getJSON('http://twitter.com/statuses/user_timeline/swaguk.json?callback=?&count=3', function (data) {
        $.each(data, function (index, item) {
            $('div.twitterData').append('<div class="tweet"><div class="tweetHeader"></div><div class="tweetBody"><p>' + item.text.linkify() + '</p><p class="created">' + relative_time(item.created_at) + '</p><p class="avatar"><a href="http://www.twitter.com/swaguk" target="_twitter"><img src="' + item.user.profile_image_url + '" alt="' + item.user.name + '" class="avatarImage" title="@' + item.user.screen_name + ' has ' + item.user.followers_count + ' followers."></a></p></div></div>');
        });
    });

    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);

        var r = '';
        if (delta < 60) {
            r = 'a minute ago';
        } else if (delta < 120) {
            r = 'couple of minutes ago';
        } else if (delta < (45 * 60)) {
            r = (parseInt(delta / 60)).toString() + ' minutes ago';
        } else if (delta < (90 * 60)) {
            r = 'an hour ago';
        } else if (delta < (24 * 60 * 60)) {
            r = '' + (parseInt(delta / 3600)).toString() + ' hours ago';
        } else if (delta < (48 * 60 * 60)) {
            r = '1 day ago';
        } else {
            r = (parseInt(delta / 86400)).toString() + ' days ago';
        }

        return r;
    };

    String.prototype.linkify = function () {
        return this.replace(/[A-Za-z]+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&\?\/.=]+/, function (m) {
            return m.link(m);
        });
    };

});
