window.addEvent('domready', function(){
	var stages = $$('.homeStageImg .stage .elements');
	if(stages.length > 1) {
		ObjFadeStages = new fadeStages(stages);
	}
});

fadeStages = new Class({
	options: {
		stages: [],
		navEls: [],
		count: 0,
		current: 0,
		interval: false,
		delay: 5000,
		enablePrevNext: true
	},
	initialize: function(stages) {
		this.options.stages = stages;
		this.options.count = this.options.stages.length;
		this.initElements();
		this.startInterval();
	},
	initElements: function() {
		var nav = new Element('ul', {
			'class': 'fade_stage_nav',
		});
		for(i = 0; i < this.options.count; i++) {
			var el_li = new Element('li');
			el_li.addEvent('click', this.navClick.bind(this, el_li));
			el_li.store('stage', i);
			el_li.inject(nav);
			this.options.navEls.push(el_li);
		}
		this.options.navEls[0].addClass('active');
		nav.inject($$('.homeStageImg').getLast());
		if(this.options.enablePrevNext) {
			var el_prev = new Element('div', {
				'class': 'fade_previous',
				'events': {
					'click': this.previous.bind(this)
				}
			});
			var el_next = new Element('div', {
				'class': 'fade_next',
				'events': {
					'click': this.next.bind(this)
				}
			});
			$$('.homeStageImg').getLast().grab(el_prev).grab(el_next);
		}
	},
	navClick: function(el_li) {
		if(this.options.interval) {
			this.stopInterval();
		}
		var next = el_li.retrieve('stage');
		this.fade(this.options.current, next);
		this.options.current = next;
	},
	startInterval: function() {
		this.options.interval = (function(){
			if(this.options.count == this.options.current + 1) {
				var newStage = 0;
			} else {
				var newStage = this.options.current + 1;
			}
			this.fade(this.options.current, newStage);
			this.options.current = newStage;
		}).periodical(this.options.delay, this);
	},
	stopInterval: function() {
		clearInterval(this.options.interval);
		this.options.interval = false;
	},
	fade: function(from, to) {
		if(from != to) {
			$$('.homeStageImg .stage').tween('left', -(to*473));
			this.options.stages[from].removeClass('active');
			//this.options.stages[from].fade(0);
			this.options.stages[to].addClass('active');
			//this.options.stages[to].fade(1);
			this.options.navEls[from].removeClass('active');
			this.options.navEls[to].addClass('active');
		}
	},
	next: function() {
		if(this.options.interval) {
			this.stopInterval();
		}
		var next = this.options.current + 1;
		if(next < this.options.count) {
			this.fade(this.options.current, next);
			this.options.current = next;
		} else {
			this.fade(this.options.current, 0);
			this.options.current = 0;
		}
	},
	previous: function() {
		if(this.options.interval) {
			this.stopInterval();
		}
		if(this.options.current > 0) {
			var previous = this.options.current - 1;
			this.fade(this.options.current, previous);
			this.options.current = previous;
		} else {
			var last = this.options.count - 1;
			this.fade(this.options.current, last);
			this.options.current = last;
		}
	}
});
