(function($) {
    $.fn.textSize = function(opts) {
        $.fn.textSize.defaults = {
            linkClass: 'text-size-link',
            contentClass: 'text-size-content',
            closeDelay: 100,
            sizeWrapper: '#columns'
        };
        var opts = $.extend({}, $.fn.textSize.defaults, opts);

        return this.each(function(idx) {
            if ($(this).get(0).tagName != "A") return;
            var closeTimer = null;
            
            $(this).mouseenter(function() {
                var a = this;
                var setSize = GetCookie('fontsize');

                var linkBox = $('<div class="' + opts.linkClass + '">' + $(this).parent().html() + '</div>')
                                            .css("position", "absolute")
                                            .click(function() { return false; })
                                            .mouseleave(function() { closeTimer = window.setTimeout(function() { Close(a); }, opts.closeDelay); })
                                            .mouseenter(function() { window.clearTimeout(closeTimer); });
                $(this).parent().append(linkBox);
                var contentBox = $('<div class="' + opts.contentClass + '"><p><label class="normal"><input type="radio" name="textSize" value="100%" />Normal</label><br /><label class="large"><input type="radio" name="textSize" value="115%" />Large</label><br /><label class="extra-large"><input type="radio" name="textSize" value="130%" />Extra Large</label></p></div>').css("position", "absolute");
                contentBox.insertAfter(linkBox)
                                            .mouseleave(function() { closeTimer = window.setTimeout(function() { Close(a); }, opts.closeDelay); })
                                            .mouseenter(function() { window.clearTimeout(closeTimer); });
                contentBox.find(":radio").click(function() {
                    var size = $(this).val();
                    $(opts.sizeWrapper).css("font-size", size);
                    SetCookie("fontsize", size);
                }).each(function(idx) { if ($(this).val() == setSize) $(this).attr("checked", "checked"); });
            }).click(function() { return false; });
        });
        function Close(a) {
            $(a).parent().children("." + opts.linkClass + ",." + opts.contentClass).remove();
        }
    };
})(jQuery);