var pager = new Array(
	"x_mas.html",
	"answers.html", 
	"ourServices.html", 
	"innovation.html", 
	"partner.html", 
	"knowledge.html", 
	"softwareOnDemand.html",
	"products.html",
	"team.html",
	"impressum.html",
	"locationPlan.html",
	"services.html",
	"memberships.html",
	"cooperations.html",
	"projects.html",
	"references.html",
	"activities.html");
var current_url;
var sitemap;
var show_pager = true;

self.getDisplay = function(display) {
	if(Prototype.Browser.IE) {
		return "block";
	} else {
		return display;
	}
}

self.pause = function(millis){
	var date = new Date();
	var curDate = null;
	
	do { curDate = new Date(); } 
	while(curDate-date < millis);
} 


self.openContent = function(content_url, sub_content_url, language_change) {
	resizeConten();
	
	sub_content_url = (sub_content_url?sub_content_url:'');
	content_url = (content_url?content_url:'');
	language_change = (language_change?language_change:false);
	
	sitemap = ($F('current_url')=='sitemap.html'?true:false);
	
	$('current_url').value = current_url = content_url;
	$('current_sub_url').value = sub_content_url;

	contentUpdater(content_url, sub_content_url, language_change);
	
	if($('sub_content')||(sitemap&&!$('sub_content'))) {
		subContentUpdater(content_url, sub_content_url, language_change);
	}
}

self.contentUpdater = function(content_url, sub_content_url, language_change) {
	var old_content = $('content').innerHTML;

	if((content_url.length>0 && sub_content_url.length==0)||language_change||sitemap) {
		var re = new RegExp(".*id?=?applet?\.*","ig");
		var arr = re.exec(old_content);
		var applet = ($F('current_url')=='sitemap.html'||arr?true:false);
		content_url = $F('language')+"/"+content_url;
		
		var oOptions = {
				method: "get",
				onLoading: Element.show('loading'),
				onComplete: function () {
					Element.hide('loading');
					$('content').parentNode.style.display = getDisplay('table-cell');
					if(applet) {
						if(old_content.style) {
							old_content.style.display = "none";
						}
						$('content').style.display = "none";
						Effect.toggle('content','appear'); 
					} else {
						Element.show('content');
						fadeContent(old_content);
					}
					if(sub_content_url.length>0 && (sitemap||language_change)){
						subContentUpdater(content_url, sub_content_url, language_change);
					}
					changePager();
				},
				onFailure: function (oXHR, oJson) {
					$('content').innerHTML = "An error occurred: "+oXHR.status+" - "+oXHR.statusText;
				},
				evalscripts: true
		};
		
		new Ajax.Updater({success: 'content', failure: 'notice'}, content_url, oOptions);
	} else if(sub_content_url.length==0) {
		$('content').parentNode.style.display = 'none';
		Element.hide('content');
	}
}

self.subContentUpdater = function(content_url, sub_content_url, language_change) {
	if($('sub_content')) {
		var old_sub_content =  $('sub_content').innerHTML;
	}
	
	if(sub_content_url.length>0) {
		if((content_url.length==0)) {
			var	fade = false;
		} else {
			var fade = true;
		}
		var oOptions = {
				method: "get",
				onLoading: Element.show('loading'),
				onComplete: function () {
					Element.hide('loading');
					if(content_url.length>0 && sub_content_url.length>0 && $('sub_content').style.display=='none' && !language_change) {
						$('sub_content').parentNode.style.display = getDisplay('table-cell');
						new Effect.SlideDown('sub_content', {duration: 1.0});
					} else {
						$('sub_content').parentNode.style.display = getDisplay('table-cell');
						if(fade) {
							//Element.show('sub_content');
							//fadeSubContent(old_sub_content);
							$('sub_content').style.display = "none";
							Effect.toggle('sub_content','appear'); 
						} else {
							Element.hide('sub_content');
							new Effect.SlideDown('sub_content', {duration: 1.0});
						}
					}
				},
				onFailure: function (oXHR, oJson) {
					$('content').parentNode.style.display = 'none';
					Element.hide('content');
					$('sub_content').innerHTML = "An error occurred: "+oXHR.status+" - "+oXHR.statusText;
				},
				evalscripts: true
		};

		sub_content_url = $F('language')+"/"+sub_content_url;
		
		new Ajax.Updater({success: 'sub_content', failure: 'notice'}, sub_content_url, oOptions);
	} else {
		if($('sub_content')) {
			$('sub_content').parentNode.style.display = 'none';
			Element.hide('sub_content');
		}
	}
}

