function VisualScroll(containerId, contentId, inControlId, outControlId)
{
	// Vars
	var direction = 'vertical';
	var directionName = (direction == 'vertical') ? 'left' : 'top';
	var durationDefault = 5;
	var duration = durationDefault;
	var container = document.getElementById(containerId);
	var content = document.getElementById(contentId);
	var inControl = document.getElementById(inControlId);
	var outControl = document.getElementById(outControlId);
	var Calculator = new Tween;
	var moveFunction = '';
	var offsetPlus = 18;

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


	// Init
	init()


	// Functions
	function init()
	{
		setTimeout(elementProperties, 300);

		setControls();

		Calculator.onMotionChanged = onChange;
	}

	function elementProperties()
	{
		properties.containerSize = (direction == 'vertical') ? container.offsetWidth : container.offsetHeight;

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

		properties.contentSize = (direction == 'vertical') ? content.offsetWidth : content.offsetHeight;
		properties.contentSize += offsetPlus;

		content.style.width = properties.contentSize + 'px';
//		container.style.width = properties.containerSize + 'px';
		container.style.width = '100%';

		properties.contentRouteSize = properties.containerSize - properties.contentSize;

		properties.contentPosition = (parseInt(content.style[directionName])) ? parseInt(content.style[directionName]) : 0;
	}

	function setControls()
	{
		inControl.onmouseover = moveIn;
		inControl.onmouseout = moveStop;

		outControl.onmouseover = moveOut;
		outControl.onmouseout = moveStop;
	}

	function calculateDuration(destination)
	{
		duration = durationDefault;	
		
		properties.contentPosition = (Calculator._pos) ? Calculator._pos : 0;

		if(destination == 'in')
		{
			var remain = properties.contentPosition - properties.contentRouteSize;
		}
		else if(destination == 'out')
		{
			var remain = properties.contentPosition;
		}

		duration = (durationDefault / properties.contentRouteSize) * remain;

		if(duration < 0)
		{
			duration = duration * -1;
		}
		else if(!duration)
		{
			duration = durationDefault;
			Calculator.stop();
		}
		
	}

	function onChange(evt)
	{
	}
	
	function moveIn()
	{
		calculateDuration('in');
		Calculator.init(content.style, directionName, moveFunction, properties.contentPosition, properties.contentRouteSize, duration, 'px');
		Calculator.start();
	}
	
	function moveOut()
	{
		calculateDuration('out');
		Calculator.init(content.style, directionName, moveFunction, properties.contentPosition, 0, duration, 'px');
		Calculator.start();
	}

	function moveStop()
	{
		Calculator.stop();
		properties.contentPosition = Calculator._pos;
	}
}