﻿// Output (map) display functions

function HOW() { }

HOW.Init = function() {
    HOW.IsLoaded = false;
    HOW.MapType = "pin";
};

HOW.DefineLiterals = function(data, status) {
    //alert("HOW.DefineLiterals = " + status);

    HOW.PinMapChoice = data.PinMapChoice;
    HOW.QueryLayer = data.QueryLayer;
    HOW.BoundarySubset = data.BoundarySubset;
    HOW.Geography = data.Geography;
    HOW.TrueDisplay = data.TrueDisplay;
    HOW.FalseDisplay = data.FalseDisplay;

    HOW.RepeatCallsChoice = data.RepeatCallsChoice;
    HOW.RepeatCallsHeading = data.RepeatCallsHeading;
    HOW.RepeatCallsInfoHeading = data.RepeatCallsInfoHeading;
    HOW.RepeatCallsInfoContent = data.RepeatCallsInfoContent;
    HOW.RepeatCallsMinimumPoints = data.RepeatCallsMinimumPoints;
    HOW.RepeatCallsTop10Only = data.RepeatCallsTop10Only;

    HOW.DensityMapChoice = data.DensityMapChoice;
    HOW.DensityMapHeading = data.DensityMapHeading;
    HOW.DensityMapInfoHeading = data.DensityMapInfoHeading;
    HOW.DensityMapInfoContent = data.DensityMapInfoContent;
    HOW.DensityMapClassifyBy = data.DensityMapClassifyBy;
    HOW.DensityMapCount = data.DensityMapCount;
    HOW.DensityMapDensity = data.DensityMapDensity;

    var url = "Data.aspx?page=how";
    var target = document.getElementById("how-content");

    //alert("Show How = " + url);
    _dynoLoader._loadXmlDocument(url, target, HOW.Load, null, false);
};

HOW.Load = function() {
    HOW.IsLoaded = true;
    HOW.MapTypeDisplay = "";
    HOW.QueryLayerID = "";
    HOW.QueryLayerName = "";
    HOW.RepeatPoints = $("#lstHowRepeatPoints").val();
    HOW.OnlyIncludeTop = true;
    HOW.OnlyIncludeTopDisplay = HOW.TrueDisplay;
    HOW.GeographyLayerID = "";
    HOW.GeographyLayerName = "";
    HOW.UseBoundarySubset = true;
    HOW.UseBoundarySubsetDisplay = HOW.TrueDisplay;
    HOW.Classify = "Density";
    HOW.ClassifyDisplay = HOW.DensityMapDensity;

    //alert("HOW.Load = " + HOW.RepeatCallsHeading);
    if (UIHelper.DensityMapEnabled) $("#how-density-map-button").show();
    if (UIHelper.RepeatCallsEnabled) $("#how-repeat-calls-button").show();

    HOW.MapType = ""; // Make sure the function doesn't exit early
    $('input[name="how-type"]')[0].checked = true;
    HOW.TypeSelected("pin", false);

    $("input[name*='how-type']").click(function() {
        HOW.TypeSelected($(this).val(), true);
    });

    $("input[name*='how-classify']").click(function() {
        HOW.ClassifySelected($(this).val());
    });

    HOW.DefineQueryLayers();

    UIHelper.HideStatusMessage(true);
};

