var tickerId = '';

function wmxTicker()
{
	//Private variables
	var _contentHeight = 0;
	var _contentWidth = 0;
	var _element0 = null;
	var _element1 = null;
	var _element2 = null;
	var _heightOffset = 0;
	var _initialized = false;
	var _tempSpeed = 0;
	var _widthOffset = 0;
	var tempContentS = null;
	var tempContentD = null;
	var tempContentElementS = "span";
	var tempContentElementD = "div";
	var _currentPos = 0;
	
	//Public properties
	this.content = '';
	this.direction = 2;
	this.height = '';
	this.name = '';	
	this.speed = 1;
	this.width = '';
	this.timer = 0;

	this.initialize = function()
	{
		with (document)
		{
			write("<div id=\"" + this.name + "_Ticker\" style=\"position:relative; overflow: hidden;\">");
			write("<div id=\"" + this.name + "_Element0\" style=\"left:0;position:absolute;width:100%;top:0;z-index:3;text-align:center\" onmouseover=\"" + this.name + ".stop()\" onmouseout=\"" + this.name + ".start()\">");
			write("<div id=\"" + this.name + "_Element1\" style=\"left:0;position:absolute;width:100%;top:0;z-index:2\"></div>");
			write("<div id=\"" + this.name + "_Element2\" style=\"left:0;position:absolute;width:100%;top:0;z-index:1\"></div>");
			write("</div>");
			write("</div>");
		}
		
		_element0 = new cmxElement();
		_element0.setId(this.name + "_Element0");
		_element1 = new cmxElement();
		_element1.setId(this.name + "_Element1");
		_element2 = new cmxElement();
		_element2.setId(this.name + "_Element2");
		
		tickerId = _element1.id;
		
		if (this.direction < 3)
		{
			this.content = "<nobr>" + this.content + "</nobr>";
			_widthOffset = 100;
			_heightOffset = 10;
		}
		else
		{
			_heightOffset = 100;
		}
		
		tempContentS = document.createElement(tempContentElementS);
		tempContentD = document.createElement(tempContentElementD);
		tempContentS.innerHTML = tempContentD.innerHTML = this.content;
		tempContentS.style.visibility = "hidden";
		tempContentD.style.visibility = "hidden";					
		
		if (this.width != '')
		{
			tempContentS.style.width = this.width + "px";
			tempContentD.style.width = this.width + "px";
		}
		if (this.height != '')
		{
			tempContentS.style.height = this.height + "px";
			tempContentD.style.height = this.height + "px";
		}
		
		document.body.appendChild(tempContentS);
		document.body.appendChild(tempContentD);
		
		_contentWidth = (tempContentS.offsetWidth > tempContentD.offsetWidth) ? tempContentS.offsetWidth : tempContentD.offsetWidth;
		_contentHeight = (tempContentS.offsetWidth > tempContentD.offsetWidth) ? tempContentS.offsetHeight : tempContentD.offsetHeight;
		
		_element1.element.innerHTML = _element2.element.innerHTML = this.content;
		if (_element1.element.scrollWidth > _contentWidth)
		{
			_contentWidth = _element1.element.scrollWidth;
		}
		
		_contentHeight = _contentHeight + _heightOffset;
		_contentWidth = _contentWidth + _widthOffset;
		storedWidth = _contentWidth;
		storedOffsetWidth = _contentWidth;
		
		ticker = new cmxElement();
		ticker.setId(this.name + "_Ticker");
		ticker.style.height = (this.height != '' ? this.height : parseInt(_contentHeight)) + "px";
		ticker.style.width = this.width != '' ? this.width + "px" : "100%";
		
		document.body.removeChild(tempContentS);
		document.body.removeChild(tempContentD);
		
		switch (this.direction)
		{
			case 3:
			case 4:
				_contentHeight = _contentHeight - _heightOffset;				
				ticker.style.height = _contentHeight + "px";
				_element2.style.top = _contentHeight + "px";
				break;
			default:
				_element2.style.left = _contentWidth + "px";
		}
		
		_tempSpeed = this.speed;

		_initialized = true;
	};
	
	this.scroll = function()
	{
		switch (this.direction)
		{
			case 1: //Left to Right
				_currentPos = (_currentPos + this.speed) % _contentWidth;
				_element0.style.left = _currentPos - _contentWidth + "px";
				break;
			case 3: //Top to Bottom
				_currentPos = (_currentPos + (this.speed / 4)) % _contentHeight;
				_element0.style.top = _currentPos - _contentHeight + "px";				
				break;
			case 4: //Bottom to Top					
				_currentPos = (_currentPos - (this.speed / 4)) % _contentHeight;
				_element0.style.top = _currentPos + "px";				
				break;
			default: //Right to Left
				_currentPos = (_currentPos - this.speed) % _contentWidth;
				_element0.style.left = _currentPos + "px";
		}
	};

	this.start = function()
	{
	   if (cmxbrowser.supportsDOM)
		{
		   if (!_initialized)
		   {
			   this.initialize();
			   _initialized = true;
			   if (this.speed != 0)
			   {		    
					this.timer = setInterval(this.name + ".scroll();", 30);
			   }
		   }

		   this.speed = _tempSpeed;
		}
	};

	this.stop = function()
	{
		_tempSpeed = this.speed;
		this.speed = 0;
	};		
	
}

