jQuery.noConflict();
/* Flash Video Wechsel */
function createFlashVideo(file, id, width, height, previewImage){
	var so1 = new SWFObject("./player.swf", id+'_obj', width, height, "8", "#FFFFFF", "", "high", "", "");
	so1.addParam("swLiveConnect", "true");
	so1.addParam("allowScriptAccess", "always");
	so1.addParam("allowfullscreen", "true");
	so1.addParam("menu", "false");
	so1.addParam("wmode", "transparent");
	so1.addVariable("captions", "Lesch + Frei");
	so1.addVariable("file", file);
	so1.addVariable("image", previewImage);
	so1.addVariable("bufferlength", "10");
	so1.addVariable("controlbar", "bottom");
	so1.addVariable("autostart", "false");
	
	so1.addVariable("skin","./skins/modieus/modieus.xml");
	so1.write(id);

	return false;
}


function setGoogleMapsDirections(directions_form){
	var google_directions = this;
	var start_address = directions_form.getElement('.clean_address').get('value');
	var end_address = directions_form.getElement('.start_location').get('value');
	var google_directions = this;
	google_directions.load("from: " + end_address + " to: " + start_address, { "locale": 'en_US' });
	return false;
}

function initGoogleMaps(){
	var maps = $$('.google_maps');
	var article = $('article');
	var article_size = article.getSize();
	if(maps.length > 0){
		if (GBrowserIsCompatible()) {
			maps.each(
				function(map){
					var wrapper = map.getParent('div');
					var border_left = new Element('img', { 'class': 'left_shadow', 'src': 'pics/map-left-shadow.png' } );
					var border_bottom = new Element('img', { 'class': 'bottom_shadow', 'src': 'pics/map-bottom-shadow.png' } );
					var border_right = new Element('img', { 'class': 'right_shadow', 'src': 'pics/map-right-shadow.png' } );
					var border_top = new Element('img', { 'class': 'top_shadow', 'src': 'pics/map-top-shadow.png' } );
					border_left.inject(wrapper);
					border_bottom.inject(wrapper);
					border_right.inject(wrapper);
					border_top.inject(wrapper);
					var width = article_size.x;
					var height = map.getElement('.height').get('html') * 1;
					var longitude = map.getElement('.longitude').get('html') * 1;
					var latitude = map.getElement('.latitude').get('html') * 1;
					var zoom = map.getElement('.zoom').get('html') * 1;

					var marker = new GMarker(new GLatLng(longitude, latitude));

					map.setStyles(
						{
							'width': width,
							'height': height
						}
					);

					var google_map = new GMap2(map);
					google_map.setMapType(G_HYBRID_MAP);
					google_map.setUIToDefault();
					// google_map.enableRotation();
					
					var directions_form = map.getParent('form');
					var directions = directions_form.getElement('.direction');
					var google_directions = new GDirections(google_map, directions);
					// GEvent.addListener(google_directions, "load", onGDirectionsLoad);
					GEvent.addListener(google_directions, "error", handleGoogleMapsErrors);

					directions_form.addEvent('submit', setGoogleMapsDirections.bind(google_directions, directions_form));
					
					google_map.addOverlay(marker);
				    google_map.setCenter(new GLatLng(longitude, latitude), zoom);
				}
			);
		}
	}
}

// Google Maps Errors
function handleGoogleMapsErrors(){
	var google_directions = this;
	if(clang == 1){
		if (google_directions.getStatus().code == G_GEO_UNKNOWN_ADDRESS)
			alert("No corresponding geographic location could be found for one of the specified addresses. This may be due to the fact that the address is relatively new, or it may be incorrect.\nError code: " + google_directions.getStatus().code);
		else if (google_directions.getStatus().code == G_GEO_SERVER_ERROR)
			alert("A geocoding or directions request could not be successfully processed, yet the exact reason for the failure is not known.\n Error code: " + google_directions.getStatus().code);
		else if (google_directions.getStatus().code == G_GEO_MISSING_QUERY)
			alert("The HTTP q parameter was either missing or had no value. For geocoder requests, this means that an empty address was specified as input. For directions requests, this means that no query was specified in the input.\n Error code: " + google_directions.getStatus().code);
		else if (google_directions.getStatus().code == G_GEO_BAD_KEY)
			alert("The given key is either invalid or does not match the domain for which it was given. \n Error code: " + google_directions.getStatus().code);
	   	else if (google_directions.getStatus().code == G_GEO_BAD_REQUEST)
			alert("A directions request could not be successfully parsed.\n Error code: " + google_directions.getStatus().code);
		else alert("An unknown error occurred.");
	}else{
		if (google_directions.getStatus().code == G_GEO_UNKNOWN_ADDRESS)
			alert("Zur angegebenen Adresse konnte kein geographischer Standort ermittelt werden. Entweder ist die Adresse nicht korrekt oder relativ neu.\nError code: " + google_directions.getStatus().code);
		else if (google_directions.getStatus().code == G_GEO_SERVER_ERROR)
			alert("A geocoding or directions request could not be successfully processed, yet the exact reason for the failure is not known.\n Error code: " + google_directions.getStatus().code);
		else if (google_directions.getStatus().code == G_GEO_MISSING_QUERY)
			alert("The HTTP q parameter was either missing or had no value. For geocoder requests, this means that an empty address was specified as input. For directions requests, this means that no query was specified in the input.\n Error code: " + google_directions.getStatus().code);
		else if (google_directions.getStatus().code == G_GEO_BAD_KEY)
			alert("The given key is either invalid or does not match the domain for which it was given. \n Error code: " + google_directions.getStatus().code);
	   	else if (google_directions.getStatus().code == G_GEO_BAD_REQUEST)
			alert("A directions request could not be successfully parsed.\n Error code: " + google_directions.getStatus().code);
		else alert("Ein unbekannter Fehler ist aufgetreten.");		
	}
}

// weißes Overlay bei Kunden
function showClientOverlay(){
	var element = this;
	var overlay = element.getElement('.overlay');
	// overlay.get('morph').start( { 'opacity': 1 } );
	overlay.setStyle( 'opacity', 1 );
}

function hideClientOverlay(){
	var element = this;
	var overlay = element.getElement('.overlay');
	// overlay.get('morph').start( { 'opacity': 0 } );
	overlay.setStyle( 'opacity', 0 );
}

// Zitate-Overlay
function changeClientQuote(){
	var client = this;
	var overlay_content = $('overlay_content_slider');
	var current_slider = overlay_content.getElement('.shadowbox_text');
	var current_index = client.get('index') * 1;
	var list_elements = client.getElements('li');
	var element = list_elements[current_index];
	var shadowbox_content_clone = element.getElement('.shadowbox_text').clone();
	shadowbox_content_clone.inject(overlay_content);
	var current_slider_size = current_slider.getSize();
	current_slider.get('morph').start( { 'margin-left': -current_slider_size.x } ).chain(
		function(){
			current_slider.dispose();
		}
	);
	// initArrows();
	return false;
}

function showPreviousClientQuote(){
	var client = this;
	var current_index = client.get('index') * 1;
	var list_elements = client.getElements('li');
	var new_index = current_index - 1;
	if(new_index < 0){
		new_index = list_elements.length - 1;
	}
	client.set('index', new_index);
	var new_list_element = list_elements[new_index];
	var quote_exists_not = new_list_element.getElement('.no_quote').get('text') * 1;
	if(!quote_exists_not){
		changeClientQuote.bind(client).delay(0);
	}else{
		showPreviousClientQuote.bind(client).attempt();
	}
	return false;
}

function showNextClientQuote(){
	var client = this;
	var current_index = client.get('index') * 1;
	var list_elements = client.getElements('li');
	var new_index = current_index + 1;
	if(new_index >= list_elements.length){
		new_index = 0;
	}
	client.set('index', new_index);
	var new_list_element = list_elements[new_index];
	var quote_exists_not = new_list_element.getElement('.no_quote').get('text') * 1;
	if(!quote_exists_not){
		changeClientQuote.bind(client).delay(0);
	}else{
		showNextClientQuote.bind(client).attempt();
	}
	return false;
}

function hideClientQuote(){
	var container = $('OverlayContainer');
	container.get('morph').start( { 'opacity': 0 } ).chain(
		function(){
			container.dispose();
		}
	);
	window.removeEvents('resize');
	return false;
}

function setQuotePosition(){
	var overlay_content = this;
	var overlay_size = overlay_content.getSize();
	var window_size = window.getSize();
	var margin_top = (window_size.y - overlay_size.y)/2;
	if(margin_top < 0 ){
		margin_top = 0;
	}
	overlay_content.setStyle('margin-top', margin_top);
}

