var moveConst = new Number(3);

/* Variablen koordinatentransformation */
var posR, posH, rasX, rasY, br, l, b2, l2;
var rho  = 180.0/Math.PI;
var GRAD = 5;
/* Variablen koordinatentransformation */

function InitLoad()
{
   document.getElementById("LoadingLyr").style.visibility = "hidden";
}

function allLayerOff()
{
   document.vars.oeinr.value = 0;
   document.vars.notdienst.value = 0;
   document.vars.verkehr.value = 0;
   document.vars.kult.value = 0;
//   document.vars.info.value = 0;
   document.vars.sehens.value = 0;
//   document.vars.bus.value = 0;   
   document.vars.mode.value = 1;
   changeMap();
}

function prevClick(a_event, a_element)
{
   // Relative Position der Maus auf einem Objekt erhalten
   pos_mouse_rel_array = get_rel_mouse_pos(a_event, a_element, 0);
   
   xref = 18254/160;
   yref = 12910/113;
   
   document.vars.hmin.value = 3555390.1 + ((xref * pos_mouse_rel_array[0])-(document.vars.dhorz.value/1.5));
   document.vars.vmin.value = 5705375.6 + ((yref * (113 - pos_mouse_rel_array[1]))-(document.vars.dvert.value/2.25));

   if (document.vars.oper.value == 2) stopQuery();
   changeMap();
}

function FormQuery(str, hnr)
{
   document.vars.abstr.value = str;
   document.vars.abhnr.value = hnr;
   if (document.vars.abstr.value != '') setQuery();
   else alert("Keine Daten zur Strassensuche eingegeben.");
}

function setQuery()
{
   if ((document.vars.mysqlRes.value == 0) || (document.vars.abstr.value != document.vars.abstrres.value) || (document.vars.abhnr.value != document.vars.abhnrres.value))
   {
      var s = "./querywin.php4?";
      document.vars.abstr.value = replaceumlaute(document.vars.abstr.value);
      s += "str=" + document.vars.abstr.value;
      s += "&hnr=" + document.suche.hausnr.value;
      s += "&alph=0";
      querywin = open(s, "Suchanfrage_querywin", "width=350, height=230, dependent, scrollbars");
      querywin.focus();
   }
   else
   {
      if (document.vars.oper.value == 1)
      {
         document.vars.oper.value = 2;
         changeMap();
      }
   }
}

function stopSearch()
{
   document.vars.oper.value = 1;
   if (document.vars.searchEbene.value == "oeinr") document.vars.mode.value = 2;
   if (document.vars.searchEbene.value == "notdienst") document.vars.mode.value = 4;
   if (document.vars.searchEbene.value == "verkehr") document.vars.mode.value = 3;
//   if (document.vars.searchEbene.value == "info") document.vars.mode.value = 4;
   if (document.vars.searchEbene.value == "kult") document.vars.mode.value = 5;
   if (document.vars.searchEbene.value == "sehens") document.vars.mode.value = 6;
   changeMap();
}
   
function stopQuery()
{
   document.vars.oper.value = 1;
}

function setAlphQuery(Wert)
{
   var s = "./querywin.php4?";
   s += "str=" + Wert;
   s += "&alph=1";
   querywin = open(s, "Suchanfrage_querywin", "width=350, height=230, dependent");
   querywin.focus();
}

