var map = null;
var geocoder = null;
var defaultLng = 138;
var defaultLat = 37;
var defaultZoom = 13;
var points;
var pointHtmls;
var pickupLists;
var icon;
//var point_id;

function init_gmap(gmap_name) {
  if (GBrowserIsCompatible()) {
    map = new GMap2(document.getElementById(gmap_name));
    map.addControl(new GMenuMapTypeControl());
    map.addControl(new GOverviewMapControl());
    map.addControl(new GSmallZoomControl());
    map.addControl(new GScaleControl());

    geocoder = new GClientGeocoder();
  }
  //map.clearOverlays();
  points = new Array();
}

function lookup(address, spot_id, first_spot) {
  if (geocoder) {
    geocoder.getLatLng(
      address,
      function(point) {
        if (point) {
          //map.clearOverlays();
          if (first_spot) {
            map.setCenter(point, defaultZoom);
          }
          var marker = new GMarker(point);
          map.addOverlay(marker);
          points[spot_id] = marker;
          //add event
          GEvent.addListener(marker, 'click', function() {
            getLocationInfo(marker, spot_id);
          });
        }
      }
    );
  }
}

//display position marker
function getLocationInfo(marker, id) {
  new Ajax.Request('/spot/spot_info', {parameters:'id=' + id,
                                       asynchronous:true,
                                       evalScripts:true,
                                       onComplete:function(request) {
    var res = request.responseText;
    marker.openInfoWindowHtml(res);
  }});    
}

//move center of map with Shop's geocode
function movePointToShop(name, address, lat, lng) {
  if (map.getZoom() < defaultZoom) {
    map.setZoom(defaultZoom);           
  }
	var point_of_shop = new GLatLng(lat, lng);
	map.setCenter(point_of_shop);
	var shop_marker = new GMarker(point_of_shop);
	map.addOverlay(shop_marker);
	shop_marker.openInfoWindowHtml("[&nbsp;" + name + "&nbsp;]<br>" + address);
//  getLocationInfo(points[id], id);
}

//move center of map
function movePoint(id) {
  if (map.getZoom() < defaultZoom) {
    map.setZoom(defaultZoom);           
  }
  getLocationInfo(points[id], id);
}

//zoom in the map
function zoomIn() {
  map.setZoom(map.getZoom() + 1);           
}

//zoom out the map
function zoomOut() {
  if (map.getZoom() > 4) {
    map.setZoom(map.getZoom() - 1);           
  }
}

//clear Listener
function removeListeners(){
  for(i = 0; i < listeners.length; i++){
    GEvent.removeListener(listeners[i]);
  }
  listeners = new Array();
}
