var newsMarquee = Class.create({                                                 
                                                                                 
	initialize: function(element,options) {		                                     
		this.element = $(element);                                                   
		this.innerDiv = this.element.down('div');                                    
		this.options = {                                                             
			speed: 1,                                                                  
			control: true                                                              
		};                                                                           
		Object.extend(this.options, options || {});                                  
		                                                                             
		this.playScroll();                                                           
		if (this.options.control) {                                                  
			this.addObserver();                                                        
		}                                                                            
	},                                                                             
	                                                                               
	addObserver: function() {                                                      
		this.element.observe('mouseover', this.pauseScroll.bind(this));              
		this.element.observe('mouseout', this.playScroll.bind(this));	               
	},                                                                             
	                                                                               
	playScroll: function(){                                                        
  		this.scrolling = true;                                                     
  		this.startScroll();                                                        
	},                                                                             
	                                                                               
	pauseScroll: function(){                                                       
		if (this.timeout) {	                                                         
			this.timeout.stop();                                                       
			this.scrolling = false;                                                    
		}                                                                            
	},                                                                             
	                                                                               
	startScroll: function(){ 		                                                   
		if (this.scrolling) {   		                                                 
			this.timeout = new PeriodicalExecuter(function(){                          
	  			this.executeScroll();                                                  
	 		}.bind(this), this.options.speed/100);                                     
		}		                                                                         
	}                                                                              
		                                                                             
});                                                                              
                                                                                 
var horizontalMarquee = Class.create(newsMarquee,{                               
                                                                                 
	initialize: function($super,element,options) {	                               
		$super(element,options);                                                     
                                                                                 
		this.initialWidth = this.element.getWidth();		                             
		this.childWidth = 0;		                                                     
		this.childs = this.innerDiv.childElements();                                 
		this.childs[0].style.paddingLeft= this.initialWidth+'px';                    
		this.childs[this.childs.length-1].style.paddingRight= this.initialWidth+'px';
		this.childs.each(function(node) {			                                       
 				this.childWidth += node.getWidth();                                      
 			}.bind(this)                                                               
 		)		                                                                         
  		this.innerDiv.style.width = this.childWidth+'px';                          
	},                                                                             
	                                                                               
	executeScroll: function() {                                                    
		if (this.element.scrollLeft > (this.element.scrollWidth-this.initialWidth)) {
    		this.element.scrollLeft = 0;                                             
  		}                                                                          
		this.element.scrollLeft = this.element.scrollLeft+1;		                     
	}                                                                              
                                                                                 
});                                                                              
                                                                                 
                                                                                 
var verticalMarquee = Class.create(newsMarquee,{                                 
                                                                                 
	initialize: function($super,element,options) {                                 
		$super(element,options);		                                                 
		this.initialHeight = this.element.getHeight();                               
		this.innerDiv.style.paddingTop = this.initialHeight+'px';                    
  		this.innerDiv.style.paddingBottom = this.initialHeight+'px';	             
	},                                                                             
	                                                                               
	executeScroll: function() {                                                    
		if (this.element.scrollTop>=(this.element.scrollHeight-this.initialHeight)) {
			this.element.scrollTop=0; 	                                               
		}                                                                            
		this.element.scrollTop = this.element.scrollTop+1;	                         
	}                                                                              
                                                                                 
});                                                                              
