var domain = document.domain;
if(domain == ''){
	domain = 'lachdiamant.de';
}

Cufon.replace('.din_text h1, #content h1, #navi .nav_level1 a, #navi .nav_level2 a, .din_text p, #sprachNav a, .branches a', {fontFamily: 'DINPro-Medium'});
Cufon.replace('h1 strong', {hover: true, hoverables: {a: true}, fontFamily: 'DINPro-Bold'});
Cufon.replace('.font_swing', {hover: true, hoverables: {a: true}, fontFamily: 'Swing2'});

function str_replace (search, replace, subject, count) {
    // Replaces all occurrences of search in haystack with replace  
    // 
    // version: 1006.1915
    // discuss at: http://phpjs.org/functions/str_replace    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Gabriel Paderni
    // +   improved by: Philip Peterson
    // +   improved by: Simon Willison (http://simonwillison.net)
    // +    revised by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)    // +   bugfixed by: Anton Ongson
    // +      input by: Onno Marsman
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +    tweaked by: Onno Marsman
    // +      input by: Brett Zamir (http://brett-zamir.me)    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   input by: Oleg Eremeev
    // +   improved by: Brett Zamir (http://brett-zamir.me)
    // +   bugfixed by: Oleg Eremeev
    // %          note 1: The count parameter must be passed as a string in order    // %          note 1:  to find a global variable in which the result will be given
    // *     example 1: str_replace(' ', '.', 'Kevin van Zonneveld');
    // *     returns 1: 'Kevin.van.Zonneveld'
    // *     example 2: str_replace(['{name}', 'l'], ['hello', 'm'], '{name}, lars');
    // *     returns 2: 'hemmo, mars'    var i = 0, j = 0, temp = '', repl = '', sl = 0, fl = 0,
            f = [].concat(search),
            r = [].concat(replace),
            s = subject,
            ra = r instanceof Array, sa = s instanceof Array;s = [].concat(s);
    if (count) {
        this.window[count] = 0;
    }
     for (i=0, sl=s.length; i < sl; i++) {
        if (s[i] === '') {
            continue;
        }
        for (j=0, fl=f.length; j < fl; j++) {temp = s[i]+'';
            repl = ra ? (r[j] !== undefined ? r[j] : '') : r[0];
            s[i] = (temp).split(f[j]).join(repl);
            if (count && s[i] !== temp) {
                this.window[count] += (temp.length-s[i].length)/f[j].length;}}
    }
    return sa ? s : s[0];
}

// ermittelt die Artikel-ID von Redaxo anhand der URL
function getArticleId(href){
	href = str_replace('http://'+domain+'/', '', href);
	var articleId = 0;
	if(href.indexOf('article_id=') > -1){
		articleId = href.split('article_id=')[1];
	}else{
		articleId = href.split('-')[0];
	}
	return articleId;
}

// Ajax call
function changeArticleContent(anchor){
	if(anchor){
		// do nothing
	}else{
		var anchor = this;
	}
	var rel = anchor.get('rel').split(';');
	var href = anchor.get('href');
	if(rel[2]){
		href = rel[2];
	}
	var newArticleId = getArticleId(href);

//	if(currentSiteId != newArticleId){
	var ajaxArticleId = 36;
	var requestMethod = 'get';
	var newArticle = $('article');
	var navigation = $('navi');
	var updateDomElement = $('article');
	
	var languageNavigation = $('sprachNav');

	var requestUrl = 'index.php?article_id='+ajaxArticleId+'&page_id='+newArticleId+'&clang='+clang;

	updateDomElement.get('morph').start( {'opacity': [1,0]} ).chain(
		function(){
			initSidebarMenu(newArticleId);
			new Request.HTML({
				method: requestMethod,
				update: updateDomElement,
				url: requestUrl,
				onSuccess: function(responseText, responseXML, responseHTML){
					setLanguageNavigation(newArticleId);
					
					$('article').set('html', $('new_article').get('html'));
					initImageGallery();
					if(!Browser.Platform.ipod){
						initCatalog();
					}
					initFadingImageGallery();
					initCatalogIndizes();
					initMoreText();
					var parent_div = anchor.getParent('div');
					var header_contents = $('header_contents');
					if(temp_header_contents != ''){
						var headerbild = $('headerbild');
						// nach oben scrollen und CoverFlow initialisieren
						var myFx = new Fx.Scroll(window).toTop().chain(function(){
							headerbild.get('morph').start( {'height': 178} ).chain(
								function(){
									all_mooflow_contents.each(
										function(content){
											if(content.indexOf(temp_header_contents) > 0){
												header_contents.set('html', content);
											}
										}
									);
									temp_header_contents = '';
									var height = 178;
									var offset = -200;
									var ratio = height / 800;
									var image_factor = height / 2; // 178 / 3
									var sidebar = $('sidebar');
									if(sidebar){
										var press_teaser = sidebar.getElement('.press_teaser');
										if(press_teaser){
											var current_anchor = press_teaser.getElement('.rex-current');
											var parent_div = current_anchor.getParent('.title');
											if(parent_div.className.indexOf('main_article') > 0){
												var divs = press_teaser.getElements('.main_teaser');
											}else{
												var divs = press_teaser.getElements('.sub_article_elements');
											}
											var counter = 0;
											divs.each(
												function(div){
													var anchor = div.getElement('.rex-current');
													if(anchor){
														start_index = counter;
													}
													counter++;
												}
											);
										}
									}
									var mf = new MooFlow(header_contents.getElement('.mooflow'), {
										startIndex: start_index,
										useSlider: false,
										useAutoPlay: false,
										useCaption: true,
										useResize: false,
										useWindowResize: false,
										useMouseWheel: false,
										useKeyInput: false,
										heightRatio: ratio,
										factor: image_factor,
										offsetY: offset,
										getAjaxContents: false
									});
									all_mooflows[0] = mf;				
								}
							);
						});
						
					}
					if(parent_div){
						if(parent_div.className.indexOf('main_article') > 0){
							// springt im mooflow auf die richtige position
							var mooflow = header_contents.getElement('.mooflow');
							if(mooflow){
								var sidebar = $('sidebar');
								var main_links = sidebar.getElements('.main_article');
								var counter = 0;
								main_links.each(
									function(main_link){
										var link = main_link.getElement('a');
										var rel = link.get('rel').split(';');
										if(getArticleId(rel[2]) == newArticleId){
											all_mooflows[0].glideTo2(counter);
										}
										counter++;
									}	
								);
							}
						}
					}
					var oFxTween = new Fx.Tween(updateDomElement,
						{
							onStart: function(){
								// soll verhindern, dass man den schriftartenwechsel sieht
								updateDomElement.setStyles(
									{
										'visibility': 'visible',
										'display': 'none'
									}
								);
								Cufon.refresh();
								updateDomElement.setStyles(
									{
										'visibility': 'hidden',
										'display': 'block'
									}
								);
							},
							onComplete: function(){
							/*	var languageAnchors = languageNavigation.getElements('a');
								languageAnchors.each(
									function(languageAnchor){
										var languageHref = '';
										if(languageAnchor.get('href').indexOf('?') > 0){
											languageHref = languageAnchor.get('href').split('?')[0];
										}else{
											languageHref = languageAnchor.get('href');
										}
										languageAnchor.set('href', languageHref + '?press_article='+newArticleId);
									}
								); */
							}
						}
					).start('opacity', '0', '1');
					setContentHeight.attempt();
					if(!Browser.Platform.ipod){
						Shadowbox.setup();
					}
				}
			}).send();
		}
	);
//	}
	return false;
}

