// Ajax komplette Seite
var hash_subarticle = true;
function setNewHistoryManagerHash(){
	var anchor = this;
	var rel = anchor.get('rel').split(';');
	var href = anchor.get('href');
	if(rel[2]){
		href = rel[2];
	}
	newArticleId = getArticleId(rel[2]);
	if(href == 'http://'+document.domain+'/'){
		newArticleId = 1;
	}
	if(ajaxCallStat){
		ajaxCallStat.cancel();
		ajaxCallStat = null;
	}
	hash_subarticle = false;
	// hm.remove('sub_article');
	hm.set('sub_article', 1); // <- wird irgendwie nicht ausgeführt -.-
	hash_subarticle = true;
	hm.set('article', newArticleId);
	return false;
}

function setNewHistoryManagerHashForSubArticle(){
	if(!hash_subarticle){
		hash_subarticle = true;
		return false;
	}
	var anchor = this;
	var rel = anchor.get('rel').split(';');
	var href = anchor.get('href');
	if(rel[2]){
		href = rel[2];
	}
	newArticleId = getArticleId(rel[2]);
	if(href == 'http://'+document.domain+'/'){
		newArticleId = 1;
	}
	hm.set('sub_article', newArticleId);
	return false;
}

function setLanguageNavigation(newArticleId){
	if (clang < 2){
		var german_link = '';
		if($$('.anchor_lang_0')[0]){
			german_link = $$('.anchor_lang_0')[0].get('html');
		}
		var english_link = '';
		if($$('.anchor_lang_1')[0]){
			english_link = $$('.anchor_lang_1')[0].get('html');	
		}
		var languageNavigation = $('sprachNav');
		var languageAnchors = languageNavigation.getElements('a');
		languageAnchors[0].set('href', german_link);
		languageAnchors[1].set('href', english_link);
	}
}

var ajaxCallStat = null;
var isAjaxRunning = false;

