google.load('maps', '2');
var map;
var geocoder;
var default_lat = 35.668634;
var default_long = 139.745411;
var default_zoom = 12;

function getMarkerIcon(type) {
  var icon = new google.maps.Icon(google.maps.DEFAULT_ICON);
//  icon.image = "http://symfonians.net/images/mapicon_"+type+".png";
  return { icon: icon };
}

function initMap(data, centerPoint, zoomRatio) {
  if (!centerPoint) {
    var centerPoint = new google.maps.LatLng(default_lat, default_long);
  }
  if (!zoomRatio) {
    var zoomRatio = default_zoom;
  }
  map = new google.maps.Map2(document.getElementById('map'));
  map.addControl(new google.maps.LargeMapControl());
  map.addControl(new google.maps.MapTypeControl());
  map.setCenter(centerPoint, zoomRatio);
  for (index in data) {
    var loc = data[index];
    var point = new google.maps.LatLng(loc.lat, loc.long);
    addMarker(loc, point);
  }
  geocoder = new google.maps.ClientGeocoder();
}

function initProfileMap(lat, long, zoom)
{
  if (!lat) {
    var lat = default_lat;
  }
  if (!long) {
    var long = default_long;
  }
  if (!zoom) {
    var zoom = default_zoom;
  }
  map = new google.maps.Map2(document.getElementById('map'));
  map.addControl(new google.maps.SmallMapControl());
  map.addControl(new google.maps.MapTypeControl());
  map.setCenter(new google.maps.LatLng(lat, long), zoom);
  google.maps.Event.addListener(map, "moveend", function() {
    var center = map.getCenter();
    document.getElementById('lat').value = center.y;
    document.getElementById('long').value = center.x;
  });
  geocoder = new google.maps.ClientGeocoder();
}

function addMarker(company, point)
{
  if (!point) return;
  var marker = new google.maps.Marker(point, getMarkerIcon(company.type));
  map.addOverlay(marker);
  google.maps.Event.addListener(marker, 'click', function() {
    $.get(detail_url, { code: company.code }, function(response) {
      marker.openInfoWindowHtml(response);
    });
  });
}

function showAddress(address) {
  if (geocoder) {
    geocoder.getLatLng(address, function(point) {
      if (point) {
        map.setCenter(point, 9);
      }
    });
  } else alert('No geocoder available');
}

