$(document).ready(initialize);

var map;
var mgr;
var icons = {};
var allmarkers = [];

function initialize() {
  if (GBrowserIsCompatible()) {
    map = new GMap2(document.getElementById("map"));
		
    map.addControl(new GSmallMapControl());
    //map.addControl(new GOverviewMapControl());
    map.setCenter(new GLatLng(GeoCodeLat, GeoCodeLon), 7);
    
		map.enableDoubleClickZoom();
		map.enableContinuousZoom();
	  map.enableScrollWheelZoom();
    
		mgr = new MarkerManager(map, {trackMarkers:true});
    window.setTimeout(setupHotelMarkers, 0);
  }
}

function getIcon(images) {
  var icon = null;
  if (images) {
    if (icons[images[0]]) {
      icon = icons[images[0]];
    } else {
      icon = new GIcon();
      icon.image = "img/gmaps/" + images[0] + ".png";
      var size = iconData[images[0]];
      icon.iconSize = new GSize(size.width, size.height);
			icon.iconAnchor = new GPoint(size.width >> 1, size.height >> 1);
			icon.infoWindowAnchor = new GPoint(size.width >> 1, size.height >> 5);
      /* icon.shadow = "img/gmaps/" + images[1] + ".png";
      size = iconData[images[1]];
      icon.shadowSize = new GSize(size.width, size.height); */
      icons[images[0]] = icon;
    }
  }
  return icon;
}

function setupHotelMarkers() {
  allmarkers.length = 0;
  for (var i in hotelLayer) {
    var layer = hotelLayer[i];
    var markers = [];
    for (var j in layer["places"]) {
      var place = layer["places"][j];
      var icon = getIcon(place["icon"]);
      var title = place["name"];
      var posn = new GLatLng(place["posn"][0], place["posn"][1]);
			var html = place["html"];
      var marker = createMarker(posn,title,icon,html); 
      markers.push(marker);
      allmarkers.push(marker);
    }
    mgr.addMarkers(markers, layer["zoom"][0], layer["zoom"][1]);
  }
  mgr.refresh();
}

function createMarker(posn, title, icon, html)
{
	var clickFlag = true;
	
	/*if(!html)
	 clickFlag = false;*/
	 
  var marker = new GMarker(posn, {title: title, icon: icon, clickable: clickFlag });
  
	GEvent.addListener(marker, "click", 
	function()
	{
		if(map.getZoom() < 10)
		{
			map.setCenter(posn, 10);
		}
		else if(map.getZoom() == 10)
		{
			map.setCenter(posn, 15);
		}
	});
	
	if (html) 
	{
		GEvent.addListener(marker, "mouseover", 
		function()
		{
			if (map.getZoom() > 9) marker.openInfoWindowHtml("<font color='#000'>" + html + "</font>", {maxWidth: "400"});
		});
  }
	
  return marker;
}

function showMarkerInfo(marker, html)
{
	
}

function deleteMarker() {
  var markerNum = parseInt(document.getElementById("markerNum").value);
  mgr.removeMarker(allmarkers[markerNum]);
}

function clearMarkers() {
  mgr.clearMarkers();
}

function reloadMarkers() {
  setupHotelMarkers();
}