       var map;
       var focus;
       var point;
       var geocoder;

       function createHttpRequest(){
         if(window.ActiveXObject){
             try {
                 return new ActiveXObject("Msxml2.XMLHTTP");
             } catch (e) {
                 try {
                     return new ActiveXObject("Microsoft.XMLHTTP");
                 } catch (e2) {
                     return null
                 }
              }
         } else if(window.XMLHttpRequest){
             return new XMLHttpRequest();
         } else {
             return null
         }
       }

       function jump_default(key, depth) {
         geocoder = new GClientGeocoder();
         init();
         jump(key, depth);
       }

       // depth: 0=world, 1=continent, 2=country, 3=district, 4=city, 5=keyword
       function jump(key, depth) {
         if (depth < 5) {
           var http = createHttpRequest();
           var param = '?p='+key+'&d='+depth;

           var urlmenu = 'http://map.fantango.jp/mapajax-menu.cgi' + param;
           
           http.open("GET", urlmenu , false); 
           http.onreadystatechange=function() { if (http.readyState!=4) { } } ;
           http.send(null);
           document.getElementById('menu').innerHTML = http.responseText;
           
           var urllink = 'http://map.fantango.jp/mapajax-link.cgi' + param;
           
           http.open("GET", urllink , false); 
           http.onreadystatechange=function() { if (http.readyState!=4) { } } ;
           http.send(null);
           document.getElementById('link').innerHTML = http.responseText;
         }
         
         var level = 1 + 3 * depth;
         if (key.indexOf("-ku") > 1) {
           key = 'Tokyo ' + key.substr(0, key.indexOf("-ku"));
         } else if (key == 'Tokyo-to') {
           key = 'Tokyo';
         }
         setCenterByKeyword(key, level);
       }

       function init() {
         //document.getElementById("map").innerHTML = "";
         document.getElementById("map").style.width = "640";
         document.getElementById("map").style.height = "640";
         
         if (GBrowserIsCompatible()) {
           G_HYBRID_PHYSICAL_MAP = 
              new GMapType([G_SATELLITE_MAP.getTileLayers()[0], G_HYBRID_MAP.getTileLayers()[1]], G_NORMAL_MAP.getProjection(), "Satellite");

           map = new GMap2(document.getElementById("map"), {mapTypes:[G_HYBRID_PHYSICAL_MAP]});

           //read all tango cities
           var world = new GGeoXml("http://fantango.jp/mobile/cal-all.cgi?all=1");
           map.addOverlay(world);
           
           //GoogleMapsオプション
           map.addMapType(G_NORMAL_MAP);
           //map.addMapType(G_HYBRID_PHYSICAL_MAP);
           map.addMapType(G_SATELLITE_3D_MAP);
           var ctl = new GHierarchicalMapTypeControl();
           map.addControl(ctl);
           map.addControl(new GScaleControl());
           map.addControl(new GLargeMapControl());
           map.enableDoubleClickZoom();
           map.enableContinuousZoom();
           map.enableGoogleBar();
           new GKeyboardHandler(map);
           map.enableScrollWheelZoom();           
         }
         setCenterByLatLng(36.7,137.7,5);
//         setCenterByKeyword('Japan',5);
       }

       function repoint() {
          var center = map.getCenter();
          document.box.lat.value = center.lat();
          document.box.lng.value = center.lng();
       }
       
       function setCenterByKeyword(keyword, level) {
         if (GBrowserIsCompatible()) {
           focus = level;
           if (geocoder) {
              geocoder.getLatLng(
                 keyword, 
                 function(point) {
                   if (!point) {
                   } else {
                       document.box.keyword.value = keyword;
                       map.setCenter(point, focus);
                       map.setMapType(G_HYBRID_PHYSICAL_MAP);
                       repoint();
                   }
                 }
              );
           }
         }
       }
       
       function setCenterByLatLng(latitude, longitude, level) {
         if (GBrowserIsCompatible()) {
           focus = level;
           point = new GLatLng(latitude, longitude);
           map.setCenter(point, focus);
           if (level > 15) {
             map.setMapType(G_NORMAL_MAP);
           }
//           map.panTo(point); map.setZoom(focus);
           repoint();
         }
       }

       function searchAndJump() {
          if (document.box.keyword.value) {
             jump(document.box.keyword.value, 5);
          }
       }

function moveAddress(keyword, level){
  focus = level;
  if (geocoder) {
    geocoder.getLocations(keyword, showMap);
  }
}

function showMap(locations){
  if (locations.Status.code == G_GEO_SUCCESS){
    for (var i = 0; i < locations.Placemark.length; i++){
      var lat = locations.Placemark[i].Point.coordinates[1];
      var lng = locations.Placemark[i].Point.coordinates[0];
      var point = new GLatLng(lat, lng)
      var marker = new GMarker(point);
      map.addOverlay(marker);
      if (i == 0) { map.setCenter(point, focus); repoint(); }
    }
  }
}
  
