function Waqss2_olMap() {

    this.imageUrlPrefix = "http://www.brockmann-consult.de/images/WAQS-MC/weekly/";

    this.initMap = function(emptyControls) {

        var contr = [];

        if (!emptyControls) {
            contr = [
                new OpenLayers.Control.Navigation(),
                new OpenLayers.Control.ArgParser()
            ];
        }

        this.map = new OpenLayers.Map('map', {
            theme: null,
            controls: contr});

        var ol_wms = new OpenLayers.Layer.WMS(
                "OpenLayers WMS",
                "http://labs.metacarta.com/wms/vmap0",
        {layers: 'basic'});

        var nsBounds = new OpenLayers.Bounds(-5, 49, 13, 63);
        var size = new OpenLayers.Size(10, 10);
        var nsLayer = new OpenLayers.Layer.Image(
                "nos",
                "",
                nsBounds, size, {isBaseLayer: false}
                );

        var bsBounds = new OpenLayers.Bounds(9, 53, 31, 66);
        var bsLayer = new OpenLayers.Layer.Image(
                "bas",
                "",
                bsBounds, size, {isBaseLayer: false}
                );

        this.imageLayers = ["bas", "nos"];
        this.map.addLayers([ol_wms, nsLayer, bsLayer]);

        if (!emptyControls) {
            var nav = new OpenLayers.Control.NavigationHistory();
            this.map.addControl(nav);
            var historyPanel = getElem("historyPanel");
            var panel = new OpenLayers.Control.Panel({div: historyPanel});
            panel.addControls([nav.next, nav.previous]);
            this.map.addControl(panel);

            var mousePosPanel = getElem("mousePosPanel");
            this.map.addControl(new OpenLayers.Control.MousePosition({div: mousePosPanel}));
        }

        var scalePanel = getElem("scalePanel");
        this.map.addControl(new OpenLayers.Control.ScaleLine({div: scalePanel}));

        var bounds = new OpenLayers.Bounds();
        bounds.extend(nsBounds);
        bounds.extend(bsBounds);
        this.map.fractionalZoom = true;
        // this.map.restrictedExtent = createExpandedBoundsWithBorder(bounds, 5);
        this.resultBounds = bounds;
        this.zoomToResult();
        // this.setBackgroundLayer();
    };
    this.zoomToResult = function() {
        this.zoomToBounds(this.resultBounds);
    };

    this.zoomToBounds = function(bounds) {
        this.map.zoomToExtent(bounds, false);
    };

    this.setMapImages = function(waqssDate, paramId) {
        for (var i = 0; i < this.imageLayers.length; i++) {
            var sceneId = this.imageLayers[i];
            var imageName = getImageNameFor(waqssDate, paramId, sceneId);
            var layer = this.map.getLayersByName(sceneId)[0];
            if (imageName == undefined) {
                layer.setVisibility(false);
            } else {
                layer.setVisibility(true);
                var url = WAQSS_IMAGE_PREFIX_HIRES + imageName;
                layer.setUrl(url);
            }
            if (BGLayers != null) {
                var bgLayer = BGLayers[i];
                if (imageName == undefined) {
                    bgLayer.setVisibility(false);
                } else {
                    bgLayer.setVisibility(true);
                }
            }
        }
    };

    var BGLayers = null;

    this.setBackgroundLayer = function() {
        var nsBounds = new OpenLayers.Bounds(-5, 49, 13, 63);
        var nsSize = new OpenLayers.Size(10, 10);
        var nsBGLayer = new OpenLayers.Layer.Image(
                "nosBG",
                "noImage",
                nsBounds, nsSize, {isBaseLayer: false}
                );

        var bsBounds = new OpenLayers.Bounds(9, 53, 31, 66);
        var bsSize = new OpenLayers.Size(10, 10);
        var bsBGLayer = new OpenLayers.Layer.Image(
                "basBG",
                "noImage",
                bsBounds, bsSize, {isBaseLayer: false}
                );

        BGLayers = [nsBGLayer, bsBGLayer];
        this.map.addLayers(BGLayers);
        nsBGLayer.setVisibility(true);
        nsBGLayer.setOpacity(0.8);
        nsBGLayer.setUrl('images/sceneMask/nos_landmask.gif');
        bsBGLayer.setVisibility(true);
        bsBGLayer.setOpacity(0.8);
        bsBGLayer.setUrl('images/sceneMask/bas_landmask.gif');
    };
}
