//************************ShowHideTracks get_time
var UpdaterCounter;
var UpdaterID = null;
var UpdaterRunning = false;
var UpdaterDelay = 1000; // tics
var UpdaterSeconds = 300; // # seconds for the Updater

function StartStopUpdater() {
    //alert("start");
    if (UpdaterRunning) {
        StopUpdater();
        $('UpdaterButton').value = "Auto";
    }
    else {
        InitializeUpdater();
        //$('UpdaterButton').value = UpdaterSeconds+1;
    }
}
function ReInitializeUpdater() {
    if (UpdaterRunning) {
    UpdaterCounter = UpdaterSeconds;
    }
}
function InitializeUpdater() {
    // Set the length of the timer, in seconds
    UpdaterCounter = UpdaterSeconds;
    StopUpdater();
    StartUpdater();
    if (document.forms['fleet'].show_time.selectedIndex != 0) {
        document.forms['fleet'].show_time.selectedIndex = 0;
        get_new_tracks_data();
    }
    else {
        document.forms['fleet'].show_time.selectedIndex = 0;
    }
    $('UpdaterButton').title = "Stop Auto-Updates"
}
function StopUpdater() {
    if (UpdaterRunning) {
        clearTimeout(UpdaterID);
    }
    UpdaterRunning = false;
    $('UpdaterButton').value = "Auto";
    $('UpdaterButton').title = "Start Auto-Updates every 5 minutes"
}
function StartUpdater() {
    if (UpdaterCounter==0)    {
        StopUpdater();
        get_new_tracks_data();
        //alert("end interval");
        InitializeUpdater();
    }
    else    {
        $('UpdaterButton').value = UpdaterCounter;
        self.status = UpdaterCounter;
        UpdaterCounter = UpdaterCounter - 1;
        UpdaterRunning = true;
        UpdaterID = self.setTimeout("StartUpdater()", UpdaterDelay);
    }
}
//************************mapLayerActivateDeactivate
function mapLayerActivateDeactivate(layerName, layerBoolean) {
    var trk_name = "Track: " + layerName;
    var pts_name = "Points: " + layerName;
	var layerArray = map.layers;
    for (var i=0;i<layerArray.length;i++) {
        //alert(map.layers[i].name);
        if ((document.forms.fleet.show_track[0].checked)&&(1)) {
        	if (map.layers[i].name == trk_name) {
                map.layers[i].setVisibility(layerBoolean);
                map.layers[i].display(layerBoolean);
                //alert('0'+trk_name);
            }
        }
    	if (map.layers[i].name == pts_name) {
            map.layers[i].setVisibility(layerBoolean);
            map.layers[i].display(layerBoolean);
            //alert('1'+trk_name);
        }
    }
}
//************************ShowHideTracks get_time
function ShowHideTracks() {
    var boats_selected = get_time(); // returns array of boats checked in nav window
    var onoffBool = document.forms.fleet.show_track[0].checked; // the radio button setting
	var layerArray = map.layers;
    for (var i=0;i<layerArray.length;i++) {
    	if (map.layers[i].name.indexOf('Track: ') == 0) {
            if (boats_selected.inArray(map.layers[i].name.substring(7))) {
                map.layers[i].setVisibility(onoffBool);
                map.layers[i].display(onoffBool);
            }
        }
    }
}
//************************
function ShowHideVectorsMarkers() {
    var boats_selected = get_time(); // returns array of boats checked in nav window
	var layerArray = map.layers;
    var tracksOn = document.forms.fleet.show_track[0].checked; // the radio button setting
    for (var i=0;i<layerArray.length;i++) {
        var boat_points_is_selected = boats_selected.inArray(map.layers[i].name.substring(8)); 
        var boat_tracks_is_selected = boats_selected.inArray(map.layers[i].name.substring(7)); 
    	if (map.layers[i].name.indexOf('Track: ') == 0) {
            map.layers[i].setVisibility(boat_tracks_is_selected && tracksOn);
            map.layers[i].display(boat_tracks_is_selected && tracksOn);
        }
    	else if (map.layers[i].name.indexOf('Points: ') == 0) {
            map.layers[i].setVisibility(boat_points_is_selected);
            map.layers[i].display(boat_points_is_selected);
        }
    }
}
//************************ inArray
// access by calling "someArray.inArray(value);"
if (!Array.prototype.inArray) {
   Array.prototype.inArray=function(val) {
      for (key in this) {
         if (this[key]===val) {
            return true; // If you want the key of the matched value, change "true" to "key"
         }
      }
      return false;
   }
}
//************************center_on_vessel
function center_on_vessel(vessel_name) { //Vessels array ... fleet_tracks_js.pl
    //alert(vessel_name); 
    var min_lon = 1000; // note these are also global vars...
    var max_lon = -1000
    var min_lat = 1000;
    var max_lat = -1000
    for (var i=0;i<Vessels.length;i++) {
        if (Vessels[i] == vessel_name) { break; }
    }
    //alert('found:'+Vessels[i]);
    var thisTrack = Track[i];
    if (thisTrack.length == 0) {
        alert(vessel_name + ' is not in this data set');
        return;
    }
    for (var j = 0;j<thisTrack.length;j++) {
        if (thisTrack[j][4] < min_lon*1) { min_lon = thisTrack[j][4]; }
        if (thisTrack[j][4] > max_lon*1) { max_lon = thisTrack[j][4]; }
        if (thisTrack[j][5] < min_lat*1) { min_lat = thisTrack[j][5]; }
        if (thisTrack[j][5] > max_lat*1) { max_lat = thisTrack[j][5]; }
    }
    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());
    var thisVesselBounds = new OpenLayers.Bounds(bottomLeft.lon,bottomLeft.lat,topRight.lon,topRight.lat);
    map.zoomToExtent(thisVesselBounds,false);
    //alert(map.getZoom()+','+map.getNumZoomLevels());
    if (map.getZoom() > 9) { // don't zoom in too far...
        map.zoomTo(9);
    }

}
//************************createTrack
//input arrays have form:
//Array(\"$p_user\",\"$p_color\",\"$p_date\",\"$p_time\",\"$p_lon\",\"$p_lat\",\"$p_speed\",\"$p_course\"));\n";
function createTrack(trackArray,vessel_name)  {
            // Layer style
            // we want opaque external graphics and non-opaque internal graphics
            /*var layer_style = OpenLayers.Util.extend({}, OpenLayers.Feature.Vector.style['default']);
            layer_style.fillOpacity = 0.2;
            layer_style.graphicOpacity = 1;*/
            //  Line style
            var line_style = {
                strokeWidth: 1,
                pointRadius: 6,
                pointerEvents: "visiblePainted"
            };
            try  {
                line_style.strokeColor = "#"+trackArray[0][1];
            }
            catch(err) {
                //alert("there is no data for this vessel");
                return false;
            }
            //LINES setup
            var vectorLayer2 = new OpenLayers.Layer.Vector("Track: "+vessel_name, {
				projection: "EPSG:900913",
				displayProjection: "EPSG:4326" });
            var pointList = [];

            for (var $ii = 0;$ii<trackArray.length;$ii++) {
                pointList.push(new OpenLayers.Geometry.Point(trackArray[$ii][4],trackArray[$ii][5]));
                if (trackArray[$ii][4] < min_lon*1) { min_lon = trackArray[$ii][4]; }
                if (trackArray[$ii][4] > max_lon*1) { max_lon = trackArray[$ii][4]; }
                if (trackArray[$ii][5] < min_lat*1) { min_lat = trackArray[$ii][5]; }
                if (trackArray[$ii][5] > max_lat*1) { max_lat = trackArray[$ii][5]; }
            }
            var lineFeature = new OpenLayers.Feature.Vector(  
                new OpenLayers.Geometry.LineString(pointList).transform(new OpenLayers.Projection("EPSG:4326"),
                map.getProjectionObject()),null,line_style);
            map.addLayer(vectorLayer2);
            vectorLayer2.addFeatures([ lineFeature]);
            //MARKERS setup
            var markers = new OpenLayers.Layer.Markers( "Points: "+vessel_name, {
				projection:"EPSG:900913",
				displayProjection: "EPSG:4326" } );
            map.addLayer(markers);
            var size = new OpenLayers.Size(10,10);
            var offset = new OpenLayers.Pixel(-(size.w/2), -(size.h/2));
            //color code is index into the icon array
            IconColorName = point_colors_png[trackArray[0][1]];
            var icon = new OpenLayers.Icon('../pics/dots/'+IconColorName+'.png',size,offset);
            var iconLatest = new OpenLayers.Icon('../pics/dots/'+IconColorName+'.gif.png',size,offset);

            for ($ii = 0;$ii<trackArray.length;$ii++) {
                if ($ii == 0) {
                    icon.pointInfo = trackArray[$ii];
                    marker = new OpenLayers.Marker(
                      new OpenLayers.LonLat(trackArray[$ii][4],trackArray[$ii][5]).transform(new OpenLayers.Projection("EPSG:4326"),
                           map.getProjectionObject()),icon);
                }
                else if ($ii == (trackArray.length-1)) {
                    iconLatest.pointInfo = trackArray[$ii];
                    marker = new OpenLayers.Marker(
                      new OpenLayers.LonLat(trackArray[$ii][4],trackArray[$ii][5]).transform(new OpenLayers.Projection("EPSG:4326"),
                           map.getProjectionObject()),iconLatest);
                }
                else {
                    var cloned_icon = icon.clone();
                    cloned_icon.pointInfo = trackArray[$ii];
                    marker = new OpenLayers.Marker(
                      new OpenLayers.LonLat(trackArray[$ii][4],trackArray[$ii][5]).transform(new OpenLayers.Projection("EPSG:4326"),
                           map.getProjectionObject()),cloned_icon);
                }
                marker.events.register('mouseover', marker, function(evt) {
                   showPoint(map.events.getMousePosition(evt).x,map.events.getMousePosition(evt).y,this.icon.pointInfo);
                    });
                marker.events.register('mouseout', marker, function(evt) {
                   hidePoint('detail');
                    });
                markers.addMarker(marker); 
            }
            //firefox work-around - it doesn't seem to allow mouse events to pass through layers
            vectorLayer2.setZIndex(301);
            markers.setZIndex(400);
            return true;
}

