    //<![CDATA[

    if (GBrowserIsCompatible()) {
      var gmarkers = [];
      var gicons = [];
      var i = 0;

      // Hieronder worden de icons gemaakt
      
      // This icon uses the same shape as the default Google marker
      // So we can use its details for everything except the image 
      var stalIcon = new GIcon();
      stalIcon.image = "images/icons/icon_stal.png";
      stalIcon.shadow = "images/icons/icon_shadow.png";
      stalIcon.iconSize = new GSize(31, 31);
      stalIcon.shadowSize = new GSize(37, 34);
      stalIcon.iconAnchor = new GPoint(9, 34);
      stalIcon.infoWindowAnchor = new GPoint(20, 2);
      stalIcon.infoShadowAnchor = new GPoint(18, 25);
      stalIcon.transparent = "http://www.google.com/intl/en_ALL/mapfiles/markerTransparent.png";

      // This icon is a different shape, so we need our own settings       
      var fokkerijIcon = new GIcon();
      fokkerijIcon.image = "images/icons/icon_fokkerij.png";
      fokkerijIcon.shadow = "images/icons/icon_shadow.png";
      fokkerijIcon.iconSize = new GSize(31, 31);
      fokkerijIcon.shadowSize = new GSize(37, 34);
      fokkerijIcon.iconAnchor = new GPoint(9, 34);
      fokkerijIcon.infoWindowAnchor = new GPoint(20, 2);
      fokkerijIcon.infoShadowAnchor = new GPoint(2, 25);
      fokkerijIcon.transparent = "http://www.google.com/intl/en_ALL/mapfiles/markerTransparent.png";

	  // This icon is a different shape, so we need our own settings       
      var rijverenigingIcon = new GIcon();
      rijverenigingIcon.image = "images/icons/icon_rijvereniging.png";
      rijverenigingIcon.shadow = "images/icons/icon_shadow.png";
      rijverenigingIcon.iconSize = new GSize(31, 31);
      rijverenigingIcon.shadowSize = new GSize(37, 34);
      rijverenigingIcon.iconAnchor = new GPoint(9, 34);
      rijverenigingIcon.infoWindowAnchor = new GPoint(20, 2);
      rijverenigingIcon.infoShadowAnchor = new GPoint(18, 25);
      rijverenigingIcon.transparent = "http://www.google.com/intl/en_ALL/mapfiles/markerTransparent.png";

      // This icon is a different shape, so we need our own settings       
      var manegeIcon = new GIcon();
      manegeIcon.image = "images/icons/icon_manege.png";
      manegeIcon.shadow = "images/icons/icon_shadow.png";
      manegeIcon.iconSize = new GSize(31, 31);
      manegeIcon.shadowSize = new GSize(37, 34);
      manegeIcon.iconAnchor = new GPoint(9, 34);
      manegeIcon.infoWindowAnchor = new GPoint(20, 2);
      manegeIcon.infoShadowAnchor = new GPoint(18, 25);
      manegeIcon.transparent = "http://www.google.com/intl/en_ALL/mapfiles/markerTransparent.png";
      
      // This icon is a different shape, so we need our own settings       
      var kondelierIcon = new GIcon();
      kondelierIcon.image = "images/icons/icon_kondelier.png";
      kondelierIcon.shadow = "images/icons/icon_shadow.png";
      kondelierIcon.iconSize = new GSize(31, 31);
      kondelierIcon.shadowSize = new GSize(37, 34);
      kondelierIcon.iconAnchor = new GPoint(9, 34);
      kondelierIcon.infoWindowAnchor = new GPoint(20, 2);
      kondelierIcon.infoShadowAnchor = new GPoint(18, 25);
      kondelierIcon.transparent = "http://www.google.com/intl/en_ALL/mapfiles/markerTransparent.png";

      // An array of GIcons, to make the selection easier
      var icons = [];
      icons["kondelier"] = kondelierIcon;
      icons["stal"] = stalIcon;
      icons["fokkerij"] = fokkerijIcon;
      icons["rijvereniging"] = rijverenigingIcon;
      icons["manege"] = manegeIcon;


      // A function to create the marker and set up the event window
      function createMarker(point,name,html,category,label) {
        var marker = new GMarker(point,icons[category]);
        // === Store the category and name info as a marker properties ===
        marker.mycategory = category;                                 
        marker.myname = name;
		marker.tooltip = '<div class="tooltip">'+label+'</div>';
        GEvent.addListener(marker, "mouseover", function() {
          showTooltip(marker);
        });
        GEvent.addListener(marker, "mouseout", function() {
          tooltip.style.visibility="hidden"
        });
        GEvent.addListener(marker, "click", function() {
          marker.openInfoWindowHtml(html);
          map.setCenter(point, 12);
        });
        gmarkers.push(marker);
        return marker;
      }


function showTooltip(marker) {
tooltip.innerHTML = marker.tooltip;
var point=map.getCurrentMapType().getProjection().fromLatLngToPixel(map.getBounds().getSouthWest(),map.getZoom());
var offset=map.getCurrentMapType().getProjection().fromLatLngToPixel(marker.getPoint(),map.getZoom());
var anchor=marker.getIcon().iconAnchor;
var width=marker.getIcon().iconSize.width;
var pos = new GControlPosition(G_ANCHOR_BOTTOM_LEFT, new GSize(offset.x - point.x - anchor.x + width,- offset.y + point.y +anchor.y));
pos.apply(tooltip);
tooltip.style.visibility="visible";
}

      // This function picks up the side_bar click and opens the corresponding info window
      function myclick(i) {
        gmarkers[i].openInfoWindowHtml(htmls[i]);
      }


	// == shows all markers of a particular category, and ensures the checkbox is checked ==
      function show(category) {
        for (var i=0; i<gmarkers.length; i++) {
          if (gmarkers[i].mycategory == category) {
            gmarkers[i].show();
          }
        }
        // == check the checkbox ==
        document.getElementById(category+"box").checked = true;
      }

      // == hides all markers of a particular category, and ensures the checkbox is cleared ==
      function hide(category) {
        for (var i=0; i<gmarkers.length; i++) {
          if (gmarkers[i].mycategory == category) {
            gmarkers[i].hide();
          }
        }
        // == clear the checkbox ==
        document.getElementById(category+"box").checked = false;
        // == close the info window, in case its open on a marker that we just hid
        map.closeInfoWindow();
      }

      // == a checkbox has been clicked ==
      function boxclick(box,category) {
        if (box.checked) {
          show(category);
        } else {
          hide(category);
        }
        // == rebuild the side bar
        makeSidebar();
      }

      function myclick(i) {
        GEvent.trigger(gmarkers[i],"click");
      }


      // == rebuilds the sidebar to match the markers currently displayed ==
      function makeSidebar() {
        var html = "";
        for (var i=0; i<gmarkers.length; i++) {
          if (!gmarkers[i].isHidden()) {
            html += '<a href="javascript:myclick(' + i + ')">' + gmarkers[i].myname + '</a><br>';
          }
        }
        document.getElementById("side_bar").innerHTML = html;
      }


      // create the map
      var map = new GMap2(document.getElementById("map"));
      map.addControl(new GLargeMapControl());
      map.addControl(new GMapTypeControl());
	  map.addControl(new GOverviewMapControl());
	  map.addControl(new GScaleControl());
      map.setCenter(new GLatLng(52.07128,5.12211), 11, G_NORMAL_MAP);
	  geocoder = new GClientGeocoder();

	function showAddress(address) {
	if (geocoder) {
	geocoder.getLatLng(
	address,
	function(point) {
	if (!point) {
	alert(address + " * De gekozen locatie is niet gevonden!");
	} else {
	map.setCenter(point, 12);
	//var marker = new GMarker(point);
	//map.addOverlay(marker);
	//marker.openInfoWindowHtml(address);
	}
	}
	);
	}
	}


// ====== set up marker mouseover tooltip div ======
      var tooltip = document.createElement("div");
      document.getElementById("map").appendChild(tooltip);
      tooltip.style.visibility="hidden";



      // Read the data
      GDownloadUrl("xml/data.xml", function(doc) {
        var xmlDoc = GXml.parse(doc);
        var markers = xmlDoc.documentElement.getElementsByTagName("marker");
          
        for (var i = 0; i < markers.length; i++) {
          // obtain the attribues of each marker
          var lat = parseFloat(markers[i].getAttribute("lat"));
          var lng = parseFloat(markers[i].getAttribute("lng"));
          var point = new GLatLng(lat,lng);
          var html = markers[i].getAttribute("html");
          var category = markers[i].getAttribute("category");
          var icontype = parseInt(markers[i].getAttribute("icontype"));
		  var label = markers[i].getAttribute("label");
		  // create the marker
          var marker = createMarker(point,name,html,category,label);
          map.addOverlay(marker);
        }

        // == show or hide the categories initially ==
        show("stal");
        show("fokkerij");
        show("rijvereniging");
        show("manege");
        // == create the initial sidebar ==
        makeSidebar();
      });
    }

    else {
      alert("Sorry, the Google Maps API is not compatible with this browser");
    }
    // This Javascript is based on code provided by the
    // Blackpool Community Church Javascript Team
    // http://www.commchurch.freeserve.co.uk/   
    // http://econym.googlepages.com/index.htm

    //]]>

