var cPath = (window.getRelativeWebRoot ? window.getRelativeWebRoot() : '') + 'js/Lib/';
document.write ('<SCR' + 'IPT LANGUAGE="JavaScript1.2" SRC="'+ cPath +'BMenu3.js" TYPE="text/javascript"><\/SCR' + 'IPT>');

function initMenus () {
	if (_aMs.length == 0) {
		var oMenu = new Menu(0);
	}
}

function openMenu (nRepeated) {
	if (!nRepeated) nRepeated = 0;
	clearTimeout (oToOpenMenu);
	if (_aMs[0] && _aMs[0].update) {
		clearTimeout (_aMs[0].oToClose);
		_aMs[0].update (aMenuEntries);
	}
	else if (nRepeated < 5) 
		oToOpenMenu = setTimeout ('openMenu(' + (nRepeated+1) + ')', 200);
}

function leaveMenu() {
	if (_aMs[0] && _aMs[0].mo) _aMs[0].mo(0);
}

function StartMenu (nLevel) {
	this.init = BTextMenu;
	this.init (nLevel);
	this.nElementHeight = 22;
	this.nChildOffset = 3;
	this.aLayers[3]	= getLayer('MenuBgC' + this.nLevel);
	if (!this.aLayers[3]) alert ('Layer MenuBgC' + this.nLevel + ' not found');
	this.aLayers[0].set ('visibility', false);
	this.aLayers[3].set ('visibility', false);
	
	this.calculateSize = function() {
		this.nElementHeight = 22;
		this.nElementsWidth = (this.nLevel == 0 ? 282 : this.getElementsWidth());
		this.nWidth = this.nElementsWidth+10;
	};

	this.BMenu_getPosition = this.getPosition;
	this.getPosition = function () {
		var aPos = this.BMenu_getPosition();
		aPos[5]++; // Angezeigten Bereich um einen Pixel (untere Trennlinie) verlängern
		return (aPos);
	}

	this.getPreSelected = function() {
		this.nPreSelected = null;
		for (var i=0; i<this.aElements.length; i++) {
			for (var j=0; j<aPagePath.length && this.aElements[i][0] >= aPagePath[j]; j++) {
				if (this.aElements[i][0] == aPagePath[j]) {
					this.nPreSelected = i;
					break;
				}
			}
		}
	}
	this.getContent = function (nLayer) {
		var nOffSet = 9;
		var cPath = (window.getRelativeWebRoot ? window.getRelativeWebRoot() : '') + CONFIG['Images']['Dir'] + '';
		var cHtml = '';
		if (this.aElements) for (var i=0; i<this.aElements.length && i < 7; i++) {
			cHtml += '<table border="0" cellspacing="0" cellpadding="0"><tr>';
			cHtml += '<td><img src="' + cPath + 'leer.gif" width="'+ ((this.aElements.length-i)*nOffSet) +'" height="22" alt="" border="0"></td>';
			switch (nLayer) {
				case 3:
					cHtml += '<td width="' + this.nWidth + '"><img src="' + cPath + 'Start/menu_start.gif"></td>';
					break;
				case 0: 
					cHtml += '<td width="' + this.nWidth + '"><nobr class="M0"> &nbsp; &nbsp; ' + this.aElements[i][1] + '</nobr></td>';
					break;
				case 1: 
					cHtml += '<td width="' + this.nWidth + '"><nobr class="M1"> &nbsp; &nbsp; ' + this.aElements[i][1] + '</nobr></td>';
					break;
				case 2: 
					cHtml += '<td><a  ' + this.getLink(i) + ' onmouseover="return _aMs[' + this.nLevel + '].mo(' + i + ',1)" onmouseout="return _aMs[' + this.nLevel + '].mo(' + i + ')"><img src="' + cPath + 'leer.gif" width="' + this.nWidth + '" height="' + this.nElementHeight + '" border="0"></a></td>'; 
					break;
			}
			cHtml += '</tr></table>';
		}
		return (cHtml);
	};

	this.BMenu_update = this.update;
	this.update = function (aElements) {
		this.aLayers[3].set ('visibility', false);
		this.BMenu_update (aElements);
		this.aLayers[3].replaceContent (this.getContent(3));
		this.aLayers[3].set ('visibility', true);
	}

	this.aPos = [295+((7-aMenuEntries.length)*8), 272];

	this.BMenu_mo = this.mo;
	this.mo = function (nElem, bOver) {
		if (bOver) {
			clearTimeout (_aMs[0].oToClose);
			if (oStripes) oStripes.setChapter (nElem+1);
			if (this.bFolded)
				_aMs[0].oToOpen = setTimeout ('_aMs[' + this.nLevel + '].unfold()', 800);
			else {
				if (this.oParent && this.oParent.nSelected != null) this.oParent.highlight (this.oParent.nSelected);
			}
		}
		else {
			clearTimeout (this.ToOpen);
			if (this.bFolded == null)
				_aMs[0].oToClose = setTimeout ('_aMs[' + this.nLevel + '].close()', 800);
			else
				_aMs[0].oToClose = setTimeout ('_aMs[' + this.nLevel + '].fold()', 800);
		}
	
		this.highlight (bOver ? nElem : null);
		window.status = '';
		return (true);
	}
	
	this.BMenu_close = this.close;
	this.close = function () {
		this.BMenu_close();
		if (oStripes) oStripes.setChapter (nChapter);
	}
}

