/**
 * @author Dallas Clark
 */

var portfolio = new Class({
	Implements: [Options, Events],
	options: {
		portfolioImagesDiv: 'portfolioImages',
		previousButton: 'previousBtn',
		nextButton: 'nextBtn',
		portfolioImagesWidth: '0',
		scrollIncrement: '772',
		portfolioImagesGap: '4',
		currentPosition: '0',
		duration: '1000',
		portfolioFx: ''
	},
	
	initialize: function(options) {
		this.setOptions(options);
		this.setupPortfolio();
		this.setupButtons();
	},
	
	setupPortfolio: function() {
		// Calculate Width
		var portfolioImages = $(this.options.portfolioImagesDiv).getElements('img');
		portfolioImages.each(function(portfolioImage) {
			if(parseInt(this.options.portfolioImagesWidth)) {
				this.options.portfolioImagesWidth = parseInt(this.options.portfolioImagesWidth) + parseInt(this.options.portfolioImagesGap);
			}
			this.options.portfolioImagesWidth = parseInt(this.options.portfolioImagesWidth) + parseInt(portfolioImage.get('width'));
		}.bind(this));
		$(this.options.portfolioImagesDiv).setStyle('width', this.options.portfolioImagesWidth);
		
		// Portfolio FX
		this.options.portfolioFx = new Fx.Tween(this.options.portfolioImagesDiv, {
			duration: this.options.duration
		});
	},
	
	setupButtons: function() {
		// Next Button
		$(this.options.nextButton).addEvent('click', function() {
			if(parseInt(this.options.currentPosition) < (parseInt(this.options.portfolioImagesWidth) - parseInt(this.options.scrollIncrement))) {
				this.options.portfolioFx.cancel();
				this.options.currentPosition = parseInt(this.options.currentPosition) + parseInt(this.options.scrollIncrement);
				this.options.portfolioFx.start('margin-left', '-' + this.options.currentPosition);
			}
			this.checkButtons();
		}.bind(this));
		
		// Previous Button
		$(this.options.previousButton).addEvent('click', function() {
			if(parseInt(this.options.currentPosition) > 0) {
				this.options.portfolioFx.cancel();
				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.portfolioFx.start('margin-left', '-' + this.options.currentPosition);
			}
			this.checkButtons();
		}.bind(this));
		
		// Check portfolio location
		this.checkButtons();
	},
	
	checkButtons: function() {
		// Next Button
		if(parseInt(this.options.currentPosition) > (parseInt(this.options.portfolioImagesWidth) - parseInt(this.options.scrollIncrement))) {
			$(this.options.nextButton).addClass('nextBtnDisabled');
		} else {
			$(this.options.nextButton).removeClass('nextBtnDisabled');
		}
		
		// Previous Button
		if(parseInt(this.options.currentPosition) < parseInt(this.options.scrollIncrement)) {
			$(this.options.previousButton).addClass('previousBtnDisabled');
		} else {
			$(this.options.previousButton).removeClass('previousBtnDisabled');
		}
	}
});