
/* Autor: gerrit kubiak, gerrit@squap.de, www.squap.de - erstellt am: 19. November 2008 */
/* konform zu JavaScript 1.5 & DOM 1.0 - janis version 2.3 mirtsch */
/* copyright 2008 gerrit kubiak und squap.de - alle Rechte vorbehalten */

var zeitGeber     = null;
var zeitFktF      =   [];
var fensterX      = 0, fensterY = 0, offsetX = 0, offsetY = 0, minY = 0, minX = 0;
var ereignisTypen = {load:'load', resize:'resize', mouseover:'mouseover', mouseout:'mouseout', click:'click'};
var wochenTage    = ['mo', 'di', 'mi', 'do', 'fr', 'sa', 'so'];
var monatsNamen   = ['jan', 'feb', 'mar', 'apr', 'mai', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'dez'];
var browserSprache = (navigator.userLanguage || navigator.language).substring(0, 2);

function Element(id) {
	return (id.indexOf('_n') > -1) ?
		document.getElementsByName(id)[0] :
		document.getElementById(id);
}
function klassenElemente(e, klassen) {
	var alleObjekte = e.getElementsByTagName('*');
	var ausdruck = '';
	var klassenObjekte = [];
	for (var i = 0; i < alleObjekte.length; i++) {
		for (var j = 0; j < klassen.length; j++) {
			ausdruck = new RegExp('\\b' + klassen[j] + '\\b', 'g');
			if (ausdruck.test(alleObjekte[i].className)) {
				klassenObjekte.push(alleObjekte[i]);
			}
		}
	}
	return klassenObjekte;
}
function leseCookieWert(eintrag) {
	var ret = false;
	if (document.cookie) {
		var speicher = document.cookie.split(';');
		for (var i in speicher) 
			if (speicher[i].indexOf(eintrag) > -1)  // auch hier besser mit regexp suchen
				ret = speicher[i].slice(speicher[i].indexOf('=') + 1);
	}
	return ret;
}
function fzReaktor(e) {
	e.x   = e.offsetLeft;
	e.y   = e.offsetTop;
	e.xG  = e.x;
	e.yG  = e.y;
	e.b   = e.offsetWidth;
	e.h   = e.offsetHeight;
	e.bG  = e.b;
	e.hG  = e.h;
	e.t   =   0;
	e.r   = e.b;
	e.u   = e.h;
	e.l   =   0;
	e.tG  = e.t;
	e.rG  = e.r;
	e.uG  = e.u;
	e.lG  = e.l;
	e.lauf = {opa: -1, mt: -1, ml: -1, mr: -1, x: -1, y: -1, b: -1, h: -1};
	e.v    = {opa:  0, mt:  0, ml:  0, mr:  0, x:  0, y:  0, b:  0, h:  0};
	e.a    = {opa:  0, mt:  0, ml:  0, mr:  0, x:  0, y:  0, b:  0, h:  0};
	e.rollen = e.scrollTop;
	e.ladeSeite = function() {
		var adresse = e.getElementsByTagName('a')[0].href.indexOf('javascript:;') > -1 ? e.getElementsByTagName('a')[2].href : e.getElementsByTagName('a')[0].href;
		window.open(adresse, '_self');
		return true;
	}
	e.setzeKlasse        = function(parameterS) {
		var klassen = e.className ? e.className.split(' ') : [];
		var zeiger  = klassen.length;
		for (var i = 0; i < klassen.length; i++)
			for (var j = 0; j < parameterS[0].length; j++)
				if (parameterS[0][j] == klassen[i])
					zeiger = i;
		klassen[zeiger] = parameterS[0][parameterS[1]];
		e.className = klassen.join(' ');
		return true;
	};
	e.leseMakro          = function(parameterS) {
		var makro = leseCookieWert(parameterS[0]) ? leseCookieWert(parameterS[0]) : parameterS[1];
		for (var i = 0; i < aM[makro].length; i++) {
			var verzoegerung   = aM[makro][i][0];
			var reaktorParam   = aM[makro][i][1];
			var reaktorFkt     = aM[makro][i][2] ? aM[makro][i][2] : 'setzeEigenschaft';
			var reaktorObjekte = aM[makro][i][3] ? klassenElemente(e, [aM[makro][i][3]]) : new Array(e);
			for (var j = 0; j < reaktorObjekte.length; j++) {
				fzZeitFkt(verzoegerung, reaktorObjekte[j][reaktorFkt], reaktorParam);
			}
		}
		return true;
	};
	e.setzeElemEcke = function(parameterS) {
		var ecke = document.createElement('div');
		ecke.className = parameterS[0];
		e.appendChild(ecke);
		return true;
	};
	e.setzeCookie        = function(parameterS) {
		var ablauf = new Date();
		ablauf.setTime(ablauf.getTime() + (365 * 24 * 60 * 60 * 1000));
		document.cookie = parameterS + '; expires=' + ablauf.toGMTString();
		return true;
	};
	e.setzeOpazitaet     = function(parameterS) {
		e.opazitaet    = parameterS[0];
		if (e.filters) e.style.filter = 'alpha(opacity = ' + Math.round(e.opazitaet) + ')'; // ist  ie
		else e.style.opacity = Math.round(e.opazitaet) / 100;
		return true;
	};
	e.aendereOpazitaet   = function(parameterS) {
		if (e.lauf['opa'] < 0) {
			e.lauf['opa'] = parameterS[1];
			e.v['opa']    = (parameterS[0] - e.opazitaet) / parameterS[1];
		}
		if (e.lauf['opa'] > 0) {
			e.setzeOpazitaet([e.opazitaet + e.v['opa']]);
			e.lauf['opa'] -= 1;
			return false;
		}
		else {
			e.opazitaet = Math.round(e.opazitaet);
			e.lauf['opa'] = -1;
			return true;
		}
	};
	e.setzeMarginTop     = function(parameterS) {
		e.marginTop    = parameterS[0];
		e.style.marginTop = Math.round(e.marginTop) + 'px';
		return true;
	};
	e.aendereMarginTop   = function(parameterS) {
		if (e.lauf['mt'] < 0) {
			e.lauf['mt'] = parameterS[1];
			e.v['mt']    = (parameterS[0] - e.marginTop) / parameterS[1];
		}
		if (e.lauf['mt'] > 0) {
			e.setzeMarginTop([e.marginTop + e.v['mt']]);
			e.lauf['mt'] -= 1;
			return false;
		}
		else {
			e.marginTop = Math.round(e.marginTop);
			e.lauf['mt'] = -1;
			return true;
		}
	};
	e.setzeMarginLeft    = function(parameterS) {
		e.marginLeft    = parameterS[0];
		e.style.marginLeft = Math.round(e.marginLeft) + 'px';
		return true;
	};
	e.aendereMarginLeft  = function(parameterS) {
		if (e.lauf['ml'] < 0) {
			e.lauf['ml'] = parameterS[1];
			e.v['ml']    = (parameterS[0] - e.marginLeft) / parameterS[1];
		}
		if (e.lauf['ml'] > 0) {
			e.setzeMarginLeft([e.marginLeft + e.v['ml']]);
			e.lauf['ml'] -= 1;
			return false;
		}
		else {
			e.marginLeft = Math.round(e.marginLeft);
			e.lauf['ml'] = -1;
			return true;
		}
	};
	e.setzeMarginRight   = function(parameterS) {
		e.marginRight    = parameterS[0];
		e.style.marginRight = Math.round(e.marginRight) + 'px';
		return true;
	};
	e.aendereMarginRight = function(parameterS) {
		if (e.lauf['mr'] < 0) {
			e.lauf['mr'] = parameterS[1];
			e.v['mr']    = (parameterS[0] - e.marginRight) / parameterS[1];
		}
		if (e.lauf['mr'] > 0) {
			e.setzeMarginRight([e.marginRight + e.v['mr']]);
			e.lauf['mr'] -= 1;
			return false;
		}
		else {
			e.marginRight = Math.round(e.marginRight);
			e.lauf['mr'] = -1;
			return true;
		}
	};
	e.setzeEigenschaft   = function(parameterS) {
		var eigenschaft = parameterS[0].split('.');
		if (eigenschaft[1]) {
			e[eigenschaft[0]][eigenschaft[1]] = parameterS[1];
		}
		else {
			e[eigenschaft[0]] = parameterS[1];
		}
		return true;
	};
	e.diaSchauIni = function(parameterS) {
		var i;
		var klasse     = parameterS[0];
		e.kE           = klassenElemente(e, [klasse]);
		e.onmouseover  = function() {e.merke = e.aktiv; e.aktiv = -1; };
		e.onmouseout   = function() {e.aktiv = e.merke; };
		for (i = 0; i < e.kE.length; i++) {
			fzReaktor(e.kE[i]);
			if (i == 0) {
				e.kE[i].setzeEigenschaft(['style.display', 'block']);
				e.kE[i].setzeEigenschaft(['style.zIndex', 2]);
				e.kE[i].setzeOpazitaet([100]);
				e.kE[i].setzeMarginTop([0]);
			}
			else {
				e.kE[i].setzeEigenschaft(['style.display', 'none']);
				e.kE[i].setzeEigenschaft(['style.zIndex', 1]);
				e.kE[i].setzeOpazitaet([0]);
				e.kE[i].setzeMarginTop([-e.kE[i-1].offsetHeight]);
			}
		}
		e.aktiv = 0;
		return true;
	};
	e.diaSchauExe = function(parameterS) {
		var ziel      = parameterS[0];
		var schritte  = parameterS[1];
		var dynamik   = parameterS[2];
 		if (e.lauf['opa'] < 0) {
			var i, v0;
			e.lauf['opa'] = schritte;
			e.kE[0].setzeEigenschaft(['style.zIndex', 1]);
			e.kE[1].setzeEigenschaft(['style.zIndex', 2]);
			e.kE[1].setzeEigenschaft(['style.display', 'block']);
			if (e.aktiv == e.kE.length - 1) {
				e.kE[0].setzeMarginTop([-e.kE[1].offsetHeight]);
			}
			else {
				e.kE[1].setzeMarginTop([-e.kE[0].offsetHeight]);
			}
			for (i = 0; i < 2; i++) {
				v0               = (ziel[i] - e.kE[i].opazitaet) / schritte;
				e.kE[i].a['opa'] = dynamik[i] * 2 * v0 / schritte;
				switch (dynamik[i]) {
					case  1: e.kE[i].v['opa'] = -e.kE[i].a['opa'] / 2; break;
					case  0: e.kE[i].v['opa'] = v0; break;
					case -1: e.kE[i].v['opa'] = 2 * v0 - e.kE[i].a['opa'] / 2; break;
				}
			}
		}
		if (e.lauf['opa'] > 0 && e.aktiv >= 0) {
			for (i = 0; i < 2; i++) {
				e.kE[i].v['opa'] += e.kE[i].a['opa'];
				e.kE[i].setzeOpazitaet([e.kE[i].opazitaet + e.kE[i].v['opa']]);
			}
			e.lauf['opa']--;
		}
		if (e.lauf['opa'] == 0) {
			e.kE[0].setzeEigenschaft(['style.display', 'none']);
			e.kE[0].setzeOpazitaet([ziel[0]]);

			e.kE[1].setzeMarginTop([0]);
			e.kE[1].setzeOpazitaet([ziel[1]]);
			
			e.kE[0].v['opa'] =  0;
			e.kE[1].v['opa'] =  0;

			e.lauf['opa']    = -1;
			
			e.kE.push(e.kE.shift());
			if (++e.aktiv == e.kE.length) e.aktiv = 0;
			
			fzZeitFkt(parameterS[3], e.diaSchauExe, [parameterS[0], parameterS[1], parameterS[2], parameterS[3]]);
			return true;
		}
		return false;
	};

	return true;
}
function fzWechsler(e) {
	e.fzBildS = function(parameterS) {
		if (!e.bildS) {
			e.bildS        = [];
			e.bildS[0]     = new Image();
			e.bildS[0].src = e.src;
		}
		e.bildS[parameterS[1]]     = new Image();
		e.bildS[parameterS[1]].src = parameterS[0];
		return true;
	};
	e.setzeBildS = function(parameterS) {
		e.src  = e.bildS[parameterS[0]].src;
		return true;
	};
}
function fzZeitFkt() { 
	var i;
	for (i = 0; i < zeitFktF.length; i++) {
		if ((arguments[1] == zeitFktF[i][1]) && (arguments[0] == zeitFktF[i][0])) {
			zeitFktF.splice(i, 1);
		}
	}
	zeitFktF[zeitFktF.length] = arguments;
	if (zeitGeber === null) {
		zeitGeber = setInterval(zeitSchleife, 20);
	}
}
function zeitSchleife() {
	var i;
	for (i = 0; i < zeitFktF.length; i++) {
		if (zeitFktF[i][0] === 0) {
			zeitFktF[i][3] = zeitFktF[i][1](zeitFktF[i][2]);
		}
	}
	beendeSchleife();
}
function beendeSchleife() {
	var i;
	for (i = zeitFktF.length - 1; i >= 0; i--) {
		if (zeitFktF[i][0] > 0) {
			zeitFktF[i][0]--;
		}
		if (zeitFktF[i][3]) {
			zeitFktF.splice(i, 1);
		}
	}
	if (zeitFktF.length === 0) {
		clearInterval(zeitGeber);
		zeitGeber = null;
	}
}
function loescheZeit() {
	zeitGeber = null;
	zeitFktF  =   [];
}
function fzAnimator(e) {
	var i;
	e.ereignisFktF = [];
	e.fzEreignis = function(ereignis, verzoegerung, reaktorAktionFkt, parameterS) {
		var eigenschaft, bedingung;
		var ereignisFkt;
		var animatorFkt = function() {
			fzZeitFkt(verzoegerung, reaktorAktionFkt, parameterS);
		};
		if (ereignis == 'load') {
			animatorFkt();
		}
		else {
			if (ereignis in ereignisTypen) {
				if (typeof(detachEvent) == 'undefined') { // ist nicht ie
					e.addEventListener(ereignis, animatorFkt, false);
				}
				else {
					e.attachEvent('on' + ereignis, animatorFkt);
				}
			}
			else {
				ereignis    = ereignis.split(':');
				eigenschaft = ereignis[0];
				bedingung   = ereignis[1];
				e.ereignisFktF[e.ereignisFktF.length] = [eigenschaft, bedingung, animatorFkt, true];
				ereignisFkt = function(a, b, c) {
					for (i = 0; i < e.ereignisFktF.length; i++) {
						eigenschaft = e.ereignisFktF[i][0];
						bedingung   = e.ereignisFktF[i][1];
						animatorFkt = e.ereignisFktF[i][2];
						erstLauf    = e.ereignisFktF[i][3];
						if (eval(e[eigenschaft] + bedingung) && erstLauf) {
							e.ereignisFktF[i][3] = false;
							animatorFkt();
						}
						else if (!eval(e[eigenschaft] + bedingung)) {
							e.ereignisFktF[i][3] = true;
						}
					}
					return c;
				};
				if (typeof(detachEvent) == 'undefined') { // ist nicht ie
					e.watch(eigenschaft, ereignisFkt);
				}
				else {
					e.onpropertychange = ereignisFkt;
				}
			}
		}
		return true;
	};
	return true;
}
function fzAnim(initiatorId, ereignis, aktionFkt, verzoegerung, reaktorId, parameterS) {
	var reaktorE;
	var initiatorE;
	reaktorE = Element(reaktorId);
	if (!reaktorE.setzeBildS && reaktorId.indexOf('_n') >  -1) fzWechsler(reaktorE); // mit regexp suchen
	if (!reaktorE.setzeTextS && reaktorId.indexOf('_n') == -1) fzReaktor(reaktorE);  // mit regexp suchen
	if (aktionFkt == 'posRahmen') {
		if (reaktorE.b + reaktorE.x > minX) {
			minX = reaktorE.b + reaktorE.x;
		}
		if (reaktorE.h + reaktorE.y > minY) {
			minY = reaktorE.h + reaktorE.y;
		}
	}
	if (parameterS.join(' ').indexOf('p:') > -1) { // mit regexp suchen
		parameterS = aM[parameterS.join(' ').split(':')[1]][parameterS.join(' ').split(':')[2]][5];
	}
	initiatorE = (initiatorId == 'window') ? window : Element(initiatorId);
	if (!initiatorE.fzEreignis) fzAnimator(initiatorE);
	initiatorE.fzEreignis(ereignis, verzoegerung, reaktorE[aktionFkt], parameterS);
	return true;
}
function definiereAnim() {
	var i;
	var feldN;
	var seitenN = document.URL.replace(/\\/g, '/');
	seitenN = (seitenN.indexOf('.html') > 0) ? // mit regexp suchen
		seitenN.substring(seitenN.lastIndexOf('/') + 1, seitenN.lastIndexOf('.')) :
		'index';
	for (feldN in aM) {
		if (feldN == 'alle' || feldN == seitenN) {
			for (i = 0; i < aM[feldN].length; i++) {
				fzAnim(aM[feldN][i][0], aM[feldN][i][1], aM[feldN][i][2],
				       aM[feldN][i][3], aM[feldN][i][4], aM[feldN][i][5]);
			}
		}
		else { // ist makro
			var makroKlassen = [];
			for (var i = 0; i < aM[feldN].length; i++) {
				if (aM[feldN][i][3]) {
					makroKlassen.push(aM[feldN][i][3]);
				}
			}
			var reaktorObjekte = klassenElemente(document, makroKlassen);
			for (var j = 0; j < reaktorObjekte.length; j++) {
				if (!reaktorObjekte[j].setzeTextS && !reaktorObjekte[j].src) {
					fzReaktor(reaktorObjekte[j]);
				}
			}
		}
	}
	for (feldN in tM) {
		if (feldN == 'alle' || feldN == seitenN) {
			for (i = 0; i < tM[feldN].length; i++) {
				Element(tM[feldN][i][0]).fzTextS([tM[feldN][i][1], tM[feldN][i][2]]);
			}
		}
	}
	for (feldN in bM) {
		if (feldN == 'alle' || feldN == seitenN) {
			for (i = 0; i < bM[feldN].length; i++) {
				Element(bM[feldN][i][0]).fzBildS([bM[feldN][i][1], bM[feldN][i][2]]);
			}
		}
	}
	return true;
}
if (typeof(detachEvent) == 'undefined') {window.addEventListener('load', definiereAnim, false);}
else {window.attachEvent('onload', definiereAnim);}
if (typeof(detachEvent) == 'undefined') {window.addEventListener('unload', loescheZeit, false);}
else {window.attachEvent('onunload', loescheZeit);}


