/**
 * @author Dallas Clark
 */

var slideshow = new Class({
	Implements: [Options, Events],
	options: {
		largeSlideshowImage: 'largeSlideshowImage',
		thumbnailsDiv: 'slideshowThumbnails',
		thumbnailsDivWidth: '0',
		thumbnailImagesGap: '17',
		thumbnailAnchors: '',
		thumbnailsFx: '',
		thumbnailsFxDuration: '1000',
		currentPosition: '0',
		scrollIncrement: '501',
		thumbnailsPreviousButton: 'slideshowThumbnailsPreviousBtn',
		thumbnailsNextButton: 'slideshowThumbnailsNextBtn'
	},
	
	initialize: function(options) {
		this.setOptions(options);
		this.setupThumbnails();
		this.setupSlideshow();
		this.setupButtons();
	},
	
	setupThumbnails: function() {
		var slideshowThumbnails = $(this.options.thumbnailsDiv).getElements('img');
		slideshowThumbnails.each(function(slideshowThumbnail) {
			if(parseInt(this.options.thumbnailsDivWidth)) {
				this.options.thumbnailsDivWidth = parseInt(this.options.thumbnailsDivWidth) + parseInt(this.options.thumbnailImagesGap);
			}
			this.options.thumbnailsDivWidth = parseInt(this.options.thumbnailsDivWidth) + parseInt(slideshowThumbnail.get('width'));
		}.bind(this));
		$(this.options.thumbnailsDiv).setStyle('width', this.options.thumbnailsDivWidth);
		
		// Thumbnails FX
		this.options.thumbnailsFx = new Fx.Tween(this.options.thumbnailsDiv, {
			duration: this.options.thumbnailsFxDuration
		});
	},
	
	setupSlideshow: function() {
		this.options.thumbnailAnchors = $(this.options.thumbnailsDiv).getElements('a');
		this.options.thumbnailAnchors.each(function(thumbnailAnchor) {
			thumbnailAnchor.addEvent('click', function(event) {
				event.stop();
				$(this.options.largeSlideshowImage).set('src', thumbnailAnchor.get('href'));
			}.bind(this));
		}.bind(this));
	},
	
	setupButtons: function() {
		// Next Button
		$(this.options.thumbnailsNextButton).addEvent('click', function() {
			if(parseInt(this.options.currentPosition) < (parseInt(this.options.thumbnailsDivWidth) - parseInt(this.options.scrollIncrement))) {
				this.options.currentPosition = parseInt(this.options.currentPosition) + parseInt(this.options.scrollIncrement);
				this.options.thumbnailsFx.start('margin-left', '-' + this.options.currentPosition);
			}
			//this.checkButtons();
		}.bind(this));
		
		// Previous Button
		$(this.options.thumbnailsPreviousButton).addEvent('click', function() {
			if(parseInt(this.options.currentPosition) > 0) {
				if(parseInt(this.options.currentPosition) <= parseInt(this.options.scrollIncrement)) {
					this.options.currentPosition = 0;
				} else {
					this.options.currentPosition = parseInt(this.options.currentPosition) - parseInt(this.options.scrollIncrement);
				}
				this.options.thumbnailsFx.start('margin-left', '-' + this.options.currentPosition);
			}
			//this.checkButtons();
		}.bind(this));
		//this.checkButtons();
	}
});