function loadmap(mapfile) {
  var map = document.getElementById("feature_map");

  if (GBrowserIsCompatible()) {
	
		function makeIcon (category) {
			var icon = new GIcon();
			icon.image = "/images/map/markers/indicators/"+category+".png";
			icon.iconSize = new GSize(25, 25);
			icon.iconAnchor = new GPoint(8, 30);
			icon.infoWindowAnchor = new GPoint(5, 1);	
			return icon;
		}
		
		function gup(query, url) {
		  query = query.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
		  var regexS = "[\\?&]"+query+"=([^&#]*)";
		  var regex = new RegExp( regexS );
		  var results = regex.exec(url);
		  if( results == null )
		    return "";
		  else
		    return results[1];
		}
		
		function formatMarkerContent (i, gmap, mapjson) {
			var input = mapjson[i];
			
			var html =  "";
			
			if(input.title.length > 0) {
			html    += "<h2>"+input.title+"</h2>";
		    }
		    if(input.name.length > 0) {
			html    += "<h3>By "+input.name;
			
			if(input.submitted_at.length > 0) {
			var dsubmitted_at = isoTimestamp(input.submitted_at);
			var subdate = strftime(dsubmitted_at, "%B %e, %I:%M %p");
			
			html    += " - "+subdate;
		    }
		
		    html   += "</h3>";
			
		    }
			
			if(input.video_url.length > 0) {
			var url_vid = gup("v", input.video_url);
			var vid_url = "http://www.youtube.com/v/"+url_vid;	
		    html    +=  "<div class=\"map_video\">";
		    html    +=  "<object width=\"250\" height=\"203\">";
		    html    +=  "<param name=\"movie\" value=\""+vid_url+"\"></param>";
		    html    +=  "<param name=\"allowFullScreen\" value=\"true\"></param>";
		    html    +=  "<param name=\"allowscriptaccess\" value=\"always\"></param>";
		    html    +=  "<embed src=\""+vid_url+"\" type=\"application/x-shockwave-flash\" allowscriptaccess=\"always\" allowfullscreen=\"true\" width=\"250\" height=\"203\"></embed>";
		    html    +=  "</object>";
		    html    +=  "</div>";
	        }
	
	        if(input.photo != null) {
		    html    +=  "<img class=\"map_image\" src=\""+input.photo+"\" />"; 
		    }
	
	        if(input.audio_url != null) {
		    html    +=  "<div class=\"map_audio\">";
		    html    +=  "<div class=\"storyplayer\" id=\"storyplayer\">";
		    html    +=  "<a class=\"listen\" href=\""+input.audio_url+"\">Download .mp3</a>";
		    html    +=  "</div>";
		    html    +=  "</div>";
	        }
	
	        html    +=  "<p class=\"address\">"+input.address1+" "+input.address2+"</p>";
	
	        if(input.story.length > 0) {
	        html    +=  input.story;
            }

			return html;
		}
		
		function loadContent(i, gmap, mapjson) {
			var marker = gmap.getMarkerById(i);
	        var input = mapjson[i];
			var pt = marker.getPoint();
	        gmap.panTo(pt);
	        var content = formatMarkerContent(i, gmap, mapjson);
	        document.getElementById("map_story_contents").innerHTML = content;
	
	        if(input.audio_url != null) {
	        var randomnum=Math.floor(Math.random()*99999);
			var swfUrl='/flashplayer/mp3player_blog.swf?nocache='+randomnum+'&displayheight=0&file=http://audio.wnyc.org/news/news_latest_newscast.mp3&plugins=googlytics_1-0';
			var stplayer = new SWFObject(swfUrl, "newscastplayer", "250", "19", "7", "#ffffff");
			stplayer.addParam("allowScriptAccess", "always");
			stplayer.addParam("wmode", "transparent");
			stplayer.write("storyplayer");
		    }
	
			$j("#map_story").fadeIn("slow");
		}

		function createMarker(i, gmap) {
		    var input = mapjson[i];
		    var point = new GLatLng(input.latitude, input.longitude);
			var marker = new PdMarker(point, makeIcon(input.category) );
			marker.setId(i);
			
		        GEvent.addListener(marker, "click", function() {
				    loadContent(i, gmap, mapjson);
			    });
			return marker;
		}

		function loadMarkers(gmap, mapjson){
			
			for (var i = 0; i < mapjson.length; i++) {

				if (mapjson[i]) {
				    var marker = createMarker(i, gmap);
				    gmap.addOverlay(marker);
		        }
		    }
	   }

	
		function parsemapjson (doc) {		
			var mapjsonData = eval("(" + doc + ")");
			return mapjsonData;		
		}
	
	/* ------------------------------------------ */
	
		GDownloadUrl(mapfile, function(data, responseCode) { 
			mapjson = parsemapjson(data);
			//make map
			var gmap = new GMap2(map);
			gmap.addControl( new GSmallMapControl() );
			gmap.addControl( new GMapTypeControl()) ;
			gmap.addControl( new GOverviewMapControl(new GSize(100,100)) );
			
			if(mapjson.focus != null) {
			    var focus = mapjson.focus;
			} else {
				var focus = 13;
			}
			
			var mapcenter = new GLatLng(40.737072, -73.980516);
			
			gmap.setCenter( mapcenter, focus );
			
			loadMarkers(gmap, mapjson);
		});
	
  } else {
	alert("Sorry, your browser cannot display Google Maps.");
    }	
	
}