self.changeMenu = function() {
	$('language').value = getLanguage();
	
	$('menu').observe('click', function(event) {
		if(Event.element(event).inspect()=='<a>') {
			removeCurrentMenuClass();
			Event.element(event).addClassName('current_menu');
			show_pager = true;
		}
	})
	
	menu_url = "menu.html";
	menu_url = $F('language')+"/"+menu_url;
	new Ajax.Updater('menu', menu_url,{onLoading: Element.show('loading'), onComplete: function() {Element.hide('loading'); adjustMenu()}, evalscripts: true, method: "get"});
	
	pulldownMenu();
	changeFooter();
	//changePager();
}

self.changeFooter = function() {	
	$('footer').observe('click', function(event) {
		if(Event.element(event).inspect()=='<a>') {
			removeCurrentMenuClass();
			Event.element(event).addClassName('current_menu');
			show_pager = false;
		}
	})
	
	footer_url = "footer.html";
	footer_url = $F('language')+"/"+footer_url;
	new Ajax.Updater('footer', footer_url,{onLoading: Element.show('loading'), onComplete: function() {Element.hide('loading'); adjustMenu(); changeLanguageImg()}, evalscripts: true, method: "get"});
}

self.changeLanguageImg = function() {
	
	switch(getLanguage()) {
		case 'de':
			$('de').src = 'images/de.png';
			$('en').src = 'images/gb_off.png';
			break;
		case 'en':
			$('de').src = 'images/de_off.png';
			$('en').src = 'images/gb.png';
			break;
		default:
			$('de').src = 'images/de.png';
			$('en').src = 'images/gb_off.png';
	}
}

self.removeCurrentMenuClass = function() {
		//var	current = $('menu').getElementsByClassName('current_menu');
		var	current = $$('.current_menu');
		for(var i=0;i<current.size();i++) {
			current[i].removeClassName('current_menu');
		}
		/*
		var	current=$('footer').getElementsByClassName('current_menu');
		for(var i=0;i<current.size();i++) {
			current[i].removeClassName('current_menu');
		}
		*/
}

self.changePager = function() {	
	pager_url = "pager.html";
	pager_url = $F('language')+"/"+pager_url;
	new Ajax.Updater('pager', pager_url,{onLoading: Element.show('loading'), onComplete: function() {Element.hide('loading'); pagerHistory()}, evalscripts: true, method: "get"});
}

self.pagerHistory = function() {
	var prev_page = $('previous_page').firstChild;
	var next_page = $('next_page').firstChild;

	if(!show_pager) {
		Element.addClassName(prev_page, 'disabled');
		Element.writeAttribute(prev_page, 'href', false);
		Element.addClassName(next_page, 'disabled');
		Element.writeAttribute(next_page, 'href', false);
	} else {
		for(var i=0; i<pager.length; i++) {
			if(pager[i]==$F('current_url') || (pager[i]==current_url && $F('current_url').length==0)) {
				if(i==0) {
					Element.addClassName(prev_page, 'disabled');
					Element.writeAttribute(prev_page, 'href', false);
					//Event.stopObserving(prev_page, 'click', openContent(url, ''));
				} else {
					var url = pager[(i-1)];
					function_call = "removeCurrentMenuClass(); openContent('"+url+"', '')";
					Element.removeClassName(prev_page, 'disabled');
					Element.writeAttribute(prev_page, 'href', 'javascript:'+function_call);
					//Event.observe(prev_page, 'click', openContent(url, ''));
				}
				if(i==(pager.length-1)) {
					Element.addClassName(next_page, 'disabled');
					Element.writeAttribute(next_page, 'href', false);
					//Event.stopObserving(next_page, 'click', openContent(url, ''));
				} else {
					var url = pager[(i+1)];
					function_call = "removeCurrentMenuClass(); openContent('"+url+"', '')";
					Element.removeClassName(next_page, 'disabled');
					Element.writeAttribute(next_page, 'href', 'javascript:'+function_call);
	
					Element.observe($('next_page'), 'mouseover', function() {window.status=''; return true;});
					//Event.observe(next_page, 'click', openContent(url, ''));
				}
				break;
			} else {
				Element.addClassName(prev_page, 'disabled');
				Element.writeAttribute(prev_page, 'href', false);
				Element.addClassName(next_page, 'disabled');
				Element.writeAttribute(next_page, 'href', false);
				break;
			}
		}
	}
}