function changeMap()
{
   var s = "./plan.php3?";
   s += "oper=" + document.vars.oper.value;
   s += "&mapS=" + document.vars.mapS.value;
   s += "&zoomC=" + document.vars.zoomC.value;
   s += "&mode=" + document.vars.mode.value;
   s += "&lubi_ganz_goe=" + document.vars.lubi_ganz_goe.value;
//   s += "&lubi_innenstadt=" + document.vars.lubi_ganz_goe.value;
   s += "&karte_0=" + document.vars.karte_0.value;
   s += "&karte_0g=" + document.vars.karte_1.value;
   s += "&karte_1=" + document.vars.karte_1.value;
   s += "&oeinr=" + document.vars.oeinr.value;
   s += "&notdienst=" + document.vars.notdienst.value;
   s += "&verkehr=" + document.vars.verkehr.value;
   s += "&kult=" + document.vars.kult.value;
//   s += "&info=" + document.vars.info.value;
   s += "&sehens=" + document.vars.sehens.value;
//   s += "&bus=" + document.vars.bus.value;
   s += "&sna=" + document.vars.sna.value;
   s += "&snb=" + document.vars.sna.value;
   s += "&sort=" + document.vars.sort.value;
   s += "&dvert=" + document.vars.dvert.value;
   s += "&dhorz=" + document.vars.dhorz.value;
   s += "&vmin=" + document.vars.vmin.value;
   s += "&hmin=" + document.vars.hmin.value;
   s += "&xref=" + document.vars.xref.value;
   s += "&yref=" + document.vars.yref.value;
   s += "&search=" + document.vars.search.value;
   s += "&searchNum=" + document.vars.searchNum.value;
   s += "&searchEbene=" + document.vars.searchEbene.value;
   var d = new Date();
   var t = d.getTime();
   s += "&Curd=" + Math.round(t / 100);
   document.vars.abstr.value = replaceumlaute(document.vars.abstr.value);
   s += "&abstr=" + document.vars.abstr.value;
   s += "&abhnr=" + document.vars.abhnr.value;
   document.getElementById("LoadingLyr").style.visibility = "visible";
   document.location = s;
   return true;
}

function mapSize(id)
{
   document.vars.mapS.value = id;
   changeMap();

   return true;
}

function changeMode(id)
{
   if (document.vars.mode.value != id)
   {
      document.vars.mode.value = id;
      if ((document.vars.mode.value == 2) && (document.vars.oeinr.value != 1)) changeLayer(document.vars.oeinr);
      if ((document.vars.mode.value == 4) && (document.vars.notdienst.value != 1)) changeLayer(document.vars.notdienst);
      if ((document.vars.mode.value == 3) && (document.vars.verkehr.value != 1)) changeLayer(document.vars.verkehr);
//      if ((document.vars.mode.value == 4) && (document.vars.info.value != 1)) changeLayer(document.vars.info);
      if ((document.vars.mode.value == 5) && (document.vars.kult.value != 1)) changeLayer(document.vars.kult);
      if ((document.vars.mode.value == 6) && (document.vars.sehens.value != 1)) changeLayer(document.vars.sehens);
//      if ((document.vars.mode.value == 7) && (document.vars.bus.value != 1)) changeLayer(document.vars.bus);      
    }
    else document.vars.mode.value = 1;
   if (document.vars.oper.value == 2) stopQuery();
   changeMap();
   return true;
}

function zoomStart()
{
   document.vars.vmin.value = 5710900.061881;
   document.vars.hmin.value = 3564343.438119;
   document.vars.dvert.value = 1000.5;
   document.vars.dhorz.value = 1000.5;
}

function zooming(c)
{

   if (document.vars.oper.value == 2) document.vars.oper.value = 1;
   document.vars.xref.value = document.vars.rasdx.value / 2;
   document.vars.yref.value = document.vars.rasdy.value / 2;
   tempC = document.vars.zoomC.value;
   if ((c == 0) && (Number(tempC) >= 2)) document.vars.zoomC.value = Number(document.vars.zoomC.value) - 1;
   if ((c >= 1) && (c <= 5)) document.vars.zoomC.value = c;
   if ((c == 6) && (Number(tempC) <= 4)) document.vars.zoomC.value = Number(document.vars.zoomC.value) + 1;
   if ((tempC != document.vars.zoomC.value) && (document.vars.zoomC.value >=1) && (document.vars.zoomC.value <= 5)) changeMap();
}


