var Main = {
	init: function() {
		// Ein-/ausblendbare Sitemap initialisieren
		Main.toggleSitemapFx = new Fx.Slide('toggle_sitemap');
		Main.toggleSitemapFx.hide();
		var footermenulinks = $$('div#page_bottom div#footermenu2 a');
		footermenulinks.each(function(link, i) {
			if (link.getProperty('href').contains('sitemap')) {
				link.setProperty('href', 'javascript:Main.toggleSitemap();');
			}
		});
		// Accordions initialisieren
		var accordion = new Accordion($('content'), 'div.accordion h5', 'div.accordion p', {
			opacity: false,
			show: 0,
			onActive: function(toggler, element){
				toggler.setStyle('cursor', 'auto');
			},
			
			onBackground: function(toggler, element){
				toggler.setStyle('cursor', 'pointer');
			}
		});
		Main.initMenu();
	},
	
	start: function() {
		new SmoothScroll();
	},
	initMenu: function() {
		Main.currentMenu = -1;
		var submenus = $$('div#mainmenu ul.level0 li ul.level1');
		submenus.each(function(el, i) {
			el.setStyles({
				'display': 'none',
				'visibility': 'visible'
			});
		});
		var controlelements = $$('div#mainmenu ul.level0 li.level0');
		var menuFx = new Fx.Elements(submenus, {duration: 'short',link: 'cancel',transition: Fx.Transitions.Quad.easeOut});
		var activeMenuIndex = -1;

		var searchInput = $('search').getElement('div');
		$('search').addEvent('mouseenter', function(e) {
			Main.displaySubmenu(-1, menuFx, submenus);
			controlelements.each(function(otherel, j) {
				otherel.removeClass('active');
			});
			searchInput.setStyle('visibility', 'visible');
		});
		$('search').getChildren('a').setProperty('href', 'javascript:$("searchterm").focus();');
		controlelements.each(function(el, i){
			el.addEvent('mouseenter', function(e) {
				el.addClass('active');
				controlelements.each(function(otherel, j) {
					if (i != j) {
						otherel.removeClass('active');
					}
				});
				searchInput.setStyle('visibility', 'hidden');
				Main.displaySubmenu(i, menuFx, submenus);
			});
			if (el.hasClass('active')) {
				activeMenuIndex = i;
			}
		});
		$('page_top').addEvent('mouseleave', function(e) {
			controlelements.each(function(otherel, j) {
				if (j != activeMenuIndex) {
					otherel.removeClass('active');
				}
				else {
					otherel.addClass('active');
				}
			});
			searchInput.setStyle('visibility', 'hidden');
			Main.displaySubmenu(activeMenuIndex, menuFx, submenus);
		});
		if (activeMenuIndex != -1) {
			var displayActiveMenuIndex = function() {
				menuFx.cancel();
				searchInput.setStyle('visibility', 'hidden');
				Main.displaySubmenu(activeMenuIndex, menuFx, submenus);
			}
			displayActiveMenuIndex.delay(100);
		}
	},
	displaySubmenu: function(index, menuFx, submenus) {
		if (index != Main.currentMenu) {
			var obj = {};
			submenus.each(function(el, i) {
				var hide = (index != i);
				obj[i] = {};
				obj[i]['display'] = hide ? 'none' : 'block';
			});

			var submenuitems;
			if (index != -1) {
				submenuitems = submenus[index].getChildren('li');
				submenuitems.each(function(submenuitem, j) {
					if (Browser.Engine.trident) {
						submenuitem.setStyle('display', 'none');
					}
					else {
						submenuitem.setStyle('opacity', 0);
					}
				});
			}
			
			menuFx.set(obj);
			if (index != -1) {
				var submenuitemsFx = new Fx.Elements(submenuitems, {duration: 120, link: 'chain', transition: Fx.Transitions.Quad.easeOut});
				submenuitems.each(function(submenuitem, j) {
					var subobj = {};
					subobj[j] = {};
					if (Browser.Engine.trident) {
						subobj[j]['display'] = 'block';
					}
					else {
						subobj[j]['opacity'] = 1;
					}
					submenuitemsFx.start(subobj);
				});
			}
			Main.currentMenu = index;
		}
	},
	toggleSitemap: function() {
		var bShow = !Main.toggleSitemapFx.open;

		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();
		}	
	}
};
window.addEvent('domready', Main.init);
window.addEvent('load', Main.start);


