window.addEvent('domready', function ()
{

/******************** sliding navigation *******************/
	// hide inactive submenues
	var wsActiveNavSlide = null;
	$$('ul#nav ul').each(function(el) {
	
		var parentLink = el.getParent().getElement('a');
		var slide = new Fx.Slide(el, {'onComplete':function(){
				if(el.retrieve('link'))
					window.location.href = el.retrieve('link');
			}});
		el.store('slide', slide);
		
		if(!parentLink.hasClass('active')) {

			slide.hide();

			parentLink.addEvent('click', function()
			{
				if(slide.open) {
					slide.slideOut();
					wsActiveNavSlide = null;
				} else {
					slide.slideIn();
					if(wsActiveNavSlide != null) wsActiveNavSlide.slideOut();
					wsActiveNavSlide = slide;
				}
				return false;
			});

		}
		
	});
	

	$$('ul#nav ul a').each(function(el) {
		
		el.addEvent('click', function()
		{
			var clickedList = el.getParent('ul');
			var stopEvent = false;
			
			$$('ul#nav ul').each(function(someList) {
				if(someList != clickedList) {
					stopEvent = true;
					someList.store('link', el.get('href'));
					someList.retrieve('slide').slideOut();
				}
			});
			
			return !stopEvent;

		});
		
	});
	
/************************* common slides ****************************/
	
	/*
	a slidegroup element is a set of slideboxes.
	if one slidebox in a slidegroup is getting opened, all other boxes will be closed.
	the slider element is the part of the slidebox that will be hidden and may slide in.
	triggermore and triggerless are the elements to trigger the slider to slide in (more) or out (less).
	they will only be visible when expedient
	*/
	$$('.slideGroup').each(function(group){
		group.store('boxes',Array());
	});
	
	$$('.slidebox').each(function(box) {
		
		var slider = box.getElement('.slider');
		
		if(slider.getElement('.cms_editable')!=null) return;
		
		var slide = new Fx.Slide(slider);
		slide.hide();
		
		var group = null;
		box.getParents().each(function(parent){
			if(parent.hasClass('slideGroup')) {
				group = parent;
				var boxes = group.retrieve('boxes');
				boxes[boxes.length] = box;
			}
		});
		
		box.store('slide', slide);
		box.store('group', group);
		box.store('triggerMore', Array());
		box.store('triggerLess', Array());


		function slideMore(trigger){
			
			// hide other slides in this group
			if(group!=null) {
				group.retrieve('boxes').each(function(otherbox){
					if(otherbox==box) return;
					otherbox.retrieve('slide').slideOut();
					otherbox.retrieve('triggerLess').each(function(trigger) {
						trigger.setStyle('display','none');
					});
					otherbox.retrieve('triggerMore').each(function(trigger) {
						trigger.setStyle('display','block');
					});
				});
			}
			
			// slide in and show triggers
			slide.slideIn();
			box.retrieve('triggerMore').each(function(trigger) {
				trigger.setStyle('display','none');
			});
			box.retrieve('triggerLess').each(function(trigger) {
				trigger.setStyle('display','block');
			});
		}
		
		
		
		function slideLess(trigger){
			// slide out and show triggers
			slide.slideOut();
			box.retrieve('triggerLess').each(function(trigger) {
				trigger.setStyle('display','none');
			});
			box.retrieve('triggerMore').each(function(trigger) {
				trigger.setStyle('display','block');
			});
		}

	
		box.getElements('.slideTrigger').each(function(trigger) {

			trigger.setStyle('cursor','pointer');

			trigger.addEvent('click', function(){
				
				if(slide.open) {
					slideLess(trigger);
				} else {
					slideMore(trigger);
				}

			});
		});
		
		
		
		box.getElements('.slideTriggerMore').each(function(trigger) {

			// display more-trigger
			trigger.setStyle('display','block');

			var moreTriggers = box.retrieve('triggerMore');
			moreTriggers[moreTriggers.length] = trigger;
			
			trigger.addEvent('click', function(){slideMore(trigger);});
		});
		
		
		
		box.getElements('.slideTriggerLess').each(function(trigger) {

			var lessTriggers = box.retrieve('triggerLess');
			lessTriggers[lessTriggers.length] = trigger;

			trigger.addEvent('click', function(){slideLess(trigger);});
		});
		
	});

});

window.addEvent('domready', function ()
{
	initGalerie();
});

function initGalerie() {

	$$('[rel]').each(function(el){
	
		var rel = el.getProperty('rel');
		
		if(rel!=null && rel.substr(0,8)=='galerie-') {
			el.addEvent('click', function() {
				Slimbox.open(galerieImages[rel.substr(8)],0,{'counterText': "Bild {x} von {y}"});
				return false;
			});
		}
		
	});
	
}
