function kontextHoehe(reSize)
{
	var unfix = 0;

	/* Falls Kontext größer als Bildschirmhöehe, werden alle fixierten Elemente freigegeben */
	if($('kontext'))
	{
		var kontextSize = $('kontext').getSize();
		var kontextPos = $('kontext').getPosition();
		if((kontextSize.y + kontextPos.y) > hoehe())
		{
			$$('.fixed').addClass('loose');
			$$('.fixed').removeClass('fixed');
			$('text').setStyle('padding-top', 17);
			unfix = 1;
		}
		else if(reSize)
		{
			$$('.loose').addClass('fixed');
			$$('.loose').removeClass('loose');
			$('text').setStyle('padding-top', 142);
			unfix = 0;
		}
	}
	
	classFix = unfix ? "loose" : "fixed";
	
	/* Slide einschalten und Bilder nachladen */
	if(reSize != 1)
	{
		$$('div.bilder').setStyle('display', 'block');
		bilderInSlide(1, unfix);
	}
}

window.addEvent('domready', function()
{
	/* Globale Variablen setzen */
	nowFrame = loadFrame = 0;
	maxFrame = 1;

	/* SoftScroll einbauen */
	pageScroll = new Fx.Scroll($(document.body), {
		wait: false,
		duration: 300,
		transition: Fx.Transitions.Quad.easeInOut
	});
	
	/* Accordion einbauen */
	accordionParse();
	
	/* Bilder für Pop-Box präparieren */
	popNav = new Array();
	var i = 0;
	$$('a.popMedia').each(function(el)
	{
		/* Bilder werden gespeichert und vorgeladen */ 
		el.store('nr', i);
		if(el.rev == "img")
		{
			popNav[i] = new Array();
			popNav[i].href = el.href;
			popNav[i].title = el.title;
			popNav[i].rel = el.rel;
			popNav[i].rev = el.rev;
			i++;
			Asset.images(el.href);
		}
			
		el.store('link', el.href.replace("/watch?v=", "/v/"));
		el.removeProperty('href');
		el.addEvent('click', function()
		{
			pB = new popBox(el.retrieve('link'), el.title, el.rel, el.rev, el.retrieve('nr'));
		});
	});

	/* Menüfelder für Pop-Feld präparieren */ 
	$$('a.popFeld').each(function(el)
	{
		el.removeProperty('href');
		el.addEvent('click', function()
		{
			pF = new popFeld(el.id);
		});
	});
	
	/* Falls Projektseite ggf. einen Back-Button einbauen */
	if($('projektTitel') && history.length > 1)
	{
		var a = new Element('a', { html: '‹', title: 'zurück' });
		a.addEvent('click', function() { history.back(); });
		a.inject($('projektTitel'), "top");
	}

	/* Falls SpracheWeiche vorhanden Funktionalität einbauen */
	if($('sprachWeiche'))
	{
		$('sprachWeiche').addEvent('click', function() {
			if(this.innerHTML.substr(8, 7) == "English")
			{
				this.innerHTML = this.innerHTML.substr(0, 8) + "Deutsch";
				$('text').getElement('div.de').setStyle('display', 'none');
				$('text').getElement('div.en').setStyle('display', 'block');
			}
			else
			{
				this.innerHTML = this.innerHTML.substr(0, 8) + "English";
				$('text').getElement('div.de').setStyle('display', 'block');
				$('text').getElement('div.en').setStyle('display', 'none');
			}
		});
	}
	
	/* Kalender-Markierungen */
	if(funktion == "kalender" || funktion == "projektarchiv")
	{
		remAnzeige = $('text').get('html');
		if(funktion == "kalender")
		{
			remKalender = $('kalender').get('html');
			kalenderParse();
		}
		
		/* Suchfelder */
		$$('input.prSuche').addEvents(
		{
			click: function()
			{
				if(this.value == "Titel")
				{
					this.value = "";
					$('kontext').getElement('a.resetSuche').setStyle('visibility', 'visible');
				}
			},
			keyup: function()
			{
				if(this.value.length > 2)
					delay();
				else if(this.value.length == 0)
				{
					if($('kontext').getElement('select.prSuche').value > 0)
						titelSuche();
					else	
						kalenderReset(1);
				}
			}
		});
		
		$$('select.prSuche').addEvent('change', function(){
			if($('kontext').getElement('input.prSuche').value == "Titel")
			{
				$('kontext').getElement('input.prSuche').value = "";
				$('kontext').getElement('a.resetSuche').setStyle('visibility', 'visible');
			}
			titelSuche();
		});

		$$('a.resetSuche').addEvent('click', function(){
			kalenderReset();
		});
	}
	
	projektParse();
	
	if(ise == 1)
		startIse();
});

