var ngmdb_map = null;  //  These two are set to null so that you can test
var usgs_wms = null;   //  to see if they actually get created ( if ( ngmdb_map == null ) { alert ( 'oops!' ); } )

function init(){
  var options = {
    scales: [30000000, 15000000, 3000000, 1500000, 500000, 250000],
    numZoomLevels: 5,
    maxExtent: new OpenLayers.Bounds(-180, -90, 180, 90),
//    maxExtent: new OpenLayers.Bounds(-180, 16, -60, 80),
    maxResolution: 'auto',
    controls: [],
    tileSize: new OpenLayers.Size(256, 256)
  }
  ngmdb_map = new OpenLayers.Map( $('ngmdb_map'), options);

  usgs_wms = new OpenLayers.Layer.KaMap( "NGMDB",
          "http://ngmdb.usgs.gov/ngm_geo_srch2/htdocs/tile.php",
          {'map': "usgs", 'g':'__base__', 'i':'png'});

  ngmdb_map.addLayers([usgs_wms]);
  ngmdb_map.addControl(new OpenLayers.Control.MouseDefaults());
  ngmdb_map.addControl(new OpenLayers.Control.PanZoomBar());
  ngmdb_map.addControl(new OpenLayers.Control.Scale($('ngmdb_map_scale')));
  ngmdb_map.addControl(new OpenLayers.Control.MousePosition({element:$('ngmdb_map_position'),prefix:"Lat:&nbsp;",separator:"&nbsp;&nbsp;Long:&nbsp;",numdigits:4}));
  ngmdb_map.events.register("moveend", ngmdb_map, function() {
    cur_extent = this.getExtent().toBBOX();
    cur_extent_array = cur_extent.split(",");
    $('kaminx').value = cur_extent_array[0];
    $('kaminy').value = cur_extent_array[1];
    $('kamaxx').value = cur_extent_array[2];
    $('kamaxy').value = cur_extent_array[3];
    $('kazoom').value = this.getZoom();
    if ($('map_init').value == 1) {
      $('useextents').checked = true;
    } else {
      $('map_init').value = 1;
    }
    changeMap();
   });

/*
  alert("kaminx value = " + $('kaminx').value +
        "\nkaminy value = " + $('kaminy').value +
        "\nkamaxx value = " + $('kamaxx').value +
        "\nkamaxy value = " + $('kamaxy').value +
        "\nkazoom value = " + $('kazoom').value);
*/
  restoreMap();
}

function restoreMap() {
  if ($('kazoom').value == "") {
    ngmdb_map.setCenter(new OpenLayers.LonLat(-97,37),0);
    cur_extent = ngmdb_map.getExtent().toBBOX();
    cur_extent_array = cur_extent.split(",");
    $('kaminx').value = cur_extent_array[0];
    $('kaminy').value = cur_extent_array[1];
    $('kamaxx').value = cur_extent_array[2];
    $('kamaxy').value = cur_extent_array[3];
    $('kazoom').value = ngmdb_map.getZoom();
  } else {
    map_wlon = Math.round($('kaminx').value * 10000) / 10000;
    map_slat = Math.round($('kaminy').value * 10000) / 10000;
    map_elon = Math.round($('kamaxx').value * 10000) / 10000;
    map_nlat = Math.round($('kamaxy').value * 10000) / 10000;
    map_zoom = $('kazoom').value;
/*
    alert("extents = " + document.getElementById('extents').value +
      "\nmap_wlon = " + map_wlon +
      "\nmap_slat = " + map_slat +
      "\nmap_elon = " + map_elon +
      "\nmap_nlat = " + map_nlat +
      "\nmap_zoom = " + map_zoom);
*/
//    if (document.getElementById('extents').value == 1) {
      restore_tab();
      setExtents(map_wlon, map_slat, map_elon, map_nlat, map_zoom);
//    }
    updateHits();
  }
}

