slideshows = new Array();

function SlideShow(gallery_id, target_div, show_name) {
	this.show_name = show_name;
	this.gallery = gallery_id;
	this.target_div = target_div;
	$(this.target_div).css({position: "relative"});
	$(this.target_div).children("img").css({position: "absolute", top: "0", left: "0", zIndex: "0"});
	// this.cleanup = new Array("0");
	this.slide_position = 1;
	this.time_interval = 2000;
	this.time_transition = 1000;
	this.time_start_delay = 1000;
	this.ajax_url = 'fetch_images/';
	this.looping = true;
}

SlideShow.prototype.AttachActions = function() {
	var self = this;
	$("."+this.show_name).toggle(function(data){
	  slideshows[data['currentTarget']['className']].Pause();
	},function(data){
	  slideshows[data['currentTarget']['className']].Play();
	});
}

SlideShow.prototype.Initialize = function() {
	var self = this;

	$.ajax({
		type: "POST",
		url: self.ajax_url,
		data: {current_id:0, gallery:this.gallery},
		dataType: "json",
		success: function(json) {
			self.slide_images = new Array();
			self.slide_images = json.images;
			self.show_interval = setTimeout(function() {
				self.Play();
			},
			self.time_start_delay);
		}
	});
}

SlideShow.prototype.NextSlide = function() {
	if (this.slide_position<this.slide_images.length) {
		this.img_tag = "<img class="+this.show_name+" id="+this.show_name+"_image_"+this.slide_position+" src='"+this.slide_images[this.slide_position]['Image']['filename']+"'>";
		$(this.target_div).find('img:last').after(this.img_tag);
		this.next_slide = "#"+this.show_name+"_image_"+this.slide_position;
		$(this.next_slide).hide();
		$(this.next_slide).css({position: "absolute"});
		
		var self = this;
		setTimeout(function() {
			$(self.next_slide).fadeIn(self.time_transition);
			// self.cleanup[self.cleanup.length] = self.slide_position;

			setTimeout(function(){
				// self.image_to_remove = "#"+self.show_name+"_image_"+self.cleanup.shift();
				// $(self.target_div).find('img:first').hide();
				
				$(self.target_div).find('img:first').remove();
			}, 
			1500+self.time_transition);
			self.slide_position = (self.slide_position+1)%(self.slide_images.length);
			self.AttachActions();
			if (self.slide_position == 0 && self.looping==false) clearInterval(self.show_interval);
		}, self.time_interval);
	}
}

SlideShow.prototype.Pause = function() {
	var self = this;
	clearInterval(self.show_interval);
}

SlideShow.prototype.Play = function() {
	var self = this;
	self.NextSlide();
	self.show_interval = setInterval(function() {
		self.NextSlide();
	},
	self.time_interval+self.time_transition);
}
