﻿if (typeof(ARL) == "undefined"){ ARL={}; }

ARL.ImageSlider={
	slideArea:"slidearea",
	slideItems:"slideitems",
	slideSubitems:"item",
	sliderVal:0,
	animationId:false,
	viewportWidth:520,
	itemsWidth:510,
	itemsLength:1,
	arrowScrollAmount:1,
	visibleItems:1,
	sliderOffset:291,

	init:function(setupArgs) {
		$("slidearea").style.overflow = "hidden";

		this.viewportWidth      = $("slidearea").getWidth();
		this.itemsLength        = $$("#slideitems .item").length;
		this.itemsWidth         = 510*this.itemsLength;
		this.offsetContentWidth = -1*(this.itemsWidth-this.viewportWidth);
		this.arrowScrollAmount  = 1/((this.itemsLength)-this.visibleItems);

		// Set the with of slideitems-container to the width of all items in it
		$("slideitems").style.width = this.itemsWidth+"px";

		// Hide the left-arrow at first because we are at the left
		$("slideleft").hide();

		// Hide the right-arrow if there is no more than one image in the slidearea
		if (this.itemsLength <= 1) {
			$("slideright").hide();
		}

		Event.observe("slideleft", "mouseup", function() {
			ARL.ImageSlider.left();
		});

		Event.observe("slideright", "mouseup", function() {
			ARL.ImageSlider.right();
		});

		$("slideitems").onselectstart = function() {
				return false;
		};

		$("slideitems").unselectable = "on";
		$("slideitems").style.MozUserSelect = "none";
	},

	animateSlide:function(toX) {
		if (toX > 1) toX = 1;
		if (toX < 0) toX = 0;

		ARL.ImageSlider.sliderVal = toX;

		window.clearInterval(ARL.ImageSlider.animationId);

		var w = ARL.ImageSlider.offsetContentWidth;
		var stopPoint = w*toX;
	
		ARL.ImageSlider.animationId = window.setInterval(function() {
			var sliderPos = parseInt($("slideitems").getStyle("left")) || 0;

			var x = ARL.ImageSlider.calculateDecel(sliderPos, stopPoint);

			$("slideitems").style.left = x+"px";
			
			if (x == stopPoint) {
				window.clearInterval(ARL.ImageSlider.animationId);
			}
		}, 30);

		if (toX != 0) {
			$("slideleft").show();
		} else {
			$("slideleft").hide();
		}

		if (toX == 1) {
			$("slideright").hide();
		} else {
			$("slideright").show();
		}
	},

	left:function() {
		var pos = ARL.ImageSlider.sliderVal-ARL.ImageSlider.arrowScrollAmount;

		if (pos.toString().indexOf("e") != -1) {
			pos = 0;
		}

		ARL.ImageSlider.animateSlide(pos);
	},
	
	right:function() {
		ARL.ImageSlider.animateSlide(ARL.ImageSlider.sliderVal+ARL.ImageSlider.arrowScrollAmount);
	},

	calculateDecel:function(from, to) {
		var n=from-Math.floor((from-to)*.4);
		if (Math.abs(from-to)<4) return to;
		else return n;
	}
};