var PeriodicalExecuter=new Class({Binds:['onTimerEvent'],initialize:function(callback,frequency){this.callback=callback;this.frequency=frequency;this.currentlyExecuting=false;this.registerCallback()},registerCallback:function(){this.stop();this.timer=setInterval(this.onTimerEvent,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}});
