var PeriodicalExecuter=new Class({initialize:function(b,a){this.callback=b;this.frequency=a;this.currentlyExecuting=false;this.registerCallback()},registerCallback:function(){this.stop();this.timer=setInterval(this.onTimerEvent.bind(this),this.frequency*1000);return this},execute:function(){this.callback(this);return this},stop:function(){if(!this.timer){return this}clearInterval(this.timer);this.timer=null;return this},onTimerEvent:function(){if(!this.currentlyExecuting){try{this.currentlyExecuting=true;this.execute()}finally{this.currentlyExecuting=false}}return this}});