//************************HELP
function showHelp() {
    window.open("/help.html");
}
//************************conversions
function toDegreesMinSec(input, t) {
    //-xx.xxxxxxxxxx° => xx° xx.x' N        
    var output = "";
    var degDec = Math.abs(input);
    var absDeg = Math.floor(Math.abs(degDec));    
    var minDec = (degDec-absDeg);
    var absMin = Math.abs(minDec*60).toFixed(1);    
    output += absDeg + "° ";
    output += absMin + "' ";    
    output += direction(input, t);    
    return(output);
}
function toDecimalDegrees(input, t)  {
    //-xx.xxxxxxxxxx° => xx.xxxxxxxxxx° W                
    var output = Math.abs(input).toFixed(2) + "° ";                
    output += direction(input, t);
    return(output);
}
function direction(input, t) {    
    if (t == "lat")
    {
        if (parseInt(input) < 0)
        {                        
            return("S");
        }
        else if (parseInt(input) > 0)
        {                        
            return("N");
        }
    }
    else
    {
        if (parseInt(input) < 0)
        {
            return("W");
        }
        else if (parseInt(input) > 0)
        {
            return("E");
        }
    }
    return "";
}
//function showPoint(e)
function showPoint(x,y,info) {
    thispx = new OpenLayers.Pixel(x,y);
    // get current resolution by comparing with a point 10 pxls away (isn't there an OpenLayers wayto do this?)
    scalepx = new OpenLayers.Pixel(x+10,y);
    var clickLonLat = map.getLonLatFromPixel(thispx);
    var scalepxLonLat = map.getLonLatFromPixel(scalepx);
    clickLonLat.transform(map.getProjectionObject(),  coz_projection );
    scalepxLonLat.transform(map.getProjectionObject(),  coz_projection );
    //Array(\"$p_user\",\"$p_color\",\"$p_date\",\"$p_time\",\"$p_lon\",\"$p_lat\",\"$p_speed\",\"$p_course\"));\n";
    var detail = $('detail');
    var output = createDetailDisplay( info[0], 'fleetOBS', info[1], info[2], info[3], info[5], info[4], info[6], info[7]);
    var ShowLon = info[4];
    var ShowLat = info[5];
    var difLonLat = Math.abs(clickLonLat.lon - scalepxLonLat.lon);
    var detailcount = 1;
    var rowcount = 1;
    //keep track of the shown vessels if there are multiple details shown then we only want one detail of one vessel
    var shownvessels = info[0];    
      for (var track_idx=0; track_idx< Track.length; track_idx++)      {
        if (detailcount == 5) /*need in both loops...*/ {  break;  }
        var UserTrack = Track[track_idx];        
        for (var i=0; i< UserTrack.length; i++)        {                                    
            var user_2 = UserTrack[i][0];
            var lon_2 = UserTrack[i][4];
            var lat_2 = UserTrack[i][5];
            if (shownvessels.indexOf(user_2) < 0)  {//don't show the same boat more than once
                if ((Math.abs(lon_2 - ShowLon) <= difLonLat) && (Math.abs(lat_2 - ShowLat) <= difLonLat))     {   
                    shownvessels += "," + user_2;//collect the boat list for the details shown                
                    detailcount++;                          
                    if (detailcount == 5) { //only show 4 items in the detail
                        output += "<div id=\"toomanyvessels\">There are more vessels in this area. Zoom in for more.</div>"                                                
                        break;
                    }
                    //add the next vessel
                    output += createDetailDisplay( 
                        UserTrack[i][0], 'fleetOBS', UserTrack[i][1],
                        UserTrack[i][2], UserTrack[i][3],
                        UserTrack[i][5], UserTrack[i][4],
                        UserTrack[i][6], UserTrack[i][7]);
                }                                
            }            
        }
      }
        x = Math.round(parseInt(x+20));       // map is 20 px x-offset in page 
        y = Math.round(parseInt(y));         
        
        output += "<div style=\"clear:both\"></div>";//fix for ie floats
        detail.innerHTML = output;
        
        //now adjust for the sides and top/bottom
        viewPortBounds = get_viewport_extent()    

        if (detailcount > 2)     {
            rowcount = 2;
        }
        columncount = (detailcount > 1) ? 2 : 1;
        // is there a specified top and left for the map frame?
        var frameLeft = isNaN(mapLeft) ? 0 : mapLeft;
        var frameTop = isNaN(mapTop) ? 138 : mapTop;
        /*alert(frameTop+','+frameLeft);
        alert(mapTop+','+mapLeft);*/
        var xoffset = (150*columncount) + 20;// + frameLeft;
        var yoffset = (100*rowcount) + 20;
        if (rowcount > 1)     {
            yoffset += 20;
        }
        if (x > (viewPortBounds.right - xoffset + 20))     {
            x = (x-xoffset-20);
        }
        else     {
            //x = x+10
        }
        if (y > (viewPortBounds.bottom - yoffset))     {
            y = (viewPortBounds.bottom - yoffset);           
        }        
        else     {
            //y= y+10;
        }
        ////////
        // x,y input is viewport - need to convert to screen co-ords
        y = y + frameTop - 20;
        detail.style.left = x +"px";        
        detail.style.top = y +"px";
        detail.style.width = (150*columncount) +"px";
        Element.show('detail');//finally show the detail
}
// get top-left of this Iframe...
function get_frame_coords() {
    if (remote_domain == 'yes') {
        mapTop = _iFrameTop; //y-offset of map iframe
        mapLeft = _iFrameLeft; //x-offset of map iframe
        //alert(mapTop+':'+ mapLeft);
        return;
    }
    //else we're on gmn server, proceed as usual        
    var iframeList=parent.document.getElementsByTagName('iframe');
    var i;var size;
    for (var i=0;i<iframeList.length;i++ ){
        if(iframeList[i].name == window.name) {
            //alert(iframeList[i].offsetLeft+','+iframeList[i].offsetTop+','+iframeList[i].name+','+window.name);
            mapTop = iframeList[i].offsetTop; //y-offset of map iframe
            mapLeft = iframeList[i].offsetLeft; //x-offset of map iframe
            //alert(mapTop+':'+ mapLeft);
        }
    }
    /*if (parseInt(navigator.appVersion)>3) {
       if (navigator.appName=="Netscape") {
           alert(this.innerWidth+','+this.innerHeight);
       }
       if (navigator.appName.indexOf("Microsoft")!=-1) {
           alert(this.document.body.offsetWidth+','+this.document.body.offsetHeight);
       }
    }*/
}


