/**
 * 상세 코드 팝업 스크립트
 */
$(document).ready(function () {
    const params = new URLSearchParams(window.location.search);
    const mode = params.get('mode');
    const pid = params.get('pid');
    const grpCd = params.get('grpCd');
    const grpNm = decodeURIComponent(params.get('grpNm') || '');

    initForm();
    bindEvents();

    function initForm() {
        $("#grpCd").val(grpCd);
        $("#groupInfoText").text(`[그룹: ${grpNm} (${grpCd})]`);

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

    function loadDetail(id) {
        $.ajax({
            url: '/settings/code/getCode.do',
            type: 'POST',
            data: { pid: id },
            success: function (res) {
                if (res.msgCode === '0') {
                    const data = res.data;
                    $("#codeCd").val(data.code_cd);
                    $("#codeNm").val(data.code_nm);
                    $("#codeVal").val(data.code_val);
                    $("#codeDesc").val(data.code_desc);
                    $("#codeSort").val(data.code_sort);
                    $("#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 () {
            saveCode();
        });

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

    function saveCode() {
        const cd = $("#codeCd").val().trim();
        const nm = $("#codeNm").val().trim();

        if (!cd) {
            alert("코드 ID를 입력하세요.");
            $("#codeCd").focus();
            return;
        }
        if (!nm) {
            alert("코드 명칭을 입력하세요.");
            $("#codeNm").focus();
            return;
        }

        const submitObj = {
            pid: $("#pid").val() || null,
            storePid: $("#storePid").val(),
            grpCd: $("#grpCd").val(),
            codeCd: cd,
            codeNm: nm,
            codeVal: $("#codeVal").val(),
            codeDesc: $("#codeDesc").val(),
            codeSort: $("#codeSort").val() || 0,
            listUse: $("#listUse").val()
        };

        $.ajax({
            url: '/settings/code/saveCode.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('reloadCode', '*');
                    }
                    window.close();
                }
            },
            error: function () {
                alert("저장 중 시스템 오류가 발생했습니다.");
            }
        });
    }

    function deleteCode() {
        const pidVal = $("#pid").val();
        if (!pidVal) return;
        if (!confirm("해당 상세 코드를 정말 삭제하시겠습니까?")) return;

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