var currentMainNavigation;
var listParentDefaultSize;
var listEntryDefaultSize;

function getWindowSize(){
	var w = 0;
	var h = 0;

	//IE
	if(!window.innerWidth)
	{
		//strict mode
		if(!(document.documentElement.clientWidth == 0))
		{
			w = document.documentElement.clientWidth;
			h = document.documentElement.clientHeight;
		}
		//quirks mode
		else
		{
			w = document.body.clientWidth;
			h = document.body.clientHeight;
		}
	}
	//w3c
	else
	{
		w = window.innerWidth;
		h = window.innerHeight;
	}
	return {width:w,height:h};
}

var windowSize = getWindowSize();
var minHeight = 600;
var minWidth = 1000;
var maxWidth = 1280;
var height = 0;
var width = 0;
var left = 0;
var initialPosition = 0;

function changePage(){
	$('navigation').removeEvents();
	var clickedListEntry = this;
	var anchor = clickedListEntry.getChildren('a')[0];
	var list = clickedListEntry.getParent('ul');
	var listParent = list.getParent('li');
	var listElements = list.getChildren('li');
	var num_listElements = listElements.length;
	var listEntry;
	listParent.removeEvents();
	for(var i=0;i<num_listElements;i++){
		listEntry = listElements[i];
		if(listEntry.id == clickedListEntry.id){

		}else{
			if(navigator.appName.indexOf("Explorer") >= 0 && (navigator.appVersion.indexOf("MSIE 6") > 0 || navigator.appVersion.indexOf("MSIE 7") > 0)){
				listEntry.get('morph').start({ 'opacity': 0, 'margin-top': -22 }).chain(
					function(){
						this.start({'height':0});
					}
				);
			}else{
				listEntry.get('morph').start({ 'opacity': 0 }).chain(
					function(){
						this.start({'height':0});
					}
				);
			}
		}
	}
	
	var fx = function(){
		// contentBlock ausblenden
		$('content').get('morph').start( { 'opacity': 0 } );
		// navigation zusammenziehen
		listParent.get('morph').start({ 'height': listParentDefaultSize }).chain(
			function(){
				window.location.href = anchor.href;
			}
		);
	}
	fx.delay(550);
	return false;
}

function resetNavigation(){
	currentMainNavigation = null;
	var subNavigations = this;
	var num_subNavigations = subNavigations.length;
	var subNavigation;
	var listElements;
	var num_listElements;
	var listEntry;
	var listParent;
	for(var i=0;i<num_subNavigations;i++){
		subNavigation = subNavigations[i];
		listParent = subNavigation.getParent('li');
		if(listParent.className.indexOf('rex-active') >= 0){
			listElements = subNavigation.getChildren('li');
			num_listElements = listElements.length;
			for(var j=0;j<num_listElements;j++){
				listEntry = listElements[j];
				if(listEntry.className.indexOf('rex-current') >= 0){
					listEntry.get('morph').start( { 'height': listEntryDefaultSize, 'opacity': 1 } );
				}
			}
		}
	}
}

function hideSubNavigation(){
	var listParent = this;
	var list = listParent.getChildren('ul')[0];
	var listElements = list.getChildren('li');
	var num_listElements = listElements.length;
	var listEntry;
	for(var i=0;i<num_listElements;i++){
		listEntry = listElements[i];
		if(navigator.appName.indexOf("Explorer") >= 0 && (navigator.appVersion.indexOf("MSIE 6") > 0 || navigator.appVersion.indexOf("MSIE 7") > 0)){
			listEntry.get('morph').start( { 'opacity': 0, 'height': 0, 'margin-top': -22 } );
		}else{
			listEntry.get('morph').start( { 'opacity': 0, 'height': 0 } );	
		}
	}
	listParent.get('morph').start({ 'height': listParentDefaultSize });
}

function showSubNavigation(){
	var listParent = this;
	if(!listParentDefaultSize){
		listParentDefaultSize = listParent.getSize().y;
	}
	var list = listParent.getChildren('ul')[0];
	var size = list.getSize();

	if(currentMainNavigation){
		var currentHeight = currentMainNavigation.getSize().y;
	}else{
		var currentHeight = listParentDefaultSize;
	}

	var listElements = list.getChildren('li');
	var num_listElements = listElements.length;
	var listEntry;
	
	var height = listParentDefaultSize + listEntryDefaultSize * (num_listElements-1);

	var fx = function(){
		if(!$('map_content')){
			if($$('.rex-current').length > 0){
				if($$('.rex-current')[0].getParent('div').className != 'systemNav'){
					$$('.rex-current')[0].get('morph').start( { 'opacity': 0 } ).chain(
						function(){
							this.start( { 'height': 0 } );
						}
					);
				}
			}
		}
		for(var i=0;i<num_listElements;i++){
			listEntry = listElements[i];
			listEntry.get('morph').start({ 'height': [listEntryDefaultSize,listEntryDefaultSize], 'opacity': 1, 'margin-top': 0 });
		}
	}
	
	listParent.get('morph').start({ 'height': [currentHeight,height] }).chain(fx);
	if(currentMainNavigation && currentMainNavigation.id != listParent.id){
		currentMainNavigation.get('morph').start({ 'height': listParentDefaultSize });
	}
	currentMainNavigation = listParent;
}

