var baseIcon = new google.maps.MarkerImage();
baseIcon.iconSize = new google.maps.Size(32,32);
baseIcon.iconAnchor = new google.maps.Point(16,32);
baseIcon.infoWindowAnchor = new google.maps.Point(10,0);

var startIcon = (new google.maps.MarkerImage(baseIcon, "/images/start.png", null, ""));
var stopIcon = (new google.maps.MarkerImage(baseIcon, "/images/stop.png", null, ""));

/////////////////////// Ruler code by Esa 2006
// some cleaning 2008


function add() {
  var marker1;
  var marker2;
  var label1;
  var label2;
  var button=0;
  var dist=0;
  var bearing=0;
  var line;
  var poly;

  changeById('toolStatusOverlayMessage', 'RULER: Click map to start');

  function measure() {
    var units = document.getElementById("openaprs_form_units");
    var lat1;
    var lon1;
    var lat2;
    var lon2;

    if(marker1 && marker2) {
      line = [marker1.getPoint(),marker2.getPoint()];
      lat1 = marker1.getPoint().lat();
      lon1 = marker1.getPoint().lng();
      lat2 = marker2.getPoint().lat();
      lon2 = marker2.getPoint().lng();
      bearing = Math.round(LatLon.bearing(lat1, lon1, lat2, lon2));
    } // if

    d = marker1.getPoint().distanceFrom(marker2.getPoint());
    dist = d.toFixed(0)+"m";

    if(parseInt(dist)>10000)
      dist = (parseInt(dist)/1000).toFixed(1)+"km";

    if (units != null) {
      if (units.value == 'imperial') {
        d = d * 3.2808399;
        if (d > 5280)
          dist = (d/5280).toFixed(1)+"mi";
        else
          dist = d.toFixed(0)+"ft";
      } // if
      else if (units.value == 'nautical') {
        d = d * 3.2808399;
        if (d > 6076.11549)
          dist = (d/6076.11549).toFixed(1)+"knots";
        else
          dist = d.toFixed(0)+"ft";
      } // if
    } // if

    label1.setContents(dist+' '+bearing+'&deg;');
    label2.setContents(dist);
    label1.setPoint(marker1.getPoint());
    label2.setPoint(marker2.getPoint());

    if (poly)
      map.removeOverlay(poly);

    poly = new GPolyline(line,'#FFFF00', 8, 1)
    map.addOverlay(poly);
  } // measure

  google.maps.event.addListener(map, 'click', function(overlay, pnt) {
    if(pnt && button==0) {
      marker1 = new google.maps.Marker(pnt,{icon:startIcon,draggable: true});
      map.addOverlay(marker1);

      marker1.enableDragging();
      label1=new ELabel(pnt, dist,"rulerLabel",new google.maps.Size(8,25), 60);
      map.addOverlay(label1);

      marker2 = new google.maps.Marker(pnt,{icon:stopIcon, draggable: true});
      map.addOverlay(marker2);

      marker2.enableDragging();
      label2=new ELabel(pnt, dist,"rulerLabel",new google.maps.Size(8,25), 60);
      map.addOverlay(label2);
    } // if

    google.maps.event.addListener(marker1, "drag", function() { measure(); });
    google.maps.event.addListener(marker1, "dblclick", function() { clr(); });
    google.maps.event.addListener(marker2, "drag", function() { measure(); });
    google.maps.event.addListener(marker2, "dblclick", function() { clr(); });
    changeById('toolStatusOverlayMessage', 'RULER: Click and drag icon to end point, double click to remove');
    button++;
  });


  function clr(){
    map.removeOverlay(poly);
    map.removeOverlay(marker1);
    map.removeOverlay(marker2);
    map.removeOverlay(label1);
    map.removeOverlay(label2);
    button=0;
    changeById('toolStatusOverlayMessage', 'RULER: Click map to start');
    dist=0;
  }
}

