﻿(function ($) {
    $.fn.twitter = function (user, options) {
        var defaultOptions = { count: '1' }
        var options = $.extend(defaultOptions, options);
        var url = "http://twitter.com/status/user_timeline/" + user + ".json?count=" + options.count + "&callback=?";
        var obj = this;

        String.prototype.convertToLink = function () {
            return this.replace(/[A-Za-z]+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&\?\/.=]+/, function (str) {
                return str.link(str);
            });
        };

        String.prototype.format = function () {
            var str = this;
            for (arg in arguments) { str = str.replace("{" + arg + "}", arguments[arg]); }
            return str;
        };

        String.prototype.convertAtToLink = function () {
            return this.replace(/\@[A-Za-z0-9]*/, function (str) {
                var link = "http://twitter.com/{0}";
                link = link.format(str.substr(1));
                var rstr = '<a href="{0}">{1}</a>';
                return rstr.format(link, str);
            });
        };

        if (user) {
            return obj.each(function () {
                $.getJSON(url, function (data) {
                    $.each(data, function (i, item) {
                        obj.append("<p>" + item.text.convertToLink().convertAtToLink() + "</p>");
                    });
                });
            });
        }
    };

})(jQuery);
