
// =============
// Select Report
// =============

$(document).ready(function () {

    var $application = $("#APPLICATION_MNEMONIC").val(),
            $sessionStorage = JSON.parse(sessionStorage.getItem($application) || "{}");

    // -----------
    // Find Button
    // -----------

    $(".btnFind").on("click", function () {

        $sessionStorage.action = "Reports.selectReport";
        $sessionStorage.pagination = "first";

        sessionStorage.setItem($application, JSON.stringify($sessionStorage));

        $("#spinner-dialog").modal("show");

        formSubmit($sessionStorage);

    });

    $("#select_report").on("keyup", function (e) {
        if (e.key === "Enter") {
            $(".btnFind").trigger("click");
        }
    });

    // -----------------
    // Clear Find Button
    // -----------------

    $(".btnClearFind").on("click", function () {

        $("#select_report").val("").trigger("change");

        $sessionStorage.action = "Reports.selectReport";
        $sessionStorage.pagination = "first";

        sessionStorage.setItem($application, JSON.stringify($sessionStorage));

        $("#spinner-dialog").modal("show");

        formSubmit($sessionStorage);

    });

    // --------------------
    // Show Per Page Change
    // --------------------

    $("#reports_per_page").on("change", function () {

        $sessionStorage.alerts_per_page = $(this).val();
        $sessionStorage.action = "Reports.selectReport";
        $sessionStorage.pagination = "first";

        sessionStorage.setItem($application, JSON.stringify($sessionStorage));

        $("#spinner-dialog").modal("show");

        formSubmit($sessionStorage);

    });

    // ------------------
    // Pagination Buttons
    // ------------------

    $(".btnPagination").on("click", function () {

        $sessionStorage.action = "Reports.selectReport";
        $sessionStorage.pagination = $(this).data("pagination");

        sessionStorage.setItem($application, JSON.stringify($sessionStorage));

        $("#spinner-dialog").modal("show");

        formSubmit($sessionStorage);

        delete $sessionStorage.pagination;

        sessionStorage.setItem($application, JSON.stringify($sessionStorage));

    });

    // -----------
    // Done Button
    // -----------

    $(".btnDone").on("click", function () {

        formSubmit({action: ""});

    });

    // ---------------------------
    // Process the selected Report
    // ---------------------------

    $("#reports-table tbody").on("click touch", "tr", function (e) {

        e.preventDefault();

        switch ($(this).data("report-type")) {

            case "Report" :

                $sessionStorage.action = $(this).data("report-class");
                $sessionStorage.printReturn = "Reports.selectReport";

                sessionStorage.setItem($application, JSON.stringify($sessionStorage));

                var target = $(this).data("report-target").trim();

                formSubmit($sessionStorage, target);

                break;

            case "Download" :

                $sessionStorage.action = $(this).data("report-class");
                $sessionStorage.downloadReturn = "Reports.selectReport";

                sessionStorage.setItem($application, JSON.stringify($sessionStorage));

                formSubmit($sessionStorage);

                break;

            case "Email" :

                break;

            case "Graph" :

                $sessionStorage.action = $(this).data("report-class");
                $sessionStorage.graphReturn = "Reports.selectReport";

                sessionStorage.setItem($application, JSON.stringify($sessionStorage));

                formSubmit($sessionStorage);

                break;

            case "Upload" :

                break;

            default :

                return false;

                break;

        }

    });

    // -------------------
    // Save Changed Inputs
    // -------------------

    $(".autosave").on("change", function (e) {

        switch (e.target.type) {

            case "text"       :
                $sessionStorage[e.target.name] = $(this).val();
                break;
            case "radio"      :
                $sessionStorage[e.target.name] = $(this).val();
                break;
            case "checkbox"   :
                $sessionStorage[e.target.name] = $(this).prop("checked");
                break;
            case "select-one" :
                $sessionStorage[e.target.name] = $(this).val();
                break;
            case "hidden"     :
                $sessionStorage[e.target.name] = $(this).val();
                break;

            default           :
                $sessionStorage[e.target.name] = $(this).val();
                break;

        }

        sessionStorage.setItem($application, JSON.stringify($sessionStorage));

    });

    // ----------------
    // Initalize Inputs
    // ----------------

    $.each($sessionStorage, function (name, value) {

        var $input = $(":input").filter("[name='" + name + "']");

        if ($input.length > 0) {

            switch ($input.prop("type")) {

                case "text"       :
                    $input.val(value);
                    break;
                case "radio"      :
                    $input.filter("[value=" + value + "]").prop("checked", true);
                    break;
                case "checkbox"   :
                    $input.prop("checked", value);
                    break;
                case "select-one" :
                    $input.val(value);
                    break;
                case "hidden"     :
                    $input.val(value);
                    break;

                default           :
                    $input.val(value);
                    break;

            }

        }

    });

    // ------------------
    // Save preset Inputs
    // ------------------

    $("input[type=radio]:checked").trigger("change");

    // -----------------
    // Per Page Dropdown
    // -----------------

    $("#reports_per_page").on("change", function () {

        $(".btnFind").trigger("click");

    });

});