function Menu (nLevel) {
	this.init = BTextMenu;
	this.init (nLevel);
	this.nElementHeight = 19;
	this.nChildOffset = 3;
	this.aLayers[3]	= getLayer('MenuBgC' + this.nLevel);
	if (!this.aLayers[3]) alert ('Layer MenuBgC' + this.nLevel + ' not found');
	
	this.calculateSize = function() {
		this.nElementHeight = 19;
		this.nElementsWidth = this.getElementsWidth();
		this.nWidth = this.nElementsWidth + 14;
	};

	this.BMenu_getPosition = this.getPosition;
	this.getPosition = function () {
		var aPos = this.BMenu_getPosition();
		aPos[5]++; // Angezeigten Bereich um einen Pixel (untere Trennlinie) verlängern
		return (aPos);
	}

	this.getPreSelected = function() {
		this.nPreSelected = null;
		for (var i=0; i<this.aElements.length; i++) {
			for (var j=0; j<aPagePath.length && this.aElements[i][0] >= aPagePath[j]; j++) {
				if (this.aElements[i][0] == aPagePath[j]) {
					this.nPreSelected = i;
					break;
				}
			}
		}
	}

	this.getContent = function (nLayer) {
		var cPath = (window.getRelativeWebRoot ? window.getRelativeWebRoot() : '') + CONFIG['Images']['Dir'] + 'Nav/';
		var cHtml = '<table border="0" cellspacing="0" cellpadding="0" width="' + this.nWidth + '">';
		if (this.aElements) for (var i=0; i < this.aElements.length; i++) {
			cHtml += '<tr>';
			switch (nLayer) {
				case 3:
					cHtml += '<td class="MBG" align="right"><nobr><img src="' + cPath + 'leer.gif" width="' + Math.max(1, this.nWidth - 52) + '" height="19"><img src="' + cPath + 'menu_verlauf.jpg" width="52" height="19"></nobr></td>';
					break;
				case 0: 
					cHtml += '<td><img src="' + cPath + 'leer.gif" width="14" height="19"></td>';
					cHtml += '<td><nobr class="M0">' + this.aElements[i][1] + '</nobr></td>';
					cHtml += '<td><img src="' + cPath + (this.aElements[i][2] && this.aElements[i][2].length > 0 ? 'mm.gif' : 'leer.gif') + '" width="4" height="7" vspace="5" hspace="1"></td>';
					break;
				case 1: 
					cHtml += '<td><img src="' + cPath + (PageID != 1 ? 'menu_pfeil.gif' : 'leer.gif') + '" width="14" height="19"></td>';
					cHtml += '<td><nobr class="M1">' + this.aElements[i][1] + '</nobr></td>';
					cHtml += '<td><img src="' + cPath + 'leer.gif" width="6" height="7"></td>';
					break;
				case 2: 
					cHtml += '<td><nobr><a ' + this.getLink(i) + ' onmouseover="return _aMs[' + this.nLevel + '].mo(' + i + ',1)" onmouseout="return _aMs[' + this.nLevel + '].mo(' + i + ')"><img src="' + cPath + 'leer.gif" width="' + this.nWidth + '" height="' + this.nElementHeight + '" border="0"></a></nobr></td>'; 
					break;
			}
			cHtml += '</tr>'
		}
		if (nLayer == 0 || nLayer == 1) cHtml +='<tr><td></td><td><img src="' + cPath + 'leer.gif" width="' + (this.nWidth-14-6) + '" height="1"></td></tr>';
		cHtml += '</table>';
		return (cHtml);
	};
	
	this.BMenu_update = this.update;
	this.update = function (aElements) {
		this.aLayers[3].set ('visibility', false);
		this.BMenu_update (aElements);
		this.aLayers[3].replaceContent (this.getContent(3));
		this.aLayers[3].set ('visibility', true);
	}
	
	
	if (this.nLevel == 0) {
		this.aPos = [12, 143];

		this.BMenu_mo = this.mo;
		this.mo = function (nElem, bOver) {
			this.BMenu_mo (nElem, bOver);
			if (bOver && oStripes) oStripes.setChapter (nElem+1);
		}

		this.BMenu_close = this.close;
		this.close = function () {
			this.BMenu_close();
			if (oStripes) oStripes.setChapter (nChapter);
		}
	}
}



