//naturalLeaders = natural leaders get outside day event
//naturalLeadersNetwork = natural leaders network

// var selectedOverlay is based on segment and is set in header
// naturalLeaders & naturalLeadersNetwork share the overlay var "naturalLeaders" when arriving at NL map

		var map;
		var overviewMap;
		var cluster;
		var campaigns = new Array();
		var programsEvents = new Array();
		var natureClubs = new Array();
		var awarenessMonth = new Array();
		var naturalLeaders = new Array();
		var naturalLeadersNetwork = new Array();

		var loadedCampaigns = false;
		var loadedProgramsEvents = false;
		var loadedNatureClubs = false;
		var loadedAwarenessMonth = false;
		var loadedNaturalLeaders  = false;
		var loadedNaturalLeadersNetwork  = false;

		var campaignsIcon;
		var programsEventsIcon;
		var natureClubsIcon;
		var awarenessMonthIcon;
		var naturalLeadersIcon;
		var naturalLeadersNetworkIcon;

		function initIcon(imageUrl) {
			var icon = new GIcon();
			icon.iconSize = new GSize(12, 20);
			icon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
			icon.shadowSize = new GSize(22, 20);
			icon.iconAnchor = new GPoint(6, 20);
			icon.infoWindowAnchor = new GPoint(5, 1);						
			icon.image = imageUrl;
			return icon;
		}

		var clusterIcon = new GIcon();
		clusterIcon.iconSize = new GSize(32, 32);
		clusterIcon.shadow = "http://maps.google.com/mapfiles/ms/micons/msmarker.shadow.png";
		clusterIcon.shadowSize = new GSize(50, 30);
		clusterIcon.iconAnchor = new GPoint(16, 32);
		clusterIcon.infoWindowAnchor = new GPoint(16, 1);	
		clusterIcon.infoShadowAnchor = new GPoint(18, 32);					
		clusterIcon.image = "http://www.childrenandnature.org/assets/map/orange-dot.png";

		function clusterClick(args) {
			cluster.defaultClickAction=function(){
				map.setCenter(args.clusterMarker.getLatLng(), map.getBoundsZoomLevel(args.clusterMarker.clusterGroupBounds))
				delete cluster.defaultClickAction;
			}
			var html='<div style="height:8em; overflow:auto; width:24em"><h3 class="clusterTitle">'+args.clusteredMarkers.length+' Locations:</h3>';
			for (i=0; i<args.clusteredMarkers.length; i++) {
				html+='<a href="javascript:cluster.triggerClick('+args.clusteredMarkers[i].index+')">'+args.clusteredMarkers[i].getTitle()+'</a><br />';
			}
			html+='<br /><a href="javascript:void(0)" onclick="cluster.defaultClickAction()">Zoom</a> in to show these locations</div>';
			args.clusterMarker.openInfoWindowHtml(html);
			//map.openInfoWindowHtml(args.clusterMarker.getLatLng(), html);
		}

		function initMap(latitude, longitude, map_element_id) {
			if (GBrowserIsCompatible()) { 
				campaignsIcon = initIcon("http://www.childrenandnature.org/assets/map/marker_red_20.png");
				programsEventsIcon = initIcon("http://www.childrenandnature.org/assets/map/marker_blue_20.png");
				natureClubsIcon = initIcon("http://www.childrenandnature.org/assets/map/marker_yellow_20.png");
				awarenessMonthIcon = initIcon("http://www.childrenandnature.org/assets/map/marker_green_20.png");
				naturalLeadersIcon = initIcon("http://www.childrenandnature.org/assets/map/marker_blue_20.png");
				naturalLeadersNetworkIcon = initIcon("http://www.childrenandnature.org/assets/map/marker_red_20.png");
				
				var zoomLevel = 2;
				if (selectedOverlay == 'naturalLeaders' || selectedOverlay == 'C61') { var zoomLevel = 3; }

				map = new GMap2(document.getElementById(map_element_id));
				cluster = new ClusterMarker(map, {clusterMarkerIcon: clusterIcon, clusterMarkerClick: clusterClick });
		
				// ==== It is necessary to make a setCenter call of some description before adding markers ====
				map.setCenter(new GLatLng(latitude,longitude), zoomLevel);
				map.addMapType(G_PHYSICAL_MAP);
				map.addControl(new GLargeMapControl());
				map.addControl(new GMapTypeControl());
				map.setMapType(G_PHYSICAL_MAP);
				overviewMap = new GOverviewMapControl(new GSize(125,100));
				map.addControl(overviewMap);
			}
			// display a warning if the browser was not compatible
			else {
				alert("Sorry, the Google Maps API is not compatible with this browser");
			}
		}

		function init() {
			var latitude = 39;
			var longitude = -98;
			initMap(latitude, longitude, 'mapContainer');

			//add event listeners
			$('campaignCheckbox').observe('click', function(event) {showMarkers();});
			$('natureClubsCheckbox').observe('click', function(event) {showMarkers();});
			$('programsEventsCheckbox').observe('click', function(event) {showMarkers();});
			$('awarenessMonthCheckbox').observe('click', function(event) {showMarkers();});
			$('naturalLeadersCheckbox').observe('click', function(event) {showMarkers();});
			$('naturalLeadersNetworkCheckbox').observe('click', function(event) {showMarkers();});

			//var selectedOverlay = ''; MIGRATED THIS TO HEADER, ABOVE SCRIPT CALL
			if (selectedOverlay == '') {
				$('campaignCheckbox').checked = true;
				$('natureClubsCheckbox').checked = true;
				$('programsEventsCheckbox').checked = true;
				$('awarenessMonthCheckbox').checked = true;
				$('naturalLeadersCheckbox').checked = true;
				$('naturalLeadersNetworkCheckbox').checked = true;
			} else if (selectedOverlay == 'C11' ) {
				$('campaignCheckbox').checked = true;
			} else if (selectedOverlay == 'C13' ) {
				$('programsEventsCheckbox').checked = true;
			} else if (selectedOverlay == 'C15' ) {
				$('awarenessMonthCheckbox').checked = true;
			} else if (selectedOverlay == 'C51' ) {
				$('natureClubsCheckbox').checked = true;
			} else if (selectedOverlay == 'C61' ) {
				$('naturalLeadersCheckbox').checked = true;
			} else if (selectedOverlay == 'C81' ) {
				$('naturalLeadersNetworkCheckbox').checked = true;
			} else if (selectedOverlay == 'naturalLeaders') {
				$('naturalLeadersCheckbox').checked = true;
				$('naturalLeadersNetworkCheckbox').checked = true;
			}
			showMarkers();
		}

		function createMarker(point,icon,title,infoWindowHtml) {
			var markerOptions = { icon:icon, title:title };
			var gmarker = new GMarker(point,markerOptions);
			GEvent.addListener(gmarker, "click", function() {gmarker.openInfoWindowHtml(infoWindowHtml);});
			return gmarker;
		}

		function showMarkers() {
			cluster.removeMarkers();
			showCampaigns( $('campaignCheckbox').checked ); 
			showNatureClubs( $('natureClubsCheckbox').checked ); 
			showProgramsEvents( $('programsEventsCheckbox').checked ); 
			showAwarenessMonth( $('awarenessMonthCheckbox').checked );
			showNaturalLeaders( $('naturalLeadersCheckbox').checked );
			showNaturalLeadersNetwork( $('naturalLeadersNetworkCheckbox').checked );

			TableKit.Rows.stripe('movementList');
		}

		function showCampaigns(show) {

			if( loadedCampaigns && show ) {
				cluster.addMarkers(campaigns);
				cluster.refresh(); 
			} else if( !loadedCampaigns && show ) {
				parseKml("http://www.childrenandnature.org/movement/campaigns.kml",campaignsIcon,campaigns);
				loadedCampaigns = true;
			}

			//redisplay table
			var rows = $$('tr.campaignRow');
			rows.each(function(elem){
				if(show) {elem.show();} else {elem.hide();}	
			});
		}

		function showProgramsEvents(show) {

			if( loadedProgramsEvents && show) {
				cluster.addMarkers(programsEvents);
				cluster.refresh(); 
			} else if( !loadedProgramsEvents && show) {
				parseKml("http://www.childrenandnature.org/movement/programs.kml",programsEventsIcon,programsEvents);
				parseKml("http://www.childrenandnature.org/movement/events.kml",programsEventsIcon,programsEvents);
				//parseKml("http://www.childrenandnature.org/movement/places.kml",programsEventsIcon,programsEvents);
				loadedProgramsEvents = true;
			}

			//for unknown reason cluster isn't clearing all markers
			//so need to iterate through them to make sure they're completely cleared
			if( !show) {
				programsEvents.each(function(item) {item.hide();});
			}

			var rows = $$('tr.programRow');
			rows.each(function(elem){
				if(show) {elem.show();} else {elem.hide();}	
			});

			var rows = $$('tr.eventRow');
			rows.each(function(elem){
				if(show) {elem.show();} else {elem.hide();}	
			});
		}

		function showNatureClubs(show) {

			if( loadedNatureClubs && show) {
				cluster.addMarkers(natureClubs);
				cluster.refresh(); 
			} else if( !loadedNatureClubs && show) {
				parseKml("http://www.childrenandnature.org/movement/nature_clubs.kml",natureClubsIcon,natureClubs);
				loadedNatureClubs = true;
			}

			var rows = $$('tr.natureClubRow');
			rows.each(function(elem){
				if(show) {elem.show();} else {elem.hide();}	
			});
		}

		function showNaturalLeaders(show) {

			if( loadedNaturalLeaders && show) {
				cluster.addMarkers(naturalLeaders);
				cluster.refresh(); 
			} else if( !loadedNaturalLeaders && show) {
				parseKml("http://www.childrenandnature.org/movement/natural_leaders.kml/" + selectedOverlay,naturalLeadersIcon,naturalLeaders);
				loadedNaturalLeaders = true;
			}

			var rows = $$('tr.naturalLeadersRow');
			rows.each(function(elem){
				if(show) {elem.show();} else {elem.hide();}	
			});
		}

		function showNaturalLeadersNetwork(show) {

			if( loadedNaturalLeadersNetwork && show) {
				cluster.addMarkers(naturalLeadersNetwork);
				cluster.refresh(); 
			} else if( !loadedNaturalLeadersNetwork && show) {
				parseKml("http://www.childrenandnature.org/movement/natural_leaders_network.kml/" + selectedOverlay,naturalLeadersNetworkIcon,naturalLeadersNetwork);
				loadedNaturalLeadersNetwork = true;
			}

			var rows = $$('tr.naturalLeadersNetworkRow');
			rows.each(function(elem){
				if(show) {elem.show();} else {elem.hide();}	
			});
		}

		function showAwarenessMonth(show) {

			if( loadedAwarenessMonth && show) {
				cluster.addMarkers(awarenessMonth);
				cluster.refresh(); 
			} else if( !loadedAwarenessMonth && show) {
				parseKml("http://www.childrenandnature.org/movement/awareness_month.kml",awarenessMonthIcon,awarenessMonth);
				loadedAwarenessMonth = true;
			}

			var rows = $$('tr.awarenessMonthRow');
			rows.each(function(elem){
				if(show) {elem.show();} else {elem.hide();}	
			});
		}

		function parseKml(kml,icon,collection) {
			GDownloadUrl(kml, function(data, responseCode) { 
				if(responseCode == 200) {
					var xml = GXml.parse(data);
					if( xml.documentElement != null) {
						var markers = xml.documentElement.getElementsByTagName("Placemark");
						for (var i = 0; i < markers.length; i++) {
							try {
							var coordinates = GXml.value(markers[i].getElementsByTagName("Point")[0].getElementsByTagName("coordinates")[0]);
							var point = new GLatLng(parseFloat(coordinates.split(",")[1]),parseFloat(coordinates.split(",")[0]));    

							// Set up our GMarkerOptions object
							var title = GXml.value(markers[i].getElementsByTagName("name")[0]);
							var gmarker = createMarker(point,icon,title,GXml.value(markers[i].getElementsByTagName("description")[0]));
							collection.push(gmarker);
							} catch(err) {
								alert(err.description + ': ' + GXml.value(markers[i].getElementsByTagName("description")[0]));
							}  
						}
					} 
					cluster.addMarkers(collection);
					cluster.refresh();
				}  
			});		
		}


		google.setOnLoadCallback(init);
