var menuTimer = null;
var weekDays = ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'];


function initGallery() {
	if ($('image_gallery_main_nav')) {
		var bigImageLinks = $$('.image_gallery_list li a');
		var fadeBetweenImages = true;

		// preloading of the big images
		var bigImages = new Asset.images(bigImageLinks.get('href'));

		// Switching between different image lists
		var listWidth = 174;

		//var scroller = new Fx.Scroll('image_gallery_list_container');
		var scroller = new Fx.Tween('image_gallery_all_lists');

		var listLinks = $$('#image_gallery_main_nav li a');

		listLinks.each(function(element, index) {
			element.addEvent('click', function(evt) {
				evt.preventDefault();
				//scroller.start(index * listWidth, 0);
				scroller.start('left', -index * listWidth);
			});
		});

		// enlarging a thumb
		var bigImage = $('image_gallery_big_image');
		var myFx = new Fx.Tween(bigImage, {
			duration: 'short'
		});

		bigImageLinks.each(function(element) {
			element.addEvent('click', function(evt) {
				evt.preventDefault();
				if (fadeBetweenImages) {
					myFx.start('opacity', 1, 0).chain(function() {
						bigImage.set('src', element.get('href'));
						myFx.start('opacity', 0, 1);
					});
				} else {
					bigImage.set('src', element.get('href'));
				}
			});
		});
	}
}

function initAccordions() {
	if ($$('.accordion').length) {
		var arrangementImages = {
			'per_pedes': [
				{'src': 'images/assets/wandern.jpg', 'alt': 'Wandern'},
				{'src': 'images/assets/radeln.jpg', 'alt': 'Radeln'}
			],
			'roemisch_fuer_anfaenger': [
				{'src': 'images/assets/porta_nigra.jpg', 'alt': 'Porta Nigra'},
				{'src': 'images/assets/kaiserthermen.jpg', 'alt': 'Kaiserthermen'}
			],
			'roemische_weinstrasse': [
				{'src': 'images/assets/roemer_express.jpg', 'alt': 'Römer-Express'},
				{'src': 'images/assets/weintrauben.jpg', 'alt': 'Weintrauben'}
			],
			'schlemmen_und_geniessen': [
				{'src': 'images/assets/schlemmen.jpg', 'alt': 'Schlemmen'},
				{'src': 'images/assets/geniessen.jpg', 'alt': 'Genießen'}
			],
			'sommertage': [
				{'src': 'images/assets/auf_dem_kornmarkt.jpg', 'alt': 'Auf dem Kornmarkt'},
				{'src': 'images/assets/sommerzauber.jpg', 'alt': 'Sommerzauber'}
			],
			'weihnachtszeit': [
				{'src': 'images/assets/weihnachtsmarkt_trier.jpg', 'alt': 'Weihnachtsmarkt Trier'},
				{'src': 'images/assets/adventsstimmung.jpg', 'alt': 'Adventsstimmung'}
			],
			'silvester1': [
				{'src': 'images/assets/winterliche_residenz.jpg', 'alt': 'Winterliche Residenz'},
				{'src': 'images/assets/impressionen.jpg', 'alt': 'Impressionen'}
			],
			'silvester2': [
				{'src': 'images/assets/winterliche_residenz.jpg', 'alt': 'Winterliche Residenz'},
				{'src': 'images/assets/impressionen.jpg', 'alt': 'Impressionen'}
			]
		};
		if ($$('.accordion.arrangements').length) {
			var arrangementPreload = new Asset.images([
//				arrangementImages.per_pedes[0].src,
//				arrangementImages.per_pedes[1].src,
//				arrangementImages.roemisch_fuer_anfaenger[0].src,
//				arrangementImages.roemisch_fuer_anfaenger[1].src,
//				arrangementImages.roemische_weinstrasse[0].src,
//				arrangementImages.roemische_weinstrasse[1].src,
//				arrangementImages.schlemmen_und_geniessen[0].src,
//				arrangementImages.schlemmen_und_geniessen[1].src,
//				arrangementImages.sommertage[0].src,
//				arrangementImages.sommertage[1].src,
//				arrangementImages.weihnachtszeit[0].src,
//				arrangementImages.weihnachtszeit[1].src,
				arrangementImages.silvester1[0].src,
				arrangementImages.silvester1[1].src,
				arrangementImages.silvester2[0].src,
				arrangementImages.silvester2[1].src,
			]);
		}

		$$('.accordion .item_header').setStyle('cursor', 'pointer');
		var accordion = new Accordion($$('.accordion .item_header'), $$('.accordion .item_content'), {
			opacity: false,
			onActive: function(toggler, element){
/*
				toggler.setStyle('text-decoration', 'none');
				var currentImages = arrangementImages[toggler.get('id')];
				if (currentImages) {
					$('image1').set('src', currentImages[0].src);
					$('image1').set('alt', currentImages[0].alt);
					$('image2').set('src', currentImages[1].src);
					$('image2').set('alt', currentImages[1].alt);
				}
				*/
			},
			onBackground: function(toggler, element){
				toggler.setStyle('text-decoration', 'underline');
			}
		});
	}
}