function changeLayer(layer)
{
   if (layer.value == 1)
   {
      layer.value = 0;
      if (document.vars.oeinr.value == 1) document.vars.mode.value = 2;
      else if (document.vars.notdienst.value == 1) document.vars.mode.value = 4;
      else if (document.vars.verkehr.value == 1) document.vars.mode.value = 3;
//      else if (document.vars.info.value == 1) document.vars.mode.value = 4;
      else if (document.vars.kult.value == 1) document.vars.mode.value = 5;
      else if (document.vars.sehens.value == 1) document.vars.mode.value = 6;
      else document.vars.mode.value = 1;
   }
   else
   {
      layer.value = 1;
//      if ((layer.id == 'bus') && (layer.value == 0)) document.vars.bus.value = 1;
   }
   if ((layer.id == 'karte_0') && (layer.value == 1))
     {
     document.vars.lubi_ganz_goe.value = 0;
     document.vars.karte_1.value = 0;
     }
   if ((layer.id == 'karte_1') && (layer.value == 1))
     {
     document.vars.lubi_ganz_goe.value = 0;
     document.vars.karte_0.value = 0;
     if (document.vars.zoomC.value < 4) zooming(4);
     }
   if ((layer.id == 'lubi_ganz_goe') && (layer.value == 1))
     {
     document.vars.karte_0.value = 0;
     document.vars.karte_1.value = 0;
     document.vars.sna.value = 0;
     document.vars.snb.value = 0;
     }


   //  Mode einschalten
   if ((layer.id == 'oeinr') && (layer.value == 1)) { document.vars.mode.value = 2; }
   if ((layer.id == 'notdienst') && (layer.value == 1)) { document.vars.mode.value = 4; }
   if ((layer.id == 'verkehr') && (layer.value == 1)) { document.vars.mode.value = 3; }
//   if ((layer.id == 'info') && (layer.value == 1)) { document.vars.mode.value = 4; }
   if ((layer.id == 'kult') && (layer.value == 1)) { document.vars.mode.value = 5; }
   if ((layer.id == 'sehens') && (layer.value == 1)) { document.vars.mode.value = 6; }

   // Umschalten aus dem Such-Mode (2)
   if (document.vars.oper.value == 2){
     if (layer.id == 'oeinr') stopQuery();
     if (layer.id == 'notdienst') stopQuery();
     if (layer.id == 'verkehr') stopQuery();
//     if (layer.id == 'info') stopQuery();
     if (layer.id == 'kult') stopQuery();
     if (layer.id == 'sehens') stopQuery();
     //if (layer.id == 'karte_0') stopQuery();
     if (layer.id == 'karte_1') stopQuery();
     //if (layer.id == 'lubi_ganz_goe') stopQuery();
   }

   // Zoom auf Innenstadt
   if (layer.id == 'karte_1') zoomStart();

   changeMap();
   return true;
}

function moveViewPort(newPort)
{
   switch (newPort)
   {
      case 1:
         var h = new Number(new Number(document.vars.hmin.value) + (new Number(document.vars.dhorz.value) / moveConst));
         var v = new Number(new Number(document.vars.vmin.value) - (new Number(document.vars.dvert.value) / moveConst));
         break;
      case 2:
         var h = new Number(document.vars.hmin.value);
         var v = new Number(new Number(document.vars.vmin.value) - (new Number(document.vars.dvert.value) / moveConst));
         break;
      case 3:
         var h = new Number(new Number(document.vars.hmin.value) - (new Number(document.vars.dhorz.value) / moveConst));
         var v = new Number(new Number(document.vars.vmin.value) - (new Number(document.vars.dvert.value) / moveConst));
         break;
      case 4:
         var h = new Number(new Number(document.vars.hmin.value) + (new Number(document.vars.dhorz.value) / moveConst));
         var v = new Number(document.vars.vmin.value);
         break;
      case 5:
         var h = new Number(new Number(document.vars.hmin.value) - (new Number(document.vars.dhorz.value) / moveConst));
         var v = new Number(document.vars.vmin.value);
         break;
      case 6:
         var h = new Number(new Number(document.vars.hmin.value) + (new Number(document.vars.dhorz.value) / moveConst));
         var v = new Number(new Number(document.vars.vmin.value) + (new Number(document.vars.dvert.value) / moveConst));
         break;
      case 7:
         var h = new Number(document.vars.hmin.value);
         var v = new Number(new Number(document.vars.vmin.value) + (new Number(document.vars.dvert.value) / moveConst));
         break;
      case 8:
         var h = new Number(new Number(document.vars.hmin.value) - (new Number(document.vars.dhorz.value) / moveConst));
         var v = new Number(new Number(document.vars.vmin.value) + (new Number(document.vars.dvert.value) / moveConst));
         break;
   }
   document.vars.hmin.value = h;
   document.vars.vmin.value = v;
   if (document.vars.oper.value = 2) stopQuery();
   changeMap();
}