// öffnet / schließt die sidebar bei normalem aufruf der seite
function initSidebarMenuOnStart(){
	//	current_article_id
	var sidebar = $('sidebar');
	if(sidebar){
		var press_teaser = sidebar.getElement('.press_teaser');
		// durchläuft alle links in der sidebar und schaut, ob ein passender eintrag verfügbar ist, wenn ja, dann öffnen
		if(press_teaser){
			var main_teaser = press_teaser.getElements('.main_teaser');
			var sub_teaser = press_teaser.getElements('.sub_article_elements');
			var current_anchor = $('subpage_article_'+current_article_id);
			var current_index = 0;
			if(current_anchor){
				var index = 0;
				main_teaser.each(
					function(teaser){
						var anchor = teaser.getElement('a');
						if(anchor.get('id') == current_anchor.get('id')){
							current_index = index;
						}
						index++;
					}
				);
				index = 0;
				sub_teaser.each(
					function(teaser){
						var anchors = teaser.getElements('a');
						anchors.each(
							function(anchor){
								if(anchor.get('id') == current_anchor.get('id')){
									current_index = index;
								}
							}
						);
						index++;
					}
				);
			}
			if(sub_teaser[current_index]){
				var size = sub_teaser[current_index].getSize();
				if(size.y == 0){
					sub_teaser[current_index].setStyle('height', 'auto');
					size = sub_teaser[current_index].getSize();
					sub_teaser[current_index].setStyle('height', 0);
				}
				if(current_anchor){
					current_anchor.addClass('rex-current');
				}
				sub_teaser[current_index].get('morph').start( {'height': size.y} );
			}
		}
	}
}

// setzt die sidebar nach ajax-aufrufen, alle elemente in der sidebar durchlaufen, bis passender eintrag gefunden wurde, dann anzeigen
function initSidebarMenu(article_id){
	var articles = $$('.press_teaser_article');
	var counter = 0;
	var sidebar = $('sidebar');
	if(sidebar){
		var sub_teaser = sidebar.getElements('.sub_article_elements');
		var press_teaser = sidebar.getElement('.press_teaser');
		if(press_teaser){
			var anchors = press_teaser.getElements('a');
			var close_main_element = true;
			anchors.each(
				function(anchor){
					var parent_div = anchor.getParent('div');
					if(parent_div.className != 'page_navigation'){
						var rel = anchor.get('rel').split(';');
						// var anchor_article_id = getArticleId(anchor.get('href'));
						var anchor_article_id = getArticleId(rel[2]);
						if(anchor_article_id == article_id){
							var parent_div = anchor.getParent('.sub_article_elements');
							if(parent_div){
								close_main_element = false;
							}
						}
					}
				}
			);
		}
		articles.each(
			function(article){
				var anchor = article.getElement('a');
				var rel = anchor.get('rel').split(';');
				// var anchor_article_id = getArticleId(anchor.get('href'));
				var anchor_article_id = getArticleId(rel[2]);
				var title = article.getElement('.title');
				if(anchor_article_id == article_id){
					anchor.className = 'rex-current';
					if(title.className.indexOf('main_article') > 0 && counter < sub_teaser.length){
						var size = sub_teaser[counter].getSize();
						if(size.y == 0){
							sub_teaser[counter].setStyle('height', 'auto');
							size = sub_teaser[counter].getSize();
							sub_teaser[counter].setStyle('height', 0);
						}
						sub_teaser[counter].get('morph').start( {'height': size.y} );
						counter++;
					}
				}else{
					anchor.className = '';
					if(title.className.indexOf('main_article') > 0 && counter < sub_teaser.length && close_main_element){
						sub_teaser[counter].get('morph').start( {'height': 0} );
						counter++;
					}
				}
			}
		);
	}
}

