/* Minification failed. Returning unminified contents.
(426,44-45): run-time error JS1014: Invalid character: `
(426,45-46): run-time error JS1195: Expected expression: &
(426,166-167): run-time error JS1195: Expected expression: &
(426,183-184): run-time error JS1195: Expected expression: &
(426,208-209): run-time error JS1195: Expected expression: &
(426,235-236): run-time error JS1014: Invalid character: `
(426,236-237): run-time error JS1195: Expected expression: )
(427,10-11): run-time error JS1195: Expected expression: )
(430,144-145): run-time error JS1004: Expected ';': {
(497,35-36): run-time error JS1014: Invalid character: `
(497,89-90): run-time error JS1014: Invalid character: `
(654,25-26): run-time error JS1195: Expected expression: >
(654,42-43): run-time error JS1004: Expected ';': )
(664,25-26): run-time error JS1195: Expected expression: )
(664,28-29): run-time error JS1195: Expected expression: >
(666,14-15): run-time error JS1195: Expected expression: ,
(667,10-11): run-time error JS1195: Expected expression: )
(670,10-11): run-time error JS1195: Expected expression: )
 */
var id_w_feature_enum = 0,
    only_local = false,
    exp_documents_list,
    exp_documentOf,
    exp_relatedItem,
    documents_content,
    upload_set_date_label,
    upload_set_date,
    exp_upload_action,
    exp_container,
    exp_can_delete,
    wait_admissionProtocol,
    exclude_ids,
    Need_dgDocHistoryList = true,
    NeedDocuments = "",
    contract_readonly = false,
    d_document_type = [];

$.widget("SySe.Tender_Document", {
    options: {
        id_container: "",
        anItem: "",
        id: "",
        read_only: true,
        douments: []
    },
    _create: function () {
        this.options.id = id_w_feature_enum++;

        this._render();
    },
    _render: function () {

        var aWD = document.createElement("div");
        var el = this.options;
        var PrefixId = "_" + el.id;
        var anItem = el.anItem;

        controls = "<div id='pn_w_documents" + PrefixId + "'>";// +document_header();   

        foreach(doc in documents)
        controls += document_record(doc, el.read_only);

        controls += "</div>";

        $(aWD).css({ "margin": "6px", "text-align": "center" });

        $(aWD).append(controls);

        this.element.html(aWD);

        if (!read_only)
            foreach(doc in documents)
        if (title != "sign.p7s" && title.uk_UA != "sign.p7s")
            document_record_control(doc, aWD);
    }
})

function document_header(elem_id) {
    var str =
        "<table  id='pn_dh_" + elem_id + "' cellspacing='0'>"
        + "<tr style='height: 0px;'>"
        + "<td style='width: 50% '></td><td style='width: 20%; '></td><td style='width: 30%; '>"
        + "</tr>"
        + "<tr >"
        + "<th align='left'><span class='lang' data-key='944'>Назва</span></th><th>Тип</th><th align='right'><span class='lang' data-key='945'>Опубліковано</span></th>"
        + "</tr>"
        + "</table>"
        ;
    return str;
}

