var Site = {
	
	menuTimeout: 100,
	timer: null,
	openedMenu: null,
	slideShowDelay: 2500,
	slideShowTimer: null,
	
	init: function() {
		Site.initNavigation();
		Site.startImageReplacement();
		Site.galleryJazz();
		Site.initSlideShow();
	},
	
	startImageReplacement: function (){
		$$('h2').each(function (el){
			new Element('img', { 'src': 'images/title_' + el.get('text').urlify() + '.gif' }).inject(el.set('text', ''));
		});
	},
	
	galleryJazz: function () {
		var thumbList = $('thumbnails');
		var imageHolder = $('imageHolder');
		var thumbImageHolder = $('thumbImageHolder')
		
		if (thumbList && thumbList.getChildren()) {			
			thumbList.getElements('li > a').addEvent('click', function (event) {
				event.stop();
				
				$clear(Site.slideShowTimer);
				imageHolder.get('tween', { property: 'opacity' }).start(0);
				imageHolder.setStyle('display', 'none');
				
				thumbImageHolder.setStyle('opacity', '0');
				thumbImageHolder.setStyle('display', 'block');
				
				new Element('img', { 'src': this.get('href') }).inject(thumbImageHolder.empty());
				
				thumbImageHolder.get('tween', { property: 'opacity' }).start(1);
				
				(function () {
					thumbImageHolder.setStyle('display', 'none');

					imageHolder.setStyle('display', 'block');
					imageHolder.get('tween', { property: 'opacity' }).start(1);
					Site.slideShowTimer = Site.performSlideShow.periodical(Site.slideShowDelay);
				}).delay(5000);
			});
		}
	},
	
	initSlideShow: function () {
		var slides = $('imageHolder').getChildren('img');
		
		if (slides && slides.length > 1) {
			var limit = slides.length - 2;
			
			slides.each(function (slide, i) {
				slide.setStyle('opacity', i > limit ? 1 : 0);
			});
			
			Site.slideShowTimer = Site.performSlideShow.periodical(Site.slideShowDelay);		
		}
	},

	performSlideShow: function () {
		var leaving = $('imageHolder').getLast();
		var coming  = leaving.getPrevious();
		
		leaving.get('tween', {
			property: 'opacity',
			onComplete: function (el) {
				el.inject($('imageHolder'), 'top');
			}
		}).start(0);
		
		coming.get('tween', { property: 'opacity' }).start(1);
		
	},
	
	initNavigation: function () {
		var subMenus = $('mainNav').getElements('ul > li > ul');
	
		subMenus.each(function (menu, i) {
			menu.store('originalHeight', menu.getSize().y);
			menu.store('fx', new Fx.Tween(menu, {
				duration: 200,
				link: 'cancel',
				onComplete: function (el) {
					var li = el.getParent('li');
					
					if (parseInt(el.getStyle('height'), 10) > 10) {
						li.addClass('selected');
					} else {
						li.removeClass('selected');
					}
				}
			}).set('height', 0));
			
			var trigger = menu.getPrevious('a');
			
			trigger.addEvent('mouseover', Site.openMenu.bindWithEvent(menu));
			trigger.addEvent('mouseout', Site.setCloseTimer.bindWithEvent(menu));
			
			menu.addEvent('mouseover', Site.cancelCloseTimer);
			menu.addEvent('mouseout', Site.setCloseTimer.bindWithEvent(menu));
		});
		
	},
	
	openMenu: function () {
		if (Site.openedMenu) {
			Site.closeMenu.bind(Site.openedMenu)();
		}
		
		Site.openedMenu = this;
		
		Site.cancelCloseTimer();
		
		this.retrieve('fx').start('height', this.retrieve('originalHeight'));
	},
	
	closeMenu: function () {
		Site.openedMenu = null;
		
		this.retrieve('fx').start('height', 0);
	},
	
	setCloseTimer: function () {
		Site.timer = Site.closeMenu.delay(Site.menuTimeout, this);
	},
	
	cancelCloseTimer: function () {
		if (Site.timer) Site.timer = $clear(Site.timer);
	}
};

window.addEvent('domready', Site.init);

String.prototype.urlify = function () {
	return this.trim().toLowerCase().replace(/[^a-z0-9-]/g, '-');
};
;
