// Browsersniffer
bN=navigator.appName;																// Browsertyp lesen
bV=parseInt(navigator.appVersion);													// Browserversion lesen
isNN=(bN.indexOf('Netscape')>-1)?true:false;										// Netscape?
isEX=(bN.indexOf('Explorer')>-1)?true:false;										// Internet Explorer?
isOP=window.opera?true:false;														// Opera?
isIE=((bV>=4)&&(isEX)&&(document.all))?true:false;									// Internet Explorer 4.x?
isN4=((bV==4)&&(isNN)&&(document.layers))?true:false;								// Netscape 4.x?
isMO=((bV>=5)&&(isNN)&&(!document.all)&&(document.getElementById))?true:false;		// Mozilla?

// Einstellungen
kox		= 0;						// Offsetflag
koy		= 0;						// Offsetflag
xoff	= 0;						// Offsetflag
yoff	= 0;						// Offsetflag
xxo		= 0;						// Offsetflag
yyo		= 0;						// Offsetflag
ox		= 0;						// Offsetflag
oy		= 0;						// Offsetflag
x		= 0;						// MausX
y		= 0;						// MausY
sw		= 0;						// Fragezeichenflag
fs		= 1;						// Fragezeichen Statusflag
nm		= new Image();				// Dummybild für Kartenswitch
//klick	= 0;						// noch nicht geklickt
zahl	= 0;
kid		= 0;
sl		= 0;
st		= 0;
xold	= 0;
yold	= 0;

if(klick=false){klick=0;}

// browserspezifische Korrektur
if(isIE){xoff=2;yoff=2;ox=2;oy=2;xxo=0;yyo=0;sox=4;soy=-5;}
if(isMO){xoff=0;yoff=0;ox=2;oy=2;sox=4;soy=4;}
if(isOP){xoff=3;yoff=3;xxo=-3;yyo=-3;ox=2;oy=2;sox=4;soy=4;}
if(isIE){kox=0;koy=0;}
if(isMO){kox=0;koy=-3;}
if(isOP){kox=-1;koy=1;}

// Elemente deklarieren
function declare()
{	//Elemente benennen
	k0=getE("karte0");				// Loading Layer
	k1=getE("karte1");				// Anzeigelayer
	k2=getE("karte2");				// die Karte als Bild
	k3=getE("karte3");				// die Mystery-Fragezeichen
	ma=getE("content");				// Aussenbereich Seite
	bx=getE("breit");				// Breitenindikator Karte
	mm=getE("minimap");				// Vorschaukarte
	aa=getE("ausschnitt");			// Ausschnittsanzeige
	de=getE("details");				// Objektdetails
	fb=getE("width");

	// Events festlegen

	k1.onmouseup	= mausaus;		// Weltkarte:	bei losgelassener Maustaste
	k1.onclick		= klicked;		// Weltkarte:	bei einfachem Mausklick

	mm.onmouseup	= mausaus;		// Minimap:		bei losgelassener Maustaste
	mm.onmousedown	= miniklick;	// Minimap: 	bei gedrückter Maustaste

	aa.onmouseup	= mausaus;		// Ausschnitt:	bei losgelassener Maustaste
	aa.onmousedown	= miniklick;	// Ausschnitt: 	bei gedrückter Maustaste

	window.onresize	= initMap;		// bei Änderung der Fenstergrösse neu initialisieren
	}

function miniklick()
{	klickold=klick;
	//if(isIE){
		klick=1;
		//}
	//testx=absLeft(mm);
	//testy=absTop(mm);
	//alert(testx+"|"+testy);
	dof();
	minijump();
	}

function absLeft(el)
{	ol=el.offsetLeft+2;
	if(isIE){ol=ol+1;}

	wert=(el.offsetParent)?el.offsetLeft+absLeft(el.offsetParent):ol;

	return wert;
}
function absTop(el)	{return (el.offsetParent)?el.offsetTop+absTop(el.offsetParent):el.offsetTop+2;}

// Zielposition aus Minimapklick
function minijump()
{	// Position der Minimap
	posx=absLeft(mm)+xoff;
	posy=absTop(mm)+yoff;

	document.status=posx+"|"+posy;

	// Umrechnen auf Karte
	zx=Math.floor((x-posx)*mx);
	zy=Math.floor((y-posy)*my);

	// springe zur neuen Position
	sp(k2,zx,zy);
	mystjump();
	pa();

	// IE: drag and drop
	if(klick){setTimeout("minijump()",1);}
	}

function mystjump()
{	k2l=(parseInt(k2.style.left));
	k2t=(parseInt(k2.style.top));
	pl(k3,k2l);
	pt(k3,k2t-k2h-3);
	}