function getNextPage(article_id){
	var transition_type = 'quad:out';
	var animation_length = 500;
	var element_id = 'rex-link-'+article_id;
	// wenn article_id == 1, dann wurde das logo angeklickt, die informationen für die weiteren schritte müssten dann im Logo-Link drin stehen
	if(article_id == 1){
		element_id = 'logo';
	}
	var list_element = $(element_id);
	var anchor = list_element.getElement('a');
	var parent_ul = list_element.getParent('ul');

	var rel = anchor.get('rel').split(';');
	var new_height = rel[0];
	var new_background_image = rel[1];
	var navi = $('navi');
	var sub_navigation = navi.getElement('.nav_level2');
	var headerbild = $('headerbild');
	
	headerbild.set('morph',
		{
			transition: transition_type,
			duration: animation_length
		}
	);
	var background_image = headerbild.getElement('.background_image');
	clearTimeout(background_image_timer);
	if(background_image){
		background_image.dispose();
	}
	var header_contents = $('header_contents');
	
	// vor dem url-rewrite wurde die id noch aus dem href ausgelesen, jetzt aus der rel auslesen, wenn gesetzt
	var href = anchor.get('href');
	if(rel[2]){
		href = rel[2];
	}
	var newArticleId = getArticleId(href);
	if(href == 'http://'+document.domain+'/'){
		newArticleId = 1;
	}
	var ajaxArticleId = 142;
	var requestMethod = 'get';
	var requestUrl = 'index.php?article_id='+ajaxArticleId+'&page_id='+newArticleId+'&clang='+clang;
/*	var tempAjaxContents = $('tempAjaxContents');
	if(tempAjaxContents){
		tempAjaxContents.dispose();
	} */
	// div erstellen um die neuen Inhalte abzulegen, wenn das div noch nicht existiert
	var tempAjaxContents = $('tempAjaxContents');
	if(tempAjaxContents){
		updateDomElement = tempAjaxContents;
	}else{
		var updateDomElement = new Element('div',
			{
				'id': 'tempAjaxContents'
			}
		);
	}
	var sidebar_morph = null;
	var article_morph = null;
	var content_morph = null;
	var header_morph = null;
	updateDomElement.inject(document.body);
	ajaxCallStat = new Request.HTML({
		method: requestMethod,
		update: updateDomElement,
		url: requestUrl,
		onComplete: function(){
			ajaxCallStat = null;
			sidebar_morph = null;
			article_morph = null;
			content_morph = null;
			header_morph = null;
		},
		onCancel: function(){
		/*	var tempAjaxContents = $('tempAjaxContents');
			if(tempAjaxContents){
				tempAjaxContents.dispose();
			} */
			if(sidebar_morph){
				sidebar_morph.cancel();
			}
			if(article_morph){
				article_morph.cancel();
			}
			if(content_morph){
				article_morph.cancel();
			}
			if(header_morph){
				header_morph.cancel();
			}
		},
		onSuccess: function(responseText, responseXML, responseHTML){
			setActiveNavigation(anchor);
			Cufon.refresh();
			var content = $('content');
			var new_sidebar_contents = $('new_sidebar');
			var sidebar = $('sidebar');
			var article = $('article');
			var new_contents = $('tempAjaxContents');
			if(new_contents){
				setLanguageNavigation(newArticleId);
				var new_subnavigation_contents = new_contents.getElement('.new_nav_level2');
				if(new_subnavigation_contents){
					var new_subnavigation_class = new_subnavigation_contents.className.split(' ')[1];
					if(!new_subnavigation_class){
						new_subnavigation_class = '';
					}
				}
			
				var hide_sub_navigation = false;
				if(sub_navigation && element_id != 'logo' || new_subnavigation_contents){
					if(sub_navigation){
						if(sub_navigation.className.indexOf(new_subnavigation_class) > 0){
						
						}else{
							hide_sub_navigation = true;
						}
					}else{
					
					}
					if ((parent_ul.className != 'rex-navi2' && parent_ul.className != 'rex-navi3') || hide_sub_navigation) {
						if (sub_navigation) {
							sub_navigation.get('morph').start( { 'width': [215,0], 'padding-left': 0 } );
							var sub_list = sub_navigation.getElement('ul');
							sub_list.get('morph').start( { 'opacity': 0 } ).chain(
								function() {
									sub_navigation.dispose();
								}
							);
						}
					}
				}
				var new_header_contents = $('new_header_contents');
				var header_contents = $('header_contents');
				// je nachdem ob der header kleiner oder größer wird oder das bild gar nicht ausgetauscht wird, die Reihenfolge der Animationen ändern, danach mit der funktion showAjaxContents die neuen Inhalte einblenden
				if(new_height != header_height){
					if(new_sidebar_contents){
						if(sidebar){
							sidebar_morph = sidebar.get('morph').start( { 'opacity': [1,0] } );
						}
						article_morph = article.get('morph').start( { 'opacity': [1,0] } );
					}else{
						content_morph = content.get('morph').start( { 'opacity': [1,0] } );
					}
					var header_image = new Asset.images([new_background_image], {
					    onComplete: function(){
							if(new_height < header_height){
								header_morph = headerbild.get('morph').start( { 'height': [header_height, new_height], 'opacity': [1,0] } ).chain(
									function(){
									// für nacheinander animieren, code wieder einblenden
									//	headerbild.get('morph').start( { 'opacity': [1,0] } ).chain(
									//		function(){
												if(new_background_image.split('__')[1] != ''){
													headerbild.setStyle( 'background-image', 'url('+new_background_image+')' );
												}
												header_contents.empty();
												if(new_header_contents){
													header_contents.set('html', new_header_contents.get('html'));
												}
												headerbild.get('morph').start( { 'opacity': [0,1] } ).chain(
													function(){
														header_height = new_height;
													}
												);
												// inhalte
												header_height = new_height; // für die nächsten aufrufe die neue header größe setzen
												showAjaxContents(responseText, responseXML, responseHTML, anchor, newArticleId);
									//		}
									//	);
									}
								);
							}else{
								header_morph = headerbild.get('morph').start( { 'opacity': [1,0] } ).chain(
									function(){
										if(new_background_image.split('__')[1] != ''){
											headerbild.setStyle('background-image', 'url('+new_background_image+')');
										}
										header_contents.empty();
										if(new_header_contents){
											header_contents.set('html', new_header_contents.get('html'));
										}
										var temp_header_height = header_height;
										headerbild.get('morph').start( { 'opacity': [0,1], 'height': [temp_header_height, new_height] } ).chain(
											function(){
											//	headerbild.get('morph').start( { 'height': [temp_header_height, new_height] } );
											}
										);
										// inhalte
										header_height = new_height; // für die nächsten aufrufe die neue header größe setzen
										showAjaxContents(responseText, responseXML, responseHTML, anchor, newArticleId);
									}
								);
							}
					    }
					});
				}else{
					if(!(headerbild.getStyle('background-image').indexOf(new_background_image) > 0)){
						if(new_sidebar_contents){
							if(sidebar){
								sidebar_morph = sidebar.get('morph').start( { 'opacity': [1,0] } );
							}
							article_morph = article.get('morph').start( { 'opacity': [1,0] } );
						}else{
							content_morph = content.get('morph').start( { 'opacity': [1,0] } );
						}
						var header_image = new Asset.images([new_background_image], {
							onComplete: function(){
								header_morph = headerbild.get('morph').start( { 'opacity': [1,0] } ).chain(
									function(){
										if(new_background_image.split('__')[1] != ''){ // wenn es ein neues background image gibt, dann setzen, ansonsten das alte stehen lassen
											headerbild.setStyle('background-image', 'url('+new_background_image+')');
										}
										header_contents.empty();
										if(new_header_contents){
											header_contents.set('html', new_header_contents.get('html'));
										}
										headerbild.get('morph').start( { 'opacity': [0,1] } );
										showAjaxContents(responseText, responseXML, responseHTML, anchor, newArticleId);
									}
								);
							}
						});
					}else{
						// inhalte
						headerbild.setStyle('opacity', 1);
						if(new_header_contents){
							if(new_sidebar_contents){
								if(sidebar){
									sidebar_morph = sidebar.get('morph').start( { 'opacity': [1,0] } );
								}
								article_morph = article.get('morph').start( { 'opacity': [1,0] } );
							}else{
								content_morph = content.get('morph').start( { 'opacity': [1,0] } );
							}
							header_morph = header_contents.get('morph').start( { 'opacity': [1,0] } ).chain(
								function(){
									header_contents.empty();
									header_contents.set('html', new_header_contents.get('html'));
									header_contents.get('morph').start( { 'opacity': [0,1] } );
									showAjaxContents(responseText, responseXML, responseHTML, anchor, newArticleId);				
								}
							);
						}else{
							header_morph = header_contents.get('morph').start( { 'opacity': [1,0] } ).chain(
								function(){
									header_contents.empty();
									header_contents.get('morph').start( { 'opacity': [0,1] } );
								}
							);
							if(new_sidebar_contents){
								if(sidebar){
									sidebar_morph = sidebar.get('morph').start( { 'opacity': [1,0] } );
								}
								article_morph = article.get('morph').start( { 'opacity': [1,0] } ).chain(
									function(){
										showAjaxContents(responseText, responseXML, responseHTML, anchor, newArticleId);
									}
								);
							}else{
								content_morph = content.get('morph').start( { 'opacity': [1,0] } ).chain(
									function(){
										showAjaxContents(responseText, responseXML, responseHTML, anchor, newArticleId);
									}
								);
							}
						}
					}
				}
			}
		}
	}).send();
	return false;
}

