(function(b) {
    b.fn.tweet = function(f) {
        var g = {
            username: ["WTofficial"],
            list: null,
            avatar_size: null,
            count: 1,
            intro_text: null,
            outro_text: null,
            join_text: null,
            auto_join_text_default: "i said,",
            auto_join_text_ed: "i",
            auto_join_text_ing: "i am",
            auto_join_text_reply: "i replied to",
            auto_join_text_url: "i was looking at",
            loading_text: "searching for tweets ...",
            query: null
        };
        if (f) {
            b.extend(g, f);
        }
        b.fn.extend({
            linkUrl: function() {
                var d = [];
                var c = /((ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?)/gi;
                this.each(function() {
                    d.push(this.replace(c, '<a href="$1">$1</a>'));
                });
                return b(d);
            },
            linkUser: function() {
                var d = [];
                var c = /[\@]+([A-Za-z0-9-_]+)/gi;
                this.each(function() {
                    d.push(this.replace(c, '<a href="http://twitter.com/$1">@$1</a>'));
                });
                return b(d);
            },
            linkHash: function() {
                var d = [];
                var c = / [\#]+([A-Za-z0-9-_]+)/gi;
                this.each(function() {
                    d.push(this.replace(c, ' <a href="http://search.twitter.com/search?q=&tag=$1&lang=all">#$1</a>'));
                });
                return b(d);
            },
            capAwesome: function() {
                var c = [];
                this.each(function() {
                    c.push(this.replace(/\b(awesome)\b/gi, '<span class="awesome">$1</span>'));
                });
                return b(c);
            },
            capEpic: function() {
                var c = [];
                this.each(function() {
                    c.push(this.replace(/\b(epic)\b/gi, '<span class="epic">$1</span>'));
                });
                return b(c);
            },
            makeHeart: function() {
                var c = [];
                this.each(function() {
                    c.push(this.replace(/(&lt;)+[3]/gi, "<tt class='heart'>&#x2665;</tt>"));
                });
                return b(c);
            }
        });
        function h(e) {
            var l = Date.parse(e);
            var d = (arguments.length > 1) ? arguments[1] : new Date();
            var c = parseInt((d.getTime() - l) / 1000);
            var k = function(j, i) {
                return "" + i + " " + j + (i == 1 ? "": "s");
            };
            if (c < 60) {
                return "less than a minute ago";
            } else {
                if (c < (45 * 60)) {
                    return "about " + k("minute", parseInt(c / 60)) + " ago";
                } else {
                    if (c < (24 * 60 * 60)) {
                        return "about " + k("hour", parseInt(c / 3600)) + " ago";
                    } else {
                        return "about " + k("day", parseInt(c / 86400)) + " ago";
                    }
                }
            }
        }
        function a() {
            var d = ("https:" == document.location.protocol ? "https:": "http:");
            if (g.list) {
                return d + "//api.twitter.com/1/" + g.username[0] + "/lists/" + g.list + "/statuses.json?per_page=" + g.count + "&callback=?";
            } else {
                if (g.query == null && g.username.length == 1) {
                    return d + "//twitter.com/status/user_timeline/" + g.username[0] + ".json?count=" + g.count + "&callback=?";
                } else {
                    var c = (g.query || "from:" + g.username.join("%20OR%20from:"));
                    return d + "//search.twitter.com/search.json?&q=" + c + "&rpp=" + g.count + "&callback=?";
                }
            }
        }
        return this.each(function() {
            var d = b('<ul class="tweet_list">').appendTo(this);
            var e = '<p class="tweet_intro">' + g.intro_text + "</p>";
            var j = '<p class="tweet_outro">' + g.outro_text + "</p>";
            var c = b('<p class="loading">' + g.loading_text + "</p>");
            if (typeof(g.username) == "string") {
                g.username = [g.username];
            }
            if (g.loading_text) {
                b(this).append(c);
            }
            b.getJSON(a(),
            function(i) {
                if (g.loading_text) {
                    c.remove();
                }
                if (g.intro_text) {
                    d.before(e);
                }
                b.each((i.results || i),
                function(z, D) {
                    if (g.join_text == "auto") {
                        if (D.text.match(/^(@([A-Za-z0-9-_]+)) .*/i)) {
                            var B = g.auto_join_text_reply;
                        } else {
                            if (D.text.match(/(^\w+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&\?\/.=]+) .*/i)) {
                                var B = g.auto_join_text_url;
                            } else {
                                if (D.text.match(/^((\w+ed)|just) .*/im)) {
                                    var B = g.auto_join_text_ed;
                                } else {
                                    if (D.text.match(/^(\w*ing) .*/i)) {
                                        var B = g.auto_join_text_ing;
                                    } else {
                                        var B = g.auto_join_text_default;
                                    }
                                }
                            }
                        }
                    } else {
                        var B = g.join_text;
                    }
                    var y = D.from_user || D.user.screen_name;
                    var w = D.profile_image_url || D.user.profile_image_url;
                    var F = '<span class="tweet_join"> ' + B + " </span>";
                    var C = ((g.join_text) ? F: " ");
                    var x = '<a class="tweet_avatar" href="http://twitter.com/' + y + '"><img src="' + w + '" height="' + g.avatar_size + '" width="' + g.avatar_size + '" alt="' + y + '\'s avatar" title="' + y + '\'s avatar" border="0"/></a>';
                    var v = (g.avatar_size ? x: "");
                    var A = '<span class="tweet-date">' + h(D.created_at) + "</span>";
                    var E = "<p>" + b([D.text]).linkUrl().linkUser().linkHash().makeHeart().capAwesome().capEpic()[0] + "</p>";
                    b("#tweets").append(E + A);
                });
                if (g.outro_text) {
                    d.after(j);
                }
            });
        });
    };
})(jQuery);
