    var baseIcon = new GIcon();
    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);
    baseIcon.infoShadowAnchor = new GPoint(18, 25);
    
    function FjbPlace(_id, _lng, _lat, _title, _description, _link) {
      this.id = _id;
      this.point = new GPoint(_lng, _lat);
      this.title = _title;
      this.desc = _description;
      this.link = _link;
      this.marker = null;
      this.markerHtml = null;
      this.createMarker();
    }

    FjbPlace.prototype.createMarker = function() {
      var letter = String.fromCharCode("A".charCodeAt(0) + this.id);
      var icon = new GIcon(baseIcon);
      icon.image = "http://www.google.com/mapfiles/marker" + letter + ".png";
      var marker = new GMarker(this.point, icon);
      
      if (this.link != null) {
        var info = '<b>' + '<a href=' + this.link + ' target=_blank>' + this.title + '</a>'
                     + '</b><br>' + '<font size=-1>' + this.desc + '</font>';
      }
      else {
        var info = '<b>' + this.title + '</b><br>' + '<font size=-1>' + this.desc + '</font>';
      }
      
      info = "<table border='0' width='200'><tr><td>" + info + "</table>";
      GEvent.addListener(marker, "click", function() {
        marker.openInfoWindowHtml (info);
      });
      this.marker = marker;
      this.markerHtml = info;
    }

    function FjbMap(lng, lat) {
      this.places = new Array();
      this.map = new GMap(document.getElementById("map"));
      this.map.addControl(new GSmallMapControl());
      this.map.addControl(new GMapTypeControl());
      this.lng = lng;
      this.lat = lat;
      this.map.centerAndZoom(new GPoint(lng, lat), 1);
    }
    
    FjbMap.prototype.resetPoint = function() {
      this.map.centerAndZoom(new GPoint(this.lng, this.lat), 1);
    }

    FjbMap.prototype.bindMarker = function() {
      for (var i = 0; i < this.places.length; i++) {
        this.map.addOverlay(this.places[i].marker);
      }
    }
    
    FjbMap.prototype.clearMarker = function() {
      this.map.closeInfoWindow();
      while (this.places.length > 0) {
        var place = this.places.shift()
        this.map.removeOverlay(place.marker);
      }
    }
    
    FjbMap.prototype.createPlaceList = function() {
      var slist = '';
      for (var i = 0; i < this.places.length; i++) {
        var place = this.places[i];
        var letter = String.fromCharCode("A".charCodeAt(0) + place.id);

        if (place.link == null) {
          slist = slist + '<li onmouseover="openMarkerMessage(' + i 
                          + ')" onmouseout="closeMarkerMessage()">' 
                          + letter + ". " + place.title;
        }
        else {
          slist = slist + '<li onmouseover="openMarkerMessage(' + i 
                          + ')" onmouseout="closeMarkerMessage()">' 
                          + letter + ". " + '<a href="' + place.link + '" target=_blank>' 
                          + place.title + '</a>';
        }
      }
      return slist;
    }

    FjbMap.prototype.loadPointInfo = function(xmlurl) {
      var request = GXmlHttp.create();
      request.open("GET", xmlurl, true);
      //request.gmap = this;
      request.onreadystatechange = function() {
        if (request.readyState == 4) {
          var gmap = CurMap; //request.gmap;
          var xmlDoc = request.responseXML;
          var markers = xmlDoc.documentElement.getElementsByTagName("marker");
          var _storeList = '';
          
          for (var i = 0; i < markers.length; i++) {
            var title = markers[i].getElementsByTagName("title")[0].firstChild.nodeValue;
            var description = '';
            var descs = markers[i].getElementsByTagName("description");
            if (descs.length > 0)
              description = descs[0].firstChild.nodeValue;
            var link = null;
            var descs = markers[i].getElementsByTagName("link");
            if (descs.length > 0)
              link = descs[0].firstChild.nodeValue;
            jlng = parseFloat(markers[i].getAttribute("lng"));
            jlat = parseFloat(markers[i].getAttribute("lat"));
            wlng = jlng - jlat * 0.000046038 - jlng * 0.000083043 + 0.010040;
            wlat = jlat - jlat * 0.00010695 + jlng * 0.000017464 + 0.0046017;
            
            fjbpp = new FjbPlace(i, wlng, wlat, title, description, link);
            gmap.places.push(fjbpp);
          }
          gmap.bindMarker();
          document.getElementById('storeList').innerHTML = gmap.createPlaceList();
        }
      }
      request.send(null);
    }
