Resizable jQuery Tablesorter Scroller

A widget to extent the jQuery tablescroller plugin by Christian Bach (www.tablesorter.com)
Like Christian's code, I've dual-licensed this code under the MIT and GPL licenses.

Download the widget code here.
For more details check out the blog post here.
Comments and suggestions can be posted there or emailed to Tim Connell at tim@tconnell.com

Demo
YearArtistSingleAlbum
1979SpecialsGangstersNon-album single
1979SpecialsA Message to You, RudySpecials
1980SpecialsToo Much Too YoungSpecials
1980SpecialsRat RaceNon-album single
1980SpecialsStereotypeMore Specials
1980SpecialsDo NothingMore Specials
1981SpecialsGhost TownNon-album single
1982SpecialsThe Boiler (with Rhoda Dakar)Non-album single
1982SpecialsJungle Music (with Rico Rodriguez)Non-album single
1982SpecialsWar CrimesIn the Studio
1983SpecialsRacist FriendIn the Studio
1984SpecialsFree Nelson MandelaIn the Studio
1984SpecialsWhat I Like Most About You Is Your GirlfriendIn the Studio
1988SpecialsFree Nelson Mandela (re-release)Non-album single
1991SpecialsGhost Town RevisitedThe Singles Collection
1996SpecialsHypocriteToday's Specials
1997SpecialsIt's YouGuilty 'Til Proved Innocent
1979The BeatTears of a ClownI Just Can't Stop It
1980The BeatHands Off...She's MineI Just Can't Stop It
1980The BeatMirror in the BathroomI Just Can't Stop It
1980The BeatBest FriendI Just Can't Stop It
1980The BeatTwist & CrawlI Just Can't Stop It
1980The BeatToo Nice to Talk ToNon-album single
1981The BeatDrowning/All Out To Get YouWha'ppen?
1981The BeatDoors of Your HeartWha'ppen?
1981The BeatHit It (Auto Erotic)Non-album single
1982The BeatSave It for LaterSpecial Beat Service
1982The BeatJeanetteSpecial Beat Service
1982The BeatI ConfessSpecial Beat Service
1983The BeatCan't Get Used to Losing YouWhat is Beat?
1983The BeatAckee 1-2-3 What is Beat?
1996The BeatMirror in the Bathroom (remix)The Very Best of the Beat
1979MadnessThe PrinceOne Step Beyond...
1979MadnessOne Step BeyondOne Step Beyond...
1979MadnessMy GirlOne Step Beyond...
1980MadnessTarzanīs NutsOne Step Beyond...
1980MadnessBaggy TrousersAbsolutely
1980MadnessEmbarrassmentAbsolutely
1981MadnessThe Return of the Los Palmas 7Absolutely
1981MadnessGrey Day 7
1981MadnessShut Up7
1981MadnessIt Must Be LoveComplete Madness
1982MadnessCardiac Arrest7
1982MadnessHouse of FunComplete Madness
1982MadnessDriving in My CarUtter Madness
1982MadnessOur HouseThe Rise & Fall
1983MadnessTomorrow's (Just Another Day) / Madness (Is All in the Mind)The Rise & Fall
1983MadnessWings of a DoveUtter Madness
1983MadnessThe Sun and the RainUtter Madness
1984MadnessMichael CaineKeep Moving
1984MadnessOne Better Day Keep Moving
1985MadnessYesterday's MenMad Not Mad
1985MadnessUncle SamMad Not Mad
1986MadnessSweetest GirlMad Not Mad
1986Madness(Waiting For) The Ghost TrainUtter Madness
1992MadnessIt Must Be Love (re-issue)Divine Madness
1992MadnessHouse of Fun (re-issue)Divine Madness
1992MadnessMy Girl (re-issue)Divine Madness
1992MadnessThe Harder They ComeMadstock!
1993MadnessNight Boat to CairoDivine Madness
1999MadnessLovestruckWonderful
1999MadnessJohnny the HorseWonderful
2000MadnessDrip Fed FredWonderful
2005MadnessShame & ScandalThe Dangermen Sessions Vol. 1
2005MadnessGirl Why Don't YouThe Dangermen Sessions Vol. 1
2007MadnessSorryNon-album single
2008MadnessNW5The Liberty of Norton Folgate
2009MadnessDust DevilThe Liberty of Norton Folgate
2009MadnessSugar and SpiceThe Liberty of Norton Folgate
2010MadnessForever YoungThe Liberty of Norton Folgate

To add the scroller, include 'scroller' in the tablesorter widget list.
The 'scrollHeight' option specifies the height of the window the table scrolls within. Default value = 250px.

    $('table.tablesorter').tablesorter({
        scrollHeight: 300,
        widgets: ['zebra','scroller']
    });
Resizing
To enable resizing, I've created a 'resizeEnd' event on the browser window. When triggered, this event calls the resizeWidth method on each tablesorter.
    $(document).ready(function() {
	    //Setup window.resizeEnd event
        $(window).bind('resize', window_resize);
        $(window).bind('resizeEnd', function (e) {
            /*
            IE calls resize when you modify content, so we have to unbind the resize event
            so we don't end up with an infinite loop. we can rebind after we're done.
            */
            $(window).unbind('resize', window_resize);
            $('table.tablesorter').each(function(n, t) {
                if (typeof t.resizeWidth === 'function') t.resizeWidth();
            });
            $(window).bind('resize', window_resize);
        });
    });

    function window_resize() {
        if (this.resize_timer) clearTimeout(this.resize_timer);
        this.resize_timer = setTimeout(function () {
                $(this).trigger('resizeEnd');
            }
            , 250
        );
    }

Note that the changes to the header table width will trigger the resize event in IE. To prevent this from creating an infinite loop, this code detaches the window_resize handler before adjusting the table width. It then reattaches the handler once the resize has completed.