var Ticker=new Class({Implements:[Options,Events],options:{element:null,url:null,initialInterval:0,interval:5e3,autoStart:!0,fx:{duration:500},failureRetryDelay:1e4},initialize:function(n){this.setOptions(n);if(!this.options.element)return;this.options.element=document.id(this.options.element);if(!this.options.element)return;this.nextEl=this.options.element.getElement(".ticker-next"),this.nextEl!=null?this.nextEl.getParent()&&this.nextEl.getParent().removeChild(this.nextEl):this.nextEl=new Element("div",{"class":"ticker-next"}),this.options.autoStart&&this.load(this.options.initialInterval)},load:function(n){new Request({url:this.options.url,noCache:!0,onSuccess:function(t){try{this._data=JSON.decode(t)||[]}catch(i){this._data=[]}$type(this._data)!="array"&&(this._data=[this._data]),this._dataIndex=0,this._data.length>0&&(this._initialised||this.fireEvent("loadcomplete"),this._dataIndex<0&&(this._dataIndex=0),this._dataIndex<this._data.length||(this._dataIndex=this._data.length-1),this._busy||this.loadNext(n),this._initialised=!0)}.bind(this),onFailure:function(){this.load.delay(this.options.failureRetryDelay,this)}.bind(this)}).send()},loadNext:function(n){if(!this._data)return;this.cancel(),this._loading=new Request.HTML({url:this._data[this._dataIndex],noCache:!0,onSuccess:function(n){for(var f=null,u=0;u<n.length;u++)if(n[u].getParent){f=n[u].getParent();break}this.preLoad(f,function(){this.nextEl.setStyle("opacity",0).inject(this.options.element).empty().adopt(n),this._loading=null,this.onLoadNextComplete()}.bind(this))}.bind(this),onFailure:function(){this.cancel(),this.reset(),this.load.delay(this.options.failureRetryDelay,this)}.bind(this)}).send(),this._busy=!0,this.fireEvent("loadnext",this._loading.options.url),this._timer=this.transitionNext.delay(n!=null?n:this.options.interval,this),this._dataIndex++,this._dataIndex<this._data.length||(this.reset(),this.load())},onLoadNextComplete:function(){this._timer||this.transitionNext()},transitionNext:function(){this._timer=null;if(this._loading)return;this.nextEl.get("tween",$extend(this.options.fx,{onComplete:this.onTransitionNextComplete.bind(this)})).start("opacity",1)},onTransitionNextComplete:function(){this.nextEl.getParent()&&this.nextEl.getParent().removeChild(this.nextEl),this.options.element.empty().adopt(this.nextEl.getChildren()),this._busy=!1,this.options.interval&&this.loadNext()},cancel:function(){this._loading&&(this._loading.cancel(),this._loading=null),this._timer&&(clearTimeout(this._timer),this._timer=null),this.nextEl.get("tween").cancel(),this.nextEl.getParent()&&this.nextEl.getParent().removeChild(this.nextEl),this.nextEl.empty(),this._busy=!1},reset:function(){this._data=null,this._dataIndex=-1},preLoad:function(n,t){var r,i;if(!t)return;if(!n){t();return}t={enabled:!1,callback:t};var u=[],e=function(n,t,i){t.onload=null,n.erase(t),n.length||i.enabled&&i.callback()}.bind(u),f=n.getElements("img");if(f){for(r=0;r<f.length;r++)i=new Image,u.push(i),i.onload=e.bind(this,[u,i,t]),i.src=f[r].src;u.length?t.enabled=!0:t.callback()}}})