function document_record(_item, read_only, id_list, is_old, none_doc, doc_number, can_digitalSignature, ds_item, show_history, can_update) {
    var str = "",
        _time = sISO_8601_2_DMYHM(_item.dateModified)
        , dt = _item.documentType
        , url = (strStartsWith(_item.id, 'web') && !strStartsWith(_item.url, 'http') || only_local
            || strStartsWith(_item.id, 'loc')
            ? "DataHandler.ashx?CN=" + vCN + "&CommandName=LocalDownload" + "&id=" + _item.id
            : _item.url)
        , ds_url = ds_item == undefined ? ""
            : (strStartsWith(ds_item.id, 'web') && !strStartsWith(ds_item.url, 'http') || only_local
                ? "DataHandler.ashx?CN=" + vCN + "&CommandName=LocalDownload" + "&id=" + ds_item.id
                : ds_item.url)
        , _buttons = (read_only
            || is_old
            || dt == "x_dgfPlatformLegalDetails"
            || dt == "x_dgfAssetFamiliarization" && oFormRecord.status != "created" && cdb != 3
            || dt == "x_PlatformLegalDetails"
            || isOwn && _item.author == "bid_owner"
            || id_list == "cancellation_cdb2"
            || (can_update != undefined && !can_update)
            || isOwn && dt == "auctionProtocol" && tenderType.includes("bankRuptcy")
            || dt == "cancellationDetails"
            ? ""
            : "<button id='bt_doc_update_" + _item.id + "' class='mr-1 mb-1 btn btn-success bt_ReUpload'>Оновити</button>"
            + (_item.documentOf == "auction" && full_data != undefined && full_data.canSave != undefined && full_data.canSave == "true"
                || cdb != 3 && dt != "cancellationDetails" && _item.documentOf != "lot" && (tenderType != "rent_registry" || full_data.canSave == "true" || exp_can_delete) && strStartsWith(_item.id, 'loc')
                ? "<button id='bt_doc_delete_" + _item.id + "' class='mr-1 mb-1 btn btn-success bt_DocDelete' >Видалити</button>"
                : ""
            )
        )

    if (tenderType.includes("bankRuptcy") && dt == "auctionProtocol" && isOwn) {
        can_digitalSignature = false;
    }

    if (can_digitalSignature) {
        if (ds_item == undefined) {
            _buttons += "<button id='bt_digitalSignature_" + _item.id + "' class='mr-1 mb-1 btn btn-success bt_digitalSignature' ><small>Завантажити підписаний документ</small></button>";
        }
        else if (ds_item != undefined) {
            _buttons += "<button id='bt_digitalSignature_" + _item.id + "' class='mr-1 mb-1 btn btn-success bt_digitalSignature' >Оновити підписаний документ</button>";
        }
    }

    let can_delete_doc_asset_or_announcement = (id_list == "doc_asset" || id_list == "doc_large_asset" || id_list == "doc_announcement" || id_list == "doc_large_announcement") && !read_only && strStartsWith(oFormRecord._id != undefined ? oFormRecord._id : oFormRecord.id, 'web');

    if (isOwn && (id_list == "registry_object" || can_delete_doc_asset_or_announcement)) {
        _buttons += "<button id='bt_delete_" + _item.id + "' class='mr-1 mb-1 btn btn-danger'>Видалити</button>";
    }

    if (isOwn && id_list == "objects_contract_type") {
        _buttons += "<button id='bt_doc_delete_" + _item.id + "' class='mr-1 mb-1 btn btn-success bt_DocDelete' >Видалити</button>"
    }

    if (cdb == 3 && show_history && _item.datePublished != undefined && _item.dateModified.substr(0, 19) != _item.datePublished.substr(0, 19)
        && !strStartsWith(_item.id, 'web') && !strStartsWith(_item.id, 'loc')
    ) {
        _buttons += "<button id='bt_doc_history_" + _item.id + "' class='mr-1 mb-1 btn btn-success bt_GetDocHistory' >Історія змін</button>";
    }

    if (dt == "contractSigned" && !contract_readonly && exp_relatedItem != undefined)
        $("#bt_contract_register_" + exp_relatedItem).css("display", "");

    if (id_list != "" && _item.documentType != undefined) {
        if (dt == "virtualDataRoom"
            || dt == "x_dgfAssetFamiliarization" && oFormRecord.status != "created" && cdb != 3)
            st_documentType = "-";
        else {
            if (_item.documentOf == "asset" && id_list == "smallPrivatization_auction") {
                id_list = "doc_asset"
            } else if (_item.documentOf == "asset" && id_list == "largePrivatization_auction") {
                id_list = "doc_large_asset"
            } else if (_item.documentOf == "announcement" && id_list == "smallPrivatization_auction") {
                id_list = "doc_announcement"
            } else if (_item.documentOf == "large_announcement" && id_list == "largePrivatization_auction") {
                id_list = "doc_large_announcement"
            }
            st_documentType = getDocumentName(id_list, dt);
        }

    }
    else
        st_documentType = "-";

    if (id_list == "auctionProtocol_bid_owner" && st_documentType == "-") {
        st_documentType = "Протокол аукціону"
    }

    if (st_documentType == "-" && none_doc != undefined)
        st_documentType = none_doc;

    st_container = "";

    if (_item.container != undefined && _item.container != "documents") {
        var li = GetItemById(d_dict, _item.container, "File_Container");
        if (li != undefined) {
            if (lang == "en") {
                st_container = "<br/>" + li["name_en"];
            } else {
                st_container = "<br/>" + li["name"];
            }
        }
    }
    else
        st_container = "";

    if (_item.author == "bid_owner") {
        st_container += "<br/>" + arrLang[0][lang][948];

        if (dt == "auctionProtocol")
            dt = "auctionMemberProtocol";
    }

    if (_item.confidentialityrationale != undefined)
        _item.confidentialityRationale = _item.confidentialityrationale

    if (_item.accessdetails != undefined)
        _item.accessDetails = _item.accessdetails

    var prozorro_test_id = "";
    if (isPlaceTestMode && _item.title != undefined) {
        if (_item.title.uk_UA != undefined && _item.title.length > 10)
            prozorro_test_id = _item.title.substring(0, 10);
        else if (_item.title.uk_UA == undefined && _item.title.length > 10)
            prozorro_test_id = _item.title.substring(0, 10);
    }

    doc_title = (_item.title.uk_UA != undefined ? _item.title.uk_UA : _item.title);
    doc_description = _item.description != undefined && _item.description.uk_UA != undefined ? _item.description.uk_UA
        : _item.description != undefined ? _item.description
            : _item.accessDetails != undefined ? _item.accessDetails
                : _item.accessDetails != undefined ? _item.accessDetails
                    : "";

    str = "<div id='pn_document_" + _item.id + "'  class='row bg-fon mt-2 py-2' >"

        + "<div class='col-12'><div class='row'>"
        + "<div class='col-md-6'>"
        + "<div class='row text-truncate'><div class='col-12'>"

        + "<a style='cursor:pointer;" + (is_old ? "text-decoration: line-through; " : "") + " ' class='ServerInfo title doc_title " + prozorro_test_id + "' id='a_document_" + _item.id + (_item.onclick == undefined ? "'  href='" + url : "'  onclick='" + _item.onclick) + "' >" + doc_title + "</a>"

        + "<div>" + _time + "</div>"

        + st_container
        + "<div id='pn_ds_document_" + _item.id + "'>"
        + (ds_item == undefined ? ""
            : "<span>Підписаний документ<span><br/>"
            + "<a style='cursor:pointer;' class='ServerInfo' id='a_document_" + ds_item.id + "' href='" + ds_url + "' > " + ds_item.title.uk_UA + "</a>"
        )
        + "</div>"
        + "</div></div>"

        + "</div>"
        + "<div class='col-md-3'><div class='row'><div class='col-12 text-primary'>" + st_documentType + "</div>"
        + "<div class='is_debug documentType col-12' style='display: none;'><span name='documents[" + doc_number + "].documentType' class='documentType'>" + dt + "</span></div>"
        + "</div></div>"
        + "<div class='col-md-3 text-lg-center text-md-center text-sm-left text-left'>" + _buttons + "</div>"
        + "</div></div>"
        + (doc_description == "" ? ""
            : "<div class='col-12 mt-1'>"
            + "<div class='row'><div class='col-md-6 description text-truncate text-info" + prozorro_test_id + " " + _item.id + "'>" + doc_description + "</div></div>"
            + "</div>"
        )

        + "</div>"

    return str;
}