function showClientQuote(){
	var width = 785;
	var height = 500;
	var element = this; // li-element
	var parent_div = element.getParent('.clients');
	parent_div.set('index', element.get('rel'));
	var shadowbox_content_clone = element.getElement('.shadowbox_text').clone();
	
	// overlay
	var content_id = 'overlay_container';
	var overlay = new Overlay(
		{
			colour: 'transparent',
			opacity: 1,
			zIndex: 10,
			fadeIn: true
		}
	);
	// generate content
	var overlay_content = new Element('div',
		{
			'id': content_id,
			'class': 'client_overlay'
		}
	);
	// var previous_button = 'pics/pfeil_links.png';
	var previous_button = new Element('a',
		{
			'class': 'previous_button',
			'href': '#',
			'html': '<img src="pics/pfeil_links_grau.png" alt="" class="client_previous_button" />',
			'events': {
				'click': showPreviousClientQuote.bind(parent_div)
			}
		}
	);
	var next_button = new Element('a',
		{
			'class': 'next_button',
			'href': '#',
			'html': '<img src="pics/pfeil_rechts_grau.png" alt="" class="client_next_button" />',
			'events': {
				'click': showNextClientQuote.bind(parent_div)
			}
		}
	);
	var close_button = new Element('a',
		{
			'class': 'close_button',
			'href': '#',
			'html': '<img src="pics/schliessen_grau.png" alt="" />',
			'events': {
				'click': hideClientQuote
			}
		}
	);
	var overlay_content_wrapper = new Element('div',
		{
			'id': 'overlay_content_wrapper'
		}
	);
	var overlay_content_slider = new Element('div',
		{
			'id': 'overlay_content_slider'
		}
	);
	previous_button.inject(overlay_content);
	next_button.inject(overlay_content);
	close_button.inject(overlay_content);
	shadowbox_content_clone.inject(overlay_content_slider);
	overlay_content_slider.inject(overlay_content_wrapper);
	overlay_content_wrapper.inject(overlay_content);
	overlay_content.inject(overlay.container,'inside');
	var overlay_size = overlay_content.getSize();
	var window_size = window.getSize();
	var margin_top = (window_size.y - overlay_size.y)/2;
	if(margin_top < 0 ){
		margin_top = 0;
	}
	overlay_content.setStyle('margin-top', margin_top);
	window.addEvent('resize', setQuotePosition.bind(overlay_content));
	
	initArrows();
	overlay.show();
	return false;
}

function initClientOverview(){
	var article = $('article');
	var client_lists = article.getElements('.clients');
	client_lists.each(
		function(list){
			var counter = 0;
			var list_elements = list.getElements('li');
			list_elements.each(
				function(element){
					element.set('rel', counter);
					var overlay = element.getElement('.overlay');
					overlay.setStyle('opacity', 0);
					element.addEvents(
						{
							'mouseenter': showClientOverlay,
							'mouseleave': hideClientOverlay
						}
					);
					var quote_contents = overlay.getElement('.shadowbox_wrapper');
					quote_contents.setStyle('display', 'none');
					var client_about_leschfrei = element.getElement('.client_about_lf');
					client_about_leschfrei.addEvent('click', showClientQuote.bind(element));
					counter++;
				}
			);
		}
	);
}

function slideImage(){
	var slideshow = this;
	var current_index = slideshow.get('index') * 1;
	var current_slider = slideshow.getElement('.slider');
	var current_slider_size = current_slider.getSize();
	var elements = slideshow.getElements('.element');
	if(elements.length > 1){
		if(elements.length <= current_index){
			current_index = 0;
		}
		var next_element = elements[current_index];
		var next_image = next_element.getElement('.image').get('text');
		if(next_image == ''){
			next_image = next_element.getElement('.image').get('title');
		}
		var next_caption = next_element.getElement('.caption').get('html');
		if(next_caption == ''){
			next_caption = (next_element.getElement('.caption').get('title') != null ? next_element.getElement('.caption').get('title') : '');
		}
		var url = next_element.getElement('.url').get('text');
		if(url == ''){
			url = (next_element.getElement('.url').get('title') != null ? next_element.getElement('.url').get('title') : '');
		}
		new Asset.images([next_image],
			{
				onComplete: function(){
					var new_slider = new Element('div',
						{
							'class': 'slider'
						}
					);
					var new_caption = new Element('div',
						{
							'class': 'caption',
							'html': '<p>'+next_caption+'</p>'
						}
					);
					var new_image = new Element('img',
						{
							'alt': '',
							'src': next_image
						}
					);
					var image_div = new Element('div',
						{
							'class': 'image',
							'html': '<table cellpadding="0" cellspacing="0" border="0"><tr><td><img src="'+next_image+'" alt="" /></td></tr></table>'
						}
					);
					if(url != ''){
						image_div.addClass('target');
						image_div.addEvent('click',
							function(){
								window.location.href = url;
								return false;
							}
						);
					}
					// changed becaus of ie7 bug
				/*	var table = new Element('table',
						{
							'border': '0',
							'cellspacing': '0',
							'cellpadding': '0'
						}
					);
					var row = new Element('tr');
					var cell = new Element('td');
					new_image.inject(cell);
					cell.inject(row);
					row.inject(table);
					table.inject(image_div); */
					new_caption.inject(new_slider);
					image_div.inject(new_slider);
					new_slider.inject(slideshow);
					// new_slider.get('morph').start( { 'opacity': [0,1] } ); // einblenden des neuen Elements
					current_slider.get('morph').start( { 'margin-left': -current_slider_size.x, 'opacity': [1,0] } ).chain(
						function(){
							current_slider.dispose();
							current_index++;
							slideshow.set('index', current_index);
							slideImage.bind(slideshow).delay(2500);					
						}
					);
				}
			}
		);

	}
}

function initSlideshow(){
	var article = $('article');
	var slideshows = article.getElements('.slideshow');
	slideshows.each(
		function(slideshow){
			slideshow.set('index', 1);
			slideImage.bind(slideshow).delay(2500);
		}
	);
}

function setBackgroundImageStyles(){
	var footer = $('footer');
	var background_image = document.getElement('.background_image');
	var background_image_wrapper = background_image.getParent('div');
	var size = background_image.getSize();
	var window_size = window.getSize();
	
	var ratio = size.x / size.y;
	var window_ratio = window_size.x / (window_size.y - background_image.getStyle('top').toInt());
	var width = '100%';
	var height = 'auto';
	if(window_ratio > ratio){
		// do nothing
	}else{
		var width = 'auto';
		var height = '100%';
	}
	background_image.setStyles(
		{
			'width': width,
			'height': height
		}
	);
}

function initBackgroundImage(){
	var background_image = document.getElement('.background_image');
	if(background_image){
		window.addEvent('resize', setBackgroundImageStyles.bind(background_image));
		new Asset.images([background_image.src], {
			onComplete: function(){
				setBackgroundImageStyles();
			}
		});
	}
	var background_div = $('background');
	if(background_div){
		var scroll_size = window.getScrollSize();
		background_div.setStyle('height', scroll_size.y);
		window.addEvent('resize',
			function(){
				background_div.setStyle('height', 0);
				scroll_size = window.getScrollSize();
				background_div.setStyle('height', scroll_size.y);
			}
		);
	}
}

// Leitsätze
var current_timer;
function slideLeitsaetze(){
	var slideshow = this;
	var slideshow_navigation = slideshow.getElement('.slideshow_navigation');
	var current_index = slideshow.get('index') * 1;
	var current_slider = slideshow.getElement('.slider');
	var current_slider_size = current_slider.getSize();
	var elements = slideshow.getElements('.element');
	if(elements.length > 1){
		if(elements.length <= current_index){
			current_index = 0;
		//	return; // soll nicht im kreis laufen
		}
		var anchor = slideshow_navigation.getElements('a')[current_index];
		var next_element = elements[current_index];
		var next_image = next_element.getElement('.image').get('text');
		var next_caption = next_element.getElement('.caption').get('html');
		new Asset.images([next_image],
			{
				onComplete: function(){
					var new_slider = new Element('div',
						{
							'class': 'slider leitsatz'
						}
					);
					var new_caption = new Element('div',
						{
							'class': 'text',
							'html': next_caption
						}
					);
					var new_image = new Element('img',
						{
							'alt': '',
							'src': next_image
						}
					);
					new_image.inject(new_slider);
					new_caption.inject(new_slider);
					new_slider.inject(slideshow);
					new_slider.get('morph').start( { 'opacity': [0,1] } ); // einblenden des neuen Elements
					setSlideshowNavigation.bind(anchor).delay(0);
					current_slider.get('morph').start( { 'margin-left': -current_slider_size.x, 'opacity': [1,0] } ).chain(
						function(){
							current_slider.dispose();
							while(slideshow.getElements('.slider').length > 1){
								slideshow.getElement('.slider').dispose(); // bei mehrfachklick etc. müssen die überflüssigen Elemente entfernt werden
							}
							current_index++;
							slideshow.set('index', current_index);
							current_timer = slideLeitsaetze.bind(slideshow).delay(8000);						
						}
					);
				}
			}
		);
	}
}

