
// Copyrights: Bodo Kaelberer (BodoKaelberer@webkind.de)

/* Hinweis: Netscape6 hat Probleme mit dynamisch erzeugten Image-Maps. Das scheint
     nicht an createContextualFragment() zu liegen, sondern tritt auch auf, wenn
     man den Code als statischen HTML hat und dann dessen node ergreift und einsetzt.
     Wir schreiben deswegen die Layer-Inhalte per javascript beim Erzeugen der Seite
     in den Seite selbst.
  Allgemeines:
   - Das cookie "cookie_navigation" besagt, ob die Navigation sichtbar ist.
*/


function debug( text ) {
	document.forms[0].Debug.value = text;
}

function place( object, posX, posY ) {
	if ( isNS6 ) {
		object.style.left	= posX;
		object.style.top	= posY;
	}
	else if ( isNS4 ) {
		object.moveTo( posX, posY );
	}
	else {
		object.style.left	= posX;
		object.style.top	= posY;
	}
}

function setVisibility( object, visible ) {
	if ( isNS6 ) {
		object.style.visibility	= visible ? "visible" : "hidden"
	}
	else if ( isNS4 ) {
		object.visibility		= visible ? "visible" : "hidden";
	}
	else {
		object.style.visibility	= visible ? "visible" : "hidden";
	}
}

// Schaltet entweder die Navigation oder das Navigations-Icon sichtbar und das andere unsichtbar
function setNavigationVisibility( showNav ) {
	setVisibility( LP_Buttons, showNav );
	setVisibility( LP_NVIcon, !showNav );
}

function writeLayerContent( lay, s ) {
	if ( isNS6 ) {
		var range = document.createRange();
		range.selectNodeContents( lay );
		range.deleteContents();
		var df = range.createContextualFragment( s );
		lay.appendChild( df );
	}
	else if ( isNS4 ) {
		lay.document.open();
		lay.document.write( s );
		lay.document.close();
	}
	else {
		lay.innerHTML = s;
	}
}

function oPatient( href, nr, text1 ) {
	this.href		= href;
	this.dad		= nr;
	this.title		= text1;
	this.visited	= false;
	return this;
}

function oCoords() {
	this.bpX	= 0; this.bpY	= 0;
	this.ttX	= 0; this.ttY	= 0;
	this.dbX	= 0; this.dbY	= 0;
	this.nmX	= 0; this.nmY	= 0;
	this.offX	= 0;
	return this;
}

function getWindowMeashures() {
	if ( isNS6  || isNS4 ) {
		winW	= window.innerWidth;
		winH	= window.innerHeight;
	}
	else {
		winW	= document.body.clientWidth;
		winH	= document.body.clientHeight;
	}
}

function checkWindowProperties() {

	var offX, offY;

	if ( isNS6  ||  isNS4 ) {
		if ( window.innerWidth != winW || window.innerHeight != winH )
			resized();
	}
	else {
		if ( document.body.clientWidth != winW || document.body.clientHeight != winH )
			resized();
	}

	if ( isNS6  ||  isNS4 ) {
		offX	= pageXOffset;
		offY	= pageYOffset;
	}
	else {
		offX	= document.body.scrollLeft;
		offY	= document.body.scrollTop;
	}

	if ( offX != offsetX || offY != offsetY ) {
		offsetX	= offX;
		offsetY	= offY;
		positionPanel();
	}

}

function setCoords( k, x1, y1, x2, y2, x3, y3, x4, y4, o ) {
	k.bpX	= x1; k.bpY	= y1;
	k.ttX	= x2; k.ttY	= y2;
	k.dbX	= x3; k.dbY	= y3;
	k.nbX	= x4; k.nbY	= y4;
	k.offX	= o;
}

function calculateCornerCoords() {
	var dx	= Math.ceil( (winW - 250) / 2 );
	var dy	= Math.ceil( (winH - 150) / 2 );
	var oy	= winH - 160;
	setCoords( corners[0], 5, 5, 5, 130, dx, dy, 58, 53, -60 );
	setCoords( corners[1], 5, oy + 5, 5, oy + 130, dx, dy, 58, oy + 53, -60 );
}

function callNewPatient() {
	if ( scrollInterval != - 1 ) {
		clearInterval( scrollInterval );
		scrollInterval	= -1;
	}
	if ( nextPatHREF == "CLOSE" ){
		location.href	= patients[curPatNo].href;
		return;
	}
	if ( nextPatHREF.substring( 0, 1 ) != "/" ) {
		nextPatHREF	= baseHREF + nextPatHREF;
	}
	location.href = nextPatHREF;
}

