/**
 * cmfScroll! News Ticker Scroller
 *
 * Code: Sergey Kondratenko
 * Copyright (c) 2010, Semantica-IT Ltd. http://www.semantica.ch
 * version 1.0
 */
cmfScroll = Class.create(
{
	initialize: function(el) {
		this.timer = null;
		this.element = $(el);
		this.element.addClassName("newsticker");
		this.element.wrap('div', { 'class': 'mask' });
		this.mask = this.element.up('div.mask');
		this.element.up('div').wrap('div', { 'class': 'tickercontainer' });
		this.container_width = this.element.up('div').getWidth()
		var width = this.element.up('div').up('div').getWidth();
		var stripWidth = 0;
		this.element.immediateDescendants().each(function(el){
			stripWidth += el.getWidth();
		});
		this.stripwidth = stripWidth;
		this.extendHTML = this.element.innerHTML;
		this.element.setStyle({ "width" : this.stripwidth + "px" });
		this.element
			.observe("mouseenter", this.stop.bindAsEventListener(this))
			.observe("mouseleave", this.start.bindAsEventListener(this));
		this.speed = 50;
		this.element.setStyle({"left" : "0px"});
		this.start();
	},
	scroll: function() {
		var newLeft = parseInt(this.element.getStyle("left")) - 1
		this.element.setStyle({"left" :  newLeft + "px"});
		if (this.element.getWidth() + newLeft < this.mask.getWidth())
		{
			this.element.setStyle({ "width" : this.element.getWidth() + this.stripwidth + "px"});
			this.element.innerHTML = this.element.innerHTML + this.extendHTML; 
		}
		this.start();
	},
	start: function() {
		this.timer = setTimeout(this.scroll.bind(this), this.speed);
	},
	stop: function() {
		if (this.timer)
		{
			clearTimeout(this.timer);
			this.timer = null;
		}
	}
});