var id_doc_delete;

function document_record_control(_item, panel, documents_list, documentOf, relatedItem, can_digitalSignature, relatedItemType) {

    $('#bt_doc_update_' + _item.id, panel).click(function () {

        documents_content = panel;
        exp_documents_list = documents_list; exp_documentOf = documentOf; exp_relatedItem = relatedItem;
        exp_container = (_item.documentType == "x_passport" || _item.documentType == "x_IPN" ? "private" : "documents");

        UploadTypeFile((documentOf == "milestone" ? id_contract : idForm), documentOf, relatedItem, documents_list, HandleDocument, _item.id, _item.documentType, undefined, _item.index != "" ? _item.index : "")
    }
    );

    if ((_bt = $('#bt_doc_delete_' + _item.id, panel)).length > 0)
        _bt.click(function () {
            documents_content = panel;
            exp_documentOf = documentOf; exp_relatedItem = relatedItem;
            id_doc_delete = _item.id;
            ConfirmAction("Видалити документ", cb_delte_document);
        }
        );

    if ((_bt = $('#bt_doc_history_' + _item.id, panel)).length > 0)
        _bt.click(function () {
            exp_documents_list = documents_list, exp_documentOf = documentOf; exp_relatedItem = relatedItem;
            jQuery.post((documentOf != "object" && documentOf != "registry_asset" && documentOf != "announcement" && documentOf != "registry_large_asset" && documentOf != "large_announcement" && documentOf != "redemption" && documentOf != "redemption_contract" && documentOf != "large_redemption" && documentOf != "large_redemption_contract" && documentOf != "execution_contract" && documentOf != "order" && documentOf != "completion" && documentOf != "large_execution_contract" && documentOf != "large_order" && documentOf != "large_completion" && !documentOf.includes("lease") ? ("DataHandler.ashx?CN=" + vCN + "&CommandName=jGetDocumentHistory") : ("RegistryHandler.ashx?CN=" + vCN + "&CommandName=jGetDocumentHistory"))
                , "&id=" + (exp_documentOf == "milestone" ? id_contract : idForm) + "&id_doc=" + _item.id
                + "&documentOf=" + documentOf + "&relatedItem=" + relatedItem + "&tenderType=" + tenderType
                , HandleDocHistory);
        }
        );

    if ((_bt = $('#bt_digitalSignature_' + _item.id, panel)).length > 0)
        _bt.click(function () {
            documents_content = panel;
            exp_documents_list = documents_list; exp_documentOf = documentOf; exp_relatedItem = relatedItem;
            exp_container = (_item.documentType == "x_passport" || _item.documentType == "x_IPN" ? "private" : "documents");

            UploadTypeFile((documentOf == "milestone" ? id_contract : idForm), documentOf, relatedItem, "digitalSignature", HandleDocument
                , _item.id, "digitalSignature", undefined, undefined, relatedItemType)
        }
        );

    if ((_bt = $('#bt_delete_' + _item.id, panel)).length > 0)
        _bt.click(function () {
            documents_content = panel;
            exp_documents_list = documents_list; exp_documentOf = documentOf; exp_relatedItem = relatedItem;
            exp_container = (_item.documentType == "x_passport" || _item.documentType == "x_IPN" ? "private" : "documents");
            id_doc_delete = _item.id;
            jQuery.post("DataHandler.ashx?CN=" + vCN + "&CommandName=jDeleteDocument" + "&lastOpr=" + lastOpr + "&TimeMark=" + getNTime()
                , "&id=" + (exp_documentOf == "milestone" ? id_contract : idForm) + "&id_doc=" + id_doc_delete + "&documentOf=" + exp_documentOf + "&relatedItem=" + exp_relatedItem
                , HandleRequest);
        }
        );
}