// wird nicht mehr genutzt, wurde durch history-manager funktionen ersetzt
function changePage() {
	var transition_type = 'quad:out'; // 'back:out'
	var animation_length = 1000;
	var anchor = this;
	var rel = anchor.get('rel').split(';');
	var new_height = rel[0];
	var new_background_image = rel[1];
	var headerbild = $('headerbild');
	var header_contents = $('header_contents');
	headerbild.set('morph',
		{
			transition: transition_type,
			duration: animation_length
		}
	);
	if(new_height != header_height){
		var header_image = new Asset.images([new_background_image], {
		    onComplete: function(){
				if(new_height < header_height){
					headerbild.get('morph').start( {'height': [header_height, new_height]} ).chain(
						function(){
							headerbild.get('morph').start( {'opacity': [1,0]} ).chain(
								function(){
									headerbild.setStyle( 'background-image', 'url('+new_background_image+')' );
									header_contents.setStyle( 'visibility', 'hidden' );
									header_contents.empty();
									headerbild.get('morph').start( {'opacity': [0,1]} ).chain(
										function(){
											window.location = anchor.get('href');
										}
									);
								}
							);
						}
					);
				}else{
					headerbild.get('morph').start( {'opacity': [1,0]} ).chain(
						function(){
							headerbild.setStyle('background-image', 'url('+new_background_image+')');
							header_contents.setStyle( 'visibility', 'hidden' );
							header_contents.empty();
							headerbild.get('morph').start( {'opacity': [0,1]} ).chain(
								function(){
									headerbild.get('morph').start( {'height': [header_height, new_height]} ).chain(
										function(){
											window.location = anchor.get('href');
										}
									);
								}
							);
						}
					);
				}
		    }
		});
	}else{
		if(!(headerbild.getStyle('background-image').indexOf(new_background_image) > 0)){
			var header_image = new Asset.images([new_background_image], {
				onComplete: function(){
					headerbild.get('morph').start( {'opacity': [1,0]} ).chain(
						function(){
							headerbild.setStyle('background-image', 'url('+new_background_image+')');
							headerbild.get('morph').start( {'opacity': [0,1]} ).chain(
								function(){
									window.location = anchor.get('href');
								}
							);
						}
					);
				}
			});
		}else{
			return true;
		}
	}
	return false;
}

// Bühnenfunktionen auf Navigation und Logo legen
function initStageFunctions(){
	if(!(navigator.appVersion.indexOf('MSIE 6') > 0)){ 
		var navigation = $('navi');
		var logo = $('logo');
		var links = navigation.getElements('a');
		links.push(logo.getElement('a'));
		// logo.getElement('a').addEvent('click', setNewHistoryManagerHash);
		links.each(
			function(anchor){
				if(anchor.className != 'rex-current'){
					// anchor.addEvent('click',changePage.bind(anchor));
					anchor.addEvent('click',setNewHistoryManagerHash.bind(anchor));
				}
			}
		);
	}
	return false;
}

// funktionen auf elemente in der sidebar legen
function initPressTeaser(){
	var articles = $$('.press_teaser_article');
	var select_fields = $$('.year_select');
	articles.each(
		function(article){
			var anchor = article.getElement('a');
		//	anchor.addEvent('click',changeArticleContent.bind(anchor, anchor));
		//	article.addEvent('click',changeArticleContent.bind(anchor, anchor));
			anchor.addEvent('click',setNewHistoryManagerHashForSubArticle.bind(anchor, anchor));
			article.addEvent('click',setNewHistoryManagerHashForSubArticle.bind(anchor, anchor));
		}
	);
	select_fields.each(
		function(field){
			field.addEvent('change', submitForm.bind(field));
		}
	);
}

// einfaches formular abschicken
function submitForm(){
	var field = this;
	var form = field.getParent('form');
	form.submit();
}

function hideGalleryImageDescription(){
	var anchor = this;
	var gallery = anchor.getParent('.gallery');
	var items = anchor.getParent('div');
	var height = 95;
	var description = gallery.getElement('.description');
	var anchor_title = anchor.get('initial_title');
	anchor.set('title', anchor_title);
	var image = anchor.getElement('img');
	var image_title = image.get('initial_title');
	image.set('title', image_title);
	image.set('initial_title', '');
	if (ie()) {
		description.setStyles({'opacity': '0'});
	} else {
		description.get('morph').start( {'opacity': 0} );
	}
}

function showGalleryImageDescription() {
	var anchor = this;
	var gallery = anchor.getParent('.gallery');
	var items = anchor.getParent('div');
	var height = 95;
	var description = gallery.getElement('.description');
	
	var anchor_title = anchor.get('title');
	var anchor_name = anchor.get('name');
	var image = anchor.getElement('img');
	var image_title = image.get('title');
	anchor.set('initial_title', anchor_title);
	anchor.set('title', '');

	image.set('initial_title', image_title);
	image.set('title', '');
	var description_text = (anchor_name != '' && anchor_name != null ? '<strong>'+anchor_name+'</strong>' : '') + (image_title != '' && image_title != null ? (anchor_name != '' && anchor_name != null ? '<strong>:</strong> ' : '') + image_title : '');
	description.set('html', description_text);

	description.setStyle('height', 'auto');
	var description_size = description.getSize();
	
	// anchor.get('morph').start( { 'height': [height, (height+9)] } );
	description.setStyles(
		{
			'overflow': 'hidden',
			'opacity': 0
			// 'height': 0
			// 'visibility': 'visible'
		}
	);
	// description.get('morph').start( { 'height': description_size.y } );
	if (description_text != '') {
		if (ie()) {
			description.setStyles({'opacity': '1'});
		} else {
			description.get('morph').start( {'opacity': [0,1]} );
		}
	}
}

// hover funktionen auf bilder in der galerie legen
function initGalleryHoverFunctions(){
	var galleries = $$('.gallery');
	galleries.each(
		function(gallery){
			var anchors = gallery.getElements('a');
			anchors.each(
				function(anchor){
					anchor.addEvents(
						{
							'mouseenter': showGalleryImageDescription.bind(anchor),
							'mouseleave': hideGalleryImageDescription.bind(anchor)
						}
					);
				}
			);			
		}
	);
}

