var SlideScrollLinkWidth = 80;
var SlideScrollPrevImage = "images/btn_prev.png";
var SlideScrollNextImage = "images/btn_next.png";

Event.DOMReady(prepareSlideScrolls);

function prepareSlideScrolls(){
	var sliders = Document.getElementsByClassMatch("JS:SlideScroll");
	sliders.each(SlideScroll);
}

function SlideScroll(element){
	var element = SlideScroll.setContainer(element);
	var children = Document.getChildNodes(element, "div");
	element.totalSlides = children.length;
	element.currentSlide = 1;
	element.slides = children;
	SlideScroll.setSlides(children, element);
	SlideScroll.setNavigation(element);
}
SlideScroll.setContainer = function(element){
	var width = element.offsetWidth;
	var height = element.offsetHeight;
	element.style.position = "absolute";
	element.style.zIndex = 1;
	element.style.overflow = "hidden";
	element.style.width = width + "px";
	element.style.height = height + "px";
	return element;
}
SlideScroll.setSlides = function(slides, parent){
	var width = parent.offsetWidth;
	var height = parent.offsetHeight;
	var xpos = 0;
	for(var i = 0; i < slides.length; i ++){
		var totalPadding = Number(Document.getStyle(slides[i], "padding-left").replace("px","")) + Number(Document.getStyle(slides[i], "padding-right").replace("px",""));
		slides[i].style.position = "absolute";
		slides[i].style.zIndex = 1;
		slides[i].style.display = "block";
		slides[i].style.left = xpos + "px";
		slides[i].style.width = (width - totalPadding) + "px";
		slides[i].slideNumber = i + 1;
		xpos += width;
	}
}
SlideScroll.setNavigation = function(element){
	var bodyElement = document.getElementsByTagName("body")[0];
	var prevLink = document.createElement("a");
	prevLink.style.position = "absolute";
	prevLink.style.zIndex = 2;
	prevLink.style.display = "block";
	prevLink.style.textIndent = "-9999px";
	prevLink.style.width = SlideScrollLinkWidth +"px";
	prevLink.style.height = element.offsetHeight +"px";
	prevLink.style.left = Document.getX(element) +"px";
	prevLink.style.top = Document.getY(element) +"px";
	prevLink.style.background = "url("+SlideScrollPrevImage+") no-repeat center center";
	bodyElement.appendChild(prevLink);
	prevLink.innerHTML = "previous";
	prevLink.setAttribute("href", "#");
	prevLink.setAttribute("title", "previous");
	prevLink.setAttribute("id", "SlideScrollPrev");
	prevLink.slideRef = element;
	Event.addEvent(prevLink, "click", SlideScroll.prevSlide);
	var nextLink = document.createElement("a");
	nextLink.style.position = "absolute";
	nextLink.style.zIndex = 2;
	nextLink.style.display = "block";
	nextLink.style.textIndent = "-9999px";
	nextLink.style.width = SlideScrollLinkWidth +"px";
	nextLink.style.height = element.offsetHeight +"px";
	nextLink.style.left = (Document.getX(element) + element.offsetWidth - SlideScrollLinkWidth) +"px";
	nextLink.style.top = Document.getY(element) +"px";
	nextLink.style.background = "url("+SlideScrollNextImage+") no-repeat center center";
	bodyElement.appendChild(nextLink);
	nextLink.innerHTML = "next";
	nextLink.setAttribute("href", "#");
	nextLink.setAttribute("title", "next");
	nextLink.setAttribute("id", "SlideScrollNext");
	nextLink.slideRef = element;
	Event.addEvent(nextLink, "click", SlideScroll.nextSlide);
}
SlideScroll.nextSlide = function(evt){
	Event.preventDefault(evt);
	var element = Event.getTarget(evt);
	var slider = element.slideRef;
	if(slider.animating){
		return;
	}
	// if last slide exit
	if(slider.currentSlide >= slider.totalSlides){
		return;
	}
	// move each slide left
	var sliderX = Document.getX(slider);
	var sliderWidth = slider.offsetWidth;
	for(var i = 0; i < slider.totalSlides; i ++){
		if(i == 0){
			slider.animating = true;
		}
		var currentSlide = slider.slides[i];
		var currentX = Document.getX(currentSlide) - sliderX;
		var finalX = currentX - sliderWidth;
		//var tween = new Tween(currentSlide, "x", Strong.easeInOut, currentX, finalX, 1.5);
		var tween = new Tween(currentSlide, "x", Back.easeOut, currentX, finalX, 1.5);
		if(i == 0){
			tween.onMotionFinished = function(){
				slider.animating = false;
			}
		}
	}
	slider.currentSlide ++;
}
//Tween(element, property, easingClass, start, end, seconds)
//
SlideScroll.prevSlide = function(evt){
	Event.preventDefault(evt);
	var element = Event.getTarget(evt);
	var slider = element.slideRef;
	if(slider.animating){
		return;
	}
	// if last slide exit
	if(slider.currentSlide <= 1){
		return;
	}
	// move each slide left
	var sliderX = Document.getX(slider);
	var sliderWidth = slider.offsetWidth;
	for(var i = 0; i < slider.totalSlides; i ++){
		if(i == 0){
			slider.animating = true;
		}
		var currentSlide = slider.slides[i];
		var currentX = Document.getX(currentSlide) - sliderX;
		var finalX = Document.getX(currentSlide) + sliderWidth - sliderX;
		//var tween = new Tween(currentSlide, "x", Strong.easeInOut, currentX, finalX, 1.5);
		var tween = new Tween(currentSlide, "x", Back.easeOut, currentX, finalX, 1.5);
		if(i == 0){
			tween.onMotionFinished = function(){
				slider.animating = false;
			}
		}
	}
	slider.currentSlide --;
}