function positionPanel() {
	var c		= corners[cornerNo];
	var offX	= curOffX + offsetX;
	var offY	= offsetY;
	place( LP_Buttons, c.bpX + offX, c.bpY + offY );
	place( LP_Tooltip, c.ttX + offX, c.ttY + offY );
	place( LP_Uses[0], curLayX[0] + offX, curLayY[0] + offY );
	place( LP_Uses[1], curLayX[1] + offX, curLayY[1] + offY );
	place( LP_Uses[2], curLayX[2] + offX, curLayY[2] + offY );
	place( LP_Uses[3], curLayX[3] + offX, curLayY[3] + offY );
}

function resetOptionalLayers( tt ) {
	for ( var i = 0; i < LP_Uses.length; i++ ) {
		setVisibility( LP_Uses[i], false );
		openedNr[i]	= -1;
	}
	if ( tt ) {
		setVisibility( LP_Tooltip, false );
	}
	fbTexts[4]	= "Menu oeffnen";
	menuOpened	= false;
}

function getNPatNo( n ) {
	while ( ++n < patients.length && !patients[n] );
	if ( n >= patients.length )
		n = getNPatNo( -1 );
	return n;
}

function getPPatNo( n ) {
	while ( --n >= 0 && !patients[n] );
	if ( n < 0 )
		n = getPPatNo( patients.length );
	return n;
}

function hasChildren( n ) {
	for ( i = 0; i < patients.length; i++ )
	if ( patients[i] && patients[i].dad == n ) {
		 return true;
	}
	return false;
}

function doTooltip( t ) {
	t = "<TABLE BORDER=1 CELLPADDING=2 CELLSPACING=0 BGCOLOR=#FFF0E0><TR><TD>" +
		"<SPAN CLASS='StyleTT'>" + t + "</SPAN></TD></TR></TABLE>";
	writeLayerContent( LP_Tooltip, t );
	place( LP_Tooltip, corners[cornerNo].ttX + offsetX, corners[cornerNo].ttY + offsetY );
	setVisibility( LP_Tooltip, true );
}

function panelIn() {
	if ( curOffX > 0 )
		curOffX -= 10;
	else
		curOffX += 10;
	if ( Math.abs( curOffX ) < 10 || !scrollActive )
		curOffX = 0;
	positionPanel();
	if ( Math.abs( curOffX ) < 10 ) {
		clearInterval( curInterval );
		panelReady	= true;
		curInterval	= -1;
	}
	else if ( curInterval == -1 ) {
		curInterval	= setInterval( "panelIn()", 50 );
	}
}

function panelOut() {

	var off = corners[cornerNo].offX;

	panelReady	= false;

	if ( off > 0 )
		curOffX += 10;
	else
		curOffX -= 10;

	if ( Math.abs( curOffX ) >= Math.abs( off ) || !scrollActive )
		curOffX = off;
	positionPanel();
	if ( Math.abs( curOffX ) >= Math.abs( off ) ) {
		clearInterval( curInterval );
		curInterval	= -1;
		panelReady	= false;
		if ( nextPatHREF != "" )
			callNewPatient();
		else
			configureReturn();
	}
	else if ( curInterval == -1 ) {
		curInterval	= setInterval( "panelOut()", 50 );
	}
}

function showPanel( show ) {
	if ( show )
		setVisibility( LP_Buttons, true );
	else
		setVisibility( LP_Buttons, false );
}

function showLinkInfo( nr ) {
	window.status = "Seite '" + patients[nr].title + "' (" + patients[nr].href + ") aufrufen";
}

function showSMInfo( nr ) {
	window.status = "Unterseiten von '" +patients[nr].title;
}

function jumpNI( nr ) {
	if ( !panelReady )
		return;
	resetOptionalLayers( true );
	curPatNo	= nr;
	nextPatHREF	= patients[nr].href;
	panelOut();
}

