// ******* ********* ********* ********* ********* ********* ********* *********
//
// 2008/05 by jap1968 - http://netpatia.blogspot.com
//
// ******* ********* ********* ********* ********* ********* ********* *********

var map;
var previousMaptypeName;

// ******* ********* ********* ********* ********* ********* ********* *********

function mapsLoaded() {
  previousMaptypeName = "";
  map = new google.maps.Map2(document.getElementById("map"));
  map.addControl(new google.maps.LargeMapControl());
  map.addControl(new google.maps.MapTypeControl());

  // map.addMapType(G_PHYSICAL_MAP);
  map.removeMapType(G_HYBRID_MAP);
  // map.removeMapType(G_NORMAL_MAP);
  map.enableDoubleClickZoom();
  map.enableScrollWheelZoom();
  map.enableContinuousZoom();
  map.setCenter(new GLatLng(39.90565, 116.39105), 13);
  map.setMapType(G_SATELLITE_MAP);

  // ============================================================
  // ====== Custom maptype (http://ditu.google.cn) ==============

  dituGetTileUrl = function(a, b){
    b = this.maxResolution() - b;
    var server = (a.x + a.y) % 4;
    return "http://mt" + server + ".google.cn/mt?v=cn1.0&hl=zh-CN&x=" + a.x + "&y=" + a.y + "&zoom=" + b;
  } 
  
  var tilelayers = [new GTileLayer(new GCopyrightCollection("Map: http://ditu.google.cn"), 8, 17)];
  tilelayers[0].getTileUrl = dituGetTileUrl;
  tilelayers[0].getCopyright = function(a,b) {
    return {prefix:"Map: ", copyrightTexts:["http://ditu.google.cn"]};
  }
  
  var dituMap = new GMapType(tilelayers, G_SATELLITE_MAP.getProjection(), "DITU", {errorMessage:"Error loading images from Google DITU"});
  map.addMapType(dituMap);

  // ============================================================

    GEvent.addListener(map, "maptypechanged", function(){
      var maptype = map.getCurrentMapType();
      var maptypeName = maptype.getName(false);
      if (maptypeName == "DITU") {
        var oldCenter = map.getCenter();
        var newCenter = new GLatLng(oldCenter.lat() + 0.00143, oldCenter.lng() + 0.00613);
        map.setCenter(newCenter);
      }
      else {
        if (previousMaptypeName == "DITU") {
          var oldCenter = map.getCenter();
          var newCenter = new GLatLng(oldCenter.lat() - 0.00143, oldCenter.lng() - 0.00613);
          map.setCenter(newCenter);
        }
      }
      previousMaptypeName = maptypeName;
    } );
}

// ******* ********* ********* ********* ********* ********* ********* *********

function loadMaps() {
  google.load("maps", "2", {"callback" : mapsLoaded});
}

// ******* ********* ********* ********* ********* ********* ********* *********