var Blitz;

function Init()
{
	// Kontextmenü für die Fotos in der Fotogallerie sperren
	document.oncontextmenu = function(e)
	{
		if(!e) { // für den IE
			e = window.event;
		};
		if(typeof e.rangeParent == 'object' && typeof e.rangeParent.className == 'string')
		{
			if(e.rangeParent.className == 'Photo')
				return false;
		}
		else if(typeof e.srcElement == 'object' && typeof e.srcElement.parentNode == 'object' && typeof e.srcElement.parentNode.className == 'string')
		{
			if(e.srcElement.parentNode.className == 'Photo')
				return false;
		}
		else if(typeof e.toElement == 'object' && typeof e.toElement.parentNode == 'object' && typeof e.toElement.parentNode.className == 'string')
		{
			if(e.toElement.parentNode.className == 'Photo')
				return false;
		}
	};
	
	var Changer = new PhotoChanger(document.getElementById('header_photos'));
		Changer.AddPhoto('PhotoHeader1');
		Changer.AddPhoto('PhotoHeader2');
		Changer.AddPhoto('PhotoHeader3');
		Changer.AddPhoto('PhotoHeader4');
		Changer.SetTime(4);
		Changer.Init();
	
	if(document.getElementById('PhotosHome'))
	{
		Blitz = new Blitzer(document.getElementById('PhotosHome'));
		Blitz.Init();
	}
	
	if(document.getElementById('BlinkNews') && document.getElementById('BlinkNews').value == 'true')
	{
		var Links = document.getElementById('navigation').getElementsByTagName('a');
		for(var i = 0; i < Links.length; i++)
		{
			if(Links[i].firstChild.data == 'News')
			{
				var BlinkLink = new Blinker(Links[i]);
					BlinkLink.Init();
				break;
			}
		}
	}
}

function Blinker(Container)
{
	var Cont = Container;
	var CurrentOpacity;
	var FadeTime = 50;
	
	this.Init = function()
	{
		Cont.style.opacity = 1;
		Cont.style.filter = "alpha(opacity:100)";
		Cont.Object = this;
		this.FadeOut();
	};
	
	this.FadeOut = function()
	{
		var ThisObject = Cont.Object;
		CurrentOpacity = parseFloat(Cont.style.opacity);
		if(CurrentOpacity <= 0)
		{
			window.setTimeout(ThisObject.FadeIn, FadeTime);
			return;
		}
		Cont.style.opacity = CurrentOpacity - 0.05;
		window.setTimeout(ThisObject.FadeOut, FadeTime);
	};
	
	this.FadeIn = function()
	{
		var ThisObject = Cont.Object;
		CurrentOpacity = parseFloat(Cont.style.opacity);
		if(CurrentOpacity >= 1)
		{
			window.setTimeout(ThisObject.FadeOut, FadeTime);
			return;
		}
		Cont.style.opacity = CurrentOpacity + 0.05;
		window.setTimeout(ThisObject.FadeIn, FadeTime);
	};
}

function CheckRightClick(e)
{
	if(typeof e.isRightClick == 'function' && e.isRightClick() || typeof e.button == 'number' && e.button == 2)
	{
		if(typeof e.findElement == 'function')
		{
			var ClickedElement = e.findElement();
			if(ClickedElement.getAttribute('id') && ClickedElement.getAttribute('id') == 'lightboxImage')
			{
				alert('Dieses Foto ist Urheberrechtlich geschützt und darf nicht ohne Erlaubnis verwendet.');
				return false;
			}
		}
	}
	
	return true;
}

