	var map = null;
	var iconYuri = new GIcon(); 
	iconYuri.image = 'http://yurisnight.net/parties/YN-Map-Icon.png';
	iconYuri.iconSize = new GSize(20, 27);
	iconYuri.iconAnchor = new GPoint(10, 27);
	iconYuri.infoWindowAnchor = new GPoint(10, 14);

	var iconDot = new GIcon(); 
	iconDot.image = 'http://yurisnight.net/parties/YN-Map-Small-Icon.png';
	iconDot.iconSize = new GSize(7, 7);
	iconDot.iconAnchor = new GPoint(4, 4);
	iconDot.infoWindowAnchor = new GPoint(4, 4);

	function gup( name )
	{
	  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
	  var regexS = "[\\?&]"+name+"=([^&#]*)";
	  var regex = new RegExp( regexS );
	  var results = regex.exec( window.location.href );
	  if( results == null )
	    return "";
	  else
	    return results[1];
	}

	function createCityLightsMap() {
	  var global = new GLatLngBounds(new GLatLng(-90, -180), new GLatLng(90, 180));
	  var credit = new GCopyrightCollection();
	  credit.addCopyright(new GCopyright(0, global, 0,
	      '<span style="color:#777777">Image data: USAF / NOAA / NASA</span>'));
	  var baseurl = "http://static.geodetyx.com/dmsp_bmng_mercator";
	  var layer = new GTileLayer(credit, 0, G_HYBRID_MAP.getMaximumResolution());
	  layer.isPng = function() { return false; };
	  layer.getTileUrl = function(tile, zoom) {
	    return [baseurl, zoom, tile.x, tile.y].join('/');
	  };
	  var projection = G_HYBRID_MAP.getProjection();
	  return new GMapType([layer], projection, "City Lights");
	}

	function createMarker(point, icon, partyname, venuename, venueaddress, city, stateprov, country, partydate, site, hostemail, announce) {
	  var marker = new GMarker(point, icon);
	  var citystate = city;
	  if (stateprov != city) { citystate = citystate + stateprov; }
	  var html = "<div class=\"partyinfo\"><ul><li class=\"country\">" + country + "</li><li class=\"city\">" + citystate; 
          if (partyname) { html = html + "</li><li class=\"partyname\">" + partyname; }
          if (venuename) { html = html + "</li><li class=\"venuename\">" + venuename; }
          if (venueaddress) { html = html + "</li><li class=\"venueaddress\">" + venueaddress; }
          if (partydate) { html = html + "</li><li class=\"partydate\">" + partydate; }
          if (site) { html = html + "</li><li class=\"website\">" + site; }
          if (hostemail) { html = html + "</li><li class=\"partyname\">" + hostemail; }
//          if (announce) { html = html + "</li><li class=\"announce\"><b>" + announce; + "</b>" }
	  html = html + "</li></ul></div>";
	  GEvent.addListener(marker, 'click', function() {
	    marker.openInfoWindowHtml(html);
	  });
	  return marker;
	}

	function initialize_map() {
		if (GBrowserIsCompatible()) {
			map = new GMap2(document.getElementById("map"));
		     document.getElementById("map").style.backgroundImage = "url(http://yurisnight.net/parties/background.jpg)";
			CITY_LIGHTS_MAP = createCityLightsMap();
			map.addMapType(CITY_LIGHTS_MAP);
			map.setCenter(new GLatLng(10.0, 10.0), 1, CITY_LIGHTS_MAP);
			map.addControl(new GSmallMapControl());

			var markersDotIcon = [], markersYuriIcon = [];
          
               var param_year = gup('year');
               if (param_year != "") { param_year = "?year=" + param_year; }
// Hack by Lewicki to isolate problem between map data and map generation, 4/12/2011.
//		GDownloadUrl("/wp-content/themes/yuris_night-10/parties/phpsqlajax_genxml3_static.xml", function(data) {
		GDownloadUrl("/wp-content/themes/yuris_night-10/parties/phpsqlajax_genxml3.php" + param_year, function(data) {

			var xml = GXml.parse(data);
			var markers = xml.documentElement.getElementsByTagName("marker");
			for (var i = 0; i < markers.length; i++) {
				var partyname = markers[i].getAttribute("PartyName");
				var venuename = markers[i].getAttribute("VenueName");
				var venueaddress = markers[i].getAttribute("VenueAddress");
				var city = markers[i].getAttribute("City");
				if (partyname == city) {partyname = "Yuri's Night in " + city;	}
				var stateprov = markers[i].getAttribute("StateProv");
				if (stateprov != city){ if(stateprov) { stateprov = ", " + stateprov; }}
				var country = markers[i].getAttribute("Country");
		    		var point = new GLatLng(parseFloat(markers[i].getAttribute("Latitude")),parseFloat(markers[i].getAttribute("Longitude")));
		    		var year = markers[i].getAttribute("Year");
  				var partydate = markers[i].getAttribute("Date");
				var site = markers[i].getAttribute("Website");
                                if (site) { site = "<a target=\"_new\" href=\"http://" + site + "\">Visit Party Website &raquo;</a>"; }
                                var email = markers[i].getAttribute("Email");
                                hostemail = "<a href=\"mailto:" + email + "\">Contact Party Host &raquo;</a>";
				var announce = markers[i].getAttribute("Announcement");
				// Make two versions of each marker, one for each map mode.
				var markerDot = createMarker(point, iconDot, partyname, venuename, venueaddress, city, stateprov, country, partydate, site, hostemail, announce);
				var markerYuri = createMarker(point, iconYuri, partyname, venuename, venueaddress, city, stateprov, country, partydate, site, hostemail, announce);
				markersDotIcon.push(markerDot);
				markersYuriIcon.push(markerYuri);
				map.addOverlay(markerDot);
				map.addOverlay(markerYuri);
				markerYuri.hide();
			}
		});

		GEvent.addListener(map, 'zoomend', function(oldzoom, newzoom) {
			if(newzoom >= 6) {
				map.setMapType(G_HYBRID_MAP);
				for (var i = 0; i < markersDotIcon.length; i++) {
					markersDotIcon[i].hide();
					markersYuriIcon[i].show();
				}
			} else {
				map.setMapType(CITY_LIGHTS_MAP);
				for (var i = 0; i < markersDotIcon.length; i++) {
					markersDotIcon[i].show();
					markersYuriIcon[i].hide();
				}
			}
		});
		}
	}
	window.onload=function(){window.onload;initialize()};
	window.onunload=function(){window.onunload;GUnload()};
