var scrollerRunning		= false;
var scrollerCurrentPos	= 0;

document.observe("dom:loaded", function() {
	$$('a.left').invoke('observe', 'click', observeScrollerScrollsBy);
	$$('a.right').invoke('observe', 'click', observeScrollerScrollsBy);

	$$('a.scrollNav').invoke('observe', 'click', observeScrollerScrollNav);

});

function observeScrollerScrollsBy(event) {
	if (!scrollerRunning) {
		event.stop();
		element		= event.element();
		direction	= element.readAttribute('class');
		parentId	= element.readAttribute('rel');
		
		scrollerScroll(parentId, direction);
		
	}
	
}

function observeScrollerScrollNav(event) {
	event.stop();
	
	if (!scrollerRunning) {
		element	= event.element();
		position= element.readAttribute('rel');

		parts = position.split('_');

		position = parts[1];
		parentId = parts[0];

		if (position != scrollerCurrentPos) {
			if (position < scrollerCurrentPos) {
				direction = 'left';
				
			} else {
				direction = 'right';
				
			}
			
			stepsCount = Math.abs(position - scrollerCurrentPos);
			scrollerScroll(parentId, direction, stepsCount);
			
		}
		
	}
	
}

function scrollerScroll(parentId, direction, stepsCount) {
	if (undefined == stepsCount) {
		stepsCount = 1;
		
	}
	
	childs = $$('#' + parentId + ' div.scrollerMooItem');
	maxStep = childs.length;
	
	if (0 < maxStep) {
		width = childs[0].getWidth();
		
		if ('right' == direction) {
			if (scrollerCurrentPos+1 < maxStep) {
				scrollerCurrentPos = scrollerCurrentPos + (1 * stepsCount);
				
			} else {
				return;
				
			}
			
			step = -width * stepsCount;
			
		} else {
			if (scrollerCurrentPos-1 >= 0) {
				scrollerCurrentPos = scrollerCurrentPos - (1 * stepsCount);
				
			} else {
				return;
				
			}
			
			step = width * stepsCount;
			
		}
		
		new Effect.Move($(parentId), {
			'x'				: step, 
			'y'				: 0,
			'duration'		: 1,
			'mode'			: 'relative',
			'beforeStart'	: function() {scrollerRunning = true},
			'afterFinish'	: function() {
				scrollerRunning = false;
				refreshScrollerNavSelected();
			}
		});

	}
	
}

function refreshScrollerNavSelected() {
	$$('a.scrollNav').each(function (item) {
		position= item.readAttribute('rel');
		parts	= position.split('_');
		position= parts[1];
		
		if (
			(position == scrollerCurrentPos)
			&& (!item.hasClassName('selected'))
		) {
			item.addClassName('selected');
			
		} else if (
			(position != scrollerCurrentPos)
			&& (item.hasClassName('selected'))
		) {
			item.removeClassName('selected');
			
		}
	});

}
