var mapIsOpened = false;

function isSafari()
{
	return navigator.userAgent.indexOf('Safari') != -1;
}

function isMemberOfCssClass(classes, thisClass)
{
	if(!classes)
	{
		return false;
	}
	var classArray = classes.split(" ");
	for(var i=0; i<classArray.length; ++i)
	{
		if(classArray[i] == thisClass)
		{
			return true;
		}
	}
	return false;
}


function addToCssClass(element, thisClass)
{
	element.className += ' ' + thisClass;
}

function removeFromCssClass(element, thisClass)
{
	var oldElementClass = element.className;
	var newClass = oldElementClass.replace(thisClass, "");
	element.className = newClass;
}




function showImage(element, targetID)
{
	imageSource = element.getElementsByTagName('img')[0].src;

	$(targetID).src = imageSource;

	return false;
}


function showThumbnailPage(element, targetID)
{

	var pageNumber = 0;

	var linkContainer = element.parentNode;
	var pageLinks = linkContainer.getElementsByTagName('a');
	for(var j=0; j < pageLinks.length; ++j)
	{
		if(isMemberOfCssClass(pageLinks[j].className, "selected") )
		{
			removeFromCssClass(pageLinks[j], "selected");
		}

		if(pageLinks[j] === element)
		{
			pageNumber = j;
			addToCssClass(pageLinks[j], "selected");
		}
	}


	var thumbnailPages = $(targetID).getElementsByTagName('div');
	for(var i=0; i< thumbnailPages.length; ++i)
	{
		if(!isMemberOfCssClass(thumbnailPages[i].className, 'invisible'))
		{
			addToCssClass(thumbnailPages[i], 'invisible');
		}

		if(i == pageNumber)
		{
			removeFromCssClass(thumbnailPages[i], 'invisible');
		}
	}
	return false;
}

function historyLight(element)
{
	addToCssClass(element, "highlighted");
	removeFromCssClass(element.getElementsByTagName('a')[0].getElementsByTagName('span')[0], 'invisible');
}

function historyDouse(element)
{
	removeFromCssClass(element, "highlighted");
	addToCssClass(element.getElementsByTagName('a')[0].getElementsByTagName('span')[0], 'invisible');
}

function impressionsForwardWrapper(listIdOne, listIdTwo, numberId)
{
	impressionsForward(listIdOne, numberId);
	impressionsForward(listIdTwo, numberId);
	return false;
}

function impressionsForward(listId, numberId)
{

	var allListElements = $(listId).getElementsByTagName('div');
	if(allListElements.length == 0)
	{
		var allListElements = $(listId).getElementsByTagName('span');
	}

	var pictureElements = new Array();

	for(var j=0; j < allListElements.length; ++j )
	{
		if(isMemberOfCssClass(allListElements[j].className, 'visual' ))
		{
			pictureElements.push(allListElements[j]);
		}
	}


	var length = pictureElements.length;

	for(var i=0; i < length; ++i)
	{
		if(!isMemberOfCssClass(pictureElements[i].className, 'invisible'))
		{
			addToCssClass(pictureElements[i], 'invisible');
			var nextElementNum = 0;
			if((i + 1) < length)
			{
				nextElementNum = i+1;

			}
			else
			{
				nextElementNum = 0;
			}
			removeFromCssClass(pictureElements[nextElementNum], 'invisible');
			$(numberId).innerHTML = nextElementNum + 1;

			return false;
		}
	}

	return false;
}


function impressionsBackWrapper(listIdOne, listIdTwo, numberId)
{
	impressionsBack(listIdOne, numberId);
	impressionsBack(listIdTwo, numberId);
	return false;
}


function impressionsBack(listId, numberId)
{
	var allListElements = $(listId).getElementsByTagName('div');
	if(allListElements.length == 0)
	{
		var allListElements = $(listId).getElementsByTagName('span');
	}

	var pictureElements = new Array();

	for(var j=0; j < allListElements.length; ++j )
	{
		if(isMemberOfCssClass(allListElements[j].className, 'visual' ))
		{
			pictureElements.push(allListElements[j]);
		}
	}


	var length = pictureElements.length;

	for(var i=0; i < length; ++i)
	{
		if(!isMemberOfCssClass(pictureElements[i].className, 'invisible'))
		{
			addToCssClass(pictureElements[i], 'invisible');
			var nextElementNum = 0;
			if((i - 1) >= 0)
			{
				nextElementNum = i-1;

			}
			else
			{
				nextElementNum = length - 1;
			}
			removeFromCssClass(pictureElements[nextElementNum], 'invisible');
			$(numberId).innerHTML = nextElementNum + 1;


			return false;
		}
	}

	return false;
}




