<%@ page language="java" contentType="text/html; charset=utf-8" %>
<%@ page import="java.io.*" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
<%@ include file="/jsp/common/include/localemessage.jsp" %>
<%
    response.setHeader("Pragma", "No-cache");
    response.setHeader("Cache-Control", "no-cache");
    response.setHeader("Expires", "0");
%>
<%!
    public String getRequiredLabel(String label) {
        return label + " <span class=\"required-mark\">*</span>";
    }
%>
<html>
<head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <jsp:include page="/jsp/common/include/css.jsp"/>
    <jsp:include page="/jsp/common/include/script.jsp"/>
    <jsp:include page="/jsp/common/include/portal.jsp"/>

    <style>
        #btn_password_reset:hover {
            background-color: #c82333 !important;
            border-color: #bd2130 !important;
        }
    </style>

    <script language="javascript">
        const url = '<c:url value="/onl/apim/portaluser/portalUserMan.json" />';
        const url_view = '<c:url value="/onl/apim/portaluser/portalUserMan.view" />';
        const file_download = '<c:url value="/file/download.do" />';
        let isDetail = false;
        let originalUserStatus = '';
        const STATUS = { REMOVED: 'REMOVED', READY: 'READY'};
        const ROLE = {  USER: 'ROLE_USER'   };

        /* 버튼제어 */
        function updateButtonStates(status, isUnmasked = false) {
            const isIdCheckCompleted = !$("#btn_check_id").is(":visible")
                && $("#loginId").prop('disabled')
                && ("#domain").prop('disabled');

            // 공통적으로 권한에 따른 법인선택 제어
            function updateOrgControl() {
                if ($("#roleCode").val() === ROLE.USER) {
                    $("#orgId").prop('disabled', true);
                }
            }

            if (!isDetail) {
                // 신규 등록
                $("#btn_unmask, #btn_delete").hide();
                $("#orgId").prop('disabled', true);
                if(isIdCheckCompleted) {
                    $("#btn_check_id").hide();
                    $("#btn_modify").show().prop('disabled', false);
                    $("#loginId").prop('disabled', true);
                } else {
                    $("#btn_check_id").show();
                    $("#btn_modify").show().prop('disabled', true);
                }
                updateOrgControl();
                return;
            }

            // 상세 조회 - 기본 버튼 상태
            $("#btn_unmask").show().prop('disabled', isUnmasked);
            $("#btn_check_id").hide();
            $("#btn_delete").show();

            // 현재 상태가 탈퇴인 경우
            if (status === STATUS.REMOVED) {
                $("#btn_modify").show().prop('disabled', false);
                return;
            }

            // 일반 상태
            /* $("#btn_modify").show().prop('disabled', !isUnmasked);
            if (isUnmasked) {
                $("input, select").prop('disabled', false);
                updateOrgControl();
            } */
            // 25.09.29 - 항상 해제
            $("#btn_modify").show().prop('disabled', false);
        }

        function init() {
            $.ajax({
                type: "POST",
                url: url,
                dataType: "json",
                data: {cmd: 'LIST_INIT_COMBO'},
                success: function (json) {
                    var orgRows = [{CODE: "", NAME: "없음"}].concat(json.orgRows);

                    new makeOptions("CODE", "NAME")
                        .setObj($("select[name=orgId]"))
                        .setData(orgRows).setFormat(nameOptionFormat).rendering();

                    // 권한
                    new makeOptions("CODE", "NAME")
                        .setObj($("select[name=roleCode]"))
                        .setData(json.roleCodeRows).setFormat(nameOptionFormat).rendering();

                    // 사용자 상태
                    var disabledUserStatus = ['PW_FAIL', 'DORMANT', 'ADMINBLOCK'];
                    new makeOptions("CODE", "NAME")
                        .setObj($("select[name=userStatus]"))
                        .setData(json.userStatusRows).setFormat(nameOptionFormat).rendering();

                    $("#userStatus option").each(function () {
                        if (disabledUserStatus.includes($(this).val())) {
                            $(this).prop('disabled', true);
                        }
                    });

                    // 승인 상태
                    new makeOptions("CODE", "NAME")
                        .setObj($("select[name=approvalStatus]"))
                        .setData(json.approvalStatusRows).setFormat(nameOptionFormat).rendering();

                    // 신규 등록일 경우 기본값 설정
                    if (!isDetail) {
                        $("#userStatus").val("READY");
                        $("#approvalStatus").val("COMPLETED");
                        $("#accountLockYn").val("N");
                        $("#roleCode").val("ROLE_USER").trigger('change');
                    }

                    let key = "${param.id}";
                    if (key != "" && key !== "null") {
                        detail(key);
                    }
                },
                error: function (e) {
                    alert(e.responseText);
                }
            });
        }

        function detail(key) {
            if (!isDetail) return;

            $.ajax({
                type: "POST",
                url: url,
                dataType: "json",
                data: {cmd: 'DETAIL', id: key},
                success: function (data) {
                    $("#id").val(data.id);
                    $("#userName").val(data.userName);
                    $("#orgId").val(data.orgId);
                    $("#loginId").val(data.loginId.split('@')[0]).attr('readonly', true);
                    $("#domain").val(data.loginId.split('@')[1]).attr('readonly', true);
                    // hidden input에는 원본 값 저장
                    $("input[name=loginId]").val(data.loginId);

                    $("#btn_check_id").hide();

                    // 상태 설정
                    originalUserStatus = data.userStatus;  // 원래 상태값 저장
                    $("#userStatus").val(data.userStatus);
                    $("#roleCode").val(data.roleCode).trigger('change');
                    $("#approvalStatus").val(data.approvalStatus);
                    // 승인상태는 읽기전용(수정 불가) - 값은 그대로 제출되도록 disabled 대신 잠금 처리
                    $("#approvalStatus")
                            .css({'pointer-events':'none', 'background-color':'#eee'})
                            .attr('tabindex', '-1');

                    // 탈퇴 상태 처리
                    if (originalUserStatus === STATUS.REMOVED) {
                        $("#btn_modify, #btn_delete").hide();
                        $("input, select").prop('disabled', true);
                    } else {
                        $("#roleCode").trigger('change');
                        updateButtonStates(data.userStatus, false);
                    }

                    // 휴대폰 번호 표시
                    if (data.mobileNumber) {
                        const parts = data.mobileNumber.split('-');
                        if (parts.length === 3) {
                            $("#mobilePrefix").val(parts[0]);
                            $("#mobileMiddle").val(parts[1]);
                            $("#mobileLast").val(parts[2]);
                        }
                        // hidden input에 원본 값 저장
                        $("input[name=mobileNumber]").val(data.mobileNumber);
                    }

                    // 기관 정보 및 파일 정보 처리
                    const portalOrgData = data.portalOrgUIs;

                    if (data.roleCode !== 'ROLE_USER') {
                        $('#orgInfoSection').show();
                        if (portalOrgData) {
                            setOrgInfo(portalOrgData);
                            setFileInfo(portalOrgData);
                        }
                    } else {
                        $('#orgInfoSection').hide();
                    }
                    
                    $("select[name=accountLockYn]").val(data.accountLockYn);
                    

                    // 25.09.23 - 마스킹 해제 상태를 기본으로 적용 / Rinjae
                    updateButtonStates($("#userStatus").val(), true);
                },
                error: function (e) {
                    alert(e.responseText);
                }
            });
        }

        /*법인정보 표시*/
        function setOrgInfo(portalOrgData) {
            $('#orgNameInfo').text(portalOrgData.orgName);
            $('#orgCodeInfo').text(portalOrgData.orgCode);
            $('#ceoNameInfo').text(portalOrgData.ceoName);
            $('#compRegNoInfo').text(formatCompanyRegNo(portalOrgData.compRegNo));
            $('#orgAddrInfo').text(portalOrgData.orgAddr);
            $('#corpRegNoInfo').text(formatCorpRegNo(portalOrgData.corpRegNo));
            $('#orgSectorsInfo').text(portalOrgData.orgSectors);
            $('#orgStatusDescription').text(portalOrgData.orgStatusDescription);
            $('#orgIndustryTypeInfo').text(portalOrgData.orgIndustryType);
            $('#orgPhoneNumberInfo').text(formatPhoneDisplay(portalOrgData.orgPhoneNumber));
            $('#serviceNameInfo').text(portalOrgData.serviceName);
            $('#scPhoneNumberInfo').text(formatPhoneDisplay(portalOrgData.scPhoneNumber));
        }

        /*파일정보 표시*/
        function setFileInfo(portalOrgData) {
            if (!portalOrgData?.fileInfo?.fileDetails?.length) {
                return clearFileInfo();
            }

            const fileDetail = portalOrgData.fileInfo.fileDetails[0];
            if (!fileDetail.fileId || !fileDetail.originalFileName) {
                return clearFileInfo();
            }

            const fileName = fileDetail.originalFileName + "." + fileDetail.fileExtension;
            $("#fileName").text(fileName)
                .off('click')
                .on('click', () => downloadFile(fileDetail.fileId, fileDetail.fileSn))
                .show();
        }

        function clearFileInfo() {
            $("#fileName").parent('span').hide();
        }

        /*아이디 중복 체크*/
        function checkDuplicateLoginId() {
            const id = $("#loginId").val().trim();
            const domain = $("#domain").val().trim();

            if (!id) {
                alert("<%= localeMessage.getString("portalUser.checkRequired1") %>");
                $("#loginId").focus();
                return;
            }

            if (!domain) {
                alert("도메인을 입력하여 주십시오.");
                $("#domain").focus();
                return;
            }

            // 연속된 점(..), 하이픈(--) 제거 및 시작/끝 위치 검증
            const cleanedDomain = domain
                .replace(/\.{2,}/g, '.') // 연속된 점을 하나로
                .replace(/-{2,}/g, '-') // 연속된 하이픈을 하나로
                .replace(/^\.+|\.+$/g, '') // 시작/끝의 점 제거
                .replace(/^-+|-+$/g, ''); // 시작/끝의 하이픈 제거

            if (cleanedDomain !== domain) {
                alert("도메인 형식이 잘못되었습니다. 올바른 형식으로 수정해 주십시오.");
                $("#domain").val(cleanedDomain).focus();
                return;
            }

            const fullLoginId = id + "@" + domain;
            const emailPattern = /^[A-Za-z0-9._-]*@[A-Za-z0-9][-A-Za-z0-9.]+\.[A-Za-z]{2,}$/;
            if (!emailPattern.test(fullLoginId)) {
                alert(fullLoginId + " 은 올바른 이메일 형식이 아닙니다.");
                return;
            }

            $.ajax({
                type: "POST",
                url: url,
                data: {cmd: 'CHECK_ID', loginId: fullLoginId},
                success: function (json) {
                    if (json.result !== "success") {
                        alert("<%= localeMessage.getString("portalUser.checkUserMsg1")%>");
                        $("#loginId").focus();
                    } else {
                        alert(fullLoginId + "는 사용가능한 아이디 입니다.");
                        $("#btn_modify").prop('disabled', false);  // 등록 버튼 활성화
                        $("input[name=loginId]").val(fullLoginId);

                        // ID 입력 필드 비활성화
                        $("#btn_check_id").hide();
                        $("#loginId").prop('disabled', true);
                        $("#domain").prop('disabled', true);
                    }
                },
                error: function (e) {
                    alert(e.responseText);
                }
            });
        }

        function validateEmailId(input) {
            input.value = input.value.replace(/[^A-Za-z0-9._-]/g, '');
        }

        function validateDomainInput(input) {
            input.value = input.value.replace(/[^A-Za-z0-9.-]/g, '');
            // 연속된 점(..)또는 하이픈(--)을 하나로 변경
            input.value = input.value.replace(/\.{2,}/g, '.');
            input.value = input.value.replace(/-{2,}/g, '-');
        }

        /*휴대폰 번호 유효성 검사*/
        function validateMobileNumber() {
            const prefix = $("#mobilePrefix").val();
            const middle = $("#mobileMiddle").val();
            const last = $("#mobileLast").val();

            if (!prefix || !middle || !last || middle.length < 3 || last.length < 4) {
                alert("올바른 휴대폰 번호를 입력하여 주십시오.");
                return false;
            }
            return true;
        }

        function updateOrAddField(array, name, value) {
            let field = array.find(item => item.name === name);
            if (field) {
                field.value = value;
            } else {
                array.push({name: name, value: value});
            }
        }

        function downloadFile(fileId, fileSn) {
            window.location.href = file_download + '?fileId=' + fileId + '&fileSn=' + fileSn;
        }

        function formatPhoneDisplay(phoneNumber) {
            if (!phoneNumber) return '';
            const parts = phoneNumber.split('-');
            if (parts[0] === '없음') {
                return parts.slice(1).join('-');
            }
            return phoneNumber;
        }

        $(document).ready(function () {
            const returnUrl = getReturnUrlForReturn();
            let key = "${param.id}";
            isDetail = key !== "" && key !== "null";

            if (isDetail) {
                $("#title").append(" 수정")
                $("#btn_modify").html('<i class="material-icons">save</i> <%= localeMessage.getString("button.modify") %>');

                updateButtonStates(STATUS.READY, false);
            } else {
                $("#title").append(" 등록")
                $("#btn_modify").html('<i class="material-icons">save</i> <%= localeMessage.getString("button.register") %>');
                updateButtonStates(STATUS.READY, false);
            }

            init();

            $("#mobileMiddle, #mobileLast").on({
                'input': function () {
                    this.value = this.value.replace(/[^0-9]/g, '');    // 숫자 외 문자 제거
                    if (this.value.length === this.maxLength && this.id === 'mobileMiddle') {
                        $('#mobileLast').focus(); // 자동 포커스 이동
                    }
                },
                'paste': function (e) {
                    // 붙여넣기 시 숫자만 허용
                    e.preventDefault();
                    this.value = (e.originalEvent.clipboardData || window.clipboardData)
                        .getData('text')
                        .replace(/[^0-9]/g, '').slice(0, 4);
                }
            });

            /* 권한에 따른 법인 선택 제어 */
            $('#roleCode').change(function () {
                if ($(this).val() === 'ROLE_USER') {
                    $('#orgId').val("").attr("disabled", true);
                    $('#orgNameLabel').html('<%= localeMessage.getString("portalUser.orgName") %>');
                } else {
                    $("#orgId").attr("disabled", false);
                    $('#orgNameLabel').html('<%= getRequiredLabel(localeMessage.getString("portalUser.orgName")) %>');
                }
                const currentStatus = $("#userStatus").val();
                const currentUnmaskState = $("#btn_unmask").prop('disabled');
                updateButtonStates(currentStatus, currentUnmaskState)
            });

            $("#userStatus").change(function() {
                const newStatus = $(this).val();
                if (newStatus === STATUS.REMOVED) {
                    alert("삭제 상태로 변경되었습니다. '삭제' 버튼을 클릭해 주세요.");
                }
                const currentUnmaskState = $("#btn_unmask").prop('disabled');
                updateButtonStates(newStatus, currentUnmaskState);
                $('#roleCode').trigger('change');
            });

            $("#btn_check_id").click(checkDuplicateLoginId);

            $("#btn_unmask").click(function() {
                var reason = prompt("마스킹 해제 사유를 입력해 주세요");
                if (reason != null && reason.trim() !== '') {
                    $.ajax({
                        type: "POST",
                        url: url,
                        dataType: "json",
                        data: {
                            cmd: 'UNMASK',
                            id: $("#id").val(),
                            reason: reason
                        },
                        success: function(data) {
                            // 마스킹 해제된 데이터로 화면 갱신
                            $("#userName").val(data.userName);

                            // 이메일(loginId) 갱신
                            const emailParts = data.loginId.split('@');
                            $("#loginId").val(emailParts[0]);
                            $("#domain").val(emailParts[1]);
                            $("input[name=loginId]").val(data.loginId);

                            // 휴대폰 번호 갱신
                            if (data.mobileNumber) {
                                const parts = data.mobileNumber.split('-');
                                if (parts.length === 3) {
                                    $("#mobilePrefix").val(parts[0]);
                                    $("#mobileMiddle").val(parts[1]);
                                    $("#mobileLast").val(parts[2]);
                                }
                                $("input[name=mobileNumber]").val(data.mobileNumber);
                            }

                            // 버튼 상태 업데이트
                            updateButtonStates($("#userStatus").val(), true);
                        },
                        error: function(e) {
                            alert(e.responseText);
                        }
                    });
                } else if (reason !== null) {
                    alert("마스킹 해제 사유를 입력해 주세요.");
                }
            });

            $("#btn_modify").click(function () {
                if ($("#roleCode").val() !== 'ROLE_USER' && $("#orgId").val() === "") {
                    alert("법인명을 선택해 주세요.")
                    return;
                }

                if (!checkRequired("ajaxForm")) return;
                if (!validateMobileNumber()) return;

                // form data 구성
                const formData = $('#ajaxForm').serializeArray();

                const mobileNumber = [
                    $("#mobilePrefix").val(),
                    $("#mobileMiddle").val(),
                    $("#mobileLast").val()
                ].join('-');

                let mobileField = formData.find(item => item.name === 'mobileNumber');
                if (mobileField) {
                    mobileField.value = mobileNumber;
                } else {
                    formData.push({name: 'mobileNumber', value: mobileNumber});
                }

                // cmd 및 사유(auditReason) 첨부 후 전송
                function submitUser(cmd, auditReason) {
                    formData.push({ name: 'cmd', value: cmd });
                    // 감사로그(AUDIT_LOG) 발화를 위한 systemCode. 가입자 리포지토리는 고정 EMS 스키마라 스키마 전환 영향 없음
                    formData.push({ name: 'serviceType', value: 'APIGW' });
                    if (auditReason) {
                        formData.push({ name: 'auditReason', value: auditReason });
                    }

                    $.ajax({
                        type: "POST",
                        url: url,
                        data: formData,
                        success: function (json) {
                            if (json.status === "fail") {
                                alert(json.errorMsg || "저장에 실패했습니다.");
                                return;
                            }
                            alert("<%= localeMessage.getString("common.saveMsg") %>");
                            goNav(returnUrl);
                        },
                        error: function (e) {
                            alert(e.responseText);
                        }
                    });
                }

                if (isDetail) {
                    // 수정: 상태를 REMOVED로 바꾼 경우 삭제(cmd=DELETE)로 감사 기록 + 익명화
                    var targetCmd = ($("#userStatus").val() === 'REMOVED') ? "DELETE" : "UPDATE";
                    var isRemove = (targetCmd === "DELETE");
                    showReasonPrompt(
                        isRemove ? "해당 가입자를 삭제(탈퇴) 처리합니다. 사유를 입력해 주세요." : "가입자 정보를 수정합니다. 사유를 입력해 주세요.",
                        {
                            title: isRemove ? "삭제 사유" : "수정 사유",
                            onConfirm: function(reason) { submitUser(targetCmd, reason); }
                        }
                    );
                } else {
                    // 신규 등록: 사유 불필요
                    if (!confirm("<%= localeMessage.getString("common.checkSave")%>")) return;
                    submitUser("INSERT", null);
                }
            });

            $("#btn_previous").click(function () {
                goNav(returnUrl);
            });

            $("#btn_delete").click(function () {
                showReasonPrompt("해당 가입자를 삭제 처리합니다. 사유를 입력해 주세요.", {
                    title: "삭제 사유",
                    onConfirm: function(reason) {
                        $.ajax({
                            type: "POST",
                            url: url,
                            data: {
                                cmd: "DELETE",
                                id: $('input[name=id]').val(),
                                serviceType: "APIGW",
                                auditReason: reason
                            },
                            success: function () {
                                alert("<%= localeMessage.getString("common.deleteMsg") %>");
                                goNav(returnUrl);
                            },
                            error: function (e) {
                                alert(e.responseText);
                            }
                        });
                    }
                });
            });

            $("#btn_password_reset").click(function () {
                if (!confirm("패스워드를 초기화 하시겠습니까?\n초기 패스워드는 '!' + 이메일ID 입니다.")) return;

                $.ajax({
                    type: "POST",
                    url: url,
                    data: {
                        cmd: "PASSWORD_RESET",
                        id: $('input[name=id]').val()
                    },
                    success: function () {
                        alert("패스워드가 초기화되었습니다.");
                    },
                    error: function (e) {
                        alert(e.responseText);
                    }
                });
            });

        });
    </script>
