var PeriodicalExecuter=new Class({initialize:function(callback,frequency){this.callback=callback;this.frequency=frequency;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;}});