//
function createDetailDisplay( user, fleet, color, date, time, lat, lon, speed, course) {
        var output = "";
        output += "<table class=\"boatinfo\" id=\"pointdetail\" cellspacing=\"0\" style=\"width: 150px; border: 1px solid #" + color + "; border-right: none\">";
        output += "<tr>";
        output += "<td style=\"background-color: #" + color+ "\" rowspan=\"7\">&nbsp;</td>";
        output += "<td class=\"boatlabel\">Vessel</td>";
        output += "<td class=\"boatvalue\">" + user + "</td>";
        output += "</tr>";
        output += "<tr>";
        output += "<td class=\"boatlabel\">Date</td>";
        output += "<td class=\"boatvalue\">" + date + "</td>";
        output += "</tr>";
        output += "<tr>";
        output += "<td class=\"boatlabel\">Time</td> ";
        output += "<td class=\"boatvalue\">" + time + " UT</td>";
        output += "</tr>";
        output += "<tr>";
        output += "<td class=\"boatlabel\">Lat</td> ";
        output += "<td class=\"boatvalue\">" + toDegreesMinSec(lat, "lat") + "</td>";
        output += "</tr>";
        output += "<tr>";
        output += "<td class=\"boatlabel\">Lon</td> ";
        output += "<td class=\"boatvalue\">" + toDegreesMinSec(lon, "lon") + "</td></tr>";
        output += "<tr>";
        output += "<td class=\"boatlabel\">Speed</td> ";
        output += "<td class=\"boatvalue\" >" + parseFloat(speed).toFixed(1) + " kt</td></tr>";
        output += "<tr>";
        output += "<td class=\"boatlabel\">Course</td>";
        output += "<td class=\"boatvalue\">" + parseFloat(course).toFixed(0) + "° T</td>";
        output += "</tr>";        
        output += "</table>"; 
        return output;
}