function setSlideshowNavigation(){
	var anchor = this;
	var slideshow_navigation = anchor.getParent('.slideshow_navigation');
	var anchors = slideshow_navigation.getElements('a');
	anchors.each(
		function(link){
			link.removeClass('active');
		}
	);
	anchor.addClass('active');
}

function showLeitsatz(anchor){
	var slideshow = this;
	$clear(current_timer);
	slideshow.set('index', anchor.get('rel'));
	
	slideLeitsaetze.bind(slideshow).delay(0);
	return false;
}

function showPreviousLeitsatz(){
	var slideshow = this;
	var previous_index = ((slideshow.get('index') * 1) - 2);
	var elements = slideshow.getElements('.element');
	if(previous_index < 0){
		previous_index = elements.length - 1; // 0
	} /* else{ */
		$clear(current_timer);
		slideshow.set('index', previous_index);
		slideLeitsaetze.bind(slideshow).delay(0);
	/* } */
	return false;
}

function showNextLeitsatz(){
	var slideshow = this;
	$clear(current_timer);
	
	slideLeitsaetze.bind(slideshow).delay(0);
	return false;
}

function showSlideshowNavigationLeitsaetze(){
	var slideshow_navigation_animated = this;
	slideshow_navigation_animated.get('morph').start( { 'height': 80 } );
}

function hideSlideshowNavigationLeitsaetze(){
	var slideshow_navigation_animated = this;
	slideshow_navigation_animated.get('morph').start( { 'height': 10 } );
}

function initSlideshowLeitsaetze(){
	var wrapper = $('wrapper');
	var article = $('article');
	var slideshows = article.getElements('.controllable_slideshow');
	slideshows.each(
		function(slideshow){
			slideshow.set('index', 1);
			current_timer = slideLeitsaetze.bind(slideshow).delay(8000);
			var slideshow_navigation = slideshow.getElement('.slideshow_navigation');
			var slideshow_navigation_animated = slideshow.getElement('.slideshow_navigation_animated');
			if(slideshow_navigation_animated){
				slideshow_navigation_animated.setStyle('height', 10);
				slideshow_navigation_animated.addEvents(
					{
						'mouseenter': showSlideshowNavigationLeitsaetze,
						'mouseleave': hideSlideshowNavigationLeitsaetze
					}
				);
			}
			var anchors = slideshow_navigation.getElements('a');
			anchors.each(
				function(anchor){
					anchor.addEvent('click', showLeitsatz.bind(slideshow, anchor));
				}
			);
			var arrow_left = $('arrow_left');
			var arrow_right = $('arrow_right');
			arrow_left.addClass('leitsatz_arrow');
			arrow_right.addClass('leitsatz_arrow');
			arrow_left.inject(wrapper);
			arrow_right.inject(wrapper);
			arrow_left.addEvent('click', showPreviousLeitsatz.bind(slideshow));
			arrow_right.addEvent('click', showNextLeitsatz.bind(slideshow));
		}
	);
}

function initBranchesAccordion(){
	var article = $('article');
	var brancheexperiences = article.getElements('.branchenerfahrung');
	brancheexperiences.each(
		function(experience){
			var togglers = experience.getElements('h2');
			var elements = experience.getElements('.branche');
			var accordion = new Fx.Accordion(
				togglers,
				elements,
				{
					onActive: function(toggler, element){
						toggler.addClass('active');
						element.addClass('active');
					},
					onBackground: function(toggler, element){
						toggler.removeClass('active');
						element.removeClass('active');
					},
					show: false,
					display: -1
				}
			);
		}
	);
}

// Arbeitsbeispiele Übersicht
function resetCase(){
	var overview = this;
	var list_elements = overview.getElements('li');
	list_elements.each(
		function(element){
			element.removeClass('active');
			element.removeClass('inactive');
			// element.get('morph').start( { 'opacity': 1 } );
			element.setStyle('opacity', 1);
		}
	);
}

function highlightCase(){
	var element = this;
	var list = element.getParent('ul');
	var list_elements = list.getElements('li');
	list_elements.each(
		function(list_element){
			list_element.removeClass('active');
			list_element.addClass('inactive');
		}
	);
	element.removeClass('inactive');
	element.addClass('active');
	list_elements.each(
		function(li){
			var new_opacity = 0.3;
			if(li.hasClass('active')){
				new_opacity = 1;
			}
			// li.get('morph').start( { 'opacity': new_opacity } );
			li.setStyle('opacity', new_opacity);
		}
	);
}

function initCasesOverview(){
	var article = $('article');
	var cases_overview = article.getElements('.cases_overview');
	cases_overview.each(
		function(overview){
			var list_elements = overview.getElements('li');
			list_elements.each(
				function(element){
					element.addEvent('mouseenter', highlightCase);
				}
			);
			overview.addEvent('mouseleave', resetCase);
		}
	);
	var further_cases = article.getElements('.further_cases');
	further_cases.each(
		function(overview){
			var list_elements = overview.getElements('li');
			list_elements.each(
				function(element){
					element.addEvent('mouseenter', highlightCase);
				}
			);
			overview.addEvent('mouseleave', resetCase);
		}
	);
}

function hideCaseFilter(){
	var type = this;
	var list = type.getElement('ul');
	var button = type.getElement('.button');
	button.removeEvents('click');
	button.addEvent('click', showCaseFilter.bind(type));
	list.get('morph').start( { 'height': 0 } ).chain(
		function(){
			list.setStyle('padding-top', 0);
		}
	);
	return false;
}

function showCaseFilter(){
	var type = this;
	var list = type.getElement('ul');
	var button = type.getElement('.button');
	button.removeEvents('click');
	button.addEvent('click', hideCaseFilter.bind(type));
	list.setStyle('height', 'auto');
	var list_size = list.getSize();
	var padding_top = list.get('initial_padding_top').toInt();
	list.setStyles(
		{
			'height': 0,
			'padding-top': padding_top
		}
	);
	var filter_types = type.getParent('.case_filter').getElements('div');
	filter_types.each(
		function(filter_type){
			if(filter_type.className != type.className){
				hideCaseFilter.bind(filter_type).delay(0);
			}
		}
	);
	list.get('morph').start( { 'height': list_size.y } );
	return false;
}

function initCasesFilter(){
	var article = $('article');
	var cases_filter = article.getElements('.case_filter');
	cases_filter.each(
		function(filter){
			var filter_types = filter.getElements('div');
			filter_types.each(
				function(type){
					var button = type.getElement('.button');
					var list = type.getElement('ul');
					var padding_top = list.getStyle('padding-top').toInt();
					list.set('initial_padding_top', padding_top);
					list.setStyles(
						{
							'padding-top': 0,
							'height': 0,
							'overflow': 'hidden'
						}
					);
					button.addEvent('click', showCaseFilter.bind(type));
				}
			);
		}
	);
}

// Arbeitsbeispiel
function showCaseNavigation(){
	var bottom = this;
	var case_div = bottom.getParent('.case');
	var case_content = case_div.getElement('.case_content');
	var bottom_size = bottom.getSize();
	var case_navigation = bottom.getElement('.case_navigation');
	var case_content_size = case_content.getSize();
	bottom.setStyle('z-index', 10);
	case_navigation.get('morph').start( { 'height': bottom_size.y } );
	case_content.get('morph').start( { 'height': 445 } );
	
	var anchors = case_navigation.getElements('a');
	anchors.each(
		function(anchor){
			anchor.removeClass('inactive');
		}
	);
}

function hideCaseNavigation(){
	var bottom = this;
	var case_div = bottom.getParent('.case');
	var case_content = case_div.getElement('.case_content');
	var bottom_size = bottom.getSize();
	var case_navigation = bottom.getElement('.case_navigation');
	var case_content_size = case_content.getSize();
	bottom.setStyle('z-index', 4);
	case_navigation.get('morph').start( { 'height': 10 } );
	case_content.get('morph').start( { 'height': 518 } );
	
	var anchors = case_navigation.getElements('a');
	anchors.each(
		function(anchor){
			if(!anchor.hasClass('active')){
				anchor.addClass('inactive');
			}
		}
	);
}

// bereinigt die inhalte, falls der benutzer mehrmals klickt
function cleanCaseMedia(direction){
	var single_case = this;
	var all_slider = single_case.getElements('.slider');
	if(direction == 'right'){
		while(all_slider.length > 1){
			all_slider[(all_slider.length - 1)].dispose();
			all_slider = single_case.getElements('.slider');
		}
	}else{
		var all_slider = single_case.getElements('.slider');
		while(all_slider.length > 1){
			all_slider[0].dispose();
			all_slider = single_case.getElements('.slider');
		}
	}
}