function getInfo(xml, key, value, id)
{
   s = "./info.php3?";
   s += "xml=" + xml;
   s += "&key=" + key;
   s += "&value=" + value;
   s += "&id=" + id;

   size = "width=600, height=370, resizable=yes, scrollbars";
   InfoFenster = open(s, "Info", size);
   InfoFenster.focus();
}

function printMap()
{
   var s = "./print.php3?";
   s += "oper=" + document.vars.oper.value;
   s += "&mapS=" + document.vars.mapS.value;
   s += "&zoomC=" + document.vars.zoomC.value;
   s += "&mode=" + document.vars.mode.value;
   s += "&lubi_ganz_goe=" + document.vars.lubi_ganz_goe.value;
//   s += "&lubi_innenstadt=" + document.vars.lubi_ganz_goe.value;
   s += "&karte_0=" + document.vars.karte_0.value;
   s += "&karte_0g=" + document.vars.karte_1.value;
   s += "&karte_1=" + document.vars.karte_1.value;
   s += "&oeinr=" + document.vars.oeinr.value;
   s += "&notdienst=" + document.vars.notdienst.value;
   s += "&verkehr=" + document.vars.verkehr.value;
   s += "&kult=" + document.vars.kult.value;
//   s += "&info=" + document.vars.info.value;
   s += "&sehens=" + document.vars.sehens.value;
//   s += "&bus=" + document.vars.bus.value;
   s += "&sna=" + document.vars.sna.value;
   s += "&snb=" + document.vars.sna.value;
   s += "&dvert=" + document.vars.dvert.value;
   s += "&dhorz=" + document.vars.dhorz.value;
   s += "&vmin=" + document.vars.vmin.value;
   s += "&hmin=" + document.vars.hmin.value;
   s += "&xref=" + document.vars.xref.value;
   s += "&yref=" + document.vars.yref.value;
   s += "&search=" + document.vars.search.value;
   s += "&searchNum=" + document.vars.searchNum.value;
   s += "&searchEbene=" + document.vars.searchEbene.value;
   var d = new Date();
   var t = d.getTime();
   s += "&Curd=" + Math.round(t / 100);
   document.vars.abstr.value = replaceumlaute(document.vars.abstr.value);
   s += "&abstr=" + document.vars.abstr.value;
   s += "&abhnr=" + document.vars.abhnr.value;

   browsername =  navigator.appName;
   if (browsername == "Microsoft Internet Explorer")
   {
      size = "width=650, height=600, toolbar, toolbar=yes, resizable=yes, scrollbars=yes";      
   }
   else
   {
      size = "width=650, height=600, toolbar, toolbar=yes, resizable=yes, scrollbars";      
   }   
   PrintFenster = open(s, "Drucken", size);
   PrintFenster.focus();
}

function legend()
{
   size = "width=680, height=1200, resizable=yes, scrollbars";
   LegendFenster = open("legende.html", "Legende", size);
   LegendFenster.focus();
}

function show_link(a_url)
{
   var the_url=wertspeichern(a_url);
   size = "width=800, height=400, resizable=yes, scrollbars";
   LinkFenster = open("../link/link.html", the_url, size);
   LinkFenster.focus();
}

function wertspeichern(a_text) 
{
  spzzchn=  "*+-./_@";
  var a=escape(a_text);
  for(var i=0; i<spzzchn.length; i++) {
  	a=ersetze(a,spzzchn.charAt(i),"%X"+i);
  }
  a=ersetze(a,"%","_");
  return a;
}

function ersetze(text,find,repl)
{
  var found = text.indexOf(find);
  var retVal= ""; 
  var start = 0;
  while(found != -1){
    retVal +=text.substring(start,found) +repl;
    start = found+find.length;
    found =text.indexOf(find,start);
  }
  retVal +=text.substring(start,text.length);
  return retVal;
}

function NewSearch()
{
   NewSearchWin = open("searchwin.php3", "Suche", "width=420, height=434, scrollbars, resizable=yes");
   NewSearchWin.focus();
}

function SearchAll(a_begriff)
{
   a_URL = "searchwin.php3?begriff=" + a_begriff;
   NewSearchWin = open(a_URL, "Suche", "width=420, height=434, scrollbars, resizable=yes");
   NewSearchWin.focus();
}

