jQuery.fn.toolTip = function(content, options) {
    var postShow = function(box) {
        var tipsource = $(this);
        var monitor = tipsource.add($(box));
        var timer;

        tipsource.data("btdelay.hover", true).data("btdelay.delay", 0);

        var checkRemove = function() {
            var hovered = tipsource.data("btdelay.hover");

            if (hovered) {
                tipsource.data("btdelay.delay", 0);
            } else {
                var delay = tipsource.data("btdelay.delay");
                if (delay<5) {
                    tipsource.data("btdelay.delay", delay+1);
                } else {
                    clearInterval(timer);
                    tipsource.unbind(".btdelay");
                    tipsource.btOff();
                }
            }
        }

        monitor.bind("mouseover.btdelay", function() { tipsource.data("btdelay.hover", true); })
               .bind("mouseleave.btdelay", function() { tipsource.data("btdelay.hover", false); });
        timer=setInterval(checkRemove, 100);
    };

    var opt = (typeof content == "string") ? options : content;
    opt = jQuery.extend(opt, {trigger: "none", postShow: postShow});

    return this.each(function(index) {
        var hoverOpts = {
                over : function() { $(this).btOn(); },
                out : function() { }
                };

        $(this).bt(content, opt).hoverIntent(hoverOpts);
    });
};