function cb_delte_document() {
    jQuery.post("DataHandler.ashx?CN=" + vCN + "&CommandName=jDeleteDocument" + "&lastOpr=" + lastOpr + "&TimeMark=" + getNTime()
        , "&id=" + (exp_documentOf == "milestone" ? id_contract : idForm) + "&id_doc=" + id_doc_delete + "&documentOf=" + exp_documentOf + "&relatedItem=" + exp_relatedItem
        , HandleRequest);
}

function HandleDocument(_data) {
    var _els = $(_data).find("DocumentInfo");
    for (var i = 0; i < _els.length; i++) {
        var _el = ObjectFromXml(_els[i]);
        if (_el.id == 0)
            UploadError(_el.message);
        else {
            if (_el.datemodified != undefined)
                _el.dateModified = _el.datemodified;

            if (_el.documenttype != undefined)
                _el.documentType = _el.documenttype;

            if (_el.documentof != undefined)
                _el.documentOf = _el.documentof;

            UploadMessage(arrLang[0][lang][950] + sISO_8601_2_DMYHM(_el.dateModified));

            const spanText = document.querySelector('#tFile_upload_file_name');

            spanText.innerText = '';

            if (_el.documentType == "clarifications" || _el.documentType == "x_verificationAct")
                location.reload(true);

            if (_el.documentType == "digitalSignature") {
                $("#bt_digitalSignature_" + _el.relateddocument).text(function (i, oldText) {
                    return "Оновити підписаний документ";
                });

                ds_item = _el;
                ds_url = (strStartsWith(ds_item.id, 'web') && !strStartsWith(ds_item.url, 'http') || only_local
                    ? "DataHandler.ashx?CN=" + vCN + "&CommandName=LocalDownload" + "&id=" + ds_item.id
                    : ds_item.url)

                str = "<span>Підписаний документ<span><br/>"
                    + "<a style='cursor:pointer;' class='ServerInfo' id='a_document_" + ds_item.id + "' href='" + ds_url + "' > " + ds_item.title + "</a>"

                $("#pn_ds_document_" + ds_item.relateddocument)[0].innerHTML = str;
            } else if (_el.documentType == "redemptionDecision") {
                document.location.reload();
            } else {
                may_digitalSignature = !idForm.includes("web") && cdb == 3 && _el.documentOf != "cancellation" && _el.documentOf != "leaseContract" && _el.documentOf != "leaseRequest" && _el.documentOf != "leaseAction" && _el.documentOf != "action";

                //зміна існуючого блоку    
                $('#pn_document_' + _el.id, documents_content).remove();

                documents_content.append(document_record(_el, false, exp_documents_list, false, undefined, undefined, may_digitalSignature, undefined, true));
                document_record_control(_el, documents_content, exp_documents_list, exp_documentOf, exp_relatedItem, undefined);
            }

            if (_el.documentType == "auctionProtocol" && _el.author == "auction_owner"
                && cdb == 1
                //            && !isDebugMode   
            )
                Set_award_Protocol(exp_relatedItem)

            if (wait_admissionProtocol && _el.documentType == "admissionProtocol")
                Set_award_admission(exp_relatedItem)

            if (exp_documentOf == "contract")
                add_document_contract(exp_relatedItem, _el);
        }
        if (exp_upload_action != undefined)
            exp_upload_action();
    }
}

