"use strict";

function differenceString(created_at) {
    var present, past, difference, second, minute, hour, day;
    present = new Date();
    past = new Date(created_at);
    if (navigator.userAgent.match(/MSIE\s([^;]*)/)) {
        past = Date.parse(created_at.replace(/( \+)/, " UTC$1"));
    }
    difference = present - past;
    second = 1000;
    minute = second * 60;
    hour = minute * 60;
    day = hour * 24;
    if (isNaN(difference) || difference < 0) {
        return "";
    }
    if (difference < second * 7) {
        return "right now";
    }
    if (difference < minute) {
        return Math.floor(difference / second) + " seconds ago";
    }
    if (difference < minute * 2) {
        return "about 1 minute ago";
    }
    if (difference < hour) {
        return Math.floor(difference / minute) + " minutes ago";
    }
    if (difference < hour * 2) {
        return "about 1 hour ago";
    }
    if (difference < day) {
        return Math.floor(difference / hour) + " hours ago";
    }
    if (difference > day && difference < day * 2) {
        return "yesterday";
    }
    if (difference < day * 365) {
        return Math.floor(difference / day) + " days ago";
    } else {
        return "over a year ago";
    }
}

document.observe("dom:loaded", function () {
    new Ajax.JSONRequest('http://api.twitter.com/1/statuses/user_timeline.json?screen_name=queeratuva&include_rts=true&count=4', {
        onSuccess: function (response) {
            var timeout = 0;
            response.responseJSON.each(function (item) {
                if (item.retweeted_status) {
                    item = item.retweeted_status;
                }

                var listItem, authorSpan, authorLink, authorImage, textSpan, nameStrong, nameLink, contentSpan, timeSpan, timeLink, timeSpan2, viaNode;

                listItem = document.createElement('li');
                listItem.appendChild(authorSpan = $(document.createElement('span')).addClassName('user'));
                authorSpan.appendChild(authorLink = document.createElement('a'));
                authorLink.appendChild(authorImage = document.createElement('img'));
                listItem.appendChild(textSpan = $(document.createElement('span')).addClassName('text'));
                textSpan.appendChild(nameStrong = document.createElement('strong'));
                nameStrong.appendChild(nameLink = document.createElement('a'));
                textSpan.appendChild(contentSpan = $(document.createElement('span')).addClassName('content'));
                textSpan.appendChild(timeSpan = $(document.createElement('span')).addClassName('time'));
                timeSpan.appendChild(timeLink = document.createElement('a'));
                timeLink.appendChild(timeSpan2 = document.createElement('span'));

                authorLink.href = "http://twitter.com/" + item.user.screen_name;
                authorImage.src = item.user.profile_image_url;
                authorImage.alt = item.user.name;
                nameLink.href = "http://twitter.com/" + item.user.screen_name;
                nameLink.innerHTML = item.user.screen_name;
                contentSpan.innerHTML = "&nbsp;" + item.text
			.replace(/(http:\/\/\S+)/g, '<a href="$1">$1</a>')
			.replace(/#(\w+)/g, '<a href="http://twitter.com/search?q=%23$1">#$1</a>')
			.replace(/@(\w+)/g, '<a href="http://twitter.com/$1">@$1</a>');
                timeLink.href = "http://twitter.com/" + item.user.screen_name + "/status/" + item.id;
                timeSpan2.innerHTML = differenceString(item.created_at);
                timeSpan.innerHTML += ' via ' + item.source;

                $('tweets').appendChild($(listItem).setStyle('display: none;'));
                window.setTimeout(function () {
                    new Effect.BlindDown(listItem, {
                        from: 0.0,
                        to: 1.0,
                        duration: 1.0
                    });
                }, timeout);
                timeout += 1000;
            });
            var listItem = document.createElement('li').setStyle('text-align: right;');
            listItem.innerHTML = '<a href="http://twitter.com/queeratuva">more...</a>';
            $('tweets').appendChild(listItem);
        }
    });
});