// alle funktonen auf die galerie legen, mit slider etc.
function initImageGallery(){
	if($$('.gallery').length > 0){
		initGalleryHoverFunctions();
		if(!Browser.Platform.ipod){
			Shadowbox.setup();
		}
		$$('.gallery').each(
			function(gallery){
				var items = gallery.getElement('.items');
				var anchors = items.getElements('a');
				/* anchors.each(
					function(anchor){
						anchor.set('initial_title', anchor.get('title'));
						anchor.set('title', '');
					}
				); */
				var num_listElements = Math.ceil((items.getElements('li').length / 4));
				var slides = num_listElements;			// Change This
				var pos = 0;
				var offset = 417;		// HOW MUCH TO MOVE
				var currentslide = 1;
				var moveleft = gallery.getElement('.moveleft');
				var moveright = gallery.getElement('.moveright');
				var slider = gallery.getElement('.slider');
				moveleft.setStyle('visibility','hidden');
				if(slides < 2){
					moveright.setStyle('visibility','hidden');
				}
				var fx = new Fx.Morph(items, {duration: 100, transition: Fx.Transitions.linear});

				var scroll = new Fx.Scroll(slider, {
					offset:{'x':0, 'y':0}, 
					// transition: Fx.Transitions.Elastic.easeOut
					transition: Fx.Transitions.Back.easeOut
				});

				moveleft.addEvent('click', function(event) {
					event = new Event(event).stop();
					if(currentslide == 1) return;
					currentslide--;																		
					pos += -(offset);
					fx.start({ 
						'opacity': .3 
					}).chain(function(){
						this.start.delay(100, this, {'opacity': 1});
						scroll.start(pos);
						if(currentslide == 1){
							moveleft.setStyle('visibility','hidden');	
						}
					});
					moveright.setStyle('visibility','visible');		
				});

				moveright.addEvent('click', function(event) { 
					event = new Event(event).stop();
					if(currentslide >= slides){
						return;	
					}
					currentslide++;
					pos += offset;
					fx.start({ 
						'opacity': .3 
					}).chain(function(){
						this.start.delay(100, this, {'opacity': 1});
						scroll.start(pos);
						if(currentslide >= slides){
							moveright.setStyle('visibility','hidden');
						}
					});
					moveleft.setStyle('visibility','visible');
				});

				scroll.toLeft();				
			}
		);
	}
}

// öffnet eine Seite in einem neuen Fenster, Timestamp an Fensternamen, damit wirklich jedesmal ein neues Fenster geöffnet wird
function openExternalLink(){
	var currentDate = new Date();
	window.open(this.href, 'externalSite_'+currentDate.getTime());
	return false;
}

// messe-links in neuem fenster öffnen
function initMesse(){
	var messen = $$('.messe');
	messen.each(
		function(messe){
			var entries = messe.getElements('.entry');
			entries.each(
				function(entry){
					var anchor = entry.getElement('a');
					if(anchor){
						anchor.addEvent('click', openExternalLink.bind(anchor));
					}
				}
			);
		}
	);
}

// Download-Link innerhalb der Shadowbox hinzufügen
function setDownloadLink(){
	if($('sb-player').get('src')){
		var src = $('sb-player').get('src').split('/');
		var filename = src[(src.length-1)];
		var anchor = new Element('a',
			{
				'href': 'js/download.php?filename='+filename,
				'html': 'Download'
			}
		);
		var download_div = $('sb-wrapper').getElement('.download');
		if(download_div){
			download_div.dispose();
		}
		
		download_div = new Element('div',
			{
				'class': 'download'
			}
		);
		anchor.inject(download_div);
		download_div.inject($('sb-wrapper'));
	}
}

// pdf mit issuu laden
var page_catalog_no = 1;
var temp_header_contents = '';
function loadFlashCatalog(){
	var anchor = this;
	var page_no = anchor.getElement('.page_no');
	if(page_no){
		page_catalog_no = page_no.get('html') * 1;
	}else{
		page_catalog_no	= 1;
	}
	
	var issuu_document_id = anchor.get('rel');
	
	var headerbild = $('headerbild');
	
	var issuu_viewer = 'http://static.issuu.com/webembed/viewers/style1/v1/IssuuViewer.swf?pageNumber='+page_catalog_no;
	var issuu_content_id = 'issuu_content';
	var width = 800;
	var height = 480; // 500
	
	var attributes = {
		id: 'issuuViewer'
	};
	var params = {
		allowfullscreen: 'true',
		allowScriptAccess: 'always',
		//jsAPIInitCallback: 'openFlashCatalogPage',
		menu: 'true'
	};
	//pageNumber=8
	var flashvars = {
		jsAPIClientDomain: domain,
		mode: 'embed',
		// layout: 'http%3A%2F%2Fskin.issuu.com%2Fv%2Fdark%2Flayout.xml',
		layout: 'http%3A%2F%2F'+domain+'%2Fissuu%2Fcustom_dark%2Flayout.xml',
		showFlipBtn: 'false',
		documentId: issuu_document_id,
		// docName: 'agent2issue4',
		username: 'LachDiamant'
		// username: 'softloop'
		// loadingInfoText: 'AGENT2%20Issue%204%20July%2FAugust',
		// et: '1251461518896',
		// er: '26'
	};

	var header_contents = $('header_contents');

	var mooflow = header_contents.getElement('div');
	if(mooflow){
		if(mooflow.get('id').indexOf('mooflow_') > -1){
			temp_header_contents = mooflow.get('id');
		}
	}
	header_contents.empty();
	var issuu_div_wrapper = new Element('div',
		{
			'id': 'issuu_wrapper'
		}
	);
	var issuu_div = new Element('div',
		{
			'id': issuu_content_id
		}
	);
	issuu_div.inject(issuu_div_wrapper);
	issuu_div_wrapper.inject(header_contents);
	swfobject.embedSWF(issuu_viewer, issuu_content_id, width, height, "9.0.0","expressInstall.swf", flashvars, params, attributes);
	
	issuu_div_wrapper.get('morph').start( {'opacity': [0,1]} ).chain(
		function(){
			header_height = 500;
			headerbild.set('morph',
				{
					duration: 1000
				}
			);
			headerbild.get('morph').start( {'height': header_height} ).chain(
				function(){
					var myFx = new Fx.Scroll(window).toLeft().chain(function(){
						this.toTop.delay(1, this);
					});
				}
			);
		}
	);
	return false;
}