function setFontSize(textSize)
{

	removeFromCssClass(document.getElementsByTagName('body')[0], 'largeText');
	removeFromCssClass(document.getElementsByTagName('body')[0], 'veryLargeText');

	switch(textSize)
	{
		case 1:


		break;
		case 2:

		addToCssClass(document.getElementsByTagName('body')[0], 'largeText');
		break;
		case 3:
		addToCssClass(document.getElementsByTagName('body')[0], 'veryLargeText');
		break;
	}
	return false;
}




function hideSearchControls(element, rootNodeId, hideClass, showClass, button1Src, button2Src)
{
	element.src = button1Src;

	var containedElements = $(rootNodeId).getElementsByTagName('*');

	if(containedElements.length == 0)
	{
		containedElements = $(rootNodeId).all;
	}

	for(var i=0; i< containedElements.length; ++i)
	{
		var thisElement = containedElements[i];
		if( isMemberOfCssClass(thisElement.className, hideClass) )
		{

			new Effect.BlindUp(thisElement);
		}

		if( isMemberOfCssClass(thisElement.className, showClass) )
		{
			Element.setOpacity(thisElement, 0);
			removeFromCssClass(thisElement, 'invisible');

			new Effect.Opacity(thisElement, { from: 0.0, to: 1.0, duration: 0.7 });
		}

	}


	element.onclick = function() { return showSearchControls(element, rootNodeId, hideClass, showClass, button1Src, button2Src); }
	return false;
}



function showSearchControls(element, rootNodeId, hideClass, showClass, button1Src, button2Src)
{

	element.onclick = function() { return hideSearchControls(element, rootNodeId, hideClass, showClass, button1Src, button2Src); }

	element.src = button2Src;

	var containedElements = $(rootNodeId).getElementsByTagName('*');
	if(containedElements.length == 0)
	{
		containedElements = $(rootNodeId).all;
	}

	for(var i=0; i< containedElements.length; ++i)
	{
		var thisElement = containedElements[i];
		if( isMemberOfCssClass(thisElement.className, hideClass) )
		{

			new Effect.BlindDown(thisElement);
		}

		if( isMemberOfCssClass(thisElement.className, showClass) )
		{
			new Effect.Opacity(thisElement, { from: 1.0, to: 0.0, duration: 0.7});
		}
	}

	return false;
}


function enlargeMapHomepage(element)
{

	element.onclick = null;
	$('close-icon').parentNode.onclick = function() { return shrinkMapHomepage(); };

	addToCssClass($('flash-stage'), 'hidden');


	addToCssClass($('map'), 'invisible');


	targetElement = $('map-replacement');
	removeFromCssClass(targetElement, 'invisible');


	new Effect.Opacity('geofinder-large', { from: 0.1, to: 0.0, queue: {position: 'front', scope: 'mapresize'},
	afterFinish: function(obj) { removeFromCssClass($('geofinder-large'), 'invisible'); }
	} );


	new Effect.Parallel([
	new Effect.Move(targetElement, { x: -709, y: 0, mode: 'relative' } ),
	new Effect.Scale(targetElement, 370, {scaleContent: false, scaleY: false
	})
	]
	)

	new Effect.Opacity('geofinder-large', { duration: 0.2, from: 0.0, to: 1.0, queue: {position: 'end', scope: 'mapresize'},

	afterFinish: function(obj) {
		addToCssClass(targetElement, 'invisible');
		if(isSafari()) {
			$('pageitems').style.display = 'none';
			$('pageitems').style.display = 'block';
		}
	},

	//Safari hack
	beforeStart: function (obj) {
		if(isSafari()) {
			$('pageitems').style.display = 'inline';
		}
	}


	} );

	return false;
}

