// movieslider.js v1.0
//
// Copyright (c) 2009 401creative
// Author: Devon Beck | http://www.401creative.com
// 
// Movieslider was created for gopetfriendly.com.
//

/*-----------------------------------------------------------------------------------------------*/

var movieslider = Class.create();
movieslider.prototype = {

	initialize: function(container, options) {
		
		if (!$(container)) {
			alert(container+" doesn't exist!");
			return false;
		}
		
		this.options = Object.extend({
			moveSpeed : 10,
			classNames : {
				slider : 'ms-container',
				previousBtn : 'ms-prev',
				nextBtn : 'ms-next'
			},
			defaultSizes : {
				fullWidth : 500,
				boxWidth : 50,
				numVisibleBoxes : 8
			},
			buttonAutoOff : true,
			startFrom : 1
		}, options || {});
		
		this.duration = ((11-this.options.moveSpeed)*0.15);

		var prev = $(container).getElementsByClassName(this.options.classNames.previousBtn);
		var next = $(container).getElementsByClassName(this.options.classNames.nextBtn);
		this.prev = prev[0];
		this.next = next[0];
		
		var slider = $(container).getElementsByClassName(this.options.classNames.slider);
		this.slider = slider[0];
		
		this.boxes = $(this.slider).getElementsByTagName('li').length;
		
		var fw = this.options.defaultSizes.fullWidth;
		var bw = this.options.defaultSizes.boxWidth;
		var vb = this.options.defaultSizes.numVisibleBoxes;
		this.gap = (fw-(bw*vb))/(vb-1);
		
		if(this.options.startFrom > (this.boxes-this.options.defaultSizes.numVisibleBoxes)){
			this.boxNum = this.boxes-this.options.defaultSizes.numVisibleBoxes;
		} else {
			this.boxNum = this.options.startFrom;
		}
		this.positionSlider(false);		
		this.initButtons();
		
		$(container).setStyle({
			'visibility' : 'visible'						
		});		
	},
	
	positionSlider : function(animate) {
		var leftOffset = -(((this.boxNum-1)*this.options.defaultSizes.boxWidth)+((this.boxNum-1)*this.gap));
		if(animate){
			new Effect.Move(this.slider, { x: leftOffset, y: 0, mode: 'absolute', duration: this.duration });
		} else {
			new Effect.Move(this.slider, { x: leftOffset, y: 0, mode: 'absolute', duration: 0 });
		}
		if(this.boxNum==1 && this.options.buttonAutoOff){
			if(!$(this.prev).hasClassName('off')){
				$(this.prev).addClassName('off');
			}
		}
		if(this.boxNum==(this.boxes-(this.options.defaultSizes.numVisibleBoxes-1)) && this.options.buttonAutoOff){
			if(!$(this.next).hasClassName('off')){
				$(this.next).addClassName('off');
			}
		}
	},
	
	initButtons : function() {
		Event.observe(this.prev, 'click', this.goPrevious.bindAsEventListener(this));
		this.prev.onclick = function() {return false;};	
		Event.observe(this.next, 'click', this.goNext.bindAsEventListener(this));
		this.next.onclick = function() {return false;};	
	},
	
	goPrevious : function(e) {
		if(this.boxNum > 1){
			this.boxNum = this.boxNum-1;
			if($(this.prev).hasClassName('off')){
				$(this.prev).removeClassName('off');
			}
			if($(this.next).hasClassName('off')){
				$(this.next).removeClassName('off');
			}
			this.positionSlider(true);
		} 
	},
	
	goNext : function(e) {
		if(this.boxNum < (this.boxes-(this.options.defaultSizes.numVisibleBoxes-1))){
			this.boxNum = this.boxNum+1;
			if($(this.next).hasClassName('off')){
				$(this.next).removeClassName('off');
			}
			if($(this.prev).hasClassName('off')){
				$(this.prev).removeClassName('off');
			}
			this.positionSlider(true);
		}
	}
}
	
