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 = {   
    "subapar":
     {"icon": "http://maps.nijel.org/coar/icons/verified_subsidized_apartments.png",
      "url": "http://maps.nijel.org/coar/kml/subsidized_apartments.kml",
      "name": "Subsidized Apartments"},
    "heathcare":
     {"icon": "http://maps.nijel.org/coar/icons/verified_health_care.png",
      "url": "http://maps.nijel.org/coar/kml/health_care.kml",
      "name": "Health Care Providers"},
    "foodbanks":
     {"icon": "http://maps.nijel.org/coar/icons/verified_food_banks.png",
      "url": "http://maps.nijel.org/coar/kml/food_banks.kml",
      "name": "Food Banks"},
    "esl":
     {"icon": "http://maps.nijel.org/coar/icons/verified_esl.png",
      "url": "http://maps.nijel.org/coar/kml/esl_classes.kml",
      "name": "ESL Class Locations"},
    "headstart":
     {"icon": "http://maps.nijel.org/coar/icons/verified_headstart.png",
      "url": "http://maps.nijel.org/coar/kml/headstart.kml",
      "name": "Headstart Locations"},
//    "deschildcare":
//     {"icon": "http://maps.nijel.org/coar/icons/verified_deschildcare.png",
//      "url": "http://maps.nijel.org/coar/kml/deschildcare.kml",
//      "name": "DES Approved Child Care Locations"},
    "deschildcareadmin":
     {"icon": "http://maps.nijel.org/coar/icons/verified_des_child_care_admin_offices.png",
      "url": "http://maps.nijel.org/coar/kml/des_child_care_admin_offices.kml",
      "name": "DES Child Care Administrative Offices"},
    "churches":
     {"icon": "http://maps.nijel.org/coar/icons/verified_churches.png",
      "url": "http://maps.nijel.org/coar/kml/churches.kml",
      "name": "Places of Worship"},
    "schools":
     {"icon": "http://maps.nijel.org/coar/icons/verified_schools.png",
      "url": "http://maps.nijel.org/coar/kml/schools.kml",
      "name": "Schools"},
    "hospitals":
     {"icon": "http://maps.nijel.org/coar/icons/verified_hospitals.png",
      "url": "http://maps.nijel.org/coar/kml/hospitals.kml",
      "name": "Hospitals"},
    "postoffices":
     {"icon": "http://maps.nijel.org/coar/icons/verified_post_offices.png",
      "url": "http://maps.nijel.org/coar/kml/postoffices.kml",
      "name": "Post Offices"},
    "parks":
     {"icon": "http://maps.nijel.org/coar/icons/verified_parks.png",
      "url": "http://maps.nijel.org/coar/kml/parks.kml",
      "name": "Parks"},
    "mvdoffices":
     {"icon": "http://maps.nijel.org/coar/icons/verified_mvd_offices.png",
      "url": "http://maps.nijel.org/coar/kml/mvd_offices.kml",
      "name": "Motor Vehicle Division Offices"},
    "resettleagencies":
     {"icon": "http://maps.nijel.org/coar/icons/verified_refugeeproviders.png",
      "url": "http://maps.nijel.org/coar/kml/refugeeproviders.kml",
      "name": "Refugee Service Providers"},  
    "mutualassist":
     {"icon": "http://maps.nijel.org/coar/icons/verified_mutualassist.png",
      "url": "http://maps.nijel.org/coar/kml/mutualassist_assoc.kml",
      "name": "Refugee Resettlement Agencies"}
      
};

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("coargmap"));
        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), 10);
	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);
      }
    }
  );
}