function enlargeMapCommon (element, id)
{
	element.onclick = null;
	$('close-icon').parentNode.onclick = function() { return shrinkMap(); };

	addToCssClass($('alta4minimap'), 'invisible');


	targetElement = $('map-replacement');
	removeFromCssClass(targetElement, 'invisible');


	new Effect.Opacity('geofinder-large', { from: 0.1, to: 0.0, queue: {position: 'front', scope: 'mapresize'},
	afterFinish: function(obj) { removeFromCssClass($('geofinder-large'), 'invisible'); }
	} );

	if(document.getElementById('flexarea') != undefined )
	{
		var moveEffect = new Effect.Move($('colwrapper1'), { x: 0, y: 215, mode: 'relative' } );
		var scaleEffect = new Effect.Scale($('content'), 137, {scaleContent: false, scaleX: false,
		//Safari hack
		beforeStart: function () {
			if(isSafari()) {
				$('pageitems').style.display = 'inline';
			}
		},

		afterFinish: function () {
			if(isSafari()) {
				$('pageitems').style.display = 'none';
				$('pageitems').style.display = 'block';
			}
		}
		});
	}
	else
	{
		var moveEffect = new Effect.Move($('colwrapper1'), { x: 0, y: 150, mode: 'relative' } );
		var scaleEffect = new Effect.Scale($('content'), 110, {scaleContent: false, scaleX: false,

		//Safari hack
		beforeStart: function () {
			if(isSafari()) {
				$('pageitems').style.display = 'inline';
			}
		},

		afterFinish: function () {
			if(isSafari()) {
				$('pageitems').style.display = 'none';
				$('pageitems').style.display = 'block';
			}
		}
		});
	}
	new Effect.Parallel([
	new Effect.Move(targetElement, { x: -709, y: 0, mode: 'relative' } ),
	new Effect.Scale(targetElement, 370, {scaleContent: false, scaleY: false}),
	moveEffect,
	scaleEffect

	]
	)

	new Effect.Opacity('geofinder-large', { duration: 0.2, from: 0.0, to: 1.0, queue: {position: 'end', scope: 'mapresize'},
	afterFinish: function(obj) {
		addToCssClass(targetElement, 'invisible');
	}

	} );

	mapIsOpened = true;

}

function enlargeMap(element, id)
{
	enlargeMapCommon(element, id);
	return false;
}


function enlargeMapWithPoi(element, id)
{
	if (mapIsOpened == false) {
		enlargeMapCommon(element, id);
	}

	return false;
}

function shrinkMapHomepage()
{
	$('close-icon').parentNode.onclick = null;
	var linkElements = $('geofinder-magnifier-link').getElementsByTagName('a');

	for(var i=0; i < linkElements.length; ++i)
	{
		linkElements[i].onclick = function() { return enlargeMapHomepage(this); };
	}

	removeFromCssClass($('map'), 'invisible');

	new Effect.Move($('map-replacement'), { duration: 0.2, x: 709, y: 0, mode: 'relative' } );
	new Effect.Scale($('map-replacement'), 100, {scaleContent: false,  scaleMode: { originalHeight: 244, originalWidth: 266 }
	});


	new Effect.Opacity('geofinder-large', { duration: 0.3, from: 1.0, to: 0.0,
	afterFinish: function(obj) {
		removeFromCssClass($('navigation-dropdown-form'), 'hidden');
		addToCssClass($('geofinder-large'), 'invisible');
		removeFromCssClass($('flash-stage'), 'hidden');
	}
	} );

	mapIsOpened = false;

	return false;
}


function shrinkMap()
{
	$('close-icon').parentNode.onclick = null;
	var linkElements = $('geofinder-magnifier-link').getElementsByTagName('a');
	for(var i=0; i < linkElements.length; ++i)
	{
		linkElements[i].onclick = function() {
			return enlargeMap(this);
		};
	}

	removeFromCssClass($('alta4minimap'), 'invisible');

	new Effect.Move($('map-replacement'), { duration: 0.2, x: 709, y: 0, mode: 'relative' } );
	new Effect.Scale($('map-replacement'), 100, {scaleContent: false,  scaleMode: { originalHeight: 244, originalWidth: 266 }
	});

	if($('flexarea') != undefined)
	{
		new Effect.Move($('colwrapper1'), { x: 0, y: -214, mode: 'relative', duration: 0.5 } )
		new Effect.Scale($('content'), 73.9927, {scaleContent: false, scaleX: false, duration: 0.5,

		//Safari hack
		beforeStart: function(obj) {
			if(isSafari()) {
				$('pageitems').style.display = 'none';
			}
		} ,
		afterFinish: function (obj) {
			if(isSafari()) {
				$('pageitems').style.display = 'block';
			}
		}

		});
	}
	else
	{
		new Effect.Move($('colwrapper1'), { x: 0, y: -150, mode: 'relative', duration: 0.5 } )
		new Effect.Scale($('content'), 90.909090, {scaleContent: false, scaleX: false, duration: 0.5,

		//Safari hack
		beforeStart: function(obj) {
			if(isSafari()) {
				$('pageitems').style.display = 'none';
			}
		} ,
		afterFinish: function (obj) {
			if(isSafari()) {
				$('pageitems').style.display = 'block';
			}
		}

		});
	}

	new Effect.Opacity('geofinder-large', { duration: 0.3, from: 1.0, to: 0.0,
	afterFinish: function(obj) {
		addToCssClass($('geofinder-large'), 'invisible');

	}
	} );

	mapIsOpened = false;

	return false;
}