function OpenHelp_de()
{
   HelpWin = open("../hilfe/index_de.html", "Hilfe", "width=850,height=550,scrollbars,resizable=yes");
   HelpWin.focus();
}

function OpenHelp_en()
{
   HelpWin = open("../hilfe/index_en.html", "Hilfe", "width=850,height=550,scrollbars,resizable=yes");
   HelpWin.focus();
}

function OpenHelp_es()
{
   HelpWin = open("../hilfe/index_es.html", "Hilfe", "width=850,height=550,scrollbars,resizable=yes");
   HelpWin.focus();
}

function OpenServices()
{
   SrWin = open("../services/services.html", "Services", "width=750, height=600, scrollbars, resizable=yes");
   SrWin.focus();
}


/* -------------- START TRANSFORMATION -------------- */
function Matrix(n,m) {
   return new Vektor(n*m);
}

function Vektor(n) {
   this.length = n;
   for (var i=0; i<n; i++) { this[i] = 0; }
   return this;
}

function ele(zeile,spalte,m) {
   return zeile*m+spalte;
}

function mult(matrix,vektor,n,m) {
   var vek = new Vektor(n);
   for (var i=0; i<n; i++) {
      for (var j=0; j<m; j++) {
         vek[i] += matrix[ele(i,j,m)]*vektor[j];
      }
   }
   return vek;
}

function toRad(grad) {
   return grad/rho;
}

   
function Ellips(nr,typ) {
   var ell = 0;
   if (nr == 0) {
      if (typ == 0) { ell = 6378137.000; }
      if (typ == 1) { ell = 6356752.314; }
   }
   if (nr == 1) {
      if (typ == 0) { ell = 6377397.155; }
      if (typ == 1) { ell = 6356078.962; }
   }
   if (nr == 2) {
      if (typ == 0) { ell = 6378388.000; }
      if (typ == 1) { ell = 6356911.946; }
   }
   if (nr == 3) {
      if (typ == 0) { ell = 6378245.000; }
      if (typ == 1) { ell = 6356863.019; }
   }
   return ell;
}
   
function fak(zahl) {
   var f = 1;
   if (zahl > 0) {
      for (var i=1; i<=zahl; i++) { f *= i; }
   }
   return f;

}

function vorz(d) {
   var v = 0;
   if (d != 0.0) { v = d/Math.abs(d); }
   return v;
}

function binom(o,u,typ) {
   var bi = 1;
   if (typ == 0) {
      var diff = o-u;
      if (diff > 0) { bi = fak(o)/fak(u)/fak(diff); }
   } else {
      bi = o;
      if (u > 0) {
         for (var i=1; i<u; i++) { bi *= o-i; }
      }
      bi /= fak(u);
   }
   return bi;
}


function getKoeffB() {
   var b = new Matrix(3,4);
   b[ele(0,0,4)] = 3.0/8.0;
   b[ele(0,1,4)] = -3.0/16.0;
   b[ele(0,2,4)] = 213.0/2048.0;
   b[ele(0,3,4)] = -255.0/4096.0;
   b[ele(1,1,4)] = 21.0/256.0;
   b[ele(1,2,4)] = -b[ele(1,1,4)];
   b[ele(1,3,4)] = 533.0/8192.0;
   b[ele(2,2,4)] = 151.0/6144.0;
   b[ele(2,3,4)] = -453.0/12288.0;
   return b;
}

function getKoeffG(c,e22,bf) {
   var co = Math.cos(bf); var ta = Math.tan(bf); var ta2 = ta*ta;
   var v = Math.sqrt(1.0+e22*co*co); var r1 = v/c; var r12 = r1*r1;
   var g = new Matrix(2,5);
   g[ele(1,0,5)] = r1*co*(1.0+ta2);
   g[ele(0,1,5)] = -v*v*r12*ta/2.0;
   g[ele(1,2,5)] = -r12*r1*co*(1.0+ta2)*(v*v+2.0*ta2)/6.0;
   g[ele(0,3,5)] = -r12*r12*ta*(1.0-6.0*v*v-3.0*(3.0-2.0*v*v)*ta2)/24.0;
   g[ele(1,4,5)] = r12*r12*r1*co*(1.0+ta2)*(5.0+28.0*ta2+24.0*ta2*ta2)/120.0;
   return g;
}