function manageSubMenu( dad, level, posX, posY ) {

	var t1, t2, t3, i, cTBG;
	var doExit	= false;
	var count	= 0;
	var x		= posX;
	var y		= posY;
	var toBottom = true;
	var n		= cornerNo;
	var arrowO	= null;
	var arrowC	= null;

	if ( n == 1 )
		toBottom	= false;
	x += niWidth;
	arrowO	= niRightIMG.src
	arrowC	= niLeftIMG.src
	if ( level >= LP_Uses.length ) {
		alert( "Error: Level above maximum depth: " + level );
		return;
	}

	k	= level - 1;

	if ( level > 0  &&  openedNr[level-1] != -1 ) {
		if ( openedNr[level-1] == dad )
			doExit = true;

		if ( isNS6 )
			document.getElementsByName("IMGOpen" + openedNr[level-1])[0].src	= arrowO;
	    else if ( isNS4 )
			LP_Uses[level-1].document.images["IMGOpen" + openedNr[level-1]].src			= arrowO;
		else
			document.images["IMGOpen" + openedNr[level-1]].src					= arrowO;

		for ( i = level; i < LP_Uses.length; i++ ) {
			setVisibility( LP_Uses[i], false );
			openedNr[i-1]	= -1;
		}

		if ( doExit )
			return;
	}

	t1 = "<TABLE BORDER=1 WIDTH=" + niWidth + " CELLPADDING=3 CELLSPACING=0 BGCOLOR=#F8F8F8>";

	if ( toBottom ) {
		count = 1;
	}
	else {
		for ( i = 0; i < patients.length; i++ )
			if ( patients[i] && patients[i].dad == dad )
				count++;
	}

	for ( i = 0; i < patients.length; i++ ) {
		if ( !patients[i] || patients[i].dad != dad )
			continue;
		t2 = "<A CLASS='StyleNI' HREF='javascript:jumpNI(" + i + ")' ONMOUSEOVER='showLinkInfo(" + i +
			 "); return true; ' ONMOUSEOUT='window.status=\"\"; return true;'>" + patients[i].title + "</A>";
		if ( hasChildren( i ) )
			t3 = "<A HREF='javascript:manageSubMenu(" + i + "," + (level + 1) + "," + x + "," + (y - ( count - 1 ) * niHeight ) + ")'" +
				 " ONMOUSEOVER='showSMInfo(" + i + "); return true;' ONMOUSEOUT='window.status=\"\"; return true;'>" +
				 "<IMG SRC='" + arrowO + "' WIDTH=8 HEIGHT=14 VSPACE=1 BORDER=0 NAME=IMGOpen" + i + "></A>";
		else
//			t3 = "<IMG SRC='" + transIMG.src + "' WIDTH=1 HEIGHT=14 VSPACE=1>";
			t3 = "";
		if ( i == curPatNo ) {
			cTBG	= "F0D0B0";
		}
		else {
			if ( patients[i].visited )
				cTBG	= "D0F0D8";
			else
				cTBG	= "F8F8F8";
		}
		if ( t3 != "" ) {
			t1 += "<TR><td WIDTH=" + (niWidth - 26) + " NOWRAP BGCOLOR=#" + cTBG + ">&nbsp;" +
				  "<span class='dynnav'>" + t2 + "</span></td>" +
				  "<TD WIDTH=8 NOWRAP>" + t3 + "</TD></TR>";
		}
		else {
			t1 += "<TR><td colspan=2 WIDTH=" + (niWidth - 26) + " NOWRAP BGCOLOR=#" + cTBG + ">&nbsp;" +
				  "<span class='dynnav'>" + t2 + "</span></td></TR>";
		}
		y	+= niHeight;
	}

	t1 += "</TABLE>";

	writeLayerContent( LP_Uses[level], t1 );

	place( LP_Uses[level], posX + offsetX, posY - niHeight * ( count - 1 ) + offsetY );
	curLayX[level]	= posX;
	curLayY[level]	= posY - niHeight * ( count - 1 );

	setVisibility( LP_Uses[level], true );
	if ( dad != -1 ) {
		openedNr[level-1] = dad;

		if( isNS6 )
			document.getElementsByName( "IMGOpen" + dad )[0].src = arrowC;
		else if ( isNS4 )
			LP_Uses[level-1].document.images["IMGOpen" + dad].src = arrowC;
		else
			document.images["IMGOpen" + dad].src = arrowC;
	}
}

function configureOK() {

	var frm;

	if ( isNS6 )
		frm	= document.getElementsByName( "Config" )[0];
	if ( isNS4 )
		frm	= LP_Config.document.forms["Config"];
	else
		frm	= document.forms["Config"];

	cornerNo		= frm.Corner.selectedIndex;
	scrollActive	= frm.Scroll.checked;
	setVisibility( LP_Config, false );
	nextPatHREF	= "";
	panelOut();

}

function configureReturn() {
	curOffX		= corners[cornerNo].offX;
	panelIn();
}

function configureCancel() {
	setVisibility( LP_Config, false );
	panelReady	= true;
}

