var cvNewsTicker = new Class({ Implements: [Options], options: { ticker_ul: 'newsticker', //element for the ticker duration:400, //duration for the animation delay:1000, //delay per news item transition: Fx.Transitions.Quad.easeIn, //transition direction:'horizontal', //horzontal or vertical num:0// which slide does the ticker start on }, initialize: function(el,options) { //set options this.setOptions(options); this.el = $(el); this.items = this.el.getElements('li'); var w = 0; var h = 0; var self = this; for(var i=0;i < this.items.length; i++) { var tickerDials = new Element ('li',{ 'id': 'buttonnum'+i, 'class': 'buttonoff', 'alt': i }); tickerDials.injectInside('newstickerbuttons'); $('buttonnum0').addClass('buttonon'); } if(this.options.direction == 'vertical'){ w = this.el.getWidth(); this.items.each(function(li,index) { h += li.getSize().y; }); }else if(this.options.direction == 'horizontal'){ h = this.el.getWidth(); this.items.each(function(li,index) { w += li.getSize().x; }); }else{ alert('no direction defined!'); } this.el.setStyles({ position: 'absolute', top: 0, left: 0, width: w, height: h }); this.fx = new Fx.Morph(this.el, { transition: this.options.transition, duration: this.options.duration, onComplete: function(){ var i = (this.current==0)?this.items.length:this.current; this.items[i-1].injectInside(this.el); this.el.setStyles({ left:0, top:0 }); }.bind(this) }); this.current = 0; (function(){ self.next(); }).delay(this.options.delay); }, // gotoSlide: function(num) { // this.current=num; // this.next.bind(this).delay(this.options.delay+this.options.speed); // }, next: function(){ this.current++; if (this.current >= this.items.length) this.current = 0; var pos = this.items[this.current]; //if ($$('ul#newstickerbuttons li').class == 'buttonon'){ $$('ul#newstickerbuttons li').removeClass('buttonon'); //}; $(('buttonnum'+this.current)).addClass('buttonon'); this.fx.start({ top: -pos.offsetTop, left: -pos.offsetLeft }); this.next.bind(this).delay(this.options.delay+this.options.speed); } });