/**
 * Filename     :   map.js
 * Copyright    :   Transport for London 2005
 *
 * Author       :   Phil Maskell
 *
 **/
// <--  Hide javascript from non-compliant browsers
var wms_server = "/roadworks/requestMapWMS";
//var wms_server = "http://public.londonworks.gov.uk/roadworks/requestMapWMS";

var map, overview, keyboardControls, navControls, measureControls, controls;
var loading;

function init(x, y, z) {
    if (browser.isLessThanIE6) {
        //nowt
    } else {
        doInit(x, y, z);
    }
}
function doInit(x, y, z) {
    document.getElementById('messageContainer').style.visibility = 'visible';
    document.getElementById('map').style.visibility = 'visible';
    document.getElementById('mapCopyrightMessage').style.visibility = 'visible';
    var options = {
        projection: "EPSG:27700",
        units: "m",
        controls: [],
        numZoomLevels: 6,
        resolutions: [1,2,4,8,16,32],
        maxExtent: new OpenLayers.Bounds(496000, 152000, 562000, 206000)
    };

    map = new OpenLayers.Map('map', options);

    var panZoom = new OpenLayers.Control.PanZoomBar();
    panZoom.slideFactor = 300;
    map.addControl(panZoom);

    var navigation = new OpenLayers.Control.Navigation();
    navigation.handleRightClicks = true;

    navControls = {
        pan: navigation,
        zoomBox: new OpenLayers.Control.ZoomBox({alwaysZoom:true})
    };

    for(var key in navControls) {
        map.addControl(navControls[key]);
    }

    loadMapLayers();
    loadDynamicLayers();

    keyBoardControls = new OpenLayers.Control.KeyboardDefaults();
    map.addControl(keyBoardControls);

    map.addControl(new OpenLayers.Control.Attribution());

    // create an overview map control with non-default options
    var overviewOptions = {
        minRectSize: 2,
        minRatio: 8,
        maxRatio: 8,
        layers: new Array(new OpenLayers.Layer.WMS("OVERVIEW",
            wms_server, {
                layers: 'layers/pubreg/barts_grey, layers/pubreg/streetview_grey, layers/pubreg/boroughs_thin, layers/pubreg/motorways ',
                format: "image/gif"
            }, {singleTile: false, buffer: buffer, gutter: gutter, tileSize: new OpenLayers.Size(600,600)})),
        mapOptions: {
            projection: "EPSG:27700",
            units: "m",
            numZoomLevels: 7,
            restrictedExtent: new OpenLayers.Bounds(496000, 152000, 562000, 206000),
            maxExtent: new OpenLayers.Bounds(300000, 70000, 560000, 400000)
        }
    }

    if (!browser.isKonqueror) {
        overview = new OpenLayers.Control.OverviewMap(overviewOptions);
        map.addControl(overview);

        // expand the overview map control
        overview.maximizeControl();
    }
    map.setCenter(new OpenLayers.LonLat(x, y), z);

    AjaxFunctions.setCenter(map.getCenter().lon, map.getCenter().lat, map.getZoom(),
            map.getExtent().getWidth(), map.getExtent().getHeight(), plotActivityGeometry);

    map.events.register("movestart", map, function(e) {
        document.getElementById("activityCanvas").innerHTML = '';
        document.getElementById("activityCanvas").style.display = 'none';
        document.getElementById("messageContainer").innerHTML = "<div class=\"mapMessage alert\" id=\"mapResults\"><span><img src=\"/pr_static/images/ajax-loading.gif\" alt=\" \" height=\"12\" width=\"12\" />&nbsp;&nbsp;Loading...</span></div>";
    });

    map.events.register("moveend", map, function(e) {
        document.getElementById("activityCanvas").style.display = 'none';
        AjaxFunctions.setCenter(map.getCenter().lon, map.getCenter().lat, map.getZoom(),
                map.getExtent().getWidth(), map.getExtent().getHeight(), plotActivityGeometry);
    });

    if (!browser.isKonqueror) {
        overview.minimizeControl();
    }
}

function clearLayer(layer) {
    for(var i=0; i<map.layers.length; i++) {
        if(layer == map.layers[i].name) {
            if(map.layers[i].CLASS_NAME.contains('Vector')) {
                map.layers[i].destroyFeatures();
            } else if(map.layers[i].CLASS_NAME.contains('Markers')) {
                map.layers[i].clearMarkers();
            }
        }
    }
}

function keyboard(state) {
    try {
        if(state) {
            for(var key in map.controls) {
                if(map.controls[key] == keyBoardControls) {
                    map.controls[key].activate();
                }
            }
        } else {
            for(var key in map.controls) {
                if(map.controls[key] == keyBoardControls) {
                    map.controls[key].deactivate();
                }
            }
        }
    } catch(err) {}
}

// End of Code Do not paste any code below this point.
// It will be visible to non-javascript enabled browsers
//-->
