function init2() {
    // OpenLayers Version 12/08 Michael Cosgrove
    map = new OpenLayers.Map ("map", {
    controls:[
        new OpenLayers.Control.Navigation(),
        //new OpenLayers.Control.PanZoomBar({'zoomWorldIcon':true}),
        new OpenLayers.Control.ScaleLine()
    ],
    numZoomLevels: 19,
    units: 'm',
    projection: new OpenLayers.Projection("EPSG:900913"),
    displayProjection: new OpenLayers.Projection("EPSG:4326")
    } );
    if (remote_domain == 'yes') {
        var pzb=new OpenLayers.Control.PanZoomBar({'zoomWorldIcon':true,'zoomStopHeight':7});
        var size_pz = new OpenLayers.Size(10,35);
        pzb.position=new OpenLayers.Pixel(size_pz.w,size_pz.h);
        map.addControl(pzb);
    }
 //zoomBarDiv: null,
// divEvents: null,
    // Define the map layer
    var mapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik", {
      displayOutsideMaxExtent: true,
      wrapDateLine: true
    });
    map.addLayer(mapnik);
    var zdate = "";
    if (num_users == 1) { // make all dots 'brick' if there is only one boat
        for (var clr in point_colors_png) {
            if (isHex(clr)) {
                point_colors_png[clr] = 'brick';
            }
        }
        Track[0][0][1] = "940000";
    }
    for (i_main = 0;i_main<Vessel_idxs.length;i_main++) {
        var returnBool = createTrack(Track[Vessel_idxs[i_main]],Vessels[Vessel_idxs[i_main]]);
        if (!returnBool) {
            alert("There is no data for the vessel(s) requested");
            break;
        }
        zdate = Track[Vessel_idxs[i_main]][0][2];
        ztime = Track[Vessel_idxs[i_main]][0][3];
    }
    
    // MousePositionCoz - cursor LonLat
    var mouse_pos_ctrl = new OpenLayers.Control.MousePositionCoz();
    mouse_pos_ctrl.element = $("rawLonLat");// LonLat display
    mouse_pos_ctrl.prefix = '<table class="MousePositionCozText" width="150" border="0" cellspacing="0" cellpadding="0">' +
                            '<tr><td width="75" align="right">';
    mouse_pos_ctrl.separator = '</td><td width="75" align="right">';
    mouse_pos_ctrl.suffix = '</td></tr></table>';
    map.addControl(mouse_pos_ctrl);
    coz_projection = mouse_pos_ctrl.displayProjection;
    
    // set up centers and display -- depends on how many vessels are displayed
    if (num_users > 1) {
        $("vesselinfo").innerHTML = VesselName;
        var bottomLeft = new OpenLayers.LonLat(min_lon*1,min_lat*1).transform(
           new OpenLayers.Projection("EPSG:4326"),  map.getProjectionObject());
        var topRight = new OpenLayers.LonLat(max_lon*1,max_lat*1).transform(
            new OpenLayers.Projection("EPSG:4326"),  map.getProjectionObject());
        //over-ride init's settings...
        FleetBounds = new OpenLayers.Bounds(bottomLeft.lon,bottomLeft.lat,topRight.lon,topRight.lat);
        centerLonLat = FleetBounds.getCenterLonLat();
        if (initial_zoom == "fleet") {
            map.zoomToExtent(FleetBounds,false);
            initial_zoom = map.getZoom();
        }
        else {
            center_map();
        }
        //centerLonLat = map.getCenter();
        //map.setCenter(centerLonLat, initial_zoom);
    }
    else {
        // special case - with just one point, one boat, minlat/minlon is the vessles' lat/lon, and date and time from above
        // also end up correct...
        $("vesselinfo").innerHTML = 
          VesselName + '<br>' +
          zdate + ' ' + ztime + ' UTC<br>' +
          toDegreesMinSec(min_lon, "lon") + ' ' + toDegreesMinSec(min_lat, "lat");
        /*
        // adjust lat/lon for map extent USE THIS TO HARD-CODE A MAP EXTENT
        var add = 3;
        min_lon = min_lon*1 - add;
        min_lat = min_lat*1 - add;
        max_lon = max_lon*1 + add;
        max_lat = max_lat*1 + add;*/
        centerLonLat = new OpenLayers.LonLat(min_lon*1,min_lat*1).transform(
           new OpenLayers.Projection("EPSG:4326"),  map.getProjectionObject());
        center_map();
    }
    get_frame_coords();
    loaded();
}//end init2()
function center_map()    {
    map.setCenter(centerLonLat, initial_zoom);
}
function show_world_map()    {
    map.setCenter(centerLonLat, world_map_zoom_level);
}
function isHex(entry){
    validChar='0123456789ABCDEF';// characters allowed in hex
    strlen=entry.length;         // how long is test string
    if(strlen < 1) {
        return false;
    }
    entry=entry.toUpperCase();   // lowercase characters?
    // Now scan string for illegal characters
    for (i=0;i<strlen;i++){
        if(validChar.indexOf(entry.charAt(i))<0){
           return false;}
        } // end scanning loop
    return true;
}