function Bf(N,m0,c,e22) {   // Breite Fusspunkt
   var a = c; var e2 = Math.sqrt(e22);
   for (var i=1; i<=GRAD+2; i++) {
      ab = Math.pow(e2/2.0,2*i)*binom(-1.5,i,1);
      a += c*ab*binom(2*i,i,0);
   }

   var q = getKoeffB();
   var arg = new Vektor(4);
   for (i=0; i<4; i++)  arg[i] = Math.pow(e22,i+1);
   var b = mult(q,arg,3,4);
   var b0 = N/m0/a;
   var bf = b0;

   for (i=1; i<=3; i++)  
        {    bf += b[i-1]*Math.sin(2*i*b0);  }
   return bf;
}


function KonfToGeog(ENh,L0,m0,c,e22) {
   var geog = new Vektor(3);
   var dy = (ENh[0]-500000.0)/m0;
   var bf = Bf(ENh[1],m0,c,e22);
   var q = getKoeffG(c,e22,bf);
   var arg = new Vektor(5);
   for (var i=0; i<5; i++)  arg[i] = Math.pow(dy,i+1);
   var geog = mult(q,arg,2,5);
   geog[0] += bf;
   geog[1] += L0;
   return geog;
}

function ausgabe(zahl,stellen) {
   var aus = ""+zahl;
   var q = aus.length-1;
   var p = aus.indexOf(".");
   var ex = aus.indexOf("e");
   var sign = vorz(zahl);
   var iv = 0;
   if (sign == -1)  iv = 1;
   if (ex != -1) {
      var exp = eval(aus.substring(q-1,q+1));
      var aus1 = "0.";
      for (var i=1; i<Math.abs(exp); i++) { aus1 += "0"; }
      aus1 += aus.substring(iv,p)+aus.substring(p+1,ex);
      if (sign == -1) {
         aus = "-"+aus1;
      } else {
         aus = ""+aus1;
      }
      q = aus.length-1;
      p = aus.indexOf(".");
   }
   if (p == -1) {
      if (stellen != 0) {
         aus += ".";
         for (i=0; i<stellen; i++) { aus += "0"; }
      }
   } else if (p > q-stellen) {
      for (var j=0; j<p-q+stellen; j++) { aus += "0"; }
   } else {
      aus = aus.substring(0,++p+stellen);
   }
   if (aus.charAt(0) == ".") { aus = "0"+aus; }
   if ((sign == -1)&&(aus.charAt(1) == ".")) {
      aus = "-0"+aus.substring(1,aus.length);
   }
   return aus;
}

function ausgabeGK(zahl) {
   var ausGK = "";
   ausGK = zahl.substr(0,1) + "." + zahl.substr(1,3) + "." + zahl.substr(4,3);
   
   return ausGK;  
}

function isNoDigit(string) {
   var valid = '0123456789';
   for (var i=0; i< string.length; i++) {
      if (valid.indexOf(string.charAt(i)) == -1)
         return true;
   }
   return false;
}