var menuIFrameShim = null;

function initMenu() {
	var nav_links = $$('#nav_residenz > li, #nav_hotel > li');
	if (Browser.Engine.trident4) {
		menuIFrameShim = new Element('iframe', {
			'id': 'shim',
			'styles': {
				'position': 'absolute',
				'zIndex': '1',
				'display': 'none'
			}
		});
	}

	nav_links.each(function(element){
		var subMenu = element.getFirst('ul');
		if (subMenu) {
			element.addEvent('mouseenter', function(a) {
				if (!Browser.Engine.trident4) {
					subMenu.setStyle('min-width', element.getSize().x);
				} else {
					subMenu.setStyle('width', element.getSize().x);
				}
				showMenu.bind(subMenu)();
			})
			element.addEvent('mouseleave', function(a) {
				menuTimer = hideMenu.delay(300, subMenu);
			})
		}
	});
}

function showMenu() {
	clearTimeout(menuTimer);
	$$('#nav_residenz > li > ul, #nav_hotel > li > ul').setStyle('display', 'none');
	this.setStyle('display', 'block');

	if (Browser.Engine.trident4) {
		menuIFrameShim.inject($('nav_bar1'), 'before');
		menuIFrameShim.setStyle('width', this.getSize().x);
		menuIFrameShim.setStyle('height', this.getSize().y);
		menuIFrameShim.setStyle('left', this.getPosition().x - 78);
		menuIFrameShim.setStyle('top', this.getPosition().y - 328);
		menuIFrameShim.setStyle('display', 'block');
	}
}

function hideMenu() {
	if (Browser.Engine.trident4) {
		menuIFrameShim.setStyle('display', 'none');
	}
	this.setStyle('display', 'none');
}

function initImageLinks() {
	var imageLinks = $$('a.image_link');
	if (imageLinks) {
		var container = $('content');

		imageLinks.each(function(element){

			var imageContainer = new Element('div', {'class': 'enlarged_image'}).inject($('content'));
			var closeIcon = new Element('img', {'class': 'close_icon', 'src': 'images/interface/close_icon.gif'}).inject(imageContainer);
			var image = new Asset.image(element.href, {'onload': function() {
				enlargedImageLoad(image, imageContainer, container);
			}}).inject(imageContainer);

			imageContainer.addEvent('click', function(){
				this.setStyle('display', 'none');
			});

			element.addEvent('click', function(evt){
				evt.preventDefault();
				imageContainer.setStyle('display', 'block');
			});
		});
	}
}

function enlargedImageLoad(image, imageContainer, container) {
	var containerPaddings = 0;
	['right', 'left'].each(function(pos){
		containerPaddings += container.getStyle('padding-' + pos).toInt();
	});

	var containerWidth = container.getSize().x - containerPaddings;

	imageContainer.setStyle('left', Math.round((containerWidth - image.width) / 2) + container.getStyle('padding-left').toInt());
}

function initDateFields() {
	var dateSelects = $$('.dateSelect').get('id');

	dateSelects.each(function(id){
		var select = {year: $(id + '[year]'), month: $(id + '[month]'), day: $(id + '[day]')};
		var date = new Date(select.year.get('value'), select.month.get('value') - 1, select.day.get('value'));

		var weekdayContainer = new Element('span', {'text': weekDays[date.getDay()] + ', ', 'class': 'weekday'}).inject($(id), 'top');

		[select.year, select.month, select.day].each(function(element){
			element.addEvent('change', function(){
				var date = new Date(select.year.get('value'), select.month.get('value') - 1, select.day.get('value'));
				weekdayContainer.set('text', weekDays[date.getDay()] + ', ');
			});
		});
	});
}

function initThumbnails() {
	var thumbnails = $$('a.thumbnail');
	var bigImageContainer = new Element('div', {'id': 'bigImageContainer', 'events': {
			'click': function(){this.setStyle('display', 'none')}
	}}).inject($('page'));
	var close_icon = new Element('img', {'src': 'images/interface/close_icon.gif', 'style': 'position: absolute; top: -14px; right: -14px;'}).inject(bigImageContainer);
	var bigImage = new Element('img', {'id': 'bigImage'}).inject(bigImageContainer);
	thumbnails.each(function(link){
		var preloadedImage = new Asset.image(link.href);
		link.addEvent('click', function(e){
			e.preventDefault();
			bigImageContainer.setStyle('display', 'block')
			bigImage.src = link.href;
		});
	});
}

window.addEvent('domready', function(){
	initMenu();
	initGallery();
	if (!Browser.Engine.trident4) {
		initAccordions();
	}
	initImageLinks();
	initDateFields();
	initThumbnails();
});