function hidePoint(id) {
    $(id).innerHTML = "";
}
//************************MAP UTIL SECTION
function resizeMap() {
    var centre = map.getCenter();
    var zoom = map.getZoom();
    //$("map").style.left = (sidebar_width) + "px";
    $("map").style.width = document.documentElement.clientWidth + "px";
    $("map").style.height = (document.documentElement.clientHeight - 138) + "px";
    map.setCenter(centre, zoom);
}
function get_time() {
    boat_sel="";
    var current_boats_selected = new Array();
    time_sel = document.forms['fleet'].show_time.value;
    track_sel = document.forms['fleet'].show_track[0].checked

    var n = 0;
    vesselCount = 0;
    var al = document.forms['fleet'].boatlist.length;
   
    if (al == undefined) 
    {
        boat_sel = document.forms['fleet'].boatlist.value+"|"+color[n]+":";
        current_boats_selected[0]  = document.forms['fleet'].boatlist.value;
    }
    else 
    {
        while ((n) < al)
        {
        if (document.forms['fleet'].boatlist[n].checked)
            {
            boat_sel = boat_sel + document.forms['fleet'].boatlist[n].value+"|"+color[n]+":";
            current_boats_selected[n]  = document.forms['fleet'].boatlist[n].value;
            vesselCount++;
            }
        n++;
        }
        boat_sel = boat_sel.substring (0, boat_sel.length-1);    
    }
    return current_boats_selected;
}
// ----------------------------------------------------- //
function get_viewport_extent()    
{
    var map_bounds = map.getExtent().toArray();
    var vp_bottom_left_LonLat = new OpenLayers.LonLat(map_bounds[0],map_bounds[1]);
    var vp_top_right_LonLat = new OpenLayers.LonLat(map_bounds[2],map_bounds[3]);
    var vp_bottom_left_Pixel = map.getPixelFromLonLat(vp_bottom_left_LonLat);
    var vp_top_right_Pixel = map.getPixelFromLonLat(vp_top_right_LonLat);
    var retval = Object();
    retval.left = vp_bottom_left_Pixel.x;
    retval.bottom = vp_bottom_left_Pixel.y;
    retval.right = vp_top_right_Pixel.x;
    retval.top = vp_top_right_Pixel.y;
    return retval;
}
// ----------------------------------------------------- //
function view_whole_fleet()    {
    map.zoomToExtent(FleetBounds,false);
}
// ----------------------------------------------------- //
function get_world_map()    {
    map.setCenter(new OpenLayers.LonLat(0,0), 2);
}
// ----------------------------------------------------- //
function get_first_map_OBSOLETE()    
{    
    alert("not used");return; 
    oldlat = firstlat;
    oldlon = firstlon;
    oldzoom = firstzoom; 
    var al = document.forms['fleet'].boatlist;
       
    for (var i = 0; i < al.length; i++)
    {
        document.forms['fleet'].boatlist[i].checked = true;            
    }
    //return; //coz
        
    changeMap("");    
 
}
function zoom_out() {
    map.zoomOut();
}