function changeMap () {
//  alert("In changeMap.\nextents = " + $('extents').value);
  if (document.getElementById('useextents').checked) {
//  if ($('extents').value != 0) {
//    document.getElementById('useextents').checked = true;
//  }
    updateHits();
  }
}

function reinitExtentsLoad () {
  if (! $('useextents').checked) {
    $('map_init').value = 0;
  }
}

function flagExtents() {
  document.getElementById('extents').value = 1;
}

function hilite_tab(ele) {
//    if (ele.id != document.getElementById('cur_id').value) {
      ele.style.borderStyle='outset';
//    }
}

function reg_tab(ele) {
    if (ele.id != document.getElementById('cur_id').value) {
      ele.style.borderStyle='solid';
    } else {
      ele.style.borderStyle='inset';
    }
}

function change_tab(ele, c_lon, c_lat, new_level) {
//    alert ("c_lon = " + c_lon + "\nc_lat = " + c_lat + "\nnew_level = " + new_level);
    cur_id_value = document.getElementById('cur_id').value;
    if (ele.id != cur_id_value) {
      document.getElementById(cur_id_value).style.borderStyle='solid';
      document.getElementById(cur_id_value).style.backgroundColor='#ffdd00';
      ele.style.borderStyle='inset';
      ele.style.backgroundColor='#ffff00';
      document.getElementById('cur_id').value = ele.id;
    }
    flagExtents();
    ngmdb_map.setCenter(new OpenLayers.LonLat(c_lon,c_lat),new_level);
    if (document.getElementById('useextents').checked) {
      updateHits();
    }
}

function restore_tab() {
    cur_id_value = document.getElementById('cur_id').value;
    if ("cus" != cur_id_value) {
      document.getElementById('cus').style.borderStyle='solid';
      document.getElementById('cus').style.backgroundColor='#ffdd00';
      document.getElementById(cur_id_value).style.borderStyle='inset';
      document.getElementById(cur_id_value).style.backgroundColor='#ffff00';
    }
}

function validate_form () {
//  if (! document.getElementById('useextents').checked) {
//    resetExtents();
//  }
  if (document.getElementById('extenttype').checked) {
    if (! document.getElementById('useextents').checked){
      var msg = "You have requested a point search without selecting a" +
                "\nMap Area.  No point search will be done.\n\nDo you " +
                "wish to continue (OK) or Cancel the search\nso you can " +
                "select a map area?";
      if (confirm(msg))
        return true;
      else
        return false;
    }
  }
  return true;
}

function resetUseExtents () {
  if (document.getElementById('useextents').checked) {
    document.getElementById('useextents').checked = false;
    document.getElementById('extenttype').checked = false;
//    resetExtents();
  }
}

function resetUseExtents2 () {
  if (document.getElementById('extenttype').checked) {
    document.getElementById('useextents').checked = true;
    resetBoundCoords();
  } else {
    updateHits();
  }
}

function setUseExtents () {
  if (document.getElementById('extenttype').checked) {
    document.getElementById('useextents').checked = true;
  }
  updateHits();
}

function resetExtentType () {
  if (! document.getElementById('useextents').checked) {
    document.getElementById('extenttype').checked = false;
  }
  updateHits();
}

function resetBoundCoords () {
  if (document.getElementById('useextents').checked) {
    document.getElementById('bc_ul').value = "";
    document.getElementById('bc_lr').value = "";
  } else {
    document.getElementById('extenttype').checked = false;
  }
  updateHits();
}

function resetExtents() {
document.getElementById('kaminx').value = "";
document.getElementById('kaminy').value = "";
document.getElementById('kamaxx').value = "";
document.getElementById('kamaxy').value = "";
$('kazoom').value = "";
}

function setExtents(minx, miny, maxx, maxy, zlev) {
  s_lon = (minx + maxx) / 2;
  s_lat = (miny + maxy) / 2;
/*
  alert ("s_lon = " + s_lon + "\ns_lat = " + s_lat + "\nzlev = " + zlev);
*/
  ngmdb_map.setCenter(new OpenLayers.LonLat(s_lon,s_lat),zlev);
}
