// init page
window.addEvent('domready', function() {
	initSlideShow();
	hoverForIE6('#nav li');
});

// hover for IE
function hoverForIE6(_list, _class) {
	var _hoverClass = 'hover';
	if(_class) _hoverClass = _class;
	if(typeof(document.body.style.maxHeight) == 'undefined'){
		$$(_list).each(function(_el, i){
			_el.addEvent('mouseenter', function(){
				_el.addClass(_hoverClass);
			});
			_el.addEvent('mouseleave', function(){
				_el.removeClass(_hoverClass);
			});
		});
	}
}

// slideshow init
function initSlideShow() {
	$$('div.slideshow').each(function(obj){
		new fadeGallery(obj,{
			pagerLinks: 'ul.slide-paging li',
			slides: 'div.slide',
			activeClass: 'active',
			autoSlide: true,
			switchTime: 8000,
			duration : 500
		});
	});
}

// fade gallery module
var fadeGallery = new Class({
	options: {
		pagerLinks: 'ul.pagerlinks li',
		slides: 'ul.slidelist li',
		activeClass: 'active',
		autoSlide: false,
		switchTime: 3000,
		duration : 500
	},

	// create class
	initialize: function(element, options){
		this.setOptions(options);
		var _this = this;

		this.slideset = element.getElements(this.options.slides);
		this.slidesCount = this.slideset.length;
		this.pagerLinks = element.getElements(this.options.pagerLinks);
		this.autoRotation = this.options.autoSlide;
		this.activeClass = this.options.activeClass;
		this.switchTime = this.options.switchTime;

		// slides
		if (this.slidesCount < 2) return;
		this.duration = this.options.duration;
		this.currentIndex = 0;
		this.oldIndex = 0;
		this.timer = false;

		// gallery init
		this.slideset.each(function(_slide, _index){
			if(_index != _this.currentIndex) _slide.removeClass(_this.activeClass).setStyles({display:'none',opacity:0});
			else _slide.addClass(_this.activeClass).setStyles({display:'block',opacity:1});
		});

		// init control
		if(this.pagerLinks.length) {
			this.pagerLinks.each(function(item,ind){
				item.addEvent('click', function(){
					_this.numSlide(ind);
					return false;
				});
			});
		}

		// start autoslide
		if (this.options.autoSlide) {
			this.autoSlide();
		}
	},
	refreshPagination:function(){
		var _this = this;
		if(this.pagerLinks.length) {
			this.pagerLinks.each(function(item,ind){
				if(ind == _this.currentIndex) item.addClass(_this.activeClass);
				else item.removeClass(_this.activeClass)
			});
		}
	},
	numSlide: function(ind){
		if(this.currentIndex != ind) {
			this.oldIndex = this.currentIndex;
			this.currentIndex = ind;
			this.switchSlide();
		}
	},
	nextSlide: function(){
		this.oldIndex = this.currentIndex;
		if(this.currentIndex < this.slidesCount-1) this.currentIndex++;
		else this.currentIndex = 0;
		this.switchSlide();
	},
	prevSlide: function(){
		this.oldIndex = this.currentIndex;
		this.currentIndex--;
		if (this.currentIndex < 0) this.currentIndex = this.slidesCount-1;
		this.switchSlide();
	},
	switchSlide:function(){
		var _oldSlide = this.slideset[this.oldIndex].removeClass(this.activeClass).setStyles({opacity:1,display:'block'});
		var _newSlide = this.slideset[this.currentIndex].addClass(this.activeClass).setStyles({opacity:0,display:'block'});

		// fade elements
		var fxFadeOut = new Fx.Morph(_oldSlide, {duration: this.duration, onComplete:function(){_oldSlide.setStyles({display:'none'})}});
		var fxFadeIn = new Fx.Morph(_newSlide, {duration: this.duration});
		fxFadeOut.start({opacity:0});
		fxFadeIn.start({opacity:1});
		this.autoSlide();
		this.refreshPagination();
	},
	autoSlide: function(){
		if(this.autoRotation) {
			var _this = this;
			if(this.timer) clearTimeout(this.timer);
			this.timer = setTimeout(function(){_this.nextSlide()}, this.switchTime);
		}
	},
	// add options and events
	Implements : [Options, Events]
});