/* Accordion Parsen */
function accordionParse()
{
	var displayFirst = (funktion == "kalender" || funktion == "projektarchiv") ? 0 : -1;
	var myAccordion = new Accordion($('inhalt'), 'a.toggler', 'div.element', {
		opacity: false,
		initialDisplayFx: false,
		alwaysHide: true,
		display: displayFirst,
		onActive: function(toggler, element){
			toggler.setStyle('border-bottom-width', 0);
			toggler.setStyle('color', 'red');
			toggler.getPrevious('b').innerHTML = "‹";
			toggler.getPrevious('b').setStyle('color', 'black');
		},
		onBackground: function(toggler, element){
			toggler.setStyle('border-bottom-width', 1);
			toggler.setStyle('color', 'rgb(25,25,25)');
			toggler.getPrevious('b').innerHTML = "›";
			toggler.getPrevious('b').setStyle('color', 'red');
		}
	});
}

/* fügt Projektvorschauen hinzu */
function projektParse()
{
	/* Projekte für Pop-Feld präparieren */ 
	var rA = /^.*\/([0-9]*)$/;
	var temp = "";
	$$('a.popProjekt').each(function(el)
	{
		temp = rA.exec(el.href);
		el.store('link', el.href);
		el.store('id', temp[1]);
		el.removeProperty('href');
		el.addEvent('click', function()
		{
			pB = new popBox(el.retrieve('link'), el.retrieve('id'), '', 'projekt');
		});
	});
}

/* fügt dem Kalender Sprungfunktionalität hinzu */
function kalenderParse()
{
	$('kalender').getElements('td a').each(function(el)
		{
			el.addEvent('click', function()
			{
				var temp = el.href.substr(el.href.length - 11, 11);
				var tag = $(temp).getParent('tr');
				var myFx = new Fx.Scroll(window).toElementCenter(tag);
				$$('tr').setStyle('background-color', 'white');
				$$('td.tag').setStyle('color', 'rgb(25, 25, 25)');
				$$('tr.' + el.href.substr(-11)).setStyle('background-color', '#f0f0f0');
				tag.getFirst('td.tag').setStyle('color', 'red');
			});
		});
}

/* Setzt Kalender-/Projektanzeige in Ausgangszustand zurück */
function kalenderReset(noTitel)
{
	if(noTitel != 1)
		$('kontext').getElement('a.resetSuche').setStyle('visibility', 'hidden');
	$('kontext').getElement('input.prSuche').value = noTitel ? "" : "Titel";
	$('kontext').getElement('select.prSuche').value = 0;
	$('text').set('html', remAnzeige);
	if(funktion == "kalender")
	{
		$('kalender').set('html', remKalender);
		kalenderParse();
	}
	else
		accordionParse();
	projektParse();
}

function init()
{
	var h = hoehe();
	var w = (window.innerWidth) ? window.innerWidth : document.documentElement.clientWidth;
	$$('div.slide').setStyle('width', w - 17);
	$$('div.slide').setStyle('height', h);
	kontextHoehe(1);
}

function bildNav(i)
{
	$('navPrev').dispose();
	$('navNext').dispose();
	pB = new popBox(popNav[i].href, popNav[i].title, popNav[i].rel, popNav[i].rev, i);
}

