// Ajax komplette Seite
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;
	}
	hm.set('article', newArticleId);
//	setLanguageNavigation(newArticleId);
	return false;
}

function setNewHistoryManagerHashForSubArticle(){
	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){
	var german_link = $$('.anchor_lang_0')[0].get('html');
	var 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);
}

function getNextPage(article_id){
	var transition_type = 'quad:out';
	var animation_length = 1000;
	var element_id = 'rex-link-'+article_id;
	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');
	
	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 updateDomElement = new Element('div',
		{
			'id': 'tempAjaxContents'
		}
	);
	updateDomElement.inject(document.body);
	new Request.HTML({
		method: requestMethod,
		update: updateDomElement,
		url: requestUrl,
		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');
			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');
			if(new_height != header_height){
				if(new_sidebar_contents){
					if(sidebar){
						sidebar.get('morph').start( { 'opacity': [1,0] } );
					}
					article.get('morph').start( { 'opacity': [1,0] } );
				}else{
					content.get('morph').start( { 'opacity': [1,0] } );
				}
				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(){
											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;
											showAjaxContents(responseText, responseXML, responseHTML, anchor);
										}
									);
								}
							);
						}else{
							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] } ).chain(
										function(){
											headerbild.get('morph').start( { 'height': [temp_header_height, new_height] } );
										}
									);
									// inhalte
									header_height = new_height;
									showAjaxContents(responseText, responseXML, responseHTML, anchor);
								}
							);
						}
				    }
				});
			}else{
				if(!(headerbild.getStyle('background-image').indexOf(new_background_image) > 0)){
					if(new_sidebar_contents){
						if(sidebar){
							sidebar.get('morph').start( { 'opacity': [1,0] } );
						}
						article.get('morph').start( { 'opacity': [1,0] } );
					}else{
						content.get('morph').start( { 'opacity': [1,0] } );
					}
					var header_image = new Asset.images([new_background_image], {
						onComplete: function(){
							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] } );
									showAjaxContents(responseText, responseXML, responseHTML, anchor);
								}
							);
						}
					});
				}else{
					// inhalte
					if(new_header_contents){
						if(new_sidebar_contents){
							if(sidebar){
								sidebar.get('morph').start( { 'opacity': [1,0] } );
							}
							article.get('morph').start( { 'opacity': [1,0] } );
						}else{
							content.get('morph').start( { 'opacity': [1,0] } );
						}
						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);				
							}
						);
					}else{
						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.get('morph').start( { 'opacity': [1,0] } );
							}
							article.get('morph').start( { 'opacity': [1,0] } ).chain(
								function(){
									showAjaxContents(responseText, responseXML, responseHTML, anchor);
								}
							);
						}else{
							content.get('morph').start( { 'opacity': [1,0] } ).chain(
								function(){
									showAjaxContents(responseText, responseXML, responseHTML, anchor);
								}
							);
						}
					}
				}
			}
		}
	}).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';
		}
	}
}

function showAjaxContents(responseText, responseXML, responseHTML, anchor){
	var new_contents = $('tempAjaxContents');
	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){
		sidebar.get('morph').start( { 'opacity': [0,1] } );
		article.get('morph').start( { 'opacity': [0,1] } );
	}else{
		content.get('morph').start( { 'opacity': [0,1] } );
	}
	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();
}