function Waqss2_legend() {
    this.update = function(waqssDate, paramId, range) {
        this.updateScenePeriod(waqssDate);
        this.updateCopyright(waqssDate);
        this.updateSceneParameterName(paramId);
        this.updateColorLegend(paramId);
        this.updateColorLegendVertical(paramId);
        this.updateDatasource(paramId);
        this.updateProcessing();
        this.updateDevelopment();
        this.updateAnimationRange(range);
        this.updateCurrentYear(waqssDate);
        this.updateCurrentMonth(waqssDate);
    };
    this.updateScenePeriod = function(waqssDate) {
        var elem = getElem("scenePeriod");
        if (elem != null) {
            var endDate = convertWaqssToJsDate(waqssDate);
            var startDate = new Date();
            startDate.setTime(endDate.getTime() - 6 * WAQSS_DATE_DAY);
            var weeklyMean = "Weekly mean: <b>" +
                             createGermanReadableDate(startDate) +
                             " - " +
                             createGermanReadableDate(endDate) +
                             "</b>";
            elem.innerHTML = weeklyMean;
        }
    };
    this.updateCopyright = function(waqssDate) {
        var elem = getElem("copyright");
        if (elem != null) {
            elem.innerHTML = "&copy; " + waqssDate.substring(0, 4) + " Brockmann Consult";
        }
    };

    this.paramNames = new Object();
    this.paramNames["chl"] = "Chlorophyll Concentration";
    this.paramNames["tsm"] = "Total Suspended Matter";
    this.paramNames["ys"] = "Yellow Substance";
    this.paramNames["trn"] = "Water Transparency";
    this.paramNames["sst"] = "Sea Surface Temperature";
    this.updateSceneParameterName = function(paramId) {
        var elem = getElem("sceneParam");
        if (elem != null) {
            elem.innerHTML = this.paramNames[paramId];
        }
    };

    this.colorLegendList = new Object();
    this.colorLegendList["chl"] = "legend_chl_einheit.png";
    this.colorLegendList["tsm"] = "legend_tsm_einheit.png";
    this.colorLegendList["ys"] = "legend_ys_einheit.png";
    this.colorLegendList["trn"] = "legend_trn_einheit.png";
    this.colorLegendList["sst"] = "legend_sst_einheit.png";
    this.updateColorLegend = function(paramId) {
        var elem = getElem("legendImg");
        if (elem != null) {
            elem.src = "images/legend/" + this.colorLegendList[paramId];
        }
    };

    this.colorLegendListVertical = new Object();
    this.colorLegendListVertical["chl"] = "legend_chl_einheit_vertical.png";
    this.colorLegendListVertical["tsm"] = "legend_tsm_einheit_vertical.png";
    this.colorLegendListVertical["ys"] = "legend_ys_einheit_vertical.png";
    this.colorLegendListVertical["trn"] = "legend_trn_einheit_vertical.png";
    this.colorLegendListVertical["sst"] = "legend_sst_einheit_vertical.png";
    this.updateColorLegendVertical = function(paramId) {
        var elem = getElem("legendImgVertical");
        if (elem != null) {
            elem.src = "images/legend/" + this.colorLegendListVertical[paramId];
        }
    };

    var gmes = "<b>GMES Marcoast</b>";
    var metOcean = "MetOcean Data Service";
    var acri = "ACRI-ST";
    var meris = "MERIS &copy; ESA";
    var aatsr = "AATSR &copy; ESA";
    var date = new Date();
    var year = date.getFullYear();
    var metaC = '&copy; ' + year + ' MetaCarta (WMS)';
    this.datasource = new Object();
    this.datasource["chl"] = [gmes, metOcean, acri, meris, metaC];
    this.datasource["tsm"] = [gmes, metOcean, acri, meris, metaC];
    this.datasource["ys"] = [gmes, metOcean, acri, meris, metaC];
    this.datasource["trn"] = [gmes, metOcean, acri, meris, metaC];
    this.datasource["sst"] = [gmes, aatsr];
    this.updateDatasource = function(paramId) {
        var elem = getElem("datasource");
        if (elem != null) {
            var values = this.datasource[paramId];
            var html = "";
            for (var i = 0; i < values.length; i++) {
                if (i > 0) html += "<br>";
                html += values[i];
            }
            elem.innerHTML = html;
        }
    };
    this.updateProcessing = function(paramId) {
        var elem = getElem("processing");
        if (elem != null) {
            elem.innerHTML = 'Processing by ' +
                             '<a href="http://www.brockmann-consult.de/">' +
                             'Brockmann Consult</a> ' +
                             'using the ' +
                             '<a href="http://www.brockmann-consult.de/beam/">' +
                             'BEAM</a> ' +
                             'software.<br><br>' +
                             'The map is realized using the ' +
                             '<a href="http://www.openlayers.org/">' +
                             'Open Layers</a> ' +
                             'framework.';
        }
    };
    this.updateDevelopment = function() {
        var elem = getElem("development");
        if (elem != null) {
            elem.innerHTML = 'Developed in the<br>' +
                             '<img src="static_waqss/images/marcoast_logo_110x16.jpg" width="75" border="0"/>' +
                             '<img src="./images/empty.gif" width="0" height="14" border="0" alt="">' +
                             ' project<br>funded by ' +
                             '<a href="http://www.esa.int/">' +
                             '<img src="static_waqss/images/esa_logo_16.png" width="35" border="0"/>' +
                             '</a>';
        }
    };
    this.updateAnimationRange = function(range) {
        var elem = getElem("animationRange");
        if (elem != null) {
            if (range != null) {
                var firstIndex = 0;
                var lastIndex = range.length - 1;
                var rangeString = 'Running weekly averages for <b>';
                rangeString += createGermanReadableDate(createWaqssDate(range[firstIndex]));
                rangeString += " - ";
                rangeString += createGermanReadableDate(createWaqssDate(range[lastIndex]));
                rangeString += "</b>";
                elem.innerHTML = rangeString;
            } else {
                elem.innerHTML = "&nbsp;";
            }
        }
    };
    this.updateCurrentYear = function(waqssDate) {
        var elem = getElem("currentYear");
        if (elem == null) {
            return;
        }
        var yearStr = waqssDate.substring(0, 4);
        elem.innerHTML = yearStr;
    };
    this.updateCurrentMonth = function(waqssDate) {
        var elem = getElem("currentMonth");
        if (elem == null) {
            return;
        }
        var monthStr = waqssDate.substring(4, 6);
        var idx = parseInt(monthStr, 10);
        elem.innerHTML = WAQSS_MONTH_NAMES[idx];
    };
}

