var contentSlider = Class.create (
{
	currentPosition: 1,
	initialize: function(handleClassName, slideContainerId, dirBtnObj)
	{
		var self = this;
		this.active = false;
		this.slideContainerId = slideContainerId;
		var naviID = 'products-navigation' + slideContainerId.replace(/slider/g, '');
		var AllElem = $$('.products-slider #' + naviID + ' .' + handleClassName);

		var switchy = slideContainerId.replace(/slider-/g, '');
		var slideClass = '';
		switch(switchy)
		{
			case 'threes':
				slideClass = 'three';
				break;
			case 'images':
				slideClass = 'image';
				break;
			case 'packages':
			case 'normal':
				slideClass = 'product';
				break;
			default:
				slideClass = 'product';
				break;
		}
		var Slides = $$('#' + slideContainerId + ' .' + slideClass);
		
		AllElem.each(function(elem, index)
		{
			$(elem).observe('click', function()
			{
				if(self.active == false)
				{
					$($$('.products-slider #' + naviID + ' .active')[0]).removeClassName('active');
					self.slideElem(AllElem.indexOf(this), slideContainerId, Slides[AllElem.indexOf(this)]);
					$(elem).addClassName('active');
				}
			});
		});
		
		if(dirBtnObj)
		{
			Event.observe(dirBtnObj.nextBtnId, 'click', function()
			{
				if(self.active == false)
				{
					if((self.currentIndex+1) == AllElem.length)
					{
						$($$('.products-slider #' + naviID + ' .active')[0]).removeClassName('active');
						self.slideElem(0, slideContainerId, Slides[0]);
						$(AllElem[0]).addClassName('active');
					}
					else
					{
						$($$('.products-slider #' + naviID + ' .active')[0]).removeClassName('active');
						self.slideElem((self.currentIndex+1), slideContainerId, Slides[(self.currentIndex+1)]);
						$(AllElem[(self.currentIndex)]).addClassName('active');
					}
				}
			});
			
			Event.observe(dirBtnObj.prevBtnId, 'click', function()
			{
				if(self.active == false)
				{
					if((self.currentIndex-1) == -1)
					{
						$($$('.products-slider #' + naviID + ' .active')[0]).removeClassName('active');
						self.slideElem((AllElem.length-1), slideContainerId, Slides[(AllElem.length-1)]);
						$(AllElem[(AllElem.length-1)]).addClassName('active');
					}
					else
					{
						$($$('.products-slider #' + naviID + ' .active')[0]).removeClassName('active');
						self.slideElem((self.currentIndex-1), slideContainerId, Slides[(self.currentIndex-1)]);
						$(AllElem[(self.currentIndex)]).addClassName('active');
					}
				}
			});
			
			if(dirBtnObj.slideBtnsObj)
			{
				this.setNumberedBtnsActions(dirBtnObj.slideBtnsObj);
				this.slideBtnsObj = dirBtnObj.slideBtnsObj;
			}
		}
		
		this.currentLength = 0;
		this.currentIndex = 0;
	},
	
	setNumberedBtnsActions: function(slideBtnsObj)
	{
		var self = this;
		this.numberedBtnsPosition = 0;
		if($(slideBtnsObj.btnLeft))
			$(slideBtnsObj.btnLeft).observe('click', function()
			{
				self.slideBtns(0, slideBtnsObj);
			});
			
		if($(slideBtnsObj.btnRight))
			$(slideBtnsObj.btnRight).observe('click', function()
			{
				self.slideBtns(1, slideBtnsObj);
			});
	},
	
	slideBtns: function(direction, slideBtnsObj)
	{
		var currentPosition = this.numberedBtnsPosition;
		var restricted = slideBtnsObj.btnsRestrict;
		var btnsCount = slideBtnsObj.btnsCount;
		var maxPosition = Math.floor(btnsCount / restricted);
		var numberedBtnsPositionIndex = Math.floor(parseFloat(this.currentPosition / slideBtnsObj.btnsRestrict));
		
		if(btnsCount > restricted)
		{
			if(currentPosition < maxPosition)
				this.numberedBtnsPosition++;
			else if(currentPosition == maxPosition)
				this.numberedBtnsPosition--;
			else
				this.numberedBtnsPosition = 0;
			
			var numberedBtnsSlideOffset = ((slideBtnsObj.btnNumberWidth*slideBtnsObj.btnsRestrict)*this.numberedBtnsPosition);
				$(slideBtnsObj.btnNumberContainer).setStyle( { left:-(numberedBtnsSlideOffset)+'px' } );
		}
		
		
	},
	
	// 0, #slider, #slider:firstChild
	slideElem: function(lengthNr, slideId, contentObj)
	{
		var self = this;
		this.currentIndex = lengthNr;
		var slideLengthE = contentObj.offsetWidth;
		lengthNr = lengthNr * eval(contentObj.offsetWidth);
		var StandardLength = contentObj.offsetWidth;
		var slideNr = lengthNr / StandardLength;

		if(slideNr == this.currentLength) { return false;}
		if(slideNr == (this.currentLength+1))
		{
			var actLength = -(StandardLength);
		}
		else if(slideNr > (this.currentLength+1))
		{
			var actLength = -((slideNr*StandardLength)-(this.currentLength*StandardLength));
		}
		if(slideNr == (this.currentLength-1))
		{
			var actLength = (StandardLength);
		}
		else if(slideNr < (this.currentLength-1))
		{
				var actLength = -eval($(slideId).getStyle('left').replace('px','')) - eval(slideNr*StandardLength);
		}
		this.currentLength = lengthNr/StandardLength;
		this.currentPosition = this.currentLength;
		
		if(typeof this.slideBtnsObj != 'undefined')
		{
			var slideBtnsObj = this.slideBtnsObj;
			var numberedBtnsPositionIndex = Math.floor(parseFloat(this.currentLength / slideBtnsObj.btnsRestrict));
			this.numberedBtnsPosition = numberedBtnsPositionIndex;
			var numberedBtnsSlideOffset = ((slideBtnsObj.btnNumberWidth*slideBtnsObj.btnsRestrict)*numberedBtnsPositionIndex);
				$(slideBtnsObj.btnNumberContainer).setStyle( { left:-(numberedBtnsSlideOffset)+'px' } );			
		}

			
		new Effect.Move(slideId,
		{
			x: actLength,
			mode: 'relative',
			duration: 0.4,
			transition: Effect.Transitions.sinoidal,
			queue: { position : 'end', scope: 'contentSlider'},
			beforeStart: function()
			{
				self.active = true;
			},
			afterFinish: function()
			{
				self.active = false;
			}
		});
	}
});
Event.observe(window, 'load', function()
{
	if ($('slider-normal'))
	{
		new contentSlider('goto-product', 'slider-normal', {
			prevBtnId: 'previous-product-normal',
			nextBtnId: 'next-product-normal'
		});
	}
	if ($('slider-packages'))
	{
		new contentSlider('goto-product', 'slider-packages', {
			prevBtnId: 'previous-product-packages',
			nextBtnId: 'next-product-packages'
		});
	}
	if ($('slider-threes'))
	{
		new contentSlider('goto-product', 'slider-threes', {
			prevBtnId: 'previous-product-threes',
			nextBtnId: 'next-product-threes'
		});
	}
	if ($('slider-images'))
	{
		new contentSlider('goto-image', 'slider-images', {
			prevBtnId: 'previous-product-images',
			nextBtnId: 'next-product-images',
			slideBtnsObj: 
			{
				btnLeft: 'leftArrow', // Id på element (venstrepil)
				btnRight: 'rightArrow', // Id på element (høyrepil)
				btnsCount : window.imageListsCount, // Blir skrevet ut i bildegalleri-mal i script tag!
				btnsRestrict: 33, // antall knapper det begrenses til
				btnNumberWidth: 15.7, // Bredden på en knapp i px
				btnNumberContainer: 'products-navigation-images'
			}
		});
	}
});