/* Minification failed. Returning unminified contents.
(244,13,246,14): run-time error JS1314: Implicit property name must be identifier: viewed() {
                //viewer.zoomTo(1);
            }
 */
// ========== Loading Progress Indicator ==========

function showLoading() {
    $(".sd-loaded").hide();
    $(".sd-loading").show();
}

function historyBackAndReload() {
    window.location = document.referrer;
}

$(function () {
    $(window).on("beforeunload", function (e) {
        if ($('.a21Check4DirtyForm').hasClass('dirty')) {
            window.onbeforeunload = null;
            e.preventDefault();
        }
        else {
            showLoading();
        }
    });
    // FIX: loading-indicator shown in case of forward/back browser navigation.
    $(window).bind("pageshow", function (event) {
        if (event.originalEvent.persisted) {
            //$(".gmi-loading").hide();     // hide loading-indicator scenario
            window.location.reload()        // reload page scenario
        }
    });
});


$(function () {

    // ========== My-HACK: fix IE not focusing and not changing radio buttons with arrows when displayed as bootstrap btn-group ...!! ==========

    $(".btn-group .btn input[type=radio]").change(function () {
        $(this).closest(".btn-group").find(".btn").removeClass("active");
        $(this).closest(".btn").addClass("active");
    });
    $(".btn-group .btn").click(function () {
        $(this).find("input[type=radio]").focus();
    });

    // ========== MVC: Set input maxlength to data-val-length-max ==========

    $("input[data-val-length-max]").each(function () {
        $(this).attr("maxlength", $(this).attr("data-val-length-max"));
    });

    // ========== OpekaHtmlHelpers ==========

    $(".sd-field-reference i[data-reference-for]").click(function () {
        var editorId = $(this).data("reference-for");
        var $editor = $(editorId);
        var value = $(this).closest(".sd-field-reference").find("span").text();
        $editor.focus();
        $editor.val(value);
    });

    // ========== ReadOnly ==========

    $(function () {
        $(".sd-readonly .sd-field-form-group :input[placeholder]").attr("placeholder", "");
        $(".sd-readonly .sd-field-form-group :input").not(".btn-info").prop("disabled", true);
        $(".sd-readonly .sd-field-form-group .btn").not(".btn-info").addClass("disabled");
        $(".sd-readonly .sd-field-form-group .btn-group .btn").click(function (event) { event.stopPropagation(); });
        $(".sd-readonly").removeClass("invisible");

        $(".sd-readonly.sd-editor-Bool-RadioList .btn").addClass("disabled");
        $(".sd-readonly.sd-editor-Bool-RadioList .btn-group .btn").click(function (event) { event.stopPropagation(); });
        $(".sd-readonly.sd-editor-Bool-RadioList :input:not(:checked)").prop("disabled", true);

    });

    // ========== Other ==========

});

// ========== Confirm-Dialog ==========