function initCatalog(){
	var catalogs = $$('.catalog');
	if(catalogs.length > 0){
		var entries = $$('.entry');
		entries.each(
			function(entry){
				var anchor = entry.getElement('a.catalog_link');
				if(anchor){
					anchor.addEvent('click', loadFlashCatalog.bind(anchor));
				}
			}
		);
	}

	var cat_from_result = $$('.cat_from_result');
	if(cat_from_result.length > 0){
		var entries = $$('.cat_from_result');
		entries.each(
			function(entry){
				var anchor = entry;
				if(anchor){
					anchor.addEvent('click', loadFlashCatalog.bind(anchor));
				}
			}
		);
	}
}

var google_maps = new Array();
function initGoogleMaps(){

	var maps = $$('.google_maps');
	if(maps.length > 0){
		if (GBrowserIsCompatible()) {
			maps.each(
				function(map){
					var addresses = map.getElements('.address_wrapper');
					var first_address = map.getElement('.address').get('html');

					var width = map.getElement('.width').get('html') * 1;
					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 markers = new Array();
					
					var sidebar = $('sidebar');
					if(sidebar){
						var address_texts = sidebar.getElements('.address');
						var text_counter = 0;
						addresses.each(
							function(address){
								var html = address.getElement('.address').get('html');
								var zm = address.getElement('.zoom').get('html') * 1;
								var lng = address.getElement('.longitude').get('html') * 1;
								var ltd = address.getElement('.latitude').get('html') * 1;
								var marker = new GMarker(new GLatLng(lng, ltd));
								GEvent.addListener(marker, 'click', function() {
									marker.openInfoWindowHtml(html);
								});
								if(sidebar){
									address_texts[text_counter].addEvent('click',
										function(){
											marker.openInfoWindowHtml(html);
											new Fx.Scroll(window).toTop();
										}
									);
									text_counter++;
								}
								markers.push(marker);
							}
						);
					}

					map.setStyles(
						{
							'width': width,
							'height': height
						}
					);

					var google_map = new GMap2(map);
					markers.each(
						function(marker){
							google_map.addOverlay(marker);
						}
					);
					var map_control = new GMapTypeControl();
					google_map.addControl(map_control);
					google_map.addControl(new GLargeMapControl());
				    google_map.setCenter(new GLatLng(longitude, latitude), 7);
					google_maps.push(google_map);
					markers[0].openInfoWindowHtml(first_address);
				}
			);
		}
	}
}

