/**
 * 카테고리 Depth 5 팝업 스크립트
 */
$(document).ready(function () {
    const params = new URLSearchParams(window.location.search);
    const mode = params.get('mode');
    const pid = params.get('pid');
    const diviDept = params.get('diviDept');
    const diviParent = params.get('diviParent');
    const parentName = params.get('parentName');

    initForm();
    bindEvents();

    function initForm() {
        if (mode === 'add') {
            $("#popTitle").text('부위 신규 등록');
            $("#pid").val('');
            $("#diviParent").val(diviParent);
            $("#btn_delete").hide();

            if (diviParent !== '0' && parentName) {
                $("#parentNameRow").show();
                $("#parentNameTxt").text(parentName);
            }
        } else if (mode === 'edit') {
            $("#popTitle").text('부위 정보 수정');
            $("#pid").val(pid);
            $("#btn_delete").show();
            loadDetail(pid);
        }
    }

    function loadDetail(id) {
        $.ajax({
            url: '/settings/medicalCategory/getMedicalCategory.do',
            type: 'POST',
            data: { pid: id },
            success: function (res) {
                if (res.msgCode === '0') {
                    const data = res.data;
                    $("#diviParent").val(data.divi_parent);
                    $("#diviName").val(data.divi_name);
                    $("#diviSort").val(data.divi_sort);
                    $("#diviColor").val(data.divi_color || '#000000');

                    // 상위 카테고리 명칭 표시 (Edit 모드)
                    if (data.parent_name) {
                        $("#parentNameRow").show();
                        $("#parentNameTxt").text(data.parent_name);
                    } else if (parentName) {
                        $("#parentNameRow").show();
                        $("#parentNameTxt").text(parentName);
                    }
                } else {
                    alert("정보를 불러올 수 없습니다.");
                    window.close();
                }
            },
            error: function () {
                alert("상세 정보 조회 통신 오류");
                window.close();
            }
        });
    }

    function bindEvents() {
        $("#btn_close").on("click", function () {
            window.close();
        });

        $("#btn_save").on("click", function () {
            saveCategory();
        });

        $("#btn_delete").on("click", function () {
            deleteCategory();
        });
    }

    function saveCategory() {
        const dName = $("#diviName").val().trim();
        if (!dName) {
            alert("부위 명칭을 입력하세요.");
            $("#diviName").focus();
            return;
        }

        const submitObj = {
            pid: $("#pid").val() || null,
            storePid: $("#storePid").val(),
            diviName: dName,
            diviDept: $("#diviDept").val(), // hidden = 5
            diviParent: $("#diviParent").val(),
            diviSort: parseInt($("#diviSort").val() || "0", 10),
            diviColor: $("#diviColor").val()
        };

        const targetUrl = mode === 'edit' ? '/settings/medicalCategory/modMedicalCategory.do' : '/settings/medicalCategory/putMedicalCategory.do';

        $.ajax({
            url: targetUrl,
            type: 'POST',
            contentType: 'application/json',
            data: JSON.stringify(submitObj),
            success: function (res) {
                alert(res.msgDesc);
                if (res.msgCode === '0') {
                    if (window.opener && typeof window.opener.loadData === 'function') {
                        window.opener.loadData(true);
                    }
                    window.close();
                }
            },
            error: function () {
                alert("저장 중 시스템 오류가 발생했습니다.");
            }
        });
    }

    function deleteCategory() {
        const pidVal = $("#pid").val();
        if (!pidVal) return;
        if (!confirm("해당 카테고리를 삭제하시겠습니까?\n하위 항목이 있을 경우 삭제되지 않습니다.")) return;

        $.ajax({
            url: '/settings/medicalCategory/delMedicalCategory.do',
            type: 'POST',
            data: { pid: pidVal },
            success: function (res) {
                alert(res.msgDesc);
                if (res.msgCode === '0') {
                    if (window.opener && typeof window.opener.loadData === 'function') {
                        window.opener.loadData(true);
                    }
                    window.close();
                }
            },
            error: function () {
                alert("삭제 중 시스템 오류가 발생했습니다.");
            }
        });
    }
});