function setNavigationFunctions(){
	var subNavigation = $$('.rex-navi2');
	var num_subNavigation = subNavigation.length;
	var list;
	var listParent;
	var listElements;
	var num_listElements;
	var listEntry;
	var anchor;
	for(var i=0;i<num_subNavigation;i++){
		list = subNavigation[i];
		listParent = list.getParent('li');
		listParent.addEvent('mouseenter', showSubNavigation.bind(listParent));
		listParent.addEvent('mouseleave', hideSubNavigation.bind(listParent));

		anchor = listParent.getChildren('a')[0];
		// anchor.addEvent('click', function(){ return false; });

		listElements = list.getChildren('li');
		num_listElements = listElements.length;
		for(var j=0;j<num_listElements;j++){
			listEntry = listElements[j];
			if(j==0){
				listEntryDefaultSize = listEntry.getSize().y;
			}
			if(listEntry.className.indexOf('rex-normal') >= 0){
				if(navigator.appName.indexOf("Explorer") >= 0 && (navigator.appVersion.indexOf("MSIE 6") > 0 || navigator.appVersion.indexOf("MSIE 7") > 0)){
					listEntry.get('morph').start({'opacity': [0.01,0], 'height': [0,0], 'margin-top': [-22,-22]});
				}else{
					listEntry.get('morph').start({'opacity': [0.01,0], 'height': [0,0]});
				}
			}else{
				listEntry.get('morph').start({'opacity': [1,1]});
			}

			listEntry.addEvent('click',changePage.bind(listEntry));
		}
	}
	$('navigation').addEvent('mouseleave',resetNavigation.bind(subNavigation));
}

function postFahrplanForm(url){
	var queryPageDisplayed = document.getElementsByName('queryPageDisplayed')[0].value;
	var REQ0JourneyStopsSA = document.getElementsByName('REQ0JourneyStopsSA')[0].value;
	var REQ0JourneyStopsSG = document.getElementsByName('REQ0JourneyStopsSG')[0].value;
	var REQ0JourneyStopsSID = document.getElementsByName('REQ0JourneyStopsSID')[0].value;
	var REQ0JourneyStopsZID = document.getElementsByName('REQ0JourneyStopsZID')[0].value;
	var REQ0JourneyDate = document.getElementsByName('REQ0JourneyDate')[0].value;
	var REQ0JourneyTime = document.getElementsByName('REQ0JourneyTime')[0].value;
	var REQ0HafasSearchForw = document.getElementsByName('REQ0HafasSearchForw')[0].value;
	var start = document.getElementsByName('start')[0].value;
	var finalURL = url + '&queryPageDisplayed='+queryPageDisplayed;
	finalURL += '&REQ0JourneyStopsSA='+REQ0JourneyStopsSA;
	finalURL += '&REQ0JourneyStopsSG='+REQ0JourneyStopsSG;
	finalURL += '&REQ0JourneyStopsSID='+REQ0JourneyStopsSID;
	finalURL += '&REQ0JourneyStopsZID='+REQ0JourneyStopsZID;
	finalURL += '&REQ0JourneyDate='+REQ0JourneyDate;
	finalURL += '&REQ0JourneyTime='+REQ0JourneyTime;
	finalURL += '&REQ0HafasSearchForw='+REQ0HafasSearchForw;
	finalURL += '&start='+start;

	window.open(finalURL);
	return false;
}

