google.load("maps", "2");
var map;
var geocoder;
var marker;
var layermarker;
var icon;

var layers = {	
	"shopfor": 
	 {"icon": "http://maps.nijel.org/icons_doar/shopping.png",
	  "url": "http://maps.nijel.org/beatitudes_kml/shopfor_neighbors_external.kml",
	  "name": "Grocery Shopping For",
	  "checked": true},
	"shopwith": 
	 {"icon": "http://maps.nijel.org/icons_doar/convienancestore.png",
	  "url": "http://maps.nijel.org/beatitudes_kml/shopwith_neighbors_external.kml",
	  "name": "Grocery Shopping With",
	  "checked": true},
	"subshop": 
	 {"icon": "http://maps.nijel.org/icons_doar/woman.png",
	  "url": "http://maps.nijel.org/beatitudes_kml/subshop_neighbors_external.kml",
	  "name": "Substitute Shopping",
	  "checked": true},
	"frenvis": 
	 {"icon": "http://maps.nijel.org/icons_doar/coffeehouse.png",
	  "url": "http://maps.nijel.org/beatitudes_kml/frenvis_neighbors_external.kml",
	  "name": "Friendly Visiting",
	  "checked": true},
	"friendp": 
	 {"icon": "http://maps.nijel.org/icons_doar/phone.png",
	  "url": "http://maps.nijel.org/beatitudes_kml/friendp_neighbors_external.kml",
	  "name": "Friendly Phoning",
	  "checked": true},
	"bushelp": 
	 {"icon": "http://maps.nijel.org/icons_doar/postoffice-us.png",
	  "url": "http://maps.nijel.org/beatitudes_kml/bushelp_neighbors_external.kml",
	  "name": "Business Assistance",
	  "checked": true},
	"respass": 
	 {"icon": "http://maps.nijel.org/icons_doar/wheel_chair_accessible.png",
	  "url": "http://maps.nijel.org/beatitudes_kml/respass_neighbors_external.kml",
	  "name": "Respite Assistance",
	  "checked": true},
	"compass": 
	 {"icon": "http://maps.nijel.org/icons_doar/electronics.png",
	  "url": "http://maps.nijel.org/beatitudes_kml/compass_neighbors_external.kml",
	  "name": "Computer Assistance",
	  "checked": true}
	
};

function toggleGeoXML(id, checked) {
  if (checked) {
      var geoXml = new google.maps.GeoXml(layers[id].url, function() {
        if (geoXml.loadedCorrectly()) {
          layers[id].geoxml = geoXml;
          document.getElementById("status").innerHTML = "";
        }
      });
    layers[id].geoXml = geoXml;
    map.addOverlay(layers[id].geoXml);
    document.getElementById("status").innerHTML = "Loading...";
  
  } else if (layers[id].geoXml) {
    map.removeOverlay(layers[id].geoXml);
  }
}

function addTR(id) {
  var layerTR = document.createElement("tr");

  var inputTD = document.createElement("td");
  var input = document.createElement("input");
  input.type = "checkbox";
  input.id = id;
  input.onclick = function () { toggleGeoXML(this.id, this.checked) };
  inputTD.appendChild(input);

  var iconTD = document.createElement("td");
  var iconA = document.createElement("img");
  iconA.src = layers[id].icon;
  iconTD.appendChild(iconA);

  var nameTD = document.createElement("td");
  var nameP = document.createElement("p");
  var name = document.createTextNode(layers[id].name);
  nameP.appendChild(name);
  nameTD.appendChild(nameP);

  layerTR.appendChild(inputTD);
  layerTR.appendChild(iconTD);
  layerTR.appendChild(nameTD);
  document.getElementById("sidebarTBODY").appendChild(layerTR);
}

function initialize() {
      if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("doargmap"));
        geocoder = new google.maps.ClientGeocoder();
	map.addControl(new google.maps.LargeMapControl());
	map.addControl(new google.maps.ScaleControl());
	map.addControl(new google.maps.OverviewMapControl());
	map.addControl(new google.maps.MapTypeControl());
        map.setCenter(new google.maps.LatLng(33.538169, -112.081233), 11);
	map.enableDoubleClickZoom();
	map.enableScrollWheelZoom();
	G_PHYSICAL_MAP.getMinimumResolution = function () { return 8 };
        G_NORMAL_MAP.getMinimumResolution = function () { return 8 };
        G_SATELLITE_MAP.getMinimumResolution = function () { return 8 };
        G_HYBRID_MAP.getMinimumResolution = function () { return 8 };

        G_PHYSICAL_MAP.getMaximumResolution = function () { return 13 };
        G_NORMAL_MAP.getMaximumResolution = function () { return 13 };
        G_SATELLITE_MAP.getMaximumResolution = function () { return 13 };
        G_HYBRID_MAP.getMaximumResolution = function () { return 13 };  
     }   
        for(var layer in layers) {
    		addTR(layer, layers[layer].name);
  		document.getElementById(layer).checked = layers[layer].checked;
  		toggleGeoXML(layer, layers[layer].checked);
      	}
      }
google.setOnLoadCallback(initialize);

function showAddress(address) {
  geocoder.getLatLng(
    address,
    function(point) {
      if (!point) {
        alert(address + " not found");
      } else {
        map.setCenter(point, 13);
        marker = new google.maps.Marker(point, {icon: icon});
        map.addOverlay(marker);
        marker.openInfoWindowHtml(address);
      }
    }
  );
}