function Blitzer(Container)
{
	var Cont = Container;
	var Photos = new Array();
	var Schleier = document.getElementById('PhotosHomeWhite');
	var Flashlight = document.getElementById('Flashlight');
	var Lighter = true;
	var FadeTime = 25;
	var FadeInStep = 0.25;
	var FadeOutStep = 0.1;
	this.CurrentPhotoIndex = 0;
	this.NextPhotoIndex = 0;
	
	this.Init = function()
	{
		if(Flashlight)
		{
			Photos = Cont.getElementsByTagName('img');
			Cont.Blitzer = this;
			//var ThisBlitzer = this;
			//window.setTimeout(ThisBlitzer.Blitz, 5000);
		}
	};
	
	this.Blitz = function()
	{
		for(var i = 0; i < Photos.length; i++)
		{
			if(Photos[i].style.visibility && Photos[i].style.visibility == 'visible')
			{
				var NextIndex = (i < (Photos.length-1)) ? (i+1) : 0;
				Cont.Blitzer.CurrentPhotoIndex = i;
				Cont.Blitzer.NextPhotoIndex = NextIndex;
				Cont.Blitzer.StartBlitz();
				break;
			}
		}
	};
	
	this.StartBlitz = function()
	{
		Schleier.style.opacity = 0;
		Schleier.style.filter = "alpha(opacity:0)";
		Flashlight.style.opacity = 0;
		Flashlight.style.filter = "alpha(opacity:0)";
		
		var ThisBlitzer = this;
		window.setTimeout(ThisBlitzer.NextBlitzStep, 1);
	};
	
	this.NextBlitzStep = function()
	{
		if(Lighter)
		{
			var NextOpacity = parseFloat(Schleier.style.opacity) + FadeInStep;
		}
		else
		{
			var NextOpacity = parseFloat(Schleier.style.opacity) - FadeOutStep;
		}
		Schleier.style.opacity = NextOpacity;
		Schleier.style.filter = "alpha(opacity:"+(NextOpacity*100)+")";
		Flashlight.style.opacity = NextOpacity;
		Flashlight.style.filter = "alpha(opacity:"+(NextOpacity*100)+")";
		
		if(NextOpacity < 0.0)
		{
			Lighter = true;
			var ThisBlitzer = this;
			//window.setTimeout(Cont.Blitzer.Blitz, 5000);
		}
		else if(NextOpacity < 1.0)
		{
			window.setTimeout(Cont.Blitzer.NextBlitzStep, FadeTime);
		}
		else
		{
			Photos[Cont.Blitzer.CurrentPhotoIndex].style.visibility = 'hidden';
			Photos[Cont.Blitzer.NextPhotoIndex].style.visibility = 'visible';
			Lighter = false;
			window.setTimeout(Cont.Blitzer.NextBlitzStep, FadeTime);
		}
	};
}

/**
 * @param {string} Id des Containers, dem das Objekt zugeordnet werden soll
 * @return {object}
 */
function PhotoChanger(Container)
{
	var Cont = Container;
	var Photos = new Array();
	var Time = 5;
	var StepWidth = 0.01;
	var TimeSlice = 25;
	this.Stopped = false;
	this.CurrentPhotoIndex = 0;
	this.NextPhotoIndex = 0;
	this.Triggered = false;
	
	this.AddPhoto = function(Id)
	{
		if(document.getElementById(Id))
			Photos.push(document.getElementById(Id));
	};
	
	/*
	function GetPhotoObject(Url)
	{
		var Photo = new Image();
			Photo.src = Url;
			Photo.setAttribute('id', 'PhotoHeader'+(Photos.length+1));
			Photo.setAttribute('alt', '');
		
		return Photo;
	}
	*/
	
	this.GetTimeSlice = function()
	{
		return TimeSlice;
	};
	
	this.GetStepWidth = function()
	{
		return StepWidth;
	};
	
	this.SetTime = function(Seconds)
	{
		Time = Seconds;
	};
	
	this.Init = function()
	{
		if(Photos.length > 0)
		{
			//Cont.appendChild(Photos[0]);
			Cont.Changer = this;
			
			if(Photos.length > 1)
			{
				var ThisChanger = this;
				window.setTimeout(ThisChanger.NextPhoto, Time*1000);
				addEvent(window, "unload", ThisChanger.Delete);
			}
		}
	};
	
	this.NextPhoto = function()
	{
		for(var i = 0; i < Photos.length; i++)
		{
			if(Photos[i].style.display && Photos[i].style.display == 'block')
			{
				var NextIndex = (i < (Photos.length-1)) ? (i+1) : 0;
				Photos[NextIndex].style.display = 'none';
				Cont.Changer.CurrentPhotoIndex = i;
				Cont.Changer.NextPhotoIndex = NextIndex;
				Cont.Changer.StartSlide();
				break;
			}
		}
		
		/*
		var Imgs = Cont.getElementsByTagName('img');
		for(var i = 0; i < Imgs; i++)
		{
			if(Imgs[i].getAttribute('id'))
			{
				var Ergebnis = Imgs[i].getAttribute('id').match(/^.+([0-9]+)$/);
				if(Ergebnis)
				{
					var Index = parseInt(Ergebnis[1]);
					if(Photos.length >= Index)
					{
						var NextIndex = (Index < Photos.length) ? Index : 0;
						Photos[NextIndex].style.display = 'none';
						Cont.appendChild(Photos[NextIndex]);
						Cont.Changer.CurrentPhotoIndex = Index-1;
						Cont.Changer.NextPhotoIndex = NextIndex;
						Cont.Changer.StartSlide();
						break;
					}
				}
			}
		}
		*/
	};
	
	this.StartSlide = function()
	{
		Photos[this.CurrentPhotoIndex].style.opacity = 1;
		Photos[this.CurrentPhotoIndex].style.filter = "alpha(opacity:100)";
		Photos[this.NextPhotoIndex].style.opacity = 0;
		Photos[this.NextPhotoIndex].style.filter = "alpha(opacity:0)";
		Photos[this.NextPhotoIndex].style.display = 'block';
		
		var ThisChanger = this;
		window.setTimeout(ThisChanger.Slide, 1);
	};
	
	this.Slide = function()
	{
		var CurrentOpacity = parseFloat(Photos[Cont.Changer.CurrentPhotoIndex].style.opacity);
		var NextOpacity = parseFloat(Photos[Cont.Changer.NextPhotoIndex].style.opacity);
		Photos[Cont.Changer.CurrentPhotoIndex].style.opacity = CurrentOpacity - Cont.Changer.GetStepWidth();
		Photos[Cont.Changer.CurrentPhotoIndex].style.filter = "alpha(opacity:"+((CurrentOpacity-Cont.Changer.GetStepWidth())*100)+")";
		Photos[Cont.Changer.NextPhotoIndex].style.opacity = NextOpacity + Cont.Changer.GetStepWidth();
		Photos[Cont.Changer.NextPhotoIndex].style.filter = "alpha(opacity:"+((NextOpacity+Cont.Changer.GetStepWidth())*100)+")";
		
		if(CurrentOpacity > 0.0)
		{
			if(NextOpacity >= 0.5 && !Cont.Triggered && typeof Blitz == 'object')
			{
				Blitz.Blitz();
				Cont.Triggered = true;
			}
			window.setTimeout(Cont.Changer.Slide, Cont.Changer.GetTimeSlice());
		}
		else
		{
			//Cont.removeChild(Photos[Cont.Changer.CurrentPhotoIndex]);
			Photos[Cont.Changer.CurrentPhotoIndex].style.display = 'none';
			window.setTimeout(Cont.Changer.NextPhoto, Time*1000);
			Cont.Triggered = false;
		}
	};
	
	this.Delete = function()
	{
		/*
		delete Cont.Changer;
		var Counter = 0;
		console.log(Cont);
		while(Cont.hasChildNodes()) {
			if(Counter > 10)
				break;
			console.log(Cont.lastChild);
			//Cont.parentNode.removeChild(Cont.lastChild);
			Counter++;
		}
		*/
	};
}