// Größe des Hoepagerahmens setzen
function setWrapperSize(clientSize, minX, minY)
{
	var newX = 0;
	var newY = 0;
	
	if(clientSize.height <= minY)
	{
		newY = minY;
	}
	else
	{
		newY = clientSize.height;
	}
	if(clientSize.width <= minX)
	{
		newX = minX;
	}
	else
	{
		newX = clientSize.width;
	}
	$('wrapper').get('morph').start( { 'width': [newX, newX] } );
	$('wrapper').get('morph').start( { 'height': [newY, newY] } );
	
}
// Position der Inhalts-Box setzen
function setContentPosition(clientSize, maxX, initPos, bAnimate, bFadeIn)
{
	var newX = 0;
	
	// da bei Resize immer aufgerufen: Höhe Content-Box mit anpassen
	
	if(clientSize.height >= minHeight)
	{
		$('article').setStyle('height', clientSize.height - 440);
	}

	if(clientSize.width < maxX)
	{
		if(navigator.appName.indexOf("Explorer") < 0)
		{
			// bei Firefox und Co. nach Content ausrichten
			newX = clientSize.width - $('content').getSize().x - 35 + 10;
		}
		else
		{
			// bei Internet Explorer nach Artikel ausrichten
			newX = clientSize.width - $('article').getSize().x - 55 + 10;
		}
	}
	else
	{
//		newX = initPos.left + (517 - $('article').getSize().x);
		if(navigator.appName.indexOf("Explorer") < 0)
		{
			// bei Firefox und Co. nach Content ausrichten
			newX = maxX - $('content').getSize().x - 35 + 10;
		}
		else
		{
			// bei Internet Explorer nach Artikel ausrichten
			newX = maxX - $('article').getSize().x - 55 + 10;
		}
	}
	
	var nDelay = 1000;
	var boxContent = $$('.content')[0];
	
	if(bFadeIn){
		$('content').get('morph').start( { 'opacity': [0,0] } );
	}

	var fx = function(){
		if(navigator.appName.indexOf("Explorer") >= 0 && navigator.appVersion.indexOf("MSIE 6") > 0){
			boxContent.get('morph').start({ 'width': $('article').getSize().x  + 29 });	
		}
		if(bFadeIn){
			$('content').get('morph').start( { 'left': newX, 'opacity': [0,1] } );
		}else{
			if( bAnimate == true){
				$('content').get('morph').start( { 'left': newX } );
			}else{
				$('content').get('morph').start( { 'left': [newX, newX] } );
			}
		}
		nDelay = 0;
	}
	fx.delay(nDelay);
	
}


window.addEvent('domready',
	function(){
		// navigation setzen
		setNavigationFunctions();
		
		// startposition der contentbox ermitteln
		initialPosition = $('content').getCoordinates($('wrapper'));
		window.addEvent('resize',
			function(){
				windowSize = getWindowSize();
				setWrapperSize(windowSize,minWidth,minHeight);
				var scrollbarWidth = 16;
				if(navigator.appName.indexOf("Explorer") >= 0){
					scrollbarWidth = 0;
				}
				var newWrapperWidth = (windowSize.width > 1280 ? 1280 : windowSize.width);
				$('systemWrapper').get('morph').start({ 'width': [newWrapperWidth,newWrapperWidth] });
				setContentPosition(windowSize, maxWidth, initialPosition, true, false);
			}
		);
		
		$('article').setStyle('height', $('content').getSize().y);
		
		// content resizer, mover, printer
		var resizeButton = $('resizeButton');
		var articleResize = $('article').makeResizable( { limit: {x: [100, 700], y: [100, 700]} } ).detach();
		resizeButton.addEvents(
			{
				'mousedown': function(){
					articleResize.attach();
				},
				'mouseup': function(){
					articleResize.detach();
				}
			}
		);
		if(navigator.appName.indexOf("Explorer") >= 0 && navigator.appVersion.indexOf("MSIE 6") > 0){
			var boxBottom = $$('.b')[0];
			boxBottom.get('morph').start({ 'width': $('article').getSize().x + 41 });
			$('article').addEvent('resize',
				function(){
					var boxBottom = $$('.b')[0];
					var boxContent = $$('.content')[0];
					boxBottom.get('morph').start({ 'width': $('article').getSize().x  + 41 });
					boxContent.get('morph').start({ 'width': $('article').getSize().x  + 41 });
				}
			);
		}

		var moveButton = $('moveButton');
		var contentDrag = new Drag('content').detach();
		moveButton.addEvents(
			{
				'mousedown': function(){
					contentDrag.attach();
				},
				'mouseup': function(){
					contentDrag.detach();	
				}
			}
		);
		if($$('.articleid_9').length > 0){
			var saveButton = $('printButton');
			saveButton.addEvents(
				{
					'click': function(){
						window.open('js/download.php?filename=arendi.vcf');
					}
				}
			);
		}else{
			var printButton = $('printButton');
			printButton.addEvents(
				{
					'click': function(){
						print();
					}
				}
			);
		}
		// beim Laden der Seite die Maße des Wrappers setzen
		windowSize = getWindowSize();
		setWrapperSize(windowSize, minWidth, minHeight);
		var scrollbarWidth = 16;
		if(navigator.appName.indexOf("Explorer") >= 0){
			scrollbarWidth = 0;
		}
		var newWrapperWidth = (windowSize.width > 1280 ? 1280 : windowSize.width);
		$('systemWrapper').get('morph').start({ 'width': [newWrapperWidth,newWrapperWidth] });
		setContentPosition(windowSize, maxWidth, initialPosition, false, true);
	}
);