// Dimensionen berechnen
function getdim()
{	k1w=bx.offsetWidth-sox;
	//alert(k1w);
	k1h=Math.floor(k1w/vh);
	k2w=parseInt(k2.width);
	k2h=parseInt(k2.height);
	// Maximale Breite und Höhe der Kartenanzeige
	kmw=(k2w-bx.offsetWidth)*-1;
	kmh=(k2.height-parseInt(k1.style.height))*-1;
	}

function map(flag)
{	if(flag==2)
			{	if(!check)
						{	check=confirm(warn);
							if(check)
									{	nm.src="img/wom/worldmap2.jpg";   }
							else	{	nm.src="img/wom/worldmap1.png";   }
							}
				else	{	nm.src="img/wom/worldmap2.jpg";  }
				}
	else	{	nm.src="img/wom/worldmap1.png";   }
	k2.src=nm.src;
	if(flag>0){mp=flag};
	}

function mys()
{	mst="hidden";if(sw){mst="visible";sw=0;}else{sw=1;}
	k3.style.visibility=mst;
	}

// Initialisierung
function initMap()
{	// Elemente deklarieren und Dimensionen berechnen
	declare();

	//if(parseInt(k1.style.width)<427){fb.style.width="813px";}

	// Offset des Hauptrahmens
	m1=ma.offsetLeft;
	m2=ma.offsetTop;
	//alert(m1+"|"+m2);

	// Dimensionen berechnen
	getdim();

	//alert("k1: "+k1.style.width);

	// Karte verstecken
	k1.style.visibility="hidden";

	// Multiplikator berechnen
	mx=k2w/mmw;
	my=k2h/mmh;

	// Karte positionieren, zeigen und Loading Layer switchen
	pw(k1,k1w);ph(k1,k1h);
	mm.style.visibility="visible";
	aa.style.visibility="visible";
	k1.style.visibility="visible";
	k0.className="loadingoff";
	k0.style.height=k1h+soy+10+"px";

	// checken, ob Position innerhalb der Anzeigegrenzen
	k2l=(parseInt(k2.style.left)-(k1w/2))*-1;
	k2t=(parseInt(k2.style.top)-(k1h/2))*-1;
	sp(k2,k2l,k2t);
	mystjump();

	// übergebene Variablen auswerten
	urltext=window.location.search;
	kid=urlvar(urltext,"kid=","&");
	// und target id umrechnen
	kid=mowt[kid];

	// Ausschnitt berechnen und setzen
	pa();

	// falls Ziel angegeben dieses zentrieren und in Auswahlliste markieren
	if(kid)
	{	mowpos(kid);
		selmow(kid);
		}
	}

function selmow(id)
{	for(i=0;i<getE("woms").sel.length;i++)
	{	if(getE("woms").sel.options[i].value==id){getE("woms").sel.options[i].selected=true;}
		}
	}

function urlvar(bereich,was,trenn)
{	ret=null;
	spos=bereich.indexOf(was);
	if(spos>0)
	{	teil=bereich.substring(spos+was.length,999);
		dpos=teil.indexOf(trenn);
		ret=teil;
		if(dpos>0){ret=teil.substring(0,dpos);}
		}
	return ret
	}

// Element holen, verkuerzte Schreibweise
function getE(e)
{	return document.getElementById(e);
	}

// Maustaste losgelassen
function mausaus(e)
{	klick = 0;
	document.onmousemove=null;
	}

// bei Mausklick Karte auf Objekt zentrieren
function klicked()
{	dof();

	xx=absLeft(k1);
	yy=absTop(k1);

	xxx=x-xx;
	yyy=y-yy;
	x1=parseInt(k2.style.left);
	y1=parseInt(k2.style.top);

	// neue Position
	zx=(x1-xxx)*-1;
	zy=(y1-yyy)*-1;

	// springe zur neuen Position
	sp(k2,zx,zy);
	mystjump();
	pa();
	}

// Mauskoordinaten abfragen
function maus1an(event)
{	if(document.all){mausIE(event);}else{mausMO(event);}

	xx=absLeft(k1);
	yy=absTop(k1);
	px=Math.abs(parseInt(k2.style.left));
	py=Math.abs(parseInt(k2.style.top));

	// überwache Änderungen an der Dokumentgrösse
	kcw=bx.offsetWidth;
	if(kcw!=(k1w+sox)){initMap();}
	}

// Mauskoordinaten abfragen
function maus2an(event)
{	if(document.all){mausIE(event);}else{mausMO(event);}
	xx=absLeft(mm);
	yy=absTop(mm);
	//status=x+" ("+xold+") | "+y+" ("+yold+") |"+st+"|"+sl;
	//k2.style.backgroundRepeat="no-repeat";
	//status=":"+k2.style.border;
	//window.status=klick;
	}


