/* - OL_secoora.js - */
// http://secoora.org/portal_javascripts/OL_secoora.js?original=1
var browser = navigator.appName;
var version = navigator.appVersion;
var version1 = version.substring(22, 25);
var ImageType = 'image/png';
if (browser == "Microsoft Internet Explorer" && version1 == "6.0") {
    var ImageType = 'image/png1'
}

function init_OLSECOORA() {
    OpenLayers.Util.onImageLoadErrorColor = "transparent";
    var OFFSET = '2';
    var zoom = 0;
    var lat = 30.3;
    var lon = -80;
    var map = new OpenLayers.Map('map', {
        restrictedExtent: new OpenLayers.Bounds(-92, 22, -70, 39.6),
        scales: [10000000, 8000000, 4000000, 1000000, 600000],
        projection: "EPSG:4269",
        controls: [],
        tileSize: new OpenLayers.Size(500, 400),
        units: "degrees"
    });
    var land_wms = new OpenLayers.Layer.WMS(" Terra Firma", "http://secoora.net/ncogc/mapserv?", {
        map: '/opt/secoora_ogc/maps/secoora_base.map',
        srs: 'epsg:4269',
        format: ImageType,
        layers: 'world_filled,us_filled,us_outline,world_outline',
        map_scalebar_status: 'OFF'
    }, {
        gutter: 10,
        buffer: 2
    });
    var bathy_wms = new OpenLayers.Layer.WMS(" Bathymetry", "http://secoora.net/ncogc/mapserv?", {
        MAP: '/opt/secoora_ogc/maps/secoora_base.map',
        SRS: 'epsg:4269',
        FORMAT: ImageType,
        TRANSPARENT: 'true',
        LAYERS: 'Bathymetry',
        MAP_SCALEBAR_STATUS: 'OFF'
    }, {
        singleTile: true,
        ratio: 1.2,
        isBaseLayer: false
    });
    var grid_wms = new OpenLayers.Layer.WMS(" Coordinate Grid", "http://secoora.net/ncogc/mapserv?", {
        MAP: '/opt/secoora_ogc/maps/secoora_base.map',
        SRS: 'epsg:4269',
        FORMAT: ImageType,
        TRANSPARENT: 'true',
        LAYERS: 'grid',
        MAP_SCALEBAR_STATUS: 'OFF'
    }, {
        singleTile: true,
        ratio: 1,
        isBaseLayer: false
    });
    var timestamp = new OpenLayers.Layer.WMS(" TimeStamp", "http://secoora.net/ncogc/mapserv?", {
        map: '/opt/secoora_ogc/maps/secoora_base.map',
        SRS: 'epsg:4269',
        FORMAT: ImageType,
        TRANSPARENT: 'true',
        LAYERS: 'obs_time',
        TIME_OFFSET_HOURS: OFFSET,
        MAP_SCALEBAR_STATUS: 'OFF'
    }, {
        singleTile: true,
        ratio: 1,
        isBaseLayer: false
    });
    timestamp.displayInLayerSwitcher = false;
    var sst_wms = new OpenLayers.Layer.WMS(" in-situ SST", "http://secoora.net/ncogc/mapserv?", {
        MAP: '/opt/secoora_ogc/maps/secoora_insitu.map',
        SRS: 'epsg:4269',
        FORMAT: ImageType,
        TRANSPARENT: 'true',
        LAYERS: 'sst_obs_hourly_recent',
        TIME_OFFSET_HOURS: OFFSET,
        MAP_SCALEBAR_STATUS: 'OFF'
    }, {
        singleTile: true,
        ratio: 2.5
    });
    var wl_wms = new OpenLayers.Layer.WMS(" in-situ WaterLevel", "http://secoora.net/ncogc/mapserv?", {
        MAP: '/opt/secoora_ogc/maps/secoora_insitu.map',
        SRS: 'epsg:4269',
        FORMAT: ImageType,
        TRANSPARENT: 'true',
        LAYERS: 'water_level_obs_hourly_recent',
        TIME_OFFSET_HOURS: OFFSET,
        MAP_SCALEBAR_STATUS: 'OFF'
    }, {
        singleTile: true,
        ratio: 2.5
    });
    var w_wms = new OpenLayers.Layer.WMS(" in-situ Wind", "http://secoora.net/ncogc/mapserv?", {
        MAP: '/opt/secoora_ogc/maps/secoora_insitu.map',
        SRS: 'epsg:4269',
        FORMAT: ImageType,
        TRANSPARENT: 'true',
        LAYERS: 'wind_obs_hourly_recent',
        TIME_OFFSET_HOURS: OFFSET,
        WIND_UNITS: 'knots',
        MAP_SCALEBAR_STATUS: 'OFF'
    }, {
        singleTile: true,
        ratio: 2.5
    });
    var qs_wms = new OpenLayers.Layer.WMS(" QuikSCAT wind", "http://secoora.net/ncogc/quikscat_wrap?", {
        SRS: 'epsg:4269',
        FORMAT: ImageType,
        TRANSPARENT: 'true',
        TIME_OFFSET_HOURS: OFFSET,
        LAYERS: 'quikscat',
        MAP_SCALEBAR_STATUS: 'OFF'
    }, {
        singleTile: true,
        ratio: 2
    });
    var drifter_wms = new OpenLayers.Layer.WMS(" Drifters 2 day tail", "http://secoora.net/ncogc/drifter_wrapper?", {
        SRS: 'epsg:4269',
        FORMAT: ImageType,
        TRANSPARENT: 'true',
        TIME_OFFSET_HOURS: OFFSET,
        TAIL: '2',
        LAYERS: 'drifter_trajectory',
        MAP_SCALEBAR_STATUS: 'OFF'
    }, {
        singleTile: true,
        ratio: 2
    });
    var currents_is_wms = new OpenLayers.Layer.WMS(" in-situ Surface Currents", "http://secoora.net/ncogc/mapserv?", {
        MAP: '/opt/secoora_ogc/maps/secoora_insitu.map',
        SRS: 'epsg:4269',
        FORMAT: ImageType,
        TRANSPARENT: 'true',
        TIME_OFFSET_HOURS: OFFSET,
        LAYERS: 'drifter_vectors,sea_surface_currents,adcp_vectors',
        MAP_SCALEBAR_STATUS: 'OFF'
    }, {
        singleTile: true,
        ratio: 2
    });
    var currents_rs_wms = new OpenLayers.Layer.WMS(" Radar Surface Currents", "http://secoora.net/ncogc/currents_rs_wrapper?", {
        SRS: 'epsg:4269',
        FORMAT: ImageType,
        TRANSPARENT: 'true',
        TIME_OFFSET_HOURS: '3',
        LAYERS: 'RADAR',
        MAP_SCALEBAR_STATUS: 'OFF'
    }, {
        singleTile: true,
        ratio: 2
    });
    var avhrr_wms = new OpenLayers.Layer.WMS(" AVHRR SST", "http://secoora.net/ncogc/mapserv?", {
        MAP: '/opt/secoora_ogc/maps/secoora_rs.map',
        SRS: 'epsg:4269',
        FORMAT: ImageType,
        TRANSPARENT: 'true',
        TIME_OFFSET_HOURS: OFFSET,
        LAYERS: 'avhrr_sst',
        MAP_SCALEBAR_STATUS: 'OFF'
    }, {
        singleTile: true,
        ratio: 2
    });
    var modis_wms = new OpenLayers.Layer.WMS(" MODIS SST", "http://secoora.net/ncogc/mapserv?", {
        MAP: '/opt/secoora_ogc/maps/secoora_rs.map',
        SRS: 'epsg:4269',
        FORMAT: ImageType,
        TRANSPARENT: 'true',
        TIME_OFFSET_HOURS: OFFSET,
        LAYERS: 'modis_sst',
        MAP_SCALEBAR_STATUS: 'OFF'
    }, {
        singleTile: true,
        ratio: 2
    });
    bathy_wms.setVisibility(false);
    grid_wms.setVisibility(false);
    avhrr_wms.setVisibility(false);
    modis_wms.setVisibility(false);
    qs_wms.setVisibility(false);
    drifter_wms.setVisibility(false);
    currents_is_wms.setVisibility(false);
    currents_rs_wms.setVisibility(false);
    panControl = new OpenLayers.Control.MouseDefaults({
        title: 'Drag/Pan/Query the map'
    });
    var panel = new OpenLayers.Control.Panel({
        defaultControl: panControl
    });
    panel.addControls([panControl, new OpenLayers.Control.ZoomBox({
        title: "Zoom to an area"
    }), new OpenLayers.Control.ZoomToMaxExtent({
        title: "Zoom to SECOORA extent"
    })]);
    map.addControl(panel);
    LayerSwitcher = new OpenLayers.Control.LayerSwitcher();
    map.addControl(new OpenLayers.Control.Permalink('permalink'));
    map.addControl(new OpenLayers.Control.PanZoomBar());
    map.addControl(new OpenLayers.Control.ScaleLine());
    map.addControl(new OpenLayers.Control.MousePosition({
        numdigits: 3
    }));
    map.addLayers([land_wms, bathy_wms, avhrr_wms, modis_wms, sst_wms, qs_wms, w_wms, wl_wms, currents_is_wms, currents_rs_wms, drifter_wms, grid_wms, timestamp]);
    map.addControl(LayerSwitcher);
    if (!map.getCenter()) map.setCenter(new OpenLayers.LonLat(lon, lat), zoom);
    //OpenLayers.ProxyHost = "/cgi-bin/OL_proxy?url=";
    OpenLayers.ProxyHost = "./cgi-bin/AjaxProxy.php?url=";
    map.events.register('click', map, function (e) {
        var scale = map.getScale();
        OpenLayers.Util.getElement('SSTList').innerHTML = "<b>Retrieving Sea Surface Temperature data <img src=\"loading.gif\"></b>";
        OpenLayers.Util.getElement('WINDList').innerHTML = "<b>Retrieving Wind data <img src=\"loading.gif\"></b>";
        OpenLayers.Util.getElement('WLList').innerHTML = "<b>Retrieving Water Level data <img src=\"loading.gif\"></b>";
        OpenLayers.Util.getElement('SSCList').innerHTML = "<b>Retrieving Surface Current data <img src=\"loading.gif\"></b>";
        var sst_url = sst_wms.getFullRequestString({
            REQUEST: "GetFeatureInfo",
            EXCEPTIONS: "application/vnd.ogc.se_xml",
            BBOX: map.getExtent().toBBOX(),
            X: e.xy.x,
            Y: e.xy.y,
            INFO_FORMAT: 'text/html',
            QUERY_LAYERS: 'sst_obs_hourly_recent',
            WIDTH: map.size.w,
            HEIGHT: map.size.h
        });
        var wind_url = w_wms.getFullRequestString({
            REQUEST: "GetFeatureInfo",
            EXCEPTIONS: "application/vnd.ogc.se_xml",
            BBOX: map.getExtent().toBBOX(),
            X: e.xy.x,
            Y: e.xy.y,
            INFO_FORMAT: 'text/html',
            QUERY_LAYERS: 'wind_obs_hourly_recent',
            WIDTH: map.size.w,
            HEIGHT: map.size.h
        });
        var wl_url = wl_wms.getFullRequestString({
            REQUEST: "GetFeatureInfo",
            EXCEPTIONS: "application/vnd.ogc.se_xml",
            BBOX: map.getExtent().toBBOX(),
            X: e.xy.x,
            Y: e.xy.y,
            INFO_FORMAT: 'text/html',
            QUERY_LAYERS: 'water_level_obs_hourly_recent',
            WIDTH: map.size.w,
            HEIGHT: map.size.h
        });
        var ssc_url = currents_is_wms.getFullRequestString({
            REQUEST: "GetFeatureInfo",
            EXCEPTIONS: "application/vnd.ogc.se_xml",
            BBOX: map.getExtent().toBBOX(),
            X: e.xy.x,
            Y: e.xy.y,
            INFO_FORMAT: 'text/html',
            QUERY_LAYERS: 'drifter_vectors,sea_surface_currents,adcp_vectors',
            WIDTH: map.size.w,
            HEIGHT: map.size.h
        });
        OpenLayers.loadURL(sst_url, '', this, setSSTHTML);
        OpenLayers.loadURL(wind_url, '', this, setWINDHTML);
        OpenLayers.loadURL(wl_url, '', this, setWLHTML);
        OpenLayers.loadURL(ssc_url, '', this, setSSCHTML);
        OpenLayers.Event.stop(e)
    });

    function setSSTHTML(response) {
        if (response.responseText.length < '5') {
            OpenLayers.Util.getElement('SSTList').innerHTML = "<b>No Sea Surface Temperature data for this location</b>"
        }
        else {
            OpenLayers.Util.getElement('SSTList').innerHTML = response.responseText
        }
    }

    function setWINDHTML(response) {
        if (response.responseText.length < '5') {
            OpenLayers.Util.getElement('WINDList').innerHTML = "<b>No Wind data for this location</b>"
        }
        else {
            OpenLayers.Util.getElement('WINDList').innerHTML = response.responseText
        }
    }

    function setWLHTML(response) {
        if (response.responseText.length < '5') {
            OpenLayers.Util.getElement('WLList').innerHTML = "<b>No Water Level data for this location</b>"
        }
        else {
            OpenLayers.Util.getElement('WLList').innerHTML = response.responseText
        }
    }

    function setSSCHTML(response) {
        if (response.responseText.length < '5') {
            OpenLayers.Util.getElement('SSCList').innerHTML = "<b>No Surface Current data for this location</b>"
        }
        else {
            OpenLayers.Util.getElement('SSCList').innerHTML = response.responseText
        }
    }
}