function changeCaseSlideshowImage(image_div){
	var duration = image_div.get('duration') * 1;
	
	var single_case = this;
	var current_index = single_case.get('index') * 1;
	var anchors = single_case.getElements('a.case_link');
	var current_anchor = anchors[current_index];
	var list_element = current_anchor.getParent('li');
	var files = list_element.getElements('.original_file');
	if(files.length > 1){
		var current_image_index = image_div.get('index') * 1;
		var next_file_index = current_image_index+1;
		if(!files[next_file_index]){
			next_file_index = 0;
		}
		var filename = files[next_file_index].get('text');
		var fullpath = 'index.php?rex_img_type=slideshow&rex_img_file='+filename;
		var image_div_size = image_div.getSize();
		if(Browser.Engine.trident && navigator.appVersion.indexOf('MSIE 7') > 0){
			var html_out = image_div.get('html') + '<table class="image_fade" cellpadding="0" cellspacing="0" border="0"><tr><td><img src="'+fullpath+'" alt="" /></td></tr></table>';
			image_div.set('html', html_out);
		}else{
			var image = new Element('img',
				{
					'src': fullpath	
				}
			);
			var table = new Element('table',
				{
					'cellpadding': 0,
					'cellspacing': 0,
					'border': 0,
					'class': 'image_fade'
				}
			);
			var row = new Element('tr');
			var cell = new Element('td');
			image.inject(cell);
			cell.inject(row);
			row.inject(table);
			table.inject(image_div);
		}

		var current_table = image_div.getElement('table');
		image_div.set('index', next_file_index);
		var single_case_size = single_case.getSize();

		new Asset.images([fullpath],
			{
				onComplete: function(){
					current_table.set('morph', { duration: 310 } ).get('morph').start( { 'opacity': [1,0] } ).chain(
						function(){
							current_table.dispose();
							var table = image_div.getElement('table');
							table.removeClass('image_fade');
							changeCaseSlideshowImage.bind(single_case, image_div).delay(duration);
						}
					);
				}
			}
		);
	}
}

function initCaseSlideshow(image_div){
	var single_case = this;
	var current_index = single_case.get('index') * 1;
	var anchors = single_case.getElements('a.case_link');
	var current_anchor = anchors[current_index];
	var list_element = current_anchor.getParent('li');
	var duration = list_element.getElement('.duration').get('html') * 1; // current_anchor.getElement('duration).get('text') * 1;
	if(duration > 0){
		
	}else{
		duration = 1500;
	}
	var list_element = current_anchor.getParent('li');
	var files = list_element.getElements('.original_file');
	if(files.length > 1){
		image_div.set('duration', duration);
		changeCaseSlideshowImage.bind(single_case, image_div).delay(duration);
	}
}

function showCaseMedia(){
	var single_case = this;
	var animate = single_case.get('animate');
	var current_index = single_case.get('index') * 1;
	var case_content = single_case.getElement('.case_content');
	var case_navigation = single_case.getElement('.case_navigation');
	var anchors = case_navigation.getElements('a.case_link');
	var anchor = anchors[current_index];
	var old_anchor = case_navigation.getElement('.active');
	old_anchor.removeClass('active');
	anchor.removeClass('inactive');
	anchor.addClass('active');
	var list_element = anchor.getParent('li');
	var original_file = list_element.getElement('.original_file');
	var filename = original_file.get('text');

	var current_slider = case_content.getElement('.slider');
	var current_slider_size = current_slider.getSize();
	var caption_text = list_element.getElement('.original_file_title').get('text');
	var website_link = list_element.getElement('.website_link'); // .get('html')
	// Bilder
	if(original_file.hasClass('jpg') || original_file.hasClass('gif') || original_file.hasClass('png')){
		if(filename != ''){
			var fullpath = 'index.php?rex_img_type=slideshow&rex_img_file='+filename;
			new Asset.images([fullpath],
				{
					onComplete: function(){
						var slider_margin_left = 0;
						var animation_direction = single_case.get('direction');
						if(animation_direction == 'right'){
							slider_margin_left = -current_slider_size.x;
						}
						var slider = new Element('div',
							{
								'class': 'slider',
								'styles': {
									'margin-left': slider_margin_left
								}
							}
						);
						var content_div = new Element('div',
							{
								'class': 'image'
							}
						);
						content_div.set('index', 0);

						var content = new Element('img',
							{
								'src': fullpath
							}
						);
						var table = new Element('table',
							{
								'cellpadding': 0,
								'cellspacing': 0,
								'border': 0
							}
						);
						var row = new Element('tr');
						var cell = new Element('td');
						content.inject(cell);
						cell.inject(row);
						row.inject(table);
						var html_out = '';
					//	if(website_link != ''){
					//		html_out = '<p>'+caption_text+'</p>'; //  class="website_link" | +'<br />'+website_link
					//	}else{
							html_out = '<p>'+caption_text+'</p>';
					//	}
						var caption = new Element('div',
							{
								'class': 'caption',
								'html': html_out
							}
						);
						if(website_link){
							var website_link_clone = website_link.clone();
							website_link_clone.removeClass('var');
							website_link_clone.inject(slider);
						}
						caption.inject(slider);
						table.inject(content_div);
						if(Browser.Engine.trident && navigator.appVersion.indexOf('MSIE 7') > 0){
							var table_html_contents = content_div.get('html');
							content_div.set('html', table_html_contents);
						}
						content_div.inject(slider);
						if(animate != 'false'){
							if(animation_direction == 'right'){
								slider.inject(current_slider, 'before');
								current_slider.get('morph').start( { 'opacity': 0 } );
								slider.get('morph').start( { 'margin-left': 0, 'opacity': [0,1] } ).chain(
									function(){
										current_slider.dispose();
										single_case.set('direction', '');
										cleanCaseMedia.bind(single_case, animation_direction).attempt();
										initCaseSlideshow.bind(single_case, content_div).attempt();
									}
								);
							}else{
								slider.inject(case_content);
								current_slider.get('morph').start( { 'margin-left': -current_slider_size.x, 'opacity': 0 } ).chain(
									function(){
										current_slider.dispose();
										single_case.set('direction', '');
										cleanCaseMedia.bind(single_case, animation_direction).attempt();
										initCaseSlideshow.bind(single_case, content_div).attempt();
									}
								);
							}
						}else{
							slider.inject(case_content);
							current_slider.dispose();
							single_case.set('direction', '');
							initCaseSlideshow.bind(single_case, content_div).attempt();
						}
					}
				}
			);
		}
	}
	if(original_file.hasClass('mp3') || original_file.hasClass('mp4') || original_file.hasClass('flv')){
		var fullpath = './files/'+filename;
		var player = './player.swf';
		var preview_image = list_element.getElement('.preview_image');
	//	var caption_text = list_element.getElement('span.overlay').get('text');
		var website_link = list_element.getElement('.website_link'); // .get('html')
		var date = new Date();
		var flash_id = 'flash_'+date.getTime();
		if(original_file.hasClass('mp4') || original_file.hasClass('flv')){
			// prepare flash player
			var so1 = new SWFObject(player, flash_id+'_obj', 785, 518, "8", "#FFFFFF", "", "high", "", "");
			so1.addVariable("file", fullpath);
		}
		// Flash MP3 Playlist
		if(original_file.hasClass('mp3')){
			var playlist = list_element.getElement('.playlist').get('text');
			var all_files = list_element.getElements('.original_file');
			var playlist_entry_height = 32;
			var max_flash_height = 518;
			var min_flash_height = 32;
			var flash_height = max_flash_height - (all_files.length * playlist_entry_height);
			if(flash_height < min_flash_height){
				flash_height = min_flash_height;
			}
			// prepare flash player
			var so1 = new SWFObject(player, flash_id+'_obj', 785, flash_height, "8", "#FFFFFF", "", "high", "", ""); // height: 518
			so1.addVariable("file", playlist); // fullpath // ./playlists/pl_70_56.xml
		}
		if(preview_image){
			so1.addVariable("image", preview_image.get('text'));
		}
		so1.addParam("swLiveConnect", "true");
		so1.addParam("allowScriptAccess", "always");
		so1.addParam("allowfullscreen", "true");
		so1.addParam("menu", "false");
		so1.addParam("wmode", "transparent");
		so1.addVariable("captions", "");
		so1.addVariable("bufferlength", "10");
		so1.addVariable("controlbar", "bottom");
		so1.addVariable("autostart", "true");
		so1.addVariable("repeat", "list");

		so1.addVariable("skin","./skins/modieus/modieus.xml");
		var slider_margin_left = 0;
		var animation_direction = single_case.get('direction');
		if(animation_direction == 'right'){
			slider_margin_left = -current_slider_size.x;
		}
		var slider = new Element('div',
			{
				'class': 'slider',
				'styles': {
					'margin-left': slider_margin_left
				}
			}
		);
		var content = new Element('div',
			{
				'class': 'flash',
				'id': flash_id
			}
		);
		var html_out = '';
		//if(website_link != ''){
		//	html_out = '<p>'+caption_text+'</p>'; //  class="website_link" | '<br />'+website_link+
		//}else{
			html_out = '<p>'+caption_text+'</p>';
		//}
		var caption = new Element('div',
			{
				'class': 'caption',
				'html': html_out
			}
		);
		if(website_link){
			var website_link_clone = website_link.clone();
			website_link_clone.removeClass('var');
			website_link_clone.inject(slider);
		}
		caption.inject(slider);
		content.inject(slider);
		if(animation_direction == 'right'){
			slider.inject(current_slider, 'before');
		}else{
			slider.inject(case_content);
		}
		so1.write(flash_id);
		new Asset.images([fullpath, player, preview_image.get('text')],
			{
				onComplete: function(){
					if(animate != 'false'){
						if(animation_direction == 'right'){
							current_slider.get('morph').start( { 'opacity': 0 } );
							slider.get('morph').start( { 'margin-left': 0, 'opacity': [0,1] } ).chain(
								function(){
									current_slider.dispose();
									cleanCaseMedia.bind(single_case, animation_direction).attempt();
								}
							);
						}else{
							current_slider.get('morph').start( { 'margin-left': -current_slider_size.x, 'opacity': 0 } ).chain(
								function(){
									current_slider.dispose();
									cleanCaseMedia.bind(single_case, animation_direction).attempt();
								}
							);
						}
					}else{
						current_slider.dispose();
					}
					single_case.set('direction', '');
				}
			}
		);
	}
	
//	initArrows();
	return false;
}

