

  var iconBlue = new GIcon(); 
  iconBlue.image = 'http://labs.google.com/ridefinder/images/mm_20_blue.png';
  iconBlue.shadow = 'http://labs.google.com/ridefinder/images/mm_20_shadow.png';
  iconBlue.iconSize = new GSize(12, 20);
  iconBlue.shadowSize = new GSize(22, 20);
  iconBlue.iconAnchor = new GPoint(6, 20);
  iconBlue.infoWindowAnchor = new GPoint(5, 1);

  var iconRed = new GIcon(); 
  iconRed.image = 'http://labs.google.com/ridefinder/images/mm_20_red.png';
  iconRed.shadow = 'http://labs.google.com/ridefinder/images/mm_20_shadow.png';
  iconRed.iconSize = new GSize(12, 20);
  iconRed.shadowSize = new GSize(22, 20);
  iconRed.iconAnchor = new GPoint(6, 20);
  iconRed.infoWindowAnchor = new GPoint(5, 1);

  var customIcons = [];
  customIcons["restaurant"] = iconBlue;
  customIcons["bar"] = iconRed;
  var markerGroups = { "restaurant": [], "bar": []};

  var map = null;

  function load() {
    if (GBrowserIsCompatible()) {
      map = new GMap2(document.getElementById("map"));
      map.setCenter(new GLatLng( 48.153091,17.129709), 13);
      map.addControl(new GLargeMapControl());

      GDownloadUrl("markerdata.xml", function(data) {
        var xml = GXml.parse(data);
        var markers = xml.documentElement.getElementsByTagName("marker");

        for (var i = 0; i < markers.length; i++) {
          var name = markers[i].getAttribute("name");
          var text = markers[i].getAttribute("html");
          var type = markers[i].getAttribute("type");
          var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
                                  parseFloat(markers[i].getAttribute("lng")));
          var marker = createMarker(point, name, text, type);
          map.addOverlay(marker);
          toggleGroup('restaurant');
        }
      });
    }
  }

  function createMarker(point, name, text, type) {
    var marker = new GMarker(point, customIcons[type]);
    markerGroups[type].push(marker);
    var html = "<h3>" + name + "</h3>" + text;
    GEvent.addListener(marker, 'click', function() {
      marker.openInfoWindowHtml(html);
    });
    return marker;
  }
  function toggleGroup(type) {
    for (var i = 0; i < markerGroups[type].length; i++) {
      var marker = markerGroups[type][i];
      if (marker.isHidden()) {
        marker.show();
      } else {
        marker.hide();
      }
    } 
  }
