$.fn.occasionally=function(C,A,B){return new Occasionally(C,A,B).start()};function Occasionally(C,A,B){this.job=C;this.decayCallback=B;this.interval=A;this.timesRun=0;this.timesDecayed=0;this.decayRate=1;this.decayMultiplier=1.25;this.decayDivisor=0.75}Occasionally.prototype.start=function(){this.stop();this.run()};Occasionally.prototype.stop=function(){if(this.worker){window.clearTimeout(this.worker)}};Occasionally.prototype.run=function(){this.decayRate=this.decayCallback()?1:this.decayRate*this.decayMultiplier;var A=this;this.worker=window.setTimeout(function(){A.execute()},this.interval*this.decayRate)};Occasionally.prototype.execute=function(){this.job();this.timesRun++;this.run()};