// as long as it continues to be invoked, it will not be triggered
function debounce (func, interval) {
var timeout;
return function () {
var context = this, args = arguments;
var later = function () {
timeout = null;
func.apply(context, args);