self.mouseOver = function(text) {
	window.status = text;
	return true;
}

self.mouseOut = function() {
	window.status = '';
	return true;
}

self.getRadian = function(degree) {
	return degree*Math.PI/180;
}

self.getDegree = function(radian) {
	return radian*180/Math.PI;
}

self.cot = function(x) {
	return 1/Math.tan(x);
}

self.adjustMenu = function() {
	var degree = 5;
	var childs = Element.childElements($('menu').firstChild);
	for(i=0;i<childs.size();i++) {
		var padding = childs[i].getStyle("padding-right");
		padding = padding.replace(/px/i, "");
		
		alpha = getRadian(degree);
		b = parseInt(childs[i].getHeight())*i;
		a = b/cot(alpha);
		new_height = a/Math.tan(alpha);
		
		var offset = i/1.5;
		childs[i].style.paddingRight = parseInt(padding)-Math.round(a)+offset;
//		alert(childs[i].style.paddingRight);
	}
}

self.changeLanguage = function(language) {
	$('language').value=language; 

	setCookie('language', language, '30', '/', '', '');
	
	changeMenu();
	
	if($F('current_url')&&$F('current_sub_url')) { 
		openContent($F('current_url'), $F('current_sub_url'), true);
	} else if($F('current_url')) {
		openContent($F('current_url'), '');
	} else {
		openContent($F('start_url'), '');
	}
}

self.resetUrl = function() {
	if($('current_url'))	$('current_url').value='';
	if($('sub_content'))	$('sub_content').value='';
}

self.getLanguage = function() {
	 return ($F('language')?$F('language'):(getCookie('language')?getCookie('language'):'de'));
}

self.fadeContent = function(content) {
	$('old_content').clonePosition($('content'));
	$('old_content').show();
	$('old_content').style.zIndex = $('content').style.zIndex+1;
	content = content.replace(/id=(")*sub_content(")*/g, 'id="replaced_sub_content"');
	$('old_content').update(content);
	
	Effect.Fade('old_content', { duration: 1.5 });
}

self.fadeSubContent = function(content) {
	$('old_sub_content').clonePosition($('sub_content'));
	$('old_sub_content').show();
	$('old_sub_content').style.zIndex = $('sub_content').style.zIndex+1;
	content = content.replace(/class=(")*highlight(")*/g, 'class="old_highlight"');
	$('old_sub_content').update(content);

	Effect.Fade('old_sub_content', { duration: 1.5 });
}

self.resizeConten = function() {
	document.body.style.overflow = 'hidden';
	window_height = (typeof window.innerHeight != 'undefined' ? window.innerHeight : document.body.offsetHeight);
	body_tag_position = Position.page($('body'));
	footer_height = $('footer').getHeight();
	new_body_tag_height = window_height-body_tag_position[1]-footer_height-5;
	
	$('body').style.height = $('body').firstChild.style.height = new_body_tag_height;
	//document.body.style.overflow = 'auto';
}

Event.observe( window, 'load', function() {resetUrl(); resizeConten();});
Event.observe( window, 'resize', function() {resizeConten();});