function doClose() {
	if ( !panelReady )
		return;
	if ( !confirm( "Navigation schliessen?" ) )
		return;
	setCookie( "cookie_navigation", "0", 600000 );
	resetOptionalLayers( true );
	setNavigationVisibility( false );
	location.reload();
}

function doConfigure() {

	var t;
	var b = "";

	if ( !panelReady )
		return;
	if ( scrollActive )
		b = "CHECKED";
	panelReady	= false;

	resetOptionalLayers( true );

	if ( isNS6 )
		document.getElementsByName( "Config" )[0].Corner.selectedIndex	= cornerNo;
	else if ( isNS4 )
		LP_Config.document.forms["Config"].Corner.selectedIndex					= cornerNo;
	else
		document.forms["Config"].Corner.selectedIndex					= cornerNo;

	place( LP_Config, corners[cornerNo].dbX + offsetX, corners[cornerNo].dbY + offsetY );
	setVisibility( LP_Config, true );
}

function cleanAfterHelp() {
	resetOptionalLayers( true );
	panelReady	= true;
}

function getHREFHelp() {
	return "art_publisher.php?page=NAVHELP&skin=1&character=0;";
}

function helpHere() {
	nextPatHREF = getHREFHelp();
	panelOut();
}

function helpWindow() {
	if ( 1 == 2  &&  winHelp != null ) { // merkt nicht, wenn das Fenster geschlossen wurde
		winHelp.focus();
		cleanAfterHelp();
		return;
	}
	winHelp = window.open( getHREFHelp(), "Help", "width=740,height=480,location=false,toolbar=false,menubar=false" );
	cleanAfterHelp();
}

function doHelp() {
	var t;
	if ( !panelReady )
		return;
	resetOptionalLayers( true );
	panelReady	= false;
	t = "<TABLE BORDER=1 WIDTH=250 CELLPADDING=5 CELLSPACING=0 BGCOLOR=#FFF0E0><TR><TD COLSPAN=2>" +
		"<SPAN CLASS=StyleDialog><CENTER><strong>Hilfe zur Navigation</strong></CENTER><br />Willst du die " +
		"Hilfeseite in einem weiteren Fenster oder direkt hier aufrufen?<br /><br />" +
		"&nbsp; &nbsp; <A HREF='javascript:helpHere()' ONMOUSEOVER='window.status=\"Hilfe im aktuellen Fenster anzeigen\"; " +
		" return true;' ONMOUSEOUT='window.status=\"\"; return true;'>hier direkt</A><br />" +
		"&nbsp; &nbsp; <A HREF='javascript:helpWindow()' ONMOUSEOVER='window.status=\"Hilfe in neuem Fenster anzeigen\"; " +
		" return true;' ONMOUSEOUT='window.status=\"\"; return true;'>neues Fenster</A><br /><br />" +
		"&nbsp; &nbsp; <A HREF='javascript:cleanAfterHelp()' ONMOUSEOVER='window.status=\"Keine Hilfe anzeigen\"; " +
		" return true;' ONMOUSEOUT='window.status=\"\"; return true;'>abbrechen</A><br />" +
		"</SPAN></TD></TR></TABLE>";
	writeLayerContent( LP_Uses[0], t );
	place( LP_Uses[0], corners[cornerNo].dbX + offsetX, corners[cornerNo].dbY + offsetY );
	setVisibility( LP_Uses[0], true );
}

function doNavigation() {
	if ( !panelReady )
		return;
	if ( menuOpened ) {
		resetOptionalLayers( false );
		fbTexts[4]	= "Menu oeffnen";
	}
	else {
		manageSubMenu( -1, 0, corners[cornerNo].nbX, corners[cornerNo].nbY );
		menuOpened	= true;
		fbTexts[4]	= "Menu schliessen";
	}
	doFBOn( 4 );
}

function doFBOn( nr ) {
	var	t;
	if ( !panelReady )
		return;
	t = fbTexts[nr];
	if ( nr == 5 )
		t += " ('" + patients[getPPatNo(curPatNo)].title + "')";
	if ( nr == 6 )
		t += " ('" + patients[getNPatNo(curPatNo)].title + "')";
	if ( nr == 7 )									// home
		t += " ('" + patients[0].title + "')";
	if ( nr == 8 )									// reload
		t += " ('" + patients[curPatNo].title + "')";
	doTooltip( t );
	window.status = t;
}

function doFBOff( nr ) {
	setVisibility( LP_Tooltip, false );
	window.status	= "";
}

