Slideshow = Class.create({
	
	slideshowContainer: null,
	selectedSlideshow: null,
	clickedSlideshowLink: null,
	selectedImage: null,
	clickedImageLink: null,
	
	initialize: function(slideshow_div) {
		this.slideshowContainer = $(slideshow_div);

		// activate the first slideshow 
		this.activateSlideShow(this.slideshowContainer.down('.slideshow-wrapper'));
	},
	
	swapSlideShow: function(link) {
		// activate the selected slideshow
		this.clickedSlideshowLink = link;
		this.activateSlideShow($(this.clickedSlideshowLink.href.split("#")[1]));
	},
	
	activateSlideShow: function(selected) {
		// hide all slideshows
		this._hideSlideShows();
		
		// show the selected slide show
		this.selectedSlideshow = selected;
		this.selectedSlideshow.show();
		if($('slideshow_links')) {
			this._activateSlideshowLink();
		}
		// show the first image
		this.clickedImageLink = null;
		this.activateImage(this.selectedSlideshow.down('.image'));
	},
	
	swapImage: function(link) {
		// activate the selected image
		this.clickedImageLink = link;
		this.activateImage($(this.clickedImageLink.href.split("#")[1]));
	},
	
	activateImage: function(selected) {
		// hide all images
		this._hideImages();
		
		// hide the map
		if($('slideshow_map')) {
			$('slideshow_map').hide();
		}
		
		// show the selected image
		if(selected) {
			this.selectedImage = selected;
			this.selectedImage.show();
		}
		this._activateImageLink();
	},
	
	_hideSlideShows: function() {
		$$('.slideshow-wrapper').invoke('hide');
	},
	
	_activateSlideshowLink: function() {
		$$('#slideshow_links a').each(
			function(tab) {
				tab.removeClassName("selected");
			}
		);
		if(this.clickedSlideshowLink) {
			this.clickedSlideshowLink.addClassName("selected");
		} else {
			$$('#slideshow_links a').first().addClassName("selected");
		}
	},
	
	_hideImages: function() {
		$$('.image').invoke('hide');
	},
	
	_activateImageLink: function() {
		if($$('.image_links').length > 0) {
			$$('.image_links a').each(
				function(tab) {
					tab.removeClassName("selected");
				}
			);
			if(this.clickedImageLink) {
				this.clickedImageLink.addClassName("selected");
			} else {
				this.selectedSlideshow.down('.image_links').down('a').addClassName("selected");
			}
		}
	}
		
});