HOW.DefineQueryLayers = function() {
    var s, idx;
    var crntID = HOW.QueryLayerID;
    var vals = WHAT.GetLayersInUse().split("|");
    //alert("HOW.DefineQueryLayers - QueryLayersInUse = " + WHAT.GetLayersInUse());

    HOW.QueryLayerID = "";

    // Query layers
    if (vals[0] < 2) {
        s = HOW.QueryLayer + ": <span class='how-single-layer'>" + vals[2] + "</span>";
    } else {
        s = HOW.QueryLayer + ": ";
        s += "<select id='lstHowQueryLayers' onchange='HOW.QueryLayerChanged();'>"
        for (idx = 1; idx < vals[0] * 2; idx += 2) {
            s += "<option value='" + vals[idx] + "'";
            if (vals[idx] == crntID) {
                s += " selected='selected'";
                HOW.QueryLayerID = vals[idx];
                HOW.QueryLayerName = vals[idx + 1];
            }
            s += ">" + vals[idx + 1] + "</option>";
        }
        s += "</select>";

    }
    $("#how-query-layers-content").html(s);

    // Set the current layer
    if (HOW.QueryLayerID == "") {
        HOW.QueryLayerID = vals[1];
        HOW.QueryLayerName = vals[2];
    }

    if (WHERE.IsValid) {
        $("#how-density-boundary-subset").show();
        HOW.UseBoundarySubset = $('input[name=how-use-boundary-subset]').attr('checked');
        if (HOW.UseBoundarySubset) { HOW.UseBoundarySubsetDisplay = HOW.TrueDisplay } else { HOW.UseBoundarySubsetDisplay = HOW.FalseDisplay }
    } else {
        $("#how-density-boundary-subset").hide();
        HOW.UseBoundarySubset = false;
        HOW.UseBoundarySubsetDisplay = HOW.FalseDisplay;
    }

    CVS.BuildSummaryDisplay();

    HOW.ShowContent();
};

HOW.ShowContent = function() {
    //$("#how-content").css({ marginBottom: "20px" });
    $("#how-content").slideDown();
};

HOW.TypeSelected = function(type, indicatePending) {
    //alert("HOW.TypeSelected = " + $("#how-common-container h3").html());
    if (HOW.MapType == type) return;

    HOW.MapType = type;

    switch (type) {
        case "pin":
            $("#how-information-container").hide();
            $("#how-repeat-container").hide();
            $("#how-density-container").hide();
            $("#how-common-container").hide();
            $("#how-pin-container").show();

            UIHelper.QueryIcon = "images/UI/ico-pin-map.jpg";
            UIHelper.QuerySummary = UIHelper.PinMapSummary;

            HOW.MapTypeDisplay = HOW.PinMapChoice;
            break;

        case "repeat":
            $("#how-common-container h3").html(HOW.RepeatCallsHeading);
            $("#how-information-container h3").html(HOW.RepeatCallsInfoHeading);
            $("#how-information-content").html(HOW.RepeatCallsInfoContent);
            $("#how-pin-container").hide();
            $("#how-density-container").hide();
            $("#how-common-container").show();
            $("#how-repeat-container").show();
            $("#how-information-container").show();

            UIHelper.QueryIcon = "images/UI/ico-repeat-calls.jpg";
            UIHelper.QuerySummary = UIHelper.RepeatCallsSummary;

            HOW.MapTypeDisplay = HOW.RepeatCallsChoice;
            break;

        case "density":
            $("#how-common-container h3").html(HOW.DensityMapHeading);
            $("#how-information-container h3").html(HOW.DensityMapInfoHeading);
            $("#how-information-content").html(HOW.DensityMapInfoContent);
            $("#how-pin-container").hide();
            $("#how-repeat-container").hide();
            $("#how-common-container").show();
            $("#how-density-container").show();
            $("#how-information-container").show();

            UIHelper.QueryIcon = "images/UI/ico-density-map.jpg";
            UIHelper.QuerySummary = UIHelper.DensityMapSummary;

            HOW.MapTypeDisplay = HOW.DensityMapChoice;
            HOW.GeographyLayerID = $("#lstHowGeographyLayers").val();
            HOW.GeographyLayerName = $("#lstHowGeographyLayers :selected").text();
            break;
    }

    // Set the main summary image and description
    $("#analysis-summary-image").attr({ src: UIHelper.QueryIcon });
    $("#analysis-summary-paragraph").html(UIHelper.QuerySummary);

    CVS.BuildSummaryDisplay();
    if (indicatePending) UIHelper.IndicatePendingChanges(true);
};

HOW.QueryLayerChanged = function(type) {
    HOW.QueryLayerID = $("#lstHowQueryLayers").val();
    HOW.QueryLayerName = $("#lstHowQueryLayers :selected").text();

    CVS.BuildSummaryDisplay();
    UIHelper.IndicatePendingChanges(true);
};

