// requires openlayers
include('http://openlayers.org/api/OpenLayers.js');

function maputils_counttiles(map) {
  var extent = map.getExtent();
  extent = extent.transform(new OpenLayers.Projection("EPSG:900913"), new OpenLayers.Projection("EPSG:4326"));

  if (extent.bottom < -90.0) { extent.bottom = -90.0; }
  lat = 90.0;
  while (1)
  {
    if (lat <= extent.bottom)
    {
      extent.bottom = lat;
      break;
    }
    lat = lat - 1;
    if (lat < -90.0) { break; }
  }
  if (extent.left < -180.0) { extent.left = -180.0; }
  lon = 180.0;
  while (1)
  {
    if (lon <= extent.left)
    {
      extent.left = lon;
      break;
    }
    lon = lon - 1;
    if (lon < -180.0) { break; }
  }
  if (extent.top > 90.0) { extent.top = 90.0; }
  lat = -90.0;
  while (1)
  {
    if (lat >= extent.top)
    {
      extent.top = lat;
      break;
    }
    lat = lat + 1;
    if (lat > 90.0) { break; }
  }
  if (extent.right > 180.0) { extent.right = 180.0; }
  lon = -180.0;
  while (1)
  {
    if (lon >= extent.right)
    {
      extent.right = lon;
      break;
    }
    lon = lon + 1;
    if (lon > 180.0) { break; }
  }
  extent.right -= 1;
  extent.top -= 1;
  lattiles = ((extent.top - extent.bottom) / 1) + 1;
  lontiles = ((extent.right - extent.left) / 1) + 1;
  totaltiles = lattiles * lontiles;

  return totaltiles;
}

function maputils_prettyprintsize(size) {
  var newsize;

  if (size < 1024) {
    return size + " bytes";
  }
  else if (size < 1048576) {
    newsize = size / 1024.0;
    return newsize.toFixed(2) + " kB";
  }
  else {
    newsize = size / 1024.0 / 1024.0;
    return newsize.toFixed(2) + " MB";
  }
}

