/* 
 * jQuery.resizeEvents.js
 * © 2011 kumagaiyusuke
*/

(function ($) {

  $.resizeEvents = function ($window, options) {
    
    var settings = $.extend({
      interval: 200
    }, options);
    
    var checkTimer;
    var currentSize = {};
    var isResize = false;
    
    var events = $.resizeEvents.events;
    
    
    $window.on("resize", onResize);
    
    
    function onResize(e) {
    
      if (!isResize) {
  
        isResize = true;
  
        currentSize.width = $window.width();
        currentSize.height = $window.height();
  
        clearTimeout(checkTimer);
        checkTimer = setTimeout(check, settings.interval);
  
        $window.unbind("resize", onResize);
        $window.trigger(events.RESIZE_START);
      }
  
    }
    
    function check() {
      
      var windowSize = {
        width: $window.width(),
        height: $window.height()
      };
      
      if (
        currentSize.width === windowSize.width &&
        currentSize.height === windowSize.height
      ) {
        isResize = false;
        $window.bind("resize", onResize);
        $window.trigger(events.RESIZE_END);
      }
      else {
        currentSize.width = windowSize.width;
        currentSize.height = windowSize.height;
        checkTimer = setTimeout(check, settings.interval);
      }
    }

  };
  
  $.resizeEvents.events = {
    RESIZE_START: "resizeStart",
    RESIZE_END: "resizeEnd"
  };
  
})(jQuery);