function transform(rechts, hoch)
{
     rechts = Math.round(rechts);
     hoch = Math.round(hoch);
     var str_rechts = String(rechts);
     var rechtswert = str_rechts.substring(0,6);
     var str_hoch = String(hoch); 
     var hochwert = str_hoch.substring(0,6);
     //alert(rechtswert+" "+hochwert);
     rechtswert = rechtswert.substring(0,1);
     var l0;
     if   ( rechtswert == '2' ) l0 = '6';
     if   ( rechtswert == '3' ) l0 = '9';
     if   ( rechtswert == '4' ) l0 = '12';
     if   ( rechtswert == '5' ) l0 = '15';
     
     var vers = 0;
     var ENh = new Vektor(3); var BLh = new Vektor(3);
     var XYZ = new Vektor(3); var xyz = new Vektor(3);

     if   ( isNoDigit(String(rechts)) ||
            isNoDigit(String(hoch)) )
     {    alert( 'Ungültiges Zeichen im Rechts- oder Hochwert.' );
          return; }
          
     rechtswert = str_rechts.substring(0,6);
     rechtswert = rechtswert.substring( 1,14 );  // Erstes Zeichen abschneiden

     ENh[0] = eval(rechtswert)*10;
     ENh[1] = eval(hochwert)*10;
 
   var m0 = 1;
   
   var c = 0; var e22 = 0; var a = 0; var b = 0;
   
   // var ell = document.kform.Ell.options.selectedIndex;
   var ell = 1;

   var a = Ellips(ell,0); var b = Ellips(ell,1);
   c = a*a/b;
   e22 = (a*a-b*b)/b/b;

   L0 = toRad( l0 );
   BLh = KonfToGeog(ENh,L0,m0,c,e22);
   br2 = ausgabe(BLh[0]*rho,6);
   l2 = ausgabe(BLh[1]*rho,6);
   sekunden_br = ausgabe(BLh[0]*rho*3600-ausgabe(BLh[0]*rho*60,-1)*60,0);
   sekunden_l = ausgabe(BLh[1]*rho*3600-ausgabe(BLh[1]*rho*60,-1)*60,0);
   br = ausgabe(BLh[0]*rho,-1)+"° "+ausgabe(BLh[0]*rho*60-ausgabe(BLh[0]*rho,-1)*60,-1)+"\' "+sekunden_br.replace(".","")+"\'\'";
   l = ausgabe(BLh[1]*rho,-1)+"° "+ausgabe(BLh[1]*rho*60-ausgabe(BLh[1]*rho,-1)*60,-1)+"\' "+sekunden_l.replace(".","")+"\'\'";
}
/* -------------- END TRANSFORMATION -------------- */


/* -------------- Koordinatenanzeige -------------- */
function mapMouseMove(eckeX, eckeY, dHor, dVert, rasX, rasY, a_event, a_element)
      {

         pos_mouse_rel_array = get_rel_mouse_pos(a_event, a_element, 1);

         posR = ((dHor/rasX)*pos_mouse_rel_array[0])+eckeX;
         posH = ((dVert/rasY)*(rasY-pos_mouse_rel_array[1]))+eckeY;
         aus_posR = ausgabeGK(String(posR));
         aus_posH = ausgabeGK(String(posH));
         
         str_posR = String(posR);
         str_posH = String(posH);
                 
         transform(posR, posH);
         
         a_text = "Gauß-Krüger: Rechts " + aus_posR + ";  Hoch " + aus_posH + "<br>" + "Geographisch: östl. Länge  " + l + ";  nördl. Breite " + br; 

         document.getElementById("koordinaten").innerHTML = a_text;
         return true;
      }

      
// Relative Position der Maus auf einem Objekt erhalten
function get_rel_mouse_pos(a_event, a_element, a_border)
{
  var pos_mouse_rel_x=0;
  var pos_mouse_rel_y=0;
  var pos_mouse_abs_x=0;
  var pos_mouse_abs_y=0;
  var XY_methode="";
  
  
  // relative Position der Maus auf dem Element/Bild
  
  // Prüfen, ob layerX verwendet werden kann (Firefox, Safari, Konqueror)
  // funkioniert nur, wenn "position:relative" gesetzt ist
  if( a_event.layerX )
  {
    XY_methode ="layerX";

    pos_mouse_abs_x = a_event.layerX;
    pos_mouse_abs_y = a_event.layerY;
    
    // relative Position der Maus auf dem Element/Bild minus Rahmen
    pos_mouse_rel_x = pos_mouse_abs_x - a_border;
    pos_mouse_rel_y = pos_mouse_abs_y - a_border;
  }
  else
  {
    // Prüfen, ob offsetX verwendet werden kann (Internet Explorer, Opera)
    if( a_event.offsetX )
    {
      XY_methode ="offsetX";

      // relative Position der Maus auf dem Element/Bild
      pos_mouse_rel_x = a_event.offsetX;
      pos_mouse_rel_y = a_event.offsetY;
    }
  }
  
  // nur Werte > 0 verwenden
  if (isNaN(pos_mouse_rel_x)) pos_mouse_rel_x = 0;
  if (isNaN(pos_mouse_rel_y)) pos_mouse_rel_y = 0;
  if (pos_mouse_rel_x < 0)    pos_mouse_rel_x = 0;
  if (pos_mouse_rel_y < 0)    pos_mouse_rel_y = 0;
  
  return new Array(pos_mouse_rel_x, pos_mouse_rel_y, XY_methode);
}


