/**
 * DOM operations
 * 'Map coming...' visible only with JavaScript on.
 */

/**
 * map
 */
var geocoder = null;
var map = new GMap2(document.getElementById("map"), {draggableCursor: 'crosshair'});
map.addControl(new GLargeMapControl());
map.addControl(new GMapTypeControl());
map.enableScrollWheelZoom();
geocoder = new GClientGeocoder();
initialize();
var image="http://maps.google.com/mapfiles/marker.png";
var marker;

function initialize()
{
    var center = new GLatLng(52.3738007, 4.8909347);
    map.setCenter(center, 13);

    marker = new GMarker(center, {draggable: true, bouncy: true});
    var mapClick = GEvent.addListener(map, 'click', function(overlay, point){
      dog = false;
      if (point) {

        marker = new GMarker(point,{draggable:true, bouncy: true});
        map.clearOverlays();
        map.addOverlay(marker);
        map.panTo(point);
        getInfo(point);
      }
  });
}
/**
 * follow() function
 * @author: Esa 2008
 */
function getInfo(point)
{
       // alert(point);
         geocoder.getLocations(point, function(addresses) {
          var msg = "Latitude: "+point.lat()+"<br />Longitude: "+point.lng();
          document.getElementById('map_lat').innerHTML=point.lat();
          document.getElementById('map_lng').innerHTML=point.lng();
          if(addresses.Status.code != 200) {
             var myHtml = "Geef een juiste plaatsnaam. U kunt alleen nederlandse plaatsnamen opzoeken.";
          }
          else {
           if(addresses)
           {
                document.getElementById('map_address').innerHTML=addresses.Placemark[0].address;
                msg+="<br />adres:"+addresses.Placemark[0].address;
           }
          }
          marker.openInfoWindowHtml(msg);

          GEvent.addListener(marker, "dragstart", function() {
             map.closeInfoWindow();
          });

          GEvent.addListener(marker, "dragend", function() {
             var point   = marker.getLatLng();
             if(point)
             {
               map.clearOverlays();
               marker = new GMarker(point,{draggable:true, bouncy: true});
               map.addOverlay(marker);
               map.panTo(point);
               getInfo(point);
             }
          });

      });
}

function isObject(o)
{
  return (o && "object" == typeof o) || isFunction(o);
}

function isFunction(o)
{
  return "function" == typeof o;
}

function loadJSON(result)
{
  document.getElementById('postalCode').innerHTML = JSON.stringify(result);
}

function showAddress(address)
{

     if(geocoder) {
        geocoder.getLatLng(
          address,
          function(point) {
            //alert(point);
            if (!point) {
              //alert("Geef een juiste plaatsnaam. U kunt alleen nederlandse plaatsnamen opzoeken.");
              alert("Geef een juiste plaatsnaam.");
            } else {
             map.clearOverlays();
             marker = new GMarker(point,{draggable:true, autoPan:false});
             map.addOverlay(marker);
             map.panTo(point);
             getInfo(point);
        }
       });
     }
}
