<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <script src="http://maps.google.com/maps?file=api&v=2&key=ABQIAAAA3C3cggohQH044oJU10p9hRSfCfkamzr65RA-A3ZfXmc8dgIhVxTusI-8RzngggpTq0xoW5B1StZwug"
            type="text/javascript"></script>
    <style type="text/css">
        .nomargin { margin: 0; padding: 0 }
    </style>
</head>
<body onunload="unload()" class="nomargin"
      ondragstart="return false" onselectstart="return false"
      ondragenter="return false" ondragover="return false"
      ondrop="return false">
<div id="error"></div>
<div id="map"></div>

<script type="text/javascript">
   <!--
   //<![CDATA[

    function GetTileUrl_Mapnik(a,b) {
      var z = b;
      var f = "http://tile.openstreetmap.org/" + z + "/" + a.x + "/" + a.y + ".png";
      return f;
    }
    
    function GetTileUrl_TaH(a,b) {
      var z = b;
      var f = "http://tah.openstreetmap.org/Tiles/tile/" + z + "/" + a.x + "/" + a.y + ".png";
      return f;
    }
    
    function GetTileUrl_Cyc(a,b) {
      var z = b;
      var f = "http://thunderflames.org/tiles/cycle/" + z + "/" + a.x + "/" + a.y + ".png";
      return f;
    }
   
   
   function isLoaded() {
       return window.GBrowserIsCompatible;
   }

   function isCompatible() {
       return isLoaded() && GBrowserIsCompatible();
   }

   function unload() {
       if (isLoaded())
           GUnload();
   }

   function resize(x, y) {
       var div = document.getElementById("map");
       div.style.width = x + "px";
       div.style.height = y + "px";
   }

   var dragListenerPort = 4711;

   function setDragListenerPort(port) {
       dragListenerPort = port;
   }

   function addMarker(marker, index) {
       GEvent.addListener(marker, "dragend", function() {
           var ll = marker.getLatLng();
           xmlhttp.open("GET", "http://localhost:" + dragListenerPort + "/" + index + "/" + ll.lat() + "/" + ll.lng());
           xmlhttp.send();
       });
       map.addOverlay(marker);
   }

   var debug = document.createElement('div');

   function addDebug(text) {
       var element = document.createElement('p');
       var node = document.createTextNode(text);
       element.appendChild(node);
       debug.appendChild(element);
   }

   function setError(text) {
       var element = document.createElement('div');
       element.innerHTML = text;
       var error = document.getElementById('error');
       error.style.padding = '20pt';
       error.appendChild(element);
       error.appendChild(debug);
   }

   addDebug("1. isLoaded()");
   if (isLoaded()) {
       addDebug("isLoaded():" + (isLoaded() != null));
       try {

           addDebug("2. GBrowserIsCompatible()");
           if (GBrowserIsCompatible()) {
               addDebug("GBrowserIsCompatible():" + GBrowserIsCompatible());
               addDebug("isCompatible():" + isCompatible());

               addDebug("3. before creating GMap2");
               var map = new GMap2(document.getElementById("map"));
               addDebug("map:" + map);

      //openstreetmap Kacheln einbinden         
      var copyright = new GCopyright(1, new GLatLngBounds(new GLatLng(-90,-180), new GLatLng(90,180)), 0, "(CC-BY-SA)");
      var copyrightCollection = new GCopyrightCollection('Copyright OpenStreetMap');
      copyrightCollection.addCopyright(copyright);
      var tilelayers_mapnik = new Array();
      tilelayers_mapnik[0] = new GTileLayer(copyrightCollection, 0, 18);
      tilelayers_mapnik[0].getTileUrl = GetTileUrl_Mapnik;
      tilelayers_mapnik[0].getOpacity = function () { return 1.0; };
      var tilelayers_tah = new Array();
      tilelayers_tah[0] = new GTileLayer(copyrightCollection, 0, 17);
      tilelayers_tah[0].getTileUrl = GetTileUrl_TaH;
      tilelayers_tah[0].getOpacity = function () { return 1.0; };
      var tilelayers_cyc = new Array();
      tilelayers_cyc[0] = new GTileLayer(copyrightCollection, 0, 17);
      tilelayers_cyc[0].getTileUrl = GetTileUrl_Cyc;
      tilelayers_cyc[0].getOpacity = function () { return 1.0; };
      map_mapnik = new GMapType(tilelayers_mapnik, new GMercatorProjection(19), "Mapnik",
      { alt: 'Mapnik rendering of OpenStreetMap data' });
      map.addMapType(map_mapnik);
      map_tah = new GMapType(tilelayers_tah, new GMercatorProjection(18), "T@H",
      { alt: 'Tiles@Home (Osmarender) rendering of OpenStreetMap data' });
      map.addMapType(map_tah);
      map_cyc = new GMapType(tilelayers_cyc, new GMercatorProjection(18), "Cycle",
      { alt: 'OSM Cycle Map rendering of OpenStreetMap data' });
      map.addMapType(map_cyc);   
               
               
               
               
               map.addControl(new GLargeMapControl());
               map.addControl(new GMapTypeControl());
               map.setCenter(new GLatLng(35.0, -30.0), 2);
               map.enableScrollWheelZoom();

               addDebug("5. before creating XMLHttpRequest");
               try {
                   var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
               }
               catch (e) {
                   try {
                       var xmlhttp = new XMLHttpRequest();
                   }
                   catch (e) {
                       setError("<p>Sorry, could not initialize XMLHttpRequest.</p><p>Error name: " + e.name + "</p><p>Error message: " + e.message + "</p><p><a href='javascript:self.location.reload()'>Retry</a></p>");
                   }
               }
           } else {
               setError("<p>Sorry, Google Maps is not compatible</p><p>with this browser.</p>");
           }
       } catch (e) {
           setError("<p>Sorry, could not initialize Google Maps.</p><p>Error name: " + e.name + "</p><p>Error message: " + e.message + "</p><p><a href='javascript:self.location.reload()'>Retry</a></p></div>");
       }
   } else {
       setError("<p>Sorry, could not access Google Maps.</p><p>Please check your Internet connection.</p><p><a href='javascript:self.location.reload()'>Retry</a></p>");
   }

   //]]>
//-->
</script>
</body>
</html>