docs: function (bounds) {
          var res = this.getResolution(); 
  
          // tile center
          var originTileX = (this.tileOrigin.lon + (res * this.tileSize.w/2)); 
          var originTileY = (this.tileOrigin.lat - (res * this.tileSize.h/2));
  
          var center = bounds.getCenterLonLat();
          var point = { x: center.lon, y: center.lat };
          var x = (Math.round(Math.abs((center.lon - originTileX) / (res * this.tileSize.w)))); 
          var y = (Math.round(Math.abs((originTileY - center.lat) / (res * this.tileSize.h)))); 
          var z = this.map.getZoom();
  
          // this prevents us from getting pink tiles (non-existant tiles)
          if (this.lods) {        
              var lod = this.lods[this.map.getZoom()];
              if ((x < lod.startTileCol || x > lod.endTileCol) 
                  || (y < lod.startTileRow || y > lod.endTileRow)) {
                      return null;
              }
          }
          else {
              var start = this.getUpperLeftTileCoord(res);
              var end = this.getLowerRightTileCoord(res);
              if ((x < start.x || x >= end.x)
                  || (y < start.y || y >= end.y)) {
                      return null;
              }        
          }
  
          // Construct the url string
          var url = this.url;
          var s = '' + x + y + z;
  
          if (OpenLayers.Util.isArray(url)) {
              url = this.selectUrl(s, url);
          }
  
          // Accessing tiles through ArcGIS Server uses a different path
          // structure than direct access via the folder structure.
          if (this.useArcGISServer) {
              // AGS MapServers have pretty url access to tiles
              url = url + '/tile/${z}/${y}/${x}';
          } else {
              // The tile images are stored using hex values on disk.
              x = 'C' + OpenLayers.Number.zeroPad(x, 8, 16);
              y = 'R' + OpenLayers.Number.zeroPad(y, 8, 16);
              z = 'L' + OpenLayers.Number.zeroPad(z, 2, 10);
              url = url + '/${z}/${y}/${x}.' + this.type;
          }
  
          // Write the values into our formatted url
          url = OpenLayers.String.format(url, {'x': x, 'y': y, 'z': z});
  
          return OpenLayers.Util.urlAppend(
              url, OpenLayers.Util.getParameterString(this.params)
          );
      }