    var Latitude;
    var Longitude;
     
     function format(zahl, digits){
       var mult = Math.pow (10,digits);
       zahl = Math.round(zahl*mult)/mult;
       var S = String(zahl);
       var a = S.split(".");
       var b = String(mult);
       b = b.substr(1);
       if (a[1])
         b = a[1] + b;
       a[1] = b.substr(0,digits);
       return a[0]+'.'+a[1];
     }

    function GPS2Dez(GPS) {
      if (GPS.indexOf(",") < 0) {
        var a = GPS.split(" ");
        var deg = eval(a[0]);
        var sgn = (deg < 0? -1 : 1);
        var dez = sgn * Math.abs(deg)+eval(a[2]/60)+eval(a[4]/3600);
      } else {
        var dez = GPS.replace(/,/,".");
      }
      return format(dez, 8);
    }

    function GPS2Deg(GPS) {
      if (GPS.indexOf(",") < 0) {
        var a = GPS.split(" ");
        var deg = a[0]+'° '+a[2]+"' "+a[4]+"'' ";
      } else {
        var a = GPS.split(",");
        var deg = a[0]+'° ';
        var b = String(eval("0."+a[1])*60);
        a = b.split(".");
        deg += a[0]+"' "+format(eval("0."+a[1])*60,2)+"'' ";
      }
      return deg;
    }

    function Lat2sqn (zoom, latCenter){
      var deg2rad = Math.PI/180;
      var rad2deg = 180/Math.PI;
      var sbase = 0.000020853; // fit to one particular dataset
      yCenter = Math.log(Math.tan(Math.PI/4+(latCenter*deg2rad)/2));
      yTop = yCenter + sbase*Math.pow(2,zoom);
      yBot = yCenter - sbase*Math.pow(2,zoom);
      latTop = rad2deg*(2*Math.atan(Math.exp(yTop))-Math.PI/2);
      latBot = rad2deg*(2*Math.atan(Math.exp(yBot))-Math.PI/2);
      spnLat = latTop - latBot;
      return Math.abs(spnLat);
    }

    function createDeg(Lat, Long) {
      var lonDir = 'E';
      var latDir = 'N';
      if (GPS2Dez(Long) < 0) {
        Long = Long.replace(/-/, "");
        lonDir = 'W';
      }
      if (GPS2Dez(Lat) < 0) {
        Lat = Lat.replace(/-/, "");
        latDir = 'S';
      }
      return GPS2Deg(Lat)+latDir+', '+GPS2Deg(Long)+lonDir;
    }

    function createGoogleURL(zoom) {
      var latDez = GPS2Dez(Latitude);
      var lonDez = GPS2Dez(Longitude);
      var lonDir = 'E';
      var latDir = 'N';
      if (lonDez < 0) {
        lonDir = 'W';
      }
      if (latDez < 0) {
        latDir = 'S';
      }
      var lzoom = Math.min(Math.max(zoom,0), 19);
      var res = 'http://maps.google.com/maps?f=q&hl=en&q='+Math.abs(latDez)+
                '+'+latDir+'+'+Math.abs(lonDez)+'+'+lonDir+'&t=k&ll='+latDez+','+lonDez+'&spn='+
                Lat2sqn(lzoom, latDez)+',0.00001&t=k';
      return res;
    }

    function createGoogleKML(fName, fTitle, fDescription) {
      var latDez = GPS2Dez(Latitude);
      var lonDez = GPS2Dez(Longitude);
      var lonDir = 'East=';
      var latDir = 'North=';
      if (lonDez < 0) {
        lonDez *= -1;
        lonDir = 'West=';
      }
      if (latDez < 0) {
        latDez *= -1;
        latDir = 'South=';
      }
      var res = 'kml2.php?image='+fName+'&'+latDir+latDez+'&'+lonDir+lonDez;
      if (fTitle) res += '&title='+fTitle.replace(/<[^>]*>/ig, "");
      if (fDescription) res+= '&description='+fDescription;
      return res;
    }

    function createMultimapURL(zoom, theTitle) {
      var lzoom = Math.min(Math.max(zoom,0), 12);
      var zfa = new Array(5,10,25,50,100,200,500,1000,2000,4000,10000,20000,40000);
      theTitle= theTitle.replace(/'/ig, "");
      var res = 'http://www.multimap.com/map/browse.cgi?local=h&scale='+zfa[lzoom]+'000'+
                '&title='+theTitle.replace(/<[^>]*>/ig, "")+
                '&lon='+GPS2Dez(Longitude)+'&lat='+GPS2Dez(Latitude)+
                '#loc=:'+GPS2Dez(Latitude)+':'+GPS2Dez(Longitude)+':20||';
      return res;
    }
    
    function writeGPS(Lat, Long, OrigFile, AltText) {
      Latitude = Lat.replace(/S/, "-");
      Latitude = Latitude.replace(/N/, "");
      Longitude = Long.replace(/W/, "-");
      Longitude = Longitude.replace(/E/, "");
      Latitude = Latitude.replace(/--/, "");
      Longitude = Longitude.replace(/--/, "");
      if ((Latitude != "") && (Longitude != "")) {
        document.write(createDeg(Latitude, Longitude)+' ');
        document.write('zeige mit - <i>show in</i>:<br>');
        document.write('<a href="'+createGoogleURL(6)+
                       '" target="GoogleMaps" title="show Location in Google Maps">');
        document.write('Google Maps</a> ');
        document.write('<a href="'+createGoogleKML(OrigFile, AltText)+
                       '" type="application/vnd.google-earth.kml+xml" '+
                       'title="show Location in Google Earth">');
        document.write('Google Earth</a> ');
        document.write('<a href="'+createMultimapURL(5, AltText)+
                       '" target="MultiMap" title="show Location in MultiMap.com">');
        document.write('MultiMap.com</a><br>');               
      } else document.write('Nicht verf&uuml;gbar - <i>not available</i><br>');
    }

    function FullScreen(theURL) {
       window.open(theURL, '', 'fullscreen=yes, resizable=yes, status=yes, scrollbars=auto');
    }

    function writeFullscreen(BaseName) {
      document.writeln(' <a href="#" onclick="FullScreen(\''+BaseName+'_qt.htm\'); return false;" target="new">Quicktime</a>');
      document.writeln(' <a href="#" onclick="FullScreen(\''+BaseName+'_qt.spiv\'); return false;" target="new">Shockwave</a>');
      document.writeln(' <a href="#" onclick="FullScreen(\''+BaseName+'_qt.devr\'); return false;" target="new">DevalVR</a>');
      document.writeln(' <a href="#" onclick="FullScreen(\''+BaseName+'_qt.flash\'); return false;" target="new">Flash</a>');
    }
    
    function FullscreenHref(BaseName) {
      document.write(' <a href="#" onclick="FullScreen(\''+BaseName+'_qt.flash\'); return false;" target="new">');
    }
