var Periodical = new Class({ initialize: function(fn, interval){ this.fn = fn; this.interval = interval; this.id = 0; this.start(); }, start: function(){ this.stop(); this.start = $time(); this.id = setInterval(this.interval); }, stop: function(){ this.delta = 0; clearInterval(this.id); }, pause: function() { this.delta = this.start + this.interval - $time(); clearInterval(this.id); }, resume: function() { var self = this; this.id = setTimeout(function(){ self.start() }, this.delta); } });