/* --- name: Loop description: Runs a class method on a periodical license: MIT-style license. authors: Ryan Florence docs: http://moodocs.net/rpflo/mootools-rpflo/Loop requires: - Core/Class provides: [Loop] ... */ var Loop = new Class({ loopCount: 0, isLooping: false, loopMethod: function(){}, setLoop: function(fn, delay){ wasLooping = this.isLooping; if (wasLooping) this.stopLoop(); this.loopMethod = fn; this.loopDelay = delay || 3000; if (wasLooping) this.startLoop(); return this; }, stopLoop: function(){ this.isLooping = false; clearInterval(this.periodical); return this; }, startLoop: function(delay, now){ if (!this.isLooping){ this.isLooping = true; if (now) this.looper(); this.periodical = this.looper.periodical(delay || this.loopDelay, this); }; return this; }, resetLoop: function(){ this.loopCount = 0; return this; }, looper: function(){ this.loopCount++; this.loopMethod(this.loopCount); return this; } });