// holt sich aus der hidden-sitemap die struktur um die entsprechenden elemente aktiv zu setzen
function setActiveNavigation(anchor){
	var navi = $('navi');
	var href = anchor.get('href');
	var rel = anchor.get('rel').split(';');
	if(rel[2]){
		href = rel[2];
	}
	
	var newArticleId = getArticleId(href);

	var list = $('rex-link-'+newArticleId);
	if(list){
		var parent_list = list.getParent('ul');
		var list_element = $('rex-article-'+newArticleId);
		if(parent_list.className == 'rex-navi3'){
			list_element = $('rex-article-'+parent_list.getParent('li').get('id').split('-')[2]);
			parent_list = parent_list.getParent('ul');
		}
		if(list_element){
			anchor = list_element.getElement('a');
			var nav_level1 = navi.getElement('.nav_level1');
			var nav_level2 = navi.getElement('.nav_level2');
			var main_list_elements = nav_level1.getElements('li');
			main_list_elements.each(
				function(li){
					li.className = 'rex-normal level1';
					var link = li.getElement('a');
					link.className = '';
				}
			);
			if(nav_level2){
				var sub_list_elements = nav_level2.getElements('li');
				sub_list_elements.each(
						function(li){
							li.className = 'rex-normal level1';
							var link = li.getElement('a');
							link.className = '';
						}	
				);
			}
			if(parent_list){
				var parent_list_element = parent_list.getParent('li');
				if(parent_list_element){
					var parent_id = parent_list_element.get('id').split('-')[2];
					parent_list_element = $('rex-article-'+parent_id);
					if(parent_list_element){
						var parent_anchor = parent_list_element.getElement('a');
						parent_list_element.className = 'rex-active level1';
						parent_anchor.className = 'rex-active';
					}
				}
			}
	
			list_element.className = 'rex-current level1';
			anchor.className = 'rex-current';
		}
	}
/*	alert(newArticleId);
	if(!(newArticleId > 1)){
		var active_list_element = navi.getElement('li.rex-current');
		if(active_list_element){
			var active_anchor = active_list_element.getElement('a');
			active_list_element.removeClass('rex-current');
			active_anchor.removeClass('rex-current');
		}
	} */
}