function ShowSubNavItems(ItemIndex, MarkParentNavElement)
{
	var NavUls = document.getElementById('navigation').getElementsByTagName('ul');
	var SubNavCounter = 0;
	var NavCounter = 0;
	for(var i in NavUls)
	{
		if(typeof NavUls[i] == 'object' && typeof NavUls[i].className == 'string')
		{
			if(NavUls[i].className == 'SubNavItems')
			{
				if(SubNavCounter == ItemIndex)
				{
					NavUls[i].style.display = 'block';
				}
				SubNavCounter++;
			}
			else if(NavUls[i].className == 'NavItems')
			{
				if(MarkParentNavElement)
				{
					NavIls = NavUls[i].getElementsByTagName('li');
					for(var j in NavIls)
					{
						if(typeof NavIls[j] == 'object' && typeof NavIls[j].className == 'string' && NavIls[j].className.search(/extended/) != -1)
						{
							if(NavCounter == ItemIndex)
							{
								NavIls[j].className = 'extended_selected';
							}
							NavCounter++;
						}
					}
				}
				else
				{
					NavUls[i].style.display = 'block';
				}
			}
		}
	}
}

function HideSubNavItems(ItemIndex, MarkParentNavElement)
{
	var NavUls = document.getElementById('navigation').getElementsByTagName('ul');
	var SubNavCounter = 0;
	var NavCounter = 0;
	for(var i in NavUls)
	{
		if(typeof NavUls[i] == 'object' && typeof NavUls[i].className == 'string' && NavUls[i].className == 'SubNavItems')
		{
			if(SubNavCounter == ItemIndex)
			{
				NavUls[i].style.display = 'none';
			}
			SubNavCounter++;
		}
		else if(MarkParentNavElement && NavUls[i].className == 'NavItems')
		{
			NavIls = NavUls[i].getElementsByTagName('li');
			for(var j in NavIls)
			{
				if(typeof NavIls[j] == 'object' && typeof NavIls[j].className == 'string' && NavIls[j].className.search(/extended/) != -1)
				{
					if(NavCounter == ItemIndex)
					{
						NavIls[j].className = 'extended';
					}
					NavCounter++;
				}						
			}
		}
	}
}

function ShowNavItems(obj)
{
	var Uls = obj.getElementsByTagName('ul');
	for(var i in Uls)
	{
		if(typeof Uls[i] == 'object' && typeof Uls[i].className == 'string' && Uls[i].className == 'NavItems')
		{
			Uls[i].style.display = 'block';
			console.log('ShowNavItems');
		}
	}
}

function HideNavItems(obj)
{
	var Uls = obj.getElementsByTagName('ul');
	for(var i in Uls)
	{
		if(typeof Uls[i] == 'object' && typeof Uls[i].className == 'string' && Uls[i].className == 'NavItems')
		{
			Uls[i].style.display = 'none';
		}
	}
}

addEvent(window, "load", Init);
//addEvent(window, "click", CheckRightClick);
