function showCurrent() {
  if (! currentBounds)
    return;
  var mapZoom = map.getZoom();
  var boundsZoom = map.getBoundsZoomLevel(currentBounds);
  if ((mapZoom - boundsZoom) > 1) {
    if (currentShown)
      for (var ii = 0; ii < currentBox.length; ++ii)
	map.removeOverlay(currentBox[ii]);

    currentShown = false;
  } else if (!currentShown) {
    for (var ii = 0; ii < currentBox.length; ++ii)
      map.addOverlay(currentBox[ii]);
    currentShown = true;
  }
}

// sets up status bar
function updateStatusBar() {
  var center = map.getCenter();
  var zoom = map.getZoom();

  var bounds = map.getBounds();
  var SW = bounds.getSouthWest();
  var NE = bounds.getNorthEast();

  var oCoords = document.getElementById("coords");
  oCoords.innerHTML = '<b>SW:</b> ' + SW.y.toFixed(6) + ', ' + SW.x.toFixed(6);
  oCoords.innerHTML += '<br>';
  oCoords.innerHTML += '<b>NE:</b> ' + NE.y.toFixed(6) + ', ' + NE.x.toFixed(6);
}

// populates status bar with values
function mouseMove(mousePt) {
   mouseLatLng = mousePt;
   var zoom = map.getZoom();
   var oStatusDiv = document.getElementById("mouseTrack");
   var mousePx = normalProj.fromLatLngToPixel(mousePt, zoom);
   oStatusDiv.innerHTML = '<b>Mouse LatLng:</b> ' + mousePt.y.toFixed(6) + ', ' + mousePt.x.toFixed(6);
   oStatusDiv.innerHTML += '<br>';
   oStatusDiv.innerHTML += '<b>Mouse Px:</b> ' + mousePx.x + ', ' + mousePx.y;
   oStatusDiv.innerHTML += '<br />';
}

// handle movements and send updates to status bar
function moveEnd() {
  updateStatusBar();
}

function zoomEnd(oldZ,zoom) {
  var center = map.getCenter();
  updateStatusBar();
  showCurrent(); // perhaps show the boundary rectangle
}

function zoomin() {
  if (currentBounds) {
    var zoomLevel = map.getBoundsZoomLevel(currentBounds);
    if (zoomLevel > 0)
      --zoomLevel;
    var center = currentBounds.getCenter();
    if (zoomLevel != map.getZoom())
      map.setCenter(center, zoomLevel);
    else
      map.panTo(center);
  }
}