function ShowDocumentsRecordsTitle(suffix, panel, _title, read_only, documents_list, documentOf, relatedItem, with_history, with_download) {
    let doc_path = "Js/d_document_type";

    if (tenderType != undefined) {
        if (tenderType.includes("announcement")) {
            doc_path = "Js/Announcement/d_document_type";
        } else if (tenderType.includes("asset")) {
            doc_path = "Js/RegistryAssets/d_document_type";
        } else if (tenderType.includes("execution")) {
            doc_path = "Js/Execution/d_document_type";
        } else if (tenderType.includes("redemption")) {
            doc_path = "Js/Redemption/d_document_type";
        } else if (tenderType.includes("simpleSell") || tenderType.includes("alienation")) {
            doc_path = "Js/BasicSell/d_document_type";
        } else if (tenderType.includes("landSell") || tenderType.includes("landRental")) {
            doc_path = "Js/land/d_document_type";
        } else if (tenderType.includes("legitimatePropertyLease")) {
            doc_path = "Js/rent/d_document_type";
        } else if (tenderType.includes("rent_registry")) {
            doc_path = "Js/Registry/d_document_type";
        } else if (cdb == 3 && tenderType != "nadra" && tenderType != "timber" && tenderType != "renewables") {
            doc_path = "Js/" + tenderType.split("-")[0] + "/d_document_type";
        }
    }

    if (d_document_type.length == 0) {
        Ajax_syncGet(doc_path + ".json?v=" + version, function (data) {
            d_document_type = data;
        });
    }

    $("#pn_documentsContent_" + suffix, panel).wSHdiv({ Title: _title });

    if (!read_only || with_history || with_download)
        $("#pn_documents_control_" + suffix, panel).show();

    if (!read_only)
        $("#btn_documents_add" + suffix, panel).show();

    if (with_history) // (cdb == 3 && !strStartsWith(oFormRecord.id, 'web'))      
        $("#btn_documents_history_" + suffix, panel).show().click(function () {
            exp_documents_list = documents_list, exp_documentOf = documentOf; exp_relatedItem = relatedItem;
            jQuery.post((documentOf != "object" && !documentOf.includes("lease") ? ("DataHandler.ashx?CN=" + vCN + "&CommandName=jGetDocumentsHistory") : ("RegistryHandler.ashx?CN=" + vCN + "&CommandName=jGetDocumentsHistory"))
                , "&id=" + (exp_documentOf == "milestone" ? id_contract : idForm)
                + "&documentOf=" + documentOf + "&relatedItem=" + relatedItem + "&tenderType=" + tenderType
                , HandleDocsHistory);
        }

        );

    if (with_download)
        $("#btn_documents_download_" + suffix, panel).show().click(function () {
            ShowPage("DownloadFiles.aspx", `&MethodName=GetZipedFiles&auctionId=${oFormRecord.auctionId != undefined ? oFormRecord.auctionId : oFormRecord.auctionID}&idForm=${idForm}&documentOf=${documentOf}&relatedItem=${relatedItem}`);
        });
}

