JavaScript debounce function.
function debounce(fn, duration) { var timeout; return function() { clearTimeout(timeout); timeout = setTimeout(fn, duration); }; }