(function ($) {
    $.fn.getTwitter = function (options) {
        var o = $.extend({}, $.fn.getTwitter.defaults, options);

        // hide container element
        $(this).hide();

        $(this).append('<a href="http://twitter.com/' + o.userName + '" class="twitter_header"></a>');

        // add twitter list to container element
        $(this).append('<ul id="twitter_update_list"><li></li></ul>');

        // hide twitter list
        $("ul#twitter_update_list").hide();

        // add preLoader to container element
        var pl = $('<p id="' + o.preloaderId + '">' + o.loaderText + '</p>');
        $(this).append(pl);

        // show container element
        $(this).show();
        $.getScript("http://twitter.com/javascripts/blogger.js", function () {
            $.getScript("http://twitter.com/statuses/user_timeline/" + o.userName + ".json?callback=twitterCallback2&count=" + o.numTweets, function () {
                // remove preLoader from container element
                $(pl).remove();

                // show twitter list
                if (o.slideIn) {
                    $("ul#twitter_update_list").slideDown(1000);
                }
                else {
                    $("ul#twitter_update_list").show();
                }

                $("ul#twitter_update_list li:first").addClass("firstTweet");
                $("ul#twitter_update_list li:last").addClass("lastTweet");
            });
        });

    };

    $.fn.getTwitter.defaults = {
        userName: null,
        numTweets: 5,
        preloaderId: "preloader",
        loaderText: "Loading tweets...",
        slideIn: false
    };
})(jQuery);
