Memory leak with jquery fixed table header, AJAX setInterval

Memory leak with jquery fixed table header, AJAX setInterval

I use the below fixedtableheader plugin on a golf leaderboard page that uses AJAX and setInterval to fetch score changes from the server. Without the plugin everything works well, with the plugin, there is a constant memory leak that during the course of the day make Firefox go from 60MB at start to 1.5GB before end of day and crash. Can anyone spot any memory leaks in this code?  I've found a lot of articles on memory leaks with AJAX and setInterval, but if I take out the fixedheader plugin the rest seems to behave ok.

The page in question is http://scoring.pgalinks.net/leaderboards/lobby.cfm?from=jq
  1. jQuery.fn.fixedtableheader = function (options) {
    var settings = jQuery.extend({
    headerrowsize: 1,
    highlightrow: false,
    highlightclass: "highlight"
    }, options);
    this.each(function (i) {
    var $tbl = $(this);
    var $tblhfixed = $tbl.find("tr:lt(" + settings.headerrowsize + ")");
    var headerelement = "th";
    if ($tblhfixed.find(headerelement).length == 0) headerelement = "td";
    if ($tblhfixed.find(headerelement).length > 0) {
    $tblhfixed.find(headerelement).each(function () {
    $(this).css("width", $(this).width());
    });
    var $clonedTable = $tbl.clone().empty();
    var tblwidth = GetTblWidth($tbl);
    $clonedTable.attr("id", "fixedtableheader" + i).css({
    "position": "fixed",
    "top": "0",
    "left": $tbl.offset().left
    }).append($tblhfixed.clone()).width(tblwidth).hide().appendTo($("body"));
    if (settings.highlightrow) $("tr:gt(" + (settings.headerrowsize - 1) + ")", $tbl).hover(function () {
    $(this).addClass(settings.highlightclass);
    }, function () {
    $(this).removeClass(settings.highlightclass);
    });
    $(window).scroll(function () {
    if (jQuery.browser.msie && jQuery.browser.version == "6.0") $clonedTable.css({
    "position": "absolute",
    "top": $(window).scrollTop(),
    "left": $tbl.offset().left
    });
    else $clonedTable.css({
    "position": "fixed",
    "top": "0",
    "left": $tbl.offset().left - $(window).scrollLeft()
    });
    var sctop = $(window).scrollTop();
    var elmtop = $tblhfixed.offset().top;
    if (sctop > elmtop && sctop <= (elmtop + $tbl.height() - $tblhfixed.height())) $clonedTable.show();
    else $clonedTable.hide();
    });
    $(window).resize(function () {
    if ($clonedTable.outerWidth() != $tbl.outerWidth()) {
    $tblhfixed.find(headerelement).each(function (index) {
    var w = $(this).width();
    $(this).css("width", w);
    $clonedTable.find(headerelement).eq(index).css("width", w);
    });
    $clonedTable.width($tbl.outerWidth());
    }
    $clonedTable.css("left", $tbl.offset().left);
    });
    }
    });

    function GetTblWidth($tbl) {
    var tblwidth = $tbl.outerWidth();
    return tblwidth;
    }
    };