// funktion von google-maps, fehlermeldungen
function handleErrors(){
   if (gdir.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: " + gdir.getStatus().code);
   else if (gdir.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: " + gdir.getStatus().code);
   
   else if (gdir.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: " + gdir.getStatus().code);

//   else if (gdir.getStatus().code == G_UNAVAILABLE_ADDRESS)  <--- Doc bug... this is either not defined, or Doc is wrong
//     alert("The geocode for the given address or the route for the given directions query cannot be returned due to legal or contractual reasons.\n Error code: " + gdir.getStatus().code);
     
   else if (gdir.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: " + gdir.getStatus().code);

   else if (gdir.getStatus().code == G_GEO_BAD_REQUEST)
     alert("A directions request could not be successfully parsed.\n Error code: " + gdir.getStatus().code);
    
   else alert("An unknown error occurred.");
   
}

var all_mooflows = new Array();
var all_mooflow_contents = new Array();

function initMooFlow(){
//	alert(header_height);
	var elements = $$('.mooflow');
	var headerbild = $('headerbild');
	var size = headerbild.getSize();
	var ratio = header_height / 800;
	var image_factor = header_height / 5;
	var offset = 70;
	var start_index = -1;
	if(header_height < 500){
		offset = -200;
	}
	elements.each(
		function(element){
			// Spezialfall bei Katalogen abfangen und Startindex für MooFlow bestimmen
			if(element.className.indexOf('catalog') > 0){
				var height = 178;
				offset = -200;
				ratio = height / 800;
				image_factor = height / 2; // 178 / 3
				var sidebar = $('sidebar');
				if(sidebar){
					var press_teaser = sidebar.getElement('.press_teaser');
					if(press_teaser){
						var current_anchor = press_teaser.getElement('.rex-current');
						if(current_anchor){
							var parent_div = current_anchor.getParent('.title');
							if(parent_div.className.indexOf('main_article') > 0){
								var divs = press_teaser.getElements('.main_teaser');
							}else{
								var divs = press_teaser.getElements('.sub_article_elements');
							}
							var counter = 0;
							divs.each(
								function(div){
									var anchor = div.getElement('.rex-current');
									if(anchor){
										start_index = counter;
									}
									counter++;
								}
							);
						}
					}
				}
			}
			all_mooflow_contents.push(element.getParent('div').getParent('div').get('html'));
		//	if(element.getElements('img').length > 0){
				var mf = new MooFlow(element, {
					startIndex: start_index,
					useSlider: false,
					useAutoPlay: false,
					useCaption: true,
					useResize: false,
					useWindowResize: false,
					useMouseWheel: false,
					useKeyInput: false,
					heightRatio: ratio,
					factor: image_factor,
					offsetY: offset
				});
				all_mooflows.push(mf);
		//	}
		}
	);
}

// Kontaktformular
function getCheckboxStatus(){
	var checkbox = this;
	var parent_list_element = checkbox.getParent('li');
	var sub_list = parent_list_element.getElement('ul');

	if(sub_list){
		var new_list_height = 0;
		var size = sub_list.getSize();
		if(checkbox.checked){
			sub_list.setStyle('height', 'auto');
			size = sub_list.getSize();
			sub_list.setStyle('height', 0);
			new_list_height = size.y;
			sub_list.get('morph').start( {'height': new_list_height} ).chain(
				function(){
					sub_list.setStyle('height', 'auto');
				}
			);
		}else{
			sub_list.get('morph').start( {'height': [size.y, new_list_height]} ).chain(
				function(){
					var child_lists = sub_list.getElements('ul');
					child_lists.each(
						function(list){
							list.setStyle('height', 0);
						}
					);
				}
			);
			var checkboxes = sub_list.getElements('input');
			checkboxes.each(
				function(sub_list_checkbox){
					sub_list_checkbox.set('checked', '');
				}
			);
		}
		
	}
}

function initContactForm(){
	var content = $('content');
	var contact_form = content.getElement('.contact_form');
	if(contact_form){
		var request = contact_form.getElement('.request');
		if(request){
			var checkboxes = request.getElements('input');
			checkboxes.each(
				function(checkbox){
					var parent_list_element = checkbox.getParent('li');
					var sub_list = parent_list_element.getElement('ul');
					if(sub_list){
						if(checkbox.checked){
							sub_list.setStyle('height', 'auto');
						}else{
							sub_list.setStyle('height', 0);
						}
						checkbox.addEvent('click', getCheckboxStatus.bind(checkbox));
					}
				}
			);
		}
	}
}

function showProductVideo(){
	var anchor = this;
	var filename = anchor.get('href');
	var title = anchor.get('title');
	if(!Browser.Platform.ipod){
		Shadowbox.open(
			{
				content:    '<div id="shadowbox-video"><div class="var filename">.'+filename+'</div>Video wird geladen...</div>',
				player:     "html",
				title:      title,
				height:     364,
				width:      480
	    	}
		);
	}
	return false;
}

function initProductVideos(){
	var videos = $$('.flash_video');
	videos.each(
		function(video){
			var div_list_element = video.getParent('.entry');
			var link = div_list_element.getElement('.links');
			var anchor = link.getElement('a');
			anchor.addEvent('click', showProductVideo.bind(anchor));
		}
	);
}

function setShadowboxVideo(){
	var video = $('shadowbox-video');
	if(video){
		var filename = video.getElement('.filename').get('html');
		var loop = 'none';
		if(video.getElement('.loop')){
			loop = (video.getElement('.loop').get('html') == 'true' ? 'always' : 'none');
		}
		var flashvars = {
			file: filename,
			autostart: true,
			repeat: loop
		};
		var params = {
			allowfullscreen: 'true',
			allowscriptaccess: 'always',
			wmode: 'opaque'
		};
		var attributes = {};
		swfobject.embedSWF('mediaplayer-5.2/player.swf', 'shadowbox-video', '480', '360', '9.0.0', 'expressInstall.swf', flashvars, params, attributes);		
	}
}

function loadShadowboxActions(){
	setDownloadLink();
	setShadowboxVideo();
}

function fadeToNextImage(){
	var gallery = this;
	var entries = gallery.getElements('.entry');
	var fading_area = gallery.getElement('.fading_area');
	if(fading_area){
		var image = fading_area.getElement('.image');
		image.setStyle('z-index', 5);
		var description = fading_area.getElement('.description');
		var description_size = description.getSize();
		description.get('morph').start( {'bottom': -description_size.y} ).chain(
			function(){
				var index = gallery.get('index') * 1;
				index++;
				var entry = entries[index];
				if(entry){
				}else{
					entry = entries[0];
					index = 0;
				}
				gallery.set('index', index);
				var entry_clone = entry.clone();
				var new_image = entry_clone.getElement('.image');
				if(new_image){
					new_image.setStyles(
						{
							'opacity': 1,
							'z-index': 2
						}
					);
					new_image.inject(image, 'before');
				}
				var new_description = entry_clone.getElement('.description');
				new_description.setStyle('visibility', 'hidden');
				image.get('morph').start( {'opacity': [1,0]} ).chain(
					function(){
						image.dispose();
						new_description.inject(description, 'after');
						description.dispose();
						var headlines = new_description.getElements('.headline');
						headlines.each(
							function(headline){
								var h1 = new Element('h1',
									{
										'html': headline.get('html')
									}
								);
								h1.inject(headline, 'after');
								headline.dispose();
							}
						);
						var new_description_size = new_description.getSize();
						new_description.setStyle('bottom', -new_description_size.y);
						new_description.setStyle('visibility', 'visible');
						Cufon.refresh();
						if(new_description.get('html') != ''){
							new_description.get('morph').start( {'bottom': 0} );
						}
					}
				);
			}
		);
	}
}

// galerie (größere bilder im linken teil der seite) mit transparenten schwarzen balken, in dem sich infos befinden
function initFadingImageGallery(){
	var article = $('article');
	var image_galleries = article.getElements('.fading_images');
	var interval = 6000;
	image_galleries.each(
		function(gallery){
			var entries = gallery.getElements('.entry');
			var fading_area = gallery.getElement('.fading_area');
			entries.each(
				function(entry){
					entry.setStyle('display', 'none');
				}
			);
			if(entries.length > 0){
				gallery.set('index', 0);
				fadeToNextImage.periodical(interval, gallery);
			}
		}
	);
}

// Suche
function hideBranches(){
	var branch_button = this;
	var header = $('header');
	var search = $('search');
	if(header){
		var branches = header.getElement('.branches');
		if(branches){
			var size = branches.getSize();
			var search_size = search.getSize();
			var header_size = header.getSize();
			var margin_bottom = 8;
			var start_top_position = header_size.y - search_size.y - margin_bottom;
			branches.get('morph').start( {'height': 0, 'top': [start_top_position]} ).chain(
				function(){
					branches.setStyle('visibility', 'hidden');
				}
			);
			branch_button.removeEvents('click');
			branch_button.addEvent('click', showBranches.bind(branch_button));
		}
	}
	return false;
}

function showBranches(){
	var branch_button = this;
	var header = $('header');
	var search = $('search');
	if(header){
		var branches = header.getElement('.branches');
		if(branches){
			branches.setStyle('height', 'auto');
			var size = branches.getSize();
			var search_size = search.getSize();
			var header_size = header.getSize();
			var margin_bottom = 8;
			var start_top_position = header_size.y - search_size.y - margin_bottom;
			branches.setStyles(
				{
					'top': start_top_position,
					'height': 0,
					'visibility': 'visible'
				}
			);
			branches.get('morph').start( {'height': size.y, 'top': [start_top_position, start_top_position - size.y]} );
			branch_button.removeEvents('click');
			branch_button.addEvent('click', hideBranches.bind(branch_button));
		}
	}
	return false;
}

function initSearchField(){
	var search = $('search');
	if(search){
		/*var branch_button = search.getElement('.branch');
		branch_button.addEvent('click', showBranches.bind(branch_button));*/
	}
}

function initCatalogIndizes(){
	var article = $('article');
	var indizes = article.getElements('.index');
	indizes.each(
		function(index){
			var rows = index.getElements('tr');
			rows.each(
				function(row){
					row.addEvents(
						{
							'mouseenter': function(){
								row.addClass('hover');
							},
							'mouseleave': function(){
								row.removeClass('hover');
							}
						}
					);
					var anchor = row.getElement('.index_entry');
					anchor.addEvent('click', loadFlashCatalog.bind(anchor));
				}
			);
		}
	);
}

function setContentHeight(){
/*	var wrapper = document.getElement('.wrapper');
	if(wrapper){
		var wrapper_inhalt = $('wrapper_inhalt');
		var wrapper_header = $('wrapper_header');
		var background = $('background');
		var content = $('content');
		content.setStyle('height', 'auto');
		var scroll_size = window.getScrollSize();
		var content_size = content.getSize();
		var wrapper_header_size = wrapper_header.getSize();
		var background_size = background.getSize();
		
		var new_content_height = scroll_size.y - wrapper_header_size.y - background_size.y;
		
		content.setStyle('height', new_content_height);
	} */
}

var oSearchRequest;
function setupSearchRequest(form) {
	var search = $('article');
	oSearchRequest = new Form.Request(form,
		search,
		{
			onSuccess: function() {
				initializeSearch();
			}
		}	
	).send();
}

function getSearchResults(e) {
	
	e.stop();
	var form = this;
	var search = $('article');
	var sidebar = $('sidebar');
	
	search.empty();
	if (sidebar) {
		sidebar.empty();
	}
	var sClassName;
	
	sClassName = $$('body')[0].className.replace('kataloge', '');
	sClassName = sClassName.replace('presseberichte', '');
	
	$$('body')[0].className = sClassName;
	
	var request_url = '177-'+clang+'-.html';
	
	form.set('action', request_url);

	setupSearchRequest(form);
	
	return false;
}

function initSearch(){
	var search = $('search');
	if(search){
		var form = search.getElement('form');
		form.addEvent('submit', getSearchResults);
	}
}

function setBranchFilter(e) {
	var link = this;
	
	// bei erster Suche Ergebnis-Layer erstellen, bei allen weiteren Ergebnis-Layer leeren
	if (!$('search_results')) {
		var response_element = new Element('div',
			{
				'id': 'search_results'
			}
		);
		response_element.inject($('article'));
	} else {
		$('search_results').empty();
		var response_element = $('search_results');
	}
	
	// Link anpassen
	var arr = this.get('href').split('?');
	var baseURL = arr[0];
	var params = arr[1].split('&');
	
	var sXSearch = null;
	
	var i = 0;
	while (i < params.length) {
		var keyvalue = params[i].split('=');
		key = keyvalue[0];
		value = keyvalue[1];
		
		if (key == 'xsearch') {
			sXSearch = value;
		}
		
		i++;
	}
	
	var request_url = 'index.php?article_id=177&branche=1&xsearch=' + sXSearch;
	
	var request = new Request.HTML({
		url: request_url,
		onSuccess: function(a, b, c) {
			$('search_results').set('html', c);
		}
	}).send();
	
	return false;
}
function initBranches(){
	var divBranch = $('search_branch');
	if (divBranch) {
		var liste = divBranch.getChildren();
		
		var nItem = 0;
		while (nItem < liste.length) {
			
			var link = liste[nItem].getChildren()[0];
			var sOldLink = link.get('href');
			var cufon = link.getChildren()[0];
			var sNewLink = sOldLink + '&branche=1&xsearch=' + cufon.get('alt');
			link.set('href', sNewLink);
			link.addEvent('click', setBranchFilter);
			
			nItem++;
		}
	}
}

var background_image_counter = 0;
var background_image_timer;

function setNewBackgroundImage(){
	var headerbild = $('headerbild');
	// background_image_counter++;
	fading_images = new Array();
	var background_images = headerbild.getElements('.header_background_image');
	background_images.each(
		function(image){
			fading_images.push(image.get('html'));
		}
	);
	/* if(fading_images.length > background_image_counter){
		// do nothing
	}else{
		background_image_counter = 0;
	} */
	var random_number = Math.round(fading_images.length*(Math.random()));
	while((random_number == background_image_counter || random_number > (fading_images.length-1)) && fading_images.length > 2){
		random_number = Math.round(fading_images.length*(Math.random()));
	}
	background_image_counter = random_number;
	if(fading_images.length > 0){
		if(fading_images[background_image_counter] != ''){
			var filename = 'index.php?rex_resize=800w__'+fading_images[background_image_counter];
			new Asset.images(new Array(filename),
				{
					onComplete: function(){
						var image = headerbild.getElement('.background_image');
						if(image){
							image.dispose();
						}
						image = new Element('img',
							{
								'class': 'background_image',
								'src': filename,
								'alt': filename,
								'styles': {
									'opacity': 0
								}
							}
						);
						image.inject(headerbild);
						image.set('morph',
							{
								duration: 1000
							}
						);
						image.get('morph').start( {'opacity': 1} ).chain(
							function(){
								headerbild.setStyle('background-image', 'url('+filename+')');
								background_image_timer = setNewBackgroundImage.delay(4000);						
							}
						);
					}
				}
			);
		}
	}
}

function initFadingBackgroundImages() {
	var headerbild = $('headerbild');
	var background_images = headerbild.getElements('.header_background_image');
	if ( background_images.length > 0 ){
		background_image_timer = setNewBackgroundImage.delay(4000);
	}
}

// opens text-box, when "Weiter lesen / read more" - link is clicked
function showMoreText(){
	var link = this;
	var more_text = link.getNext('.more_text');
	if(more_text){
		link.setStyle('display', 'none');
		more_text.setStyle('height', 'auto');
		var height = more_text.getSize().y;
		more_text.setStyle('height', 0);
		more_text.get('morph').start( { 'height': height } );
	}
	return false;
}

function initMoreText(){
	$$('.more_text_link').each(
		function(link){
			var anchor = link.getElement('a');
			if(anchor){
				anchor.addEvent('click', showMoreText.bind(link));
			}
		}
	);
}

var hm;
window.addEvent('domready',
	function(){
		initSidebarMenuOnStart();
		if(!ie()){
			initStageFunctions();
		}
		initPressTeaser();
		initImageGallery();
		initMesse();
		if(!Browser.Platform.ipod){
			initCatalog();
		}
		if($$('.page_article_id').length > 0){
			initSidebarMenu($$('.page_article_id')[0].value);
		}
		initMooFlow();
		initGoogleMaps();
		initContactForm();
		if(!Browser.Platform.ipod){
			initProductVideos();
		}
		initFadingImageGallery();
		initSearchField();
		initCatalogIndizes();
		
		// History Manager for Ajax
		// if(!(navigator.appVersion.indexOf('MSIE 6') > 0)){
		// if(!ie()){
			hm = new HistoryManager({delimiter:'!'})
			hm.addEvent('article-added', getNextPage);
			hm.addEvent('article-updated', getNextPage);
			hm.addEvent('article-removed', getInitialPage);
			hm.addEvent('sub_article-added', getNextSubPage);
			hm.addEvent('sub_article-updated', getNextSubPage);
			hm.addEvent('sub_article-removed', getInitialSubPage);
			hm.start();
		// }
		// }
		// if(!(navigator.userAgent.toLowerCase().indexOf('msie 6') > -1)){
		initSearch();
		// }
		//initBranches();
		setContentHeight();
		initFadingBackgroundImages();
		if(!Browser.Platform.ipod){
			Shadowbox.setup();
		}
		initializeIE6();
		initMoreText();
	}
);

window.addEvent('resize', setContentHeight);

if(!Browser.Platform.ipod){
	Shadowbox.init({
		skipSetup: true,
		onFinish: loadShadowboxActions
	});
}
// 2010-08-30, pr: Funktion zum prüfen, ob IE vorliegt
function ie() {
	var bReturn = false;
	var sUserAgent = navigator.userAgent.toLowerCase();
	if (sUserAgent.indexOf('msie') > -1) { bReturn = true; }
	return bReturn;
}
// 2010-08-25, pr: MooFlow-Probleme im IE6, deshalb hier nur Hintergrundbild statt MooFlow
function initializeIE6() {
	
	// prüfen, ob wirklich IE6 vorhanden
	var sUserAgent = navigator.userAgent.toLowerCase();
	
	if (sUserAgent.indexOf('msie 6') > -1) {
	    // Unternehmenshistorie: alternative Darstellungsweise im IE6
	    if ($$('.mooflow_ie6').length > 0) {
		initializeIE6History();
	    }
	    if ( $ ('content_bg') ) {
				ie6_correct_content_bg();
	    }
	}
}
// 2010-08-25, pr: MooFlow-Probleme im IE6, deshalb hier nur Hintergrundbild statt MooFlow
function initializeIE6History() {
    // Höhe auf Vorlage für kleinen Header setzen
    $('header').setStyles({'height': '178'});
    // damit overflow berücksichtigt wird
    $('headerbild').setStyles({'position': 'absolute'});
    // Suche nachpositionieren
	// 2010-09-14, rm: Suche gibts im IE6 nicht mehr...
    $('search').setStyles({'bottom': '322'});
}
// 2010-08-25, pr: in nternehmen und Kontakt ist der Textcontainer für den Content nicht groß genug
function initializeIE6Container() {
    var iContainer = $('wrapper_inhalt');

    var iArticle = $$('.contact_form')[0];
    var sArticleHeight = iArticle.getStyle('height');
    var saToken = sArticleHeight.split('px');
}
function ie6_correct_content_bg() {
	
}
// 2010-08-25, pr: Effekte für Suchergebnisse
function initializeSearch() {
	// Wenn Suchergebnisse vorhanden sind
	if ($$('.catalog_index').length > 0) {
		// wrapper_navi
		var scroll_results = new Fx.Scroll(window).toElement('search');
		// weitere Suchergebnisse ausblenden
		$$('.toggler').getNext().hide();
		// Handling bei Klick auf "weitere Ergebnisse anzeigen..."
		$$('.toggler').addEvent('click', function() {
			var next = this.getNext();
			next.setStyles(
				{
					'display': 'block',
					'overflow': 'hidden',
					'height': 'auto'
				}
			);
			var next_size = next.getSize();
			next.setStyles(
				{
					'height': '0'
				}
			);
			// Animation NICHT für IE
			if (ie()) {
				next.setStyles({'height': next_size.y});
			} else {
				next.get('morph').start( {'height': next_size.y} );
			}
			this.hide();
		});
		// Handling bei Klick auf "weniger Ergebnisse anzeigen..."
		$$('.show_less').addEvent('click', function() {
			
			this.getParent().getParent().getChildren()[0].show();
			var next = this.getParent();
			// Animation NICHT für IE
			if (ie()) {
				next.hide();
			} else {
				next.get('morph').start( {'height': 0} );
			}
		});
	}
	// initAllFunctions();
}