function setCaseIndex(){
	var anchor = this;
	var single_case = anchor.getParent('.case');
	var current_index = single_case.get('index') * 1;
	var anchors = single_case.getElements('a.case_link');
	anchors[current_index].addClass('inactive');
	single_case.set('index', anchor.get('rel'));
	showCaseMedia.bind(single_case).attempt();
	return false;
}

function slideCaseNavigationRight(){
	var bottom = this;
	var bottom_size = bottom.getSize();
	var list = bottom.getElement('ul');
	var list_size = list.getSize();
	var case_navigation = bottom.getElement('.case_navigation');
	var list_element = case_navigation.getElement('li');
	var list_element_size = list_element.getSize();
	var margin_left = 13;
	var left = case_navigation.getStyle('left').toInt() * 1;
	if(left + '' == 'NaN'){
		left = 0;
	}
	// var new_position = left - margin_left - list_element_size.x;
	var new_position = left - 5;
	if(((left + list_size.x) * 1) > (bottom_size.x * 1) && case_navigation.hasClass('slide')){
		case_navigation.setStyle('left', new_position);
		slider_timeout = slideCaseNavigationRight.bind(bottom).delay(20);
		var slide_button = $('slide_arrow_left');
		slide_button.setStyle('visibility', 'visible');
	//	case_navigation.set('morph', { 'link': 'ignore'	} ).get('morph').start( { 'left': [left, new_position] } );
	}else{
		if( !(((left + list_size.x) * 1) > (bottom_size.x * 1)) ){
			var slide_button = $('slide_arrow_right');
			slide_button.setStyle('visibility', 'hidden');
		}
		$clear(slider_timeout);
	}
}

function slideCaseNavigationLeft(){
	var bottom = this;
	var bottom_size = bottom.getSize();
	var list = bottom.getElement('ul');
	var list_size = list.getSize();
	var case_navigation = bottom.getElement('.case_navigation');
	var list_element = case_navigation.getElement('li');
	var list_element_size = list_element.getSize();
	var margin_left = 13;
	var left = case_navigation.getStyle('left').toInt();
	// var new_position = left + margin_left + list_element_size.x;
	var new_position = left + 5;
	if(left < 0 && case_navigation.hasClass('slide')){
		case_navigation.setStyle('left', new_position);
		slider_timeout = slideCaseNavigationLeft.bind(bottom).delay(20);
		var slide_button = $('slide_arrow_right');
		slide_button.setStyle('visibility', 'visible');
	//	case_navigation.set('morph', { 'link': 'ignore'	} ).get('morph').start( { 'left': new_position } );
	}else{
		if( !(left < 0) ){
			var slide_button = $('slide_arrow_left');
			slide_button.setStyle('visibility', 'hidden');
		}
		$clear(slider_timeout);
	}
}

var slider_timeout;
function startBottomSliderLeft(){
	var bottom = this;
	var case_navigation = bottom.getElement('.case_navigation');
	case_navigation.addClass('slide');
	slider_timeout = slideCaseNavigationLeft.bind(bottom).delay(20);
}

function startBottomSliderRight(){
	var bottom = this;
	var case_navigation = bottom.getElement('.case_navigation');
	case_navigation.addClass('slide');
	slider_timeout = slideCaseNavigationRight.bind(bottom).delay(20);
}

function stopBottomSlider(){
	var bottom = this;
	var case_navigation = bottom.getElement('.case_navigation');
	case_navigation.removeClass('slide');
}

function initBottomSlider(){
	var bottom = this;
	var case_navigation = bottom.getElement('.case_navigation'); 
	var slide_arrow_right = new Element('img',
		{
			'src': '/pics/pfeil_rechts_rot.png',
			'id': 'slide_arrow_right',
			'events': {
				'mouseenter': startBottomSliderRight.bind(bottom),
				'mouseleave': stopBottomSlider.bind(bottom)
			}
		}
	);
	var slide_arrow_left = new Element('img',
		{
			'src': '/pics/pfeil_links_rot.png',
			'id': 'slide_arrow_left',
			'events': {
				'mouseenter': startBottomSliderLeft.bind(bottom),
				'mouseleave': stopBottomSlider.bind(bottom)
			},
			'styles': {
				'visibility': 'hidden'
			}
		}
	);
	var anchors = case_navigation.getElements('a.case_link');
	if(anchors.length > 6){
		slide_arrow_left.inject(bottom);
		slide_arrow_right.inject(bottom);
	}
}

function setNextCaseIndex(single_case){
	var anchors = this;
	var current_index = single_case.get('index') * 1;
	var new_index = current_index + 1;
	var anchor = anchors[new_index];
	if(anchor){
		//
	}else{
		anchor = anchors[0];
	}
	anchors[current_index].addClass('inactive');
	single_case.set('direction', 'left');
	setCaseIndex.bind(anchor).attempt();
	return false;
}

function setPreviousCaseIndex(single_case){
	var anchors = this;
	var current_index = single_case.get('index') * 1;
	var new_index = current_index - 1;
	var anchor = anchors[new_index];
	if(anchor){
		//
	}else{
		anchor = anchors[(anchors.length - 1)];
	}
	anchors[current_index].addClass('inactive');
	single_case.set('direction', 'right');
	setCaseIndex.bind(anchor).attempt();
	return false;
}

// vergrößerte version
function setCaseMagnifyPosition(){
	return false;
}

function hideMagnifiedContent(){
	var overlay_container = $('OverlayContainer');
	overlay_container.get('morph').start( { 'opacity': 0 } ).chain(
		function(){
			overlay_container.dispose();
		}
	);
	window.removeEvents('keydown');
	window.addEvent('keydown', handleCasesKeydown);
	return false;
}

function setPreviousMagnifiedCaseIndex(){
	var overlay_content_slider = $('overlay_content_slider');
	var single_case = this;
	var current_index = overlay_content_slider.get('index') * 1;
	current_index--;
	var anchors = single_case.getElements('a.case_link');
	var current_anchor = anchors[current_index];
	if(current_anchor){
		//
	}else{
		current_anchor = anchors[(anchors.length - 1)];
	}
	overlay_content_slider.set('direction', 'right');
	showMagnifiedCaseContents.bind(current_anchor, true).attempt();
	return false;
}

function setNextMagnifiedCaseIndex(){
	var overlay_content_slider = $('overlay_content_slider');
	var single_case = this;
	var current_index = overlay_content_slider.get('index') * 1;
	current_index++;
	var anchors = single_case.getElements('a.case_link');
	var current_anchor = anchors[current_index];
	if(current_anchor){
		//
	}else{
		current_anchor = anchors[0];
	}
	overlay_content_slider.set('direction', 'left');
	showMagnifiedCaseContents.bind(current_anchor, true).attempt();
	return false;
}

