$(document).ready(function() {
    if (!GBrowserIsCompatible()) {
        return;
    }

	//embed Open Street Map tiles
	var copyOSM = new GCopyrightCollection("<a href=\"http://www.openstreetmap.org/\">OpenStreetMap</a>");
	copyOSM.addCopyright(new GCopyright(1, new GLatLngBounds(new GLatLng(-90,-180), new GLatLng(90,180)), 0, " "));

	var tilesMapnik = new GTileLayer(copyOSM, 1, 17, {tileUrlTemplate: 'http://tile.openstreetmap.org/{Z}/{X}/{Y}.png'});
	var mapMapnik = new GMapType([tilesMapnik],G_NORMAL_MAP.getProjection(),"Map");

    // Initialise the map
    var mapDiv = $('<div id="places-map"></div>').insertAfter('h3#places');
    var gmap = new GMap2(mapDiv.get(0),{ mapTypes: [mapMapnik, G_SATELLITE_MAP] });
    var point = new GLatLng(50.821, -0.13242);
    gmap.addControl(new GSmallMapControl());
    gmap.addControl(new GMapTypeControl());
    gmap.setCenter(point, 16);
    
//    var currentMarker = false; // So we can hide it later

	// Create a base icon for all of our markers that specifies the
	// shadow, icon dimensions, etc.
	var baseIcon = new GIcon(G_DEFAULT_ICON);
	baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
	baseIcon.iconSize = new GSize(20, 34);
	baseIcon.shadowSize = new GSize(37, 34);
	baseIcon.iconAnchor = new GPoint(9, 34);
	baseIcon.infoWindowAnchor = new GPoint(9, 2);


    // Display the vcards on the map
    $('.vcard').each(function() {
        var vcard = $(this);
        var geo = vcard.find('.geo[title]');
        if (geo.length && /;/.exec(geo.attr('title'))) {
            var degrees = geo.attr('title').split(';');
            var lat = parseFloat(degrees[0]);
            var lon = parseFloat(degrees[1]);
            vcard.css('cursor', 'pointer');
//             vcard.click(function() {
//                 if (currentMarker) {
//                     gmap.removeOverlay(currentMarker);
//                 }
//                 $('.current-vcard').removeClass('current-vcard');
//                 vcard.addClass('current-vcard');
//                 var point = new GLatLng(lat, lon);
//                 var marker = new GMarker(point);
//                 currentMarker = marker;
//                 GEvent.addListener(marker, "click", function() {
//                     marker.openInfoWindowHtml(vcard.html());
//                 });
//                 gmap.addOverlay(marker);
//                 gmap.panTo(point);
//             });
			var point = new GLatLng(lat, lon);
			var marker = new GMarker(point);
			currentMarker = marker;
			GEvent.addListener(marker, "click", function() {
				marker.openInfoWindowHtml(vcard.html());
			});
			gmap.addOverlay(marker);
        }
    });
});

