(function($){"use strict";

$('.sp-widget-twitter').live('registered', function() {
    var $widget = $(this);

    // hide the meta information until its loaded..
    $('.sp-tweet-meta', $widget).hide();

    var accounts = $.parseJSON($('.sp-twitter-accounts', $widget).val());

    if (!accounts || typeof accounts != "object") {
        // no accounts!
        return;
    }
    
    var query = "from:" + accounts.join(" OR from:");

    var proto = (document.location.protocol == 'https:' ? 'https:' : 'http:');
    var url = proto + "//search.twitter.com/search.json?q=" + encodeURIComponent(query) + "&rpp=1&page=1&include_entities=1&callback=?";

    log("  - retrieving tweets for [" + query + "]");

    $.getJSON(url, function(data) {
        if (data.results) {
            log("  - loading " + data.results.length + " tweets");
            if (data.results.length > 0) {
                for (var idx = 0, tweet; tweet = data.results[idx]; ++idx) {
                    log(tweet);
                    var $tweet = $('.sp-tweet:eq(' + idx + ')', $widget);
                    $('.sp-tweet-message', $tweet).text(tweet.text);
                    $('.sp-tweet-author', $tweet).text(tweet.from_user_name);
                    $('.sp-tweet-created', $tweet).text(strtonicetime(tweet.created_at));
                    $('.sp-tweet-meta', $tweet).show();
                    $('a', $tweet).attr({
                        'href': 'http://twitter.com/' + tweet.from_user
                    });
                }
            } else {
                $(".sp-tweet", $widget).hide();
                $(".sp-widget-content", $widget).append('<p>No recent tweets!</p>');
            }
        }
    });
});

function strtonicetime(str) {
    var d = new Date(str);
    var now = new Date();
    var delta = parseInt((now.getTime() - d.getTime()) / 1000);

    if (delta < 60) {
        return "less than a minute ago";
    } else if (delta < 60 * 60) {
        return parseInt(delta / 60).toString() + " minutes ago";
    } else if (delta < 24 * 60 * 60) {
        return parseInt(delta / (60 * 60)).toString() + " hours ago";
    } else {
        return parseInt(delta / (24 * 60 * 60)).toString() + " days ago";
    }
}

})(jQuery);