function showMagnifiedCaseContents(slide){
	var current_anchor = this;
	var overlay_content_slider = $('overlay_content_slider');
	var animation_direction = overlay_content_slider.get('direction');
	overlay_content_slider.set('direction');
	var overlay_content_wrapper = $('overlay_content_wrapper');
	var overlay_content_wrapper_size = overlay_content_wrapper.getSize();
	overlay_content_slider.set('index', current_anchor.get('rel'));
	var list_element = current_anchor.getParent('li');
	var original_file = list_element.getElement('.original_file');
	var filename = original_file.get('text');
	
	var slider_margin_left = 0;
	if(slide){
		var current_slider = overlay_content_slider.getElement('.slider');
		var current_slider_size = current_slider.getSize();
		if(animation_direction == 'right'){
			slider_margin_left =  -current_slider_size.x;
		}
	}
	// -----------------------
	if(original_file.hasClass('jpg') || original_file.hasClass('gif') || original_file.hasClass('png')){
		if(filename != ''){
			var fullpath = 'files/'+filename;
			new Asset.images([fullpath],
				{
					onComplete: function(){
						var slider = new Element('div',
							{
								'class': 'slider magnify',
								'styles': {
									'width': overlay_content_wrapper.getStyle('width').toInt(),
									'margin-left': slider_margin_left
								}
							}
						);
						var content = new Element('img',
							{
								'src': fullpath
							}
						);
						var table = new Element('table',
							{
								'cellpadding': 0,
								'cellspacing': 0,
								'border': 0,
								'styles': {
									'height': overlay_content_wrapper_size.y
								}
							}
						);
						var row = new Element('tr');
						var cell = new Element('td',
							{
								'styles': {
									'height': overlay_content_wrapper_size.y
								}
							}
						);
						content.inject(cell);
						cell.inject(row);
						row.inject(table);
						table.inject(slider);
						if(Browser.Engine.trident && navigator.appVersion.indexOf('MSIE 7') > 0){
							var table_html_contents = slider.get('html');
							slider.set('html', table_html_contents);
						}
						if(animation_direction == 'right'){
							slider.inject(current_slider, 'before');
							var ratio = overlay_content_wrapper_size.x / overlay_content_wrapper_size.y;
							var content_size = content.getSize();
							var image_ratio = content_size.x / content_size.y;
							var width = '100%';
							var height = 'auto';
							if(ratio > image_ratio){
								width = 'auto';
								height = '100%';
							}
							content.setStyles(
								{
									'width': width,
									'height': height
								}
							);
							current_slider.get('morph').start( { 'opacity': 0 } );
							slider.get('morph').start( { 'margin-left': 0, 'opacity': [0,1] } ).chain(
								function(){
									current_slider.dispose();
									initMagnifiedCaseSlideshow.bind(slider).attempt();
								}
							);
						}else{
							slider.inject(overlay_content_slider);
							var ratio = overlay_content_wrapper_size.x / overlay_content_wrapper_size.y;
							var content_size = content.getSize();
							var image_ratio = content_size.x / content_size.y;
							var width = '100%';
							var height = 'auto';
							if(ratio > image_ratio){
								width = 'auto';
								height = '100%';
							}
							content.setStyles(
								{
									'width': width,
									'height': height
								}
							);
							if(slide){
								current_slider.get('morph').start( { 'margin-left': -current_slider_size.x, 'opacity': 0 } ).chain(
									function(){
										current_slider.dispose();
										initMagnifiedCaseSlideshow.bind(slider).attempt();
									}
								);
							}else{
								initMagnifiedCaseSlideshow.bind(slider).attempt();
							}
						}
					}
				}
			);
		}
	}
	if(original_file.hasClass('mp3') || original_file.hasClass('mp4') || original_file.hasClass('flv')){
		var fullpath = './files/'+filename;
		var player = './player.swf';
		var preview_image = list_element.getElement('.preview_image');
		var date = new Date();
		var flash_id = 'flash_'+date.getTime();
		if(original_file.hasClass('mp4') || original_file.hasClass('flv')){
			// prepare flash player
			var so1 = new SWFObject(player, flash_id+'_obj', overlay_content_wrapper_size.x, '100%', "8", "#FFFFFF", "", "high", "", "");
			so1.addVariable("file", fullpath);
		}
		// Flash MP3 Playlist
		if(original_file.hasClass('mp3')){
			var playlist = list_element.getElement('.playlist').get('text');
			var all_files = list_element.getElements('.original_file');
			var playlist_entry_height = 32;
			var max_flash_height = overlay_content_wrapper_size.y;
			var min_flash_height = 32;
			var flash_height = max_flash_height - (all_files.length * playlist_entry_height);
			if(flash_height < min_flash_height){
				flash_height = min_flash_height;
			}
			// prepare flash player
			var so1 = new SWFObject(player, flash_id+'_obj', overlay_content_wrapper_size.x, flash_height, "8", "#FFFFFF", "", "high", "", ""); // height: 518
			so1.addVariable("file", playlist); // fullpath // ./playlists/pl_70_56.xml
		}
		if(preview_image){
			so1.addVariable("image", preview_image.get('text'));
		}
		so1.addParam("swLiveConnect", "true");
		so1.addParam("allowScriptAccess", "always");
		so1.addParam("allowfullscreen", "true");
		so1.addParam("menu", "false");
		so1.addParam("wmode", "transparent");
		so1.addVariable("captions", "");
		so1.addVariable("bufferlength", "10");
		so1.addVariable("controlbar", "bottom");
		so1.addVariable("autostart", "true");
		so1.addVariable("repeat", "list");

		so1.addVariable("skin","./skins/modieus/modieus.xml");
		
		var slider = new Element('div',
			{
				'class': 'slider magnify',
				'styles': {
					'margin-left': slider_margin_left
				}
			}
		);
		var content = new Element('div',
			{
				'class': 'flash',
				'id': flash_id
			}
		);

		content.inject(slider);
		if(animation_direction == 'right' && slide){
			slider.inject(current_slider, 'before');
		}else{
			slider.inject(overlay_content_slider);
		}
		so1.write(flash_id);
		new Asset.images([fullpath, player, preview_image.get('text')],
			{
				onComplete: function(){
					if(slide){
						if(animation_direction == 'right'){
							current_slider.get('morph').start( { 'opacity': 0 } );
							slider.get('morph').start( { 'margin-left': 0, 'opacity': [0,1] } ).chain(
								function(){
									current_slider.dispose();
								}
							);
						}else{
							current_slider.get('morph').start( { 'margin-left': -current_slider_size.x, 'opacity': 0 } ).chain(
								function(){
									current_slider.dispose();
								}
							);
						}
					}
				}
			}
		);
	}
	initArrows();
}

function magnifyCaseContent(single_case){
	var anchors = this;
	var current_index = single_case.get('index') * 1;
	var current_anchor = anchors[current_index];

	// overlay
	var content_id = 'overlay_container';
	var overlay = new Overlay(
		{
			colour: 'transparent',
			opacity: 1,
			zIndex: 10,
			fadeIn: true
		}
	);
	// generate content
	var window_size = window.getSize();
	var content_padding_vertical = 40;
	var content_padding_horizontal = 10;
	var overlay_content = new Element('div',
		{
			'id': content_id,
			'class': 'case_overlay',
			'styles': {
				'width': window_size.x - (2 * content_padding_horizontal),
				'height': window_size.y - (2 * content_padding_vertical),
				'margin-top': content_padding_vertical
			}
		}
	);
	var previous_button = new Element('a',
		{
			'class': 'previous_button case_previous',
			'href': '#',
			'html': '<img src="pics/pfeil_links_grau.png" alt="" />',
			'events': {
				'click': setPreviousMagnifiedCaseIndex.bind(single_case)
			},
			'styles': {
				'top': (window_size.y / 2) - 30
			}
		}
	);
	var next_button = new Element('a',
		{
			'class': 'next_button case_next',
			'href': '#',
			'html': '<img src="pics/pfeil_rechts_grau.png" alt="" />',
			'events': {
				'click': setNextMagnifiedCaseIndex.bind(single_case)
			},
			'styles': {
				'top': (window_size.y / 2) - 30
			}
		}
	);
	var close_button = new Element('a',
		{
			'class': 'close_button case_close',
			'href': '#',
			'html': '<img src="pics/schliessen_grau.png" alt="" />',
			'events': {
				'click': hideMagnifiedContent
			}
		}
	);

	previous_button.inject(overlay_content);
	next_button.inject(overlay_content);
	close_button.inject(overlay_content);
	
	var overlay_content_wrapper = new Element('div',
		{
			'id': 'overlay_content_wrapper',
			'class': 'magnified',
			'styles': {
				'height': '100%',
				'width': window_size.x - 80 - (2 * content_padding_horizontal)
			}
		}
	);
	var overlay_content_slider = new Element('div',
		{
			'id': 'overlay_content_slider',
			'class': 'magnified'
		}
	);

	overlay_content_slider.inject(overlay_content_wrapper);
	overlay_content_wrapper.inject(overlay_content);
	overlay_content.inject(overlay.container, 'inside');
	
	showMagnifiedCaseContents.bind(current_anchor, false).attempt();
	
	var overlay_size = overlay_content.getSize();
	var margin_top = (window_size.y - overlay_size.y)/2;
	if(margin_top < 0 ){
		margin_top = 0;
	}
	overlay_content.setStyle('margin-top', margin_top);
	window.addEvent('resize', setCaseMagnifyPosition.bind(overlay_content));
	window.removeEvents('keydown');
	window.addEvent('keydown', handleMagnifiedCasesKeydown);
	overlay.show();
	
	initArrows();
	return false;
}

