(function($) {
    /*
    jquery.twitter.js v1.5
    Last updated: 08 July 2009

		Created by Damien du Toit
    http://coda.co.za/blog/2008/10/26/jquery-plugin-for-twitter

		Licensed under a Creative Commons Attribution-Non-Commercial 3.0 Unported License
    http://creativecommons.org/licenses/by-nc/3.0/
    */

    $.fn.getTwitter = function(options) {

        $.fn.getTwitter.defaults = {
            userName: null,
            numTweets: 5,
            loaderText: "Loading tweets...",
            slideIn: true,
            slideDuration: 750,
            showHeading: true,
            headingText: "Latest Tweets",
            showProfileLink: true,
            showTimestamp: true,
            refresh: 60, //RTC MOD : 17/08/2011
            linkNewWindow: true //RTC MOD : 17/08/2011
        };

        var o = $.extend({}, $.fn.getTwitter.defaults, options);

        return this.each(function(i, widget) {

            $(widget).bind("tweet:load", function() { //RTC MOD : 17/08/2011
                var c = $(this);

                // hide container element, remove alternative content, and add class
                c.hide().empty().addClass("twitted");

                // add heading to container element
                if (o.showHeading) {
                    c.append("<h2>" + o.headingText + "</h2>");
                }

                // add twitter list to container element
                var twitterListHTML = "<ul id=\"twitter_update_list\"><li></li></ul>";
                c.append(twitterListHTML);

                var tl = $("#twitter_update_list");

                // hide twitter list
                tl.hide();

                // add preLoader to container element
                var preLoaderHTML = $("<p class=\"preLoader\">" + o.loaderText + "</p>");
                c.append(preLoaderHTML);

                // add Twitter profile link to container element
                if (o.showProfileLink) {
                    //var profileLinkHTML = "<p class=\"profileLink\"><a href=\"http://twitter.com/" + o.userName + "\" target=\"_blank\"><img src=\"/_assets/css/rtc_images/twitter.png\" alt=\"By: TwitterButtons.com\" /></a></p>";
                    var profileLinkHTML = "<p class=\"profileLink\"><a href=\"http://twitter.com/" + o.userName + "\" target=\"_blank\">&raquo;Follow me @ "+o.userName+"</a></p>";
                    c.append(profileLinkHTML);
                }

                // show container element
                c.show();

                $.getScript("http://twitter.com/javascripts/blogger.js");
                $.getScript("http://twitter.com/statuses/user_timeline/" + o.userName + ".json?callback=twitterCallback2&count=" + o.numTweets, function() {
                    // remove preLoader from container element
                    $(preLoaderHTML).remove();

                    // remove timestamp and move to title of list item
                    if (!o.showTimestamp) {
                        tl.find("li").each(function() {
                            var timestampHTML = $(this).children("a");
                            var timestamp = timestampHTML.html();
                            timestampHTML.remove();
                            $(this).attr("title", timestamp);
                        });
                    }

                    //Adds target blank to each link
                    if (o.linkNewWindow) {
                        tl.find("a").each(function() {
                            $(this).attr("target", "_blank");
                        });
                    }

                    // show twitter list
                    if (o.slideIn) {
                        // a fix for the jQuery slide effect
                        // Hat-tip: http://blog.pengoworks.com/index.cfm/2009/4/21/Fixing-jQuerys-slideDown-effect-ie-Jumpy-Animation
                        var tlHeight = tl.data("originalHeight");

                        // get the original height
                        if (!tlHeight) {
                            tlHeight = tl.show().height();
                            tl.data("originalHeight", tlHeight);
                            tl.hide().css({ height: 0 });
                        }

                        tl.show().animate({ height: tlHeight }, o.slideDuration);
                    }
                    else {
                        tl.show();
                    }

                    // add unique class to first list item
                    tl.find("li:first").addClass("firstTweet");

                    // add unique class to last list item
                    tl.find("li:last").addClass("lastTweet");

                    //RTC MOD : 17/08/2011
                    if (o.refresh > 0) { window.setTimeout(function() { $(widget).trigger("tweet:load"); }, 1000 * o.refresh); }
                });
            }).trigger("tweet:load");
        });
    };
})(jQuery);
