	var icon = Array();
	icon[0] = new GIcon();
	icon[0].image = "./img/R20.png";
	icon[0].iconSize = new GSize(20,20);
	icon[0].iconAnchor = new GPoint(10,10);
	icon[0].infoWindowAnchor = new GPoint(10,10);

	icon[1] = new GIcon();
	icon[1].image = "./img/E20.png";
	icon[1].iconSize = new GSize(20,20);
	icon[1].iconAnchor = new GPoint(10,10);
	icon[1].infoWindowAnchor = new GPoint(10,10);

	icon[2] = new GIcon();
	icon[2].image = "./img/W20.png";
	icon[2].iconSize = new GSize(20,20);
	icon[2].iconAnchor = new GPoint(10,10);
	icon[2].infoWindowAnchor = new GPoint(10,10);

	icon[3] = new GIcon();
	icon[3].image = "./img/N20.png";
	icon[3].iconSize = new GSize(20,20);
	icon[3].iconAnchor = new GPoint(10,10);
	icon[3].infoWindowAnchor = new GPoint(10,10);

	icon[4] = new GIcon();
	icon[4].image = "./img/M20.png";
	icon[4].iconSize = new GSize(20,20);
	icon[4].iconAnchor = new GPoint(10,10);
	icon[4].infoWindowAnchor = new GPoint(10,10);

    if (GBrowserIsCompatible()) {

      var map = new GMap2(document.getElementById("map"));
      map.addControl(new GLargeMapControl(),
         new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(6, 56)));
      map.addControl(new GMapTypeControl(),
         new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(72, 56)));
      map.addControl(new GScaleControl(300));
      map.setCenter(new GLatLng(36.393237, 140.524149), 14);
      map.enableContinuousZoom();
      map.enableDoubleClickZoom();
      map.enableScrollWheelZoom();
      geocoder = new GClientGeocoder();

      var tooltip = document.createElement("div");
      document.getElementById("map").appendChild(tooltip);
      tooltip.style.visibility="hidden";

    var sidebar_html = "";
    var gmarkers = [];
    var htmls = [];
    var i = 0;
      function createMarker(point, name, html, n, info, ms) {
	if (info < 0) {
	  var imn = [i+ms-1];
	  var ipl = [i+1];
	} else if (info > 0) {
	  var imn = [i-1];
	  var ipl = [i-ms+1];
	} else {
	  var imn = [i-1];
	  var ipl = [i+1];
	}
        var html = "<div style='white-space: nowrap; padding-top: 6px;'>" + html + "<br /><a href='javascript:myclick("+imn+");'><img src='http://www.google.com/intl/en_ALL/mapfiles/west-mini.png' width='18' height='18' alt='prev' title='prev'/><\/a>&nbsp;<a href='javascript:myclick("+ipl+");'><img src='http://www.google.com/intl/en_ALL/mapfiles/east-mini.png' width='18' height='18' alt='next' title='next'/><\/a>&nbsp;<a href='javascript:myzoomin("+i+");'><img src='http://www.google.com/intl/en_ALL/mapfiles/zoom-plus-mini.png' width='18' height='18' alt='plus' title='zoom-in'/><\/a>&nbsp;<a href='javascript:myzoomout("+i+");'><img src='http://www.google.com/intl/en_ALL/mapfiles/zoom-minus-mini.png' width='18' height='18' alt='minus' title='zoom-out'/><\/a><\/div>";
        var marker = new GMarker(point, icon[n]);
        
        GEvent.addListener(marker, "click", function() {
          marker.openInfoWindowHtml(html);
        });
        GEvent.addListener(marker,"mouseover", function() {
          showTooltip(marker);
        });
        GEvent.addListener(marker,"mouseout", function() {
		tooltip.style.visibility="hidden"
        });
        marker.tooltip = '<div class="tooltip">' + name + '<\/div>';
        gmarkers[i] = marker;
        htmls[i] = html;
        sidebar_html += '<a href="javascript:myclick(' + i + ')">' + name + '<\/a><br>';
        i++;
        return marker;
      }
      function myclick(i) {
	gmarkers[i].openInfoWindowHtml(htmls[i]);
      }
      function myzoomin(i) { 
        map.setCenter(gmarkers[i].point, 17);
      }
      function myzoomout(i) { 
        map.setCenter(gmarkers[i].point, 14); 
      }

      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 -10 + width,- offset.y + point.y +anchor.y -12)); 
	pos.apply(tooltip);
	tooltip.style.visibility="visible";
      }
      function mymouseover(i) {
        showTooltip(marker)
      }
      function mymouseout(i) {
	tooltip.style.visibility="hidden";
      }

      function readMap(url) {
        var request = GXmlHttp.create();
        request.open("GET", url, true);
        request.onreadystatechange = function() {
          if (request.readyState == 4) {
            var xmlDoc = request.responseXML;
            var markers = xmlDoc.documentElement.getElementsByTagName("marker");
            map.getInfoWindow().hide();
            map.clearOverlays();
            gmarkers = [];
            sidebar_html="";
            for (var i = 0; i < markers.length; i++) {
              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 label = markers[i].getAttribute("label");
              var n = markers[i].getAttribute("n");
	      if (i == 0) {
		var stfn = -1;
	      } else if (i == markers.length-1) {
		var stfn = 1;
	      } else {
		var stfn = 0;
	      }
              var marker = createMarker(point, label, html, n, stfn, markers.length);
              map.addOverlay(marker);
            }
            document.getElementById("sidebar").innerHTML = sidebar_html;

	  if (url.indexOf("all") > 0) {
	    map.addOverlay(new GGeoXml("http://hazyinfo.net/maps/js/KatsutaEast.kml"));
	    map.addOverlay(new GGeoXml("http://hazyinfo.net/maps/js/KatsutaWest.kml"));
	    map.addOverlay(new GGeoXml("http://hazyinfo.net/maps/js/KatsutaNorth.kml"));
	    map.addOverlay(new GGeoXml("http://hazyinfo.net/maps/js/Nakaminato.kml"));
	    map.addOverlay(new GGeoXml("http://hazyinfo.net/maps/js/HitachinakaRound.kml"));
	  }
	  else {
	    map.addOverlay(new GGeoXml("http://hazyinfo.net/maps/" + url.substr(0,url.lastIndexOf('.')+1) + "kml"));
	  }
          var lines = xmlDoc.documentElement.getElementsByTagName("line");
          for (var a = 0; a < lines.length; a++) {
            var color = lines[a].getAttribute("color");
            var width  = parseFloat(lines[a].getAttribute("width"));
            var opacity  = parseFloat(lines[a].getAttribute("opacity"));
            var points = lines[a].getElementsByTagName("point");
            var pts = [];
            for (var i = 0; i < points.length; i++) {
               pts[i] = new GLatLng(parseFloat(points[i].getAttribute("lat")), parseFloat(points[i].getAttribute("lng")));
            }
            map.addOverlay(new GPolyline(pts, color, width, opacity));
          }
          }
        }
        request.send(null);
      }
    }

    function showAddress(address) {
      if (geocoder) {
        geocoder.getLatLng(
          address,
          function(point) {
            if (!point) {
              alert(address + " not found");
            } else {
              map.setCenter(point, 13);
              var marker = new GMarker(point);
              map.addOverlay(marker);
              marker.openInfoWindowHtml(address);
            }
          }
        );
      }
    }