$(function () {

    function getConfirmDialogHtml() {
        var ret = ''
            + '<div class="modal fade" id="confirmDialog" tabindex="-1" role="dialog" aria-hidden="true" style="display: none;">'
            + '    <div class="modal-dialog">'
            + '        <div class="modal-content">'
            + '            <div class="modal-header">'
            + '                <button type="button" class="close" data-dismiss="modal" aria-hidden="true"></button>'
            + '                <h4 class="modal-title confirm-title">Confirmation Dialog</h4>'
            + '            </div>'
            + '            <div class="modal-body confirm-prompt">Are you sure you want to continue?</div>'
            + '            <div class="modal-footer">'
            + '                <div style="padding-top:12px;" class="pull-left confirm-wait hidden">Please Wait...</div>'
            + '                <button data-dismiss="modal" type="button" class="btn btn-default confirm-cancel">Cancel</button>'
            + '                <button type="button" class="btn btn-primary cancel confirm-ok">OK</button>'
            + '                <div style="padding-top:12px; float:none;" class="confirm-custom hidden">Custom...</div>'
            + '            </div>'
            + '        </div>'
            + '    </div>'
            + '</div>'
            + '';
        return ret;
    }

    $("[confirm-dialog][onclick]").each(function () {
        var elm = $(this)[0];
        $(this).attr('confirm-onclick', elm.onclick);
        elm.onclick = null;
    });

    $("[confirm-dialog]").click(function (ev, p1) {
        var $self = $(this);

        var $dlg = $('#confirmDialog');

        if (p1 === 'confirmed') {
            var confirmWait = $self.attr('confirm-wait');
            if (confirmWait !== undefined) {
                $dlg.find(".confirm-wait").html(confirmWait).removeClass('hidden');
                $dlg.find('button').prop('disabled', true);
            }

            var ret;
            var fn = $self.attr('confirm-onclick');
            if (fn !== undefined) {
                if ($.isFunction(fn))
                    ret = fn();
                else
                    ret = eval(fn);
            }
            else {
                var href = $self.attr('href');
                if (href != undefined) window.location.href = href;
            }
            return ((typeof ret === 'boolean') ? ret : true);
        }

        if ($dlg.length == 0) {
            $(getConfirmDialogHtml()).appendTo('body');
            var $dlg = $('#confirmDialog');
        }

        $dlg.find(".confirm-title").html($self.attr('confirm-title'));

        $dlg.find(".confirm-prompt").html($self.attr('confirm-prompt'));

        var $butCancel = $dlg.find(".confirm-cancel");
        $butCancel.text($self.attr('confirm-cancel-text'));
        $butCancel.text($self.attr('confirm-cancel-class'));

        var $butOK = $dlg.find(".confirm-ok");
        $butOK.text($self.attr('confirm-ok-text'));
        $butOK.addClass($self.attr('confirm-ok-class'));
        $butOK.unbind("click");
        $butOK.click(function () { $self.trigger('click', 'confirmed'); });      

        var fnOnLoad = $self.attr('confirm-onload');
        if (fnOnLoad !== undefined) {
            if ($.isFunction(fnOnLoad))
                fnOnLoad();
            else
                eval(fnOnLoad);
        }

        $dlg.modal('show');

        return false;
    });

    $("[pdfview-dialog]").click(function (ev, p1) {
        var $self = $(this);

        var $dlg = $('#myModal');

        var fileId = $self.attr('file-id');
        $viewerModalDialog = $dlg.find('.modal-dialog');
        var approve = $viewerModalDialog.find('#approve');
        var approveLink = approve.attr("href");
        approve.attr("href", approveLink + '/' + fileId);

        var reject = $viewerModalDialog.find('#reject');
        var rejectLink = reject.attr("href");
        reject.attr("href", rejectLink + '/' + fileId);
        
        $viewerModalDialog.css('height', '100%');
        $viewerModalDialog.css('width', '100%');
        $viewerModalDialog.css('margin', '0');
        $viewerModalDialog.css('padding', '0');

        $viewerContent = $dlg.find('.modal-content');
        $viewerContent.css('height', 'auto');
        $viewerContent.css('min-height', '100%');
        $viewerContent.css('border-radius', '0');


        var fileUrl = $self.attr('pdfview-file');
        $viewerBody = $dlg.find('.modal-body');
        //$viewerBody.css('position', 'static');
        //$viewerBody.css('padding', '30px');
        //$viewerBody.css('height', '100%');
        $viewerBody.html('<iframe src="' + _js_root_url  + 'Scripts/pdf.js/web/viewer.html?file=' + fileUrl +'" frameborder="0" height="800px" width="100%"/>');

        $dlg.modal('show');
        return false;
    });
    $(".imageview-dialog").click(function (ev) {
        ev.preventDefault();
        var $self = $(this);

        var $dlg = $('#myModal');

        var fileId = $self.attr('file-id');
        $viewerModalDialog = $dlg.find('.modal-dialog');
        var approve = $viewerModalDialog.find('#approve');
        var approveLink = approve.attr("href");
        approve.attr("href", approveLink + '/' + fileId);

        var reject = $viewerModalDialog.find('#reject');
        var rejectLink = reject.attr("href");
        reject.attr("href", rejectLink + '/' + fileId);

        $viewerModalDialog = $dlg.find('.modal-dialog');
        $viewerModalDialog.css('height', '70%');
        $viewerModalDialog.css('width', '70%');
        //$viewerModalDialog.css('margin', '0');
        //$viewerModalDialog.css('padding', '0');

        $viewerContent = $dlg.find('.modal-content');
        $viewerContent.css('height', 'auto');
        $viewerContent.css('min-height', '70%');        
        //$viewerContent.css('border-radius', '0');

        var fileUrl = $self.attr('href');
        $viewerBody = $dlg.find('.modal-body');
        //$viewerBody.css('position', 'static');
        //$viewerBody.css('padding', '30px');
        //$viewerBody.css('height', '80%');
        $viewerBody.html('<div><img id="imageviewer" src="' + fileUrl +'" class="img-responsive" style="height:800px" /></div>');
        
        
        const viewer = new Viewer(document.getElementById('imageviewer'), {        
            inline: true,            
            viewed() {
                //viewer.zoomTo(1);
            },
            //movable: false,
            //backdrop: false
        });


        // View a list of images
        
        $dlg.modal('show');
        return false;
    });
});


// ========== Collapse-Next Panel ==========

$(function () {
    $('.panel [data-toggle="collapse-next"]').click(function () {
        var $parent = $(this).parents(".panel");
        var $target = $parent.find(".panel-collapse");
        $target.collapse('toggle');
    });

    $('.panel').on('show.bs.collapse', function () {
        $(this).closest('.panel').find('.collapse-next i').removeClass('fa-chevron-right').addClass('fa-chevron-down');
    });
    $('.panel').on('hide.bs.collapse', function () {
        $(this).closest('.panel').find('.collapse-next i').removeClass('fa-chevron-down').addClass('fa-chevron-right');
    });

    function toggleChevron(e) {
        $(e.target)
            .prev()
            .find("i.indicator")
            .toggleClass('fa-chevron-down fa-chevron-up');
    }
    $('#accordion').on('hidden.bs.collapse', toggleChevron);
    $('#accordion').on('shown.bs.collapse', toggleChevron);
});;