function handleMagnifiedCasesKeydown(event){
	var article = $('article');
	var single_case = article.getElement('.case');
	if(event.key == 'left'){
		setPreviousMagnifiedCaseIndex.bind(single_case).attempt();
	}
	if(event.key == 'right'){
		setNextMagnifiedCaseIndex.bind(single_case).attempt();
	}
}

function changeMagnifiedCaseSlideshowImage(){
	var slider = this;
	var single_case = $('article').getElement('.case'); // für die inhalte
	var overlay_content_slider = $('overlay_content_slider');
	var duration = slider.get('duration') * 1;

	var current_index = overlay_content_slider.get('index') * 1; // index innerhalb der vergrößerung
	
	var anchors = single_case.getElements('a.case_link'); // hole vom case alle links
	var current_anchor = anchors[current_index]; // aktueller link, bezogen auf die anzeige in der vergrößerung
	var list_element = current_anchor.getParent('li');
	var files = list_element.getElements('.original_file');
	if(files.length > 1){
		var overlay_content_wrapper_size = $('overlay_content_wrapper').getSize();
		var current_image_index = slider.get('index') * 1;
		var next_file_index = current_image_index+1;
		if(!files[next_file_index]){
			next_file_index = 0;
		}
		var filename = files[next_file_index].get('text');
		var fullpath = 'files/'+filename;
		var image = new Element('img',
			{
				'src': fullpath,
				'styles': {
					'visibility': 'hidden'
				}
			}
		);
		var table = new Element('table',
			{
				'cellpadding': 0,
				'cellspacing': 0,
				'border': 0,
				'class': 'image_fade',
				'styles': {
					'width': slider.getStyle('width').toInt()
				}
			}
		);
		var row = new Element('tr');
		var cell = new Element('td',
			{
				'styles': {
					'height': overlay_content_wrapper_size.y,
					'width': slider.getStyle('width').toInt()
				}
			}
		);
		image.inject(cell);
		cell.inject(row);
		row.inject(table);
		// table.inject(slider);
		if(Browser.Engine.trident && navigator.appVersion.indexOf('MSIE 7') > 0){
			var table_html_contents = slider.get('html') + '<table border="0" cellspacing="0" cellpadding="0" class="image_fade">' + table.get('html') + '</table>';
			slider.set('html', table_html_contents);
		}else{
			table.inject(slider);
		}
		// var ratio = overlay_content_wrapper_size.x / overlay_content_wrapper_size.y;
		var ratio = overlay_content_wrapper_size.x / overlay_content_wrapper_size.y;
		var content_size = image.getSize();
		var image_ratio = content_size.x / content_size.y;
		var width = '100%';
		var height = 'auto';
		if(ratio > image_ratio){
			width = 'auto';
			height = '100%';
		}
		image.setStyles(
			{
				'width': width,
				'height': height
			}
		);
		var current_table = slider.getElement('table');
		slider.set('index', next_file_index);

		new Asset.images([fullpath],
			{
				onComplete: function(){
					image.setStyle('visibility', 'visible');
					current_table.get('morph').start( { 'opacity': [1,0] } ).chain(
						function(){
							table.removeClass('image_fade');
							current_table.dispose();
							changeMagnifiedCaseSlideshowImage.bind(slider).delay(duration);
						}
					);
				}
			}
		);
	}
}

function initMagnifiedCaseSlideshow(){
	var overlay_content_slider = $('overlay_content_slider');
	var single_case = $('article').getElement('.case'); // für die inhalte
	var duration = 5000;
	var slider = this;
	var current_index = overlay_content_slider.get('index') * 1;
	var anchors = single_case.getElements('a.case_link');
	var current_anchor = anchors[current_index];
	var list_element = current_anchor.getParent('li');
	var files = list_element.getElements('.original_file');
	if(files.length > 1){
		slider.set('duration', duration);
		changeMagnifiedCaseSlideshowImage.bind(slider).delay(duration);
	}
}

function initCases(){
	var article = $('article');
	var wrapper = $('wrapper');
	var cases = article.getElements('.case');
	cases.each(
		function(single_case){
			single_case.set('index', 0);
			single_case.set('animate', 'true');
			var current_slider = single_case.getElement('.slider');
			var medium_count = current_slider.getElement('.medium_count').get('text') * 1;
			var bottom = single_case.getElement('.bottom');
			var case_navigation = bottom.getElement('.case_navigation');
			var bottom_size = bottom.getSize();
			bottom.addEvents(
				{
					'mouseenter': showCaseNavigation.bind(bottom),
					'mouseleave': hideCaseNavigation.bind(bottom)
				}
			);

			var list = bottom.getElement('ul');
			var list_size = list.getSize();
			if(list_size.x > bottom_size.x){
				initBottomSlider.bind(bottom).attempt();
			}
			var anchors = bottom.getElements('a.case_link');
			var counter = 0;
			anchors.each(
				function(anchor){
					if(counter == 0){
						anchor.addClass('active');
					}else{
						anchor.addClass('inactive');
					}
					anchor.set('rel', counter);
					anchor.addEvent('click', setCaseIndex);
					counter++;
				}
			);
			
			// pfeile einbinden
			var arrow_left = new Element('img',
				{
					'id': 'arrow_left',
					'src': './pics/pfeil_links_grau.png',
					'class': 'case_arrow',
					'events': {
						'click': setPreviousCaseIndex.bind(anchors, single_case)
					}
				}
			);
			var arrow_right = new Element('img',
				{
					'id': 'arrow_right',
					'src': './pics/pfeil_rechts_grau.png',
					'class': 'case_arrow',
					'events': {
						'click': setNextCaseIndex.bind(anchors, single_case)
					}
				}
			);
			window.addEvent('keydown', handleCasesKeydown);
			var magnify = new Element('img',
				{
					'id': 'magnify',
					'src': './pics/magnify.png',
					'class': 'case_magnify',
					'events': {
						'click': magnifyCaseContent.bind(anchors, single_case)
					}
				}
			);
			arrow_left.inject(wrapper);
			arrow_right.inject(wrapper);
			magnify.inject(wrapper);
		// changed, because flash didn't start
		//	if(medium_count > 0){
				single_case.set('animate', 'false');
				setCaseIndex.bind(anchors[medium_count]).attempt();
				single_case.set('animate', 'true');
		//	}
			initCaseSlideshow.bind(single_case, current_slider.getElement('.image')).attempt();
		}
	);
}

function handleCasesKeydown(event){
	var article = $('article');
	var single_case = article.getElement('.case');
	var bottom = single_case.getElement('.bottom');
	var anchors = bottom.getElements('a.case_link');
	if(event.key == 'left'){
		setPreviousCaseIndex.bind(anchors, single_case).attempt();
	}
	if(event.key == 'right'){
		setNextCaseIndex.bind(anchors, single_case).attempt();
	}
}

var button_animation;
function animateButton(){
	var anchor = this;
	var clients = anchor.getParent('.clients');
	var max_difference = 5;
	var additional_margin = 0;
	if(clients){
		additional_margin = 52;
	}
	var duration = 125;
	var margin_left = anchor.getStyle('margin-left').toInt();

	if(anchor.hasClass('arrowLeft')){
		if(-1 * margin_left < max_difference){
			margin_left = margin_left - 5;
		}else{
			margin_left = additional_margin;
		}
		// anchor.setStyle('margin-left', margin_left);
		anchor.set('morph', { 'duration': duration }).get('morph').start( { 'margin-left': margin_left } );
	}
	if(anchor.hasClass('arrowRight')){
		var aktuelles = anchor.getParent('.aktuellesBlock');
		var bottom_nav = anchor.getParent('.bottomNav');
		var start_page = $('article_1');
		var leistungsangebot = anchor.getParent('.leistungsangebot');
		if(aktuelles || start_page || leistungsangebot || bottom_nav){ // abfrage für elemente, die rechts floaten
			var margin_left = anchor.getStyle('margin-right').toInt();
			if(margin_left > -max_difference){
				margin_left = margin_left - 5;
			}else{
				margin_left = additional_margin;
			}
			// anchor.setStyle('margin-right', margin_left);
			anchor.set('morph', { 'duration': duration }).get('morph').start( { 'margin-right': margin_left } );
		}else{
			if(margin_left - additional_margin < max_difference){
				margin_left = margin_left + 5;
			}else{
				margin_left = additional_margin;
			}
			// anchor.setStyle('margin-left', margin_left);
			anchor.set('morph', { 'duration': duration }).get('morph').start( { 'margin-left': margin_left } );
		}
	}
	if(anchor.hasClass('animate')){
	//	button_animation = animateButton.bind(anchor).delay(500);
	}else{
		stopButtonAnimation.bind(anchor).attempt();
	}
}