function mausIE(event)
{	x=event.clientX;
	y=event.clientY;
	xold=x;
	yold=y;

	if(isMO)
		{	sl=document.body.scrollLeft;
			st=document.body.scrollTop;
			}
	else{	sl=document.documentElement.scrollLeft;
			st=document.documentElement.scrollTop;
		}



	//if(document.body.scrollLeft){sl=document.body.scrollLeft;}
	//if(document.body.scrollTop){st=document.body.scrollTop;}
	//if(document.documentElement.scrollLeft){sl=document.documentElement.scrollLeft;}
	//if(document.documentElement.scrollTop){st=document.documentElement.scrollTop;}

	//if(!sl){sl=1;}
	//if(!st){st=1;}

	x+=sl;
	y+=st;

	window.event.returnValue = false;
	return x,y;
	}

function mausMO(event)
{	x=event.pageX;
	y=event.pageY;
	event.preventDefault();
	return x,y;
	}

// Redirector bei Klick auf Objekt
function show(id)
{	z1=parseInt(k1.style.width);
	z2=parseInt(k1.style.height);
	ziel="index.php?g=glossary&q="+id+"&m=1";
	location.href=ziel;
	}

// Details zu Objekt anzeigen
function don(id)
{	de.style.visibility="hidden";
	fx=mowx[id];
	fy=mowy[id];
	kix=Math.abs(parseInt(k2.style.left));
	kiy=Math.abs(parseInt(k2.style.top));
	zix=fx-kix;
	ziy=fy-kiy;
	px=absLeft(k1)+zix-kox-103;
	py=absTop(k1)+ziy-koy+8;
	pl(de,px);
	pt(de,py);
	doi(id,1);
	selmow(id);
	de.style.visibility="visible";
	}

function dof()
{	de.style.visibility="hidden";
	de.innerHTML="";
	pl(de,0);
	pt(de,0);
	}

function doi(id,bi)
{	bild='';if(bi){bild='<div class="darrow"></div>';}
	de.innerHTML=bild+'<div class="dcontainer"><div class="dtitel">'+mowz[id]+'</div><div class="dinhalt fl'+mowl1[id]+'">'+mowl2[id]+', '+mowc[id]+'</div></div>';
	}


function mowpos(id)
{	zahl = getE("woms").sel.value;
	if(id){zahl=id;}
	if(zahl)
	{	jx = mowx[zahl];
		jy = mowy[zahl];
		sp(k2,jx,jy);
		mystjump();
		pa();
		de.style.visibility="hidden";
		doi(zahl,1);
		lox=0;if((jx+(k1w/2))>k2w){lox=jx+(k1w/2)-k2w;}
		loy=0;if((jy-(k1h/2))<0){loy=((k1h/2)*-1)+jy;}
		px=absLeft(k1)-kox+(k1w/2)-101+lox;
		py=absTop(k1)-koy+(k1h/2)+8+loy;
		pl(de,px-2);
		pt(de,py);
		de.style.visibility="visible";
		}
	else{dof();}
	}

// Position verschieben
function sp(z,x,y)
{	zx=(x-(k1w/2))*-1;
	zy=(y-(k1h/2))*-1;
	if(zx>0){zx=0;}
	if(zx<(k2w*-1)+k1w){zx=(k2w*-1)+k1w;}
	if(zy>0){zy=0;}
	if(zy<(k2h*-1)+k1h){zy=(k2h*-1)+k1h;}
	pl(z,Math.floor(zx));
	pt(z,Math.floor(zy));
	}

function pl(el,z)	{el.style.left=z+"px";}
function pt(el,z)	{el.style.top=z+"px";}
function pli(el,z)	{el.left=z+"px";}
function pti(el,z)	{el.top=z+"px";}

function pw(el,z)
{
		el.style.width=z+"px";
}


function ph(el,z)
{
		el.style.height=z+"px";
}

function pa()
{	kx=Math.floor(parseInt(k2.style.left)/mx)*-1;
	ky=Math.floor(parseInt(k2.style.top)/my)*-1;
	mw=Math.floor(k1w/mx)-ox;
	mh=Math.floor(k1h/my)-oy;
	pw(aa,mw);
	ph(aa,mh);
	hx=absLeft(mm)-xxo+kx;
	hy=absTop(mm)-yyo+ky;
	pl(aa,hx);
	pt(aa,hy);
	//status=absLeft(mm)+"x|"+absTop(mm)+"y";
	}