</head>
<body>
<div class="right_box">
    <div class="content_top">
        <ul class="path">
            <li><a href="#">${rmsMenuPath}</a></li>
        </ul>
    </div>
    <div class="content_middle">
        <div class="search_wrap">
            <!-- 2025.09.23 - 마스킹 해제 상태를 기본으로 적용 / Rinjae -->
            <%--<button type="button" class="cssbtn" id="btn_unmask" level="W" status="DETAIL">
                <i class="material-icons">lock_open</i> 마스킹해제
            </button>--%>

            <button type="button" class="cssbtn" id="btn_password_reset" level="W" status="DETAIL"
                    style="background-color: #dc3545; border-color: #dc3545; color: white;">
                <i class="material-icons">lock_reset</i> <%= localeMessage.getString("password_reset") %>
            </button>

            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

            <button type="button" class="cssbtn" id="btn_modify" level="W" status="DETAIL,NEW">
                <i class="material-icons">save</i> <%= localeMessage.getString("button.save") %>
            </button>
            <button type="button" class="cssbtn" id="btn_delete" level="W" status="DETAIL">
                <i class="material-icons">delete</i> <%= localeMessage.getString("button.delete") %>
            </button>
            <button type="button" class="cssbtn" id="btn_previous" level="R" status="DETAIL,NEW">
                <i class="material-icons">arrow_back</i> <%= localeMessage.getString("button.previous") %>
            </button>
        </div>
        <div class="title" id="title"><%= localeMessage.getString("portalUserDetail.title") %>
        </div>

        <form id="ajaxForm">
            <input type="hidden" name="id" id="id">
            <table class="table_row" cellspacing="0">
                <tr>
                    <th style="width:15%;"><%= getRequiredLabel(localeMessage.getString("portalUser.userId")) %>
                    </th>
                    <td colspan="3">
                        <div class="input-group" style="width: 50%;">
                            <input type="text" id="loginId" style="width:10%; display: inline-block; ime-mode: disable;" maxlength="30" onkeyup="validateEmailId(this)" 
                            		lang="en" />
                            <span style="padding: 0 10px;">@</span>
                            <input type="text" id="domain" style="width:20%; display: inline-block; ime-mode: disable;" maxlength="50" onkeyup="validateDomainInput(this)"
                            		lang="en" />
                            <input type="hidden" name="loginId"/>
                            <button type="button" class="smallBtn cssbtn" id="btn_check_id" level="R" status="NEW"
                                    style="margin-left: 10px; display: inline-block;">
                                <i class="material-icons">check_circle</i> 중복체크
                            </button>
                        </div>
                    </td>
                </tr>
                <%-- roleCode 로 제어 --%>
                <tr>
                    <th style="width:15%;"><%= getRequiredLabel(localeMessage.getString("portalUser.roleName")) %>
                    </th>
                    <td style="width:35%;">
                        <div class="select-style">
                            <select name="roleCode"  id="roleCode"></select>
                        </div>
                    </td>
                    <th id="orgNameLabel"><%= localeMessage.getString("portalUser.orgName") %>
                    </th>
                    <td style="width:35%;">
                        <div class="select-style">
                            <select name="orgId" id="orgId"></select>
                        </div>
                    </td>
                </tr>
                <tr>
                    <th><%= getRequiredLabel(localeMessage.getString("portalUser.name")) %>
                    </th>
                    <td>
                        <input type="text" name="userName" id="userName" maxlength="10" data-required data-warning="사용자명을 입력하여 주십시요."/>
                    </td>
                    <th><%= getRequiredLabel(localeMessage.getString("portalUser.userStatus")) %>
                    </th>
                    <td>
                        <div class="select-style">
                            <select name="userStatus" id="userStatus"></select>
                        </div>
                    </td>
                </tr>
                <tr>
                    <th><%= getRequiredLabel(localeMessage.getString("portalUser.mobileNumber")) %>
                    </th>
                    <td>
                        <div style="display: flex; align-items: center; gap: 5px; flex-wrap: nowrap; white-space: nowrap;">
                            <div style="width: 80px; flex-shrink: 0;">
                                <select id="mobilePrefix" style="padding-left: 10px; width: 100%;">
                                    <option value="010">010</option>
                                    <option value="011">011</option>
                                    <option value="016">016</option>
                                    <option value="017">017</option>
                                    <option value="018">018</option>
                                </select>
                            </div>
                            <span style="flex-shrink: 0;">-</span>
                            <input type="text" id="mobileMiddle" maxlength="4" style="width: 50px; text-align: center; flex-shrink: 0;"/>
                            <span style="flex-shrink: 0;">-</span>
                            <input type="text" id="mobileLast" maxlength="4" style="width: 50px; text-align: center; flex-shrink: 0;"/>
                            <input type="hidden" name="mobileNumber"/>
                        </div>
                    </td>
                    <th><%= getRequiredLabel(localeMessage.getString("portalUser.approvalStatus")) %>
                    </th>
                    <td>
                        <div class="select-style">
                            <select name="approvalStatus" id="approvalStatus"></select>
                        </div>
                    </td>
                </tr>
                <tr>
                    <th><%= getRequiredLabel(localeMessage.getString("portalUser.accountLockYn")) %></th>
                    <td>
                        <div class="select-style">
                            <select name="accountLockYn"  id="accountLockYn">
                            	<option value="Y">Y</option>
                            	<option value="N">N</option>
                            </select>
                        </div>
                    </td>
                    <th></th>
                    <td></td>
                </tr>
            </table>
        </form>


        <div id="orgInfoSection" style="display: none; margin-top: 50px;">
            <div class="title" style="margin-top: 10px">법인 기본정보</div>
            <table class="table_row" cellspacing="0">
                <tr>
                    <th style="width:15%;"><%= localeMessage.getString("portalOrg.orgName")%></th>
                    <td style="width:35%;" id="orgNameInfo"></td>
                    <%-- 제휴기관코드 --%>
                    <th style="width:15%;"><%= localeMessage.getString("portalOrg.orgCode")%></th>
                    <td style="width:35%;" id="orgCodeInfo"></td>
                </tr>
                <tr>
                    <%--사업자 등록번호--%>
                    <th><%= localeMessage.getString("portalOrg.compRegNo")%></th>
                    <td id="compRegNoInfo"></td>
                    <%--업태--%>
                    <th><%= localeMessage.getString("portalOrg.orgSectors")%></th>
                    <td id="orgSectorsInfo"></td>
                </tr>
                <tr>
                    <%--법인등록번호--%>
                    <th><%= localeMessage.getString("portalOrg.corpRegNo")%></th>
                    <td id="corpRegNoInfo"></td>
                    <%--업종--%>
                    <th><%= localeMessage.getString("portalOrg.orgIndustryType") %></th>
                    <td id="orgIndustryTypeInfo"></td>
                </tr>
                <tr>
                    <%-- 법인상태 --%>
                    <th><%= localeMessage.getString("portalOrg.orgStatus") %></th>
                    <td id="orgStatusDescription"></td>
                    <%-- 법인상태 ceo이름 --%>
                    <th style="width:15%;"><%= localeMessage.getString("portalOrg.ceoName")%></th>
                    <td style="width:35%;" id="ceoNameInfo"></td>
                </tr>
                <tr>
                    <%--고객센터 전화번호--%>
                    <th><%= localeMessage.getString("portalOrg.orgPhoneNumber") %></th>
                    <td id="orgPhoneNumberInfo"></td>
                    <%--사업장 소재지--%>
                    <th><%= localeMessage.getString("portalOrg.orgAddr")%></th>
                    <td id="orgAddrInfo"></td>
                </tr>
                <tr>
                    <th><%= localeMessage.getString("portalOrg.scPhoneNumber") %></th>
                    <td id="scPhoneNumberInfo"></td>
                    <%--서비스명 _ 필수값--%>
                    <th><%= localeMessage.getString("portalOrg.serviceName") %></th>
                    <td id="serviceNameInfo"></td>

                </tr>
                <tr>
                    <th><%= localeMessage.getString("portalOrg.compRegFile") %></th>
                    <td colspan="3">
						<span style="cursor: pointer;">
							<span id="fileName" style="text-decoration: underline;"></span>
							<img src="${pageContext.request.contextPath}/images/icon_file.png"
                                 style="vertical-align: middle; margin-left: 5px;" alt="">
						</span>
                        <input type="hidden" name="compRegFile" id="compRegFile"/>
                    </td>
                </tr>
                <%--				<tr>--%>
                <%--					&lt;%&ndash;ip 화이트리스트&ndash;%&gt;--%>
                <%--					<th><%= localeMessage.getString("portalOrg.ipWhitelist") %></th>--%>
                <%--					<td colspan="3" name="ipWhitelist" id="ipWhitelist"></td>--%>
                <%--				</tr>--%>
            </table>
        </div>

    </div>
</div>
</body>
</html>