function popBox(link, titel, masse, f, nr)
{
	this.bauen = function()
	{
		var media;
		
		/* Medienobjekt nach Typ erstellen */
		if(f == "img")
		{
			media = new Element('img', { id: 'popMedia', src: link, width: iBreite, height: iHoehe });
			this.konstruieren(media);
		}
		else if(f == "video")
		{
			var param;
			media = new Element('div', { style: 'width: 505px; height: 300px;' });
			media.innerHTML = '<object id=\"popMedia\" type="application/x-shockwave-flash" width="505" height="300" data="' + link + '">\n' +
					'<param name="movie" value="' + link + '" />\n' +
					'<param name="allowFullScreen" value="true" />\n' +
					'<param name="bgcolor" value="#000000" />\n' +
					'</object>\n';
			this.konstruieren(media);
		}
		else if(f == "projekt")
		{
			media = new Element('div', { id: 'popMedia', 'class': 'text', style: 'max-height: ' + (hoehe() - 80) + 'px' });
			var jsonRequest = new Request.JSON({url: base + '/load.php?f=projekt&id=' + pID, onSuccess: function(r)
			{
				media.set('html', r["html"]);
				pB.konstruieren(media);
			}}).get();
		}
		else if(f == "suche")
		{
			media = new Element('div', { id: 'popMedia', 'class': 'text' });
			this.konstruieren(media);
		}
	};
	
	this.konstruieren = function(media)
	{
		var div = new Element('div', { id: 'popBox', 'class': classFix });
		var innerDiv = new Element('div', { id: 'popBoxDiv' });
		var p = new Element('p', { html: titel, style: 'padding-top: ' + pPadding });
		var a = new Element('a', {
			html: 'X', 'class': 'close', title: 'Schließen', events: {
				click: function() {
					pB.schliessen(0); }}});

		div.inject($('inhalt'), 'after');
		innerDiv.inject(div);
		media.inject(innerDiv);
		p.inject(innerDiv);
		a.inject(innerDiv);

		if(f != "suche")
			this.zeigen();
	};
	
	this.zeigen = function()
	{
		var tempFX = new Fx.Slide($('popBoxDiv'), {
			transition: Fx.Transitions.Quad.easeInOut,
			duration: 450,
			fps: 60}).hide();
		this.aufmachen(tempFX);
		delete(tempFX);
	};
	
	this.aufmachen = function(tempFX)
	{
		tempFX.slideIn().chain(function(){
			$('popBoxDiv').getFirst('a.close').setStyle('visibility', 'visible');
			if(f == "img" && popNav.length > 1)
			{
				var nrPrev = (nr == 0) ? (popNav.length - 1) : (nr - 1); 
				var nrNext = (nr == (popNav.length - 1)) ? 0 : (nr + 1);
				var navPrev = new Element('a', { id: 'navPrev', title: 'Vorheriges Bild', style: 'height: ' + iHoehe + 'px',
					html: '&nbsp;',
					events: { click: function() { bildNav(nrPrev); }
				}});
				var navNext = new Element('a', { id: 'navNext', title: 'Nächstes Bild', style: 'height: ' + iHoehe + 'px',
					html: '&nbsp;',
					events: { click: function() { bildNav(nrNext); }
				}});
				navPrev.inject($('popBox'));
				navNext.inject($('popBox'));
			}
			delete(tempFX);
		});
	};
	
	this.schliessen = function(neu)
	{
		$('popBoxDiv').getFirst('a.close').setStyle('visibility', 'hidden');

		/* falls das gleiche Element erneut angeklickt wurde, wird es nicht wieder geöffnet */
		if(f == "img" && $('popMedia').src == link || f == "video" && $('popMedia').data == link)
			neu = 0;
		var tempFX = new Fx.Slide($('popBoxDiv'), {
			transition: Fx.Transitions.Quad.easeInOut,
			duration: 450,
			fps: 60}).slideOut().chain(function(){
				delete(tempFX);
				$('popBox').dispose();
				if(neu == 1) 
					pB.bauen();
		});
	};

	if(f == "projekt")
	{
		var pID = titel;
		titel = '<a href="' + base + '/de/kalender/projektarchiv/projekt/' + titel + '" class="projekt"><span>›</span>Projektseite</a>';
	}
	else if(f != "suche")
	{
		/* Bildunterschrift bauen */
		var temp = titel.split(" // ");
		titel = "";
		for(var i=0; i<temp.length; i++)
		{
			titel += temp[i];
			if(i < temp.length - 1)
				titel += "<br />";
		}
	}
	var pPadding = (!titel ? 14 : 10) + "px";
	
	/* Bei Bild Maße extrahieren */
	if(f == "img")
	{
		temp = masse.split("x");
		var iBreite = temp[0];
		var iHoehe = temp[1];
	}
	/* Bei Video FS anhängen */
	else if(f == "video")
		link += "&fs=1&autoplay=1";
	
	/* falls ein Bild offen ist, wird dieses zunächst geschlossen */
	if($('popBox'))
		this.schliessen(1);
	else
		this.bauen();
}

