function SlideShow() {
	var instanceName;
	var navContainer;
	var totalSlidesNum = 0;
	var currentSlideNum = 0;
	
	var playBttnClass = "";
	var pauseBttnClass = "";
	var navButtonOffClass = "";
	var navButtonOnClass = "";
	
	var animationDuration;
	var isEnabled = true;
	var slides;
	var currSlide;
	var currNavBttn;
	var self = this;
	var slideTimer;
	var slideTime = 0;
	
	this.init = function(params) {
		slides = params.slides;
		totalSlidesNum = slides.length;
		navContainer = params.navContainer;
		navButtonOffClass = params.navButtonOffClass;
		navButtonOnClass = params.navButtonOnClass;
		playBttnClass = params.playBttnClass;
		pauseBttnClass = params.pauseBttnClass;
		slideTime = params.slideTime || 5000;
		animationDuration = params.animationDuration || 300;
		
		//hide all slides
		slides.hide();
		
		//add buttons
		self.addButtons();
		self.onNavClick(0);
		
		if(params.autoPlay) {
			self.play();
		}
	}
	
	this.addButtons = function() {
		var slideCounter = 0;
		var buttons = new Array();
		var str;
		
		buttons.push('<a href="javascript:void(0)" id="slideShowNav_playPause" onclick="slideShow.onPlayPauseClick();" class="'+pauseBttnClass+'">&nbsp;</a>')
		
		slides.each(function() {
			var buttonStr = '<a href="javascript:void(0)" id="slideShowNav_'+slideCounter+'" onclick="slideShow.onNavClick('+slideCounter+')" class="'+navButtonOffClass+'">'+ (slideCounter+1) +'</a>';
			buttons.push(buttonStr);
			slideCounter++;
		});
		str = buttons.toString();
		str = str.replace(/,/g, "")
		navContainer.html(str);
	}
	
	this.play = function() {
		slideTimer = setInterval(function() { self.next(); }, slideTime);
		isEnabled = true;
		$("#slideShowNav_playPause").attr("class", pauseBttnClass);
	}
	
	this.stop = function() {
		clearInterval(slideTimer);
		isEnabled = false;
		$("#slideShowNav_playPause").attr("class", playBttnClass);
	}
	
	this.onPlayPauseClick = function() {
		if(isEnabled) {
			self.stop();
		} else {
			self.play();
		}
	}
	
	this.onNavClick = function(slideNum){
		self.stop();
		
		currentSlideNum = slideNum;
		self.showSlide(slideNum);
	}
	
	this.showSlide = function(slideNum) {
		try{
			currSlide.hide();
		} catch(e) {}
		
		try{
			currnNavBttn.attr("class", navButtonOffClass);
		} catch(e) {}
		
		currnNavBttn = $("#slideShowNav_" + slideNum);
		currnNavBttn.attr("class", navButtonOnClass);
		
		currSlide = slides.eq(slideNum);
		currSlide.fadeIn(animationDuration);
	}
		
	this.next = function(){
		if(currentSlideNum < (totalSlidesNum-1)){
			currentSlideNum += 1;
		} else {
			currentSlideNum = 0;
		}
		self.showSlide(currentSlideNum);
	}
}