HOW.RepeatPointChanged = function() {
    HOW.RepeatPoints = $("#lstHowRepeatPoints").val();
    //alert("HOW.RepeatPoints = " + HOW.RepeatPoints);

    CVS.BuildSummaryDisplay();
    UIHelper.IndicatePendingChanges(true);
};

HOW.OnlyIncludeTopChanged = function() {
    HOW.OnlyIncludeTop = $('input[name=how-only-include-top]').attr('checked');
    if (HOW.OnlyIncludeTop) { HOW.OnlyIncludeTopDisplay = HOW.TrueDisplay } else { HOW.OnlyIncludeTopDisplay = HOW.FalseDisplay }
    //alert("HOW.OnlyIncludeTop = " + HOW.OnlyIncludeTop);

    CVS.BuildSummaryDisplay();
    UIHelper.IndicatePendingChanges(true);
};

HOW.GeographyLayerChanged = function() {
    HOW.GeographyLayerID = $("#lstHowGeographyLayers").val();
    HOW.GeographyLayerName = $("#lstHowGeographyLayers :selected").text();

    CVS.BuildSummaryDisplay();
    UIHelper.IndicatePendingChanges(true);
};

HOW.BoundarySubsetChanged = function() {
    HOW.UseBoundarySubset = $('input[name=how-use-boundary-subset]').attr('checked');
    if (HOW.UseBoundarySubset) { HOW.UseBoundarySubsetDisplay = HOW.TrueDisplay } else { HOW.UseBoundarySubsetDisplay = HOW.FalseDisplay }

    CVS.BuildSummaryDisplay();
    UIHelper.IndicatePendingChanges(true);
};

HOW.ClassifySelected = function(type) {
    //alert("HOW.ClassifySelected");
    if (HOW.Classify == type) return;

    HOW.Classify = type;
    if (HOW.Classify == "Density") { HOW.ClassifyDisplay = HOW.DensityMapDensity } else { HOW.ClassifyDisplay = HOW.DensityMapCount }

    CVS.BuildSummaryDisplay();
    UIHelper.IndicatePendingChanges(true);
};

HOW.GetSummary = function() {
    var s = "<tr><td class=\"field\">" + UIHelper.HowDisplay + ":</td><td>";
    if (HOW.IsLoaded) {
        s += HOW.MapTypeDisplay + "</td></tr>";
    } else {
        s += UIHelper.HowMapTypeDisplay + "</td></tr>";
    }

    if (HOW.MapType == "density") {
        s += "<tr><td class=\"field\">" + HOW.QueryLayer + ":</td><td>" + HOW.QueryLayerName + "</td></tr>";
        s += "<tr><td class=\"field\">" + HOW.BoundarySubset + ":</td><td>" + HOW.UseBoundarySubsetDisplay + "</td></tr>";
        s += "<tr><td class=\"field\">" + HOW.Geography + ":</td><td>" + HOW.GeographyLayerName + "</td></tr>";
        s += "<tr><td class=\"field\">" + HOW.DensityMapClassifyBy + ":</td><td>" + HOW.ClassifyDisplay + "</td></tr>";
    }

    if (HOW.MapType == "repeat") {
        s += "<tr><td class=\"field\">" + HOW.QueryLayer + ":</td><td>" + HOW.QueryLayerName + "</td></tr>";
        s += "<tr><td class=\"field\">" + HOW.BoundarySubset + ":</td><td>" + HOW.UseBoundarySubsetDisplay + "</td></tr>";
        s += "<tr><td class=\"field\">" + HOW.RepeatCallsMinimumPoints + ":</td><td>" + $("#lstHowRepeatPoints :selected").text() + "</td></tr>";
        s += "<tr><td class=\"field\">" + HOW.RepeatCallsTop10Only + ":</td><td>" + HOW.OnlyIncludeTopDisplay + "</td></tr>";
    }

    return s;
};

