/**
 * rotates items like latest news stories and transitioning them in, removing the old ones
 *
 * @author Alec Hill
 */
var Rotator=new Class({initialize:function(G,D,F,E,H,A,C,I,J,B){this.el=G;this.data=D||[];this.nodename=F||1;this.delay=E||10000;this.transition_duration=H||2000;if(this.delay<=this.transition_duration+2000){this.delay=this.transition_duration+2000;}this.fade_in_transition=A||Fx.Transitions.Quad.easeIn;this.fade_out_transition=C||Fx.Transitions.Quad.easeOut;this.max=I||1;this.modifyCallback=J||function(K){return K;};this.onComplete=B||function(){};return this;},start:function(){this.cue();return this;},immediate:function(){this.rotate();return this;},stop:function(){$clear(this.timeout);return this;},cue:function(){this.timeout=this.rotate.delay(this.delay,this);return this;},rotate:function(){if(this.el.getFirst().getFirst()&&this.el.getFirst().getFirst().id){var B=this.el.getFirst().getFirst().id.split("_");this.current_index=B[B.length-1].toInt();var A=this.current_index+1;this.parseData(A);}else{this.parseData(0);}return this;},parseData:function(A){var B=[];var D=A;var C=false;if(D==this.data.length){D=0;}this.data.each(function(F,E){if(E-D==this.max){C=true;}if(E<D||C){return ;}B.push(F);},this);this.parseComplete(B);this.cue();return this;},parseComplete:function(B){this.o=this.el.getFirst();this.n=$(document.createElement(this.nodename));var A=B.join(" ");this.n.setHTML(A);if(!this.n.getFirst()||!this.n.getFirst().id){return this.stop();}this.n=this.modifyCallback(this.n);if(this.data.length>this.max){this.change.call(this);}},change:function(A,D){this.n.addClass("place_holder");if(window.ie6){if(this.o){this.o.replaceWith(this.n);}else{this.el.appendChild(this.n);}return this;}var C=this.n.effect("opacity",{duration:this.transition_duration,transition:this.fade_in_transition});C.set(0);if(this.o){var B=this.o.effect("opacity",{duration:this.transition_duration,transition:this.fade_out_transition,onComplete:this.changeComplete.bind(this)});B.set(1);}if(this.o){this.n.injectAfter(this.o);B.start(1,0);}else{this.el.appendChild(this.n);}C.start(0,1);return this;},changeComplete:function(){this.o.hide();this.o.remove();this.onComplete();}});