/* Routine für Newsletter, Suche */
function popFeld(id)
{
	/* popFeld kontruieren */
	this.bauen = function()
	{
		var div = new Element('div', { id: 'popFeld', 'class': id + ' ' + classFix });
		var slideDiv = new Element('div', { id: 'popFeldDiv' });
		var innerDiv = new Element('div');
		var a = new Element('a', {
			html: 'X', 'class': 'close', title: 'Schließen', events: {
				click: function() {
					pF.schliessen(0); }}});
		div.inject($('container'));
		slideDiv.inject(div);
		innerDiv.inject(slideDiv);
		a.inject(slideDiv);
		this.tempFX = new Fx.Slide($('popFeldDiv'), {
			transition: Fx.Transitions.Cubic.easeOut,
			duration: 350,
			fps: 60}).hide();
		var jsonRequest = new Request.JSON({url: base + '/load.php?f=' + id, onSuccess: function(r)
			{
				$('popFeldDiv').getFirst('div').set('html', r["html"]);
				$$('input.hinweis').addEvent('click', function(el) {
					if(this.className == "hinweis")
					{
						this.value = "";
						this.className = "text";
					}
				});
				
				if(id == "newsletter")
					$$('input.hinweis').addEvent('keyup', function() {
						this.value = trim(this.value);
						$('senden').className = pruefeEmail(this.value) ? "ok" : "";
							
					});
				else if(id == "suche")
					$$('input.hinweis').addEvent('keyup', function() {
						$('senden').className = this.value.length > 2 ? "ok" : "";
					});
				
				$$('input.radio').addEvent('click', function() { pF.textAendern(this.value); });
				$('senden').addEvent('click', function() { 
					if(this.className == "ok")
						pF.formSenden();
					return false; });
				pF.zeigen();
			}}).get();
	};

	this.zeigen = function()
	{
		if(Browser.ie && Browser.version < 8)
			$('htaLogo').setStyle('display', 'none');
		this.tempFX.slideIn().chain(function() {
			$('popFeldDiv').getFirst('a.close').setStyle('visibility', 'visible');
		});
	};
	
	this.schliessen = function(neu)
	{
		$('popFeldDiv').getFirst('a.close').setStyle('visibility', 'hidden');
		
		/* falls das gleiche Element erneut angeklickt wurde, wird es nicht wieder geöffnet */
		if(id == $('popFeld').className.substr(0, id.length))
			neu = 0;
		
		pF.tempFX.slideOut().chain(function(){
			if(Browser.ie && Browser.version < 8)
				$('htaLogo').setStyle('display', 'block');
			$('popFeld').dispose();
			if(neu == 1)
			{
				delete(pF.tempFX);
				pF.bauen();
			}
			else
				delete(pF.tempFX);
		});
	};
	
	this.textAendern = function(v)
	{
		if(v == "anmelden")
			$('senden').innerHTML = "Zum Newsletter anmelden";
		else if(v == "abmelden")
			$('senden').innerHTML = "Vom Newsletter abmelden";
	};
	
	this.formSenden = function()
	{
		if(id == "newsletter")
			new Form.Request('popForm', $('popFeldDiv').getFirst('div'), { extraData: {'f': id}, resetForm: false}).send();
		else if(id == "suche")
		{
			if(!$('popBox'))
				pB = new popBox("", "", "", "suche");
			$('popMedia').setStyle('max-height', (hoehe() - 80));
			var req = new Form.Request('popForm', $('popMedia'),
					{ resetForm: false, extraData: {'f': id}, 
					onSuccess: function(){
						pB.zeigen();
					}}).send();
		}
	};

	/* falls das Feld offen ist, wird es zunächst geschlossen */
	if($('popFeld'))
		this.schliessen(1);
	else
		this.bauen();
}

/* Navigation der Impressionen */
function goImpression(f)
{
	var kopfBreite = 240;
	var imprPlusPos = Browser.ie ? 791 : 799;
	
	/* verhindert Anzeige vom Scrollbalken beim Sliden */ 
	$('slideshow').setStyle('overflow', "hidden");
	
	if(f)
	{
		if(f == "+" && nowFrame < maxFrame)
		{
			nowFrame++;
			mySlideShow.show(nowFrame, { transition: 'pushLeft' });
			if(nowFrame == loadFrame && maxFrame > loadFrame)
				bilderInSlide();
		}
		else if(f == "-" && nowFrame > 0)
		{
			nowFrame--;
			mySlideShow.show(nowFrame, { transition: 'pushRight' });
		}
	}
	else if(nowFrame > 0)
	{
		nowFrame = 0;
		mySlideShow.show(nowFrame, { transition: 'pushRight' });
	}
	
	if(nowFrame == maxFrame)
		$('imprPlus').setStyle('display', 'none');
	if(nowFrame < maxFrame)
		$('imprPlus').setStyle('display', 'block');
	if(nowFrame > 0)
	{
		if($('imprPlus').getStyle('margin-left') == imprPlusPos + 'px')
			$('imprPlus').tween('margin-left', 910);
		$('imprMinus').setStyle('display', 'block');
		$('imprPlus').title = 'vorblättern';
		$$('ul.menu1').setProperty('class', 'menu1 fixed off');
		setTimeout("$('menuBack').setStyle('width', 275)", 100);
	}
	if(nowFrame == 0)
	{
		$('imprPlus').tween('margin-left', imprPlusPos);
		$('imprMinus').setStyle('display', 'none');
		$('imprPlus').title = 'HTA in Bildern';
		setTimeout("$$('ul.menu1').setProperty('class', 'menu1 fixed')", 500);
		setTimeout("$('menuBack').setStyle('width', 260)", 400);
		kopfBreite = 265;
	}
	$('kopf').setStyle('width', kopfBreite);
}