function zoom_in() {
    map.zoomIn();
}

function select_OBSOLETE()
{
    $("detail").innerHTML = "";
    redraw(newlat,newlon,oldzoom);    
}

function redraw_OBSOLETE(lat,lon,zoom) 
{
    oldlon = lon;
    oldlat = lat;    
    oldzoom = zoom;    
    changeMap("")    
    
}

function googleearth()
{
    get_time();    
    mapURL = "lat="+oldlat+"&lon="+oldlon+"&zoom="+oldzoom+"&x="+xp+"&y="+yp+"&tracks="+track_sel+"&time="+time_sel+"&vessels="+boat_sel+"&fmt=kml";        
    winLoc = serverURL + pw + mapURL ;
    window.location = winLoc;

//   kmlHead = '<?xml version="1.0" encoding="UTF-8"?><kml xmlns="http://earth.google.com/kml/2.0"><NetworkLink><Url><href>';
//   kmlTail = '</href><refreshMode>onInterval</refreshMode><viewRefreshMode>onRequest</viewRefreshMode><refreshInterval>3600</refreshInterval></Url> </NetworkLink></kml>';
//   winLoc = kmlHead + serverURL + pw + mapURL + kmlTail;
  
//   document.write(winLoc); 
}

function refresh() {       
    changeMap("");
}

