var map;
var dir;
var marker;
var sIcon = {"anchor":0,"arts":0,"atv":0,"boat":0,"cycling":0,"cabs":0,"camera":0,"campground":0,"caution":0,"coffee":0,"convienancestore":0,"dog":0,"dollar":0,"bar":0,"electronics":0,"fishing":0,"flag":0,"gas":0,"golfer":0,"grocery":0,"helicopter":0,"hiker":0,"home":0,"horse":0,"info":0,"info_circle":0,"lodging":0,"man":0,"mechanic":0,"medical":0,"movies":0,"parkinglot":0,"pharmacy":0,"phone":0,"picnic":0,"plane":0,"poi":0,"postoffice":0,"question":0,"ranger":0,"realestate":0,"recycle":0,"restaurant":0,"sailing":0,"salon":0,"shopping":0,"snackbar":0,"toilets":0,"trail":0,"train":0,"tree":0,"truck":0,"wheelchair":0,"woman":0};
  
if (typeof(window.gmap_type) == "undefined")
    window.gmap_type = "";

function createMarker(site) {
    var latlng = new GLatLng(site["latlng"][0], site["latlng"][1]);
    var marker = new GMarker(latlng, { title: site["name"], icon: sIcon[site["icon"]] });

    marker.value = site;
    if (window.gmap_type == "todo")
    {
      var html;

      html  = "<div style=\"width:320px;height:240px;padding-right:1em;overflow:auto\">";
      html += "<p><strong>" + site["name"] + "</strong></p>";
      if (site["photo"] != "")
        html += "<image style=\"float: right;\" src=\"/data/media/photos/" + site["photo"] + "\" alt=\"photo\" />";
      html += decodeURIComponent(site["desc"]) + "</div>";
      marker.bindInfoWindowHtml(html);
    }
    else
    {
      marker.bindInfoWindowHtml("<a href=\"directory.html?show=" + site["id"] + "\">" + site["name"] + "</a>");
    }

    GEvent.addListener(marker, "click", function() {
      $("#toAddress")[0].value = site["name"];
      $("#toAddressSite")[0].value = site["latlng"][0] + "," + site["latlng"][1];
    });

    return marker;
}
    
function loadMap() {
  if (!GBrowserIsCompatible())
    window.location = "/scenic-tour.html";

  var i, j;
  var geocoder = new GClientGeocoder();
  var llCenter = new GLatLng(45.206824, -123.889325);
  var txtCenter = "";

  map = new GMap2($("#map")[0]);
  if (window.gmap_type == "members" || window.gmap_type == "todo")
    dir = new GDirections(map, $("#mapdir")[0]);

  // TBD
  var gx = new GGeoXml("http://www.pcnvchamber.org/data/media/uploads/Flag.kmz");
  map.addOverlay(gx);
  
  if (typeof(window.gmap_id) == "undefined")
    window.gmap_id = 1;

  if (typeof(window['sLayer']) != "undefined") {
    for (i in sLayer) {
      var layer = sLayer[i];
      for (j in layer["sites"]) {
        var site = layer["sites"][j];
        if (site["id"] == window.gmap_id) {
          llCenter = new GLatLng(site["latlng"][0], site["latlng"][1]);
          txtCenter = site["name"];
        }
      }
    }
  }
    
  map.addControl(new GSmallMapControl());
  map.addControl(new GMapTypeControl());
  map.addMapType(G_PHYSICAL_MAP);
  map.addMapType(G_SATELLITE_3D_MAP);
  map.removeMapType(G_HYBRID_MAP);
  map.enableScrollWheelZoom();
  map.setCenter(llCenter, 15, G_NORMAL_MAP);
  if (txtCenter != "")
    map.openInfoWindowHtml(map.getCenter(), txtCenter);

  window.dst_marker = null;
  GEvent.addListener(map, "click", function(overlay, latlng) {
    if (typeof(latlng) != "undefined")
    {
      if (window.dst_marker) {
        window.dst_marker.setLatLng(latlng);
      } else {
        window.dst_marker = new GMarker(latlng, {draggable: true});
        map.addOverlay(window.dst_marker);
      }
      $("#toAddress")[0].value = "Marker Location";
      $("#toAddressSite")[0].value = latlng.lat() + "," +latlng.lng();
    }
  });
  
  if (typeof(window['sLayer']) != "undefined") {
    var normSize = new GSize(32, 32);
    var shadSize = new GSize(49, 32);
    var hotspot = new GPoint(15, 31);
  
    for (var i in sIcon) {
      sIcon[i] = new GIcon();
      sIcon[i].image = "/data/media/markers/" + i + ".png";
      sIcon[i].shadow = "/data/media/markers/" + i + "_s.png";
      sIcon[i].iconSize= normSize;
      sIcon[i].shadowSize = shadSize;
      sIcon[i].imageMap = [0,0, 31,0, 31,31, 0,31];
      sIcon[i].iconAnchor = hotspot;
      sIcon[i].infoWindowAnchor = hotspot;
    }
  
    var mgr = new MarkerManager(map);
    for (i in sLayer) {
      var layer = sLayer[i];
      var markers = [];
      for (j in layer["sites"]) {
        var site = layer["sites"][j];
        marker = createMarker(site);
        markers.push(marker);
      }
      mgr.addMarkers(markers, layer["zoom"][0]);
    }      
    mgr.refresh();
  }
}
  
function resetDirections() {
  $("#toAddress")[0].value = "";
  $("#toAddressSite")[0].value = 0;
}
  
function setDirections(fromAddress, toAddress) {
  var latlng = $("#toAddressSite")[0].value;
  if (latlng != 0)
      toAddress = latlng;
  dir.load("from: " + fromAddress + " to: " + toAddress);
}

$(document).ready(loadMap);
