﻿var map;
var mgr;
var geocoder;

function getBaseIcon()
{
    // Create a base icon for all of our markers that specifies the
    // shadow, icon dimensions, etc.
    var baseIcon = new GIcon();
    baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
    baseIcon.iconSize = new GSize(20, 34);
    baseIcon.shadowSize = new GSize(37, 34);
    baseIcon.iconAnchor = new GPoint(9, 34);
    baseIcon.infoWindowAnchor = new GPoint(9, 2);
    baseIcon.infoShadowAnchor = new GPoint(18, 25);
    return baseIcon;
}

function createMarkerClickHandler(marker, place) {
  return function() {
    marker.openInfoWindowHtml(place["n"]);
    return false;
  };
}

// Creates a marker whose info window displays the letter corresponding
// to the given index.
function createMarker(place) 
{
  var ind = place["i"];
  var title = place["n"];
  
  var posn = new GLatLng(place["l"][0], place["l"][1]);
  
  // Create a lettered icon for this point using our icon class
  var letter = String.fromCharCode("A".charCodeAt(0) + ind);
  var letteredIcon = new GIcon(getBaseIcon());
  letteredIcon.image = "http://www.google.com/mapfiles/marker" + letter + ".png";

  // Set up our GMarkerOptions object
  markerOptions = { icon:letteredIcon, draggable:false };
  var marker = new GMarker(posn, markerOptions);
  
  var handler = createMarkerClickHandler(marker, place);
  GEvent.addListener(marker, "click", handler);
  
  var listItem = document.createElement('li');
  listItem.innerHTML = '<div class="label">' + letter + '</div><div class="note">' + title + '</div>';
  
  listItem.getElementsByTagName('a')[0].onclick = handler;

  document.getElementById('sidebar-list').appendChild(listItem);
  
  return marker;
}

function createPlaceDesc(place, index)
{
    var letter = String.fromCharCode("A".charCodeAt(0) + index);
        
    var desc = "<a href='#'>" + place["ad1"] 
        + " ( " + place["d"] + " Miles" + " )" + "<br />" + "</a>"
        + place["ad2"] + "<br />"
        + place["ad3"] + "<br />"
        + place["pc"];
    
    return desc;
}

function indexLetter(i)
{
    return String.fromCharCode("A".charCodeAt(0) + i);
}

function addLocs(ol) 
{
    document.getElementById('sidebar-list').removeChild(document.getElementById('liTemp'));
 for (var i in ol) 
 {
    var layer = ol[i];
    var markers = [];
    
    for (var j in layer["p"]) 
    {
      var marker = createMarker(layer["p"][j]); 
      markers.push(marker);
    }
    mgr.addMarkers(markers, layer["z"][0], layer["z"][1]);
  }
  mgr.refresh();
}

function getPoint(address, fn) 
{
    if (geocoder) 
    {
        geocoder.getLatLng(address, fn);
    }
}

function showPoint(point) 
{
    map.setCenter(point, 11);
    var marker = new GMarker(point);
    map.addOverlay(marker);
}