var Main = {
	init: function() {
		// Ein-/ausblendbare Sitemap initialisieren
		Main.toggleSitemapFx = new Fx.Slide('toggle_sitemap');
		Main.toggleSitemapFx.hide();
		$('toggle_sitemap_button').setStyle('display', 'block');
		var headermenulinks = $$('div#header_left div.headermenu a');
		headermenulinks.each(function(link, i) {
			if (link.getProperty('href').contains('sitemap')) {
				link.setProperty('href', 'javascript:Main.showSitemap();');
			}
		});
		// Accordions initialisieren
		var accordion = new Accordion($('content'), 'div.accordion h3', 'div.accordion p', {
				opacity: false,
				show: -1,
				onActive: function(toggler, element){
					toggler.setStyle('cursor', 'auto');
				},
				
				onBackground: function(toggler, element){
					toggler.setStyle('cursor', 'pointer');
				}
		});
		
		// Menü initialisieren
		Main.initMenu();
		// Suche
		var searchFx = new Fx.Morph($('search'), { transition: Fx.Transitions.Quad.easeOut, duration: 600 });
		searchFx.set({
			'margin-top': 42,
			'height': 18
		});
		$('search').addEvent('mouseenter', function(e) {
			searchFx.cancel();
			$$('div.headermenu').each(function(menu, i) {
				menu.fade('out');
			});
			searchFx.start({
				'margin-top': -15,
				'height': 80
			});
		});
		$('search').addEvent('mouseleave', function(e) {
			searchFx.cancel();
			searchFx.start({
				'margin-top': 42,
				'height': 18
			});
			$$('div.headermenu').each(function(menu, i) {
				menu.fade('in');
			});
		});
		if (!(Browser.Engine.trident && (Browser.Engine.version < 5)) && (window.getSize().x > 1024)) {
			$('search').setStyle('margin-left', 20);
			$('lupe').setStyle('margin-left', -12);
			$('lupe').getFirst('img').setProperty('src', 'fileadmin/images/lupe.png');
		}
	},
	
	start: function() {
		new SmoothScroll();
	},

	initMenu: function() {
		this.currentMenu = -1;
		var navigationelements = $$('div#menu_left ul.level0 li ul.level1');
		navigationelements.each(function(el, i) {
			el.setStyles({'height': 0, 'overflow': 'hidden'});
		});
		var controlelements = $$('div#menu_left ul.level0 li.level0');
		var menulinkelements = $$('div#menu_left ul.level0 li.level0 a.level0 span');
		menulinkelements.each(function(el, i) {
			el.setStyles({'font-size': 12, 'min-height': 16, 'margin-left': 0, 'padding': '2px 0px 2px 0px', width: 'auto'});
		});
		var menubackpicelements = $$('div#menu_left ul.level0 li.level0 img.menulevel0');
		menubackpicelements.each(function(el, i) {
			if (Browser.Engine.trident) {
				el.setStyles({'visibility': 'hidden', 'width': 160, 'margin-left': -10, 'height': 18});
			}
			else {
				el.setStyles({'opacity': 0, 'width': 160, 'margin-left': -10, 'height': 18});
			}
		});

		var fxs = new Fx.Elements(navigationelements, {wait:0,transition: Fx.Transitions.Quad.easeOut});
		var menulinkfxs = new Fx.Elements(menulinkelements, {wait:0, transition: Fx.Transitions.Quad.easeOut});
		var menubackpicfxs = new Fx.Elements(menubackpicelements, {duration: 'long', wait:0, transition: Fx.Transitions.Back.easeOut});

		var activeMenuIndex = -1;
		controlelements.each(function(el, i){
			el.addEvent('mouseenter', function(e) {
				fxs.cancel();
				menulinkfxs.cancel();
				menubackpicfxs.cancel();
				Main.displaySubmenu(i, navigationelements, fxs, menulinkelements, menulinkfxs, menubackpicelements, menubackpicfxs);
			});
			if (el.hasClass('active')) {
				activeMenuIndex = i;
			}
		});
		$('menu_left').addEvent('mouseleave', function(e) {
			fxs.cancel();
			menulinkfxs.cancel();
			menubackpicfxs.cancel();
			Main.displaySubmenu(activeMenuIndex, navigationelements, fxs, menulinkelements, menulinkfxs, menubackpicelements, menubackpicfxs);
		});
		if (activeMenuIndex != -1) {
			var displayActiveMenuIndex = function() {
				fxs.cancel();
				menulinkfxs.cancel();
				menubackpicfxs.cancel();
				Main.displaySubmenu(activeMenuIndex, navigationelements, fxs, menulinkelements, menulinkfxs, menubackpicelements, menubackpicfxs);
			}
			displayActiveMenuIndex.delay(100);
		}
	},
	displaySubmenu: function(index, navigationelements, fxs, menulinkelements, menulinkfxs, menubackpicelements, menubackpicfxs) {
		if (index != this.currentMenu) {
			var obj = {};
			navigationelements.each(function(el, i) {
				var hide = (index != i) || (i == 0);
				obj[i] = {};
				obj[i]['height'] = hide ? 0 : el.getScrollSize().y;
			});
			var menulinkobj = {};
			menulinkelements.each(function(el, i) {
				var hide = (index != i);
				menulinkobj[i] = {};
				if (hide) {
					menulinkobj[i]['font-size'] = 12;
					menulinkobj[i]['min-height'] = 16;
					menulinkobj[i]['margin-left'] = 0;
					menulinkobj[i]['padding'] = '2px 0px 2px 0px';
				}
				else {
					menulinkobj[i]['font-size'] = 16;
					menulinkobj[i]['min-height'] = 30;
					menulinkobj[i]['margin-left'] = -25;
					menulinkobj[i]['padding'] = '10px 15px 10px 25px';
				}
			});
			var menubackpicobj = {};
			menubackpicelements.each(function(el, i) {
				var hide = (index != i);
				menubackpicobj[i] = {};
				if (hide) {
					if (Browser.Engine.trident) {
						menubackpicobj[i]['visibility'] = 'hidden';
					}
					else {
						menubackpicobj[i]['opacity'] = 0;
					}
					menubackpicobj[i]['height'] = 18;
					menubackpicobj[i]['width'] = 160;
					menubackpicobj[i]['margin-left'] = -10;
				}
				else {
					if (Browser.Engine.trident) {
						menubackpicobj[i]['visibility'] = 'visible';
					}
					else {
						menubackpicobj[i]['opacity'] = 1;
					}
					menubackpicobj[i]['width'] = 261;
					menubackpicobj[i]['margin-left'] = -25;
					menubackpicobj[i]['height'] = 50;
				}
			});
			
			menulinkfxs.start(menulinkobj);
			menubackpicfxs.start(menubackpicobj);
			fxs.start(obj).chain(function() {
				this.currentMenu = index;
			});
		}
	},
	toggleSitemap: function() {
		var bShow = !Main.toggleSitemapFx.open;
		var fileName = bShow ? 'minus.gif' : 'plus.gif';
		var selectText = bShow ? 'Sitemap ausblenden' : 'Sitemap einblenden';

		$('toggle_sitemap_button').setProperties({
			'src': 'fileadmin/images/icons/' + fileName,
			'title': selectText,
			'alt': selectText
		});
		
		var scrollFx = new Fx.Scroll(window);
		Main.toggleSitemapFx.toggle().chain(function() { scrollFx.toBottom(); });
	},
	showSitemap: function() {
		if (Main.toggleSitemapFx.open) {
			var scrollFx = new Fx.Scroll(window);
			scrollFx.toBottom();
		}
		else {
			Main.toggleSitemap();
		}	
	},
	showBakerySearch: function() {
		if ($('websitesearch').getStyle('display') != 'none') {
			var completionFunc = function() {
				webSiteSearchFx.set('display', 'none');
				bakerySearchFx.set('display', 'block');
				bakerySearchFx.start('opacity', 0, 1);
			};
			var bakerySearchFx = new Fx.Tween('bakerysearch', { duration: 'normal' });
			var webSiteSearchFx = new Fx.Tween('websitesearch', {
				onComplete: function() { 
					completionFunc.delay(500);
				},
				duration: 'normal'
			});
			webSiteSearchFx.start('opacity', 1, 0);
		}
	},
	showWebsiteSearch: function() {
		if ($('bakerysearch').getStyle('display') != 'none') {
			var completionFunc = function() {
				bakerySearchFx.set('display', 'none');
				webSiteSearchFx.set('display', 'block');
				webSiteSearchFx.start('opacity', 0, 1);
			};
			var webSiteSearchFx = new Fx.Tween('websitesearch', { duration: 'normal' });
			var bakerySearchFx = new Fx.Tween('bakerysearch', {
				onComplete: function() { 
					completionFunc.delay(500);
				},
				duration: 'normal'
			});
			bakerySearchFx.start('opacity', 1, 0);
		}
	}
};
window.addEvent('domready', Main.init);
window.addEvent('load', Main.start);

