docs: function() {
          if (!this.type) {
              this.type = G_NORMAL_MAP;
          }
          var mapObject, termsOfUse, poweredBy;
          var cache = OpenLayers.Layer.Google.cache[this.map.id];
          if (cache) {
              // there are already Google layers added to this map
              mapObject = cache.mapObject;
              termsOfUse = cache.termsOfUse;
              poweredBy = cache.poweredBy;
              // increment the layer count
              ++cache.count;
          } else {
              // this is the first Google layer for this map
  
              var container = this.map.viewPortDiv;
              var div = document.createElement("div");
              div.id = this.map.id + "_GMap2Container";
              div.style.position = "absolute";
              div.style.width = "100%";
              div.style.height = "100%";
              container.appendChild(div);
  
              // create GMap and shuffle elements
              try {
                  mapObject = new GMap2(div);
                  
                  // move the ToS and branding stuff up to the container div
                  termsOfUse = div.lastChild;
                  container.appendChild(termsOfUse);
                  termsOfUse.style.zIndex = "1100";
                  termsOfUse.style.right = "";
                  termsOfUse.style.bottom = "";
                  termsOfUse.className = "olLayerGoogleCopyright";
  
                  poweredBy = div.lastChild;
                  container.appendChild(poweredBy);
                  poweredBy.style.zIndex = "1100";
                  poweredBy.style.right = "";
                  poweredBy.style.bottom = "";
                  poweredBy.className = "olLayerGooglePoweredBy gmnoprint";
                  
              } catch (e) {
                  throw(e);
              }
              // cache elements for use by any other google layers added to
              // this same map
              OpenLayers.Layer.Google.cache[this.map.id] = {
                  mapObject: mapObject,
                  termsOfUse: termsOfUse,
                  poweredBy: poweredBy,
                  count: 1
              };
          }
  
          this.mapObject = mapObject;
          this.termsOfUse = termsOfUse;
          this.poweredBy = poweredBy;
          
          // ensure this layer type is one of the mapObject types
          if (OpenLayers.Util.indexOf(this.mapObject.getMapTypes(),
                                      this.type) === -1) {
              this.mapObject.addMapType(this.type);
          }
  
          //since v 2.93 getDragObject is now available.
          if(typeof mapObject.getDragObject == "function") {
              this.dragObject = mapObject.getDragObject();
          } else {
              this.dragPanMapObject = null;
          }
          
          if(this.isBaseLayer === false) {
              this.setGMapVisibility(this.div.style.display !== "none");
          }
  
      }