//
var map = null;
var label = null;
var control = null;
//
var baseIcon = null;
//
var labels   = [];
var htmls   = [];
var links   = [];
var mls_nums   = [];
//
var setPointLocation = '';

var polyLatLon = [];

function generateMap () {

  /* Load Map */
  if (GBrowserIsCompatible()) {
      map = new GMap(document.getElementById("snippet-map"));
      map.enableDoubleClickZoom();
      map.centerAndZoom(new GPoint(setLongitude, setLatitude), setZoom);
      map.setMapType(setMapType);
  }

  baseIcon            = new GIcon(G_DEFAULT_ICON);
  HouseIcon = new GIcon(baseIcon, setMapIcon);
  HouseIcon.shadow     = setMapIconShadow;
  HouseIcon.iconSize   = new GSize(32, 28);
  HouseIcon.shadowSize = new GSize(32,28);
  HouseIcon.iconAnchor = new GPoint(12, 27);

  /* Add Map Controls */
  map.addControl(new GSmallMapControl());
  //map.addControl(new GOverviewMapControl());
  map.addControl(new GMapTypeControl());

  /* Custom Map Controls */
  control = new BpControl(setLoadingMsg, null, G_ANCHOR_TOP_RIGHT, 'noborder');
  map.addControl(control);

  /* Tooltip Label */
  label = new BpLabel(map.getCenter(), '', 'map-label', 'nw', true);
  label.setOpacity(200);
  map.addOverlay(label);

  var bounds = new GLatLngBounds();

  for (var i = 0; i < gmarkers.length; i++) {
    var latlng = new GLatLng(gmarkers[i].latitude,gmarkers[i].longitude);
    var marker = new BpMarkerLight(latlng, { icon: HouseIcon });
    bounds.extend(latlng);
    map.addOverlay(marker);
    var target = marker.getEventTarget();
    GEvent.bindDom(target, 'click', marker, onMouseClick);
    GEvent.bindDom(target, 'mouseover', marker, onMouseOver);
    GEvent.bindDom(target, 'mouseout', marker, onMouseOut);

    label_html = '<div style=\"background:#fff; width:135px; height:120px; padding:5px; border:1px solid #ccc; font-size:85%;\"><span class=\"arrow\"></span>'
          + '<img src=\"' + gmarkers[i].image + '\" width=\"128\" height=\"88\" style=\"margin:0 0 15px 0; clear:both; float:left;\" />'
          + '<strong>Listing Price:</strong> ' + gmarkers[i].price + '</div>';


    marker.setTooltip(label);
    labels[marker.getId()] = label_html;
    htmls[marker.getId()] = gmarkers[i].html;
    links[marker.getId()] = gmarkers[i].link;
  }

  /* Polygon */
  var polySplit = '';
  for (i=0;i<polyCoords.length;i++)
  {
      polySplit = polyCoords[i].split(",");
      polyLatLon[i] = new GLatLng(parseFloat(polySplit[1]), parseFloat(polySplit[0]));
  }

  var polygon = new GPolygon(polyLatLon, "#6784C7", 5, 1, "#6784C7", 0.5);
  map.addOverlay(polygon);


//  if (gmarkers.length > 0)
//  {
//    map.setZoom(map.getBoundsZoomLevel(bounds));
//    map.setCenter(bounds.getCenter());
//  }

}

function onMouseOver() {
//   get tooltip text
  ilabel = labels[this.getId()];
//   show tooltip
  label.setHtml(ilabel);
  label.setPoint(this.getTooltipPoint());
  label.show();
}

function onMouseOut() {
  label.hide();
}

function onMouseClick() {
  ihtml  = htmls[this.getId()];
  this.openInfoWindowTabsHtml([
      new GInfoWindowTab("Details", ihtml)
  ]);
}

window.onload = generateMap;
window.onunload = GUnload;
