var map;
var geocoder;
var marker;
var layermarker;
var iconOptions = {};
  iconOptions.width = 32;
  iconOptions.height = 32;
  iconOptions.primaryColor = "#289000FF";
  iconOptions.cornerColor = "#7EFF00FF";
  iconOptions.strokeColor = "#000000FF";
var icon = MapIconFactory.createMarkerIcon(iconOptions);

var layers = {	
	"foodbox": 
	 {"icon": "http://maps.nijel.org/azfoodfinder/icons/food_box.png",
	  "url": "http://maps.nijel.org/azfoodfinder/kml/food_box.kml",
	  "name": "Food Boxes"},
	"infantbox": 
	 {"icon": "http://maps.nijel.org/azfoodfinder/icons/infant_box.png",
	  "url": "http://maps.nijel.org/azfoodfinder/kml/infant_box.kml",
	  "name": "Infant Boxes"},
	"soupkitchen": 
	 {"icon": "http://maps.nijel.org/azfoodfinder/icons/soup_kitchen.png",
	  "url": "http://maps.nijel.org/azfoodfinder/kml/soup_kitchen.kml",
	  "name": "Soup Kitchen"},
	"coopbox": 
	 {"icon": "http://maps.nijel.org/azfoodfinder/icons/co_op_box.png",
	  "url": "http://maps.nijel.org/azfoodfinder/kml/co_op_box.kml",
	  "name": "Food Co-op Boxes"},
	"homemeals": 
	 {"icon": "http://maps.nijel.org/azfoodfinder/icons/home_meals.png",
	  "url": "http://maps.nijel.org/azfoodfinder/kml/home_meals.kml",
	  "name": "Home Meals"},
	"onsitemeals": 
	 {"icon": "http://maps.nijel.org/azfoodfinder/icons/onsite_meals.png",
	  "url": "http://maps.nijel.org/azfoodfinder/kml/onsite_meals.kml",
	  "name": "Onsite Meals"}
	
};

function toggleGeoXML(id, checked) {
  if (checked) {
      var geoXml = new GGeoXml(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("foodgmap"));
        geocoder = new GClientGeocoder();
	map.addControl(new GLargeMapControl());
	map.addControl(new GScaleControl());
	map.addControl(new GOverviewMapControl());
	map.addControl(new GMapTypeControl());
	map.addControl(new google.maps.LocalSearch());
        map.setCenter(new GLatLng(33.46611, -112.0725), 6);
	map.enableDoubleClickZoom();
	map.enableScrollWheelZoom();  
     }   
        for(var layer in layers) {
    		addTR(layer, layers[layer].name);
  	}
  	document.getElementById(layer).checked = true;
  	toggleGeoXML(layer, true);       
      }

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

