// /public/js/admin/form.js
window.initFormModal = function (context) {
    const root = context || document;
    const $root = $(root);

    // ✅ 캘린더: 이미 datepicker 붙은 건 제외
    $root.find(".calender").each(function () {
        const $el = $(this);
        if ($el.hasClass("hasDatepicker")) return;
        $el.datepicker({
            changeYear: true,
            changeMonth: true,
            yearRange: "-10:+0",
            dateFormat: "yy-mm-dd"
        });
    });

    // ✅ TinyMCE: 전체 remove() 금지, "컨텍스트 내부 textarea만" 처리
    if (typeof tinymce !== "undefined") {
        $root.find("textarea.tinymce").each(function () {
            const id = this.id || ("tinymce_" + Math.random().toString(36).slice(2));
            this.id = id;

            // 이미 인스턴스 있으면 스킵
            if (tinymce.get(id)) return;

            tinymce.init({
                selector: `#${CSS.escape(id)}`,
                license_key: "gpl",
                height: 250,
                plugins: "advlist autolink lists link image charmap preview anchor",
                toolbar: "undo redo | bold italic underline | align | link image | code fullscreen preview",
                menubar: "file edit view insert format tools table help"
            });
        });
    }

    // ✅ Select2: 이미 select2 붙은 건 제외
    $root.find(".select-field").each(function () {
        const $el = $(this);
        if ($el.hasClass("select2-hidden-accessible")) return;

        $el.select2({
            theme: "bootstrap-5",
            tags: true,
            allowClear: true,
            width: "100%",
            dropdownAutoWidth: true,
            language: {
                noResults: function () {
                    return "직접 입력 후 Enter";
                }
            }
        });
    });

    // 디버그 로그는 필요 없으면 제거/조건부로
    // console.log("✅ Form initialized inside modal:", root);
};

// ✅ 페이지 최초 1회
document.addEventListener("DOMContentLoaded", function () {
    window.initFormModal(document);
});

// ✅ 모달 열릴 때: "해당 모달만" 초기화하되 중복 호출 방지(네임스페이스)
$(document)
    .off("shown.bs.modal.initForm", ".modal")
    .on("shown.bs.modal.initForm", ".modal", function () {
        window.initFormModal(this);
    });
