later = function() {
	      timeout = null;
	      if (!immediate) {
	        func.apply(context, args);
	      }
	    }
Debounce function

@param {function} func  Function to be debounced
@param {number} wait Function execution threshold in milliseconds
@param {bool} immediate  Whether the function should be called at
                         the beginning of the delay instead of the
                         end. Default is false.
@description Executes a function when it stops being invoked for n seconds
@see  _.debounce() http://underscorejs.org