var marquee = {
	list : null,
	
	defaultInterval : 10,
	
	start : function ()
	{
		window.old_onload = window.onload;
		window.onload = function ()
		{
			marquee.init();
			if(window.old_onload) window.old_onload();
		}
	},
	
	init : function ()
	{
		marquee.list = marquee.getMarquees();
		
		for(var i = 0; i < marquee.list.length; i++)
		{
			marquee.setupMarquee(marquee.list[i]);
		}
		
		setInterval("marquee.scrollMarquees()", marquee.defaultInterval);
	},
	
	getMarquees : function (el)
	{
		if(document.getElementsByClassName) return document.getElementsByClassName('marquee');
		
		var result = new Array();
		
		if(!el) el = document;
		
		if(el.className && el.className.search(/\s?marquee\s?/) > -1) result.push(el);
		
		if(el.childNodes) for(var i = 0; i < el.childNodes.length; i++)
		{
			result = result.concat(marquee.getMarquees(el.childNodes.item(i)));
		}
		
		return result;
	},
	
	setupMarquee : function (el)
	{
		var position = marquee.getStyle(el, 'position');
		if(!position) return false;
		
		if(position == 'static') el.style.position = 'relative';
		el.style.overflow = 'hidden';
		
		// IE 6 fix
		if(marquee.getStyle(el, 'width') == 'auto') el.style.width = '100%';
		
		el.innerHTML = '<span>' + el.innerHTML + '</span>&nbsp;';
		
		el.firstChild.style.whiteSpace = 'nowrap';
		el.firstChild.style.position = 'absolute';
		el.firstChild.style.top = '0px';
		el.firstChild.style.left = el.offsetWidth + 'px';
		
		return true;
	},
	
	scrollMarquees : function ()
	{
		for(var i = 0; i < marquee.list.length; i++)
		{
			var left = parseInt(marquee.list[i].firstChild.style.left);
			
			marquee.list[i].firstChild.style.left = (left - 1) + 'px';
			
			if(left + marquee.list[i].firstChild.offsetWidth < 0) marquee.list[i].firstChild.style.left = marquee.list[i].offsetWidth + 'px';
		}
	},
	
	getStyle : function (el, styleProp)
	{
		if(el.currentStyle) return el.currentStyle[styleProp];
		
		if(window.getComputedStyle) return document.defaultView.getComputedStyle(el, null).getPropertyValue(styleProp);
	
		return null;
	}
};
marquee.start();