function doGoHome() {
	if ( !panelReady )
		return;
	resetOptionalLayers( true );
	curPatNo	= 0;
	nextPatHREF	= patients[curPatNo].href;
	panelOut();
}

function doMoveLeft() {
	if ( !panelReady )
		return;
	resetOptionalLayers( true );
	curPatNo	= getPPatNo( curPatNo );
	nextPatHREF	= patients[curPatNo].href;
	panelOut();
}

function doMoveRight() {
	if ( !panelReady )
		return;
	resetOptionalLayers( true );
	curPatNo	= getNPatNo( curPatNo );
	nextPatHREF	= patients[curPatNo].href;
	panelOut();
}

function doReload() {
	if ( !panelReady )
		return;
	resetOptionalLayers( true );
	nextPatHREF	= patients[curPatNo].href;
	panelOut();
}

// Wird aufgerufen, wenn die Seite geladen wurde und die Navigation aktiv ist.
function patientChanged() {

	getWindowMeashures();
	calculateCornerCoords();

	for ( i = 0; i < LP_Uses.length; i++ ) {
		openedNr[i]	= -1;
		curLayX[i]	= 0;
		curLayY[i]	= 0;
	}
	startPanel();
}

function getPatNoByHREF( h ) {

	var i;

	// Wir muessen aus der url (pfad + search) den pfad, bis auf den Dateinamen, entfernen.

	pos		= h.indexOf( '?' );
	if ( pos != -1 ) {
		pos		= h.lastIndexOf( '/', pos );
		if ( pos != -1 ) {
			h	= h.substring( pos + 1 );
		}
	}

	for ( i = 0; i < patients.length; i++ ) {
		if ( patients[i] ) {
			if ( h == patients[i].href ) {
				return i;
				break;
			}
		}
	}

	return -1;

}

function startPanel() {

	var nr;

	nr		= getPatNoByHREF( location.pathname + location.search );

	if ( nr != - 1 ) {
		curPatNo				= nr;
		patients[nr].visited	= true;
	}
	else {
		curPatNo				= 0;
	}

	panelReady		= false;
	curOffX			= corners[cornerNo].offX;
	offsetX			= 0;
	offsetY			= 0;
	showPanel( true );
	scrollInterval	= setInterval( "checkWindowProperties()", 2000 );
	panelIn();
}


function cleanUp() {
	if ( !isNS6  &&  !isNS4  &&  !isIE4 )
		return;

	if ( !navActive )
		return;

	resetOptionalLayers( true );
	showPanel( false );
	if ( curInterval != -1 )
		clearInterval( curInterval );
	if ( scrollInterval != -1 )
		clearInterval( scrollInterval );
}

function resized() {
	getWindowMeashures();
	calculateCornerCoords();
	resetOptionalLayers( true );
	panelReady	= false;
	showPanel( false );
	curOffX		= 0;
	positionPanel();
	showPanel( true );
	panelReady	= true;
}


function getNavigationIcon() {
	return "nv.gif";
}


function doAction( num ) {
	if ( num == 0 )
		doClose();
	else if ( num == 1 )
		doHelp();
	else if ( num == 3 )
		doConfigure();
	else if ( num == 4 )
		doNavigation();
	else if ( num == 5 )
		doMoveLeft();
	else if ( num == 6 )
		doMoveRight();
	else if ( num == 7 )
		doGoHome();
	else if ( num == 8 )
		doReload();
}