function set_btn_documents_add(suffix, panel, documents_list, documentOf, relatedItem, set_date_label, upload_action, exclude_ids, can_delete) {
    set_element_documents_add($('#btn_documents_add' + suffix, panel)
        , $("#pn_documentsContent_" + suffix, panel)
        , documents_list, documentOf, relatedItem, set_date_label, upload_action, exclude_ids, can_delete);
}

function set_element_documents_add(element, panel, documents_list, documentOf, relatedItem, set_date_label, upload_action, exclude_ids, can_delete) {
    $(element)
        .click(function () {
            documents_content = panel;
            exp_documents_list = documents_list; exp_documentOf = documentOf; exp_relatedItem = relatedItem;
            upload_set_date_label = set_date_label; exp_upload_action = upload_action; exp_exclude_ids = exclude_ids;
            exp_can_delete = can_delete;

            if (set_date_label != undefined) {
                upload_set_date_label = set_date_label;
                $("#lFile_set_date").text(upload_set_date)
            }

            UploadTypeFile((documentOf == "milestone" ? id_contract : idForm), documentOf, relatedItem, documents_list, HandleDocument, "", undefined, exclude_ids)
        })
        .css("display", "");
}

function add_typed_document(suffix, panel, documents_list, documentOf, relatedItem, set_date_label, upload_actio) {
    documents_content = $("#pn_documentsContent_" + suffix, panel);
    exp_documents_list = documents_list; exp_documentOf = documentOf; exp_relatedItem = relatedItem;
    upload_set_date_label = set_date_label; exp_upload_action = upload_action;

    if (set_date_label != undefined) {
        upload_set_date_label = set_date_label;
        $("#lFile_set_date").text(upload_set_date)
    }

    UploadTypeFile((documentOf == "milestone" ? id_contract : idForm), documentOf, relatedItem, documents_list, HandleDocument, "")
}

