jquery.repeater.js
function (minimumInterval, callback) {
    var timeout = null;
    return function () {
        var that = this, args = arguments;
        if(timeout === null) {
            timeout = setTimeout(function () {
                timeout = null;
            }, minimumInterval);
            callback.apply(that, args);
        }
    };
}
function (minimumInterval, callback) {
    var timeout = null;
    return function () {
        var that = this, args = arguments;
        if(timeout === null) {
            timeout = setTimeout(function () {
                timeout = null;
            }, minimumInterval);
            callback.apply(that, args);
        }
    };
}
function ( minimumInterval , callback ) { var timeout = null ; return function ( ) { var that = this , args = arguments ; if ( timeout === null ) { timeout = setTimeout ( function ( ) { timeout = null ; } , minimumInterval ) ; callback . apply ( that , args ) ; } } ; }
execute callback immediately and at most one time on the minimumInterval, ignore block attempts
execute callback immediately and at most one time on the minimumInterval ignore block attempts