Incremental Window Resize

by khrome

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/mootools/1.4.5/mootools-core-full-compat.js"></script>

JavaScript

window.incrementalResize = function(options, callback){
    if(typeOf(options) == 'number') options = {number:options};
    if(typeOf(options) == 'function') options = {isCallable:options};
    var sizes = window.getSize();
    if(!options.lastX) options.lastX = sizes.x;
    if(!options.lastY) options.lastY = sizes.y;
    if(options.number && !options.isCallable){
        options.isCallable = function(x, y){
            
            var xDiff = Math.abs(options.lastX - x);
            var yDiff = Math.abs(options.lastY - y);
            if(options.number <= xDiff || options.number <= yDiff){
                options.lastX = x;
                options.lastY = y;
                return true;
            }
            return false;
        }
    }
    window.addEvent('resize', function(event){
         var dim = window.getSize();
         if(options.isCallable(dim.x, dim.y)) callback();
    });
}
window.incrementalResize(45, function(){
    alert('ping!');
});