/*Rechteckzoom*/
function initializeDZ() {

var myDragZoom;
         
            var boxStyleOpts = { opacity: .1, border: "2px solid yellow" };
            var otherOpts = {
              buttonHTML: "",
              buttonZoomingHTML: "",
              buttonStartingStyle: {width: '0px', height: '0px'},
              stickyZoomEnabled: false,
              overlayRemoveTime: 0 };
           
              map.addControl(myDragZoom = new DragZoomControl(boxStyleOpts, otherOpts, {}),
              new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(27,7)));
              myDragZoom.buttonclick_({})
         }


/*--A------Polylines und Polygone------------*/
function startpoly () {

     document.getElementById('polymenu').style.display="block";
     polyListener = GEvent.addListener(map, 'click', leftClick);
}

function stoppoly () {

     document.getElementById('polymenu').style.display="none";
     GEvent.removeListener(polyListener);  
     clearMap();
}

function addIcon(icon) { // Add icon attributes

 icon.shadow= icon_url + "mm_20_shadow.png";
 icon.iconSize = new GSize(12, 20);
 icon.shadowSize = new GSize(22, 20);
 icon.iconAnchor = new GPoint(6, 20);
 icon.infoWindowAnchor = new GPoint(5, 1);
}


function leftClick(overlay, point) {

  if(point) {
 
  // Marker icons
  var icon = new GIcon();
  icon.image = icon_url +"polymarker.png";
  addIcon(icon);

  // Make markers draggable
  var marker = new GMarker(point, {icon:icon, draggable:true, bouncy:false, dragCrossMove:true});
  map.addOverlay(marker);
  marker.content = count;
  markers.push(marker);

  var currtype = map.getCurrentMapType().getProjection();
  var point= currtype.fromLatLngToPixel(map.fromDivPixelToLatLng(new GPoint(0,0),true),map.getZoom());
  var offset= currtype.fromLatLngToPixel(marker.getLatLng(),map.getZoom());
  var anchor = marker.getIcon().iconAnchor;
  var width = marker.getIcon().iconSize.width + 6;
  var height = 10;
  var pos = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(offset.x - point.x - anchor.x + width, offset.y - point.y -anchor.y - height)); 
 
 // Drag listener
 GEvent.addListener(marker, "drag", function() {
      drawOverlay();
  });

  // Second click listener
  GEvent.addListener(marker, "click", function() {
  
  // Find out which marker to remove
  for(var n = 0; n < markers.length; n++) {
   if(markers[n] == marker) {
    map.removeOverlay(markers[n]);
    break;
   }
  }
  // Shorten array of markers and adjust counter
  markers.splice(n, 1);
  if(markers.length == 0) {
    count = 0;
  }
   else {
    count = markers[markers.length-1].content;
    drawOverlay();
  }
  });
 drawOverlay();
 }
}



function toggleMode() {

 if(markers.length > 1) drawOverlay();
}


function drawOverlay(){

 // Check radio button
 var lineMode = document.forms["f"].elements["mode"][0].checked;

 if(poly) { map.removeOverlay(poly); }
 points.length = 0;

 for(i = 0; i < markers.length; i++) {
  points.push(markers[i].getLatLng());
 }

 if(lineMode) {
   // Polyline mode
   poly = new GPolyline(points, lineColor, lineWeight, lineOpacity);
   var length = poly.getLength()/1000;
   var unit = " km";
   report.innerHTML = "Linienlänge:<br> " + length.toFixed(3) + unit;
  }
  else {
   // Polygon mode
   points.push(markers[0].getLatLng());
   poly = new GPolygon(points, lineColor, lineWeight, lineOpacity, fillColor, fillOpacity);
   var area = poly.getArea();
   var unit = " m²";
   report.innerHTML = "Flächengröße:<br> " + area.toFixed(1) + unit;
  }
  map.addOverlay(poly);
}


function clearMap() {
// Clear current map and reset arrays
map.removeOverlay(poly);

for(i = 0; i < markers.length; i++) {
  map.removeOverlay(markers[i]);
 }

 points.length = 0;
 markers.length = 0;
 count = 0;
 report.innerHTML = " ";
}

