
var Dotter=new Class({Implements:[Options,Events],options:{delay:1000,dot:'.',message:'Loading',numDots:3,property:'text',reset:false},initialize:function(container,options){this.setOptions(options);this.container=$(container);this.dots=0;this.running=false;},dot:function(){if(this.running){var text=this.container.get(this.options.property);this.dots++;this.container.set(this.options.property,(this.dots%this.options.numDots!=0?text:this.options.message)+''+this.options.dot);}
return this;},load:function(){this.loaded=true;this.dots=0;this.dotter=function(){this.dot();this.fireEvent('dot');}.bind(this);this.periodical=this.dotter.periodical(this.options.delay);this.container.set(this.options.property,this.options.message+''+this.options.dot);return this;},start:function(){if(!this.loaded||this.options.reset)this.load();this.running=true;this.fireEvent('start');return this;},stop:function(){this.running=this.loaded=false;$clear(this.periodical);this.fireEvent('stop');return this;}});var ScrollSpy=new Class({Implements:[Options,Events],options:{min:0,mode:'vertical',max:0,container:window,onEnter:$empty,onLeave:$empty,onTick:$empty},initialize:function(options){this.setOptions(options);this.container=$(this.options.container);this.enters=this.leaves=0;this.max=this.options.max;if(this.max==0)
{var ss=this.container.getScrollSize();this.max=this.options.mode=='vertical'?ss.y:ss.x;}
this.addListener();},addListener:function(){this.inside=false;this.container.addEvent('scroll',function(){var position=this.container.getScroll();var xy=this.options.mode=='vertical'?position.y:position.x;if(xy>=this.options.min&&xy<=this.max){if(!this.inside){this.inside=true;this.enters++;this.fireEvent('enter',[position,this.enters]);}
this.fireEvent('tick',[position,this.inside,this.enters,this.leaves]);}
else{if(this.inside)
{this.inside=false;this.leaves++;this.fireEvent('leave',[position,this.leaves]);}}}.bind(this));}});