// Schreibt die div-tags fuer die Layers. Wird von der Seite selbst aus aufgerufen.
function writeNavigationLayers() {

	if ( !isNS6  &&  !isNS4  &&  !isIE4 )
		return;

	// Manche Browser, ns6 auf jeden fall, fuehren machmal nach dem Verlassen
	//  der Seite noch code aus (z.b. das ONMOUSEOUT-event des links). Das geht
	//  dann ins leere, weil der Code mitunter vom Interpreter nicht mehr ge-
	//  funden wird (so zumindest meine Deutung). Deswegen wird im Fall von ns6
	//  bei der Aktion im onMouseOut-Event eine potentielle Exception abgefangen.
	// Nur Browser, die document.getElementById kennen, koennen try->catch. Das
	//  dumme ist halt, dass ns4 den Code wohl auch dann parst, wenn er ihn nicht
	//  ausfuehren muss. Und der beschwert sich dann, weil try nicht ok ist.
	// Deswegen brauchen wir zwei Versionen.

	t = "<DIV ID='LayerButtons'>" +
		"<IMG SRC='" + IMGPanel.src + "' WIDTH=51 HEIGHT=120 BORDER=0 NAME=IMGWButtons USEMAP=#MapButtons><MAP NAME=MapButtons>";

	if ( isNS6 ) {
		t	+= "<AREA SHAPE=RECT COORDS='3,3,17,17' HREF='javascript:doAction( 0 );' ONMOUSEOVER='doFBOn(0); return true;' " +
				"ONMOUSEOUT='if ( document.getElementById ) { try { doFBOff(0); } catch( fuckNS ) {} }	else doFBOff(0); return true;'>" +
				"<AREA SHAPE=RECT COORDS='33,3,47,17' HREF='javascript:doAction( 1 );' ONMOUSEOVER='doFBOn(1); return true;' " +
				"ONMOUSEOUT='if ( document.getElementById ) { try { doFBOff(1); } catch( fuckNS ) {} }	else doFBOff(1); return true;'>" +
				"<AREA SHAPE=RECT COORDS='3,27,23,44' HREF='mailto:webmaster2006@artificina.de' ONMOUSEOVER='doFBOn(2); return true;' " +
				"ONMOUSEOUT='if ( document.getElementById ) { try { doFBOff(2); } catch( fuckNS ) {} }	else doFBOff(2); return true;'>" +
				"<AREA SHAPE=RECT COORDS='28,27,47,44' HREF='javascript:doAction( 3 );' ONMOUSEOVER='doFBOn(3); return true;' " +
				"ONMOUSEOUT='if ( document.getElementById ) { try { doFBOff(3); } catch( fuckNS ) {} }	else doFBOff(3); return true;'>" +
				"<AREA SHAPE=RECT COORDS='3,51,47,68' HREF='javascript:doAction( 4 );' ONMOUSEOVER='doFBOn(4); return true;' " +
				"ONMOUSEOUT='if ( document.getElementById ) { try { doFBOff(4); } catch( fuckNS ) {} }	else doFBOff(4); return true;'>" +
				"<AREA SHAPE=RECT COORDS='3,75,22,92' HREF='javascript:doAction( 5 );' ONMOUSEOVER='doFBOn(5); return true;' " +
				"ONMOUSEOUT='if ( document.getElementById ) { try { doFBOff(5); } catch( fuckNS ) {} }	else doFBOff(5); return true;'>" +
				"<AREA SHAPE=RECT COORDS='28,75,47,92' HREF='javascript:doAction( 6 );' ONMOUSEOVER='doFBOn(6); return true;' " +
				"ONMOUSEOUT='if ( document.getElementById ) { try { doFBOff(6); } catch( fuckNS ) {} }	else doFBOff(6); return true;'>" +
				"<AREA SHAPE=RECT COORDS='3,99,22,116' HREF='javascript:doAction( 7 );' ONMOUSEOVER='doFBOn(7); return true;' " +
				"ONMOUSEOUT='if ( document.getElementById ) { try { doFBOff(7); } catch( fuckNS ) {} }	else doFBOff(7); return true;'>" +
				"<AREA SHAPE=RECT COORDS='28,99,47,116' HREF='javascript:doAction( 8 );' ONMOUSEOVER='doFBOn(8); return true;' " +
				"ONMOUSEOUT='if ( document.getElementById ) { try { doFBOff(8); } catch( fuckNS ) {} }	else doFBOff(8); return true;'>";
	}
	else {
		t	+= "<AREA SHAPE=RECT COORDS='3,3,17,17' HREF='javascript:doAction( 0 );' ONMOUSEOVER='doFBOn(0); return true;' " +
				"ONMOUSEOUT='doFBOff(0); return true;'>" +
				"<AREA SHAPE=RECT COORDS='33,3,47,17' HREF='javascript:doAction( 1 );' ONMOUSEOVER='doFBOn(1); return true;' " +
				"ONMOUSEOUT='doFBOff(1); return true;'>" +
				"<AREA SHAPE=RECT COORDS='3,27,23,44' HREF='mailto:webmaster2006@artificina.de' ONMOUSEOVER='doFBOn(2); return true;' " +
				"ONMOUSEOUT='doFBOff(2); return true;'>" +
				"<AREA SHAPE=RECT COORDS='28,27,47,44' HREF='javascript:doAction( 3 );' ONMOUSEOVER='doFBOn(3); return true;' " +
				"ONMOUSEOUT='doFBOff(3); return true;'>" +
				"<AREA SHAPE=RECT COORDS='3,51,47,68' HREF='javascript:doAction( 4 );' ONMOUSEOVER='doFBOn(4); return true;' " +
				"ONMOUSEOUT='doFBOff(4); return true;'>" +
				"<AREA SHAPE=RECT COORDS='3,75,22,92' HREF='javascript:doAction( 5 );' ONMOUSEOVER='doFBOn(5); return true;' " +
				"ONMOUSEOUT='doFBOff(5); return true;'>" +
				"<AREA SHAPE=RECT COORDS='28,75,47,92' HREF='javascript:doAction( 6 );' ONMOUSEOVER='doFBOn(6); return true;' " +
				"ONMOUSEOUT='doFBOff(6); return true;'>" +
				"<AREA SHAPE=RECT COORDS='3,99,22,116' HREF='javascript:doAction( 7 );' ONMOUSEOVER='doFBOn(7); return true;' " +
				"ONMOUSEOUT='doFBOff(7); return true;'>" +
				"<AREA SHAPE=RECT COORDS='28,99,47,116' HREF='javascript:doAction( 8 );' ONMOUSEOVER='doFBOn(8); return true;' " +
				"ONMOUSEOUT='doFBOff(8); return true;'>";
	}
	t	+= "</MAP></DIV>" +
			"<DIV ID='LayerTooltip'></DIV>" +
			"<DIV ID='LayerUse1'></DIV>" +
			"<DIV ID='LayerUse2'></DIV>" +
			"<DIV ID='LayerUse3'></DIV>" +
			"<DIV ID='LayerUse4'></DIV>" +
			"<DIV ID='LayerConfig'>" +
			"<FORM NAME=Config><TABLE BORDER=1 WIDTH=250 CELLPADDING=3 CELLSPACING=0 BGCOLOR=#FFF0E0><TR>" +
			"<TH COLSPAN=2 BGCOLOR=#F0E0D0><SPAN CLASS=StyleDialog>Navigation Konfigurieren</SPAN></TH>" +
			"</TR><TR>" +
			"<TD COLSPAN=2><SPAN CLASS=StyleDialog>&nbsp; Position: <SELECT NAME=Corner><OPTION>links oben" +
			"<OPTION>links unten</SELECT>&nbsp;</SPAN></TD>" +
			"</TR><TR>" +
			"<TD COLSPAN=2><SPAN CLASS=StyleDialog>&nbsp; Scrolling aktiv: <INPUT TYPE=CHECKBOX NAME=Scroll " +
			"VALUE=1 CHECKED></SPAN></TD>" +
			"</TR><TR>" +
			"<TD ALIGN=LEFT WIDTH=50%><SPAN CLASS=StyleDialog>&nbsp; <INPUT TYPE=BUTTON " +
			"VALUE='   OK   ' ONCLICK='configureOK()'></SPAN></TD>" +
			"<TD ALIGN=RIGHT WIDTH=50%><SPAN CLASS=StyleDialog>&nbsp; <INPUT TYPE=BUTTON VALUE='Cancel' " +
			"ONCLICK='configureCancel()'> &nbsp;</SPAN></TD>" +
			"</TR></TABLE></FORM></DIV>" +
			"<DIV ID='LayerNVIcon'>" +
			"<A HREF='javascript:startNavigation();' TARGET=_top ONMOUSEOVER='sS(\"Navigation aufrufen\");" +
			" return true;' ONMOUSEOUT='window.status=\"\"; return true'><IMG SRC='" + getNavigationIcon() + "'" +
			" WIDTH=26 HEIGHT=26 BORDER=0></A></DIV>";

	document.writeln( t );

}

