function Scroller_Init(id, contentHeight, loadId)
{
	var scrollerElement = document.getElementById(id);
	
	var contentWidth = 0;
	for (var i = 0; i < scrollerElement.childNodes.length; i++)
	{
		if (scrollerElement.childNodes[i].nodeType == 1)
		{
			contentWidth = contentWidth + scrollerElement.childNodes[i].offsetWidth;
		}
	}

	var innermostCount = Math.round((scrollerElement.offsetWidth / contentWidth) * 2 + 0.5);
	if (innermostCount < 2) { innermostCount = 2; }

	scrollerElement.style.overflow = "hidden";
	scrollerElement.style.height = contentHeight + "px";
					
	var scrollerInnerElement = document.createElement("div");
	scrollerInnerElement.style.width = (contentWidth * innermostCount) + "px";
	scrollerElement.appendChild(scrollerInnerElement);
	
	var scrollerInnermostElement = document.createElement("div");
	scrollerInnermostElement.style.display = "inline";
	scrollerInnermostElement.style.width = contentWidth + "px";
	scrollerInnerElement.appendChild(scrollerInnermostElement);
	
	while (scrollerElement.childNodes.length > 1)
	{
		var childElement = scrollerElement.firstChild;
		scrollerInnermostElement.appendChild(childElement);
	}
	
	for (var i = 0; i < innermostCount; i++)
	{
		scrollerInnerElement.appendChild(scrollerInnermostElement.cloneNode(true));
	}
	
	var mouseOverHandler = function(e)
	{
		var posx = 0;
		
		if (!e) var e = window.event;
		if (e.pageX)
		{
			posx = e.pageX;
		}
		else if (e.clientX)
		{
			posx = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
		}
		
		posx = posx - document.getElementById(id).offsetLeft;
		
		speedCoefficient = (posx / scrollerElement.offsetWidth) * 2 - 1;
	};
	
	if (scrollerElement.addEventListener) { scrollerElement.addEventListener('mouseover', mouseOverHandler, false); }
	else { scrollerElement.attachEvent('onmouseover', mouseOverHandler, false); }
	
	var clickHandler = function(e)
	{
		speedCoefficient = 0;
	};
	
	if (scrollerElement.addEventListener) { scrollerElement.addEventListener('click', clickHandler, false); }
	else { scrollerElement.attachEvent('onclick', clickHandler, false); }
	
	Scroller__Scroll(id, 0, contentWidth, 30, 1);
	
	scrollerElement.style.visibility = "visible";
	
	if (loadId) { document.getElementById(loadId).style.display = "none"; }
}

var Scroller__DefaultSpeedCoefficient = 0.5;
var speedCoefficient = Scroller__DefaultSpeedCoefficient;

function Scroller__Scroll(id, next, max, delay, increment)
{
	if (next < 0) { next = max; }
	if (next > max) { next = 0; }

	var element = document.getElementById(id).firstChild; 
	element.style.marginLeft = "-" + next + "px";

	var maxDelay = 70;
	var minDelay = 2;
	
	if (speedCoefficient < 0)
	{
		delay = speedCoefficient * (maxDelay - minDelay) + maxDelay;
	}
	else
	{
		delay = speedCoefficient * (minDelay - maxDelay) + maxDelay;
	}
	
	increment = speedCoefficient * 2;
	
	var command = "Scroller__Scroll('" + id + "'," + (next + increment) + "," + max + "," + delay + "," + increment + ")";
	
	window.setTimeout(command, delay);
}