﻿	var geocoder;
   	var xml;
   	var markers;
   	var address;
   	var map;
 
 
function initialize(address,multimarker,singlehtml) {

  map = new GMap2(document.getElementById("map_canvas"));
 
   geocoder = new GClientGeocoder();
  map.addControl(new GSmallMapControl());
  map.setCenter(new GLatLng(50.77, 10.54), 5);
  map.addControl(new GMapTypeControl());


if (multimarker =="true")
{
    if (geocoder) {
        GDownloadUrl("/googlemarkers", function(data) {
            xml = GXml.parse(data);
            markers = xml.documentElement.getElementsByTagName("marker");
            for (var i = 0; i < markers.length; i++) {

                var point = new GPoint(parseFloat(markers[i].getAttribute("lng").replace(",", ".")), parseFloat(markers[i].getAttribute("lat").replace(",", ".")), true);

                var myHtml = "<strong><a href='" + markers[i].getAttribute("url") + "'>" + markers[i].getAttribute("title") + "</a></strong><br/>";
                myHtml += markers[i].getAttribute("strasse") + "<br/>" + markers[i].getAttribute("plz") + " " + markers[i].getAttribute("ort");
                map.addOverlay(createMarker(point, myHtml));
            }
        });

   }
   

}else{
  if (geocoder) {
        geocoder.getLatLng(
          address,
          function(point) {
            if (!point) {
              alert(address + " not found");
            } else {
              map.setCenter(point, 10);
              var marker = new GMarker(point);
              marker.openInfoWindowHtml(singlehtml);
              map.addOverlay(marker);
              
            }
          }
        );
      }

}
}

function addMarker(address) {

  var map = new GMap2(document.getElementById("map_canvas"));
   geocoder = new GClientGeocoder();
    map.addControl(new GSmallMapControl());


  if (geocoder) {
        geocoder.getLatLng(
          address,
          function(point) {
            if (!point) {
              //alert(address + " not found");
            } else {
              //map.setCenter(point, 10);
              
              var marker = createMarker(point, name, html);
              map.addOverlay(marker);
             // marker.openInfoWindowHtml(address);
            }
          }
        );
      }


}

function createMarker(point, myHtml) {
    var marker = new GMarker(point);
    var a = 1;
   GEvent.addListener(marker, "click", function() {
       marker.openInfoWindowHtml(myHtml);
   });

    return marker;
}

   // On page load, call this function
   function load()
   {

      map = new GMap2(document.getElementById("map"));  
	  map.setCenter(new GLatLng(5.997022, -6.6), 11);
       map.addControl(new GSmallMapControl());
       map.addControl(new GMapTypeControl());
      geocoder = new GClientGeocoder();
      GDownloadUrl("/googlemarkers", function(data) {
          xml = GXml.parse(data);
          markers = xml.documentElement.getElementsByTagName("marker");
          for (var i = 0; i < markers.length; i++) {
              address = markers[i].getAttribute("address");
              html = markers[i].getAttribute("name") + " " + markers[i].getAttribute("plz");
              geocoder.getLocations(address, addToMap);
          }
      });   
   }
   // This function adds the point to the map

   function addToMap(response)
   {
      place = response.Placemark[0];
      point = new GLatLng(place.Point.coordinates[1],place.Point.coordinates[0]);
      marker = new GMarker(point);
      map.addOverlay(marker);

   }



    /**
     * Add a circle to the global variable "map". This function won't work for circles that encompass
     * the North or South Pole. Also, there is a slight distortion in the upper-left, upper-right,
     * lower-left, and lower-right sections of the circle that worsens as it gets larger and/or closer
     * to a pole.
     * @param lat Latitude in degrees
     * @param lng Longitude in degrees
     * @param radius Radius of the circle in statute miles
     * @param {String} strokeColor Color of the circle outline in HTML hex style, e.g. "#FF0000"
     * @param strokeWidth Width of the circle outline in pixels
     * @param strokeOpacity Opacity of the circle outline between 0.0 and 1.0
     * @param {String} fillColor Color of the inside of the circle in HTML hex style, e.g. "#FF0000"
     * @param fillOpacity Opacity of the inside of the circle between 0.0 and 1.0
     */
    function drawCircle(lat, lng, radius, strokeColor, strokeWidth, strokeOpacity, fillColor, fillOpacity) {
      var d2r = Math.PI/180;
      var r2d = 180/Math.PI;
      var Clat = radius * 0.0104483;  // Convert statute miles into degrees latitude
      var Clng = Clat/Math.cos(lat*d2r); 
      var Cpoints = []; 
      for (var i=0; i < 33; i++) { 
        var theta = Math.PI * (i/16);
        Cy = lat + (Clat * Math.sin(theta));
        Cx = lng + (Clng * Math.cos(theta));
        var P = new GLatLng(Cy, Cx);
        Cpoints.push(P);
      }
//alert("polygon");
      var polygon = new GPolygon(Cpoints, strokeColor, strokeWidth, strokeOpacity, fillColor, fillOpacity);
      map.addOverlay(polygon);
     }

    function load(address,radius) { 
      map = new GMap2(document.getElementById("map_canvas")); 
     geocoder = new GClientGeocoder();
    map.addControl(new GSmallMapControl());


  if (geocoder) {
        geocoder.getLatLng(
          address,
          function(point) {
            if (!point) {
              alert(address + " not found");
            } else {
              map.setCenter(point, 9);
              //var marker = new GMarker(point);
              //map.addOverlay(marker);
              //marker.openInfoWindowHtml(address);
              //var latA = Math.abs(Math.round(value=point.y * 1000000.));
              //var lonA = Math.abs(Math.round(value=point.x * 1000000.));
               
drawCircle(point.y,point.x,  radius, "#000080", 1, 0.75, "#0000FF",.4);   
            }
          }
        );
      }  
    } 
  
 