function changeMapOBSOLETE(args)  {
    // THIS VERSION CALLS THE PAGE
    get_time();    
    //loading();
    CozMapURL = RedrawParams+"&time="+time_sel+"&vessels="+boat_sel;
    //alert("&time="+time_sel+"&vessels="+boat_sel);      
    //alert(CozMapURL);      
    newLocation = "../cgi-bin/track_coz.pl?"+CozMapURL;
    top.frames['body'].location = newLocation;
    mapURL = "lat="+oldlat+"&lon="+oldlon+"&zoom="+oldzoom+"&x="+xp+"&y="+yp+"&tracks="+track_sel+"&time="+time_sel+"&vessels="+boat_sel+args;  
    //alert(vessels);
    //loaded();
    //drawpoints();                                
}

function get_new_tracks_data(req) {
    loading();
    get_time();    
    var g = new Date()
    var gt = g.getTime()
    var arg = pw + "lat="+oldlat+"&lon="+oldlon+"&zoom="+oldzoom+
        "&x="+xp+"&y="+yp+"&tracks="+track_sel+"&time="+time_sel+
        "&vessels="+vessels_this_map+"&vesselcount="+vesselcount_this_map + "&zzz=" + gt + "&redraw=1";
    var url = "../cgi-bin/fleet_tracks_js.pl?";
    new Ajax.Request(url + arg, {
        method: 'get',
        onFailure: function(t)  {
          alert('Could not update map points');//'Error ' + t.status + ' -- ' + t.statusText);
        },
        onSuccess: function(transport) {
            point_colors_png = [];
            Track = [];
            Vessels = [];
            Vessel_idxs = [];
            eval(transport.responseText);
            parseResponseData();
        }
    });
    if (time_sel != "latest") {
        StopUpdater();
    }
    else {
        ReInitializeUpdater();
    }
}

