function createWindowMarker(point, icontype, label, link) {
  var marker = new GMarker(point, {icon: icontype, title: label});
  GEvent.addListener(marker, "click", function() {
    hs.expand(document.getElementById(link));
  });
  return marker;
}

function createLinkMarker(point, icontype, label, link) {
  var marker = new GMarker(point, {icon: icontype, title: label});
  GEvent.addListener(marker, "click", function() {
    self.location.href = link;
  });
  return marker;
}

function showalbum(link) {
  hs.expand(document.getElementById(link));
}

function showmap(xmlfile) {
  if (GBrowserIsCompatible()) {
    var gicons = [];
    gicons["home"] = new GIcon(G_DEFAULT_ICON, "http://maps.google.com/mapfiles/kml/pal2/icon2.png");
    gicons["foto"] = new GIcon(G_DEFAULT_ICON, "http://maps.google.com/mapfiles/kml/pal4/icon46.png");
    gicons["camping"]  = new GIcon(G_DEFAULT_ICON, "http://maps.google.com/mapfiles/kml/pal2/icon20.png");
    gicons["end"]  = new GIcon(G_DEFAULT_ICON, "http://maps.google.com/mapfiles/kml/pal3/icon27.png");
    gicons["overview"] = new GIcon(G_DEFAULT_ICON, "resources/mapicon.png");
    gicons["overview"].iconSize = new GSize(6, 6);
    gicons["overview"].shadowSize = new GSize(6, 6);
    gicons["overview"].iconAnchor = new GPoint(3, 3);
    var request = GXmlHttp.create();
    request.open("GET", xmlfile, true);

    request.onreadystatechange = function() {
      if (request.readyState == 4) {
        var xmlDoc = GXml.parse(request.responseText);
        var routen = xmlDoc.documentElement.getElementsByTagName("route");
        var map = new GMap2(document.getElementById("map"));
        map.addControl(new GLargeMapControl());
        map.addControl(new GMapTypeControl());
        for (var i = 0; i < routen.length; i++) {
          var center_n = parseFloat(routen[i].getAttribute("center_n"));
          var center_e = parseFloat(routen[i].getAttribute("center_e"));
          var level = parseInt(routen[i].getAttribute("level"));
          var color = routen[i].getAttribute("color");
          var width = parseInt(routen[i].getAttribute("width"));
          var points = routen[i].getElementsByTagName("p");
          var pts = [];
          for (var j = 0; j < points.length; j++) {
            pts[j] = new GLatLng(parseFloat(points[j].getAttribute("n")),
                                 parseFloat(points[j].getAttribute("e")));
          }
          map.setCenter(new GLatLng(center_n, center_e), level);
          map.addOverlay(new GPolyline(pts,color,width));
        }
        var img_html = "";
        var markers = xmlDoc.documentElement.getElementsByTagName("m");
        for (var i = 0; i < markers.length; i++) {
          var pos_n = parseFloat(markers[i].getAttribute("n"));
          var pos_e = parseFloat(markers[i].getAttribute("e"));
          var icon = markers[i].getAttribute("icon");
          var label = markers[i].getAttribute("label");
          var link = markers[i].getAttribute("link");
          var point = new GLatLng(pos_n,pos_e);
          if(icon == "overview") {
            var marker = createLinkMarker(point, gicons[icon], label, "gpsbilder/" + link);
          } else {
            var marker = createWindowMarker(point, gicons[icon], label, link);
          }
          map.addOverlay(marker);
        }
      }
    }
    request.send(null);
  } else {
    alert("Google Maps k&ouml;nnen mit Ihrem Browser nicht dargestellt werden.");
  }
}

