/*
	Kick Butts Day - Google Map loading scripts
	Developed by Saforian
*/


// Initalize map
$(document).ready(function(){
	loadmap();
});

$(window).unload(function(){
	GUnload();
});



// Process XML listing of events
function loadmap() {
	if (!document.getElementById("google-map")) { return; }

	if (GBrowserIsCompatible()) {
		var map = new GMap2(document.getElementById("google-map"));
		if (!map) { return; }

		map.addControl(new GSmallMapControl());
		map.addControl(new GMapTypeControl());


		// Center on country or state (latitude, longitude, zoom level)
		var states = new Array();
		states['ak'] = new Array(-152.611,61.766,4);
		states['hi'] = new Array(-157.4,20.458,7);
		states['wa'] = new Array(-120.86,47.45,6);
		states['or'] = new Array(-120.622,44.084,6);
		states['ca'] = new Array(-119.587,37.219,5);
		states['nv'] = new Array(-116.493,39.080,6);
		states['id'] = new Array(-114.668,45.15,6);
		states['mt'] = new Array(-110.335,46.871,6);
		states['wy'] = new Array(-107.554,43.001,6);
		states['ut'] = new Array(-111.645,39.397,6);
		states['az'] = new Array(-111.956,34.315,6);
		states['co'] = new Array(-105.550,38.997,6);
		states['nm'] = new Array(-106.176,34.281,6);
		states['tx'] = new Array(-99.503,31.307,5);
		states['ok'] = new Array(-98.069,35.495,6);
		states['ks'] = new Array(-98.261,38.516,6);
		states['ne'] = new Array(-99.584,41.467,6);
		states['sd'] = new Array(-99.848,44.301,6);
		states['nd'] = new Array(-99.796,47.434,6);
		states['mn'] = new Array(-94.030,46.610,6);
		states['ia'] = new Array(-93.689,42.094,6);
		states['mo'] = new Array(-92.263,38.286,6);
		states['ar'] = new Array(-91.950,34.835,6);
		states['la'] = new Array(-91.622,30.970,7);
		states['fl'] = new Array(-81.618,28.515,6);
		states['ms'] = new Array(-90.075,32.621,6);
		states['al'] = new Array(-86.844,32.502,6);
		states['ga'] = new Array(-83.209,32.620,6);
		states['tn'] = new Array(-86.264,35.866,6);
		states['il'] = new Array(-89.119,39.894,6);
		states['wi'] = new Array(-89.648,44.863,6);
		states['mi'] = new Array(-86.196,45.067,6);
		states['in'] = new Array(-86.529,39.508,6);
		states['ky'] = new Array(-85.682,37.538,6);
		states['oh'] = new Array(-82.622,40.546,7);
		states['sc'] = new Array(-81.087,33.846,7);
		states['nc'] = new Array(-79.883,35.498,6);
		states['va'] = new Array(-79.219,37.529,7);
		states['wv'] = new Array(-80.249,38.862,7);
		states['md'] = new Array(-77.285,39.106,7);
		states['dc'] = new Array(-77.021,38.895,11);
		states['de'] = new Array(-75.468,39.097,8);
		states['pa'] = new Array(-77.661,40.958,7);
		states['nj'] = new Array(-74.694,40.160,7);
		states['ny'] = new Array(-75.383,42.552,6);
		states['ct'] = new Array(-72.773,41.558,8);
		states['ri'] = new Array(-71.541,41.68,9);
		states['ma'] = new Array(-71.347,42.051,7);
		states['vt'] = new Array(-72.558,44.050,7);
		states['nh'] = new Array(-71.541,43.852,7);
		states['me'] = new Array(-69.242,45.160,6);

		// Parse window.location to get state abbreviation from filename
		var thisstate = window.location.pathname.match('\/([a-z]{2})\.php');

		if (thisstate && thisstate[1]) {
			// Center and zoom to state
			thisstate = thisstate[1].toLowerCase();
			map.setCenter(new GLatLng(states[thisstate][1], states[thisstate][0]), states[thisstate][2]);

		} else {
			// USA County Map
			thisstate = "";
			map.setCenter(new GLatLng(39.9,-97.1), 4);
		}


		// Regular events map or Starbucks map
		var starbucks = (document.location.pathname.indexOf('/starbucks') === 0);


		// Get dynamic XML markers
		GDownloadUrl("/common/maps/eventxml.php?state=" + thisstate, function(data){
			var xml = GXml.parse(data);
			var markers = xml.documentElement.getElementsByTagName("marker");
			var overlay = "";

			for (var i = 0; i < markers.length; i++) {

				// Format overlay HTML
				overlay = "";

                if (markers[i].getAttribute("tentative") != "yes" || starbucks) {
					// Confirmed events (red marker)


					// Type
					if (markers[i].getAttribute("event_type") != "") {
						overlay += "<strong>Kick Butts Day: " + markers[i].getAttribute("event_type") + "</strong><br />";
					} else {
						overlay += "<strong>Kick Butts Day Event</strong><br />";
					}


					// Pending events on Starbucks map (yellow marker)
					if (markers[i].getAttribute("tentative") == "yes") {
						overlay += "<em class='small'>Pending Review</em><br />"
					}


					// Location
					overlay += markers[i].getAttribute("location") + "<br />";

					overlay += markers[i].getAttribute("address1") + "<br />";
					if (markers[i].getAttribute("address2") != "") {
						overlay += markers[i].getAttribute("address2") + "<br />";
					}
					overlay += markers[i].getAttribute("city") + ", " + markers[i].getAttribute("state") + "<br />";

					// Date & Time
					if (markers[i].getAttribute("date") != "") {
						overlay += '<span style="color:#668">' + markers[i].getAttribute("date") + "</span><br />";
					}

					// Contact info
					if (markers[i].getAttribute("media_name")) {
						overlay += '<strong>Media Contact:</strong> ' + markers[i].getAttribute("media_name") + "<br />";

						if (markers[i].getAttribute("media_phone")) {
							overlay += ' &nbsp;&nbsp;&mdash; <em>Call</em> ' + markers[i].getAttribute("media_phone") + " <em>on the day of the event</em><br />";
						}

					} else {
						overlay += '<strong>Organizer:</strong> ' + markers[i].getAttribute("organizer_name") + "<br />";

						if (markers[i].getAttribute("organizer_phone")) {
							overlay += ' &nbsp;&nbsp;&mdash; ' + markers[i].getAttribute("organizer_phone") + "<br />";
						}
						if (markers[i].getAttribute("organizer_phone2")) {
							overlay += ' &nbsp;&nbsp;&mdash; <em>Call</em> ' + markers[i].getAttribute("organizer_phone2") + " <em>on the day of the event</em><br />";
						}
					}

                } else {
					// Pending Review events (yellow marker)

                    overlay += markers[i].getAttribute("city") + ", " + markers[i].getAttribute("state") + "<br />";
                    overlay += "An event is being planned in this location.";
                }


				// Coordinates
				var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
										parseFloat(markers[i].getAttribute("lng")));

                var MapMark = markers[i].getAttribute("mapMark");

				var marker = createMarker(point, overlay, MapMark);
				map.addOverlay(marker);
			}
		});
	}
}


// Draw marker and overlay
function createMarker(point, overlay, MapMark) {
    var iconMark = new GIcon(G_DEFAULT_ICON);
    iconMark.image = MapMark;
      
	var marker = new GMarker(point, iconMark);
	GEvent.addListener(marker, 'click', function(){
		marker.openInfoWindowHtml(overlay);
	});
	return marker;
}