function startButtonAnimation(){
	var anchor = this;
	anchor.addClass('animate');
	animateButton.bind(anchor).attempt();
}

function stopButtonAnimation(){
	var anchor = this;
	var clients = anchor.getParent('.clients');
	var aktuelles = anchor.getParent('.aktuellesBlock');
	var start_page = $('article_1');
	var bottom_nav = anchor.getParent('.bottomNav');
	var leistungsangebot = anchor.getParent('.leistungsangebot');
	var leitsaetze = anchor.getParent('.leitsaetze');
	var initial_margin_left = 0;
	var duration = 125;
	if(clients){
		initial_margin_left = 52;
	}
	if(aktuelles || start_page || leistungsangebot || (bottom_nav && !anchor.hasClass('arrowLeft'))){ // abfrage für elemente, die rechts floaten
	//	anchor.setStyle('margin-right', initial_margin_left);
		anchor.set('morph', { 'duration': duration }).get('morph').start( { 'margin-right': initial_margin_left } );
	}else{
	//	anchor.setStyle('margin-left', initial_margin_left);
		anchor.set('morph', { 'duration': duration }).get('morph').start( { 'margin-left': initial_margin_left } );
	}
	anchor.removeClass('animate');
	$clear(button_animation);
}

function initButtons(){
	var article = $('article');
	var buttons = article.getElements('a.button');
	buttons.each(
		function(anchor){
			if(anchor.hasClass('arrowLeft') || anchor.hasClass('arrowRight')){
				var clients = anchor.getParent('.clients');
				if(clients){
					anchor.setStyle('margin-left', 52);
				}else{
					anchor.setStyle('margin-left', 0);
				}
				anchor.addEvent('mouseenter', startButtonAnimation);
				anchor.addEvent('mouseleave', stopButtonAnimation);
			}
		}
	);
}

var arrow_timeout;
function hideArrows(){
	var arrows = this;
	if(arrow_timeout){
		$clear(arrow_timeout);
	}
	arrows.each(
			function(arrow){
				arrow.set('morph', { 'link': 'ignore', 'duration': 2000 } ).get('morph').start( { 'opacity': 0 } );
			}
	);
	document.body.addEvent('mousemove', showArrows.bind(arrows));
}

function showArrows(){
	var arrows = this;
	document.body.removeEvents('mousemove');
	document.body.removeEvents('click');
	if(arrow_timeout){
		$clear(arrow_timeout);
	}
	arrows.each(
		function(arrow){
			arrow.set('morph', { 'link': 'ignore', 'duration': 100 }).get('morph').start( { 'opacity': 1 } );
		}
	);
	arrow_timeout = hideArrows.bind(arrows).delay(500);
}

function highlightArrow(){
	var arrow = this;
	var leitsaetze = arrow.getParent('.leitsaetze');
	var client_overlay = arrow.getParent('.client_overlay');
	if(arrow.get('id') == 'arrow_left' || arrow.hasClass('previous_button') || arrow.hasClass('client_previous_button')){
		if(leitsaetze){
			arrow.set('src', 'pics/pfeil_links_weiss.png');
		}else{
			arrow.set('src', 'pics/pfeil_links_rot_gross.png');
		}
	}
	if(arrow.get('id') == 'arrow_right' || arrow.hasClass('next_button') || arrow.hasClass('client_next_button')){
		if(leitsaetze){
			arrow.set('src', 'pics/pfeil_rechts_weiss.png');
		}else{
			arrow.set('src', 'pics/pfeil_rechts_rot_gross.png');
		}
	}
	if(arrow.get('id') == 'magnify'){
		arrow.set('src', 'pics/magnify-aktiv.png');
	}
	$clear(arrow_timeout);
}

function resetArrow(){
	var arrow = this;
	if(arrow.get('id') == 'arrow_left' || arrow.hasClass('previous_button') || arrow.hasClass('client_previous_button')){
		if(arrow.hasClass('leitsatz_arrow')){
			arrow.set('src', 'pics/pfeil_links_hellrot.png');
		}else{
			arrow.set('src', 'pics/pfeil_links_grau.png');
		}
	}
	if(arrow.get('id') == 'arrow_right' || arrow.hasClass('next_button') || arrow.hasClass('client_next_button')){
		if(arrow.hasClass('leitsatz_arrow')){
			arrow.set('src', 'pics/pfeil_rechts_hellrot.png');
		}else{
			arrow.set('src', 'pics/pfeil_rechts_grau.png');
		}
	}
	if(arrow.get('id') == 'magnify'){
		arrow.set('src', 'pics/magnify.png');
	}
	initArrows.attempt();
}

function initArrows(){
	if(arrow_timeout){
		$clear(arrow_timeout);
	}
	var body = document.getElement('body');
	// document.body.removeEvents('mousemove');
	body.removeEvents('mousemove');
	var arrows = new Array();
	var left_arrow = $('arrow_left');
	var right_arrow = $('arrow_right');
	var magnify = $('magnify');
	var overlay_container = $('overlay_container');
	if(left_arrow){
		arrows.push(left_arrow);
	}
	if(right_arrow){
		arrows.push(right_arrow);
	}
	if(magnify){
		arrows.push(magnify);
	}
	if(overlay_container){
		if(overlay_container.hasClass('case_overlay') || overlay_container.hasClass('client_overlay')){
			var previous_button = overlay_container.getElement('.previous_button').getElement('img');
			var next_button = overlay_container.getElement('.next_button').getElement('img');
			arrows.push(previous_button);
			arrows.push(next_button);
		}
	}

	if(arrows.length > 0){
		arrow_timeout = hideArrows.bind(arrows).delay(500);
		arrows.each(
			function(arrow){
				arrow.addEvent('mouseenter', highlightArrow);
				arrow.addEvent('mouseleave', resetArrow);
			}
		);
	}
}

function showLanguages(){
	var language_navigation = $('languagenavi');
	var list = language_navigation.getElement('ul');
	list.setStyle('height', 'auto');
	var list_size = list.getSize();
	list.setStyle('height', 0);
	var anchor = this;
	anchor.removeEvents('click');
	anchor.addEvent('click', hideLanguages);
	
	list.setStyle('padding-top', 8);
	list.get('morph').start( { 'height': list_size.y } );
	
	return false;
}

function hideLanguages(){
	var language_navigation = $('languagenavi');
	var list = language_navigation.getElement('ul');
	var anchor = this;
	anchor.removeEvents('click');
	anchor.addEvent('click', showLanguages);
	
	list.get('morph').start( { 'height': 0 } ).chain(
		function(){
			list.setStyle('padding-top', 0);
		}
	);
	
	return false;
}

function initLanguageNavigation(){
	var language_navigation = $('languagenavi');
	if(language_navigation){
		var anchor = language_navigation.getElement('a.button');
		var list = language_navigation.getElement('ul');
		if(list){
			list.setStyle('height', 0);
			list.setStyle('padding-top', 0);
			anchor.addEvent('click', showLanguages);
		}
	}
}

// Bild auf die leschfrei-id.de verlinken
function initLeschfreiIDPage(){
	var body = $('article_52');
	if(body){
		var button_list = body.getElement('.button_list');
		if(button_list){
			var button = button_list.getElement('.button');
			if(button){
				button.addEvent('click', function(){ window.open(button.get('href'), 'leschfreiid'); return false; });
				var slideshow = body.getElement('.slideshow');
				if(slideshow){
					var image = slideshow.getElement('.image');
					image.addEvent('click', function(){ window.open(button.get('href'), 'leschfreiid'); return false; });
					image.setStyle('cursor', 'pointer');
				}
			}
		}
	}
}

function initAll(){
	initGoogleMaps();
	initClientOverview();
	initSlideshow();
	initSlideshowLeitsaetze();
	initBackgroundImage();
	initBranchesAccordion();
	initCasesOverview();
	initCasesFilter();
	initCases();
	initButtons();
	initArrows();
	initLanguageNavigation();
	initLeschfreiIDPage();
}

window.addEvent('domready',
	function(){
		initAll();
	}
);

Shadowbox.init();

Hyphenator.config({
	classname : 'tinymcewysiwyg',
	minwordlength : 4,
	intermediatestate: 'visible'
});
Hyphenator.run();