function showAjaxContents(responseText, responseXML, responseHTML, anchor, newArticleId){
	var new_contents = $('tempAjaxContents');
	var body_classname = new_contents.getElement('.body_classname');
	if(body_classname){
		body_classname = body_classname.get('html');
	}else{
		body_classname = '';
	}
	// var body_classname = new_contents.getElement('.body_classname').get('html');
	document.body.className = body_classname;
	var new_article_contents = $('new_article');
	var new_sidebar_contents = $('new_sidebar');
	var new_subnavigation_contents = new_contents.getElement('.new_nav_level2');

	// Article
	var article = $('article');
	article.empty();
	if(new_article_contents){
		article.set('html', new_article_contents.get('html'));
	}
	// Sidebar
	var sidebar = $('sidebar');
	if(new_sidebar_contents){
		if(!sidebar){
			var sidebar = new Element('div',
				{
					'id': 'sidebar',
					'styles': {
						'opacity': 0
					}
				}
			);
			sidebar.inject(article, 'after');
		}
		sidebar.set('html', new_sidebar_contents.get('html'));
	}else{
		if(sidebar){
			sidebar.dispose();
		}
	}
	// Navigation
	var navi = $('navi');
	var navi_size = navi.getSize();
	var sub_navigation = navi.getElement('.nav_level2');
	if(new_subnavigation_contents){
		var new_subnavigation_class = new_subnavigation_contents.className.split(' ')[1];
		if(!new_subnavigation_class){
			new_subnavigation_class = '';
		}
		if(!sub_navigation || !(sub_navigation.className.indexOf(new_subnavigation_class) > 0)){
			var sub_navigation = new Element('div',
				{
					'class': 'nav_level2 '+new_subnavigation_class,
					'styles': {
						'width': 0,
						'padding-left': 0
					}
				}
			);
			sub_navigation.inject(navi);
			sub_navigation.set('html', new_subnavigation_contents.get('html'));
			var new_subnavigation_size = sub_navigation.getSize();
			sub_navigation.setStyle('display', 'none'); // IE8-Bugfix
			Cufon.refresh(); // IE8-Bugfix
			sub_navigation.setStyle('display', ''); // IE8-Bugfix
			sub_navigation.setStyle('opacity', 0);
			var new_height = new_subnavigation_size.y;
			if(navi_size.y >= new_subnavigation_size.y){
				new_height = navi_size.y - sub_navigation.getStyle('padding-top').toInt() - sub_navigation.getStyle('padding-bottom').toInt();
			}else{
				new_height = new_subnavigation_size.y - sub_navigation.getStyle('padding-top').toInt() - sub_navigation.getStyle('padding-bottom').toInt();
			}
			sub_navigation.get('morph').start( { 'width': 215, 'height': new_height, 'opacity': 1 } );
		}
	}else{
		if(sub_navigation){
			sub_navigation.dispose();
		}
	}

	// Funktionen initialisieren, Bereinigen des DOMs, Anzeigen der neuen Inhalte
	Cufon.refresh();
	new_contents.dispose();
	var content = $('content');
	if(new_sidebar_contents){
		content.setStyle('opacity', 1);
		sidebar.get('morph').start( { 'opacity': [0,1] } );
		article.get('morph').start( { 'opacity': [0,1] } );
	}else{
		if(sidebar){
			sidebar.setStyle('opacity', 1);
		}
		article.setStyle('opacity', 1);
		content.get('morph').start( { 'opacity': [0,1] } );
	}
	initSidebarMenu(newArticleId);
	initAllFunctions();
}

function getNextSubPage(article_id){
	var anchor = $('subpage_article_'+article_id);
	if(anchor){
		// do nothing
	}else{
		anchor = new Element('a',
			{
				'rel': ';;'+article_id+'-'+clang+'-',
				'href': ''
			}
		);
	}
	changeArticleContent(anchor);
}

function getInitialSubPage(){
	var anchor = new Element('a',
		{
			'rel': ';;'+current_article_id+'-'+clang+'-',
			'href': ''
		}
	);
	changeArticleContent(anchor);
//	hm.set('article',current_article_id);
}

function getInitialPage(){
	getNextPage(current_article_id);
//	hm.set('article',current_article_id);
}

function initAllFunctions(){
	initStageFunctions();
	initPressTeaser();
	initImageGallery();
	initMesse();
	initCatalog();
	if($$('.page_article_id').length > 0){
		initSidebarMenu($$('.page_article_id')[0].value);
	}
	initMooFlow();
	initGoogleMaps();
	initContactForm();
	initProductVideos();
	initFadingImageGallery();
	initSearchField();
	initCatalogIndizes();
	initFadingBackgroundImages();
	Shadowbox.setup ("a.floating_image");
	alert_developer_only ('Shadowbox initialisieren');
	setContentHeight.attempt();
	initMoreText();
}

function alert_developer_only (str_message)
{
	//alert (str_ip);
	if (str_ip == '212.6.167.205')
	{
	//	alert (str_message);
	}
}
