jQuery(function($) {
    var EXPAND_MESSAGE = "Click to embiggen &#8594;";
    var SHRINK_MESSAGE = "Click to shrink &#8592;";
    var EXTRA_SPACE = 28; // Pixels.
    $('.post').each(function() {
        var language = null;
        $('pre code', this).each(function() { 
            var code = $(this);
            var pre = code.parent();
            var input = pre.prev('p').find('input[name=language]');
            if (input.length) {
                language = input.val();
            }
            if (language) {
                code.addClass(language);
            }
            if (code.width() + EXTRA_SPACE > pre.width()) {
                var expandButton = $(document.createElement('p')).addClass('expand').html(EXPAND_MESSAGE);
                expandButton.insertBefore(pre).toggle(
                    function() {
                        var pre = $(this).next('pre');
                        var code = pre.find('code');
                        codeWidth = code.width();
                        preWidth = pre.width();
                        if (codeWidth + EXTRA_SPACE > preWidth) {
                            pre.width(codeWidth + EXTRA_SPACE * $.browser.msie);
                            $(this).html(SHRINK_MESSAGE);
                        }
                        return false;
                    },
                    function() {
                        var pre = $(this).next('pre');
                        pre.css('width', 'auto');
                        $(this).html(EXPAND_MESSAGE);
                        return false;
                    }
                );
            }
        });
    });
});
