/**
 * 코드 그룹 팝업 스크립트
 */
$(document).ready(function () {
    const params = new URLSearchParams(window.location.search);
    const mode = params.get('mode');
    const pid = params.get('pid');

    initForm();
    bindEvents();

    function initForm() {
        if (mode === 'add') {
            $("#popTitle").text('코드 그룹 신규 등록');
            $("#pid").val('');
            $("#btn_delete").hide();
        } else if (mode === 'edit') {
            $("#popTitle").text('코드 그룹 정보 수정');
            $("#pid").val(pid);
            $("#grpCd").prop("readonly", true).css("background-color", "#f9f9f9");
            $("#btn_delete").show();
            loadDetail(pid);
        }
    }

    function loadDetail(id) {
        $.ajax({
            url: '/settings/code/getCodeGroup.do',
            type: 'POST',
            data: { pid: id },
            success: function (res) {
                if (res.msgCode === '0') {
                    const data = res.data;
                    $("#grpCd").val(data.grp_cd);
                    $("#grpNm").val(data.grp_nm);
                    $("#grpDesc").val(data.grp_desc);
                    $("#listUse").val(data.list_use);
                } else {
                    alert("정보를 불러올 수 없습니다.");
                    window.close();
                }
            },
            error: function () {
                alert("상세 정보 조회 통신 오류");
                window.close();
            }
        });
    }

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

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

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

    function saveGroup() {
        const cd = $("#grpCd").val().trim();
        const nm = $("#grpNm").val().trim();

        if (!cd) {
            alert("그룹 ID를 입력하세요.");
            $("#grpCd").focus();
            return;
        }
        if (!nm) {
            alert("그룹 명칭을 입력하세요.");
            $("#grpNm").focus();
            return;
        }

        const submitObj = {
            pid: $("#pid").val() || null,
            storePid: $("#storePid").val(),
            grpCd: cd,
            grpNm: nm,
            grpDesc: $("#grpDesc").val(),
            listUse: $("#listUse").val()
        };

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

    function deleteGroup() {
        const pidVal = $("#pid").val();
        if (!pidVal) return;
        if (!confirm("해당 코드 그룹을 삭제하시겠습니까?\n하위 상세 코드들도 모두 사용할 수 없게 됩니다.")) return;

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