code: function (func, wait) { 
  		var timeout, self = this;
  		return function () {
  			var context = self, args = arguments;
  			if (wait == null) {
  				return func.apply(context, args);
  			}
  			if (!timeout) {
  				timeout = setTimeout(function() {
  					timeout = null;
  					func.apply(context, args);
  				}, wait);
  			}
  			return timeout;
  		};
  	}
docs: Creates and returns a new debounced version of the passed function which will postpone its execution until after {wait} milliseconds have elapsed since the last time it was invoked.
  @param {function}  - Executable function to postpone
  @param {number} wait - How much time to postpone execution. Omit to execute immediately.
  @return {function} - Returns a new debounced version of the passed function
  @member bb.dom