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

  if (GBrowserIsCompatible()) {
	
		function formatMarkerContent (i, gmap, mapjson) {
			var input = mapjson.markers[i];
			
			var html    =  "";
			    if(input.image != null) {
			    html    +=  "<div class=\"midcolimgsmall\"><img class=\"midcolThumb\" src=\""+input.image+"\" height=\"100\" width=\"100\"></div>";
		        }
			    html    +=  "<h2>" + input.artistname;
			    if(input.link != null) {
			    html    += " <span class=\"web\"><a href=\""+input.link+"\" target=\"_blank\">[site]</a></span>";
			    }
			    html    +=  "</h2>";
			    html    +=  "<p><strong>Neighborhood:</strong> "+input.neighborhood+"<br />";
			    html    +=  "<strong>Occupation:</strong> "+input.occupation+"<br />";
				html    +=  "<strong>Age:</strong> "+input.age+"</p>";
				html    +=  "<div class=\"place\">";
				if(input.venueimage != null) {
				html    +=  "<div class=\"midcolimgsmall\"><img class=\"midcolThumb\" src=\""+input.venueimage+"\" height=\"100\" width=\"100\"></div>";
			    }
				html    +=  "<strong>"+input.venue;
				if(input.venuelink != null) {
				    html    += " <span class=\"web\"><a href=\""+input.venuelink+"\" target=\"_blank\">[site]</a></span>";
				}
				html    +=  "</strong><br />";
				html    +=  "<p>"+input.address1+"<br />";
				if(input.address2 != null) {
				html    +=  ""+input.address2+"<br />";
			    }
			    if(input.phone != null) {
				html    +=  input.phone;
			    }
				html    +=  "</p>";
				html    +=  "<p>"+input.quote+"</p>";
			return html;
		}
	
		function makeIcon (category) {
			var icon = new GIcon();
			icon.image = "/images/map/markers/"+category+".png";
			icon.shadow = "/images/map/markers/marker_shadow.png";
			icon.iconSize = new GSize(18, 30);
			icon.shadowSize = new GSize(30, 30);
			icon.iconAnchor = new GPoint(8, 30);
			icon.infoShadowAnchor = new GPoint(0, 0);
			icon.infoWindowAnchor = new GPoint(5, 1);	
			return icon;
		}
		
		function loadIntro(mapjson){
			document.getElementById("mapcontent").innerHTML = mapjson.intro;
		}
	
	    function loadContent(i, gmap, mapjson) {
			var marker = gmap.getMarkerById(i);
	        var input = mapjson.markers[i];
			var pt = marker.getPoint();
	        gmap.panTo(pt);
	        var content = formatMarkerContent(i, gmap, mapjson);	
	        var mark = gmap.getFirstMarker();
			while (mark != null) {
				mark.hideTooltip(mark);
				mark.setMouseOutEnabled(true);
			    mark = gmap.getNextMarker();
			}
			
		    document.getElementById("mapcontent").innerHTML = content;
		
			marker.showTooltip(marker);
	        if (marker.getMouseOutEnabled()) {
				marker.setMouseOutEnabled(false);
			} else {
		        marker.setMouseOutEnabled(true); // hide after hover
			}
		
	    }
	
		function addtoNav(i, mapjsonmarker, listobj){    
	        var elem=$(i);	
	        var name = mapjsonmarker.artistname;
	        var venue = mapjsonmarker.venue;
            //document.getElementById(listobj).innerHTML +=  '<option value="'+i+'">'+name+'</option>';
			var option = '<option value="' + i + '">'+name+': '+venue+'</option>';
			$j("#artistselector").append(option);		
	    }
	   
		function createMarker(i, gmap) {
		    var input = mapjson.markers[i];
			var marker = new PdMarker(input.point, makeIcon(input.category) );
			marker.setId(i);
			marker.allowLeftTooltips(false);
			marker.setTooltip("<div class='labelframe'><div class='tlabel'><nobr>"+input.artistname+": "+input.venue+"</nobr></div></div>");			
		        GEvent.addListener(marker, "click", function() {
				    loadContent(i, gmap, mapjson);
			    });
			return marker;
		}
	
	   function loadMarkers(gmap, mapjson){
		
			MochiKit.Signal.connect('artistselector', 'onchange', function(e) {
			   e.stop();
			   var v= this.options[this.selectedIndex].value;
			   loadContent(v, gmap, mapjson);
			  });
		
			for (var i = 0; i < mapjson.markers.length; i++) {
				
				addtoNav(i, mapjson.markers[i], "artistselector");
				
				if (mapjson.markers[i]) {
				    var marker = createMarker(i, gmap);
				    gmap.addOverlay(marker);
			        //doNavEvents(i, gmap);
		        }
				//if(i == 0){
				    //this will load content for the first point
				    //loadContent(i, gmap, mapjson);
			    //}
		    }
		
		
		   loadIntro(mapjson);
		
		
	   }
	
		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 = 11;
			}
			
			gmap.setCenter( mapjson.centerpoint, focus );
			
			loadMarkers(gmap, mapjson);
		});
	
	
  } else {
	alert("Sorry, your browser cannot display Google Maps.");
    }	
	
}