﻿// site edit functions
var currentSiteId = -1;
var currentSiteUuid = '';
var startZoom = 15;

// reverse geocode
var rgeocoder = null;

function initRGeo()
{
    rgeocoder = new GReverseGeocoder(map);

    GEvent.addListener(rgeocoder, "load",
        function(placemark) {
          //var reqpoint = new GLatLng(placemark.RequestPoint.coordinates[1], placemark.RequestPoint.coordinates[0]);
          //var roadpoint = new GLatLng(placemark.PointOnRoad.coordinates[1], placemark.PointOnRoad.coordinates[0]);
          //var respoint = new GLatLng(placemark.Point.coordinates[1], placemark.Point.coordinates[0]);

          //alert('Requested Point:' + reqpoint);
          //alert('Closest Point On Road:' + roadpoint);
          //alert('Address Result Point:' + respoint);
          //alert('Distance On Road:' + placemark.DistanceOnRoad);
          //alert('Distance:' + placemark.Distance);
          // placemark.address 
          //Country code:</b> ' + placemark.AddressDetails.Country.CountryNameCode;
          //bobobo
          var answer = confirm (confirm1 + placemark.address + confirm2);
          if (answer)
          {
            setValue( taddress, rgeocoder.getPlacemarkProperty(placemark,"ThoroughfareName"));
            setValue( tpostnr, rgeocoder.getPlacemarkProperty(placemark,"PostalCodeNumber"));
            setValue( tcity, rgeocoder.getPlacemarkProperty(placemark,"LocalityName"));
            setValue( tcountry, rgeocoder.getPlacemarkProperty(placemark,"CountryName"));
          }
        }
    );

    GEvent.addListener(rgeocoder, "error",
      function() {
        alert(unable1);
      }
    );
}

function getAddress()
{
    rgeocoder.reverseGeocode(new GLatLng(getValue(latCtrlId),getValue(lngCtrlId)));
}



// fix this
function getValue(cId)
{
    var txt = "0";
    var ctrl = document.getElementById(cId);
    if (null != ctrl)
        txt = ctrl.value;
        
    return parseFloat(txt);
}

function setValue(cId, sV)
{
    var ctrl = document.getElementById(cId);
    if ((null != ctrl) && (null != sV))
        ctrl.value = sV;
}


var timeout;
var clickCoords;

function singleClick()
{
    clearTimeout(timeout)
    timeout = null;
    if (clickCoords) {
        if (null != document.getElementById(latCtrlId))
            document.getElementById(latCtrlId).value = clickCoords.lat();
        if (null != document.getElementById(lngCtrlId))
            document.getElementById(lngCtrlId).value = clickCoords.lng();
		showOnMap();
    }
}

function AddClickListener()
{

    GEvent.addListener(map, "click", function(overlay,point) {
      if (timeout == null)
      {
        // The first click we've had recently => start a timeout for the lookup
        clickCoords = point;
        timeout = setTimeout('singleClick()', 500);
      }
      else
      {
        // Second click means it's a double-click, so cancel the lookup timeout
        clearTimeout(timeout)
        timeout = null;
      }
    });

//    GEvent.addListener(map, "click", function(overlay,point) {
//        if (point) {
//            document.getElementById(latCtrlId).value = point.lat();
//            document.getElementById(lngCtrlId).value = point.lng();
//            showOnMap();
//        }
//    });
}

var editMarker;
var baseIcon = new GIcon();  baseIcon.iconSize=new GSize(32,32);  baseIcon.shadowSize=new GSize(56,32);  baseIcon.iconAnchor=new GPoint(16,32);  baseIcon.infoWindowAnchor=new GPoint(16,0);// 60 or 52
var blueIcon = new GIcon(baseIcon, "http://www.google.com/intl/en_us/mapfiles/ms/micons/blue-dot.png", null, "http://maps.google.com/mapfiles/ms/micons/msmarker.shadow.png");
//var blueIcon = new GIcon(G_DEFAULT_ICON);
//blueIcon.image = "http://www.google.com/intl/en_us/mapfiles/ms/micons/blue-dot.png";
//blueIcon.iconSize=new GSize(32,32);

                
// Set up our GMarkerOptions object
markerOptions = { icon:blueIcon, draggable: true, zIndexProcess:importanceOrder} ;

function showOnMapButton()
{
    var z = map.getZoom();
    map.setZoom(15);
    showOnMap();
}

function showOnMap()
{
    var point = new GLatLng(getValue(latCtrlId),getValue(lngCtrlId));
    //map.panTo(point);
    //map.setCenter(point, 8);

    if (null == editMarker)
    {
        editMarker = new GMarker(point, markerOptions);
        editMarker.importance = 50;
        GEvent.addListener(editMarker, "dragstart", function() {
            map.closeInfoWindow();
        });

        GEvent.addListener(editMarker, "dragend", function() {
            var point = editMarker.getPoint();
            map.panTo(point);
            if (null != document.getElementById(latCtrlId))
                document.getElementById(latCtrlId).value = point.lat();
            if (null != document.getElementById(lngCtrlId))
                document.getElementById(lngCtrlId).value = point.lng();
        });
        
        editMarker.show();
        clusterer.AddMarker(editMarker, "*** " + js_new_site + " ***");
        //map.addOverlay(editMarker);
    }
    else 
    {
        editMarker.setPoint(point);
    }
    map.panTo(point);

}

function localPreInit()
{
}

function localPostInit()
{
    if (currentSiteId >= 0)
    {
        var currentPoint = gmarkers[currentSiteId].getPoint();
        //clusterer.map.removeOverlay( gmarkers[currentSiteId]);
        gmarkers[currentSiteId].hide();
        
        //map.removeOverlay( gmarkers[currentSiteId]);
    }
    showOnMap();
    AddClickListener();
    initRGeo();
}

function checkSiteId(siteId, index)
{
    if (siteId == currentSiteUuid)
    {
        currentSiteId = index;
    }
}


//window.onresize = handleResize;
addLoadEvent(init);
//window.onload = function() { init; };
//window.onload = init;
