/*
* Horizontal Scroll
* @Author: Alexander Gavazov
* @Date: 2007-11-28
*/


function HorizontalScroll(containerId, contentId, inControlId, outControlId, paggingId, offsetSize, oneElementSize, duration)
{
	// Vars
	var container = document.getElementById(containerId);
	var content = document.getElementById(contentId);
	var inControl = document.getElementById(inControlId);
	var outControl = document.getElementById(outControlId);
	var pagging = document.getElementById(paggingId);
	var offsetSize = (offsetSize) ? offsetSize : 0;
	var oneElementSize = (oneElementSize) ? oneElementSize : 0;
	var duration = (duration) ? duration : 2;
	var Calculator = new Tween;
	var moveFunction = Tween.strongEaseOut;
	var pages = 1;
	var currentPage = 1;

	var properties = {
		containerSize: 0,
		contentSize: 0
	};


	// Init
	init()


	// Functions
	function init()
	{
		elementProperties();

		setControls();

		setArrowStyle(1);

		createPagging();

		setPaggingData();
	}

	function elementProperties()
	{
		properties.containerSize = container.offsetWidth;

		// Set content width
		container.style.width = '99999px';
		content.style.position = 'absolute';

		properties.contentSize = content.offsetWidth;
		content.style.width = properties.contentSize + 'px';
		container.style.width = properties.containerSize + 'px';

		pages = Math.ceil((properties.contentSize - oneElementSize) / properties.containerSize);
	}

	function setControls()
	{
		inControl.onclick = moveIn;
		outControl.onclick = moveOut;
	}

	function moveIn()
	{
		gotoPage(currentPage + 1);
	}

	function moveOut()
	{
		gotoPage(currentPage - 1);
	}

	function gotoPage(nextPage)
	{
		if(nextPage > pages || nextPage == 0)
		{
			return;
		}

		// Out script
		stopTooltip = true;

		var start = (currentPage - 1) * (properties.containerSize + offsetSize) * -1;
		var end = (nextPage - 1) * (properties.containerSize + offsetSize) * -1;

		Calculator.init(content.style, 'left', moveFunction, start, end, duration, 'px');
		Calculator.onMotionFinished = function() { stopTooltip = false; };
		Calculator.start();

		currentPage = nextPage;

		setPaggingData();

		setArrowStyle(nextPage);
	}

	function setArrowStyle(setPage)
	{
		if(pages <= 1)
		{
			thisSetOpacity(inControl, 40);
			inControl.style.cursor = 'default';

			thisSetOpacity(outControl, 40);
			outControl.style.cursor = 'default';
		}
		else if(setPage == pages)
		{
			thisSetOpacity(inControl, 40);
			inControl.style.cursor = 'default';

			thisSetOpacity(outControl, 100);
			outControl.style.cursor = 'pointer';
		}
		else if(setPage == 1)
		{
			thisSetOpacity(outControl, 40);
			outControl.style.cursor = 'default';

			thisSetOpacity(inControl, 100);
			inControl.style.cursor = 'pointer';
		}
		else
		{
			thisSetOpacity(outControl, 100);
			outControl.style.cursor = 'pointer';

			thisSetOpacity(inControl, 100);
			inControl.style.cursor = 'pointer';
		}
	}

	function createPagging()
	{
		if(pages > 1)
		{
			for(var i = 1; i <= pages; i++)
			{
				var page = document.createElement('a');
				page.innerHTML = i;
				page.onmouseover = function() { this.className += ' over'; };
				page.onmouseout = function() { this.className = this.className.replace(/over/, ''); };
				pagging.appendChild(page);
			}
		}
	}

	function paggingGoToPgae()
	{
		gotoPage(parseInt(this.innerHTML));
	}

	function setPaggingData()
	{
		var elements = pagging.getElementsByTagName('A');
		for(var i = 0; i < elements.length; i++)
		{
			if(currentPage == elements[i].innerHTML)
			{
				elements[i].onclick = '';
				elements[i].className = 'active';
			}
			else
			{
				elements[i].onclick = paggingGoToPgae;
				elements[i].className = 'unactive';
			}
		}

		pagging.style.marginLeft = elements.length * 18 / -2 + 'px';
	}

	function thisSetOpacity(element, opacity)
	{
		element.style['opacity'] = opacity / 100;
		if(element.filters)
		{
			element.style.filter = 'alpha(opacity=' + opacity + ')';
		}
	}
}