function get_document_container(suffix) {
    var str = pn_documents___id.outerHTML;

    str = str.replace(new RegExp("__id", 'g'), suffix);

    return str;
}

function ShowDocumentsRecords(suffix, panel, documents_list, documentOf, relatedItem, _els, read_only, read_only_author, none_type, exclude_ids, only_ids, can_delete, relatedItemType) {
    var show_all = panel.selector == "#pn_DocHistory_list";

    if (_els.length > 0 || !read_only)
        if (_els.length > 0) {
            var els_content = $("#pn_documentsContent_" + suffix, panel);

            may_digitalSignature = !idForm.includes("web") && cdb == 3 && documentOf != "leaseContract" && documentOf != "leaseContract" && documentOf != "leaseRequest" && documentOf != "leaseAction" && documentOf != "action";

            if (documentOf == "cancellation" && strStartsWith(relatedItem, 'web')) {
                may_digitalSignature = false;
            }

            act_docs = [];

            for (var j = 0; j < _els.length; j++) {
                var _el = _els[j], _el_act = "";

                if (cdb != 2 && _el.url != undefined && !_el.url.includes("member") && !_el.url.includes("GetBidDoc") && !_el.url.includes("Приватні документи")) {
                    const url = _el.url;
                    const title = _el.title.uk_UA !== undefined ? _el.title.uk_UA : _el.title;
                    const htmlEntityTitle = title.replace(/'/g, "&apos;");
                    _el.onclick = `fetchImageAndDownload("${url}", "${htmlEntityTitle}")`;

                }

                if (may_digitalSignature && _el.documentType == "digitalSignature")
                    continue;

                if (!show_all)
                    for (var d = 0; d < act_docs.length; d++)
                        if (act_docs[d].el.id == _el.id) {
                            _el_act = act_docs[d];
                            break;
                        }

                if (_el_act == "")
                    act_docs.push({ el: _el, old: [] });
                else {
                    if (_el.dateModified > _el_act.el.dateModified) {
                        _el_act.old.push(_el_act.el);
                        _el_act.el = _el;
                    }
                    else
                        _el_act.old.push(_el);
                }
            }

            act_docs.sort(CompareDocByTitle);

            act_docs = sortDocumentsByModificatioDate(act_docs);

            for (var j = 0; j < act_docs.length; j++) {
                var main_el = act_docs[j], ds_item = undefined;

                var doc_read_only = read_only;

                var ids_read_only = (exclude_ids != undefined && exclude_ids.indexOf("," + main_el.el.documentType + ",") > -1
                    || only_ids != undefined && only_ids.indexOf("," + main_el.el.documentType + ",") == -1);

                if (!doc_read_only && read_only_author != undefined && main_el.el.author == read_only_author
                    && !(main_el.el.documentType == "auctionProtocol" && tenderType == "bankrupt")
                    || main_el.el.documentType == "auctionProtocol" && tenderType == "bankrupt"
                    && !(user_type == 4005
                        && (oFormRecord.owner == owner_key && main_el.el.author == "auction_owner"
                            || bid_award != undefined && bid_award.owner == owner_key && main_el.el.author == "bid_owner"))
                    || main_el.el.title == "sign.p7s" || main_el.el.title.uk_UA == "sign.p7s"
                    || main_el.el.documentType == "informationDetails" && cdb == 1
                    || ids_read_only
                ) {
                    doc_read_only = true;
                }

                var ds_items = [];
                if (main_el.el.relatedDocuments != undefined) {
                    ds_items = main_el.el.relatedDocuments;
                }
                else {
                    if (may_digitalSignature) {
                        for (var i = 0; i < _els.length; i++)
                            if ((_els[i].relatedDocument == main_el.el.id || _els[i].relatedDocument == main_el.el._ds_id) && _els[i].dateModified >= main_el.el.dateModified) {
                                ds_items.push(_els[i]);
                            }
                    }
                }

                ds_items.sort(function (a, b) {
                    var keyA = new Date(a.dateModified),
                        keyB = new Date(b.dateModified);
                    // Compare the 2 dates   
                    if (keyA < keyB) return 1;
                    if (keyA > keyB) return -1;
                    return 0;
                });

                ds_item = ds_items[0];
                can_digitalSignature = (may_digitalSignature && !doc_read_only);
                exp_can_delete = can_delete;

                can_update = true;

                if (documentOf == "leaseContract") {
                    show_history = false;
                    can_update = false;
                } else {
                    show_history = !show_all;
                }

                els_content.append(document_record(main_el.el, doc_read_only, documents_list, false, none_type, j, can_digitalSignature, ds_item, show_history, can_update));

                document_record_control(main_el.el, els_content, documents_list, documentOf, relatedItem, undefined, relatedItemType);

                for (var p = 0; p < main_el.old.length; p++)
                    els_content.append(document_record(main_el.old[p], doc_read_only, documents_list, true));
            }
        }
}

function CompareDocByTitle(param1, param2) {
    if (param2.el.title.uk_UA == undefined)
        return param1.el.title.localeCompare(param2.el.title, 'ua');
    else if (param1.el.title.uk_UA != undefined && param2.el.title.uk_UA != undefined)
        return param1.el.title.uk_UA.localeCompare(param2.el.title.uk_UA, 'ua');
}

function getDocumentName(id_list, dt) {
    var st_documentType = "-";

    var li = GetItemById(d_document_type, dt, id_list);
    if (li != undefined)
        st_documentType = li["name"];

    return st_documentType;
}

function NeedDocument(place, id_list, dt) {
    if ($("span.documentType:contains('" + dt + "')", place).length > 0)
        return false;

    NeedDocuments += (NeedDocuments.length == 0 ? "" : ", ") + getDocumentName(id_list, dt);
}

function HandleDocHistory(_els) {
    showDocHistoryList("doc", exp_documents_list, exp_documentOf, exp_relatedItem, _els)
}

function HandleDocsHistory(_els) {
    showDocHistoryList("doc", exp_documents_list, exp_documentOf, exp_relatedItem, _els)
}

function showDocHistoryList(suffix, documents_list, documentOf, relatedItem, _docs) {
    $("#pn_DocHistory_list").html("");

    if (_docs.length > 0) {
        (_pn_doc_place = $("#pn_DocHistory_list")).append(get_document_container(suffix));

        ShowDocumentsRecords(suffix, _pn_doc_place, documents_list, documentOf, relatedItem, _docs, true);
    } else {
        $("#pn_DocHistory_list").html("Документи не змінювались");
    }

    $("#dgDocHistory").modal("show");
}

function sortDocumentsByModificatioDate(documents) {
    let sortDocuments = documents.sort(function (a, b) {
        let dateA = new Date(a.el.dateModified);
        let dateB = new Date(b.el.dateModified);
        if (dateA > dateB) {
            return -1;
        } else {
            return 1;
        }
    });
    return sortDocuments;
}

function fetchImageAndDownload(url, title) {
    fetch(url)
        .then(response => response.blob())
        .then(blob => {
            const blobUrl = URL.createObjectURL(blob);
            const fakeLink = document.createElement("a");

            fakeLink.href = blobUrl;
            fakeLink.download = title; // Встановіть бажане ім'я файлу 
            fakeLink.click();

            // Очищення пам'яті через видалення URL об'єкта  
            setTimeout(() => {
                URL.revokeObjectURL(blobUrl);
            }, 100);
        })
        .catch(err => {
            console.error("Помилка завантаження зображення:", err);
        });
};
