
	
/*** used to slide through elements 
	Rotator.init('.mupDisplayImageContainer');
***/
var Rotator = {
	identifierItemContainer: '.collectionOverviewSlider',
	identifierNavLeft:       '.boxNavigationLeft',
	identifierNavRight:      '.boxNavigationRight',
	identifierThumbnailNavContainer: '.boxNavigationContainerThumbnailContainer',
	classNavLeftOff:  'boxNavigationLeftOff',
	classNavRightOff: 'boxNavigationRightOff',
	classNavLeftOn:   'boxNavigationLeftOn',
	classNavRightOn:  'boxNavigationRightOn',
	classThumbnailNavOn: 'boxNavigationActive',

	init: function(container) {

		// check if we have initialized this one already once
		if ($(container).data('rotatorisloaded') == '1') {
			return;
		}
		$(container).data('rotatorisloaded', '1');
		
		// sliding through the images
		$(container).each(function() {
			var innerDiv = $(Rotator.identifierItemContainer, this);
			Rotator.slide(innerDiv, 'start');
			$(Rotator.identifierNavLeft, this).click(function() {
				Rotator.slide(innerDiv, 'left');
				return false;
			});
			$(Rotator.identifierNavRight, this).click(function() {
				Rotator.slide(innerDiv, 'right');
				return false;
			});
		});
	},

	slide: function(innerDiv, direction) {
		var posLeft = parseInt($(innerDiv).css('marginLeft'));
		var itemWidth = parseInt($(innerDiv).children(':first').outerWidth(true));
		var totalWidth = $(innerDiv).children().length * itemWidth;
		var totalItems = $(innerDiv).children().length;
		var currentItemNumber = newItemNumber = Math.floor(Math.abs(posLeft / itemWidth));
		var numItemsVisible = Math.round($(innerDiv).parent().outerWidth(true) / itemWidth);
		var maxLeftMargin = parseInt('-' + (totalWidth - (numItemsVisible * itemWidth)));

		var arrowLeftDiv = $(Rotator.identifierNavLeft, $(innerDiv).parent());
		var arrowRightDiv = $(Rotator.identifierNavRight, $(innerDiv).parent());

		switch (direction) {
			case 'start':
				$(innerDiv).animate({'marginLeft': '0px'}, 'fast');
				$(arrowLeftDiv).addClass(Rotator.classNavLeftOff).removeClass(Rotator.classNavLeftOn);
				$(arrowRightDiv).addClass(Rotator.classNavRightOn).removeClass(Rotator.classNavRightOff);
				newItemNumber = 0;
				break;

			case 'end':
				$(innerDiv).animate({'marginLeft': maxLeftMargin + 'px'}, 'fast');
				$(arrowLeftDiv).removeClass(Rotator.classNavLeftOff).addClass(Rotator.classNavLeftOn);
				$(arrowRightDiv).removeClass(Rotator.classNavRightOn).addClass(Rotator.classNavRightOff);
				newItemNumber = totalItems-1;
				break;

				// allow slideLeft as long as the first item is not visible yet
			case 'left':
				if (currentItemNumber > 0) {
					posLeft = parseInt('-' + (currentItemNumber * itemWidth)) + itemWidth;
					$(arrowLeftDiv).unbind('click');
					$(innerDiv).animate({
						'marginLeft': posLeft + 'px'
					}, 'fast', function() {
						$(arrowLeftDiv).click(function() {
							Rotator.slide(innerDiv, 'left');
							return false;
						});
					});
					$(arrowRightDiv).addClass(Rotator.classNavRightOn).removeClass(Rotator.classNavRightOff);
					newItemNumber = currentItemNumber-1;
				}
				if (posLeft >= 0) {
					$(arrowLeftDiv).addClass(Rotator.classNavLeftOff).removeClass(Rotator.classNavLeftOn);
				}
				break;

				// allow slideRight as long as the last item is not visible yet
			case 'right':
				if (Math.abs(posLeft) < (Math.abs(maxLeftMargin))) {
					posLeft = parseInt('-' + (currentItemNumber * itemWidth)) - itemWidth;
					$(arrowRightDiv).unbind('click');
					$(innerDiv).animate({
						'marginLeft': (posLeft) + 'px'
					}, 'fast', function() {
						$(arrowRightDiv).click(function() {
							Rotator.slide(innerDiv, 'right');
							return false;
						});
					});
					$(arrowLeftDiv).addClass(Rotator.classNavLeftOn).removeClass(Rotator.classNavLeftOff);
					newItemNumber = currentItemNumber+1;
				}
				if (Math.abs(posLeft) >= Math.abs(maxLeftMargin)) {
					$(arrowRightDiv).addClass(Rotator.classNavRightOff).removeClass(Rotator.classNavRightOn);
				}
				break;

			default:
				var itemToGo = parseInt(direction);
				if (itemToGo != 'NaN') {
					newItemNumber = itemToGo;
					if (currentItemNumber < itemToGo) {
						posLeft -= (itemToGo - currentItemNumber) * itemWidth;

						// go right
						$(innerDiv).animate({
							'marginLeft': posLeft + 'px'
						}, 'fast');

						if (Math.abs(posLeft) >= Math.abs(maxLeftMargin)) {
							$(arrowRightDiv).addClass(Rotator.classNavRightOff).removeClass(Rotator.classNavRightOn);
						}

					} else if (currentItemNumber > itemToGo) {
						posLeft += (currentItemNumber - itemToGo) * itemWidth;

						// go left
						$(innerDiv).animate({
							'marginLeft': posLeft + 'px'
						}, 'fast');

						if (posLeft >= 0) {
							$(arrowLeftDiv).addClass(Rotator.classNavLeftOff).removeClass(Rotator.classNavLeftOn);
						}

					}
				}
		}

		// update navigation
		if (currentItemNumber != newItemNumber) {
			var navContainer = $(Rotator.identifierThumbnailNavContainer);
			$('.' + Rotator.classThumbnailNavOn, navContainer).removeClass(Rotator.classThumbnailNavOn);
			navContainer.children().eq(newItemNumber).addClass(Rotator.classThumbnailNavOn);
		}
	}	
};