function startSlideShow(steps)
{
	var stepCounter = 0;
	for(var i=0; i<steps.length - 1; ++i)
	{
		new Effect.Opacity(steps[i], { duration: 0.9, from: 1.0, to: 0.0, delay: 1.3, queue: {position: 'end', scope: 'slideshow'},
		afterFinish: function() {
			addToCssClass($(steps[stepCounter]), 'invisible');
			Element.setOpacity(steps[stepCounter+1], 0);
			removeFromCssClass($(steps[stepCounter+1]), 'invisible');
			++stepCounter;
		} } );

		new Effect.Opacity(steps[i+1], { duration: 0.9, from: 0.0, to: 1.0, queue: {position: 'end', scope: 'slideshow'} } );
	}
}



function toggleCheckboxes(element)
{
	var sublist = element.parentNode.getElementsByTagName('ul')[0].getElementsByTagName('li');
	for(var i=0; i < sublist.length; ++i)
	{
		sublist[i].getElementsByTagName('label')[0].getElementsByTagName('input')[0].checked = element.checked;
	}

}


function toggleServiceSubEntries(element, inTransition)
{
	if(inTransition)
	{
		return;
	}
	var sublist = element.parentNode.getElementsByTagName('ul')[0];
	var transitionDuration = .5;
	if(isMemberOfCssClass(sublist.className, 'invisible'))
	{
		element.onclick = function() { toggleServiceSubEntries(element, true); };
		removeFromCssClass(sublist, 'invisible');
		new Effect.BlindDown(sublist,
		{duration: transitionDuration,
		afterFinish: function(obj) { element.onclick = function() { toggleServiceSubEntries(element, false); }; } });
	}
	else
	{
		element.onclick = function() { toggleServiceSubEntries(element, true); };
		new Effect.BlindUp(sublist,
		{duration: transitionDuration,
		afterFinish: function(obj) { addToCssClass(sublist, 'invisible'); element.onclick = function() { toggleServiceSubEntries(element, false); }; }
		});
	}
}



function closeWindow()
{
	window.close();
}

function showRememberedPages()
{
	window.open('merkliste.html', 'merkliste', 'toolbar=no,status=no,scrollbars=no,resizable=yes,location=no,menubar=no,scrollbars=yes,directories=no,width=795,height=560');
	return false;
}


function recommendPage()
{
	//alert('Seite weiterempfehlen');
	return false;
}

function printPage()
{
	//alert('Seite drucken');
	window.print();
	return false;
}


function showWebcamPopup()
{
	window.open('webcam_popup.html', 'merkliste', 'toolbar=no,status=no,scrollbars=no,resizable=yes,location=no,menubar=no,scrollbars=yes,directories=no,width=795,height=560');
	return false;
}


function rememberPage()
{
	//alert('Seite merken');
	return false;
}




function printMap()
{
	enableStyleSheet("printmap");
	//Alte Content-Hoehe merken und danach zurueckschreiben
	var oldHeight = document.getElementById('content').style.height;
	document.getElementById('content').style.height = "800px";
	print();
	document.getElementById('content').style.height = oldHeight;
	disableStyleSheet("printmap");
}

function enableStyleSheet(title)
{
	var i, a, main;
	for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
		if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
			a.disabled = true;
			if(a.getAttribute("title") == title) a.disabled = false;
		}
	}
}
function disableStyleSheet(title)
{
	var i, a, main;
	for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
		if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
			a.disabled = true;
			if(a.getAttribute("title") == title) a.disabled = true;
		}
	}
}

function clickEvent (type, id) {
	if (type == '') {
		return enlargeMapWithPoi(this, id);
	} else {
		return enlargeMapWithPoi(this, type + '_' + id);
	}
}