function delay()
{
	var zeit = 750;
	if(typeof warten != "undefined")
		window.clearTimeout(warten);
	warten = window.setTimeout('titelSuche()', zeit);
}

function titelSuche()
{
	if(!$('kontext').getElement('input.prSuche').value && $('kontext').getElement('select.prSuche').value == 0)
		kalenderReset();
	else
	{
		var jsonRequest = new Request.JSON({url: base + '/load.php?f=' + funktion + "&s=" + $('kontext').getElement('input.prSuche').value +
				"&k=" + $('kontext').getElement('select.prSuche').value + "&m=" + $('kontext').getElement('input[name=startMonat]').value,
				onSuccess: function(r)
			{
				$('text').set('html', r["html"]);
				if(funktion == "kalender")
				{
					$('kalender').set('html', r["kalender"]);
					kalenderParse();
				}
				projektParse();
			}}).get();
	}
}

function bilderInSlide(first, unfix)
{
	/* Baut zusätzliche Slide und aktiviert Slideshow */
	this.neueSlide = function(nr)
	{
		var innerDiv = new Element('div', {id: 'slideBilder' + nr, 'class': 'bilder', style: 'display: block'});
		var outerDiv = new Element('div', {'class': 'slide black'});
		innerDiv.inject(outerDiv);
		outerDiv.inject($('slideshow'));
	};
	
	/* Führt Request aus und fügt Bilder ein */
	this.anfrage = function()
	{
		var jsonRequest = new Request.JSON({url: base + '/load.php?f=slideBilder&von=' + loadFrame + '&menge=' + this.bilderZahl, onSuccess: function(r)
		{
			$('slideBilder' + loadFrame).set('html', r["bilder"]);
			loadFrame++;
			
			/* beim ersten Aufruf wird die nötige Struktur für alle Slides erzeugt */ 
			if(first && r["anzahl"] > 0)
			{
				for(i=1; i<r["anzahl"]; i++)
				{
					neueSlide(i);
					maxFrame++;
				}
	
				init();
				/* Slideshow aktivieren */
				mySlideShow = new SlideShow('slideshow',{
					duration: 500,
					fps: 60
				});
				
				/* Blätterbuttons einbauen präparieren */
				var fixClass = (unfix == 1) ? "" : "fixed";
				var imprPlus = new Element('a', { id: 'imprPlus', 'class': fixClass, title: 'HTA in Bildern',
					html: '<img src=\"' + base + '/css/pix/leer.gif\" />',
					events: { click: function() { goImpression("+"); }}});
				var imprMinus = new Element('a', { id: 'imprMinus', 'class': fixClass, title: 'zurückblättern', 
					html: '<img src=\"' + base + '/css/pix/leer.gif\" />',
					events: { click: function() { goImpression("-"); }}});
				imprPlus.inject($('container'));
				imprMinus.inject($('container'));
			}
		}}).get();
	};
	
	/* beim ersten Aufruf wird die erste Slide gebaut und die Anzahl der Bilder pro Seite bestimmt */
	if(first)
	{
		var h = hoehe();
		this.neueSlide(loadFrame);

		/* Anzahl nachzuladender Bilder bestimmen */
		this.bilderZahl = Math.floor((h+15)/263) * 3 - 1;
		if(this.bilderZahl < 2)
			this.bilderZahl = 2;
	}
	this.anfrage();
}

function pruefeEmail(email)
{
	var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
	return reg.test(email);
}

function hoehe()
{
	return (window.innerHeight) ? window.innerHeight : document.documentElement.clientHeight;
}

function trim(s)
{
  while (s.substring(0,1) == ' ') {
    s = s.substring(1,s.length);
  }
  while (s.substring(s.length-1,s.length) == ' ') {
    s = s.substring(0,s.length-1);
  }
  return s;
}

window.onresize = init;
window.onload=kontextHoehe;