// Wird beim Click auf das NV-Icon aufgerufen.
function startNavigation() {
	setCookie( "cookie_navigation", "1", 600000 );
	place( LP_Buttons, -100, -100 );
	setNavigationVisibility( true );
	patientChanged();
}


function getLayerReferences() {
	if ( isNS6 ) {
		with ( document ) {
			LP_Buttons	= getElementById( "LayerButtons" );
			LP_NVIcon	= getElementById( "LayerNVIcon" );
			LP_Tooltip	= getElementById( "LayerTooltip" );
			LP_Uses[0]	= getElementById( "LayerUse1" );
			LP_Uses[1]	= getElementById( "LayerUse2" );
			LP_Uses[2]	= getElementById( "LayerUse3" );
			LP_Uses[3]	= getElementById( "LayerUse4" );
			LP_Config	= getElementById( "LayerConfig" );
		}
	}
	else if ( isNS4 ) {
		with ( document ) {
			LP_Buttons	= LayerButtons;
			LP_NVIcon	= LayerNVIcon;
			LP_Tooltip	= LayerTooltip;
			LP_Uses[0]	= LayerUse1;
			LP_Uses[1]	= LayerUse2;
			LP_Uses[2]	= LayerUse3;
			LP_Uses[3]	= LayerUse4;
			LP_Config	= LayerConfig;
		}
	}
	else {
		LP_Buttons		= LayerButtons;
		LP_NVIcon		= LayerNVIcon;
		LP_Tooltip		= LayerTooltip;
		LP_Uses[0]		= LayerUse1;
		LP_Uses[1]		= LayerUse2;
		LP_Uses[2]		= LayerUse3;
		LP_Uses[3]		= LayerUse4;
		LP_Config		= LayerConfig;
	}
}

