(function ($) {

    $.extend({
        convertUrlToLink: function (text) {
            var regexp = /((ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?)/gi;
            return text.replace(regexp, "<a href=\"$1\">$1</a>");
        },
        convertUserToLink: function (text) {
            var regexp = /[\@]+([A-Za-z0-9-_]+)/gi;
            return text.replace(regexp, "<a href=\"http://twitter.com/$1\">@$1</a>");
        },
        convertHashToLink: function (text, username) {
            var regexp = /(?:^| )[\#]+([A-Za-z0-9-_]+)/gi;
            return text.replace(regexp, ' <a href="http://search.twitter.com/search?q=&tag=$1&lang=all&from=' + username + '">#$1</a>');
        },
        convertAllToLink: function (text, username) {
            return $.convertHashToLink($.convertUserToLink($.convertUrlToLink(text)), username);
        }
    });

})(jQuery);

