jQuery(document).ready(function(){
	if(jQuery("#slider").length > 0){
		new Gallery(940,jQuery("#slider a"),1,true);
	}
});

function Gallery(slideWidth,slideSelector,divider,autoSlide,refs){
	this.slideWidth = slideWidth;
	this.divider = divider;
	this.slideSelector = slideSelector;
	var refs = refs || {};
	this.slider = refs.slider || jQuery("#slider");
	this.indexlist = refs.indexlist || jQuery("#indexlist");
	this.goLeft = refs.goLeft || jQuery("#goLeft");
	this.goRight = refs.goRight || jQuery("#goRight");
	this.autoSlide = autoSlide;
	this.init();
}

jQuery.fn.disableSelection = function() {
    jQuery(this).attr('unselectable', 'on')
           .css('-moz-user-select', 'none')
           .each(function() { 
               this.onselectstart = function() { return false; };
            });
};

Gallery.prototype = {
	currentSlide : 1,
	maxSlides : 0,
	slideWidth : 900,
	autoSlide : false,
	
	init : function(){
		var This = this;
		var numimgs = this.slideSelector.length;
		this.maxSlides = Math.ceil(numimgs/this.divider);
		this.slider.width(this.maxSlides*this.slideWidth);
		
		for(var i = 0; i < this.maxSlides; i++){
			jQuery("<span index='"+(i+1)+"'>&bull;</span>").appendTo(this.indexlist);
		}
		this.indexlist.find("span").click(function(){
			This.goToSlide(jQuery(this).attr("index"));
		});
		this.goLeft.click(function(e){
			This.changeSlide(1);
		});
		this.goRight.click(function(e){
			This.changeSlide(-1);
		});
		this.currentSlide = 1;
		//this.slider.find("img").disableSelection();
		
		if(this.maxSlides == 1){
			this.indexlist.remove();
		}
		else{
			this.indexlist.find("span:nth-child("+this.currentSlide+")").addClass("active");
			this.startInterval();
		}
		
	},
	
	startInterval : function(){
		if(this.autoSlide){
			var This = this;
			if(this.interval){
				window.clearInterval(this.interval);
			}
			this.interval = window.setInterval(function(){
				if(!This.changeSlide(-1)){
					This.goToSlide(1);
				}
			},7000);
		}
	},
	
	changeSlide : function(dir){
		if((dir > 0 && this.currentSlide == 1) || (dir < 0 && this.currentSlide == this.maxSlides)){
			return false;
		}
		this.fadeOut();
		this.slider.delay(200).animate({
			left: "+="+(this.slideWidth*dir)
		});
		this.fadeIn();
		this.indexlist.find("span:nth-child("+this.currentSlide+")").removeClass("active");
		this.currentSlide -= dir;
		this.indexlist.find("span:nth-child("+this.currentSlide+")").addClass("active");
		return true;
	},
	
	goToSlide : function(i){
		var l = -(i-1)*this.slideWidth;
		
		this.fadeOut();
		this.slider.delay(200).animate({
			left: l+"px"
		});
		this.fadeIn();
		this.indexlist.find("span:nth-child("+this.currentSlide+")").removeClass("active");
		this.currentSlide = i;
		this.indexlist.find("span:nth-child("+this.currentSlide+")").addClass("active");
		
		this.startInterval();
	},
	
	fadeOut : function(){
		this.slider.find("h2,h3").fadeOut(200);	
	},
	
	fadeIn : function(){
		this.slider.find("h2,h3").delay(500).fadeIn(200);
	}
}
