var ScrollingMarquee = new Class({
	/* elements are shown one at a time, with transitions */
	Implements: [Options,Events, Chain],

	options: {
		/* elements to select (array)*/
		elements : []
	}, 

	log: function(){
		return false;
		//if('console' in window && 'log' in window.console) console.log.apply(console, arguments);
	},

	initialize: function(options){ 
		this.setOptions(options);
		if(!this.options.elements)return false;
		
		//this.log('this.options.elements=',this.options.elements);
		
		this.currentTarget = -1;
		this.Targets = [];
		
		
		this.options.elements.each(
						function(item, index, array){
							var target;
							if(target = document.getElement(item)){
								//this.log('target=',target);
								target.yDistance = 20;
								/* origin */
								target.startY = target.getStyle('top').toInt();
								/* animation */
								target.FxMorph = new Fx.Morph(target,{'duration':800,'link':'chain'});
								/* hide */
								target.FxMorph.set({'opacity':0});
								/* convenience */
								target.ParentClass = this;
								/* delay in ms */
								target.fxPause = 2000; 
								/* event */
								target.addEvent('fadeIn',function(){
									/* bound to 'target' */
									this.FxMorph.start({'opacity':[0,1], 'top':[this.startY - this.yDistance, this.startY]}).chain( 
										function(){this.fireEvent('fadeOut', '', this.fxPause) }.bind(this)
										) ;
									//console.log('this=',this);
									return this;
								}.bind(target));
								
								target.addEvent('fadeOut',function(){
									/* bound to 'target' */
									this.FxMorph.start({'opacity':[1,0], 'top':[this.startY, this.startY + this.yDistance]}).chain(target.ParentClass.nextStep.bind(target.ParentClass));
									//console.log('this=',this);									
									return this;
								}.bind(target));
								
								
								//target.fireEvent('fadeIn');
								
								this.Targets[index] = target;
							}
						},this
					);
		
		/* animation steps */
		this.chain( this.nextStep );
		
		
		this.callChain();
					
	},
	
	nextStep:function(){
		var nextTarget = this.currentTarget+1;
		
		this.log('nextTarget=',nextTarget);
		
		if(nextTarget == this.Targets.length){
			/* reset */
			nextTarget=0;
			
		}
		
		if(this.Targets[nextTarget]){
			this.log(this.Targets[nextTarget].fireEvent('fadeIn')); 
			this.currentTarget = nextTarget;	
		}
		

	}	
});