// Wird beim Onload-Event des Seite aufgerufen.	Egal, welcher Browser und egal
//  ob Navigation aktiv oder nicht.
function initNavigation() {

	var t, v;

	// Ist das navigation-Cookie gesetzt obwohl der Browser es eigentlich gar nicht
	//  kann (das kann passieren, wenn jemand bei Opera die Einstellung, als welcher
	//  Browser er sich verhalten solle aendert), dann aendern wir den Wert des Cookies

	if ( !isNS6  &&  !isNS4  &&  !isIE4 ) {
		if ( getCookie( "cookie_navigation" ) == 1 ) {
			setCookie( "cookie_navigation", "0", 600000 );
		}
		return;
	}

	if ( isNS6 || isNS4 ) {
		winW	= window.innerWidth;
		winH	= window.innerHeight;
	}
	else {
		winW	= document.body.clientWidth;
		winH	= document.body.clientHeight;
	}

	v		= getCookie( "cookie_navigation" );
	if ( v == null  ||  v != "1" )
		navActive	= false;
	else
		navActive	= true;

	getLayerReferences();

	if ( navActive ) {
		setNavigationVisibility( true );
		patientChanged();
	}
	else {
		place( LP_NVIcon, 20, 5 );
		setNavigationVisibility( false );
	}

}

function init() {
	initNavigation();
}


isNS6	= false;
isNS4	= false;
isIE4	= false;

var s1	= navigator.appName.substring( 0, 2 )
var s2	= navigator.appVersion.substring( 0, 1 );

// Hinweis: Wenn Opera sich als ein anderer Browser, z.B. IE ausgibt, ist das nicht
//          abzufangen. Er scheint dann aber auch ueber die entsprechenden Faehigkeiten
//          zu verfuegen (z.b. document.all existiert nur, wenn Opera sich als IE
//          ausgibt).

if ( s1 == "Ne" && s2 == "4" ) isNS4 = true;
if ( s1 == "Ne" && s2 >= "5" ) isNS6 = true;
if ( s1 == "Mi" && s2 >= "4" ) isIE4 = true;

navActive		= false;

panelReady		= true;
scrollActive	= true;
LP_Buttons		= null;
LP_NVIcon		= null;
LP_Tooltip		= null;
LP_Uses			= new Array();
LP_Config		= null;
openedNr		= new Array();
menuOpened		= false;
curLayX			= new Array();
curLayY			= new Array();

nextPatHREF		= "";

myHREF			= location.href;
baseHREF		= "";

cornerNo		= 0;
curPatNo		= -1;
curInterval		= -1;
scrollInterval	= -1;
offsetX			= 0;
offsetY			= 0;
curOffX			= 0;
niWidth			= 180;
niHeight		= 24;
winW			= 0;
winH			= 0;
winHelp			= null;
corners			= new Array();
for ( i = 0; i < 2; i++ )
	corners[i]	= new oCoords();

fbTexts			= new Array();
fbTexts[0]		= "Navigation schliessen";
fbTexts[1]		= "Hilfeseite aufrufen";
fbTexts[2]		= "Dem Autor schreiben (-:";
fbTexts[3]		= "Navigation konfigurieren";
fbTexts[4]		= "Menu oeffnen";
fbTexts[5]		= "Zur vorherigen Seite";
fbTexts[6]		= "Zur nächsten Seite";
fbTexts[7]		= "Zur Startseite";
fbTexts[8]		= "Aktuelle Seite erneut laden";
transIMG		= new Image();
transIMG.src	= baseHREF + "trans.gif";
niRightIMG		= new Image();
niRightIMG.src	= baseHREF + "bt_niright.gif";
niLeftIMG		= new Image();
niLeftIMG.src	= baseHREF + "bt_nileft.gif";

patients		= new Array();

IMGPanel		= new Image();
IMGPanel.src	= baseHREF + "panel.gif";