function Stripes() {
		var cPath = (window.getRelativeWebRoot ? window.getRelativeWebRoot() : '') + CONFIG['Images']['Dir'] + 'Stripes/';
	if (PageID == 1) setStripeHider();

	this.bActive = (window.location.href.search (/\.page$/) < 0);	
	this.aLayers = new Array();
	this.aImgIDs = new Array();
	this.aPos = new Array();
	this.aIstPos = new Array();
	this.aUpdTo = new Array();
	this.nMinStep = 10;
	this.nMaxStep = 200;
	var nMaxChapter = 7;
	if (PageID == 1) nMaxChapter++;
	if (this.bActive) {
		for (var i=0; i<4; i++) {
			this.aLayers[i] = getLayer ('Stripe' + (i+1));
			var oLayer = this.aLayers[i];
			oLayer.aIstPos = oLayer.get ('left');
			oLayer.aImgIDs = new Array();
			oLayer.nPos = nMaxChapter-1;
			oLayer.oUpdTo = null;
			for (var j=0; j<nMaxChapter; j++) oLayer.aImgIDs[j] = null;
			oLayer.aImgIDs[nMaxChapter-1] = nChapter-1;
			for (var j=0; j<nMaxChapter; j++) if (j != nChapter-1) {
				var k = Math.floor (Math.random() * nMaxChapter);
				while (!(oLayer.aImgIDs[k] == null)){
					k=(k-1+nMaxChapter)%nMaxChapter;
					//alert("Stripes "+this.aImgIDs[i][k]+'= not null');
				}
				oLayer.aImgIDs[k] = j;
				var cImg = 'Str' + (k+1) + '_' + (i+1);
				var oImg = getDocumentImage (cImg);
				oImg.src = cPath + 'Kap' + (j+1) + '_' + (i+1) + '.jpg';
			}
		}
	}
	
	this.update = function () {
		if (this.bActive) for (var i=0; i<4; i++) this.updateStripe(i);
	};
	
	this.updateStripe = function (i, bContinue) {
		var nTimeout = 30;
	
		var oLayer = this.aLayers[i];
		if (!bContinue) {
			var oNow = new Date();
			clearTimeout (oLayer.oUpdTo);
			oLayer.nIstPos = oLayer.get ('left');
			oLayer.nStepTime = oNow.getTime() + nTimeout;
			this.unclipStripe (i);
		}
		var bDone = true;
		var nSoll = -oLayer.nPos * 800 - 4;
		var nDist = Math.abs (nSoll - oLayer.nIstPos);
		if (nDist > 0) {
			var oNow = new Date();
			var nStep = nDist;
			if (nDist > this.nMinStep) {
				nStep = Math.max (this.nMinStep, Math.min (this.nMaxStep, nDist / 10));
				if (oNow.getTime() > oLayer.nStepTime) {
//					oDebug.write ('too late=' + (oNow.getTime()-oLayer.nStepTime) + ', Step=' + Math.round(nStep));
					var nFaktor = Math.min (1.5, 1 + (oNow.getTime() - oLayer.nStepTime) / 40);
					nStep = Math.min (nDist, Math.max (this.nMinStep, Math.min (this.nMaxStep, nStep * nFaktor)));
//					oDebug.write ('corrected Step=' + Math.round(nStep));
				}
			}
			oLayer.nIstPos += nStep * (nSoll > oLayer.nIstPos ? 1 : -1);
			this.setStripePos (i, oLayer.nIstPos);
			bDone = false;
		}
		if (!bDone) {
			var oNow = new Date();
			oLayer.nStepTime = oNow.getTime() + nTimeout;
			oLayer.oUpdTo = setTimeout ('oStripes.updateStripe(' + i + ',true)', nTimeout);
		}
		else
			this.clipStripe (i, oLayer.nIstPos);
	};
	
	this.setStripePos = function (nStripe, nPos) {
		if (cLayerMode == 'NS4') this.clipStripe (nStripe, nPos);
		this.aLayers[nStripe].set ('left', nPos);
	};

	this.unclipStripe = function (nStripe) {
		this.aLayers[nStripe].clipp (0, 0, 6345, 25);
	};

	this.clipStripe = function (nStripe, nPos) {
		this.aLayers[nStripe].clipp (-nPos, 0, (PageID==1 ? 743 : 795), 25);
	};
	
	this.setChapter = function (nChap) {
		if (this.bActive) {
			for (var i=0; i<4; i++) {
				var oLayer = this.aLayers[i];
				for (var j=0; j < oLayer.aImgIDs.length; j++) {
					if (oLayer.aImgIDs[j] == nChap-1) {
						oLayer.nPos = j;
						break;
					}
				}
			}
			this.update();
		}
	};
}


function setStripeHider() {
	var oLayer = getLayer ('Abdeck');
	if (oLayer) {
		var nBrowserWidth = (window.innerWidth ? window.innerWidth : (document.body && document.body.clientWidth ? document.body.clientWidth : 800));
		var nLeft = nBrowserWidth-800;
		oLayer.set ('left', nLeft);
		oLayer.clipp (743-nLeft, 0, nBrowserWidth-743, 70);
		oLayer.set ('visibility', true);
	}
}

function onResize() {
	setStripeHider();
	onResizePage();
}