function parseResponseData() {
    var allLayers = map.getLayersBy('map',map);
    for (i=0;i<allLayers.length;i++) {
        if (!allLayers[i].isBaseLayer) {
           map.removeLayer(allLayers[i]);
        }
    }
    for ($i_main = 0;$i_main<Vessel_idxs.length;$i_main++) {
        var mapCenter = createTrack(Track[Vessel_idxs[$i_main]],Vessels[Vessel_idxs[$i_main]]);
    }
    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());
    FleetBounds = new OpenLayers.Bounds(bottomLeft.lon,bottomLeft.lat,topRight.lon,topRight.lat);
    ShowHideVectorsMarkers();
    loaded(); 
}


function drawpoints_OBSOLETE(req) {
//loaded();
//return;
    var g = new Date()
    var gt = g.getTime()
    var arg = pw + "lat="+oldlat+"&lon="+oldlon+"&zoom="+oldzoom+"&x="+xp+"&y="+yp+"&tracks="+track_sel+"&time="+time_sel+"&vessels="+boat_sel+"&vesselcount="+vesselCount + "&zzz=" + gt;
    var url = serverPointsURL;
        var opt = {
                    method: 'GET',                    
                    onSuccess: showResponsePoints,                                
                    onFailure: function(t) 
                    {
                      alert('Could not update map points');//'Error ' + t.status + ' -- ' + t.statusText);
                    }
                    }   
    //window.open(url + arg);
    alert(url + arg);
    //var ajax = new Ajax.Updater('points', url + arg, opt);
    loaded();                                                       
}

function loaded()
{
    var l = $("loadcontainer");
    l.style.visibility = "hidden";
    //obs mapURL = serverURL + mapURL;             
}

function loading()
{
    var l = $("loadcontainer");
    l.style.visibility = "visible";    
}

function login()
    {
    winLoc = "/password.html";
    newwindow = window.open(winLoc, "info", "width=480,height=340");
    newwindow.focus();
}
function contact()
    {
    winLoc = "/contact.html";
    newwindow = window.open(winLoc, "info", "width=580,height=440");
    newwindow.focus();
}

function showHelp()
	{
	winLoc = "/help.html";
	newwindow = window.open(winLoc, "help", "width=580,height=440");
	newwindow.focus();
}

function show_info(sel) {
    winLoc = "/cgi-bin/boat_info_coz.pl?" + pw2 + "&boat="+sel;                
    newwindow = window.open(winLoc, "boat_info", "width=486,height=360");
    newwindow.focus();
}

function getMouseXY_OBSOLETE(e) 
{return;}

function showFilters()
{
    var s = $('selections');        
    if (s.style.display == "none")
    {                
        Element.show('selections'); 
        s.style.right = "10px";
        s.style.top = "148px";        
        $("filters").innerHTML = "<a href=\"#\" onClick=\"javascript:showFilters();\">Hide Map Tools</a>"
    }
    else
    {            
        Element.hide('selections');        
        $("filters").innerHTML = "<a href=\"#\" onClick=\"javascript:showFilters();\">Show Map Tools</a>"
    }        
}


