{"id":1471,"date":"2026-06-22T07:00:32","date_gmt":"2026-06-22T07:00:32","guid":{"rendered":"https:\/\/abhidham.mcu.ac.th\/?page_id=1471"},"modified":"2026-10-07T10:57:18","modified_gmt":"2026-10-07T10:57:18","slug":"%e0%b8%aa%e0%b8%a1%e0%b8%b1%e0%b8%84%e0%b8%a3%e0%b9%80%e0%b8%a3%e0%b8%b5%e0%b8%a2%e0%b8%99%e0%b8%9e%e0%b8%a3%e0%b8%b0%e0%b8%ad%e0%b8%a0%e0%b8%b4%e0%b8%98%e0%b8%a3%e0%b8%a3%e0%b8%a1","status":"publish","type":"page","link":"https:\/\/abhidham.mcu.ac.th\/?page_id=1471","title":{"rendered":"\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e40\u0e23\u0e35\u0e22\u0e19\u0e1e\u0e23\u0e30\u0e2d\u0e20\u0e34\u0e18\u0e23\u0e23\u0e21\u0e2d\u0e2d\u0e19\u0e44\u0e25\u0e19\u0e4c"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1471\" class=\"elementor elementor-1471\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-eb1652a e-flex e-con-boxed e-con e-parent\" data-id=\"eb1652a\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-01f3f8d elementor-widget elementor-widget-html\" data-id=\"01f3f8d\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n     \u0e41\u0e1a\u0e1a\u0e1f\u0e2d\u0e23\u0e4c\u0e21\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e40\u0e23\u0e35\u0e22\u0e19\u0e1e\u0e23\u0e30\u0e2d\u0e20\u0e34\u0e18\u0e23\u0e23\u0e21 \u2014 \u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e0a\u0e31\u0e19 WordPress\/Elementor\r\n     \u0e27\u0e32\u0e07\u0e42\u0e04\u0e49\u0e14\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u0e19\u0e35\u0e49\u0e43\u0e19 Elementor \"HTML widget\" (\u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48 Text editor)\r\n     \u0e41\u0e19\u0e30\u0e19\u0e33\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32 Section \u0e40\u0e1b\u0e47\u0e19 Full Width \u0e41\u0e25\u0e30 Padding = 0\r\n     \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\r\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\r\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\r\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Mitr:wght@300;400;500;600&family=Sarabun:ital,wght@0,300;0,400;0,500;0,600;0,700;1,400&family=Trirong:wght@400;500;600&display=swap\" rel=\"stylesheet\">\r\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/sweetalert2@11\"><\/script>\r\n<script>(function(){if(!document.querySelector('meta[name=\"viewport\"]')){var m=document.createElement(\"meta\");m.name=\"viewport\";m.content=\"width=device-width, initial-scale=1, viewport-fit=cover\";document.head.appendChild(m);}})();<\/script>\r\n<style>\r\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n   \u0e2a\u0e44\u0e15\u0e25\u0e4c\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u0e02\u0e2d\u0e07\u0e1f\u0e2d\u0e23\u0e4c\u0e21 \u0e40\u0e23\u0e35\u0e22\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e0a\u0e31\u0e49\u0e19\u0e17\u0e31\u0e1a\u0e01\u0e31\u0e19\u0e15\u0e32\u0e21\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e17\u0e35\u0e48\u0e41\u0e01\u0e49\u0e21\u0e32\r\n   \u0e0a\u0e31\u0e49\u0e19\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e25\u0e48\u0e32\u0e07\u0e01\u0e27\u0e48\u0e32\u0e0a\u0e19\u0e30\u0e40\u0e2a\u0e21\u0e2d \u2014 \u0e40\u0e27\u0e25\u0e32\u0e08\u0e30\u0e41\u0e01\u0e49\u0e2d\u0e30\u0e44\u0e23\u0e43\u0e2b\u0e49\u0e44\u0e25\u0e48\u0e2b\u0e32\u0e08\u0e32\u0e01\u0e25\u0e48\u0e32\u0e07\u0e02\u0e36\u0e49\u0e19\u0e1a\u0e19\r\n\r\n     \u0e10\u0e32\u0e19        reset, \u0e15\u0e31\u0e27\u0e41\u0e1b\u0e23\u0e2a\u0e35, \u0e42\u0e04\u0e23\u0e07\u0e2b\u0e19\u0e49\u0e32 \u0e41\u0e25\u0e30\u0e17\u0e38\u0e01\u0e04\u0e2d\u0e21\u0e42\u0e1e\u0e40\u0e19\u0e19\u0e15\u0e4c\r\n     \u0e17\u0e31\u0e1a\u0e0a\u0e31\u0e49\u0e19 1  \u0e42\u0e04\u0e23\u0e07\u0e2b\u0e19\u0e49\u0e32\u0e41\u0e1a\u0e1a\u0e43\u0e2b\u0e21\u0e48 (\u0e41\u0e16\u0e1a\u0e20\u0e32\u0e29\u0e32\u0e25\u0e2d\u0e22\u0e1a\u0e19 hero, \u0e01\u0e32\u0e23\u0e4c\u0e14\u0e17\u0e31\u0e1a hero)\r\n     \u0e17\u0e31\u0e1a\u0e0a\u0e31\u0e49\u0e19 2\u20135 \u0e40\u0e28\u0e29\u0e17\u0e35\u0e48\u0e22\u0e31\u0e07\u0e21\u0e35\u0e1c\u0e25\u0e08\u0e32\u0e01\u0e18\u0e35\u0e21\u0e17\u0e35\u0e48\u0e40\u0e04\u0e22\u0e25\u0e2d\u0e07\u0e41\u0e25\u0e49\u0e27\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e43\u0e08\r\n     \u0e17\u0e31\u0e1a\u0e0a\u0e31\u0e49\u0e19 6  \u0e0a\u0e38\u0e14\u0e2a\u0e35\u0e41\u0e1a\u0e23\u0e19\u0e14\u0e4c\u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49\u0e08\u0e23\u0e34\u0e07 \u2014 \u0e41\u0e01\u0e49\u0e2a\u0e35\u0e43\u0e2b\u0e49\u0e41\u0e01\u0e49\u0e17\u0e35\u0e48\u0e19\u0e35\u0e48\r\n     \u0e17\u0e31\u0e1a\u0e0a\u0e31\u0e49\u0e19 7  \u0e1b\u0e23\u0e31\u0e1a\u0e2a\u0e35\u0e43\u0e2b\u0e49\u0e15\u0e23\u0e07\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\r\n     \u0e0a\u0e31\u0e49\u0e19\u0e2a\u0e38\u0e14\u0e17\u0e49\u0e32\u0e22 Modern UI polish \u2014 \u0e23\u0e39\u0e1b\u0e17\u0e23\u0e07\/\u0e23\u0e30\u0e22\u0e30\/\u0e2a\u0e40\u0e15\u0e47\u0e1b\u0e40\u0e1b\u0e2d\u0e23\u0e4c\u0e17\u0e35\u0e48\u0e40\u0e2b\u0e47\u0e19\u0e15\u0e2d\u0e19\u0e19\u0e35\u0e49\r\n\r\n   \u0e2b\u0e21\u0e32\u0e22\u0e40\u0e2b\u0e15\u0e38: \u0e44\u0e1f\u0e25\u0e4c\u0e19\u0e35\u0e49\u0e1c\u0e48\u0e32\u0e19\u0e01\u0e32\u0e23\u0e15\u0e31\u0e14 declaration \u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e0a\u0e31\u0e49\u0e19\u0e25\u0e48\u0e32\u0e07\u0e17\u0e31\u0e1a\u0e08\u0e19\u0e44\u0e21\u0e48\u0e21\u0e35\u0e1c\u0e25\r\n   \u0e2d\u0e2d\u0e01\u0e44\u0e1b\u0e41\u0e25\u0e49\u0e27 1,443 \u0e23\u0e32\u0e22\u0e01\u0e32\u0e23 (CSS \u0e40\u0e25\u0e47\u0e01\u0e25\u0e07 58%) \u0e42\u0e14\u0e22\u0e40\u0e17\u0e35\u0e22\u0e1a computed style\r\n   \u0e02\u0e2d\u0e07\u0e17\u0e38\u0e01 element \u0e43\u0e19 4 \u0e2a\u0e16\u0e32\u0e19\u0e30 \u00d7 7 \u0e04\u0e27\u0e32\u0e21\u0e01\u0e27\u0e49\u0e32\u0e07\u0e08\u0e2d \u0e23\u0e27\u0e21 14,167 \u0e08\u0e38\u0e14\r\n   \u0e1c\u0e25\u0e15\u0e23\u0e07\u0e01\u0e31\u0e1a\u0e01\u0e48\u0e2d\u0e19\u0e15\u0e31\u0e14\u0e17\u0e38\u0e01\u0e08\u0e38\u0e14 \u2014 \u0e2b\u0e19\u0e49\u0e32\u0e15\u0e32\u0e44\u0e21\u0e48\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e21\u0e49\u0e41\u0e15\u0e48\u0e1e\u0e34\u0e01\u0e40\u0e0b\u0e25\u0e40\u0e14\u0e35\u0e22\u0e27\r\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\r\n#abjRegApp, #abjRegApp *, #abjRegApp *::before, #abjRegApp *::after { box-sizing:border-box; margin:0; padding:0; }\r\n\r\n#abjRegApp {\r\n    min-height:100vh;\r\n          }\r\n@media (prefers-reduced-motion: reduce) {\r\n#abjRegApp *, #abjRegApp *::before, #abjRegApp *::after { animation:none !important; transition:none !important; }\r\n}\r\n#abjRegApp \/* \u2500\u2500\u2500 \u0e41\u0e16\u0e1a\u0e20\u0e32\u0e29\u0e32 \u2500\u2500\u2500 *\/\r\n  .lang-bar {\r\n            display:flex; justify-content:flex-end; align-items:center;\r\n      }\r\n#abjRegApp .lang-bar button {\r\n    border:1px solid transparent;\r\n    font-family:'Sarabun',sans-serif; cursor:pointer;\r\n      }\r\n\r\n#abjRegApp \/* \u2500\u2500\u2500 Hero \u2500\u2500\u2500 *\/\r\n  .hero-band {\r\n    position:relative; overflow:hidden; text-align:center;\r\n          }\r\n#abjRegApp .hero-band::before {\r\n    content:\"\"; position:absolute; inset:0; pointer-events:none;\r\n      }\r\n#abjRegApp .hero-band::after {\r\n    content:\"\"; position:absolute; left:0; right:0; bottom:0;\r\n        opacity:.9;\r\n  }\r\n#abjRegApp .hero-band > * { position:relative; }\r\n#abjRegApp .hero-band h2 {\r\n    animation:heroIn .6s ease both;\r\n  }\r\n#abjRegApp .hero-band p {\r\n    margin:0 auto;\r\n    animation:heroIn .6s .1s ease both;\r\n  }\r\n#abjRegApp .hero-badge {\r\n    display:inline-block; font-family:'Trirong',serif; font-weight:500;\r\n    border:1px solid rgba(255,232,190,.55);\r\n\r\n        animation:heroIn .6s ease both;\r\n  }\r\n@keyframes heroIn { from{opacity:0; transform:translateY(10px)} to{opacity:1; transform:none} }\r\n#abjRegApp \/* \u2500\u2500\u2500 \u0e42\u0e04\u0e23\u0e07\u0e2b\u0e25\u0e31\u0e01 \u2500\u2500\u2500 *\/\r\n  .main-wrap { margin:0 auto; }\r\n#abjRegApp .mode-switch {\r\n    display:grid; grid-template-columns:1fr 1fr;\r\n  }\r\n#abjRegApp .mode-switch button {\r\n    padding:10px 12px; border:0; background:transparent;\r\n    color:var(--text-mid); font-family:'Sarabun',sans-serif; cursor:pointer;\r\n  }\r\n\r\n#abjRegApp .mode-switch button:focus-visible { outline:3px solid #F3B1CE; outline-offset:2px; }\r\n#abjRegApp .mode-panel[hidden] { display:none !important; }\r\n#abjRegApp .form-progress {\r\n    position:sticky; z-index:20; display:grid; grid-template-columns:repeat(4,1fr);\r\n  }\r\n#abjRegApp .progress-step {\r\n    min-width:0; border:0;\r\n    font-family:'Sarabun',sans-serif; cursor:pointer;\r\n  }\r\n#abjRegApp .progress-step .step-no {\r\n    display:inline-flex; align-items:center; justify-content:center;\r\n  }\r\n\/* \u0e0a\u0e37\u0e48\u0e2d\u0e02\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19\u0e22\u0e32\u0e27\u0e01\u0e27\u0e48\u0e32\u0e04\u0e27\u0e32\u0e21\u0e01\u0e27\u0e49\u0e32\u0e07\u0e0a\u0e48\u0e2d\u0e07 \u0e43\u0e2b\u0e49\u0e02\u0e36\u0e49\u0e19\u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14\u0e43\u0e2b\u0e21\u0e48\u0e41\u0e17\u0e19\u0e01\u0e32\u0e23\u0e15\u0e31\u0e14\u0e04\u0e33\u0e14\u0e49\u0e27\u0e22 \u2026 (Thai \u0e15\u0e31\u0e14\u0e17\u0e35\u0e48 \"\/\" \u0e44\u0e14\u0e49\u0e1e\u0e2d\u0e14\u0e35) *\/\r\n#abjRegApp .progress-step span:last-child { display:block; white-space:normal; overflow-wrap:break-word; }\r\n\r\n#abjRegApp .progress-step:focus-visible { outline:3px solid #F3B1CE; outline-offset:1px; }\r\n#abjRegApp \/* \u2500\u2500\u2500 Card \u2500\u2500\u2500 *\/\r\n  .card {\r\n    position:relative;\r\n    overflow:hidden;\r\n              }\r\n#abjRegApp .card:nth-of-type(2) { animation-delay:.05s }\r\n#abjRegApp .card:nth-of-type(3) { animation-delay:.1s }\r\n#abjRegApp .card:nth-of-type(4) { animation-delay:.15s }\r\n#abjRegApp .card:nth-of-type(5) { animation-delay:.2s }\r\n#abjRegApp .card:nth-of-type(6) { animation-delay:.25s }\r\n#abjRegApp .card:nth-of-type(7) { animation-delay:.3s }\r\n@keyframes rise { from{opacity:0; transform:translateY(16px)} to{opacity:1; transform:none} }\r\n@media (hover:hover) {\r\n#abjRegApp .card:hover { box-shadow:0 16px 44px rgba(173,73,112,.13), 0 3px 10px rgba(140,60,100,.08); transform:translateY(-2px); }\r\n}\r\n#abjRegApp .card::after {\r\n    content:\"\"; position:absolute; top:0; left:0; right:0;\r\n    background:linear-gradient(90deg, #F8C2D7 0%, var(--mcru-light) 45%, var(--mcru) 100%);\r\n    opacity:.85;\r\n  }\r\n#abjRegApp .card-header {\r\n                display:flex; align-items:center;\r\n  }\r\n#abjRegApp .card-header-icon {\r\n    flex-shrink:0;\r\n        display:flex; align-items:center; justify-content:center;\r\n      }\r\n#abjRegApp .card-header-icon svg { stroke:#fff; fill:none; stroke-width:2; }\r\n\r\n#abjRegApp \/* \u2500\u2500\u2500 \u0e1f\u0e2d\u0e23\u0e4c\u0e21 \u2500\u2500\u2500 *\/\r\n  .form-grid { display:grid; grid-template-columns:repeat(auto-fit, minmax(min(100%, 240px), 1fr)); }\r\n#abjRegApp .form-grid .span-2 { grid-column:1\/-1; }\r\n\r\n#abjRegApp .field-help { font-size:13px; color:var(--text-muted); margin-top:6px; display:none; }\r\n#abjRegApp .hidden { display:none !important; }\r\n#abjRegApp .note-secondary { font-size:14px; color:var(--text-mid); line-height:1.7; }\r\n#abjRegApp input[readonly] { cursor:not-allowed; }\r\n#abjRegApp #passportInput, #abjRegApp #visaExpiryInput, #abjRegApp #tm30Input,\r\n#abjRegApp #photoCameraInput, #abjRegApp #passportCameraInput,\r\n#abjRegApp #visaExpiryCameraInput, #abjRegApp #tm30CameraInput { display:none; }\r\n\r\n#abjRegApp .card-gap-top { margin-top:18px; }\r\n#abjRegApp .icon-shrink { flex-shrink:0; }\r\n\r\n#abjRegApp .field input, #abjRegApp .field select, #abjRegApp .field textarea {\r\n    width:100%;\r\n    font-family:'Sarabun',sans-serif;\r\n  }\r\n\r\n#abjRegApp .birthdate-grid.invalid, #abjRegApp .photo-upload-wrap.invalid, #abjRegApp .consent-check.invalid { border:1.5px solid #B42318; border-radius:13px; padding:8px; }\r\n#abjRegApp .field-error { display:block; font-size:13px; line-height:1.45; }\r\n\/* \u0e43\u0e19 .birthdate-grid \u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21 error \u0e40\u0e1b\u0e47\u0e19\u0e44\u0e2d\u0e40\u0e17\u0e21\u0e02\u0e2d\u0e07 grid \u0e15\u0e49\u0e2d\u0e07\u0e43\u0e2b\u0e49\u0e01\u0e34\u0e19\u0e40\u0e15\u0e47\u0e21\u0e41\u0e16\u0e27 \u0e44\u0e21\u0e48\u0e07\u0e31\u0e49\u0e19\u0e08\u0e30\u0e16\u0e39\u0e01\u0e1a\u0e35\u0e1a\u0e2d\u0e22\u0e39\u0e48\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c\u0e41\u0e23\u0e01 *\/\r\n#abjRegApp .birthdate-grid .field-error { grid-column:1\/-1; }\r\n\/* .consent-check \u0e40\u0e1b\u0e47\u0e19 flex \u0e40\u0e0a\u0e48\u0e19\u0e01\u0e31\u0e19 \u2014 \u0e43\u0e2b\u0e49\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21 error \u0e15\u0e01\u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14\u0e43\u0e2b\u0e21\u0e48\u0e40\u0e15\u0e47\u0e21\u0e04\u0e27\u0e32\u0e21\u0e01\u0e27\u0e49\u0e32\u0e07 \u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e40\u0e1a\u0e35\u0e22\u0e14\u0e02\u0e49\u0e32\u0e07\u0e0a\u0e48\u0e2d\u0e07\u0e15\u0e34\u0e4a\u0e01\r\n   \u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e22\u0e34\u0e19\u0e22\u0e2d\u0e21\u0e15\u0e49\u0e2d\u0e07 flex:1 1 0 + min-width:0 \u0e44\u0e21\u0e48\u0e07\u0e31\u0e49\u0e19 flex-wrap \u0e08\u0e30\u0e14\u0e31\u0e19\u0e43\u0e2b\u0e49\u0e15\u0e01\u0e44\u0e1b\u0e43\u0e15\u0e49\u0e0a\u0e48\u0e2d\u0e07\u0e15\u0e34\u0e4a\u0e01\r\n   (\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e44\u0e17\u0e22\u0e22\u0e32\u0e27\u0e2b\u0e32\u0e08\u0e38\u0e14\u0e15\u0e31\u0e14\u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49 min-content \u0e08\u0e36\u0e07\u0e01\u0e27\u0e49\u0e32\u0e07\u0e40\u0e01\u0e34\u0e19) *\/\r\n#abjRegApp .consent-check { flex-wrap:wrap; }\r\n#abjRegApp #consentLabel { flex:1 1 0; min-width:0; }\r\n#abjRegApp .consent-check .field-error { flex:0 0 100%; }\r\n#abjRegApp .field select {\r\n    cursor:pointer; appearance:none;\r\n  }\r\n#abjRegApp .birthdate-grid { display:grid; grid-template-columns:.8fr 1.2fr 1fr; }\r\n\r\n#abjRegApp .monk-only { display:none; }\r\n#abjRegApp \/* \u2500\u2500\u2500 \u0e23\u0e39\u0e1b\u0e16\u0e48\u0e32\u0e22 \u2500\u2500\u2500 *\/\r\n  .photo-upload-wrap { flex-wrap:wrap; }\r\n\r\n#abjRegApp .photo-preview:hover { box-shadow:var(--shadow-sm); }\r\n#abjRegApp .photo-preview:focus-visible { outline:3px solid #F3B1CE; outline-offset:3px; border-color:var(--mcru-dark); }\r\n#abjRegApp .photo-preview img { width:100%; height:100%; object-fit:cover; display:none; }\r\n#abjRegApp .photo-preview-placeholder { text-align:center; color:var(--text-muted); font-size:12.5px; padding:8px; line-height:1.5; }\r\n#abjRegApp .photo-preview-placeholder svg { display:block; margin:0 auto 8px; width:32px; height:32px; stroke:var(--mcru); opacity:.6; fill:none; stroke-width:1.5; }\r\n#abjRegApp .photo-upload-info p { font-size:14px; color:var(--text-mid); line-height:1.7; }\r\n#abjRegApp .btn-upload {\r\n    display:inline-block; min-height:44px;\r\n\r\n    border:1.5px solid #F4C2D6; cursor:pointer;\r\n      }\r\n\r\n#abjRegApp .btn-photo-remove { display:inline-block; border:1px solid var(--border-md); cursor:pointer; }\r\n#abjRegApp .btn-photo-remove[hidden] { display:none; }\r\n#abjRegApp #photoInput { display:none; }\r\n#abjRegApp .document-upload-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); }\r\n#abjRegApp .foreign-docs-panel { display:contents; }\r\n#abjRegApp .document-upload-tile { min-width:0; }\r\n\r\n#abjRegApp .upload-tile-head { display:flex; gap:9px; }\r\n#abjRegApp .upload-step-no { display:inline-flex; flex:0 0 28px; align-items:center; justify-content:center; color:#fff; font-weight:800; }\r\n#abjRegApp .upload-tile-title { flex:1; color:var(--text); line-height:1.45; }\r\n#abjRegApp .required-chip { flex:0 0 auto; font-weight:800; line-height:1.4; }\r\n#abjRegApp .upload-tile-body { display:flex; align-items:flex-start; gap:13px; }\r\n#abjRegApp .document-upload-tile .photo-preview, #abjRegApp .doc-preview { width:96px; height:118px; flex:0 0 96px; overflow:hidden; display:flex; align-items:center; justify-content:center; cursor:pointer; }\r\n#abjRegApp .doc-preview:hover, #abjRegApp .doc-preview:focus-visible { border-color:var(--mcru); background:var(--mcru-light); outline:none; }\r\n#abjRegApp .doc-preview img { width:100%; height:100%; object-fit:cover; display:none; }\r\n#abjRegApp .doc-placeholder { padding:8px; text-align:center; color:var(--text-muted); font-size:11.5px; line-height:1.35; }\r\n#abjRegApp .doc-placeholder svg { display:block; width:28px; height:28px; margin:0 auto 6px; stroke:var(--mcru); fill:none; stroke-width:1.5; opacity:.7; }\r\n#abjRegApp .upload-tile-info { flex:1; min-width:0; }\r\n#abjRegApp .doc-guidance { min-height:42px; color:var(--text-mid); font-size:12.5px; line-height:1.5; }\r\n#abjRegApp .upload-actions { display:flex; flex-wrap:wrap; align-items:center; gap:7px; margin-top:9px; }\r\n\/* \u0e1b\u0e38\u0e48\u0e21 \"\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e44\u0e1f\u0e25\u0e4c\" \u0e01\u0e31\u0e1a \"\u0e16\u0e48\u0e32\u0e22\u0e20\u0e32\u0e1e\" \u0e41\u0e1a\u0e48\u0e07\u0e04\u0e23\u0e36\u0e48\u0e07\u0e41\u0e16\u0e27 \u2014 \u0e44\u0e21\u0e48\u0e43\u0e2b\u0e49\u0e1b\u0e38\u0e48\u0e21\u0e0b\u0e49\u0e2d\u0e19\u0e01\u0e31\u0e19\u0e2a\u0e39\u0e07\u0e40\u0e01\u0e34\u0e19\u0e44\u0e1b *\/\r\n#abjRegApp .document-upload-tile .btn-upload { flex:1 1 calc(50% - 4px); width:auto; min-width:0; margin:0; padding:9px 12px; text-align:center; font-size:12.5px; }\r\n\r\n#abjRegApp .document-upload-tile .btn-photo-remove { width:100%; min-height:38px; margin:0; padding:7px 10px; font-size:12px; }\r\n#abjRegApp .document-upload-tile .field-help { display:none; margin-top:7px; color:#18733b; font-size:12px; font-weight:700; overflow-wrap:anywhere; }\r\n#abjRegApp .upload-summary { margin-bottom:16px; }\r\n#abjRegApp .upload-summary-row { display:flex; justify-content:space-between; gap:12px; color:var(--text-mid); font-size:13.5px; font-weight:700; }\r\n#abjRegApp .upload-summary-count { color:var(--mcru-dark); }\r\n#abjRegApp .upload-summary-track { margin-top:9px; overflow:hidden; border-radius:999px; }\r\n#abjRegApp .upload-summary-bar { display:block; width:0; height:100%; border-radius:inherit; }\r\n\r\n#abjRegApp .review-doc-list { display:grid; gap:7px; margin:10px 0 16px; }\r\n#abjRegApp .review-doc-item { display:flex; justify-content:space-between; gap:12px; padding:9px 11px; font-size:13px; }\r\n#abjRegApp .review-doc-ok { font-weight:800; }\r\n#abjRegApp .review-doc-missing { font-weight:800; }\r\n@media(max-width:600px) {\r\n  #abjRegApp .document-upload-grid { grid-template-columns:1fr; }\r\n  #abjRegApp .upload-tile-body { gap:11px; }\r\n  #abjRegApp .document-upload-tile .photo-preview, #abjRegApp .doc-preview { width:88px; height:108px; flex-basis:88px; }\r\n  #abjRegApp .document-upload-tile .btn-upload, #abjRegApp .document-upload-tile .btn-photo-remove { min-height:44px; }\r\n}\r\n#abjRegApp \/* \u2500\u2500\u2500 \u0e22\u0e34\u0e19\u0e22\u0e2d\u0e21 \/ \u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2a\u0e33\u0e04\u0e31\u0e0d \u2500\u2500\u2500 *\/\r\n  .consent-box {\r\n    color:var(--text-mid); margin-bottom:14px;\r\n  }\r\n#abjRegApp .consent-check { display:flex; align-items:flex-start; font-size:15px; cursor:pointer; user-select:none; }\r\n\r\n#abjRegApp .consent-check input[type=\"checkbox\"] { flex-shrink:0; margin-top:2px; cursor:pointer; }\r\n#abjRegApp .payment-note { margin-top:0; }\r\n#abjRegApp .payment-note p { line-height:1.7; }\r\n#abjRegApp \/* \u2500\u2500\u2500 \u0e1b\u0e38\u0e48\u0e21\u0e2a\u0e48\u0e07 \u2500\u2500\u2500 *\/\r\n  .btn-submit {\r\n    position:relative; overflow:hidden; width:100%; padding:clamp(16px,4vw,19px);\r\n        border:none;\r\n    font-weight:500;\r\n    cursor:pointer;\r\n      }\r\n\r\n#abjRegApp .btn-submit:focus-visible { outline:3px solid var(--gold); outline-offset:3px; }\r\n#abjRegApp .btn-submit:disabled { background:var(--text-muted); box-shadow:none; cursor:not-allowed; filter:none; }\r\n\/* \u0e1b\u0e38\u0e48\u0e21\u0e04\u0e31\u0e14\u0e25\u0e2d\u0e01\u0e23\u0e2b\u0e31\u0e2a\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19 popup \u0e02\u0e2d\u0e07 SweetAlert \u0e0b\u0e36\u0e48\u0e07 render \u0e17\u0e35\u0e48 document.body (\u0e19\u0e2d\u0e01 #abjRegApp)\r\n   \u0e08\u0e36\u0e07\u0e15\u0e49\u0e2d\u0e07\u0e44\u0e21\u0e48 scope \u0e14\u0e49\u0e27\u0e22 #abjRegApp \u2014 \u0e40\u0e0a\u0e48\u0e19\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e1a .code-display \u0e14\u0e49\u0e32\u0e19\u0e25\u0e48\u0e32\u0e07 *\/\r\n.copy-code-btn { min-height:44px; margin-top:10px; padding:10px 20px; border:0; border-radius:999px; background:#8E2A57; color:#fff; font-family:'Sarabun',sans-serif; font-size:14.5px; font-weight:700; cursor:pointer; }\r\n.copy-code-btn:focus-visible { outline:3px solid #F3B1CE; outline-offset:2px; }\r\n#abjRegApp .note { color:var(--text-muted); text-align:center; line-height:1.7; }\r\n\r\n#abjRegApp .check-section .card-header-icon { background:linear-gradient(140deg,#96405C,var(--mcru-dark)); }\r\n#abjRegApp .check-input-row { display:flex; flex-wrap:wrap; gap:10px; }\r\n#abjRegApp .check-input-row input {\r\n    flex:1 1 200px; min-width:0;\r\n    font-family:'Sarabun',sans-serif;\r\n\r\n        text-transform:uppercase;\r\n  }\r\n\r\n\/* \u0e0a\u0e48\u0e2d\u0e07\u0e01\u0e23\u0e2d\u0e01\u0e23\u0e2b\u0e31\u0e2a\u0e2d\u0e22\u0e39\u0e48\u0e04\u0e19\u0e25\u0e30\u0e01\u0e25\u0e48\u0e2d\u0e07\u0e01\u0e31\u0e1a .check-input-row \u0e08\u0e36\u0e07\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e2a\u0e44\u0e15\u0e25\u0e4c\u0e23\u0e2b\u0e31\u0e2a\u0e43\u0e2b\u0e49\u0e40\u0e2d\u0e07 *\/\r\n#abjRegApp #checkCodeInput { text-transform:uppercase; }\r\n#abjRegApp .btn-check {\r\n    flex-shrink:0; padding:clamp(13px,3.2vw,15px) 26px;\r\n\r\n    border:none;\r\n    font-family:'Mitr',sans-serif; font-weight:500; cursor:pointer;\r\n    transition:filter .2s, transform .15s, box-shadow .2s;\r\n      }\r\n\r\n#abjRegApp .btn-check:active { transform:scale(.98); }\r\n#abjRegApp .btn-check:disabled { background:var(--text-muted); box-shadow:none; cursor:not-allowed; filter:none; }\r\n\r\n#abjRegApp .check-result.found { border:1.5px solid #f9c8db; }\r\n#abjRegApp .check-result.not-found { border:1.5px solid #f7b6cc; }\r\n#abjRegApp .check-result-row { display:flex; gap:10px; border-bottom:1px solid rgba(0,0,0,.06); }\r\n#abjRegApp .check-result-row:last-child { border-bottom:none; }\r\n#abjRegApp .check-result-label { font-weight:700; min-width:120px; flex-shrink:0; }\r\n#abjRegApp .check-result-value { color:inherit; }\r\n#abjRegApp .check-result-code { display:inline-block; padding:4px 16px; background:#fff0f7; border:1.5px solid #f7b7d1; font-family:'Courier New',monospace; font-size:20px; font-weight:700; letter-spacing:.08em; color:#8e2a57; margin:8px 0 4px; }\r\n#abjRegApp .check-result { margin-top:16px; font-size:14.5px; display:none; animation:rise .35s ease both; }\r\n#abjRegApp .divider-text { text-align:center; color:var(--text-muted); font-size:14px; margin:26px 0 10px; position:relative; }\r\n#abjRegApp .divider-text::before, #abjRegApp .divider-text::after {\r\n    content:\"\"; display:inline-block; width:26%; height:1px; vertical-align:middle; margin:0 12px;\r\n    background:linear-gradient(90deg, transparent, var(--border-md));\r\n  }\r\n#abjRegApp .divider-text::after { background:linear-gradient(90deg, var(--border-md), transparent); }\r\n#abjRegApp \/* \u2500\u2500\u2500 Modal \u0e2a\u0e23\u0e38\u0e1b\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 \u2500\u2500\u2500 *\/\r\n  .review-overlay {\r\n    display:none; position:fixed; inset:0; z-index:100000;\r\n\r\n    align-items:center; justify-content:center; padding:12px; overflow-y:auto;\r\n  }\r\n#abjRegApp .review-overlay.open { display:flex; }\r\n#abjRegApp .review-modal {\r\n    background:#fff; max-width:600px; width:100%;\r\n    max-height:90dvh; overflow-y:auto;\r\n    animation:slideUp .28s ease;\r\n  }\r\n@keyframes slideUp { from{transform:translateY(34px);opacity:0} to{transform:translateY(0);opacity:1} }\r\n#abjRegApp .review-modal-header {\r\n    position:relative; overflow:hidden;\r\n        color:#fff;\r\n    display:flex; align-items:center; gap:12px;\r\n  }\r\n#abjRegApp .review-modal-header::after {\r\n    content:\"\"; position:absolute; left:0; right:0; bottom:0; height:2px;\r\n    background:linear-gradient(90deg, transparent, var(--gold), transparent);\r\n  }\r\n#abjRegApp .review-modal-header h3 { font-weight:500; }\r\n#abjRegApp .review-modal-header p { font-size:13px; opacity:.9; margin-top:2px; }\r\n#abjRegApp .review-modal-body { padding:20px 24px; }\r\n#abjRegApp .review-section-title { font-family:'Mitr',sans-serif; font-weight:500; color:var(--mcru-mid); text-transform:uppercase; margin:18px 0 8px; padding-bottom:6px; border-bottom:2px solid var(--mcru-light); }\r\n#abjRegApp .review-section-title:first-child { margin-top:0; }\r\n#abjRegApp .review-row { display:flex; gap:10px; font-size:14.5px; border-bottom:1px solid var(--border); }\r\n#abjRegApp .review-row:last-child { border-bottom:none; }\r\n#abjRegApp .review-lbl { font-weight:600; color:var(--text-mid); min-width:130px; flex-shrink:0; }\r\n#abjRegApp .review-val { color:var(--text); flex:1; word-break:break-word; }\r\n#abjRegApp .review-photo-wrap { text-align:center; margin:10px 0; }\r\n#abjRegApp .review-photo-wrap img { width:90px; height:108px; object-fit:cover; border-radius:12px; border:2px solid var(--border-md); box-shadow:var(--shadow-sm); }\r\n#abjRegApp .review-modal-footer {\r\n    padding:16px 24px calc(20px + env(safe-area-inset-bottom)); display:flex;\r\n    border-top:1px solid var(--border); position:sticky; bottom:0; background:#fff;\r\n    box-shadow:0 -6px 18px rgba(120,30,80,.05);\r\n  }\r\n#abjRegApp .btn-review-back {\r\n    flex:1; padding:14px; color:var(--text-mid);\r\n    border:none;\r\n    font-family:'Mitr',sans-serif; font-weight:500; cursor:pointer; transition:background .2s;\r\n  }\r\n\r\n#abjRegApp .btn-review-confirm {\r\n    flex:2; padding:14px;\r\n\r\n    border:none;\r\n    font-family:'Mitr',sans-serif; font-weight:500; cursor:pointer;\r\n    transition:filter .2s, transform .15s;\r\n  }\r\n#abjRegApp .btn-review-confirm:hover { filter:brightness(1.06); }\r\n#abjRegApp .btn-review-confirm:active { transform:scale(.98); }\r\n#abjRegApp .btn-review-confirm:disabled { background:var(--text-muted); box-shadow:none; cursor:not-allowed; filter:none; }\r\n#abjRegApp .line-btn { display:inline-flex; align-items:center; gap:8px; border:none; border-radius:999px; font-size:15px; text-decoration:none; transition:filter .2s, transform .15s, box-shadow .2s; cursor:pointer; }\r\n#abjRegApp .line-btn:hover { filter:brightness(1.08); box-shadow:0 6px 18px rgba(6,199,85,.4); }\r\n#abjRegApp .line-btn:active { transform:scale(.97); }\r\n.code-display { display:inline-block; margin:12px 0; padding:12px 28px; background:linear-gradient(160deg,#FFE1EE,#fff); color:#8E2A57; border:2px solid #F3BBD3; font-size:24px; font-weight:700; letter-spacing:.08em; font-family:'Courier New',monospace; box-shadow:0 1px 3px rgba(170,70,110,.08); }\r\n\/* \u2500\u2500\u2500 Mobile \u2500\u2500\u2500 *\/\r\n\/* \u0e2b\u0e21\u0e32\u0e22\u0e40\u0e2b\u0e15\u0e38: @media \u0e40\u0e1b\u0e47\u0e19 at-rule \u0e08\u0e30\u0e27\u0e32\u0e07\u0e15\u0e48\u0e2d\u0e17\u0e49\u0e32\u0e22 selector (#abjRegApp @media{\u2026}) \u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\r\n   \u0e40\u0e1a\u0e23\u0e32\u0e27\u0e4c\u0e40\u0e0b\u0e2d\u0e23\u0e4c\u0e08\u0e30 parse selector \u0e44\u0e21\u0e48\u0e1c\u0e48\u0e32\u0e19\u0e41\u0e25\u0e49\u0e27\u0e17\u0e34\u0e49\u0e07\u0e17\u0e31\u0e49\u0e07\u0e1a\u0e25\u0e47\u0e2d\u0e01 \u0e08\u0e36\u0e07\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e1b\u0e34\u0e14 @media \u0e17\u0e35\u0e48\u0e23\u0e30\u0e14\u0e31\u0e1a\u0e1a\u0e19\u0e2a\u0e38\u0e14\r\n   \u0e41\u0e25\u0e49\u0e27\u0e43\u0e2a\u0e48 #abjRegApp \u0e19\u0e33\u0e2b\u0e19\u0e49\u0e32\u0e17\u0e35\u0e25\u0e30 selector \u2014 \u0e22\u0e01\u0e40\u0e27\u0e49\u0e19\u0e02\u0e2d\u0e07 SweetAlert \u0e17\u0e35\u0e48 render \u0e19\u0e2d\u0e01 #abjRegApp *\/\r\n@media(max-width:640px) {\r\n    #abjRegApp .form-grid { grid-template-columns:1fr; }\r\n    #abjRegApp .form-grid .span-2 { grid-column:1; }\r\n\r\n    #abjRegApp .card:hover { transform:none; }\r\n    #abjRegApp .field label .opt { display:block; margin-top:1px; }\r\n    #abjRegApp .check-input-row { flex-direction:column; }\r\n    \/* \u0e41\u0e19\u0e27\u0e15\u0e31\u0e49\u0e07: flex-basis \u0e08\u0e30\u0e01\u0e25\u0e32\u0e22\u0e40\u0e1b\u0e47\u0e19\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e39\u0e07 \u0e17\u0e33\u0e43\u0e2b\u0e49\u0e0a\u0e48\u0e2d\u0e07\u0e01\u0e23\u0e2d\u0e01\u0e2a\u0e39\u0e07\u0e1c\u0e34\u0e14\u0e1b\u0e01\u0e15\u0e34 *\/\r\n    #abjRegApp .check-input-row input { flex:0 0 auto; width:100%; }\r\n    #abjRegApp .btn-check { width:100%; }\r\n\r\n    \/* Review modal \u2192 bottom sheet *\/\r\n    #abjRegApp .review-overlay { align-items:flex-end; padding:0; }\r\n    #abjRegApp .review-modal { max-width:100%; max-height:92dvh; animation:sheetUp .3s ease; }\r\n    @keyframes sheetUp { from{transform:translateY(100%)} to{transform:translateY(0)} }\r\n\r\n    #abjRegApp .review-row { flex-direction:column; gap:2px; }\r\n    #abjRegApp .review-lbl { min-width:auto; }\r\n    .swal2-popup { width:94% !important; padding:20px 16px !important; }\r\n    .swal2-title { font-size:17px !important; }\r\n    .swal2-html-container { font-size:13.5px !important; }\r\n    .code-display { word-break:break-all; }\r\n  }\r\n@media(max-width:430px) {\r\n#abjRegApp .photo-upload-info p { font-size:13.5px; line-height:1.6; }\r\n\r\n#abjRegApp .review-modal-body { padding:14px 16px; }\r\n#abjRegApp .review-modal-footer { padding:12px 16px calc(16px + env(safe-area-inset-bottom)); }\r\n}\r\n@media(max-width:360px) {\r\n#abjRegApp .photo-upload-wrap { gap:8px; }\r\n}\r\n@media(max-height:480px) and (orientation:landscape) {\r\n#abjRegApp .hero-band { padding-top:14px; padding-bottom:12px; }\r\n#abjRegApp .card { margin-bottom:10px; }\r\n#abjRegApp .review-overlay { align-items:center; padding:10px; }\r\n}\r\n.swal2-popup { font-family:'Sarabun',sans-serif !important; }\r\n.swal2-title { font-family:'Mitr',sans-serif !important; font-size:21px !important; font-weight:500 !important; color:#3A1D32 !important; }\r\n.swal2-html-container { font-size:15.5px !important; color:#6A4C66 !important; line-height:1.75 !important; }\r\n\r\n\/* \u2500\u2500\u2500 \u0e01\u0e31\u0e19\u0e2a\u0e44\u0e15\u0e25\u0e4c\u0e18\u0e35\u0e21 WordPress \u0e23\u0e1a\u0e01\u0e27\u0e19 \u2500\u2500\u2500 *\/\r\n\r\n#abjRegApp * { text-indent:0; }\r\n#abjRegApp .field label, #abjRegApp .photo-upload-info p, #abjRegApp .note { white-space:normal; overflow:visible; }\r\n#abjRegApp { font-family:'Sarabun',sans-serif; font-size:17px; line-height:1.75; }\r\n#abjRegApp input, #abjRegApp select, #abjRegApp textarea, #abjRegApp button {\r\n  font-family:'Sarabun',sans-serif; box-shadow:none; text-transform:none; letter-spacing:normal;\r\n}\r\n#abjRegApp img { max-width:100%; border:0; box-shadow:none; }\r\n\r\n#abjRegApp h2, #abjRegApp h3 { margin:0; padding:0; border:0; }\r\n\r\n.swal2-container { z-index:100001 !important; }\r\n\r\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n   \u0e17\u0e31\u0e1a\u0e0a\u0e31\u0e49\u0e19 1 \u2014 \u0e42\u0e04\u0e23\u0e07\u0e2b\u0e19\u0e49\u0e32\u0e41\u0e1a\u0e1a\u0e43\u0e2b\u0e21\u0e48\r\n   \u0e22\u0e49\u0e32\u0e22\u0e41\u0e16\u0e1a\u0e20\u0e32\u0e29\u0e32\u0e44\u0e1b\u0e25\u0e2d\u0e22\u0e1a\u0e19 hero, \u0e01\u0e32\u0e23\u0e4c\u0e14\u0e40\u0e25\u0e37\u0e48\u0e2d\u0e19\u0e02\u0e36\u0e49\u0e19\u0e17\u0e31\u0e1a hero, \u0e1b\u0e23\u0e31\u0e1a field\r\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\r\n\r\n#abjRegApp {\r\n  position:relative;\r\n  }\r\n#abjRegApp .lang-bar {\r\n  position:absolute; z-index:4; right:max(16px,env(safe-area-inset-right));\r\n}\r\n\r\n#abjRegApp .lang-bar button + button { margin-left:0; }\r\n#abjRegApp .hero-band {\r\n  display:flex; flex-direction:column; align-items:center; justify-content:center;\r\n  isolation:isolate;\r\n}\r\n\r\n#abjRegApp .main-wrap { padding:0 clamp(12px,3vw,24px) calc(72px + env(safe-area-inset-bottom)); }\r\n#abjRegApp .mode-switch { position:relative; z-index:3; margin-bottom:16px; }\r\n\r\n#abjRegApp .form-progress { margin-bottom:22px; }\r\n\r\n#abjRegApp .card::after { height:0; }\r\n\r\n#abjRegApp .consent-box { border:1px solid #EBD6DF; }\r\n\r\n#abjRegApp .btn-submit::after { content:\"\"; position:absolute; inset:0; background:linear-gradient(110deg,transparent 30%,rgba(255,255,255,.14) 50%,transparent 70%); transform:translateX(-120%); transition:transform .55s ease; }\r\n#abjRegApp .btn-submit:hover::after { transform:translateX(120%); }\r\n#abjRegApp .check-section { margin-top:0; }\r\n\r\n#abjRegApp .review-modal { border:1px solid rgba(255,255,255,.45); }\r\n\r\n\/* \u2500\u2500\u2500 Field polish \u2500\u2500\u2500 *\/\r\n#abjRegApp .field { position:relative; min-width:0; }\r\n#abjRegApp .field label {\r\n  display:flex; align-items:center; gap:5px; min-height:24px;\r\n  transition:color .18s ease,transform .18s ease;\r\n}\r\n\r\n#abjRegApp .field label .req {\r\n  display:inline-flex;\r\n  align-items:center; justify-content:center;\r\n  font-weight:800; line-height:1;\r\n}\r\n#abjRegApp .field label .opt {\r\n  margin-left:auto;\r\n  line-height:1.55;\r\n}\r\n#abjRegApp .field input,#abjRegApp .field select,#abjRegApp .field textarea {\r\n  caret-color:#A72F63; outline:none;\r\n  }\r\n#abjRegApp .field input::placeholder,#abjRegApp .field textarea::placeholder { opacity:1; }\r\n\r\n#abjRegApp .field select:disabled {\r\n  color:#9A8991; cursor:not-allowed; opacity:1;\r\n  background-image:none;\r\n}\r\n\r\n#abjRegApp .field input:-webkit-autofill {\r\n  -webkit-text-fill-color:var(--text); -webkit-box-shadow:0 0 0 1000px #FFF9FC inset;\r\n  transition:background-color 9999s ease-out;\r\n}\r\n#abjRegApp .field input[aria-invalid=\"true\"],#abjRegApp .field select[aria-invalid=\"true\"] {\r\n  padding-right:42px;\r\n  background-repeat:no-repeat; background-position:right 16px center;\r\n}\r\n\r\n\/* select \u0e15\u0e49\u0e2d\u0e07\u0e04\u0e07\u0e25\u0e39\u0e01\u0e28\u0e23 dropdown \u0e44\u0e27\u0e49 \u2014 \u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e40\u0e1b\u0e47\u0e19\u0e2a\u0e35\u0e41\u0e14\u0e07\u0e41\u0e17\u0e19\u0e01\u0e32\u0e23\u0e17\u0e31\u0e1a\u0e14\u0e49\u0e27\u0e22\u0e08\u0e38\u0e14 \u0e44\u0e21\u0e48\u0e07\u0e31\u0e49\u0e19\u0e0a\u0e48\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e1c\u0e34\u0e14\u0e08\u0e30\u0e14\u0e39\u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19\u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48 dropdown *\/\r\n\r\n#abjRegApp .field-error {\r\n  position:relative; padding-left:19px; margin-top:8px; font-weight:650;\r\n}\r\n#abjRegApp .field-error::before {\r\n  content:\"!\"; position:absolute; left:0; top:1px; width:14px; height:14px; border-radius:50%;\r\n  display:flex; align-items:center; justify-content:center; color:#fff;\r\n  font-size:10px; font-weight:800; line-height:1;\r\n}\r\n#abjRegApp .birthdate-grid {\r\n  transition:border-color .18s ease,box-shadow .18s ease,background .18s ease;\r\n}\r\n\r\n#abjRegApp .birthdate-grid select:focus,#abjRegApp .birthdate-grid input:focus { transform:none; border:0; }\r\n#abjRegApp #phone,#abjRegApp #postalCode,#abjRegApp #checkPhoneInput { font-variant-numeric:tabular-nums; letter-spacing:.045em; }\r\n#abjRegApp #checkCodeInput { font-family:'Courier New',monospace; font-weight:700; letter-spacing:.12em; }\r\n#abjRegApp .check-section .field { margin-bottom:18px; }\r\n#abjRegApp .check-section .field:last-of-type { margin-bottom:0; }\r\n#abjRegApp .check-input-row { align-items:stretch; }\r\n\r\n#abjRegApp .field-help:not(:empty) {\r\n  display:block;\r\n  line-height:1.55;\r\n}\r\n@media(max-width:640px) {\r\n  #abjRegApp .lang-bar { right:10px; }\r\n\r\n  #abjRegApp .field label { flex-wrap:wrap; }\r\n  #abjRegApp .field label .opt { margin-left:0; }\r\n  #abjRegApp .birthdate-grid { grid-template-columns:.72fr 1.18fr 1fr; }\r\n}\r\n\r\n\/* \u2500\u2500 \u0e17\u0e31\u0e1a\u0e0a\u0e31\u0e49\u0e19 2 \u2014 \u0e40\u0e2b\u0e25\u0e37\u0e2d\u0e1c\u0e25\u0e41\u0e04\u0e48\u0e23\u0e30\u0e22\u0e30\u0e1b\u0e49\u0e32\u0e22 * \u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e1b\u0e34\u0e14\u0e40\u0e07\u0e32\u0e1b\u0e38\u0e48\u0e21\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14 \u2500\u2500 *\/\r\n\r\n#abjRegApp .field label .req {\r\n  margin-left:1px;\r\n}\r\n\r\n#abjRegApp .btn-upload,#abjRegApp .btn-camera,#abjRegApp .btn-photo-remove {\r\n  box-shadow:none;\r\n}\r\n\r\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n   \u0e17\u0e31\u0e1a\u0e0a\u0e31\u0e49\u0e19 3 \u2014 \u0e1f\u0e2d\u0e19\u0e15\u0e4c Mitr, \u0e17\u0e23\u0e07\u0e1b\u0e49\u0e32\u0e22 * \/ (\u0e44\u0e21\u0e48\u0e1a\u0e31\u0e07\u0e04\u0e31\u0e1a), \u0e1b\u0e38\u0e48\u0e21\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14,\r\n   \u0e21\u0e38\u0e21\u0e42\u0e04\u0e49\u0e07 --radius, \u0e41\u0e2d\u0e19\u0e34\u0e40\u0e21\u0e0a\u0e31\u0e19\u0e01\u0e32\u0e23\u0e4c\u0e14, \u0e1b\u0e23\u0e30\u0e01\u0e32\u0e22 ::after \u0e1a\u0e19\u0e1b\u0e38\u0e48\u0e21\u0e2a\u0e48\u0e07\r\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\r\n#abjRegApp {\r\n        --radius:22px; --radius-sm:13px;\r\n}\r\n\r\n#abjRegApp .hero-band::before {\r\n  opacity:.8;\r\n}\r\n#abjRegApp .hero-band::after { height:4px; }\r\n#abjRegApp .hero-badge {\r\n  backdrop-filter:blur(8px);\r\n}\r\n#abjRegApp .hero-band h2 { font-family:'Mitr',sans-serif; font-weight:500; }\r\n\r\n#abjRegApp .card {\r\n  animation:rise .48s ease both;\r\n}\r\n#abjRegApp .card:hover { transform:translateY(-1px); }\r\n\r\n#abjRegApp .card-header-icon {\r\n  border:0;\r\n}\r\n#abjRegApp .card-header h3 { font-family:'Mitr',sans-serif; font-weight:500; }\r\n\r\n#abjRegApp .field label { color:#503D47; }\r\n\r\n#abjRegApp .field label .req { width:17px; height:17px; border-radius:50%; font-size:12px; }\r\n#abjRegApp .field label .opt { border-radius:999px; background:#F7F1F4; color:#806C76; }\r\n\r\n#abjRegApp .upload-step-no { border-radius:50%; }\r\n\r\n#abjRegApp .btn-upload,#abjRegApp .btn-photo-remove { background:#FFF1F7; border-color:#E3BACD; color:#722043; }\r\n\r\n#abjRegApp .btn-submit {\r\n  font-family:'Mitr',sans-serif;\r\n}\r\n#abjRegApp .btn-submit::after { display:block; }\r\n\r\n#abjRegApp .review-modal-header h3 { font-family:'Mitr',sans-serif; }\r\n\r\n\/* \u2500\u2500 \u0e17\u0e31\u0e1a\u0e0a\u0e31\u0e49\u0e19 4 \u2014 \u0e2a\u0e35\u0e02\u0e2d\u0e07\u0e2a\u0e16\u0e32\u0e19\u0e30\u0e01\u0e23\u0e2d\u0e01\u0e1c\u0e34\u0e14 \/ \u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e17\u0e35\u0e48\u0e22\u0e31\u0e07\u0e02\u0e32\u0e14 \u2500\u2500 *\/\r\n\r\n#abjRegApp .document-upload-tile.invalid { box-shadow:0 0 0 3px rgba(214,43,115,.13); }\r\n\r\n#abjRegApp .review-doc-missing { color:#C42670; }\r\n\r\n\/* \u2500\u2500 \u0e17\u0e31\u0e1a\u0e0a\u0e31\u0e49\u0e19 5 \u2014 \u0e15\u0e31\u0e14\u0e40\u0e07\u0e32\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e2b\u0e31\u0e27\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07 hero \u2500\u2500 *\/\r\n\r\n#abjRegApp .hero-band h2 { text-shadow:none; }\r\n\r\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n   \u0e17\u0e31\u0e1a\u0e0a\u0e31\u0e49\u0e19 6 \u2014 \u0e0a\u0e38\u0e14\u0e2a\u0e35\u0e41\u0e1a\u0e23\u0e19\u0e14\u0e4c\u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49\u0e08\u0e23\u0e34\u0e07 (\u0e0a\u0e21\u0e1e\u0e39 #FF8DC2 \/ #8E2A57)\r\n   \u0e15\u0e31\u0e27\u0e41\u0e1b\u0e23\u0e2a\u0e35\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u0e16\u0e39\u0e01\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e23\u0e31\u0e49\u0e07\u0e2a\u0e38\u0e14\u0e17\u0e49\u0e32\u0e22\u0e17\u0e35\u0e48\u0e19\u0e35\u0e48 \u0e41\u0e01\u0e49\u0e2a\u0e35\u0e43\u0e2b\u0e49\u0e41\u0e01\u0e49\u0e15\u0e23\u0e07\u0e19\u0e35\u0e49\r\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\r\n#abjRegApp {\r\n  --mcru:#FF8DC2; --mcru-light:#FFE1EE; --mcru-mid:#DB5E95; --mcru-dark:#8E2A57;\r\n  --mcru-soft:#FFF1F7; --gold:#F7B7D1; --gold-light:#FDE7F0;\r\n  --cream:#FFF4F9; --surface:#FFFFFF; --border:#F9E4EE; --border-md:#F4C2D6;\r\n  --text:#3A1D32; --text-mid:#6A4C66; --text-muted:#765F6D;\r\n    --shadow-md:0 12px 36px rgba(219,94,149,.14);\r\n    --focus-ring:0 0 0 4px rgba(244,143,177,.30);\r\n}\r\n#abjRegApp {\r\n  color:var(--text);\r\n  background:\r\n    radial-gradient(1100px 560px at 88% -8%,rgba(251,223,234,.75) 0%,rgba(252,209,231,0) 60%),\r\n    radial-gradient(900px 520px at -12% 32%,rgba(254,240,246,.85) 0%,rgba(253,231,243,0) 55%),\r\n    linear-gradient(180deg,#FFF9FB 0%,#FDF3F7 100%);\r\n}\r\n#abjRegApp .hero-band {\r\n  color:#FFF;\r\n  background:linear-gradient(135deg,#A33B69 0%,var(--mcru-dark) 58%,#6E2743 100%);\r\n}\r\n\r\n#abjRegApp .hero-band::after {\r\n  background:linear-gradient(90deg,transparent,var(--gold) 22%,#EEDDBB 50%,var(--gold) 78%,transparent);\r\n}\r\n#abjRegApp .hero-band h2,#abjRegApp .hero-band p { color:#FFF; }\r\n#abjRegApp .hero-band p { opacity:.94; }\r\n#abjRegApp .hero-badge { color:#FFF; }\r\n\r\n#abjRegApp .mode-switch button.active {\r\n  border-color:var(--mcru-dark);\r\n  }\r\n#abjRegApp .mode-switch button:hover { color:var(--mcru-dark); background:var(--mcru-soft); }\r\n\r\n#abjRegApp .card-header-icon,\r\n#abjRegApp #cardPersonal .card-header-icon,\r\n#abjRegApp #cardAddress .card-header-icon,\r\n#abjRegApp #cardLocation .card-header-icon,\r\n#abjRegApp #cardPhoto .card-header-icon {\r\n  color:#FFF;\r\n  }\r\n#abjRegApp .card-header h3 { color:var(--mcru-dark); }\r\n#abjRegApp .field:focus-within > label { color:var(--mcru-dark); }\r\n\r\n#abjRegApp .field input,#abjRegApp .field select,#abjRegApp .field textarea { color:var(--text); }\r\n\r\n#abjRegApp .btn-submit {\r\n  color:#FFF;\r\n  }\r\n\r\n#abjRegApp .btn-check { color:#FFF; }\r\n\r\n#abjRegApp .line-btn { color:#FFF; }\r\n\r\n#abjRegApp .btn-review-confirm { color:#FFF; }\r\n\r\n#abjRegApp .field input[aria-invalid=\"true\"] { background-image:radial-gradient(circle,#B42318 0 4px,transparent 5px); }\r\n#abjRegApp .field select[aria-invalid=\"true\"] { background-image:url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23B42318' stroke-width='2' fill='none' stroke-linecap='round' stroke-linejoin='round'\/%3E%3C\/svg%3E\"); }\r\n\r\n#abjRegApp .field-error::before { background:#B42318; }\r\n\r\n\/* \u2500\u2500 \u0e17\u0e31\u0e1a\u0e0a\u0e31\u0e49\u0e19 7 \u2014 \u0e1b\u0e23\u0e31\u0e1a\u0e2a\u0e35\u0e43\u0e2b\u0e49\u0e15\u0e23\u0e07\u0e01\u0e31\u0e1a\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a \u2500\u2500 *\/\r\n#abjRegApp .hero-band::before {\r\n  background:\r\n    radial-gradient(520px 260px at 18% -20%,rgba(255,255,255,.22),transparent 65%),\r\n    radial-gradient(640px 340px at 92% 118%,rgba(255,214,170,.20),transparent 60%);\r\n}\r\n#abjRegApp .hero-badge {\r\n  background:rgba(255,255,255,.14);\r\n  border-color:rgba(255,232,190,.55);\r\n  box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 4px 16px rgba(124,46,76,.18);\r\n}\r\n\r\n#abjRegApp .lang-bar button.active {\r\n  border-color:transparent;\r\n  }\r\n#abjRegApp .lang-bar button.inactive {\r\n  border-color:rgba(255,255,255,.22);\r\n}\r\n\r\n#abjRegApp .mode-switch button.active {\r\n  color:#FFF; background:var(--mcru-dark);\r\n  }\r\n\r\n#abjRegApp .card:hover {\r\n  box-shadow:0 16px 44px rgba(173,73,112,.13),0 3px 10px rgba(140,60,100,.08);\r\n}\r\n\r\n#abjRegApp .card-header-icon,\r\n#abjRegApp #cardPersonal .card-header-icon,\r\n#abjRegApp #cardAddress .card-header-icon,\r\n#abjRegApp #cardLocation .card-header-icon,\r\n#abjRegApp #cardPhoto .card-header-icon {\r\n  background:linear-gradient(140deg,#F7A8C4 0%,var(--mcru) 55%,var(--mcru-mid) 100%);\r\n  }\r\n#abjRegApp .field label .req { color:var(--mcru); background:transparent; }\r\n\r\n#abjRegApp .field input:focus,\r\n#abjRegApp .field select:focus,\r\n#abjRegApp .field textarea:focus,\r\n#abjRegApp .birthdate-grid:focus-within {\r\n  border-color:var(--mcru); background:#FFF; box-shadow:var(--focus-ring);\r\n}\r\n\r\n#abjRegApp .upload-step-no { background:var(--mcru-dark); box-shadow:none; }\r\n#abjRegApp .required-chip { background:#FDE7EF; color:#9B1C4A; }\r\n#abjRegApp .btn-upload {\r\n  color:var(--mcru-dark);\r\n  background:linear-gradient(135deg,var(--mcru-light),#FFE4F0);\r\n  border-color:#F4C2D6;\r\n}\r\n#abjRegApp .btn-upload:hover {\r\n  background:#FFE8F4; border-color:var(--mcru);\r\n  box-shadow:0 4px 12px rgba(219,94,149,.18);\r\n}\r\n#abjRegApp .btn-camera {\r\n  color:#7A4B00;\r\n  background:linear-gradient(135deg,#FFF0D8,#FFE3B8);\r\n  border-color:#F0C888;\r\n}\r\n#abjRegApp .btn-camera:hover {\r\n  color:#7A4B00; background:#FFE9C8; border-color:#E0A845;\r\n  box-shadow:0 4px 12px rgba(200,150,50,.18);\r\n}\r\n\r\n#abjRegApp .upload-summary-bar { background:linear-gradient(90deg,var(--mcru),var(--mcru-dark)); }\r\n#abjRegApp .consent-box {\r\n  background:linear-gradient(160deg,var(--mcru-soft),#FFF 140%);\r\n  border-color:var(--border);\r\n}\r\n#abjRegApp .consent-check input[type=\"checkbox\"] { accent-color:var(--mcru); }\r\n#abjRegApp .btn-submit {\r\n  background:linear-gradient(135deg,#9F3565 0%,var(--mcru-dark) 100%);\r\n  }\r\n#abjRegApp .btn-submit:hover {\r\n  background:linear-gradient(135deg,#9F3565 0%,var(--mcru-dark) 100%);\r\n  filter:brightness(1.06);\r\n  }\r\n#abjRegApp .btn-check {\r\n  background:linear-gradient(135deg,#96405C,var(--mcru-dark));\r\n  box-shadow:0 5px 16px rgba(124,46,76,.28);\r\n}\r\n#abjRegApp .check-result.found { background:#FFF5FB; border-color:#F9C8DB; color:#8E2A57; }\r\n#abjRegApp .check-result.not-found { background:#FFF5F8; border-color:#F7B6CC; color:#A42D4C; }\r\n#abjRegApp .line-btn {\r\n  background:#06C755;\r\n  box-shadow:0 4px 14px rgba(6,199,85,.32);\r\n}\r\n#abjRegApp .review-modal-header {\r\n  background:linear-gradient(135deg,#A33B69,var(--mcru-dark) 65%,#6E2743);\r\n}\r\n#abjRegApp .btn-review-confirm {\r\n  background:linear-gradient(135deg,#A33B69,var(--mcru-dark) 65%,#6E2743);\r\n  }\r\n#abjRegApp .field input[aria-invalid=\"true\"],\r\n#abjRegApp .field select[aria-invalid=\"true\"],\r\n#abjRegApp .birthdate-grid.invalid,\r\n#abjRegApp .photo-upload-wrap.invalid,\r\n#abjRegApp .consent-check.invalid {\r\n  border-color:#B42318 !important;\r\n  background-color:#FFF5F5;\r\n  box-shadow:0 0 0 3px rgba(180,35,24,.12) !important;\r\n}\r\n#abjRegApp .field-error { color:#9B1C1C; }\r\n#abjRegApp .upload-summary.complete { border-color:#A8D8B7; background:#F3FBF5; }\r\n#abjRegApp .upload-summary.complete .upload-summary-count,\r\n#abjRegApp .review-doc-ok { color:#18733B; }\r\n@media(max-width:640px) {\r\n  #abjRegApp .hero-band {\r\n    background:linear-gradient(135deg,#A33B69 0%,var(--mcru-dark) 58%,#6E2743 100%);\r\n  }\r\n}\r\n\r\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n   Modern UI polish \u2014 \u0e1b\u0e23\u0e31\u0e1a\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e32\u0e43\u0e2b\u0e49\u0e17\u0e31\u0e19\u0e2a\u0e21\u0e31\u0e22\u0e02\u0e36\u0e49\u0e19\r\n   \u2022 \u0e04\u0e07\u0e42\u0e17\u0e19\u0e2a\u0e35\u0e41\u0e1a\u0e23\u0e19\u0e14\u0e4c\u0e40\u0e14\u0e34\u0e21 (\u0e0a\u0e21\u0e1e\u0e39\u2013\u0e21\u0e32\u0e40\u0e08\u0e19\u0e15\u0e49\u0e32) \u0e44\u0e27\u0e49\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\r\n   \u2022 \u0e1b\u0e23\u0e31\u0e1a\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e30\u0e0a\u0e48\u0e2d\u0e07\u0e44\u0e1f \u0e02\u0e2d\u0e1a\u0e1a\u0e32\u0e07 \u0e40\u0e07\u0e32\u0e19\u0e38\u0e48\u0e21\u0e02\u0e36\u0e49\u0e19 \u0e21\u0e38\u0e21\u0e42\u0e04\u0e49\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e23\u0e30\u0e1a\u0e1a\r\n   \u2022 \u0e15\u0e31\u0e27\u0e1a\u0e2d\u0e01\u0e02\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19\u0e41\u0e1a\u0e1a\u0e21\u0e35\u0e40\u0e2a\u0e49\u0e19\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21 + \u0e15\u0e34\u0e4a\u0e01\u0e16\u0e39\u0e01\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e1c\u0e48\u0e32\u0e19\u0e41\u0e25\u0e49\u0e27\r\n   \u2022 \u0e01\u0e32\u0e23\u0e4c\u0e14\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e02\u0e36\u0e49\u0e19\u0e2a\u0e16\u0e32\u0e19\u0e30 \"\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08\" \u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34\u0e14\u0e49\u0e27\u0e22 :has()\r\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\r\n#abjRegApp {\r\n  color-scheme:light;\r\n  --ease:cubic-bezier(.22,.8,.3,1);\r\n  --r-lg:20px; --r-md:14px; --r-sm:10px;\r\n  --edge:rgba(142,42,87,.10);\r\n  --edge-strong:rgba(142,42,87,.18);\r\n  --ring:0 0 0 3px rgba(255,141,194,.34);\r\n  --shadow-sm:0 1px 2px rgba(58,29,50,.04),0 2px 8px rgba(142,42,87,.05);\r\n  --shadow-card:0 1px 2px rgba(58,29,50,.04),0 10px 30px rgba(142,42,87,.07);\r\n  --shadow-lift:0 2px 6px rgba(58,29,50,.05),0 18px 44px rgba(142,42,87,.11);\r\n  -webkit-font-smoothing:antialiased;\r\n}\r\n#abjRegApp ::selection { background:var(--mcru-light); color:var(--mcru-dark); }\r\n#abjRegApp :focus-visible { outline:2px solid var(--mcru-mid); outline-offset:2px; }\r\n\r\n\/* \u2500\u2500\u2500 Hero: \u0e21\u0e38\u0e21\u0e25\u0e48\u0e32\u0e07\u0e42\u0e04\u0e49\u0e07 + \u0e15\u0e31\u0e27\u0e2d\u0e31\u0e01\u0e29\u0e23\u0e01\u0e23\u0e30\u0e0a\u0e31\u0e1a\u0e02\u0e36\u0e49\u0e19 \u2500\u2500\u2500 *\/\r\n#abjRegApp .hero-band {\r\n  min-height:0;\r\n  padding:clamp(58px,9vw,86px) clamp(18px,5vw,30px) clamp(50px,7.5vw,72px);\r\n  border-radius:0 0 clamp(22px,5vw,34px) clamp(22px,5vw,34px);\r\n}\r\n\/* \u0e40\u0e2a\u0e49\u0e19\u0e17\u0e2d\u0e07\u0e40\u0e14\u0e34\u0e21\u0e2d\u0e22\u0e39\u0e48\u0e02\u0e2d\u0e1a\u0e25\u0e48\u0e32\u0e07\u0e0b\u0e36\u0e48\u0e07\u0e16\u0e39\u0e01\u0e01\u0e32\u0e23\u0e4c\u0e14\u0e1a\u0e31\u0e07 \u2014 \u0e22\u0e49\u0e32\u0e22\u0e21\u0e32\u0e40\u0e1b\u0e47\u0e19\u0e40\u0e2a\u0e49\u0e19\u0e04\u0e31\u0e48\u0e19\u0e2a\u0e31\u0e49\u0e19 \u0e46 \u0e43\u0e15\u0e49\u0e2b\u0e31\u0e27\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e41\u0e17\u0e19 *\/\r\n#abjRegApp .hero-band::after { display:none; }\r\n#abjRegApp .hero-band h2::after {\r\n  content:\"\"; display:block; width:72px; height:3px; margin:16px auto 0;\r\n  border-radius:999px; background:linear-gradient(90deg,var(--gold),#EEDDBB);\r\n  opacity:.9;\r\n}\r\n#abjRegApp .hero-badge {\r\n  padding:6px 17px; margin-bottom:clamp(14px,3vw,18px);\r\n  border-radius:999px; font-size:clamp(12px,3vw,13.5px); letter-spacing:.11em;\r\n}\r\n#abjRegApp .hero-band h2 {\r\n  font-size:clamp(26px,5.6vw,40px); line-height:1.3; letter-spacing:-.004em;\r\n  margin-bottom:13px; text-wrap:balance;\r\n}\r\n#abjRegApp .hero-band p {\r\n  font-size:clamp(14.5px,3.4vw,17px); line-height:1.7; max-width:56ch; text-wrap:pretty;\r\n}\r\n\r\n\/* \u2500\u2500\u2500 \u0e41\u0e16\u0e1a\u0e20\u0e32\u0e29\u0e32: segmented control \u0e41\u0e1a\u0e1a\u0e01\u0e23\u0e30\u0e08\u0e01\u0e1d\u0e49\u0e32 \u2500\u2500\u2500 *\/\r\n#abjRegApp .lang-bar {\r\n  top:clamp(12px,3vw,18px); padding:4px; gap:2px;\r\n  border:1px solid rgba(255,255,255,.28); border-radius:999px;\r\n  background:rgba(255,255,255,.14);\r\n  box-shadow:0 6px 20px rgba(58,15,38,.18);\r\n  backdrop-filter:blur(14px) saturate(1.4);\r\n}\r\n#abjRegApp .lang-bar button {\r\n  min-width:50px; min-height:33px; padding:4px 15px;\r\n  border-radius:999px; font-size:13px; font-weight:700;\r\n  transition:background .2s var(--ease),color .2s var(--ease);\r\n}\r\n#abjRegApp .lang-bar button.inactive { background:transparent; color:rgba(255,255,255,.86); }\r\n#abjRegApp .lang-bar button.inactive:hover { background:rgba(255,255,255,.20); color:#fff; }\r\n#abjRegApp .lang-bar button.active { background:#fff; color:var(--mcru-dark); box-shadow:0 2px 8px rgba(58,15,38,.20); }\r\n\r\n\/* \u2500\u2500\u2500 \u0e42\u0e04\u0e23\u0e07\u0e2b\u0e25\u0e31\u0e01 \u2500\u2500\u2500 *\/\r\n#abjRegApp .main-wrap {\r\n  max-width:820px; transform:translateY(-26px);\r\n  padding-bottom:calc(84px + env(safe-area-inset-bottom));\r\n}\r\n\r\n\/* \u2500\u2500\u2500 \u0e2a\u0e27\u0e34\u0e15\u0e0a\u0e4c\u0e42\u0e2b\u0e21\u0e14 \u2500\u2500\u2500 *\/\r\n#abjRegApp .mode-switch {\r\n  gap:4px; padding:5px; border:1px solid var(--edge); border-radius:16px;\r\n  background:rgba(255,255,255,.92); box-shadow:var(--shadow-lift);\r\n  backdrop-filter:blur(14px) saturate(1.4);\r\n}\r\n#abjRegApp .mode-switch button {\r\n  min-height:50px; border-radius:12px; font-size:15px; font-weight:600; letter-spacing:.004em;\r\n  transition:background .22s var(--ease),color .22s var(--ease),box-shadow .22s var(--ease);\r\n}\r\n#abjRegApp .mode-switch button.active { box-shadow:0 6px 16px rgba(142,42,87,.24); }\r\n\r\n\/* \u2500\u2500\u2500 \u0e15\u0e31\u0e27\u0e1a\u0e2d\u0e01\u0e02\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19: \u0e40\u0e2a\u0e49\u0e19\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21 + \u0e15\u0e34\u0e4a\u0e01\u0e16\u0e39\u0e01 \u2500\u2500\u2500 *\/\r\n#abjRegApp .form-progress {\r\n  top:10px; gap:6px; padding:11px 8px 9px;\r\n  border:1px solid var(--edge); border-radius:16px;\r\n  background:rgba(255,255,255,.86); box-shadow:0 6px 20px rgba(142,42,87,.08);\r\n  backdrop-filter:blur(16px) saturate(1.6);\r\n}\r\n#abjRegApp .progress-step {\r\n  position:relative; display:flex; flex-direction:column; align-items:center; gap:7px;\r\n  min-height:0; padding:2px 2px 4px; border-radius:12px; background:transparent;\r\n  font-size:11.5px; font-weight:600; line-height:1.3; color:var(--text-muted);\r\n  transition:color .2s var(--ease);\r\n}\r\n#abjRegApp .progress-step:hover { background:transparent; color:var(--mcru-mid); }\r\n#abjRegApp .progress-step.active,\r\n#abjRegApp .progress-step.done { background:transparent; box-shadow:none; }\r\n#abjRegApp .progress-step.active { color:var(--mcru-dark); font-weight:700; }\r\n#abjRegApp .progress-step.done { color:var(--text-mid); }\r\n\/* \u0e40\u0e2a\u0e49\u0e19\u0e23\u0e32\u0e07\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e02\u0e31\u0e49\u0e19 \u2014 \u0e27\u0e32\u0e14\u0e08\u0e32\u0e01\u0e01\u0e36\u0e48\u0e07\u0e01\u0e25\u0e32\u0e07\u0e27\u0e07\u0e01\u0e25\u0e21\u0e19\u0e35\u0e49\u0e44\u0e1b\u0e22\u0e31\u0e07\u0e01\u0e36\u0e48\u0e07\u0e01\u0e25\u0e32\u0e07\u0e27\u0e07\u0e16\u0e31\u0e14\u0e44\u0e1b *\/\r\n#abjRegApp .progress-step::before,\r\n#abjRegApp .progress-step.done::after {\r\n  content:\"\"; position:absolute; top:15px; left:calc(50% + 19px); right:calc(13px - 50%);\r\n  height:2px; border-radius:2px; background:var(--border-md);\r\n}\r\n#abjRegApp .progress-step.done::after { background:var(--mcru); }\r\n#abjRegApp .progress-step:last-child::before,\r\n#abjRegApp .progress-step:last-child.done::after { display:none; }\r\n#abjRegApp .progress-step .step-no {\r\n  position:relative; z-index:1; width:28px; height:28px; margin:0; border-radius:50%;\r\n  border:1.5px solid var(--border-md); background:#fff; color:var(--text-muted);\r\n  font-size:12.5px; font-weight:700; box-shadow:0 0 0 4px rgba(255,255,255,.92);\r\n  transition:background .22s var(--ease),color .22s var(--ease),border-color .22s var(--ease),transform .22s var(--ease);\r\n}\r\n#abjRegApp .progress-step.active .step-no {\r\n  border-color:var(--mcru-dark); background:var(--mcru-dark); color:#fff;\r\n  transform:scale(1.06); box-shadow:0 0 0 4px rgba(255,255,255,.92),0 4px 12px rgba(142,42,87,.28);\r\n}\r\n#abjRegApp .progress-step.done .step-no {\r\n  border-color:var(--mcru); background:var(--mcru); color:transparent;\r\n  box-shadow:0 0 0 4px rgba(255,255,255,.92);\r\n}\r\n#abjRegApp .progress-step.done .step-no::after {\r\n  content:\"\u2713\"; position:absolute; inset:0; display:flex; align-items:center; justify-content:center;\r\n  color:#fff; font-size:14px; font-weight:700; line-height:1;\r\n}\r\n\r\n\/* \u2500\u2500\u2500 \u0e01\u0e32\u0e23\u0e4c\u0e14 \u2500\u2500\u2500 *\/\r\n#abjRegApp .card {\r\n  border:1px solid var(--edge); border-radius:var(--r-lg); background:#fff;\r\n  box-shadow:var(--shadow-card); margin-bottom:clamp(14px,2.6vw,20px);\r\n  transition:box-shadow .3s var(--ease),border-color .3s var(--ease);\r\n}\r\n@media(hover:hover) {\r\n  #abjRegApp .card:hover { transform:none; border-color:var(--edge-strong); box-shadow:var(--shadow-lift); }\r\n}\r\n#abjRegApp .card-header,\r\n#abjRegApp #cardPersonal .card-header,\r\n#abjRegApp #cardAddress .card-header,\r\n#abjRegApp #cardLocation .card-header,\r\n#abjRegApp #cardPhoto .card-header {\r\n  min-height:0; gap:14px;\r\n  padding:clamp(16px,3.4vw,19px) clamp(18px,4vw,26px);\r\n  background:linear-gradient(180deg,var(--mcru-soft),#fff);\r\n  border-bottom:1px solid var(--edge);\r\n}\r\n#abjRegApp .card-header-icon,\r\n#abjRegApp #cardPersonal .card-header-icon,\r\n#abjRegApp #cardAddress .card-header-icon,\r\n#abjRegApp #cardLocation .card-header-icon,\r\n#abjRegApp #cardPhoto .card-header-icon {\r\n  width:42px; height:42px; border-radius:13px;\r\n  box-shadow:0 5px 14px rgba(219,94,149,.26),inset 0 1px 0 rgba(255,255,255,.34);\r\n}\r\n#abjRegApp .card-header-icon svg { width:20px; height:20px; stroke-linecap:round; stroke-linejoin:round; }\r\n#abjRegApp .card-header h3 {\r\n  font-size:clamp(16.5px,4vw,19px); line-height:1.4; letter-spacing:.004em; text-wrap:balance;\r\n}\r\n#abjRegApp .card-body { padding:clamp(20px,4.2vw,28px); }\r\n#abjRegApp .form-grid { gap:clamp(16px,3vw,20px) clamp(15px,3vw,20px); }\r\n\r\n\/* \u2500\u2500\u2500 \u0e0a\u0e48\u0e2d\u0e07\u0e01\u0e23\u0e2d\u0e01 \u2500\u2500\u2500 *\/\r\n#abjRegApp .field label { margin-bottom:8px; font-size:14.5px; font-weight:600; letter-spacing:.004em; }\r\n#abjRegApp .field label .opt { padding:2px 9px; font-size:11.5px; font-weight:500; }\r\n#abjRegApp .field input,\r\n#abjRegApp .field select,\r\n#abjRegApp .field textarea,\r\n#abjRegApp .check-input-row input {\r\n  min-height:52px; padding:14px 16px; font-size:16px;\r\n  border:1.5px solid var(--border-md); border-radius:var(--r-md);\r\n  background:#fff; box-shadow:none;\r\n  transition:border-color .18s var(--ease),box-shadow .18s var(--ease),background-color .18s var(--ease);\r\n}\r\n#abjRegApp .field input:hover,\r\n#abjRegApp .field select:hover { border-color:var(--mcru); background:#fff; }\r\n#abjRegApp .field input:focus,\r\n#abjRegApp .field select:focus,\r\n#abjRegApp .field textarea:focus,\r\n#abjRegApp .check-input-row input:focus {\r\n  transform:none; border-color:var(--mcru-mid); background:#fff; box-shadow:var(--ring);\r\n}\r\n#abjRegApp .field:focus-within > label { transform:none; }\r\n#abjRegApp .field input::placeholder,\r\n#abjRegApp .field textarea::placeholder { color:#B29AA6; }\r\n#abjRegApp .field input:read-only,\r\n#abjRegApp input[readonly] {\r\n  border-style:solid; border-color:var(--border); background:#FBF6F9; color:var(--text-mid);\r\n}\r\n#abjRegApp .field select {\r\n  background-image:url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='14' height='9' viewBox='0 0 14 9'%3E%3Cpath d='M1.5 1.5L7 7l5.5-5.5' stroke='%238E2A57' stroke-width='1.7' fill='none' stroke-linecap='round' stroke-linejoin='round'\/%3E%3C\/svg%3E\");\r\n  background-repeat:no-repeat; background-size:13px 8px;\r\n  background-position:right 16px center; padding-right:44px;\r\n}\r\n#abjRegApp .field select:disabled { background-color:#FAF6F8; border-color:var(--border); }\r\n\/* \u0e0a\u0e48\u0e2d\u0e07 \u0e27\u0e31\u0e19\/\u0e40\u0e14\u0e37\u0e2d\u0e19 \u0e41\u0e04\u0e1a\u0e01\u0e27\u0e48\u0e32\u0e1b\u0e01\u0e15\u0e34 \u2014 \u0e25\u0e14\u0e23\u0e30\u0e22\u0e30\u0e25\u0e39\u0e01\u0e28\u0e23\u0e44\u0e21\u0e48\u0e43\u0e2b\u0e49\u0e17\u0e31\u0e1a\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21 *\/\r\n#abjRegApp .birthdate-grid select {\r\n  padding-left:12px; padding-right:28px;\r\n  background-size:11px 7px; background-position:right 9px center;\r\n}\r\n#abjRegApp .birthdate-grid {\r\n  gap:6px; padding:6px; border:1.5px solid var(--border-md); border-radius:var(--r-md); background:#fff;\r\n}\r\n#abjRegApp .birthdate-grid:focus-within { border-color:var(--mcru-mid); box-shadow:var(--ring); }\r\n#abjRegApp .birthdate-grid select,\r\n#abjRegApp .birthdate-grid input { min-height:44px; border-radius:var(--r-sm); background-color:#FDF8FA; }\r\n#abjRegApp .birthdate-grid select:focus,\r\n#abjRegApp .birthdate-grid input:focus { background-color:#fff; box-shadow:inset 0 0 0 1.5px var(--mcru); }\r\n#abjRegApp .field-help:not(:empty) {\r\n  padding:11px 13px; margin-top:10px; border-radius:var(--r-sm);\r\n  background:var(--mcru-soft); color:var(--text-mid); font-size:13.5px;\r\n}\r\n\r\n\/* \u2500\u2500\u2500 \u0e01\u0e32\u0e23\u0e4c\u0e14\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23 \u2500\u2500\u2500 *\/\r\n#abjRegApp .document-upload-grid { gap:clamp(13px,2.6vw,16px); }\r\n\/* \u0e20\u0e32\u0e29\u0e32\u0e44\u0e17\u0e22\u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e41\u0e19\u0e1a\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e15\u0e48\u0e32\u0e07\u0e0a\u0e32\u0e15\u0e34 \u2014 \u0e43\u0e2b\u0e49\u0e01\u0e32\u0e23\u0e4c\u0e14\u0e23\u0e39\u0e1b\u0e16\u0e48\u0e32\u0e22\u0e01\u0e34\u0e19\u0e40\u0e15\u0e47\u0e21\u0e04\u0e27\u0e32\u0e21\u0e01\u0e27\u0e49\u0e32\u0e07\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e08\u0e30\u0e40\u0e2b\u0e25\u0e37\u0e2d\u0e0a\u0e48\u0e2d\u0e07\u0e27\u0e48\u0e32\u0e07\u0e04\u0e23\u0e36\u0e48\u0e07\u0e41\u0e16\u0e27 *\/\r\n#abjRegApp .document-upload-grid:has(> .foreign-docs-panel.hidden) { grid-template-columns:minmax(0,1fr); }\r\n@media(min-width:601px) {\r\n  #abjRegApp .document-upload-grid:has(> .foreign-docs-panel.hidden) .photo-upload-wrap { gap:22px; }\r\n  #abjRegApp .document-upload-grid:has(> .foreign-docs-panel.hidden) .photo-preview { width:132px; height:160px; flex:0 0 132px; }\r\n  #abjRegApp .document-upload-grid:has(> .foreign-docs-panel.hidden) #photoTile .btn-upload { flex:0 1 auto; padding:11px 22px; font-size:13.5px; }\r\n}\r\n#abjRegApp .document-upload-tile {\r\n  padding:16px; border:1.5px solid var(--border); border-radius:var(--r-md);\r\n  background:#fff; box-shadow:none;\r\n  transition:border-color .22s var(--ease),box-shadow .22s var(--ease);\r\n}\r\n#abjRegApp .document-upload-tile:hover { transform:none; border-color:var(--mcru); box-shadow:var(--shadow-sm); }\r\n\/* \u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e41\u0e25\u0e49\u0e27 \u2192 \u0e02\u0e2d\u0e1a\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e40\u0e1b\u0e47\u0e19\u0e2a\u0e35\u0e40\u0e02\u0e35\u0e22\u0e27\u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e15\u0e34\u0e4a\u0e01\u0e16\u0e39\u0e01 (\u0e1b\u0e38\u0e48\u0e21\u0e25\u0e1a\u0e08\u0e30\u0e42\u0e1c\u0e25\u0e48\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e21\u0e35\u0e44\u0e1f\u0e25\u0e4c) *\/\r\n#abjRegApp .document-upload-tile:has(.btn-photo-remove:not([hidden])) {\r\n  border-color:#8FCFA6; background:#F7FCF9;\r\n}\r\n#abjRegApp .document-upload-tile:has(.btn-photo-remove:not([hidden])) .required-chip {\r\n  background:#E3F5E9; color:#18733B;\r\n}\r\n#abjRegApp .document-upload-tile:has(.btn-photo-remove:not([hidden])) .required-chip::before { content:\"\u2713 \"; }\r\n#abjRegApp .upload-tile-head { min-height:0; margin-bottom:13px; align-items:center; }\r\n#abjRegApp .upload-tile-title { font-size:14.5px; font-weight:700; }\r\n#abjRegApp .required-chip { padding:4px 9px; border-radius:999px; font-size:10.5px; letter-spacing:.02em; }\r\n#abjRegApp .upload-step-no { width:26px; height:26px; flex-basis:26px; font-size:12.5px; }\r\n#abjRegApp .photo-preview,\r\n#abjRegApp .document-upload-tile .photo-preview,\r\n#abjRegApp .doc-preview {\r\n  border:1.5px dashed var(--border-md); border-radius:var(--r-md); background:var(--mcru-soft);\r\n  transition:border-color .22s var(--ease),background .22s var(--ease);\r\n}\r\n#abjRegApp .photo-preview:hover,\r\n#abjRegApp .doc-preview:hover { border-color:var(--mcru); background:var(--mcru-light); }\r\n#abjRegApp .btn-upload,\r\n#abjRegApp .btn-camera,\r\n#abjRegApp .btn-photo-remove {\r\n  border-radius:999px; font-weight:600;\r\n  transition:background .2s var(--ease),border-color .2s var(--ease),box-shadow .2s var(--ease),transform .15s var(--ease);\r\n}\r\n#abjRegApp .btn-upload:active,\r\n#abjRegApp .btn-camera:active,\r\n#abjRegApp .btn-photo-remove:active { transform:scale(.97); }\r\n#abjRegApp .upload-summary {\r\n  padding:14px 16px; border:1px solid var(--edge); border-radius:var(--r-md); background:var(--mcru-soft);\r\n}\r\n#abjRegApp .upload-summary-track { height:8px; background:#F5E3EC; }\r\n#abjRegApp .upload-summary-bar { transition:width .35s var(--ease); }\r\n\r\n\/* \u2500\u2500\u2500 \u0e22\u0e34\u0e19\u0e22\u0e2d\u0e21 \u2500\u2500\u2500 *\/\r\n#abjRegApp .consent-box {\r\n  padding:16px 18px; border-radius:var(--r-md); font-size:14.5px; line-height:1.8;\r\n  border-left:3px solid var(--mcru);\r\n}\r\n#abjRegApp .consent-check {\r\n  gap:12px; padding:14px; border:1.5px solid var(--border); border-radius:var(--r-md); background:#fff;\r\n  transition:border-color .2s var(--ease),background .2s var(--ease);\r\n}\r\n#abjRegApp .consent-check:hover { border-color:var(--border-md); background:var(--mcru-soft); }\r\n#abjRegApp .consent-check:has(input:checked) { border-color:var(--mcru); background:var(--mcru-soft); }\r\n#abjRegApp .consent-check input[type=\"checkbox\"] { width:22px; height:22px; }\r\n\r\n\/* \u2500\u2500\u2500 \u0e1b\u0e38\u0e48\u0e21\u0e2b\u0e25\u0e31\u0e01 \u2500\u2500\u2500 *\/\r\n#abjRegApp .btn-submit {\r\n  min-height:60px; border-radius:16px; letter-spacing:.012em;\r\n  font-size:clamp(16.5px,4.2vw,18.5px);\r\n  box-shadow:0 8px 22px rgba(142,42,87,.26),inset 0 1px 0 rgba(255,255,255,.18);\r\n  transition:transform .18s var(--ease),box-shadow .28s var(--ease),filter .2s var(--ease);\r\n}\r\n#abjRegApp .btn-submit:hover { transform:translateY(-1px); box-shadow:0 14px 32px rgba(142,42,87,.32),inset 0 1px 0 rgba(255,255,255,.26); }\r\n#abjRegApp .btn-submit:active { transform:translateY(0) scale(.995); }\r\n#abjRegApp .btn-check { min-height:52px; border-radius:var(--r-md); padding-inline:28px; font-size:15.5px; }\r\n#abjRegApp .btn-check:hover { filter:brightness(1.06); box-shadow:0 8px 20px rgba(142,42,87,.26); }\r\n#abjRegApp .note { margin-top:16px; font-size:13px; }\r\n\r\n\/* \u2500\u2500\u2500 \u0e1c\u0e25\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e2a\u0e16\u0e32\u0e19\u0e30 \u2500\u2500\u2500 *\/\r\n#abjRegApp .check-result { padding:18px 20px; border-radius:var(--r-md); }\r\n#abjRegApp .check-result-row { padding:7px 0; }\r\n#abjRegApp .check-result-code { border-radius:var(--r-sm); }\r\n\r\n\/* \u2500\u2500\u2500 \u0e01\u0e25\u0e48\u0e2d\u0e07\u0e15\u0e34\u0e14\u0e15\u0e48\u0e2d LINE \u2500\u2500\u2500 *\/\r\n#abjRegApp .payment-note {\r\n  padding:18px 20px; border:1px solid var(--edge); border-radius:var(--r-md);\r\n  background:var(--mcru-soft); text-align:center;\r\n}\r\n#abjRegApp .payment-note p { margin-top:10px; font-size:14px; color:var(--text-muted); }\r\n#abjRegApp .line-btn { margin-top:0; min-height:48px; padding:12px 26px; font-weight:700; }\r\n\r\n\/* \u2500\u2500\u2500 Modal \u0e2a\u0e23\u0e38\u0e1b\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 \u2500\u2500\u2500 *\/\r\n#abjRegApp .review-overlay { background:rgba(52,20,40,.52); backdrop-filter:blur(6px); }\r\n#abjRegApp .review-modal { border-radius:22px; box-shadow:0 30px 80px rgba(58,15,38,.32); }\r\n#abjRegApp .review-modal-header { padding:22px 24px; border-radius:22px 22px 0 0; }\r\n#abjRegApp .review-modal-header h3 { font-size:19px; line-height:1.4; }\r\n#abjRegApp .review-section-title { font-size:12.5px; letter-spacing:.08em; border-bottom-width:1px; }\r\n#abjRegApp .review-row { padding:9px 0; border-bottom-color:var(--edge); }\r\n#abjRegApp .review-doc-item { border-radius:var(--r-sm); background:var(--mcru-soft); }\r\n#abjRegApp .review-modal-footer { gap:10px; border-top-color:var(--edge); border-radius:0 0 22px 22px; }\r\n#abjRegApp .btn-review-back,\r\n#abjRegApp .btn-review-confirm { min-height:52px; border-radius:var(--r-md); font-size:15.5px; }\r\n#abjRegApp .btn-review-back { background:#F6EEF3; }\r\n#abjRegApp .btn-review-back:hover { background:#EFE2EA; }\r\n#abjRegApp .btn-review-confirm { box-shadow:0 8px 20px rgba(142,42,87,.28),inset 0 1px 0 rgba(255,255,255,.22); }\r\n#abjRegApp .btn-review-confirm:hover { transform:translateY(-1px); }\r\n#abjRegApp .review-modal::-webkit-scrollbar { width:9px; }\r\n#abjRegApp .review-modal::-webkit-scrollbar-thumb { border-radius:999px; background:var(--border-md); }\r\n\r\n\/* \u2500\u2500\u2500 SweetAlert (render \u0e19\u0e2d\u0e01 #abjRegApp) \u2500\u2500\u2500 *\/\r\n.swal2-popup { border-radius:22px !important; box-shadow:0 30px 80px rgba(58,15,38,.28) !important; }\r\n.swal2-styled.swal2-confirm,\r\n.swal2-styled.swal2-cancel { border-radius:999px !important; padding:11px 26px !important; font-weight:700 !important; }\r\n.code-display { border-radius:14px; }\r\n\r\n@media(max-width:640px) {\r\n  #abjRegApp .main-wrap { transform:translateY(-20px); padding-left:12px; padding-right:12px; }\r\n  #abjRegApp .card { border-radius:18px; }\r\n  #abjRegApp .form-progress { top:6px; gap:4px; padding:10px 6px 8px; border-radius:14px; }\r\n  #abjRegApp .progress-step { font-size:10.5px; gap:6px; }\r\n  #abjRegApp .progress-step .step-no { width:26px; height:26px; font-size:12px; }\r\n  #abjRegApp .progress-step::before,\r\n  #abjRegApp .progress-step.done::after { top:14px; left:calc(50% + 18px); right:calc(14px - 50%); }\r\n  #abjRegApp .btn-submit { min-height:58px; border-radius:15px; }\r\n  #abjRegApp .line-btn { width:100%; justify-content:center; }\r\n  \/* Bottom sheet \u2014 \u0e40\u0e1e\u0e34\u0e48\u0e21\u0e41\u0e16\u0e1a\u0e08\u0e31\u0e1a\u0e14\u0e49\u0e32\u0e19\u0e1a\u0e19\u0e41\u0e1a\u0e1a\u0e41\u0e2d\u0e1b\u0e21\u0e37\u0e2d\u0e16\u0e37\u0e2d *\/\r\n  #abjRegApp .review-modal { border-radius:24px 24px 0 0; }\r\n  #abjRegApp .review-modal-header { padding-top:26px; border-radius:24px 24px 0 0; }\r\n  #abjRegApp .review-modal-header::before {\r\n    content:\"\"; position:absolute; top:9px; left:50%; transform:translateX(-50%);\r\n    width:42px; height:4px; border-radius:999px; background:rgba(255,255,255,.42);\r\n  }\r\n  #abjRegApp .review-modal-footer { flex-direction:column; border-radius:0; }\r\n}\r\n@media(max-width:380px) {\r\n  #abjRegApp .progress-step span:last-child { font-size:10px; }\r\n  #abjRegApp .progress-step .step-no { width:24px; height:24px; }\r\n  #abjRegApp .progress-step::before,\r\n  #abjRegApp .progress-step.done::after { top:13px; left:calc(50% + 16px); right:calc(13px - 50%); }\r\n}\r\n\r\n\/* \u2500\u2500 \u0e41\u0e16\u0e1a\u0e41\u0e08\u0e49\u0e07\u0e27\u0e48\u0e32\u0e01\u0e39\u0e49\u0e23\u0e48\u0e32\u0e07\u0e17\u0e35\u0e48\u0e01\u0e23\u0e2d\u0e01\u0e04\u0e49\u0e32\u0e07\u0e44\u0e27\u0e49 \u2500\u2500 *\/\r\n#abjRegApp .draft-bar {\r\n  display:flex; align-items:center; gap:12px;\r\n  padding:12px 14px; margin-bottom:14px;\r\n  border:1px solid #CDE7D5; border-radius:var(--r-md);\r\n  background:#F4FBF6; color:#1F5B36; font-size:13.5px; line-height:1.5;\r\n  animation:rise .4s var(--ease) both;\r\n}\r\n#abjRegApp .draft-bar[hidden] { display:none; }\r\n#abjRegApp .draft-bar-icon {\r\n  flex:0 0 30px; width:30px; height:30px; border-radius:50%;\r\n  display:flex; align-items:center; justify-content:center;\r\n  background:#DFF3E6; color:#18733B; font-size:16px; font-weight:700;\r\n}\r\n#abjRegApp .draft-bar-text { flex:1; min-width:0; }\r\n#abjRegApp .draft-bar-text strong { display:block; font-weight:700; }\r\n#abjRegApp .draft-bar-text span { color:#3F6B50; font-size:12.5px; }\r\n#abjRegApp .draft-bar-clear {\r\n  flex:0 0 auto; min-height:38px; padding:8px 15px;\r\n  border:1px solid #BEDDC8; border-radius:999px;\r\n  background:#fff; color:#1F5B36; font-family:'Sarabun',sans-serif;\r\n  font-size:12.5px; font-weight:700; cursor:pointer;\r\n  transition:background .2s var(--ease),border-color .2s var(--ease);\r\n}\r\n#abjRegApp .draft-bar-clear:hover { background:#EAF7EE; border-color:#8FCFA6; }\r\n#abjRegApp .draft-bar-clear:active { transform:scale(.97); }\r\n@media(max-width:480px) {\r\n  #abjRegApp .draft-bar { flex-wrap:wrap; }\r\n  #abjRegApp .draft-bar-clear { width:100%; }\r\n}\r\n\r\n\/* \u2500\u2500 \u0e40\u0e01\u0e47\u0e1a\u0e23\u0e32\u0e22\u0e25\u0e30\u0e40\u0e2d\u0e35\u0e22\u0e14\u0e17\u0e35\u0e48\u0e22\u0e31\u0e07\u0e02\u0e31\u0e14\u0e15\u0e32 \u2500\u2500 *\/\r\n\/* \u0e1b\u0e49\u0e32\u0e22 (\u0e44\u0e21\u0e48\u0e1a\u0e31\u0e07\u0e04\u0e31\u0e1a) \u0e40\u0e04\u0e22\u0e16\u0e39\u0e01\u0e14\u0e31\u0e19\u0e44\u0e1b\u0e0a\u0e34\u0e14\u0e02\u0e27\u0e32\u0e2a\u0e38\u0e14\u0e08\u0e19\u0e14\u0e39\u0e44\u0e21\u0e48\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e2b\u0e31\u0e27\u0e02\u0e49\u0e2d \u2014 \u0e43\u0e2b\u0e49\u0e15\u0e48\u0e2d\u0e17\u0e49\u0e32\u0e22\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e41\u0e17\u0e19 *\/\r\n#abjRegApp .field label .opt { margin-left:0; margin-right:auto; }\r\n\/* \u0e1b\u0e38\u0e48\u0e21\u0e43\u0e19\u0e01\u0e32\u0e23\u0e4c\u0e14\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23: \u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e2d\u0e31\u0e07\u0e01\u0e24\u0e29\u0e22\u0e32\u0e27 (\"Choose \/ replace file\") \u0e15\u0e01\u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14\u0e08\u0e19\u0e1b\u0e38\u0e48\u0e21\u0e2a\u0e39\u0e07\u0e40\u0e01\u0e34\u0e19 *\/\r\n#abjRegApp .document-upload-tile .btn-upload {\r\n  padding:9px 10px; font-size:12px; line-height:1.35;\r\n}\r\n\r\n\/* \u2500\u2500 \u0e0a\u0e48\u0e2d\u0e07\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14: \u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e41\u0e25\u0e49\u0e27\u0e04\u0e32\u0e14\u0e40\u0e14\u0e32 (combobox) \u2500\u2500\r\n   <select id=\"province\"> \u0e22\u0e31\u0e07\u0e2d\u0e22\u0e39\u0e48\u0e04\u0e23\u0e1a\u0e41\u0e25\u0e30\u0e40\u0e1b\u0e47\u0e19\u0e15\u0e31\u0e27\u0e40\u0e01\u0e47\u0e1a\u0e04\u0e48\u0e32\u0e08\u0e23\u0e34\u0e07 (validate\/\u0e23\u0e48\u0e32\u0e07\/\u0e2a\u0e48\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 \u0e2d\u0e48\u0e32\u0e19\u0e08\u0e32\u0e01\u0e15\u0e31\u0e27\u0e19\u0e35\u0e49)\r\n   \u0e41\u0e04\u0e48\u0e0b\u0e48\u0e2d\u0e19\u0e44\u0e27\u0e49 \u0e41\u0e25\u0e49\u0e27\u0e43\u0e2b\u0e49\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e1c\u0e48\u0e32\u0e19 #provinceSearch \u0e41\u0e17\u0e19 *\/\r\n#abjRegApp .combo-native { display:none !important; }\r\n#abjRegApp .combo { position:relative; }\r\n#abjRegApp .combo-input {\r\n  background-image:url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='14' height='9' viewBox='0 0 14 9'%3E%3Cpath d='M1.5 1.5L7 7l5.5-5.5' stroke='%238E2A57' stroke-width='1.7' fill='none' stroke-linecap='round' stroke-linejoin='round'\/%3E%3C\/svg%3E\");\r\n  background-repeat:no-repeat; background-size:13px 8px;\r\n  background-position:right 16px center; padding-right:44px;\r\n}\r\n#abjRegApp .combo-input[aria-invalid=\"true\"] { padding-right:44px; }\r\n\/* \u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e23\u0e2d\u0e42\u0e2b\u0e25\u0e14\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14 \u0e0a\u0e48\u0e2d\u0e07\u0e16\u0e39\u0e01 disable \u0e44\u0e27\u0e49 \u2014 \u0e15\u0e49\u0e2d\u0e07\u0e14\u0e39\u0e2d\u0e2d\u0e01\u0e27\u0e48\u0e32\u0e22\u0e31\u0e07\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49 (\u0e43\u0e2b\u0e49\u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19 select:disabled) *\/\r\n#abjRegApp .combo-input:disabled {\r\n  color:#9A8991; cursor:not-allowed; opacity:1;\r\n  background-color:#FAF6F8; border-color:var(--border);\r\n}\r\n#abjRegApp .combo-list {\r\n  position:absolute; z-index:60; top:calc(100% + 6px); left:0; right:0;\r\n  max-height:270px; overflow-y:auto; overscroll-behavior:contain; -webkit-overflow-scrolling:touch;\r\n  margin:0; padding:6px; list-style:none;\r\n  border:1.5px solid var(--mcru-mid); border-radius:var(--r-md);\r\n  background:#fff; box-shadow:0 18px 40px rgba(142,42,87,.18);\r\n}\r\n#abjRegApp .combo-list[hidden] { display:none; }\r\n#abjRegApp .combo-option {\r\n  padding:11px 13px; border-radius:10px;\r\n  font-family:'Sarabun',sans-serif; font-size:15.5px; line-height:1.4; color:var(--text);\r\n  cursor:pointer; transition:background-color .12s var(--ease);\r\n}\r\n#abjRegApp .combo-option mark { background:transparent; color:var(--mcru-mid); font-weight:700; }\r\n#abjRegApp .combo-option:hover { background:#FDEFF5; }\r\n#abjRegApp .combo-option.active { background:#FBE0EC; color:var(--mcru-dark); }\r\n#abjRegApp .combo-empty { padding:11px 13px; font-size:14.5px; color:var(--text-muted); }\r\n\/* \u0e15\u0e31\u0e27\u0e2d\u0e31\u0e01\u0e29\u0e23\u0e17\u0e35\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e40\u0e14\u0e32\u0e15\u0e48\u0e2d\u0e43\u0e2b\u0e49 (highlight \u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19\u0e0a\u0e48\u0e2d\u0e07) \u0e15\u0e49\u0e2d\u0e07\u0e2d\u0e48\u0e32\u0e19\u0e2d\u0e2d\u0e01\u0e17\u0e31\u0e49\u0e07\u0e1a\u0e19\u0e1e\u0e37\u0e49\u0e19\u0e02\u0e32\u0e27\u0e41\u0e25\u0e30\u0e1e\u0e37\u0e49\u0e19\u0e42\u0e1f\u0e01\u0e31\u0e2a *\/\r\n#abjRegApp .combo-input::selection { background:#F7C9DC; color:var(--text); }\r\n@media(max-width:640px) {\r\n  #abjRegApp .combo-list { max-height:min(45vh,300px); }\r\n  #abjRegApp .combo-option { padding:12px 13px; font-size:16px; }\r\n}\r\n<\/style>\r\n<div id=\"abjRegApp\">\r\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n     Modal \u0e2a\u0e23\u0e38\u0e1b\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e01\u0e48\u0e2d\u0e19\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\r\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\r\n<div class=\"review-overlay\" id=\"reviewOverlay\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"reviewModalTitle\">\r\n  <div class=\"review-modal\">\r\n    <div class=\"review-modal-header\">\r\n      <div>\r\n        <h3 id=\"reviewModalTitle\">\ud83d\udccb <span id=\"rvTitle\">\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e01\u0e48\u0e2d\u0e19\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19<\/span><\/h3>\r\n        <p id=\"rvSubtitle\">\u0e01\u0e23\u0e38\u0e13\u0e32\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e43\u0e2b\u0e49\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e48\u0e2d\u0e19\u0e01\u0e14\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19<\/p>\r\n      <\/div>\r\n    <\/div>\r\n    <div class=\"review-modal-body\" id=\"reviewModalBody\">\r\n      <!-- \u0e2a\u0e23\u0e49\u0e32\u0e07\u0e42\u0e14\u0e22 JS -->\r\n    <\/div>\r\n    <div class=\"review-modal-footer\">\r\n      <button type=\"button\" class=\"btn-review-back\" id=\"btnReviewBack\">\u2190 <span id=\"rvBack\">\u0e41\u0e01\u0e49\u0e44\u0e02<\/span><\/button>\r\n      <button type=\"button\" class=\"btn-review-confirm\" id=\"btnReviewConfirm\">\u2726 <span id=\"rvConfirm\">\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e01\u0e32\u0e23\u0e2a\u0e21\u0e31\u0e04\u0e23<\/span><\/button>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n<div class=\"lang-bar\">\r\n  <button type=\"button\" id=\"btnTH\" onclick=\"setLanguage('th')\" class=\"active\" aria-pressed=\"true\">\u0e44\u0e17\u0e22<\/button>\r\n  <button type=\"button\" id=\"btnEN\" onclick=\"setLanguage('en')\" class=\"inactive\" aria-pressed=\"false\">EN<\/button>\r\n<\/div>\r\n<div class=\"hero-band\">\r\n  <div class=\"hero-badge\" id=\"academicYearBadge\">\u2726 \u0e1b\u0e35\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32 \u2726<\/div>\r\n  <h2 id=\"heroTitle\">\u0e41\u0e1a\u0e1a\u0e1f\u0e2d\u0e23\u0e4c\u0e21\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e40\u0e23\u0e35\u0e22\u0e19\u0e1e\u0e23\u0e30\u0e2d\u0e20\u0e34\u0e18\u0e23\u0e23\u0e21<\/h2>\r\n  <p id=\"heroSub\">\u0e01\u0e23\u0e2d\u0e01\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e43\u0e2b\u0e49\u0e04\u0e23\u0e1a\u0e16\u0e49\u0e27\u0e19 \u2014 \u0e23\u0e30\u0e1a\u0e1a\u0e08\u0e30\u0e2d\u0e2d\u0e01\u0e23\u0e2b\u0e31\u0e2a\u0e0a\u0e31\u0e48\u0e27\u0e04\u0e23\u0e32\u0e27\u0e43\u0e2b\u0e49\u0e2b\u0e25\u0e31\u0e07\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08<\/p>\r\n<\/div>\r\n<div class=\"main-wrap\">\r\n<div class=\"mode-switch\" role=\"tablist\" aria-label=\"\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\">\r\n  <button type=\"button\" id=\"modeRegister\" class=\"active\" role=\"tab\" aria-selected=\"true\" aria-controls=\"regForm\" onclick=\"setAppMode('register',true)\">\ud83d\udcdd <span id=\"modeRegisterText\">\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e40\u0e23\u0e35\u0e22\u0e19<\/span><\/button>\r\n  <button type=\"button\" id=\"modeStatus\" role=\"tab\" aria-selected=\"false\" aria-controls=\"statusPanel\" onclick=\"setAppMode('status',true)\">\ud83d\udd0e <span id=\"modeStatusText\">\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e2a\u0e16\u0e32\u0e19\u0e30<\/span><\/button>\r\n<\/div>\r\n<form id=\"regForm\" class=\"mode-panel\" role=\"tabpanel\" aria-labelledby=\"modeRegister\" novalidate>\r\n  <div class=\"draft-bar\" id=\"draftBar\" role=\"status\" hidden>\r\n    <span class=\"draft-bar-icon\" aria-hidden=\"true\">\u21ba<\/span>\r\n    <span class=\"draft-bar-text\">\r\n      <strong id=\"draftBarTitle\">\u0e01\u0e39\u0e49\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e01\u0e23\u0e2d\u0e01\u0e04\u0e49\u0e32\u0e07\u0e44\u0e27\u0e49\u0e43\u0e2b\u0e49\u0e41\u0e25\u0e49\u0e27<\/strong>\r\n      <span id=\"draftBarNote\">\u0e40\u0e01\u0e47\u0e1a\u0e44\u0e27\u0e49\u0e43\u0e19\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e19\u0e35\u0e49 24 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07 \u2014 \u0e23\u0e39\u0e1b\u0e20\u0e32\u0e1e\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e43\u0e2b\u0e21\u0e48<\/span>\r\n    <\/span>\r\n    <button type=\"button\" class=\"draft-bar-clear\" id=\"draftClearBtn\" onclick=\"discardDraft()\">\u0e25\u0e49\u0e32\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25<\/button>\r\n  <\/div>\r\n  <!-- \u0e41\u0e2a\u0e14\u0e07\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e01\u0e33\u0e25\u0e31\u0e07\u0e41\u0e01\u0e49\u0e44\u0e02\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e40\u0e04\u0e22\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e44\u0e27\u0e49 (\u0e21\u0e32\u0e08\u0e32\u0e01\u0e1b\u0e38\u0e48\u0e21 \"\u0e41\u0e01\u0e49\u0e44\u0e02\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\" \u0e43\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e2a\u0e16\u0e32\u0e19\u0e30) -->\r\n  <div class=\"draft-bar\" id=\"editModeBar\" role=\"status\" hidden>\r\n    <span class=\"draft-bar-icon\" aria-hidden=\"true\">\u270f\ufe0f<\/span>\r\n    <span class=\"draft-bar-text\">\r\n      <strong id=\"editModeBarTitle\">\u0e01\u0e33\u0e25\u0e31\u0e07\u0e41\u0e01\u0e49\u0e44\u0e02\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25<\/strong>\r\n      <span id=\"editModeBarNote\">\u0e41\u0e01\u0e49\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e08\u0e38\u0e14\u0e17\u0e35\u0e48\u0e1c\u0e34\u0e14 \u0e41\u0e25\u0e49\u0e27\u0e01\u0e14\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e14\u0e49\u0e32\u0e19\u0e25\u0e48\u0e32\u0e07<\/span>\r\n    <\/span>\r\n    <button type=\"button\" class=\"draft-bar-clear\" id=\"editModeCancelBtn\" onclick=\"cancelEditMode()\">\u0e22\u0e01\u0e40\u0e25\u0e34\u0e01<\/button>\r\n  <\/div>\r\n  <nav class=\"form-progress\" aria-label=\"\u0e04\u0e27\u0e32\u0e21\u0e04\u0e37\u0e1a\u0e2b\u0e19\u0e49\u0e32\u0e01\u0e32\u0e23\u0e01\u0e23\u0e2d\u0e01\u0e41\u0e1a\u0e1a\u0e1f\u0e2d\u0e23\u0e4c\u0e21\">\r\n    <button type=\"button\" class=\"progress-step active\" data-target=\"cardPersonal\"><span class=\"step-no\">1<\/span><span id=\"stepPersonal\">\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2a\u0e48\u0e27\u0e19\u0e15\u0e31\u0e27<\/span><\/button>\r\n    <button type=\"button\" class=\"progress-step\" data-target=\"cardAddress\"><span class=\"step-no\">2<\/span><span id=\"stepAddress\">\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48<\/span><\/button>\r\n    <button type=\"button\" class=\"progress-step\" data-target=\"cardLocation\"><span class=\"step-no\">3<\/span><span id=\"stepLocation\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\/\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23<\/span><\/button>\r\n    <button type=\"button\" class=\"progress-step\" data-target=\"cardPhoto\"><span class=\"step-no\">4<\/span><span id=\"stepPhoto\">\u0e23\u0e39\u0e1b\u0e41\u0e25\u0e30\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19<\/span><\/button>\r\n  <\/nav>\r\n  <!-- \u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2a\u0e48\u0e27\u0e19\u0e15\u0e31\u0e27 -->\r\n  <div class=\"card\" id=\"cardPersonal\">\r\n    <div class=\"card-header\">\r\n      <div class=\"card-header-icon\">\r\n        <svg viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"8\" r=\"4\"\/><path d=\"M4 20c0-4 3.6-7 8-7s8 3 8 7\"\/><\/svg>\r\n      <\/div>\r\n      <h3 id=\"secPersonal\">\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2a\u0e48\u0e27\u0e19\u0e15\u0e31\u0e27<\/h3>\r\n    <\/div>\r\n    <div class=\"card-body\">\r\n      <div class=\"form-grid\">\r\n        <div class=\"field span-1\">\r\n          <label for=\"prefix\" id=\"lbPrefix\">\u0e04\u0e33\u0e19\u0e33\u0e2b\u0e19\u0e49\u0e32 <span class=\"req\">*<\/span><\/label>\r\n          <select id=\"prefix\" name=\"prefix\" onchange=\"onPrefixChange()\" required>\r\n            <option value=\"\">\u2014 \u0e40\u0e25\u0e37\u0e2d\u0e01\u0e04\u0e33\u0e19\u0e33\u0e2b\u0e19\u0e49\u0e32 \u2014<\/option>\r\n            <optgroup label=\"\u0e06\u0e23\u0e32\u0e27\u0e32\u0e2a\">\r\n              <option value=\"\u0e19\u0e32\u0e22\">\u0e19\u0e32\u0e22<\/option>\r\n              <option value=\"\u0e19\u0e32\u0e07\">\u0e19\u0e32\u0e07<\/option>\r\n              <option value=\"\u0e19\u0e32\u0e07\u0e2a\u0e32\u0e27\">\u0e19\u0e32\u0e07\u0e2a\u0e32\u0e27<\/option>\r\n              <option value=\"\u0e14.\u0e0a.\">\u0e14.\u0e0a.<\/option>\r\n              <option value=\"\u0e14.\u0e0d.\">\u0e14.\u0e0d.<\/option>\r\n            <\/optgroup>\r\n            <optgroup label=\"\u0e27\u0e38\u0e12\u0e34\u0e17\u0e32\u0e07\u0e27\u0e34\u0e0a\u0e32\u0e01\u0e32\u0e23\">\r\n              <option value=\"\u0e14\u0e23.\">\u0e14\u0e23.<\/option>\r\n              <option value=\"\u0e1c\u0e28.\">\u0e1c\u0e28.<\/option>\r\n              <option value=\"\u0e1c\u0e28.\u0e14\u0e23.\">\u0e1c\u0e28.\u0e14\u0e23.<\/option>\r\n              <option value=\"\u0e23\u0e28.\">\u0e23\u0e28.<\/option>\r\n              <option value=\"\u0e23\u0e28.\u0e14\u0e23.\">\u0e23\u0e28.\u0e14\u0e23.<\/option>\r\n              <option value=\"\u0e28.\">\u0e28.<\/option>\r\n              <option value=\"\u0e28.\u0e14\u0e23.\">\u0e28.\u0e14\u0e23.<\/option>\r\n            <\/optgroup>\r\n            <optgroup label=\"\u0e1e\u0e23\u0e30\u0e20\u0e34\u0e01\u0e29\u0e38 \/ \u0e2a\u0e32\u0e21\u0e40\u0e13\u0e23\">\r\n              <option value=\"\u0e1e\u0e23\u0e30\">\u0e1e\u0e23\u0e30<\/option>\r\n              <option value=\"\u0e2a\u0e32\u0e21\u0e40\u0e13\u0e23\">\u0e2a\u0e32\u0e21\u0e40\u0e13\u0e23<\/option>\r\n              <option value=\"\u0e1e\u0e23\u0e30\u0e21\u0e2b\u0e32\">\u0e1e\u0e23\u0e30\u0e21\u0e2b\u0e32<\/option>\r\n              <option value=\"\u0e1e\u0e23\u0e30\u0e2d\u0e18\u0e34\u0e01\u0e32\u0e23\">\u0e1e\u0e23\u0e30\u0e2d\u0e18\u0e34\u0e01\u0e32\u0e23<\/option>\r\n              <option value=\"\u0e40\u0e08\u0e49\u0e32\u0e2d\u0e18\u0e34\u0e01\u0e32\u0e23\">\u0e40\u0e08\u0e49\u0e32\u0e2d\u0e18\u0e34\u0e01\u0e32\u0e23<\/option>\r\n              <option value=\"\u0e1e\u0e23\u0e30\u0e1b\u0e25\u0e31\u0e14\">\u0e1e\u0e23\u0e30\u0e1b\u0e25\u0e31\u0e14<\/option>\r\n              <option value=\"\u0e1e\u0e23\u0e30\u0e2a\u0e21\u0e38\u0e2b\u0e4c\">\u0e1e\u0e23\u0e30\u0e2a\u0e21\u0e38\u0e2b\u0e4c<\/option>\r\n              <option value=\"\u0e1e\u0e23\u0e30\u0e43\u0e1a\u0e0e\u0e35\u0e01\u0e32\">\u0e1e\u0e23\u0e30\u0e43\u0e1a\u0e0e\u0e35\u0e01\u0e32<\/option>\r\n              <option value=\"\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\">\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39<\/option>\r\n              <option value=\"\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\u0e1b\u0e25\u0e31\u0e14\">\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\u0e1b\u0e25\u0e31\u0e14<\/option>\r\n              <option value=\"\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\u0e18\u0e23\u0e23\u0e21\u0e18\u0e23\">\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\u0e18\u0e23\u0e23\u0e21\u0e18\u0e23<\/option>\r\n              <option value=\"\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\u0e27\u0e34\u0e19\u0e31\u0e22\u0e18\u0e23\">\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\u0e27\u0e34\u0e19\u0e31\u0e22\u0e18\u0e23<\/option>\r\n              <option value=\"\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\u0e2a\u0e31\u0e07\u0e06\u0e23\u0e31\u0e01\u0e29\u0e4c\">\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\u0e2a\u0e31\u0e07\u0e06\u0e23\u0e31\u0e01\u0e29\u0e4c<\/option>\r\n              <option value=\"\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\u0e2a\u0e21\u0e38\u0e2b\u0e4c\">\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\u0e2a\u0e21\u0e38\u0e2b\u0e4c<\/option>\r\n              <option value=\"\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\u0e43\u0e1a\u0e0e\u0e35\u0e01\u0e32\">\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\u0e43\u0e1a\u0e0e\u0e35\u0e01\u0e32<\/option>\r\n            <\/optgroup>\r\n            <optgroup label=\"\u0e20\u0e34\u0e01\u0e29\u0e38\u0e13\u0e35 \/ \u0e19\u0e31\u0e01\u0e1a\u0e27\u0e0a\u0e2b\u0e0d\u0e34\u0e07\">\r\n              <option value=\"\u0e20\u0e34\u0e01\u0e29\u0e38\u0e13\u0e35\">\u0e20\u0e34\u0e01\u0e29\u0e38\u0e13\u0e35<\/option>\r\n              <option value=\"\u0e2a\u0e32\u0e21\u0e40\u0e13\u0e23\u0e35\">\u0e2a\u0e32\u0e21\u0e40\u0e13\u0e23\u0e35<\/option>\r\n              <option value=\"\u0e41\u0e21\u0e48\u0e0a\u0e35\">\u0e41\u0e21\u0e48\u0e0a\u0e35<\/option>\r\n            <\/optgroup>\r\n          <\/select>\r\n        <\/div>\r\n        <div class=\"field span-1\">\r\n          <label for=\"firstName\" id=\"firstNameLabel\">\u0e0a\u0e37\u0e48\u0e2d <span class=\"req\">*<\/span><\/label>\r\n          <input type=\"text\" id=\"firstName\" name=\"firstName\" placeholder=\"\u0e0a\u0e37\u0e48\u0e2d \/ \u0e09\u0e32\u0e22\u0e32\" required>\r\n        <\/div>\r\n        <div class=\"field span-1\" id=\"lastNameField\">\r\n          <label for=\"lastName\" id=\"lastNameLabel\">\u0e19\u0e32\u0e21\u0e2a\u0e01\u0e38\u0e25<\/label>\r\n          <input type=\"text\" id=\"lastName\" name=\"lastName\" placeholder=\"\u0e19\u0e32\u0e21\u0e2a\u0e01\u0e38\u0e25\">\r\n        <\/div>\r\n        <div class=\"field span-1 monk-only\" id=\"templeFieldWrap\">\r\n          <label for=\"temple\" id=\"lbTemple\">\u0e27\u0e31\u0e14 \/ \u0e2a\u0e33\u0e19\u0e31\u0e01<\/label>\r\n          <input type=\"text\" id=\"temple\" name=\"temple\" placeholder=\"\u0e0a\u0e37\u0e48\u0e2d\u0e27\u0e31\u0e14 \/ \u0e2a\u0e33\u0e19\u0e31\u0e01\">\r\n        <\/div>\r\n        <div class=\"field span-1\">\r\n          <label id=\"lbBirthdate\">\u0e27\u0e31\u0e19\u0e40\u0e14\u0e37\u0e2d\u0e19\u0e1b\u0e35\u0e40\u0e01\u0e34\u0e14 (\u0e1e.\u0e28.) <span class=\"req\">*<\/span><\/label>\r\n          <div class=\"birthdate-grid\">\r\n            <select id=\"birthDay\" aria-label=\"\u0e27\u0e31\u0e19\u0e40\u0e01\u0e34\u0e14\"><\/select>\r\n            <select id=\"birthMonth\" aria-label=\"\u0e40\u0e14\u0e37\u0e2d\u0e19\u0e40\u0e01\u0e34\u0e14\"><\/select>\r\n            <input type=\"text\" id=\"birthYear\" aria-label=\"\u0e1b\u0e35\u0e40\u0e01\u0e34\u0e14\" inputmode=\"numeric\" maxlength=\"4\" autocomplete=\"off\" placeholder=\"\u0e1b\u0e35 2510\">\r\n          <\/div>\r\n          <input type=\"hidden\" id=\"birthdate\" name=\"birthdate\" required>\r\n        <\/div>\r\n        <div class=\"field span-1\">\r\n          <label for=\"phone\" id=\"lbPhone\">\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c <span class=\"req\">*<\/span><\/label>\r\n          <input type=\"tel\" id=\"phone\" name=\"phone\" placeholder=\"08x-xxx-xxxx\" autocomplete=\"tel\" inputmode=\"tel\" required maxlength=\"15\">\r\n        <\/div>\r\n        <div class=\"field span-2\">\r\n          <label for=\"education\" id=\"lbEducation\">\u0e27\u0e38\u0e12\u0e34\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32\u0e2a\u0e32\u0e21\u0e31\u0e0d <span class=\"opt\">(\u0e17\u0e32\u0e07\u0e42\u0e25\u0e01 \u2014 \u0e44\u0e21\u0e48\u0e1a\u0e31\u0e07\u0e04\u0e31\u0e1a)<\/span><\/label>\r\n          <select id=\"education\" name=\"education\">\r\n            <option value=\"\">\u2014 \u0e44\u0e21\u0e48\u0e23\u0e30\u0e1a\u0e38 \u2014<\/option>\r\n            <option value=\"\u0e1b\u0e23\u0e30\u0e16\u0e21\u0e28\u0e36\u0e01\u0e29\u0e32\">\u0e1b\u0e23\u0e30\u0e16\u0e21\u0e28\u0e36\u0e01\u0e29\u0e32<\/option>\r\n            <option value=\"\u0e21\u0e31\u0e18\u0e22\u0e21\u0e28\u0e36\u0e01\u0e29\u0e32\u0e15\u0e2d\u0e19\u0e15\u0e49\u0e19 (\u0e21.3)\">\u0e21\u0e31\u0e18\u0e22\u0e21\u0e28\u0e36\u0e01\u0e29\u0e32\u0e15\u0e2d\u0e19\u0e15\u0e49\u0e19 (\u0e21.3)<\/option>\r\n            <option value=\"\u0e21\u0e31\u0e18\u0e22\u0e21\u0e28\u0e36\u0e01\u0e29\u0e32\u0e15\u0e2d\u0e19\u0e1b\u0e25\u0e32\u0e22 (\u0e21.6)\">\u0e21\u0e31\u0e18\u0e22\u0e21\u0e28\u0e36\u0e01\u0e29\u0e32\u0e15\u0e2d\u0e19\u0e1b\u0e25\u0e32\u0e22 (\u0e21.6)<\/option>\r\n            <option value=\"\u0e1b\u0e27\u0e0a.\">\u0e1b\u0e27\u0e0a.<\/option>\r\n            <option value=\"\u0e1b\u0e27\u0e2a. \/ \u0e2d\u0e19\u0e38\u0e1b\u0e23\u0e34\u0e0d\u0e0d\u0e32\">\u0e1b\u0e27\u0e2a. \/ \u0e2d\u0e19\u0e38\u0e1b\u0e23\u0e34\u0e0d\u0e0d\u0e32<\/option>\r\n            <option value=\"\u0e1b\u0e23\u0e34\u0e0d\u0e0d\u0e32\u0e15\u0e23\u0e35\">\u0e1b\u0e23\u0e34\u0e0d\u0e0d\u0e32\u0e15\u0e23\u0e35<\/option>\r\n            <option value=\"\u0e1b\u0e23\u0e34\u0e0d\u0e0d\u0e32\u0e42\u0e17\">\u0e1b\u0e23\u0e34\u0e0d\u0e0d\u0e32\u0e42\u0e17<\/option>\r\n            <option value=\"\u0e1b\u0e23\u0e34\u0e0d\u0e0d\u0e32\u0e40\u0e2d\u0e01\">\u0e1b\u0e23\u0e34\u0e0d\u0e0d\u0e32\u0e40\u0e2d\u0e01<\/option>\r\n          <\/select>\r\n        <\/div>\r\n        <div class=\"field span-1\">\r\n          <label for=\"pali\" id=\"lbPali\">\u0e40\u0e1b\u0e23\u0e35\u0e22\u0e0d\u0e18\u0e23\u0e23\u0e21 (\u0e1a\u0e32\u0e25\u0e35) <span class=\"opt\">(\u0e44\u0e21\u0e48\u0e1a\u0e31\u0e07\u0e04\u0e31\u0e1a)<\/span><\/label>\r\n          <select id=\"pali\" name=\"pali\">\r\n            <option value=\"\">\u2014 \u0e44\u0e21\u0e48\u0e23\u0e30\u0e1a\u0e38 \u2014<\/option>\r\n            <option value=\"\u0e1b\u0e23\u0e30\u0e42\u0e22\u0e04 1-2\">\u0e1b\u0e23\u0e30\u0e42\u0e22\u0e04 1-2<\/option>\r\n            <option value=\"\u0e1b.\u0e18.3\">\u0e1b.\u0e18.3<\/option><option value=\"\u0e1b.\u0e18.4\">\u0e1b.\u0e18.4<\/option>\r\n            <option value=\"\u0e1b.\u0e18.5\">\u0e1b.\u0e18.5<\/option><option value=\"\u0e1b.\u0e18.6\">\u0e1b.\u0e18.6<\/option>\r\n            <option value=\"\u0e1b.\u0e18.7\">\u0e1b.\u0e18.7<\/option><option value=\"\u0e1b.\u0e18.8\">\u0e1b.\u0e18.8<\/option>\r\n            <option value=\"\u0e1b.\u0e18.9\">\u0e1b.\u0e18.9<\/option>\r\n          <\/select>\r\n        <\/div>\r\n        <div class=\"field span-1\">\r\n          <label for=\"dhamma\" id=\"lbDhamma\">\u0e19\u0e31\u0e01\u0e18\u0e23\u0e23\u0e21 \/ \u0e18\u0e23\u0e23\u0e21\u0e28\u0e36\u0e01\u0e29\u0e32 <span class=\"opt\">(\u0e44\u0e21\u0e48\u0e1a\u0e31\u0e07\u0e04\u0e31\u0e1a)<\/span><\/label>\r\n          <select id=\"dhamma\" name=\"dhamma\">\r\n            <option value=\"\">\u2014 \u0e44\u0e21\u0e48\u0e23\u0e30\u0e1a\u0e38 \u2014<\/option>\r\n            <optgroup label=\"\u0e1e\u0e23\u0e30\u0e20\u0e34\u0e01\u0e29\u0e38 \/ \u0e2a\u0e32\u0e21\u0e40\u0e13\u0e23\">\r\n              <option value=\"\u0e19\u0e31\u0e01\u0e18\u0e23\u0e23\u0e21\u0e0a\u0e31\u0e49\u0e19\u0e15\u0e23\u0e35\">\u0e19\u0e31\u0e01\u0e18\u0e23\u0e23\u0e21\u0e0a\u0e31\u0e49\u0e19\u0e15\u0e23\u0e35<\/option>\r\n              <option value=\"\u0e19\u0e31\u0e01\u0e18\u0e23\u0e23\u0e21\u0e0a\u0e31\u0e49\u0e19\u0e42\u0e17\">\u0e19\u0e31\u0e01\u0e18\u0e23\u0e23\u0e21\u0e0a\u0e31\u0e49\u0e19\u0e42\u0e17<\/option>\r\n              <option value=\"\u0e19\u0e31\u0e01\u0e18\u0e23\u0e23\u0e21\u0e0a\u0e31\u0e49\u0e19\u0e40\u0e2d\u0e01\">\u0e19\u0e31\u0e01\u0e18\u0e23\u0e23\u0e21\u0e0a\u0e31\u0e49\u0e19\u0e40\u0e2d\u0e01<\/option>\r\n            <\/optgroup>\r\n            <optgroup label=\"\u0e06\u0e23\u0e32\u0e27\u0e32\u0e2a\">\r\n              <option value=\"\u0e18\u0e23\u0e23\u0e21\u0e28\u0e36\u0e01\u0e29\u0e32\u0e0a\u0e31\u0e49\u0e19\u0e15\u0e23\u0e35\">\u0e18\u0e23\u0e23\u0e21\u0e28\u0e36\u0e01\u0e29\u0e32\u0e0a\u0e31\u0e49\u0e19\u0e15\u0e23\u0e35<\/option>\r\n              <option value=\"\u0e18\u0e23\u0e23\u0e21\u0e28\u0e36\u0e01\u0e29\u0e32\u0e0a\u0e31\u0e49\u0e19\u0e42\u0e17\">\u0e18\u0e23\u0e23\u0e21\u0e28\u0e36\u0e01\u0e29\u0e32\u0e0a\u0e31\u0e49\u0e19\u0e42\u0e17<\/option>\r\n              <option value=\"\u0e18\u0e23\u0e23\u0e21\u0e28\u0e36\u0e01\u0e29\u0e32\u0e0a\u0e31\u0e49\u0e19\u0e40\u0e2d\u0e01\">\u0e18\u0e23\u0e23\u0e21\u0e28\u0e36\u0e01\u0e29\u0e32\u0e0a\u0e31\u0e49\u0e19\u0e40\u0e2d\u0e01<\/option>\r\n            <\/optgroup>\r\n          <\/select>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n  <!-- \u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48 -->\r\n  <div class=\"card\" id=\"cardAddress\">\r\n    <div class=\"card-header\">\r\n      <div class=\"card-header-icon\">\r\n        <svg viewBox=\"0 0 24 24\"><path d=\"M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7z\"\/><circle cx=\"12\" cy=\"9\" r=\"2.5\"\/><\/svg>\r\n      <\/div>\r\n      <h3 id=\"secAddress\">\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e1b\u0e31\u0e08\u0e08\u0e38\u0e1a\u0e31\u0e19<\/h3>\r\n    <\/div>\r\n    <div class=\"card-body\">\r\n      <div class=\"form-grid\">\r\n        <div class=\"field span-1\">\r\n          <label for=\"address\" id=\"lbAddress\">\u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 <span class=\"req\">*<\/span><\/label>\r\n          <input type=\"text\" id=\"address\" name=\"address\" placeholder=\"\u0e1a\u0e49\u0e32\u0e19\u0e40\u0e25\u0e02\u0e17\u0e35\u0e48\" required>\r\n        <\/div>\r\n        <div class=\"field span-1\">\r\n          <label for=\"soi\" id=\"lbSoi\">\u0e0b\u0e2d\u0e22 \/ \u0e2b\u0e21\u0e39\u0e48 <span class=\"opt\">(\u0e16\u0e49\u0e32\u0e21\u0e35)<\/span><\/label>\r\n          <input type=\"text\" id=\"soi\" name=\"soi\" placeholder=\"\u0e0b\u0e2d\u0e22 \/ \u0e2b\u0e21\u0e39\u0e48\u0e1a\u0e49\u0e32\u0e19\">\r\n        <\/div>\r\n        <div class=\"field span-1\">\r\n          <label for=\"provinceSearch\" id=\"lbProvince\">\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14 <span class=\"req\">*<\/span><\/label>\r\n          <!-- \u0e0a\u0e48\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e1e\u0e34\u0e21\u0e1e\u0e4c \u2014 \u0e23\u0e30\u0e1a\u0e1a\u0e04\u0e32\u0e14\u0e40\u0e14\u0e32\u0e41\u0e25\u0e30\u0e40\u0e15\u0e34\u0e21\u0e0a\u0e37\u0e48\u0e2d\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14\u0e43\u0e2b\u0e49 \u0e2a\u0e48\u0e27\u0e19\u0e04\u0e48\u0e32\u0e08\u0e23\u0e34\u0e07\u0e40\u0e01\u0e47\u0e1a\u0e43\u0e19 <select id=\"province\"> \u0e17\u0e35\u0e48\u0e0b\u0e48\u0e2d\u0e19\u0e2d\u0e22\u0e39\u0e48 -->\r\n          <div class=\"combo\" id=\"provinceCombo\">\r\n            <input type=\"text\" id=\"provinceSearch\" class=\"combo-input\" role=\"combobox\"\r\n                   aria-expanded=\"false\" aria-autocomplete=\"list\" aria-controls=\"provinceListbox\" aria-haspopup=\"listbox\"\r\n                   autocomplete=\"off\" autocapitalize=\"off\" spellcheck=\"false\" data-error-proxy=\"province\"\r\n                   placeholder=\"\u23f3 \u0e01\u0e33\u0e25\u0e31\u0e07\u0e42\u0e2b\u0e25\u0e14\u2026\" disabled>\r\n            <ul class=\"combo-list\" id=\"provinceListbox\" role=\"listbox\" aria-label=\"\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14\" hidden><\/ul>\r\n          <\/div>\r\n          <select id=\"province\" name=\"province\" class=\"combo-native\" data-error-proxy=\"provinceSearch\" tabindex=\"-1\" aria-hidden=\"true\" required>\r\n            <option value=\"\">\u23f3 \u0e01\u0e33\u0e25\u0e31\u0e07\u0e42\u0e2b\u0e25\u0e14\u2026<\/option>\r\n          <\/select>\r\n        <\/div>\r\n        <div class=\"field span-1\">\r\n          <label for=\"district\" id=\"lbDistrict\">\u0e2d\u0e33\u0e40\u0e20\u0e2d \/ \u0e40\u0e02\u0e15 <span class=\"req\">*<\/span><\/label>\r\n          <select id=\"district\" name=\"district\" required disabled>\r\n            <option value=\"\">\u2014 \u0e40\u0e25\u0e37\u0e2d\u0e01\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14\u0e01\u0e48\u0e2d\u0e19 \u2014<\/option>\r\n          <\/select>\r\n        <\/div>\r\n        <div class=\"field span-1\">\r\n          <label for=\"subdistrict\" id=\"lbSubdistrict\">\u0e15\u0e33\u0e1a\u0e25 \/ \u0e41\u0e02\u0e27\u0e07 <span class=\"req\">*<\/span><\/label>\r\n          <select id=\"subdistrict\" name=\"subdistrict\" required disabled>\r\n            <option value=\"\">\u2014 \u0e40\u0e25\u0e37\u0e2d\u0e01\u0e2d\u0e33\u0e40\u0e20\u0e2d\u0e01\u0e48\u0e2d\u0e19 \u2014<\/option>\r\n          <\/select>\r\n        <\/div>\r\n        <div class=\"field span-1\">\r\n          <label for=\"postalCode\" id=\"lbPostal\">\u0e23\u0e2b\u0e31\u0e2a\u0e44\u0e1b\u0e23\u0e29\u0e13\u0e35\u0e22\u0e4c <span class=\"req\">*<\/span><\/label>\r\n          <input type=\"text\" id=\"postalCode\" name=\"postalCode\" placeholder=\"\u0e40\u0e15\u0e34\u0e21\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34\" maxlength=\"5\" required readonly>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n  <!-- \u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e43\u0e01\u0e25\u0e49\u0e1a\u0e49\u0e32\u0e19 -->\r\n  <div class=\"card\" id=\"cardLocation\">\r\n    <div class=\"card-header\">\r\n      <div class=\"card-header-icon\">\r\n        <svg viewBox=\"0 0 24 24\"><path d=\"M4 10v10h16V10\"\/><path d=\"M2 10l10-7 10 7\"\/><path d=\"M10 20v-6h4v6\"\/><\/svg>\r\n      <\/div>\r\n      <h3 id=\"secLocation\">\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\/\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23 <span class=\"req\">*<\/span><\/h3>\r\n    <\/div>\r\n    <div class=\"card-body\">\r\n      <div class=\"field\">\r\n        <label for=\"serviceLocation\" id=\"lbServiceLocation\">\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e2a\u0e30\u0e14\u0e27\u0e01\u0e40\u0e14\u0e34\u0e19\u0e17\u0e32\u0e07 <span class=\"req\">*<\/span><\/label>\r\n        <select id=\"serviceLocation\" name=\"serviceLocation\" required>\r\n          <option value=\"\">\u23f3 \u0e01\u0e33\u0e25\u0e31\u0e07\u0e42\u0e2b\u0e25\u0e14\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u2026<\/option>\r\n        <\/select>\r\n        <p id=\"serviceLocationAddr\" class=\"field-help\"><\/p>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n  <!-- \u0e23\u0e39\u0e1b\u0e20\u0e32\u0e1e\u0e41\u0e25\u0e30\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23 -->\r\n  <div class=\"card\" id=\"cardPhoto\">\r\n    <div class=\"card-header\">\r\n      <div class=\"card-header-icon\">\r\n        <svg viewBox=\"0 0 24 24\"><rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\"\/><circle cx=\"8.5\" cy=\"8.5\" r=\"1.5\"\/><path d=\"M21 15l-5-5L5 21\"\/><\/svg>\r\n      <\/div>\r\n      <h3 id=\"secPhoto\">\u0e23\u0e39\u0e1b\u0e16\u0e48\u0e32\u0e22 <span class=\"req\">*<\/span><\/h3>\r\n    <\/div>\r\n    <div class=\"card-body\">\r\n      <div class=\"upload-summary english-only hidden\" id=\"uploadSummary\" aria-live=\"polite\">\r\n        <div class=\"upload-summary-row\">\r\n          <span id=\"uploadSummaryLabel\">Document upload progress<\/span>\r\n          <span class=\"upload-summary-count\" id=\"uploadSummaryCount\">0 of 4 uploaded<\/span>\r\n        <\/div>\r\n        <div class=\"upload-summary-track\"><span class=\"upload-summary-bar\" id=\"uploadSummaryBar\"><\/span><\/div>\r\n      <\/div>\r\n      <div class=\"document-upload-grid\">\r\n        <div class=\"document-upload-tile\" id=\"photoTile\">\r\n          <div class=\"upload-tile-head\">\r\n            <span class=\"upload-step-no\">1<\/span>\r\n            <strong class=\"upload-tile-title\" id=\"photoTileTitle\">\u0e20\u0e32\u0e1e\u0e16\u0e48\u0e32\u0e22\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e23\u0e07<\/strong>\r\n            <span class=\"required-chip\" id=\"photoRequiredChip\">\u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19<\/span>\r\n          <\/div>\r\n          <div class=\"upload-tile-body photo-upload-wrap\">\r\n            <div class=\"photo-preview\" id=\"photoPreview\" role=\"button\" tabindex=\"0\" aria-label=\"\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e23\u0e39\u0e1b\u0e16\u0e48\u0e32\u0e22\" onclick=\"document.getElementById('photoInput').click()\" onkeydown=\"if(event.key==='Enter'||event.key===' '){event.preventDefault();document.getElementById('photoInput').click();}\">\r\n              <img id=\"photoImg\" alt=\"\u0e23\u0e39\u0e1b\u0e16\u0e48\u0e32\u0e22\">\r\n              <div class=\"photo-preview-placeholder\" id=\"photoPlaceholder\">\r\n                <svg viewBox=\"0 0 24 24\"><rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\"\/><circle cx=\"12\" cy=\"10\" r=\"3\"\/><path d=\"M6 20c0-3.3 2.7-5 6-5s6 1.7 6 5\"\/><\/svg>\r\n                <span id=\"photoPlaceholderText\">\u0e04\u0e25\u0e34\u0e01\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14<\/span>\r\n              <\/div>\r\n            <\/div>\r\n            <div class=\"upload-tile-info photo-upload-info\">\r\n              <p class=\"doc-guidance\" id=\"photoHint\">\u2022 \u0e23\u0e39\u0e1b\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e23\u0e07 \u0e02\u0e19\u0e32\u0e14 1 \u0e19\u0e34\u0e49\u0e27 \u0e2b\u0e23\u0e37\u0e2d 3x4 \u0e0b\u0e21.<br>\u2022 \u0e44\u0e1f\u0e25\u0e4c JPG, PNG \u0e02\u0e19\u0e32\u0e14\u0e44\u0e21\u0e48\u0e40\u0e01\u0e34\u0e19 10 MB<br>\u2022 \u0e41\u0e15\u0e48\u0e07\u0e01\u0e32\u0e22\u0e2a\u0e38\u0e20\u0e32\u0e1e \/ \u0e04\u0e23\u0e2d\u0e07\u0e08\u0e35\u0e27\u0e23\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e1e\u0e23\u0e30\u0e2a\u0e07\u0e06\u0e4c<\/p>\r\n              <div class=\"upload-actions\">\r\n                <label class=\"btn-upload\" for=\"photoInput\" id=\"btnPhoto\">\ud83d\udcf7 \u0e40\u0e25\u0e37\u0e2d\u0e01\u0e23\u0e39\u0e1b\u0e20\u0e32\u0e1e<\/label>\r\n                <label class=\"btn-upload btn-camera\" for=\"photoCameraInput\" id=\"btnPhotoCamera\">\ud83d\udcf8 \u0e16\u0e48\u0e32\u0e22\u0e20\u0e32\u0e1e<\/label>\r\n                <button type=\"button\" class=\"btn-photo-remove\" id=\"btnPhotoRemove\" hidden onclick=\"removePhoto()\">\u2715 <span id=\"btnPhotoRemoveText\">\u0e25\u0e1a\u0e23\u0e39\u0e1b<\/span><\/button>\r\n              <\/div>\r\n              <input type=\"file\" id=\"photoInput\" accept=\"image\/jpeg,image\/png\" onchange=\"onPhotoChange(event)\">\r\n              <!-- capture=user \u0e40\u0e1b\u0e34\u0e14\u0e01\u0e25\u0e49\u0e2d\u0e07\u0e2b\u0e19\u0e49\u0e32\u0e40\u0e1b\u0e47\u0e19\u0e04\u0e48\u0e32\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19 (\u0e2a\u0e25\u0e31\u0e1a\u0e40\u0e1b\u0e47\u0e19\u0e01\u0e25\u0e49\u0e2d\u0e07\u0e2b\u0e25\u0e31\u0e07\u0e44\u0e14\u0e49\u0e43\u0e19\u0e41\u0e2d\u0e1b\u0e01\u0e25\u0e49\u0e2d\u0e07) -->\r\n              <input type=\"file\" id=\"photoCameraInput\" accept=\"image\/jpeg,image\/png\" capture=\"user\" onchange=\"onPhotoChange(event)\">\r\n            <\/div>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"foreign-docs-panel hidden\" id=\"foreignDocsCard\">\r\n          <div class=\"document-upload-tile\" id=\"passportTile\">\r\n            <div class=\"upload-tile-head\">\r\n              <span class=\"upload-step-no\">2<\/span>\r\n              <strong class=\"upload-tile-title\" id=\"lbPassport\">Passport first page<\/strong>\r\n              <span class=\"required-chip\" id=\"passportRequiredChip\">Required<\/span>\r\n            <\/div>\r\n            <div class=\"upload-tile-body\">\r\n              <div class=\"doc-preview\" id=\"passportPreview\" role=\"button\" tabindex=\"0\" onclick=\"document.getElementById('passportInput').click()\" onkeydown=\"if(event.key==='Enter'||event.key===' '){event.preventDefault();document.getElementById('passportInput').click();}\">\r\n                <img id=\"passportImg\" alt=\"Passport first page preview\">\r\n                <div class=\"doc-placeholder\" id=\"passportPlaceholder\"><svg viewBox=\"0 0 24 24\"><path d=\"M6 2h9l4 4v16H6z\"\/><path d=\"M14 2v5h5M9 12h7M9 16h7\"\/><\/svg><span id=\"passportPlaceholderText\">Click to upload<\/span><\/div>\r\n              <\/div>\r\n              <div class=\"upload-tile-info\">\r\n                <p class=\"doc-guidance\" id=\"passportHint\">Upload the page containing your photo and personal details.<\/p>\r\n                <div class=\"upload-actions\">\r\n                  <label class=\"btn-upload\" for=\"passportInput\" id=\"btnPassport\">\ud83d\udcf7 Choose file<\/label>\r\n                  <label class=\"btn-upload btn-camera\" for=\"passportCameraInput\" id=\"btnPassportCamera\">\ud83d\udcf8 Take photo<\/label>\r\n                  <button type=\"button\" class=\"btn-photo-remove\" id=\"btnPassportRemove\" hidden onclick=\"removeDoc('passport')\">\u2715 <span id=\"btnPassportRemoveText\">Remove<\/span><\/button>\r\n                <\/div>\r\n                <input type=\"file\" id=\"passportInput\" accept=\"image\/jpeg,image\/png\" onchange=\"onDocChange(event,'passport')\">\r\n                <input type=\"file\" id=\"passportCameraInput\" accept=\"image\/jpeg,image\/png\" capture=\"environment\" onchange=\"onDocChange(event,'passport')\">\r\n                <p id=\"passportName\" class=\"field-help\"><\/p>\r\n              <\/div>\r\n            <\/div>\r\n          <\/div>\r\n\r\n          <div class=\"document-upload-tile\" id=\"visaExpiryTile\">\r\n            <div class=\"upload-tile-head\">\r\n              <span class=\"upload-step-no\">3<\/span>\r\n              <strong class=\"upload-tile-title\" id=\"lbVisaExpiry\">Visa expiry page<\/strong>\r\n              <span class=\"required-chip\" id=\"visaExpiryRequiredChip\">Required<\/span>\r\n            <\/div>\r\n            <div class=\"upload-tile-body\">\r\n              <div class=\"doc-preview\" id=\"visaExpiryPreview\" role=\"button\" tabindex=\"0\" onclick=\"document.getElementById('visaExpiryInput').click()\" onkeydown=\"if(event.key==='Enter'||event.key===' '){event.preventDefault();document.getElementById('visaExpiryInput').click();}\">\r\n                <img id=\"visaExpiryImg\" alt=\"Visa expiry page preview\">\r\n                <div class=\"doc-placeholder\" id=\"visaExpiryPlaceholder\"><svg viewBox=\"0 0 24 24\"><path d=\"M6 2h9l4 4v16H6z\"\/><path d=\"M14 2v5h5M9 12h7M9 16h7\"\/><\/svg><span id=\"visaExpiryPlaceholderText\">Click to upload<\/span><\/div>\r\n              <\/div>\r\n              <div class=\"upload-tile-info\">\r\n                <p class=\"doc-guidance\" id=\"visaExpiryHint\">Make sure the visa expiry date is clearly visible.<\/p>\r\n                <div class=\"upload-actions\">\r\n                  <label class=\"btn-upload\" for=\"visaExpiryInput\" id=\"btnVisaExpiry\">\ud83d\udcf7 Choose file<\/label>\r\n                  <label class=\"btn-upload btn-camera\" for=\"visaExpiryCameraInput\" id=\"btnVisaExpiryCamera\">\ud83d\udcf8 Take photo<\/label>\r\n                  <button type=\"button\" class=\"btn-photo-remove\" id=\"btnVisaExpiryRemove\" hidden onclick=\"removeDoc('visaExpiry')\">\u2715 <span id=\"btnVisaExpiryRemoveText\">Remove<\/span><\/button>\r\n                <\/div>\r\n                <input type=\"file\" id=\"visaExpiryInput\" accept=\"image\/jpeg,image\/png\" onchange=\"onDocChange(event,'visaExpiry')\">\r\n                <input type=\"file\" id=\"visaExpiryCameraInput\" accept=\"image\/jpeg,image\/png\" capture=\"environment\" onchange=\"onDocChange(event,'visaExpiry')\">\r\n                <p id=\"visaExpiryName\" class=\"field-help\"><\/p>\r\n              <\/div>\r\n            <\/div>\r\n          <\/div>\r\n\r\n          <div class=\"document-upload-tile\" id=\"tm30Tile\">\r\n            <div class=\"upload-tile-head\">\r\n              <span class=\"upload-step-no\">4<\/span>\r\n              <strong class=\"upload-tile-title\" id=\"lbTM30\">TM.30<\/strong>\r\n              <span class=\"required-chip\" id=\"tm30RequiredChip\">Required<\/span>\r\n            <\/div>\r\n            <div class=\"upload-tile-body\">\r\n              <div class=\"doc-preview\" id=\"tm30Preview\" role=\"button\" tabindex=\"0\" onclick=\"document.getElementById('tm30Input').click()\" onkeydown=\"if(event.key==='Enter'||event.key===' '){event.preventDefault();document.getElementById('tm30Input').click();}\">\r\n                <img id=\"tm30Img\" alt=\"TM.30 preview\">\r\n                <div class=\"doc-placeholder\" id=\"tm30Placeholder\"><svg viewBox=\"0 0 24 24\"><path d=\"M6 2h9l4 4v16H6z\"\/><path d=\"M14 2v5h5M9 12h7M9 16h7\"\/><\/svg><span id=\"tm30PlaceholderText\">Click to upload<\/span><\/div>\r\n              <\/div>\r\n              <div class=\"upload-tile-info\">\r\n                <p class=\"doc-guidance\" id=\"tm30Hint\">Upload a clear and complete image of the TM.30 document.<\/p>\r\n                <div class=\"upload-actions\">\r\n                  <label class=\"btn-upload\" for=\"tm30Input\" id=\"btnTM30\">\ud83d\udcf7 Choose file<\/label>\r\n                  <label class=\"btn-upload btn-camera\" for=\"tm30CameraInput\" id=\"btnTM30Camera\">\ud83d\udcf8 Take photo<\/label>\r\n                  <button type=\"button\" class=\"btn-photo-remove\" id=\"btnTM30Remove\" hidden onclick=\"removeDoc('tm30')\">\u2715 <span id=\"btnTM30RemoveText\">Remove<\/span><\/button>\r\n                <\/div>\r\n                <input type=\"file\" id=\"tm30Input\" accept=\"image\/jpeg,image\/png\" onchange=\"onDocChange(event,'tm30')\">\r\n                <input type=\"file\" id=\"tm30CameraInput\" accept=\"image\/jpeg,image\/png\" capture=\"environment\" onchange=\"onDocChange(event,'tm30')\">\r\n                <p id=\"tm30Name\" class=\"field-help\"><\/p>\r\n              <\/div>\r\n            <\/div>\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n  <!-- \u0e22\u0e34\u0e19\u0e22\u0e2d\u0e21 -->\r\n  <div class=\"card\" id=\"cardConfirm\">\r\n    <div class=\"card-body\">\r\n      <div class=\"consent-box\" id=\"consentText\">\r\n        \u0e02\u0e49\u0e32\u0e1e\u0e40\u0e08\u0e49\u0e32\u0e22\u0e34\u0e19\u0e22\u0e2d\u0e21\u0e43\u0e2b\u0e49\u0e2d\u0e20\u0e34\u0e18\u0e23\u0e23\u0e21\u0e42\u0e0a\u0e15\u0e34\u0e01\u0e30\u0e27\u0e34\u0e17\u0e22\u0e32\u0e25\u0e31\u0e22 \u0e21\u0e2b\u0e32\u0e27\u0e34\u0e17\u0e22\u0e32\u0e25\u0e31\u0e22\u0e21\u0e2b\u0e32\u0e08\u0e38\u0e2c\u0e32\u0e25\u0e07\u0e01\u0e23\u0e13\u0e23\u0e32\u0e0a\u0e27\u0e34\u0e17\u0e22\u0e32\u0e25\u0e31\u0e22\r\n        \u0e40\u0e01\u0e47\u0e1a\u0e23\u0e27\u0e1a\u0e23\u0e27\u0e21\u0e41\u0e25\u0e30\u0e43\u0e0a\u0e49\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2a\u0e48\u0e27\u0e19\u0e1a\u0e38\u0e04\u0e04\u0e25\u0e17\u0e35\u0e48\u0e43\u0e2b\u0e49\u0e44\u0e27\u0e49\u0e43\u0e19\u0e41\u0e1a\u0e1a\u0e1f\u0e2d\u0e23\u0e4c\u0e21\u0e19\u0e35\u0e49 \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e27\u0e31\u0e15\u0e16\u0e38\u0e1b\u0e23\u0e30\u0e2a\u0e07\u0e04\u0e4c\u0e43\u0e19\u0e01\u0e32\u0e23\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e40\u0e23\u0e35\u0e22\u0e19\r\n        \u0e01\u0e32\u0e23\u0e15\u0e34\u0e14\u0e15\u0e48\u0e2d\u0e2a\u0e37\u0e48\u0e2d\u0e2a\u0e32\u0e23 \u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32 \u0e15\u0e32\u0e21\u0e1e\u0e23\u0e30\u0e23\u0e32\u0e0a\u0e1a\u0e31\u0e0d\u0e0d\u0e31\u0e15\u0e34\u0e04\u0e38\u0e49\u0e21\u0e04\u0e23\u0e2d\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2a\u0e48\u0e27\u0e19\u0e1a\u0e38\u0e04\u0e04\u0e25 \u0e1e.\u0e28. \u0e52\u0e55\u0e56\u0e52\r\n      <\/div>\r\n      <label class=\"consent-check\">\r\n        <input type=\"checkbox\" id=\"consent\" required>\r\n        <span id=\"consentLabel\">\u0e02\u0e49\u0e32\u0e1e\u0e40\u0e08\u0e49\u0e32\u0e2d\u0e48\u0e32\u0e19\u0e41\u0e25\u0e30\u0e22\u0e34\u0e19\u0e22\u0e2d\u0e21\u0e15\u0e32\u0e21\u0e40\u0e07\u0e37\u0e48\u0e2d\u0e19\u0e44\u0e02\u0e02\u0e49\u0e32\u0e07\u0e15\u0e49\u0e19 <span style=\"color:var(--mcru)\">*<\/span><\/span>\r\n      <\/label>\r\n    <\/div>\r\n  <\/div>\r\n  <button type=\"submit\" class=\"btn-submit\" id=\"submitBtn\">\ud83d\udd0d <span id=\"submitBtnText\">\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e01\u0e48\u0e2d\u0e19\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19<\/span><\/button>\r\n  <p class=\"note\" id=\"formNote\">* \u0e1a\u0e31\u0e07\u0e04\u0e31\u0e1a\u0e01\u0e23\u0e2d\u0e01 &nbsp;|&nbsp; \u0e2b\u0e25\u0e31\u0e07\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08\u0e23\u0e30\u0e1a\u0e1a\u0e08\u0e30\u0e41\u0e2a\u0e14\u0e07 <strong>\u0e23\u0e2b\u0e31\u0e2a\u0e0a\u0e31\u0e48\u0e27\u0e04\u0e23\u0e32\u0e27<\/strong> \u0e42\u0e1b\u0e23\u0e14\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e44\u0e27\u0e49<\/p>\r\n<\/form>\r\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n     \u0e15\u0e23\u0e27\u0e08\u0e2a\u0e16\u0e32\u0e19\u0e30\u0e01\u0e32\u0e23\u0e2a\u0e21\u0e31\u0e04\u0e23\r\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\r\n<div class=\"check-section mode-panel\" id=\"statusPanel\" role=\"tabpanel\" aria-labelledby=\"modeStatus\" hidden>\r\n  <div class=\"card\">\r\n    <div class=\"card-header\">\r\n      <div class=\"card-header-icon dark-bg\">\r\n        <svg viewBox=\"0 0 24 24\"><circle cx=\"11\" cy=\"11\" r=\"7\"\/><path d=\"M21 21l-4.35-4.35\"\/><\/svg>\r\n      <\/div>\r\n      <h3 id=\"secCheck\">\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e2a\u0e16\u0e32\u0e19\u0e30\u0e01\u0e32\u0e23\u0e2a\u0e21\u0e31\u0e04\u0e23<\/h3>\r\n    <\/div>\r\n    <div class=\"card-body\">\r\n      <div class=\"field note-secondary\">\r\n        <label for=\"checkCodeInput\" id=\"lbCheckCode\">\u0e01\u0e23\u0e2d\u0e01\u0e23\u0e2b\u0e31\u0e2a\u0e0a\u0e31\u0e48\u0e27\u0e04\u0e23\u0e32\u0e27\u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e2b\u0e25\u0e31\u0e07\u0e2a\u0e21\u0e31\u0e04\u0e23 <span class=\"req\">*<\/span><\/label>\r\n        <input type=\"text\" id=\"checkCodeInput\" placeholder=\"0001\" maxlength=\"10\" inputmode=\"numeric\" autocomplete=\"off\" spellcheck=\"false\">\r\n      <\/div>\r\n      <div class=\"field note-secondary\">\r\n        <label for=\"checkPhoneInput\" id=\"lbCheckPhone\">\u0e40\u0e25\u0e02\u0e17\u0e49\u0e32\u0e22\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c 4 \u0e2b\u0e25\u0e31\u0e01\u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23 <span class=\"req\">*<\/span><\/label>\r\n        <div class=\"check-input-row\">\r\n          <input type=\"text\" id=\"checkPhoneInput\" placeholder=\"1234\" maxlength=\"4\" inputmode=\"numeric\" autocomplete=\"off\">\r\n          <button type=\"button\" class=\"btn-check\" id=\"btnCheck\" onclick=\"doCheckStatus()\">\ud83d\udd0d <span id=\"checkBtnText\">\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a<\/span><\/button>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"check-result\" id=\"checkResult\"><\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n  <div class=\"card extra-field\">\r\n    <div class=\"card-body\">\r\n      <div class=\"payment-note\" id=\"paymentNoteBottom\">\r\n        <a href=\"https:\/\/line.me\/R\/ti\/p\/@993yaytf\" target=\"_blank\" rel=\"noopener\" class=\"line-btn\" id=\"lineBtn\">\r\n          <svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\" class=\"icon-shrink\"><path d=\"M12 2C6.48 2 2 5.64 2 10.13c0 4.02 3.55 7.39 8.35 8.03.32.07.77.21.88.49.1.25.06.64.03.89l-.14.85c-.04.25-.2.99.87.54s5.77-3.4 7.87-5.82C21.41 13.5 22 11.9 22 10.13 22 5.64 17.52 2 12 2zM8.1 12.6H6.06c-.3 0-.54-.24-.54-.54V8.02c0-.3.24-.54.54-.54s.54.24.54.54v3.5H8.1c.3 0 .54.24.54.54s-.24.54-.54.54zm2.12-.54c0 .3-.24.54-.54.54s-.54-.24-.54-.54V8.02c0-.3.24-.54.54-.54s.54.24.54.54v4.04zm4.79 0c0 .23-.15.44-.37.51-.06.02-.12.03-.17.03-.17 0-.33-.08-.43-.22l-2.07-2.82v2.5c0 .3-.24.54-.54.54s-.54-.24-.54-.54V8.02c0-.23.15-.44.37-.51.06-.02.11-.03.17-.03.17 0 .33.08.43.22l2.07 2.82v-2.5c0-.3.24-.54.54-.54s.54.24.54.54v4.04zm3.29-2.56c.3 0 .54.24.54.54s-.24.54-.54.54h-1.5v.94h1.5c.3 0 .54.24.54.54s-.24.54-.54.54h-2.04c-.3 0-.54-.24-.54-.54V8.02c0-.3.24-.54.54-.54h2.04c.3 0 .54.24.54.54s-.24.54-.54.54h-1.5v.94h1.5z\"\/><\/svg>\r\n          <span id=\"lineBtnText\">\u0e15\u0e34\u0e14\u0e15\u0e48\u0e2d LINE Official Account<\/span>\r\n        <\/a>\r\n        <p id=\"paymentNoteText\">\u0e15\u0e34\u0e14\u0e15\u0e48\u0e2d\u0e2a\u0e2d\u0e1a\u0e16\u0e32\u0e21<\/p>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/div><!-- \/main-wrap -->\r\n<\/div><!-- \/abjRegApp -->\r\n<script>\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n\/\/ CONFIG\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\nvar GAS_URL = \"https:\/\/script.google.com\/macros\/s\/AKfycbxCOvTDDL1p6rRV55cfCs5BHHA6GgiFBGuBDuLnSUY22sKgXvKZPmbD6HLfaPJ67DoB\/exec\";\r\nvar formStartedAt = Date.now();\r\n\r\n\/\/ \u0e2a\u0e25\u0e31\u0e1a\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e43\u0e2b\u0e21\u0e48\u0e41\u0e25\u0e30\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e2a\u0e16\u0e32\u0e19\u0e30\r\nfunction setAppMode(mode, shouldFocus){\r\n  var isRegister = mode !== \"status\";\r\n  var reg = document.getElementById(\"regForm\"), status = document.getElementById(\"statusPanel\");\r\n  var regBtn = document.getElementById(\"modeRegister\"), statusBtn = document.getElementById(\"modeStatus\");\r\n  reg.hidden = !isRegister; status.hidden = isRegister;\r\n  regBtn.classList.toggle(\"active\", isRegister); statusBtn.classList.toggle(\"active\", !isRegister);\r\n  regBtn.setAttribute(\"aria-selected\", String(isRegister)); statusBtn.setAttribute(\"aria-selected\", String(!isRegister));\r\n  if(shouldFocus){\r\n    var target = isRegister ? document.getElementById(\"prefix\") : document.getElementById(\"checkCodeInput\");\r\n    setTimeout(function(){ target.focus(); target.scrollIntoView({behavior:\"smooth\",block:\"center\"}); }, 40);\r\n  }\r\n}\r\n\r\n\/\/ \u0e1b\u0e38\u0e48\u0e21\u0e19\u0e33\u0e17\u0e32\u0e07\u0e04\u0e27\u0e32\u0e21\u0e04\u0e37\u0e1a\u0e2b\u0e19\u0e49\u0e32\r\nvar progressTargets = [\"cardPersonal\",\"cardAddress\",\"cardLocation\",\"cardPhoto\"];\r\nfunction setProgress(index){\r\n  document.querySelectorAll(\"#abjRegApp .progress-step\").forEach(function(btn,i){\r\n    btn.classList.toggle(\"active\", i===index); btn.classList.toggle(\"done\", i<index);\r\n    if(i===index) btn.setAttribute(\"aria-current\",\"step\"); else btn.removeAttribute(\"aria-current\");\r\n  });\r\n}\r\ndocument.querySelectorAll(\"#abjRegApp .progress-step\").forEach(function(btn,index){\r\n  btn.addEventListener(\"click\",function(){\r\n    var target=document.getElementById(btn.getAttribute(\"data-target\"));\r\n    setProgress(index); if(target) target.scrollIntoView({behavior:\"smooth\",block:\"start\"});\r\n  });\r\n});\r\nwindow.addEventListener(\"scroll\",function(){\r\n  if(document.getElementById(\"regForm\").hidden) return;\r\n  var current=0;\r\n  progressTargets.forEach(function(id,i){ var el=document.getElementById(id); if(el && el.getBoundingClientRect().top<=180) current=i; });\r\n  setProgress(current);\r\n},{passive:true});\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n\/\/ \u0e1b\u0e35\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\nfunction getBuddhistYear() { return new Date().getFullYear() + 543; }\r\nfunction toThaiDigits(n) {\r\n  return String(n).replace(\/[0-9]\/g, function(d){ return \"\u0e50\u0e51\u0e52\u0e53\u0e54\u0e55\u0e56\u0e57\u0e58\u0e59\"[+d]; });\r\n}\r\n(function(){\r\n  var el = document.getElementById(\"academicYearBadge\");\r\n  if(el) el.textContent = \"\u2726 \u0e1b\u0e35\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32 \" + toThaiDigits(getBuddhistYear()) + \" \u2726\";\r\n})();\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n\/\/ \u0e27\u0e31\u0e19\u0e40\u0e14\u0e37\u0e2d\u0e19\u0e1b\u0e35\u0e40\u0e01\u0e34\u0e14\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\nvar MONTHS_TH = [\"\u0e21\u0e01\u0e23\u0e32\u0e04\u0e21\",\"\u0e01\u0e38\u0e21\u0e20\u0e32\u0e1e\u0e31\u0e19\u0e18\u0e4c\",\"\u0e21\u0e35\u0e19\u0e32\u0e04\u0e21\",\"\u0e40\u0e21\u0e29\u0e32\u0e22\u0e19\",\"\u0e1e\u0e24\u0e29\u0e20\u0e32\u0e04\u0e21\",\"\u0e21\u0e34\u0e16\u0e38\u0e19\u0e32\u0e22\u0e19\",\r\n                 \"\u0e01\u0e23\u0e01\u0e0e\u0e32\u0e04\u0e21\",\"\u0e2a\u0e34\u0e07\u0e2b\u0e32\u0e04\u0e21\",\"\u0e01\u0e31\u0e19\u0e22\u0e32\u0e22\u0e19\",\"\u0e15\u0e38\u0e25\u0e32\u0e04\u0e21\",\"\u0e1e\u0e24\u0e28\u0e08\u0e34\u0e01\u0e32\u0e22\u0e19\",\"\u0e18\u0e31\u0e19\u0e27\u0e32\u0e04\u0e21\"];\r\nfunction pad2(v){ return (\"0\"+v).slice(-2); }\r\n\/\/ \u0e23\u0e27\u0e21 \u0e27\u0e31\u0e19\/\u0e40\u0e14\u0e37\u0e2d\u0e19\/\u0e1b\u0e35 \u0e40\u0e1b\u0e47\u0e19 DD\/MM\/YYYY (\u0e1e.\u0e28.) \u0e40\u0e01\u0e47\u0e1a\u0e44\u0e27\u0e49\u0e43\u0e19 #birthdate\r\n\/\/ \u0e1b\u0e35\u0e17\u0e35\u0e48\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e23\u0e31\u0e1a\u0e44\u0e14\u0e49\u0e17\u0e31\u0e49\u0e07 \u0e1e.\u0e28. \u0e41\u0e25\u0e30 \u0e04.\u0e28. \u0e41\u0e15\u0e48\u0e40\u0e01\u0e47\u0e1a\u0e40\u0e1b\u0e47\u0e19 \u0e1e.\u0e28. \u0e40\u0e2a\u0e21\u0e2d\r\n\/\/ \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e27\u0e31\u0e19\u0e40\u0e01\u0e34\u0e14\u0e43\u0e19\u0e0a\u0e35\u0e15\u0e15\u0e23\u0e07\u0e01\u0e31\u0e19\u0e17\u0e38\u0e01\u0e41\u0e16\u0e27 (\u0e01\u0e32\u0e23\u0e01\u0e31\u0e19\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e0b\u0e49\u0e33\u0e40\u0e17\u0e35\u0e22\u0e1a\u0e04\u0e48\u0e32\u0e19\u0e35\u0e49)\r\nfunction syncBirthdate(){\r\n  var d    = document.getElementById(\"birthDay\").value;\r\n  var m    = document.getElementById(\"birthMonth\").value;\r\n  var rawY = document.getElementById(\"birthYear\").value.trim();\r\n  var out  = \"\";\r\n  if(d && m && \/^\\d{4}$\/.test(rawY)){\r\n    var y = parseInt(rawY,10);\r\n    if(y <= 2400) y += 543;   \/\/ \u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e40\u0e1b\u0e47\u0e19 \u0e04.\u0e28. \u2192 \u0e41\u0e1b\u0e25\u0e07\u0e40\u0e1b\u0e47\u0e19 \u0e1e.\u0e28.\r\n    out = d+\"\/\"+m+\"\/\"+y;\r\n  }\r\n  document.getElementById(\"birthdate\").value = out;\r\n}\r\nfunction initBirthdate(){\r\n  var dayEl  = document.getElementById(\"birthDay\");\r\n  var monEl  = document.getElementById(\"birthMonth\");\r\n  var yearEl = document.getElementById(\"birthYear\");\r\n  var dHtml = '<option value=\"\">\u0e27\u0e31\u0e19<\/option>';\r\n  for(var d=1;d<=31;d++) dHtml += '<option value=\"'+pad2(d)+'\">'+d+'<\/option>';\r\n  dayEl.innerHTML = dHtml;\r\n  var mHtml = '<option value=\"\">\u0e40\u0e14\u0e37\u0e2d\u0e19<\/option>';\r\n  MONTHS_TH.forEach(function(n,i){ mHtml += '<option value=\"'+pad2(i+1)+'\">'+n+'<\/option>'; });\r\n  monEl.innerHTML = mHtml;\r\n  \/\/ \u0e1b\u0e35\u0e40\u0e01\u0e34\u0e14\u0e40\u0e1b\u0e47\u0e19\u0e0a\u0e48\u0e2d\u0e07\u0e1e\u0e34\u0e21\u0e1e\u0e4c \u2014 \u0e40\u0e23\u0e47\u0e27\u0e01\u0e27\u0e48\u0e32\u0e40\u0e25\u0e37\u0e48\u0e2d\u0e19\u0e2b\u0e32\u0e43\u0e19\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23 121 \u0e1b\u0e35\u0e1a\u0e19\u0e21\u0e37\u0e2d\u0e16\u0e37\u0e2d\r\n  dayEl.addEventListener(\"change\",syncBirthdate);\r\n  monEl.addEventListener(\"change\",syncBirthdate);\r\n  yearEl.addEventListener(\"input\",syncBirthdate);\r\n  attachInputFilter(yearEl, \/\\D\/g);\r\n}\r\ninitBirthdate();\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n\/\/ \u0e04\u0e33\u0e19\u0e33\u0e2b\u0e19\u0e49\u0e32\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\nfunction isMonkPrefix(p){\r\n  return p && (p.indexOf(\"\u0e1e\u0e23\u0e30\")===0 || p.indexOf(\"\u0e40\u0e08\u0e49\u0e32\u0e2d\u0e18\u0e34\u0e01\u0e32\u0e23\")===0 ||\r\n               p.indexOf(\"\u0e2a\u0e32\u0e21\u0e40\u0e13\u0e23\")===0 || p.indexOf(\"\u0e20\u0e34\u0e01\u0e29\u0e38\u0e13\u0e35\")===0);\r\n}\r\nfunction isOrdained(p){ return isMonkPrefix(p) || p===\"\u0e41\u0e21\u0e48\u0e0a\u0e35\"; }\r\nfunction onPrefixChange(){\r\n  var p = document.getElementById(\"prefix\").value;\r\n  document.querySelectorAll(\"#abjRegApp .monk-only\").forEach(function(el){\r\n    el.style.display = isOrdained(p) ? \"block\" : \"none\";\r\n  });\r\n  var fnL = document.getElementById(\"firstNameLabel\");\r\n  var lnL = document.getElementById(\"lastNameLabel\");\r\n  var req = ' <span class=\"req\">*<\/span>';\r\n  if(isMonkPrefix(p)){\r\n    fnL.innerHTML = (LANG===\"en\" ? T(\"monkFirstName\") : \"\u0e0a\u0e37\u0e48\u0e2d \/ \u0e09\u0e32\u0e22\u0e32\") + req;\r\n    lnL.innerHTML = T(\"lastNameLabel\");\r\n  } else {\r\n    fnL.innerHTML = T(\"firstNameLabel\") + req;\r\n    lnL.innerHTML = T(\"lastNameLabel\");\r\n  }\r\n}\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n\/\/ \u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e44\u0e17\u0e22 \u2014 CDN\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\nvar thaiAddrData = null;\r\nvar ADDR_CDNS = [\r\n  \"https:\/\/cdn.jsdelivr.net\/gh\/kongvut\/thai-province-data@master\/api\/latest\/province_with_district_and_sub_district.json\",\r\n  \"https:\/\/raw.githubusercontent.com\/kongvut\/thai-province-data\/master\/api\/latest\/province_with_district_and_sub_district.json\",\r\n  \"https:\/\/unpkg.com\/thai-province-data@latest\/dist\/province_with_district_and_sub_district.json\"\r\n];\r\nfunction loadThaiAddress(){\r\n  var idx = 0;\r\n  function tryNext(){\r\n    if(idx >= ADDR_CDNS.length){ useFallback(); return; }\r\n    var url = ADDR_CDNS[idx++];\r\n    fetch(url)\r\n      .then(function(r){ if(!r.ok) throw new Error(r.status); return r.json(); })\r\n      .then(function(data){ onAddrLoaded(data); })\r\n      .catch(function(err){ console.warn(\"\u0e42\u0e2b\u0e25\u0e14\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e44\u0e21\u0e48\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08:\", url, err); tryNext(); });\r\n  }\r\n  tryNext();\r\n}\r\nfunction addrName(obj){\r\n  if(LANG===\"en\" && obj.name_en) return obj.name_en;\r\n  return obj.name_th;\r\n}\r\n\/\/ \u0e41\u0e2b\u0e25\u0e48\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 (kongvut\/thai-province-data) \u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e43\u0e2b\u0e21\u0e48: name_th\/name_en \u2192 name:{th,en}\r\n\/\/ \u0e41\u0e1b\u0e25\u0e07\u0e01\u0e25\u0e31\u0e1a\u0e40\u0e1b\u0e47\u0e19\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e40\u0e14\u0e34\u0e21\u0e43\u0e2b\u0e49\u0e42\u0e04\u0e49\u0e14\u0e2a\u0e48\u0e27\u0e19\u0e2d\u0e37\u0e48\u0e19\u0e43\u0e0a\u0e49\u0e44\u0e14\u0e49\u0e15\u0e32\u0e21\u0e40\u0e14\u0e34\u0e21 (\u0e23\u0e2d\u0e07\u0e23\u0e31\u0e1a\u0e17\u0e31\u0e49\u0e07\u0e41\u0e1a\u0e1a\u0e40\u0e01\u0e48\u0e32\u0e41\u0e25\u0e30\u0e41\u0e1a\u0e1a\u0e43\u0e2b\u0e21\u0e48) \u0e41\u0e25\u0e30\u0e15\u0e31\u0e14\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e22\u0e01\u0e40\u0e25\u0e34\u0e01 (deleted_at) \u0e2d\u0e2d\u0e01\r\nfunction normAddrNode(o){\r\n  if(o && o.name && typeof o.name === \"object\"){\r\n    if(o.name_th == null) o.name_th = o.name.th || \"\";\r\n    if(o.name_en == null) o.name_en = o.name.en || \"\";\r\n  }\r\n  if(o.name_th == null) o.name_th = (typeof o.name === \"string\") ? o.name : \"\";\r\n  return o;\r\n}\r\nfunction normAddrList(list){\r\n  return (list||[]).filter(function(o){ return o && !o.deleted_at; }).map(normAddrNode);\r\n}\r\nfunction onAddrLoaded(data){\r\n  if(!Array.isArray(data)) throw new Error(\"bad address data\");\r\n  data = normAddrList(data);\r\n  data.forEach(function(prov){\r\n    var amps = normAddrList(prov.amphure||prov.districts);\r\n    if(prov.amphure) prov.amphure = amps; else prov.districts = amps;\r\n    amps.forEach(function(amp){\r\n      var tbs = normAddrList(amp.tambon||amp.sub_districts);\r\n      if(amp.tambon) amp.tambon = tbs; else amp.sub_districts = tbs;\r\n    });\r\n  });\r\n  thaiAddrData = data;\r\n  var sorted = data.slice().sort(function(a,b){ return a.name_th.localeCompare(b.name_th,\"th\"); });\r\n  var html = '<option value=\"\">'+T(\"selProvince\")+'<\/option>';\r\n  sorted.forEach(function(prov){\r\n    var oi = data.indexOf(prov);\r\n    html += '<option value=\"'+esc(prov.name_th)+'\" data-idx=\"'+oi+'\" data-en=\"'+esc(prov.name_en||\"\")+'\">'+esc(addrName(prov))+'<\/option>';\r\n  });\r\n  var sel = document.getElementById(\"province\");\r\n  sel.innerHTML = html;\r\n  sel.disabled = false;\r\n  initProvinceCombo();\r\n}\r\nfunction useFallback(){\r\n  var placeholders = {\r\n    province: T(\"phProvince\") || \"\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14\",\r\n    district: T(\"phDistrict\") || \"\u0e2d\u0e33\u0e40\u0e20\u0e2d\/\u0e40\u0e02\u0e15\",\r\n    subdistrict: T(\"phSubdistrict\") || \"\u0e15\u0e33\u0e1a\u0e25\/\u0e41\u0e02\u0e27\u0e07\"\r\n  };\r\n  \/\/ \u0e44\u0e21\u0e48\u0e21\u0e35\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14\u0e43\u0e2b\u0e49\u0e04\u0e32\u0e14\u0e40\u0e14\u0e32\u0e41\u0e25\u0e49\u0e27 \u2014 \u0e40\u0e2d\u0e32 combobox \u0e2d\u0e2d\u0e01 \u0e40\u0e2b\u0e25\u0e37\u0e2d\u0e0a\u0e48\u0e2d\u0e07\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e18\u0e23\u0e23\u0e21\u0e14\u0e32\r\n  var provCombo = document.getElementById(\"provinceCombo\");\r\n  if(provCombo) provCombo.parentNode.removeChild(provCombo);\r\n  var provLabel = document.getElementById(\"lbProvince\");\r\n  if(provLabel) provLabel.setAttribute(\"for\",\"province\");\r\n  [\"province\",\"district\",\"subdistrict\"].forEach(function(id){\r\n    var el = document.getElementById(id);\r\n    if(!el || el.tagName !== \"SELECT\") return;\r\n    var inp = document.createElement(\"input\");\r\n    inp.type=\"text\"; inp.id=id; inp.name=id; inp.required=true;\r\n    inp.placeholder = placeholders[id] || \"\";\r\n    inp.className = el.className.replace(\"combo-native\",\"\").trim();   \/\/ \u0e2b\u0e49\u0e32\u0e21\u0e15\u0e34\u0e14\u0e04\u0e25\u0e32\u0e2a\u0e17\u0e35\u0e48\u0e0b\u0e48\u0e2d\u0e19\u0e0a\u0e48\u0e2d\u0e07\u0e21\u0e32\u0e14\u0e49\u0e27\u0e22\r\n    el.parentNode.replaceChild(inp,el);\r\n  });\r\n  var pc = document.getElementById(\"postalCode\");\r\n  if(pc){\r\n    pc.readOnly = false;\r\n    pc.style.background = \"\";\r\n    pc.style.cursor = \"\";\r\n    pc.placeholder = T(\"phPostal\") || \"\u0e23\u0e2b\u0e31\u0e2a\u0e44\u0e1b\u0e23\u0e29\u0e13\u0e35\u0e22\u0e4c 5 \u0e2b\u0e25\u0e31\u0e01\";\r\n  }\r\n}\r\nloadThaiAddress();\r\ndocument.getElementById(\"abjRegApp\").addEventListener(\"change\", function(e){\r\n  var target = e.target;\r\n  if(!target || !target.id) return;\r\n  if(target.id === \"province\"){\r\n    if(target.tagName !== \"SELECT\") return;\r\n    var distSel = document.getElementById(\"district\");\r\n    var subSel  = document.getElementById(\"subdistrict\");\r\n    if(distSel && distSel.tagName === \"SELECT\" && subSel && subSel.tagName === \"SELECT\"){\r\n      distSel.innerHTML = '<option value=\"\">'+T(\"selDistrict\")+'<\/option>';\r\n      subSel.innerHTML  = '<option value=\"\">'+T(\"selSubWait\")+'<\/option>';\r\n      distSel.disabled = true; subSel.disabled = true;\r\n      document.getElementById(\"postalCode\").value = \"\";\r\n      var opt = target.options[target.selectedIndex];\r\n      if(!opt || !opt.value || !thaiAddrData) return;\r\n      var prov = thaiAddrData[parseInt(opt.dataset.idx,10)];\r\n      var amps = (prov.amphure||prov.districts||[]).slice()\r\n        .sort(function(a,b){ return a.name_th.localeCompare(b.name_th,\"th\"); });\r\n      amps.forEach(function(amp){\r\n        var oi = (prov.amphure||prov.districts||[]).indexOf(amp);\r\n        var o = document.createElement(\"option\");\r\n        o.value = amp.name_th; o.textContent = addrName(amp);\r\n        o.dataset.en = amp.name_en || \"\";\r\n        o.dataset.pidx = opt.dataset.idx; o.dataset.aidx = oi;\r\n        distSel.appendChild(o);\r\n      });\r\n      distSel.disabled = false;\r\n    }\r\n    return;\r\n  }\r\n  if(target.id === \"district\"){\r\n    if(target.tagName !== \"SELECT\") return;\r\n    var subSel = document.getElementById(\"subdistrict\");\r\n    if(!subSel || subSel.tagName !== \"SELECT\") return;\r\n    subSel.innerHTML = '<option value=\"\">'+T(\"selSubdistrict\")+'<\/option>';\r\n    subSel.disabled = true;\r\n    document.getElementById(\"postalCode\").value = \"\";\r\n    var opt = target.options[target.selectedIndex];\r\n    if(!opt || !opt.value || !thaiAddrData) return;\r\n    var prov = thaiAddrData[parseInt(opt.dataset.pidx,10)];\r\n    var amp  = (prov.amphure||prov.districts||[])[parseInt(opt.dataset.aidx,10)];\r\n    var tambons = (amp.tambon||amp.sub_districts||[]).slice()\r\n      .sort(function(a,b){ return a.name_th.localeCompare(b.name_th,\"th\"); });\r\n    tambons.forEach(function(t){\r\n      var o = document.createElement(\"option\");\r\n      o.value = t.name_th; o.textContent = addrName(t);\r\n      o.dataset.en = t.name_en || \"\";\r\n      o.dataset.zip = (t.zip_code || t.zipcode || t.postal_code || \"\");\r\n      subSel.appendChild(o);\r\n    });\r\n    subSel.disabled = false;\r\n    return;\r\n  }\r\n  if(target.id === \"subdistrict\"){\r\n    \/\/ \u0e42\u0e2b\u0e21\u0e14 fallback (\u0e42\u0e2b\u0e25\u0e14\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e44\u0e21\u0e48\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08) \u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e23\u0e2b\u0e31\u0e2a\u0e44\u0e1b\u0e23\u0e29\u0e13\u0e35\u0e22\u0e4c\u0e40\u0e2d\u0e07 \u2014 \u0e2b\u0e49\u0e32\u0e21\u0e25\u0e49\u0e32\u0e07\u0e02\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e44\u0e27\u0e49\r\n    if(target.tagName !== \"SELECT\") return;\r\n    var opt = target.options[target.selectedIndex];\r\n    var pc  = document.getElementById(\"postalCode\");\r\n    pc.value = (opt && opt.dataset.zip) || \"\";\r\n    \/\/ \u0e40\u0e15\u0e34\u0e21\u0e04\u0e48\u0e32\u0e14\u0e49\u0e27\u0e22\u0e2a\u0e04\u0e23\u0e34\u0e1b\u0e15\u0e4c\u0e44\u0e21\u0e48\u0e40\u0e01\u0e34\u0e14 event input\/change \u0e15\u0e49\u0e2d\u0e07\u0e25\u0e49\u0e32\u0e07 error \u0e40\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e07\u0e31\u0e49\u0e19\u0e01\u0e23\u0e2d\u0e1a\u0e41\u0e14\u0e07\u0e04\u0e49\u0e32\u0e07\u0e17\u0e31\u0e49\u0e07\u0e17\u0e35\u0e48\u0e21\u0e35\u0e40\u0e25\u0e02\u0e41\u0e25\u0e49\u0e27\r\n    if(pc.value) clearErrorFor(pc);\r\n  }\r\n});\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n\/\/ \u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14 \u2014 \u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e41\u0e25\u0e49\u0e27\u0e04\u0e32\u0e14\u0e40\u0e14\u0e32 (combobox)\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n\/\/ \u0e04\u0e48\u0e32\u0e08\u0e23\u0e34\u0e07\u0e22\u0e31\u0e07\u0e40\u0e01\u0e47\u0e1a\u0e43\u0e19 <select id=\"province\"> \u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19\u0e40\u0e14\u0e34\u0e21\u0e17\u0e38\u0e01\u0e1b\u0e23\u0e30\u0e01\u0e32\u0e23 (validate \/ \u0e23\u0e48\u0e32\u0e07 \/ \u0e2a\u0e48\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 \/ cascade \u0e2d\u0e33\u0e40\u0e20\u0e2d)\r\n\/\/ \u0e0a\u0e48\u0e2d\u0e07 #provinceSearch \u0e40\u0e1b\u0e47\u0e19\u0e40\u0e1e\u0e35\u0e22\u0e07\u0e2b\u0e19\u0e49\u0e32\u0e01\u0e32\u0e01\u0e43\u0e2b\u0e49\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e04\u0e49\u0e19\u0e2b\u0e32 \u0e41\u0e25\u0e49\u0e27 set \u0e04\u0e48\u0e32\u0e25\u0e07 select \u0e1e\u0e23\u0e49\u0e2d\u0e21 dispatch change\r\nvar PROV_ALIAS = {\r\n  \"\u0e01\u0e23\u0e38\u0e07\u0e40\u0e17\u0e1e\u0e21\u0e2b\u0e32\u0e19\u0e04\u0e23\": [\"\u0e01\u0e17\u0e21\",\"\u0e01\u0e23\u0e38\u0e07\u0e40\u0e17\u0e1e\",\"\u0e1a\u0e32\u0e07\u0e01\u0e2d\u0e01\",\"bangkok\",\"bkk\",\"krungthep\"]\r\n};\r\nvar provItems = [], provFiltered = [], provActive = -1;\r\nvar provComposing = false, provComboWired = false;\r\n\r\nfunction provEls(){\r\n  return {\r\n    sel:   document.getElementById(\"province\"),\r\n    input: document.getElementById(\"provinceSearch\"),\r\n    list:  document.getElementById(\"provinceListbox\")\r\n  };\r\n}\r\nfunction provComboReady(){\r\n  var e = provEls();\r\n  return !!(e.sel && e.sel.tagName === \"SELECT\" && e.input && e.list);\r\n}\r\n\/\/ \u0e15\u0e31\u0e14\u0e2a\u0e34\u0e48\u0e07\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e0a\u0e48\u0e27\u0e22\u0e04\u0e49\u0e19\u0e2b\u0e32\u0e2d\u0e2d\u0e01: \u0e0a\u0e48\u0e2d\u0e07\u0e27\u0e48\u0e32\u0e07 \u0e41\u0e25\u0e30\u0e04\u0e33\u0e19\u0e33\u0e2b\u0e19\u0e49\u0e32 \"\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14\"\/\"\u0e08.\"\r\n\/\/ \u0e2b\u0e49\u0e32\u0e21\u0e15\u0e31\u0e14 \"\u0e08\" \u0e40\u0e14\u0e35\u0e48\u0e22\u0e27 \u0e46 \u0e44\u0e21\u0e48\u0e07\u0e31\u0e49\u0e19 \"\u0e08\u0e31\u0e19\u0e17\u0e1a\u0e38\u0e23\u0e35\" \u0e08\u0e30\u0e40\u0e2b\u0e25\u0e37\u0e2d \"\u0e31\u0e19\u0e17\u0e1a\u0e38\u0e23\u0e35\"\r\nfunction provNorm(s){\r\n  return String(s||\"\").toLowerCase().replace(\/\\s+\/g,\"\").replace(\/^(\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14|\u0e08\\.)\/,\"\");\r\n}\r\n\/\/ 0 = \u0e02\u0e36\u0e49\u0e19\u0e15\u0e49\u0e19\u0e15\u0e23\u0e07 (\u0e43\u0e2b\u0e49\u0e02\u0e36\u0e49\u0e19\u0e01\u0e48\u0e2d\u0e19), 1 = \u0e21\u0e35\u0e04\u0e33\u0e19\u0e31\u0e49\u0e19\u0e2d\u0e22\u0e39\u0e48\u0e01\u0e25\u0e32\u0e07\u0e0a\u0e37\u0e48\u0e2d, -1 = \u0e44\u0e21\u0e48\u0e15\u0e23\u0e07\r\nfunction provScore(item, n){\r\n  var i;\r\n  for(i=0;i<item.keys.length;i++) if(item.keys[i].indexOf(n) === 0) return 0;\r\n  for(i=0;i<item.keys.length;i++) if(item.keys[i].indexOf(n) > 0)  return 1;\r\n  return -1;\r\n}\r\nfunction provBuildItems(){\r\n  provItems = [];\r\n  if(!provComboReady()) return;\r\n  var opts = provEls().sel.options;\r\n  for(var i=0;i<opts.length;i++){\r\n    var o = opts[i];\r\n    if(!o.value) continue;\r\n    var en = o.getAttribute(\"data-en\") || \"\";\r\n    var keys = [provNorm(o.value)];\r\n    if(en) keys.push(provNorm(en));\r\n    (PROV_ALIAS[o.value]||[]).forEach(function(a){ keys.push(provNorm(a)); });\r\n    provItems.push({ value:o.value, label:(o.textContent||\"\").trim() || o.value, keys:keys });\r\n  }\r\n}\r\nfunction provLabelOf(value){\r\n  for(var i=0;i<provItems.length;i++) if(provItems[i].value === value) return provItems[i].label;\r\n  return value || \"\";\r\n}\r\nfunction provFilter(q){\r\n  var n = provNorm(q);\r\n  if(!n) return provItems.slice();\r\n  var starts = [], contains = [];\r\n  provItems.forEach(function(it){\r\n    var s = provScore(it, n);\r\n    if(s === 0) starts.push(it); else if(s === 1) contains.push(it);\r\n  });\r\n  return starts.concat(contains);\r\n}\r\nfunction provHighlight(label, raw){\r\n  raw = String(raw||\"\").trim();\r\n  if(!raw) return esc(label);\r\n  var i = label.toLowerCase().indexOf(raw.toLowerCase());\r\n  if(i < 0) return esc(label);\r\n  return esc(label.slice(0,i)) + \"<mark>\" + esc(label.slice(i,i+raw.length)) + \"<\/mark>\" + esc(label.slice(i+raw.length));\r\n}\r\nfunction provOpen(){\r\n  var e = provEls();\r\n  e.list.hidden = false;\r\n  e.input.setAttribute(\"aria-expanded\",\"true\");\r\n}\r\nfunction provClose(){\r\n  if(!provComboReady()) return;\r\n  var e = provEls();\r\n  e.list.hidden = true;\r\n  e.input.setAttribute(\"aria-expanded\",\"false\");\r\n  e.input.removeAttribute(\"aria-activedescendant\");\r\n  provActive = -1;\r\n}\r\nfunction provScrollIntoList(el){\r\n  var box = el.parentNode;\r\n  if(el.offsetTop < box.scrollTop) box.scrollTop = el.offsetTop - 6;\r\n  else if(el.offsetTop + el.offsetHeight > box.scrollTop + box.clientHeight)\r\n    box.scrollTop = el.offsetTop + el.offsetHeight - box.clientHeight + 6;\r\n}\r\nfunction provSetActive(i, scroll){\r\n  var e = provEls(), opts = e.list.querySelectorAll(\".combo-option\");\r\n  provActive = i;\r\n  for(var k=0;k<opts.length;k++){\r\n    var on = (k === i);\r\n    opts[k].classList.toggle(\"active\", on);\r\n    opts[k].setAttribute(\"aria-selected\", on ? \"true\" : \"false\");\r\n    if(on){\r\n      e.input.setAttribute(\"aria-activedescendant\", opts[k].id);\r\n      if(scroll) provScrollIntoList(opts[k]);\r\n    }\r\n  }\r\n  if(i < 0) e.input.removeAttribute(\"aria-activedescendant\");\r\n}\r\nfunction provRender(list, raw){\r\n  var e = provEls();\r\n  provFiltered = list;\r\n  if(!list.length){\r\n    e.list.innerHTML = '<li class=\"combo-empty\">' + esc(T(\"provNoMatch\")) + '<\/li>';\r\n  } else {\r\n    var html = \"\";\r\n    list.forEach(function(it, i){\r\n      html += '<li class=\"combo-option\" role=\"option\" id=\"provOpt'+i+'\" data-i=\"'+i+'\" aria-selected=\"false\">'\r\n            + provHighlight(it.label, raw) + '<\/li>';\r\n    });\r\n    e.list.innerHTML = html;\r\n  }\r\n  provOpen();\r\n  \/\/ \u0e40\u0e1b\u0e34\u0e14\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e48\u0e32 \u0e46 (\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e1e\u0e34\u0e21\u0e1e\u0e4c) \u2192 \u0e44\u0e2e\u0e44\u0e25\u0e15\u0e4c\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14\u0e17\u0e35\u0e48\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e44\u0e27\u0e49\u0e40\u0e14\u0e34\u0e21\r\n  \/\/ \u0e41\u0e15\u0e48\u0e16\u0e49\u0e32\u0e01\u0e33\u0e25\u0e31\u0e07\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e2d\u0e22\u0e39\u0e48 \u0e15\u0e49\u0e2d\u0e07\u0e44\u0e2e\u0e44\u0e25\u0e15\u0e4c\u0e15\u0e31\u0e27\u0e17\u0e35\u0e48\u0e15\u0e23\u0e07\u0e17\u0e35\u0e48\u0e2a\u0e38\u0e14\u0e40\u0e2a\u0e21\u0e2d \u0e43\u0e2b\u0e49\u0e15\u0e23\u0e07\u0e01\u0e31\u0e1a\u0e17\u0e35\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e40\u0e14\u0e32\u0e40\u0e15\u0e34\u0e21\u0e43\u0e19\u0e0a\u0e48\u0e2d\u0e07\r\n  var start = 0;\r\n  if(!raw){\r\n    var cur = e.sel.value;\r\n    if(cur) for(var i=0;i<list.length;i++) if(list[i].value === cur){ start = i; break; }\r\n  }\r\n  provSetActive(list.length ? start : -1, list.length > 0);\r\n}\r\nfunction provCommit(item){\r\n  var e = provEls();\r\n  var next = item ? item.value : \"\";\r\n  e.input.value = item ? item.label : \"\";\r\n  provClose();\r\n  if(e.sel.value !== next){\r\n    e.sel.value = next;\r\n    e.sel.dispatchEvent(new Event(\"change\", { bubbles:true }));\r\n  }\r\n  if(item) clearErrorFor(e.input);\r\n}\r\n\/\/ \u0e40\u0e15\u0e34\u0e21\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e43\u0e19\u0e0a\u0e48\u0e2d\u0e07\u0e43\u0e2b\u0e49\u0e15\u0e23\u0e07\u0e01\u0e31\u0e1a\u0e04\u0e48\u0e32\u0e43\u0e19 select (\u0e43\u0e0a\u0e49\u0e15\u0e2d\u0e19\u0e01\u0e39\u0e49\u0e23\u0e48\u0e32\u0e07 \/ \u0e25\u0e49\u0e32\u0e07\u0e1f\u0e2d\u0e23\u0e4c\u0e21 \/ \u0e2a\u0e25\u0e31\u0e1a\u0e20\u0e32\u0e29\u0e32)\r\nfunction provSyncFromSelect(){\r\n  if(!provComboReady()) return;\r\n  var e = provEls();\r\n  e.input.value = e.sel.value ? provLabelOf(e.sel.value) : \"\";\r\n}\r\n\/\/ \u0e40\u0e14\u0e32\u0e15\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34: \u0e40\u0e15\u0e34\u0e21\u0e2a\u0e48\u0e27\u0e19\u0e17\u0e35\u0e48\u0e40\u0e2b\u0e25\u0e37\u0e2d\u0e02\u0e2d\u0e07\u0e0a\u0e37\u0e48\u0e2d\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14\u0e41\u0e25\u0e49\u0e27\u0e44\u0e2e\u0e44\u0e25\u0e15\u0e4c\u0e44\u0e27\u0e49\r\n\/\/ \u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e15\u0e31\u0e27\u0e16\u0e31\u0e14\u0e44\u0e1b\u0e08\u0e30\u0e17\u0e31\u0e1a\u0e2a\u0e48\u0e27\u0e19\u0e17\u0e35\u0e48\u0e40\u0e14\u0e32\u0e17\u0e31\u0e19\u0e17\u0e35 \u0e2a\u0e48\u0e27\u0e19\u0e01\u0e14 Backspace \u0e01\u0e47\u0e25\u0e1a\u0e17\u0e34\u0e49\u0e07\u0e44\u0e14\u0e49\r\nvar provInlineAllowed = null;\r\nfunction provInlineOK(){\r\n  if(provInlineAllowed === null)\r\n    provInlineAllowed = !!(window.matchMedia && window.matchMedia(\"(pointer: fine)\").matches);\r\n  return provInlineAllowed;\r\n}\r\nfunction provInlineComplete(typed, best){\r\n  \/\/ \u0e40\u0e02\u0e35\u0e22\u0e19\u0e17\u0e31\u0e1a\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e04\u0e35\u0e22\u0e4c\u0e1a\u0e2d\u0e23\u0e4c\u0e14\u0e04\u0e32\u0e14\u0e40\u0e14\u0e32\u0e02\u0e2d\u0e07\u0e21\u0e37\u0e2d\u0e16\u0e37\u0e2d\u0e23\u0e27\u0e19 (\u0e15\u0e31\u0e27\u0e2d\u0e31\u0e01\u0e29\u0e23\u0e0b\u0e49\u0e33\/\u0e2b\u0e32\u0e22)\r\n  \/\/ \u0e1a\u0e19\u0e21\u0e37\u0e2d\u0e16\u0e37\u0e2d\u0e08\u0e36\u0e07\u0e43\u0e2b\u0e49 \"\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e15\u0e23\u0e07\u0e01\u0e31\u0e19\" \u0e14\u0e49\u0e32\u0e19\u0e25\u0e48\u0e32\u0e07\u0e17\u0e33\u0e2b\u0e19\u0e49\u0e32\u0e17\u0e35\u0e48\u0e04\u0e32\u0e14\u0e40\u0e14\u0e32\u0e41\u0e17\u0e19\r\n  if(!provInlineOK()) return;\r\n  if(!typed || !best) return;\r\n  var e = provEls(), lbl = best.label;\r\n  if(lbl.length <= typed.length) return;\r\n  if(lbl.toLowerCase().indexOf(typed.toLowerCase()) !== 0) return;\r\n  if(e.input.selectionStart !== typed.length) return;   \/\/ \u0e41\u0e01\u0e49\u0e01\u0e25\u0e32\u0e07\u0e04\u0e33\u0e2d\u0e22\u0e39\u0e48 \u0e2d\u0e22\u0e48\u0e32\u0e44\u0e1b\u0e15\u0e48\u0e2d\u0e17\u0e49\u0e32\u0e22\u0e43\u0e2b\u0e49\r\n  e.input.value = typed + lbl.slice(typed.length);\r\n  try { e.input.setSelectionRange(typed.length, lbl.length); } catch(err){ \/* \u0e1a\u0e32\u0e07 browser \u0e44\u0e21\u0e48\u0e23\u0e2d\u0e07\u0e23\u0e31\u0e1a *\/ }\r\n}\r\nfunction provOnType(ev){\r\n  var e = provEls(), typed = e.input.value;\r\n  var deleting = !!(ev && ev.inputType && ev.inputType.indexOf(\"delete\") === 0);\r\n  var list = provFilter(typed);\r\n  provRender(list, typed.trim());\r\n  if(!deleting && !provComposing) provInlineComplete(typed, list[0]);\r\n}\r\n\/\/ \u0e2d\u0e2d\u0e01\u0e08\u0e32\u0e01\u0e0a\u0e48\u0e2d\u0e07 (blur\/Tab): \u0e16\u0e49\u0e32\u0e17\u0e35\u0e48\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e15\u0e23\u0e07\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14\u0e43\u0e14\u0e01\u0e47\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e43\u0e2b\u0e49\u0e40\u0e25\u0e22\r\n\/\/ \u0e16\u0e49\u0e32\u0e44\u0e21\u0e48\u0e15\u0e23\u0e07\u0e40\u0e25\u0e22 \u0e43\u0e2b\u0e49\u0e22\u0e49\u0e2d\u0e19\u0e01\u0e25\u0e31\u0e1a\u0e44\u0e1b\u0e04\u0e48\u0e32\u0e17\u0e35\u0e48\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e44\u0e27\u0e49\u0e25\u0e48\u0e32\u0e2a\u0e38\u0e14 \u2014 \u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e04\u0e49\u0e32\u0e07\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14\u0e08\u0e23\u0e34\u0e07\u0e08\u0e30\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e40\u0e02\u0e49\u0e32\u0e43\u0e08\u0e1c\u0e34\u0e14\r\nfunction provResolveOnLeave(){\r\n  if(!provComboReady()) return;\r\n  var e = provEls();\r\n  provClose();\r\n  var typed = e.input.value.trim();\r\n  if(!typed){ provCommit(null); runBlurCheck(\"province\"); return; }\r\n  var n = provNorm(typed), exact = null, starts = [];\r\n  provItems.forEach(function(it){\r\n    if(!exact && it.keys.indexOf(n) >= 0) exact = it;\r\n    if(provScore(it, n) === 0) starts.push(it);\r\n  });\r\n  var pick = exact || (starts.length === 1 ? starts[0] : null);\r\n  if(pick) provCommit(pick); else provSyncFromSelect();\r\n  runBlurCheck(\"province\");\r\n}\r\n\/\/ \u0e40\u0e1b\u0e34\u0e14\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e43\u0e2b\u0e49\u0e40\u0e2b\u0e21\u0e32\u0e30\u0e01\u0e31\u0e1a\u0e2a\u0e34\u0e48\u0e07\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19\u0e0a\u0e48\u0e2d\u0e07\u0e15\u0e2d\u0e19\u0e19\u0e35\u0e49\r\n\/\/ \u0e16\u0e49\u0e32\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e04\u0e37\u0e2d\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14\u0e17\u0e35\u0e48\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e44\u0e27\u0e49\u0e41\u0e25\u0e49\u0e27 \u2192 \u0e40\u0e1b\u0e34\u0e14\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14 (\u0e08\u0e30\u0e44\u0e14\u0e49\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e40\u0e1b\u0e47\u0e19\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14\u0e2d\u0e37\u0e48\u0e19\u0e44\u0e14\u0e49)\r\n\/\/ \u0e16\u0e49\u0e32\u0e01\u0e33\u0e25\u0e31\u0e07\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e04\u0e49\u0e32\u0e07\u0e44\u0e27\u0e49 \u2192 \u0e01\u0e23\u0e2d\u0e07\u0e15\u0e32\u0e21\u0e17\u0e35\u0e48\u0e1e\u0e34\u0e21\u0e1e\u0e4c\r\nfunction provOpenForCurrent(){\r\n  var e = provEls();\r\n  var q = (e.sel.value && e.input.value === provLabelOf(e.sel.value)) ? \"\" : e.input.value;\r\n  provRender(provFilter(q), q.trim());\r\n}\r\nfunction initProvinceCombo(){\r\n  if(!provComboReady()) return;\r\n  provBuildItems();\r\n  var e = provEls();\r\n  e.input.disabled = false;\r\n  e.input.placeholder = T(\"phProvinceSearch\");\r\n  provSyncFromSelect();\r\n  if(provComboWired) return;\r\n  provComboWired = true;\r\n\r\n  e.input.addEventListener(\"compositionstart\", function(){ provComposing = true; });\r\n  e.input.addEventListener(\"compositionend\",   function(){ provComposing = false; provOnType(null); });\r\n  e.input.addEventListener(\"input\", provOnType);\r\n  e.input.addEventListener(\"focus\", function(){\r\n    if(provItems.length) provOpenForCurrent();\r\n  });\r\n  e.input.addEventListener(\"blur\", provResolveOnLeave);\r\n  e.input.addEventListener(\"keydown\", function(ev){\r\n    var open = !e.list.hidden;\r\n    if(ev.key === \"ArrowDown\" || ev.key === \"ArrowUp\"){\r\n      ev.preventDefault();\r\n      if(!open){ if(provItems.length) provOpenForCurrent(); return; }\r\n      if(!provFiltered.length) return;\r\n      var next = provActive + (ev.key === \"ArrowDown\" ? 1 : -1);\r\n      if(next < 0) next = provFiltered.length - 1;\r\n      if(next >= provFiltered.length) next = 0;\r\n      provSetActive(next, true);\r\n    } else if(ev.key === \"Enter\"){\r\n      if(open && provFiltered.length){\r\n        ev.preventDefault();          \/\/ \u0e2d\u0e22\u0e48\u0e32\u0e43\u0e2b\u0e49 Enter \u0e44\u0e1b\u0e01\u0e14\u0e2a\u0e48\u0e07\u0e1f\u0e2d\u0e23\u0e4c\u0e21\r\n        provCommit(provFiltered[provActive >= 0 ? provActive : 0]);\r\n      }\r\n    } else if(ev.key === \"Escape\"){\r\n      if(open){ ev.preventDefault(); ev.stopPropagation(); provClose(); provSyncFromSelect(); }\r\n    } else if(ev.key === \"Tab\"){\r\n      \/\/ Tab = \u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e15\u0e31\u0e27\u0e17\u0e35\u0e48\u0e44\u0e2e\u0e44\u0e25\u0e15\u0e4c\u0e2d\u0e22\u0e39\u0e48 (blur \u0e08\u0e30\u0e17\u0e33\u0e07\u0e32\u0e19\u0e15\u0e48\u0e2d\u0e40\u0e2d\u0e07\u0e2d\u0e35\u0e01\u0e17\u0e35)\r\n      if(open && provFiltered.length && provActive >= 0) provCommit(provFiltered[provActive]);\r\n    }\r\n  });\r\n  \/\/ \u0e43\u0e0a\u0e49 mousedown \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48 click \u2014 \u0e44\u0e21\u0e48\u0e07\u0e31\u0e49\u0e19 blur \u0e08\u0e30\u0e1b\u0e34\u0e14\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e44\u0e1b\u0e01\u0e48\u0e2d\u0e19\u0e17\u0e35\u0e48 click \u0e08\u0e30\u0e40\u0e01\u0e34\u0e14\r\n  e.list.addEventListener(\"mousedown\", function(ev){\r\n    ev.preventDefault();\r\n    var li = ev.target && ev.target.closest ? ev.target.closest(\".combo-option\") : null;\r\n    if(!li) return;\r\n    provCommit(provFiltered[parseInt(li.dataset.i,10)]);\r\n    e.input.focus();\r\n  });\r\n  \/\/ \u0e04\u0e48\u0e32\u0e16\u0e39\u0e01\u0e15\u0e31\u0e49\u0e07\u0e08\u0e32\u0e01\u0e17\u0e35\u0e48\u0e2d\u0e37\u0e48\u0e19 (\u0e01\u0e39\u0e49\u0e23\u0e48\u0e32\u0e07 \/ \u0e25\u0e49\u0e32\u0e07\u0e1f\u0e2d\u0e23\u0e4c\u0e21) \u0e15\u0e49\u0e2d\u0e07\u0e2d\u0e31\u0e1b\u0e40\u0e14\u0e15\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e43\u0e19\u0e0a\u0e48\u0e2d\u0e07\u0e15\u0e32\u0e21\r\n  e.sel.addEventListener(\"change\", provSyncFromSelect);\r\n  document.addEventListener(\"mousedown\", function(ev){\r\n    var combo = document.getElementById(\"provinceCombo\");\r\n    if(combo && !combo.contains(ev.target)) provClose();\r\n  });\r\n}\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n\/\/ \u0e2b\u0e19\u0e48\u0e27\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23 \u2014 JSONP\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\nvar serviceLocationsData = [];\r\nvar FALLBACK_LOCATIONS = [\r\n  \"\u0e2d\u0e20\u0e34\u0e18\u0e23\u0e23\u0e21\u0e42\u0e0a\u0e15\u0e34\u0e01\u0e30\u0e27\u0e34\u0e17\u0e22\u0e32\u0e25\u0e31\u0e22 (\u0e2a\u0e48\u0e27\u0e19\u0e01\u0e25\u0e32\u0e07)\",\r\n  \"\u0e27\u0e31\u0e14\u0e01\u0e25\u0e32\u0e07 (\u0e1a\u0e32\u0e07\u0e1b\u0e25\u0e32\u0e21\u0e49\u0e32)\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e01\u0e25\u0e38\u0e48\u0e21\u0e18\u0e23\u0e23\u0e21\u0e2a\u0e23\u0e32\u0e0d\u0e23\u0e21\u0e22\u0e4c \u0e01\u0e23\u0e30\u0e17\u0e23\u0e27\u0e07\u0e01\u0e32\u0e23\u0e15\u0e48\u0e32\u0e07\u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\",\r\n  \"\u0e27\u0e31\u0e14\u0e40\u0e01\u0e48\u0e32\u0e42\u0e1a\u0e23\u0e32\u0e13\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e40\u0e02\u0e32\u0e17\u0e38\u0e48\u0e07\u0e27\u0e31\u0e27\",\r\n  \"\u0e27\u0e31\u0e14\u0e40\u0e02\u0e32\u0e1e\u0e38\u0e17\u0e18\u0e42\u0e04\u0e14\u0e21\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e08\u0e31\u0e19\u0e17\u0e23\u0e2a\u0e38\u0e02\",\r\n  \"\u0e27\u0e31\u0e14\u0e08\u0e32\u0e01\u0e41\u0e14\u0e07\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e40\u0e08\u0e23\u0e34\u0e0d\u0e18\u0e23\u0e23\u0e21\u0e32\u0e23\u0e32\u0e21\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e40\u0e08\u0e23\u0e34\u0e0d\u0e2a\u0e21\u0e13\u0e01\u0e34\u0e08(\u0e2b\u0e25\u0e31\u0e07\u0e28\u0e32\u0e25)\",\r\n  \"\u0e27\u0e31\u0e14\u0e15\u0e36\u0e01 (\u0e2d\u0e22\u0e38\u0e18\u0e22\u0e32)\",\r\n  \"\u0e27\u0e31\u0e14\u0e17\u0e48\u0e32\u0e21\u0e30\u0e42\u0e2d\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e18\u0e23\u0e23\u0e21\u0e32\u0e21\u0e39\u0e25\u0e27\u0e23\u0e27\u0e34\u0e2b\u0e32\u0e23\",\r\n  \"\u0e27\u0e31\u0e14\u0e19\u0e32\u0e1e\u0e23\u0e49\u0e32\u0e27\u0e40\u0e01\u0e48\u0e32\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e19\u0e34\u0e2a\u0e2a\u0e23\u0e13\u0e27\u0e19\u0e32\u0e23\u0e32\u0e21\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e1b\u0e48\u0e32\u0e0a\u0e31\u0e22\u0e21\u0e07\u0e04\u0e25\",\r\n  \"\u0e27\u0e31\u0e14\u0e1b\u0e48\u0e32\u0e18\u0e23\u0e23\u0e21\u0e42\u0e2a\u0e20\u0e13\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e1b\u0e48\u0e32\u0e27\u0e0a\u0e34\u0e23\u0e1a\u0e23\u0e23\u0e1e\u0e15\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e1c\u0e48\u0e2d\u0e07\u0e1e\u0e25\u0e2d\u0e22\u0e27\u0e34\u0e23\u0e34\u0e22\u0e32\u0e23\u0e32\u0e21\",\r\n  \"\u0e27\u0e31\u0e14\u0e1e\u0e23\u0e2b\u0e21\u0e08\u0e23\u0e34\u0e22\u0e32\u0e27\u0e32\u0e2a\",\r\n  \"\u0e27\u0e31\u0e14\u0e1e\u0e23\u0e30\u0e18\u0e32\u0e15\u0e38\u0e28\u0e23\u0e35\u0e08\u0e2d\u0e21\u0e17\u0e2d\u0e07\u0e27\u0e23\u0e27\u0e34\u0e2b\u0e32\u0e23\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e1e\u0e38\u0e17\u0e18\u0e1a\u0e39\u0e0a\u0e32\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e1e\u0e38\u0e17\u0e18\u0e2a\u0e21\u0e32\u0e04\u0e21\u0e2f \u0e27\u0e31\u0e14\u0e2b\u0e31\u0e27\u0e04\u0e39\u0e49\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e1e\u0e38\u0e17\u0e18\u0e2a\u0e21\u0e32\u0e04\u0e21\u0e2f \u0e27\u0e31\u0e14\u0e2d\u0e23\u0e31\u0e0d\u0e0d\u0e34\u0e01\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e1e\u0e38\u0e17\u0e18\u0e2a\u0e21\u0e32\u0e04\u0e21\u0e41\u0e2b\u0e48\u0e07\u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e44\u0e17\u0e22\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e40\u0e1e\u0e25\u0e07(\u0e01\u0e25\u0e32\u0e07\u0e2a\u0e27\u0e19)\",\r\n  \"\u0e27\u0e31\u0e14\u0e21\u0e2b\u0e32\u0e18\u0e32\u0e15\u0e38\u0e27\u0e23\u0e27\u0e34\u0e2b\u0e32\u0e23 (\u0e23\u0e32\u0e0a\u0e1a\u0e38\u0e23\u0e35)\",\r\n  \"\u0e27\u0e31\u0e14\u0e21\u0e40\u0e2b\u0e22\u0e07\u0e04\u0e13\u0e4c\",\r\n  \"\u0e27\u0e31\u0e14\u0e40\u0e21\u0e37\u0e2d\u0e07\u0e21\u0e32\u0e07\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e22\u0e32\u0e19\u0e19\u0e32\u0e27\u0e32\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e22\u0e38\u0e27\u0e1e\u0e38\u0e17\u0e18\u0e34\u0e01\u0e2a\u0e21\u0e32\u0e04\u0e21\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e23\u0e32\u0e0a\u0e04\u0e24\u0e2b\u0e4c \u0e27\u0e23\u0e27\u0e34\u0e2b\u0e32\u0e23\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e23\u0e32\u0e0a\u0e32\u0e18\u0e34\u0e27\u0e32\u0e2a\u0e27\u0e34\u0e2b\u0e32\u0e23\",\r\n  \"\u0e27\u0e31\u0e14\u0e23\u0e4d\u0e48\u0e32\u0e40\u0e1b\u0e34\u0e07 (\u0e15\u0e42\u0e1b\u0e17\u0e32\u0e23\u0e32\u0e21)\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e27\u0e31\u0e07\u0e2b\u0e34\u0e19\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e27\u0e34\u0e2b\u0e32\u0e23\u0e18\u0e23\u0e23\u0e21\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e28\u0e34\u0e23\u0e34\u0e1e\u0e07\u0e29\u0e4c\u0e18\u0e23\u0e23\u0e21\u0e19\u0e34\u0e21\u0e34\u0e15\",\r\n  \"\u0e28\u0e39\u0e19\u0e22\u0e4c\u0e1b\u0e0f\u0e34\u0e1a\u0e31\u0e15\u0e34\u0e18\u0e23\u0e23\u0e21\u0e2f (\u0e40\u0e02\u0e32\u0e14\u0e34\u0e19\u0e2b\u0e19\u0e2d\u0e07\u0e41\u0e2a\u0e07)\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e2a\u0e16\u0e32\u0e19\u0e1b\u0e0f\u0e34\u0e1a\u0e31\u0e15\u0e34\u0e18\u0e23\u0e23\u0e21\u0e1e\u0e34\u0e28\u0e0d\u0e32\u0e18\u0e23\u0e23\u0e21\u0e2a\u0e16\u0e32\u0e19\",\r\n  \"\u0e27\u0e31\u0e14\u0e2a\u0e23\u0e30\u0e1a\u0e31\u0e27\",\r\n  \"\u0e27\u0e31\u0e14\u0e2a\u0e27\u0e48\u0e32\u0e07\u0e21\u0e35\u0e0a\u0e31\u0e22\",\r\n  \"\u0e27\u0e31\u0e14\u0e2a\u0e32\u0e21\u0e0a\u0e38\u0e01\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e2a\u0e32\u0e21\u0e1e\u0e23\u0e30\u0e22\u0e32\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e2a\u0e33\u0e19\u0e31\u0e01\u0e2a\u0e31\u0e19\u0e15\u0e34\u0e19\u0e34\u0e27\u0e32\u0e2a (\u0e1b\u0e23\u0e30\u0e08\u0e27\u0e1a\u0e2f)\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e2a\u0e33\u0e19\u0e31\u0e01\u0e41\u0e21\u0e48\u0e0a\u0e35\u0e44\u0e17\u0e22 \u0e28\u0e32\u0e25\u0e32\u0e22\u0e32\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e2a\u0e38\u0e17\u0e18\u0e08\u0e34\u0e19\u0e14\u0e32\",\r\n  \"\u0e27\u0e31\u0e14\u0e2a\u0e38\u0e27\u0e23\u0e23\u0e13\u0e1b\u0e23\u0e30\u0e2a\u0e34\u0e17\u0e18\u0e34\",\r\n  \"\u0e27\u0e31\u0e14\u0e2b\u0e32\u0e14\u0e43\u0e2b\u0e0d\u0e48\u0e2a\u0e34\u0e15\u0e32\u0e23\u0e32\u0e21\",\r\n  \"\u0e2d\u0e20\u0e34\u0e18\u0e23\u0e23\u0e21\u0e17\u0e32\u0e07\u0e44\u0e01\u0e25 (\u0e27\u0e31\u0e14\u0e18\u0e23\u0e23\u0e21\u0e21\u0e31\u0e07\u0e04\u0e25\u0e32\u0e23\u0e32\u0e21)\",\r\n  \"\u0e27\u0e31\u0e14\u0e2d\u0e38\u0e14\u0e21\u0e21\u0e07\u0e04\u0e25\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e2d\u0e38\u0e1a\u0e25\u0e27\u0e19\u0e32\u0e23\u0e32\u0e21\"\r\n].map(function(n){ return {name:n, address:\"\"}; });\r\nvar LOCATION_EN = {\r\n  \"\u0e2d\u0e20\u0e34\u0e18\u0e23\u0e23\u0e21\u0e42\u0e0a\u0e15\u0e34\u0e01\u0e30\u0e27\u0e34\u0e17\u0e22\u0e32\u0e25\u0e31\u0e22 (\u0e2a\u0e48\u0e27\u0e19\u0e01\u0e25\u0e32\u0e07)\":\"Abhidhamma Jotikavidyalaya (Central), MCU\",\r\n  \"\u0e27\u0e31\u0e14\u0e01\u0e25\u0e32\u0e07 (\u0e1a\u0e32\u0e07\u0e1b\u0e25\u0e32\u0e21\u0e49\u0e32)\":\"Wat Klang (Bang Pla Ma)\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e01\u0e25\u0e38\u0e48\u0e21\u0e18\u0e23\u0e23\u0e21\u0e2a\u0e23\u0e32\u0e0d\u0e23\u0e21\u0e22\u0e4c \u0e01\u0e23\u0e30\u0e17\u0e23\u0e27\u0e07\u0e01\u0e32\u0e23\u0e15\u0e48\u0e32\u0e07\u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\":\"Dhamma Saranrom Group, Ministry of Foreign Affairs\",\r\n  \"\u0e27\u0e31\u0e14\u0e40\u0e01\u0e48\u0e32\u0e42\u0e1a\u0e23\u0e32\u0e13\":\"Wat Kao Boran\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e40\u0e02\u0e32\u0e17\u0e38\u0e48\u0e07\u0e27\u0e31\u0e27\":\"Wat Khao Thung Wua Study Center\",\r\n  \"\u0e27\u0e31\u0e14\u0e40\u0e02\u0e32\u0e1e\u0e38\u0e17\u0e18\u0e42\u0e04\u0e14\u0e21\":\"Wat Khao Phutthakhodom\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e08\u0e31\u0e19\u0e17\u0e23\u0e2a\u0e38\u0e02\":\"Wat Chanthrasuk Study Center\",\r\n  \"\u0e27\u0e31\u0e14\u0e08\u0e32\u0e01\u0e41\u0e14\u0e07\":\"Wat Chak Daeng\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e40\u0e08\u0e23\u0e34\u0e0d\u0e18\u0e23\u0e23\u0e21\u0e32\u0e23\u0e32\u0e21\":\"Wat Charoen Thammaram Study Center\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e40\u0e08\u0e23\u0e34\u0e0d\u0e2a\u0e21\u0e13\u0e01\u0e34\u0e08(\u0e2b\u0e25\u0e31\u0e07\u0e28\u0e32\u0e25)\":\"Wat Charoen Samanakit Study Center (Behind the Court)\",\r\n  \"\u0e27\u0e31\u0e14\u0e15\u0e36\u0e01 (\u0e2d\u0e22\u0e38\u0e18\u0e22\u0e32)\":\"Wat Tuek (Ayutthaya)\",\r\n  \"\u0e27\u0e31\u0e14\u0e17\u0e48\u0e32\u0e21\u0e30\u0e42\u0e2d\":\"Wat Tha Ma-O\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e18\u0e23\u0e23\u0e21\u0e32\u0e21\u0e39\u0e25\u0e27\u0e23\u0e27\u0e34\u0e2b\u0e32\u0e23\":\"Wat Thammamun Worawihan Study Center\",\r\n  \"\u0e27\u0e31\u0e14\u0e19\u0e32\u0e1e\u0e23\u0e49\u0e32\u0e27\u0e40\u0e01\u0e48\u0e32\":\"Wat Na Phrao Kao\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e19\u0e34\u0e2a\u0e2a\u0e23\u0e13\u0e27\u0e19\u0e32\u0e23\u0e32\u0e21\":\"Wat Nitsaranawanaram Study Center\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e1b\u0e48\u0e32\u0e0a\u0e31\u0e22\u0e21\u0e07\u0e04\u0e25\":\"Wat Pa Chai Mongkhon Study Center\",\r\n  \"\u0e27\u0e31\u0e14\u0e1b\u0e48\u0e32\u0e18\u0e23\u0e23\u0e21\u0e42\u0e2a\u0e20\u0e13\":\"Wat Pa Thammasophon\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e1b\u0e48\u0e32\u0e27\u0e0a\u0e34\u0e23\u0e1a\u0e23\u0e23\u0e1e\u0e15\":\"Wat Pa Wachirabanphot Study Center\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e1c\u0e48\u0e2d\u0e07\u0e1e\u0e25\u0e2d\u0e22\u0e27\u0e34\u0e23\u0e34\u0e22\u0e32\u0e23\u0e32\u0e21\":\"Wat Phong Phloi Wiriyaram Study Center\",\r\n  \"\u0e27\u0e31\u0e14\u0e1e\u0e23\u0e2b\u0e21\u0e08\u0e23\u0e34\u0e22\u0e32\u0e27\u0e32\u0e2a\":\"Wat Phrom Chariyawat\",\r\n  \"\u0e27\u0e31\u0e14\u0e1e\u0e23\u0e30\u0e18\u0e32\u0e15\u0e38\u0e28\u0e23\u0e35\u0e08\u0e2d\u0e21\u0e17\u0e2d\u0e07\u0e27\u0e23\u0e27\u0e34\u0e2b\u0e32\u0e23\":\"Wat Phra That Si Chom Thong Worawihan\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e1e\u0e38\u0e17\u0e18\u0e1a\u0e39\u0e0a\u0e32\":\"Wat Phuttha Bucha Study Center\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e1e\u0e38\u0e17\u0e18\u0e2a\u0e21\u0e32\u0e04\u0e21\u0e2f \u0e27\u0e31\u0e14\u0e2b\u0e31\u0e27\u0e04\u0e39\u0e49\":\"Buddhist Association Study Center, Wat Hua Khu\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e1e\u0e38\u0e17\u0e18\u0e2a\u0e21\u0e32\u0e04\u0e21\u0e2f \u0e27\u0e31\u0e14\u0e2d\u0e23\u0e31\u0e0d\u0e0d\u0e34\u0e01\":\"Buddhist Association Study Center, Wat Aranyik\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e1e\u0e38\u0e17\u0e18\u0e2a\u0e21\u0e32\u0e04\u0e21\u0e41\u0e2b\u0e48\u0e07\u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e44\u0e17\u0e22\":\"Buddhist Association of Thailand Study Center\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e40\u0e1e\u0e25\u0e07(\u0e01\u0e25\u0e32\u0e07\u0e2a\u0e27\u0e19)\":\"Wat Phleng (Klang Suan) Study Center\",\r\n  \"\u0e27\u0e31\u0e14\u0e21\u0e2b\u0e32\u0e18\u0e32\u0e15\u0e38\u0e27\u0e23\u0e27\u0e34\u0e2b\u0e32\u0e23 (\u0e23\u0e32\u0e0a\u0e1a\u0e38\u0e23\u0e35)\":\"Wat Mahathat Worawihan (Ratchaburi)\",\r\n  \"\u0e27\u0e31\u0e14\u0e21\u0e40\u0e2b\u0e22\u0e07\u0e04\u0e13\u0e4c\":\"Wat Maheyong\",\r\n  \"\u0e27\u0e31\u0e14\u0e40\u0e21\u0e37\u0e2d\u0e07\u0e21\u0e32\u0e07\":\"Wat Mueang Mang\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e22\u0e32\u0e19\u0e19\u0e32\u0e27\u0e32\":\"Wat Yannawa Study Center\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e22\u0e38\u0e27\u0e1e\u0e38\u0e17\u0e18\u0e34\u0e01\u0e2a\u0e21\u0e32\u0e04\u0e21\":\"Young Buddhists Association Study Center\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e23\u0e32\u0e0a\u0e04\u0e24\u0e2b\u0e4c \u0e27\u0e23\u0e27\u0e34\u0e2b\u0e32\u0e23\":\"Wat Ratchakhrue Worawihan Study Center\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e23\u0e32\u0e0a\u0e32\u0e18\u0e34\u0e27\u0e32\u0e2a\u0e27\u0e34\u0e2b\u0e32\u0e23\":\"Wat Rachathiwat Wihan Study Center\",\r\n  \"\u0e27\u0e31\u0e14\u0e23\u0e4d\u0e48\u0e32\u0e40\u0e1b\u0e34\u0e07 (\u0e15\u0e42\u0e1b\u0e17\u0e32\u0e23\u0e32\u0e21)\":\"Wat Ram Poeng (Tapotaram)\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e27\u0e31\u0e07\u0e2b\u0e34\u0e19\":\"Wat Wang Hin Study Center\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e27\u0e34\u0e2b\u0e32\u0e23\u0e18\u0e23\u0e23\u0e21\":\"Wat Wihan Tham Study Center\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e28\u0e34\u0e23\u0e34\u0e1e\u0e07\u0e29\u0e4c\u0e18\u0e23\u0e23\u0e21\u0e19\u0e34\u0e21\u0e34\u0e15\":\"Wat Siriphong Thammanimit Study Center\",\r\n  \"\u0e28\u0e39\u0e19\u0e22\u0e4c\u0e1b\u0e0f\u0e34\u0e1a\u0e31\u0e15\u0e34\u0e18\u0e23\u0e23\u0e21\u0e2f (\u0e40\u0e02\u0e32\u0e14\u0e34\u0e19\u0e2b\u0e19\u0e2d\u0e07\u0e41\u0e2a\u0e07)\":\"Dhamma Practice Center (Khao Din Nong Saeng)\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e2a\u0e16\u0e32\u0e19\u0e1b\u0e0f\u0e34\u0e1a\u0e31\u0e15\u0e34\u0e18\u0e23\u0e23\u0e21\u0e1e\u0e34\u0e28\u0e0d\u0e32\u0e18\u0e23\u0e23\u0e21\u0e2a\u0e16\u0e32\u0e19\":\"Phitsaya Dhamma Practice Center Study Center\",\r\n  \"\u0e27\u0e31\u0e14\u0e2a\u0e23\u0e30\u0e1a\u0e31\u0e27\":\"Wat Sa Bua\",\r\n  \"\u0e27\u0e31\u0e14\u0e2a\u0e27\u0e48\u0e32\u0e07\u0e21\u0e35\u0e0a\u0e31\u0e22\":\"Wat Sawang Mi Chai\",\r\n  \"\u0e27\u0e31\u0e14\u0e2a\u0e32\u0e21\u0e0a\u0e38\u0e01\":\"Wat Sam Chuk\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e2a\u0e32\u0e21\u0e1e\u0e23\u0e30\u0e22\u0e32\":\"Wat Sam Phraya Study Center\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e2a\u0e33\u0e19\u0e31\u0e01\u0e2a\u0e31\u0e19\u0e15\u0e34\u0e19\u0e34\u0e27\u0e32\u0e2a (\u0e1b\u0e23\u0e30\u0e08\u0e27\u0e1a\u0e2f)\":\"Santiniwat Institute Study Center (Prachuap Khiri Khan)\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e2a\u0e33\u0e19\u0e31\u0e01\u0e41\u0e21\u0e48\u0e0a\u0e35\u0e44\u0e17\u0e22 \u0e28\u0e32\u0e25\u0e32\u0e22\u0e32\":\"Thai Nuns Institute Study Center, Salaya\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e2a\u0e38\u0e17\u0e18\u0e08\u0e34\u0e19\u0e14\u0e32\":\"Wat Sutthachinda Study Center\",\r\n  \"\u0e27\u0e31\u0e14\u0e2a\u0e38\u0e27\u0e23\u0e23\u0e13\u0e1b\u0e23\u0e30\u0e2a\u0e34\u0e17\u0e18\u0e34\":\"Wat Suwan Prasit\",\r\n  \"\u0e27\u0e31\u0e14\u0e2b\u0e32\u0e14\u0e43\u0e2b\u0e0d\u0e48\u0e2a\u0e34\u0e15\u0e32\u0e23\u0e32\u0e21\":\"Wat Hat Yai Sitaram\",\r\n  \"\u0e2d\u0e20\u0e34\u0e18\u0e23\u0e23\u0e21\u0e17\u0e32\u0e07\u0e44\u0e01\u0e25 (\u0e27\u0e31\u0e14\u0e18\u0e23\u0e23\u0e21\u0e21\u0e31\u0e07\u0e04\u0e25\u0e32\u0e23\u0e32\u0e21)\":\"Distance Learning (Wat Thammangkhalaram)\",\r\n  \"\u0e27\u0e31\u0e14\u0e2d\u0e38\u0e14\u0e21\u0e21\u0e07\u0e04\u0e25\":\"Wat Udom Mongkhon\",\r\n  \"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2f \u0e27\u0e31\u0e14\u0e2d\u0e38\u0e1a\u0e25\u0e27\u0e19\u0e32\u0e23\u0e32\u0e21\":\"Wat Ubon Wanaram Study Center\"\r\n};\r\nfunction locDisplayName(thName){\r\n  return (LANG===\"en\" && LOCATION_EN[thName]) ? LOCATION_EN[thName] : thName;\r\n}\r\nfunction renderServiceLocations(items){\r\n  serviceLocationsData = items || [];\r\n  var sel = document.getElementById(\"serviceLocation\");\r\n  if(!serviceLocationsData.length){\r\n    sel.innerHTML = '<option value=\"\">'+T(\"selServiceNone\")+'<\/option>';\r\n    return;\r\n  }\r\n  var html = '<option value=\"\">'+T(\"selService\")+'<\/option>';\r\n  serviceLocationsData.forEach(function(item){\r\n    html += '<option value=\"'+esc(item.name)+'\">'+esc(locDisplayName(item.name))+'<\/option>';\r\n  });\r\n  sel.innerHTML = html;\r\n}\r\nvar usingFallbackLocations = false;\r\nvar LOCATIONS_TIMEOUT_MS = 15000;   \/\/ GAS cold start \u0e40\u0e01\u0e34\u0e19 8 \u0e27\u0e34\u0e44\u0e14\u0e49\u0e1a\u0e48\u0e2d\u0e22\r\nfunction loadServiceLocations(isRetry){\r\n  var cbName = \"locCb_\" + Date.now() + \"_\" + Math.floor(Math.random()*100000);\r\n  var scriptEl = null;\r\n  var timer = setTimeout(function(){ cleanup(); onFail(); }, LOCATIONS_TIMEOUT_MS);\r\n  function cleanup(){\r\n    clearTimeout(timer);\r\n    delete window[cbName];\r\n    if(scriptEl && scriptEl.parentNode) scriptEl.parentNode.removeChild(scriptEl);\r\n  }\r\n  \/\/ \u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e2a\u0e33\u0e23\u0e2d\u0e07\u0e1d\u0e31\u0e07\u0e43\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e40\u0e27\u0e47\u0e1a\u0e2d\u0e32\u0e08\u0e44\u0e21\u0e48\u0e15\u0e23\u0e07\u0e01\u0e31\u0e1a\u0e0a\u0e35\u0e15 backend \u0e08\u0e30\u0e1b\u0e0f\u0e34\u0e40\u0e2a\u0e18\u0e2b\u0e25\u0e31\u0e07\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e23\u0e39\u0e1b\u0e40\u0e2a\u0e23\u0e47\u0e08\u0e41\u0e25\u0e49\u0e27\r\n  \/\/ \u0e08\u0e36\u0e07\u0e25\u0e2d\u0e07\u0e14\u0e36\u0e07\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e08\u0e23\u0e34\u0e07\u0e0b\u0e49\u0e33\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07\u0e43\u0e19\u0e40\u0e1a\u0e37\u0e49\u0e2d\u0e07\u0e2b\u0e25\u0e31\u0e07\r\n  function onFail(){\r\n    if(isRetry) return;                      \/\/ \u0e43\u0e0a\u0e49\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e2a\u0e33\u0e23\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e41\u0e2a\u0e14\u0e07\u0e2d\u0e22\u0e39\u0e48\u0e15\u0e48\u0e2d\u0e44\u0e1b\r\n    usingFallbackLocations = true;\r\n    renderServiceLocations(FALLBACK_LOCATIONS);\r\n    setTimeout(function(){ loadServiceLocations(true); }, 5000);\r\n  }\r\n  window[cbName] = function(data){\r\n    cleanup();\r\n    var items = (data && data.ok && data.items && data.items.length) ? data.items : null;\r\n    if(!items){ onFail(); return; }\r\n    var picked = document.getElementById(\"serviceLocation\").value;\r\n    usingFallbackLocations = false;\r\n    renderServiceLocations(items);\r\n    if(picked) document.getElementById(\"serviceLocation\").value = picked;   \/\/ \u0e27\u0e48\u0e32\u0e07\u0e40\u0e2d\u0e07\u0e16\u0e49\u0e32\u0e0a\u0e37\u0e48\u0e2d\u0e19\u0e31\u0e49\u0e19\u0e44\u0e21\u0e48\u0e21\u0e35\u0e43\u0e19\u0e0a\u0e35\u0e15\u0e41\u0e25\u0e49\u0e27\r\n  };\r\n  scriptEl = document.createElement(\"script\");\r\n  scriptEl.src = GAS_URL + \"?action=getLocations&callback=\" + encodeURIComponent(cbName);\r\n  scriptEl.onerror = function(){ cleanup(); onFail(); };\r\n  document.body.appendChild(scriptEl);\r\n}\r\nloadServiceLocations();\r\ndocument.getElementById(\"serviceLocation\").addEventListener(\"change\",function(){\r\n  var addrEl = document.getElementById(\"serviceLocationAddr\");\r\n  var picked = this.value;\r\n  if(!picked){ addrEl.style.display=\"none\"; return; }\r\n  for(var i=0; i<serviceLocationsData.length; i++){\r\n    if(serviceLocationsData[i].name === picked){\r\n      var addr = serviceLocationsData[i].address;\r\n      addrEl.style.display = addr ? \"block\" : \"none\";\r\n      if(addr) addrEl.textContent = \"\ud83d\udccd \" + addr;\r\n      return;\r\n    }\r\n  }\r\n  addrEl.style.display = \"none\";\r\n});\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n\/\/ \u0e23\u0e39\u0e1b\u0e20\u0e32\u0e1e\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\nvar photoBase64 = \"\";\r\nvar activeSubmissionId = \"\";\r\n\/\/ \u0e42\u0e2b\u0e21\u0e14\u0e41\u0e01\u0e49\u0e44\u0e02\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e40\u0e04\u0e22\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e44\u0e27\u0e49 (\u0e21\u0e32\u0e08\u0e32\u0e01\u0e1b\u0e38\u0e48\u0e21 \"\u0e41\u0e01\u0e49\u0e44\u0e02\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\" \u0e43\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e2a\u0e16\u0e32\u0e19\u0e30)\r\n\/\/ editAuth \u0e40\u0e01\u0e47\u0e1a\u0e23\u0e2b\u0e31\u0e2a+\u0e40\u0e1a\u0e2d\u0e23\u0e4c\u0e17\u0e49\u0e32\u0e22\u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e15\u0e31\u0e27\u0e15\u0e19\u0e44\u0e27\u0e49 \u0e43\u0e0a\u0e49\u0e2a\u0e48\u0e07\u0e0b\u0e49\u0e33\u0e15\u0e2d\u0e19\u0e01\u0e14\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e08\u0e23\u0e34\u0e07\r\nvar isEditMode = false;\r\nvar editAuth = null;\r\nfunction showFileReadError(){\r\n  Swal.fire({icon:\"error\",title:T(\"photoReadFail\"),text:T(\"photoReadFailMsg\"),confirmButtonColor:\"#AD4970\"});\r\n}\r\nfunction createSubmissionId(){\r\n  if(window.crypto && typeof window.crypto.randomUUID === \"function\") return window.crypto.randomUUID();\r\n  return \"reg_\" + Date.now().toString(36) + \"_\" + Math.random().toString(36).slice(2) + Math.random().toString(36).slice(2);\r\n}\r\nfunction onPhotoChange(e){\r\n  var file = e.target.files[0];\r\n  if(!file) return;\r\n  \/\/ \u0e25\u0e49\u0e32\u0e07\u0e2d\u0e35\u0e01\u0e0a\u0e48\u0e2d\u0e07\u0e2b\u0e19\u0e36\u0e48\u0e07 (\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e44\u0e1f\u0e25\u0e4c \/ \u0e16\u0e48\u0e32\u0e22\u0e20\u0e32\u0e1e) \u0e43\u0e2b\u0e49\u0e40\u0e2b\u0e25\u0e37\u0e2d\u0e41\u0e2b\u0e25\u0e48\u0e07\u0e40\u0e14\u0e35\u0e22\u0e27\r\n  var otherPhoto = document.getElementById(e.target.id === \"photoInput\" ? \"photoCameraInput\" : \"photoInput\");\r\n  if(otherPhoto) otherPhoto.value = \"\";\r\n  if(!\/^image\\\/(jpeg|png)$\/.test(file.type)){\r\n    e.target.value=\"\";\r\n    Swal.fire({icon:\"warning\",title:T(\"photoWrongType\"),text:T(\"photoWrongTypeMsg\"),confirmButtonColor:\"#AD4970\"});\r\n    return;\r\n  }\r\n  if(file.size > 10*1024*1024){\r\n    e.target.value=\"\";\r\n    Swal.fire({icon:\"warning\",title:T(\"photoTooBig\"),text:T(\"photoTooBigMsg\"),confirmButtonColor:\"#AD4970\"});\r\n    return;\r\n  }\r\n  var reader = new FileReader();\r\n  var input  = e.target;\r\n  reader.onerror = function(){ input.value=\"\"; showFileReadError(); };\r\n  reader.onload = function(ev){\r\n    var img = new Image();\r\n    \/\/ \u0e44\u0e1f\u0e25\u0e4c\u0e19\u0e32\u0e21\u0e2a\u0e01\u0e38\u0e25\u0e16\u0e39\u0e01\u0e41\u0e15\u0e48\u0e40\u0e19\u0e37\u0e49\u0e2d\u0e43\u0e19\u0e40\u0e2a\u0e35\u0e22 \u0e08\u0e30\u0e44\u0e21\u0e48\u0e40\u0e02\u0e49\u0e32 onload \u0e40\u0e25\u0e22 \u0e15\u0e49\u0e2d\u0e07\u0e41\u0e08\u0e49\u0e07\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49 \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e40\u0e07\u0e35\u0e22\u0e1a\r\n    img.onerror = function(){ input.value=\"\"; showFileReadError(); };\r\n    img.onload = function(){\r\n      var mW=1200, mH=1600, ratio=Math.min(mW\/img.width, mH\/img.height, 1);\r\n      var w=Math.round(img.width*ratio), h=Math.round(img.height*ratio);\r\n      var canvas = document.createElement(\"canvas\");\r\n      canvas.width=w; canvas.height=h;\r\n      var ctx = canvas.getContext(\"2d\");\r\n      ctx.fillStyle=\"#fff\"; ctx.fillRect(0,0,w,h);\r\n      ctx.drawImage(img,0,0,w,h);\r\n      photoBase64 = canvas.toDataURL(\"image\/jpeg\",0.88);\r\n      uploadedUrls.photo = \"\"; uploadedSrc.photo = \"\";   \/\/ \u0e23\u0e39\u0e1b\u0e43\u0e2b\u0e21\u0e48 \u0e15\u0e49\u0e2d\u0e07\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e43\u0e2b\u0e21\u0e48\r\n      document.getElementById(\"photoImg\").src = photoBase64;\r\n      document.getElementById(\"photoImg\").style.display = \"block\";\r\n      document.getElementById(\"photoPlaceholder\").style.display = \"none\";\r\n      document.getElementById(\"btnPhotoRemove\").hidden = false;\r\n      clearErrorFor(document.getElementById(\"photoInput\"));\r\n      updateUploadSummary();\r\n    };\r\n    img.src = ev.target.result;\r\n  };\r\n  reader.readAsDataURL(file);\r\n}\r\nfunction removePhoto(){\r\n  photoBase64=\"\"; uploadedUrls.photo=\"\"; uploadedSrc.photo=\"\";\r\n  var input=document.getElementById(\"photoInput\"), img=document.getElementById(\"photoImg\");\r\n  var camInput=document.getElementById(\"photoCameraInput\");\r\n  input.value=\"\"; if(camInput) camInput.value=\"\";   \/\/ \u0e15\u0e49\u0e2d\u0e07\u0e25\u0e49\u0e32\u0e07\u0e17\u0e31\u0e49\u0e07\u0e04\u0e39\u0e48 \u0e44\u0e21\u0e48\u0e07\u0e31\u0e49\u0e19\u0e40\u0e25\u0e37\u0e2d\u0e01\/\u0e16\u0e48\u0e32\u0e22\u0e23\u0e39\u0e1b\u0e40\u0e14\u0e34\u0e21\u0e0b\u0e49\u0e33\u0e41\u0e25\u0e49\u0e27 change \u0e44\u0e21\u0e48\u0e17\u0e33\u0e07\u0e32\u0e19\r\n  img.src=\"\"; img.style.display=\"none\";\r\n  document.getElementById(\"photoPlaceholder\").style.display=\"\";\r\n  document.getElementById(\"btnPhotoRemove\").hidden=true;\r\n  updateUploadSummary();\r\n}\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n\/\/ \u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e15\u0e48\u0e32\u0e07\u0e0a\u0e32\u0e15\u0e34\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\nvar passportBase64 = \"\";\r\nvar visaExpiryBase64 = \"\";\r\nvar tm30Base64 = \"\";\r\nfunction docUI(kind){\r\n  var prefix = kind === \"visaExpiry\" ? \"visaExpiry\" : kind;\r\n  return {\r\n    input:document.getElementById(prefix+\"Input\"),\r\n    camera:document.getElementById(prefix+\"CameraInput\"),\r\n    img:document.getElementById(prefix+\"Img\"),\r\n    placeholder:document.getElementById(prefix+\"Placeholder\"),\r\n    name:document.getElementById(prefix+\"Name\"),\r\n    remove:document.getElementById(kind===\"passport\"?\"btnPassportRemove\":kind===\"visaExpiry\"?\"btnVisaExpiryRemove\":\"btnTM30Remove\"),\r\n    tile:document.getElementById(prefix+\"Tile\")\r\n  };\r\n}\r\nfunction onDocChange(e, kind){\r\n  var file = e.target.files[0];\r\n  if(!file) return;\r\n  \/\/ \u0e25\u0e49\u0e32\u0e07\u0e2d\u0e35\u0e01\u0e0a\u0e48\u0e2d\u0e07\u0e2b\u0e19\u0e36\u0e48\u0e07 (\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e44\u0e1f\u0e25\u0e4c \/ \u0e16\u0e48\u0e32\u0e22\u0e20\u0e32\u0e1e) \u0e43\u0e2b\u0e49\u0e40\u0e2b\u0e25\u0e37\u0e2d\u0e41\u0e2b\u0e25\u0e48\u0e07\u0e40\u0e14\u0e35\u0e22\u0e27\r\n  var du = docUI(kind);\r\n  var otherDoc = (e.target === du.camera) ? du.input : du.camera;\r\n  if(otherDoc) otherDoc.value = \"\";\r\n  if(!\/^image\\\/(jpeg|png)$\/.test(file.type)){\r\n    e.target.value=\"\";\r\n    Swal.fire({icon:\"warning\",title:T(\"photoWrongType\"),text:T(\"photoWrongTypeMsg\"),confirmButtonColor:\"#AD4970\"});\r\n    return;\r\n  }\r\n  if(file.size > 10*1024*1024){\r\n    e.target.value=\"\";\r\n    Swal.fire({icon:\"warning\",title:T(\"photoTooBig\"),text:T(\"photoTooBigMsg\"),confirmButtonColor:\"#AD4970\"});\r\n    return;\r\n  }\r\n  var reader = new FileReader();\r\n  var input  = e.target;\r\n  reader.onerror = function(){ input.value=\"\"; showFileReadError(); };\r\n  reader.onload = function(ev){\r\n    if(kind === \"passport\") passportBase64 = ev.target.result;\r\n    else if(kind === \"visaExpiry\") visaExpiryBase64 = ev.target.result;\r\n    else tm30Base64 = ev.target.result;\r\n    uploadedUrls[kind] = \"\"; uploadedSrc[kind] = \"\";   \/\/ \u0e44\u0e1f\u0e25\u0e4c\u0e43\u0e2b\u0e21\u0e48 \u0e15\u0e49\u0e2d\u0e07\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e43\u0e2b\u0e21\u0e48\r\n    var ui=docUI(kind);\r\n    ui.img.src=ev.target.result; ui.img.style.display=\"block\";\r\n    ui.placeholder.style.display=\"none\";\r\n    ui.name.textContent=\"\u2713 \"+file.name; ui.name.style.display=\"block\";\r\n    ui.remove.hidden=false;\r\n    clearErrorFor(ui.input);\r\n    updateUploadSummary();\r\n  };\r\n  reader.readAsDataURL(file);\r\n}\r\nfunction removeDoc(kind){\r\n  if(kind === \"passport\") passportBase64=\"\";\r\n  else if(kind === \"visaExpiry\") visaExpiryBase64=\"\";\r\n  else tm30Base64=\"\";\r\n  uploadedUrls[kind] = \"\"; uploadedSrc[kind] = \"\";\r\n  var ui=docUI(kind);\r\n  ui.input.value=\"\"; if(ui.camera) ui.camera.value=\"\";   \/\/ \u0e25\u0e49\u0e32\u0e07\u0e17\u0e31\u0e49\u0e07\u0e04\u0e39\u0e48 \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e16\u0e48\u0e32\u0e22\/\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e44\u0e1f\u0e25\u0e4c\u0e40\u0e14\u0e34\u0e21\u0e0b\u0e49\u0e33\u0e44\u0e14\u0e49\r\n  ui.img.src=\"\"; ui.img.style.display=\"none\";\r\n  ui.placeholder.style.display=\"\";\r\n  ui.name.textContent=\"\"; ui.name.style.display=\"none\";\r\n  ui.remove.hidden=true;\r\n  clearErrorFor(ui.input);\r\n  updateUploadSummary();\r\n}\r\nfunction updateUploadSummary(){\r\n  var values=LANG===\"en\"?[photoBase64,passportBase64,visaExpiryBase64,tm30Base64]:[photoBase64];\r\n  var count=values.filter(function(v){return !!v;}).length;\r\n  var total=values.length;\r\n  var summary=document.getElementById(\"uploadSummary\");\r\n  var countEl=document.getElementById(\"uploadSummaryCount\");\r\n  var bar=document.getElementById(\"uploadSummaryBar\");\r\n  if(countEl) countEl.textContent=LANG===\"en\"?(count+\" of \"+total+\" uploaded\"):(\"\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e41\u0e25\u0e49\u0e27 \"+count+\" \u0e08\u0e32\u0e01 \"+total);\r\n  if(bar) bar.style.width=Math.round((count\/total)*100)+\"%\";\r\n  if(summary) summary.classList.toggle(\"complete\",count===total);\r\n}\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n\/\/ ImgBB Key\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\nvar IMGBB_KEY = \"398be2705548b93db3327df0ff1f1baa\";\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n\/\/ Modal \u0e2a\u0e23\u0e38\u0e1b\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e01\u0e48\u0e2d\u0e19\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\nfunction fieldDisplayValue(id){\r\n  var el=document.getElementById(id);\r\n  if(!el) return \"\";\r\n  if(el.tagName===\"SELECT\" && el.selectedIndex>=0){\r\n    if(!el.value) return \"\";\r\n    return (el.options[el.selectedIndex].textContent||\"\").trim();\r\n  }\r\n  return (el.value||\"\").trim();\r\n}\r\nfunction displayBirthdate(value){\r\n  if(LANG!==\"en\" || !value) return value;\r\n  var parts=value.split(\"\/\");\r\n  if(parts.length!==3) return value;\r\n  var year=parseInt(parts[2],10);\r\n  if(year>2400) year-=543;\r\n  return parts[0]+\"\/\"+parts[1]+\"\/\"+year;\r\n}\r\nfunction buildReviewHTML(){\r\n  var prefix    = document.getElementById(\"prefix\").value;\r\n  var prefixDisplay = fieldDisplayValue(\"prefix\");\r\n  var firstName = document.getElementById(\"firstName\").value.trim();\r\n  var lastName  = document.getElementById(\"lastName\").value.trim();\r\n  var temple    = (document.getElementById(\"temple\") && document.getElementById(\"temple\").value.trim()) || \"\";\r\n  var birthdate = displayBirthdate(document.getElementById(\"birthdate\").value);\r\n  var phone     = document.getElementById(\"phone\").value.trim();\r\n  var education = fieldDisplayValue(\"education\");\r\n  var pali      = fieldDisplayValue(\"pali\");\r\n  var dhamma    = fieldDisplayValue(\"dhamma\");\r\n  var address   = document.getElementById(\"address\").value.trim();\r\n  var soi       = document.getElementById(\"soi\").value.trim();\r\n  var sub       = fieldDisplayValue(\"subdistrict\");\r\n  var dist      = fieldDisplayValue(\"district\");\r\n  var prov      = fieldDisplayValue(\"province\");\r\n  var postal    = document.getElementById(\"postalCode\").value.trim();\r\n  var service   = locDisplayName(document.getElementById(\"serviceLocation\").value);\r\n  var fullName  = (prefixDisplay + \" \" + firstName + (lastName?\" \"+lastName:\"\")).trim();\r\n  var isLang = LANG === \"en\";\r\n  var addrFull  = isLang\r\n    ? [address,soi,sub,dist,prov,postal].filter(function(v){return !!v;}).join(\", \")\r\n    : address + (soi?\" \"+soi:\"\") + \" \u0e15.\" + sub + \" \u0e2d.\" + dist + \" \u0e08.\" + prov + \" \" + postal;\r\n  var L = function(th,en){ return isLang ? en : th; };\r\n  var html = \"\";\r\n  \/\/ \u0e23\u0e39\u0e1b\u0e16\u0e48\u0e32\u0e22\r\n  if(photoBase64){\r\n    html += '<div class=\"review-photo-wrap\"><img decoding=\"async\" src=\"'+photoBase64+'\" alt=\"'+L(\"\u0e23\u0e39\u0e1b\u0e16\u0e48\u0e32\u0e22\",\"Photo\")+'\"><\/div>';\r\n  }\r\n  \/\/ \u0e2a\u0e16\u0e32\u0e19\u0e30\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\r\n  html += '<div class=\"review-section-title\">'+L(\"\u0e23\u0e39\u0e1b\u0e20\u0e32\u0e1e\",\"Photos and Required Documents\")+'<\/div>';\r\n  var docs = isLang\r\n    ? [[\"Front-facing photo\",photoBase64],[\"Passport first page\",passportBase64],[\"Visa expiry page\",visaExpiryBase64],[\"TM.30\",tm30Base64]]\r\n    : [[\"\u0e23\u0e39\u0e1b\u0e16\u0e48\u0e32\u0e22\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e23\u0e07\",photoBase64]];\r\n  html += '<div class=\"review-doc-list\">';\r\n  docs.forEach(function(item){\r\n    var ok=!!item[1];\r\n    html += '<div class=\"review-doc-item\"><span>'+esc2(item[0])+'<\/span><span class=\"'+(ok?\"review-doc-ok\":\"review-doc-missing\")+'\">'+(ok?L(\"\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e41\u0e25\u0e49\u0e27 \u2713\",\"Uploaded \u2713\"):L(\"\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e21\u0e35\u0e44\u0e1f\u0e25\u0e4c\",\"Missing\"))+'<\/span><\/div>';\r\n  });\r\n  html += '<\/div>';\r\n  \/\/ \u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2a\u0e48\u0e27\u0e19\u0e15\u0e31\u0e27\r\n  html += '<div class=\"review-section-title\">'+L(\"\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2a\u0e48\u0e27\u0e19\u0e15\u0e31\u0e27\",\"Personal Information\")+'<\/div>';\r\n  html += rvRow(L(\"\u0e0a\u0e37\u0e48\u0e2d-\u0e19\u0e32\u0e21\u0e2a\u0e01\u0e38\u0e25\",\"Full Name\"), fullName);\r\n  if(isOrdained(prefix) && temple) html += rvRow(L(\"\u0e27\u0e31\u0e14\/\u0e2a\u0e33\u0e19\u0e31\u0e01\",\"Temple\"), temple);\r\n  html += rvRow(L(\"\u0e27\u0e31\u0e19\u0e40\u0e14\u0e37\u0e2d\u0e19\u0e1b\u0e35\u0e40\u0e01\u0e34\u0e14\",\"Date of Birth\"), birthdate);\r\n  html += rvRow(L(\"\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c\",\"Phone\"), phone);\r\n  if(education) html += rvRow(L(\"\u0e27\u0e38\u0e12\u0e34\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32\",\"Education\"), education);\r\n  if(pali)      html += rvRow(L(\"\u0e40\u0e1b\u0e23\u0e35\u0e22\u0e0d\u0e18\u0e23\u0e23\u0e21\",\"Pali\"), pali);\r\n  if(dhamma)    html += rvRow(L(\"\u0e19\u0e31\u0e01\u0e18\u0e23\u0e23\u0e21\",\"Dhamma\"), dhamma);\r\n  \/\/ \u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\r\n  html += '<div class=\"review-section-title\">'+L(\"\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\",\"Address\")+'<\/div>';\r\n  html += rvRow(L(\"\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e1b\u0e31\u0e08\u0e08\u0e38\u0e1a\u0e31\u0e19\",\"Current Address\"), addrFull);\r\n  \/\/ \u0e2b\u0e19\u0e48\u0e27\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\r\n  html += '<div class=\"review-section-title\">'+L(\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\/\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\",\"Study Center Near You\")+'<\/div>';\r\n  html += rvRow(L(\"\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\",\"Study Center\"), service || L(\"\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e40\u0e25\u0e37\u0e2d\u0e01\",\"Not selected\"));\r\n  \/\/ \u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e40\u0e15\u0e37\u0e2d\u0e19\r\n  html += '<div style=\"margin-top:16px;padding:12px 14px;background:#fff8e8;border:1px solid #f5d67a;border-radius:10px;font-size:13.5px;color:#7a5a00;line-height:1.7;\">';\r\n  html += L(\"\u26a0\ufe0f \u0e01\u0e23\u0e38\u0e13\u0e32\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e43\u0e2b\u0e49\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e48\u0e2d\u0e19\u0e01\u0e14\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19 \u0e2b\u0e32\u0e01\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07 \u0e01\u0e23\u0e38\u0e13\u0e32\u0e01\u0e14\u0e1b\u0e38\u0e48\u0e21 <strong>\u0e41\u0e01\u0e49\u0e44\u0e02<\/strong>\",\r\n            \"\u26a0\ufe0f Please verify all information before confirming. Press <strong>Edit<\/strong> to make changes.\");\r\n  html += '<\/div>';\r\n  return html;\r\n}\r\nfunction rvRow(label, value){\r\n  return '<div class=\"review-row\"><div class=\"review-lbl\">'+esc2(label)+'<\/div><div class=\"review-val\">'+esc2(value||\"\u2014\")+'<\/div><\/div>';\r\n}\r\nfunction showReviewModal(){\r\n  document.getElementById(\"reviewModalBody\").innerHTML = buildReviewHTML();\r\n  \/\/ \u0e42\u0e2b\u0e21\u0e14\u0e41\u0e01\u0e49\u0e44\u0e02: \u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e04\u0e33\u0e43\u0e19\u0e1b\u0e38\u0e48\u0e21\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e44\u0e21\u0e48\u0e43\u0e2b\u0e49\u0e1e\u0e39\u0e14\u0e27\u0e48\u0e32 \"\u0e2a\u0e21\u0e31\u0e04\u0e23\" \u2014 \u0e20\u0e32\u0e29\u0e32\u0e2d\u0e37\u0e48\u0e19\u0e01\u0e25\u0e31\u0e1a\u0e40\u0e1b\u0e47\u0e19\u0e04\u0e48\u0e32\u0e40\u0e14\u0e34\u0e21\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e2a\u0e25\u0e31\u0e1a\u0e20\u0e32\u0e29\u0e32\/\u0e25\u0e49\u0e32\u0e07\u0e1f\u0e2d\u0e23\u0e4c\u0e21\r\n  document.getElementById(\"rvConfirm\").textContent = isEditMode\r\n    ? (LANG===\"en\" ? \"Confirm Changes\" : \"\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02\")\r\n    : T(\"rvConfirm\");\r\n  var overlay = document.getElementById(\"reviewOverlay\");\r\n  lastModalFocus = document.activeElement;\r\n  overlay.classList.add(\"open\");\r\n  overlay.scrollTop = 0;\r\n  document.getElementById(\"btnReviewConfirm\").disabled = false;\r\n  setTimeout(function(){ document.getElementById(\"btnReviewBack\").focus(); },0);\r\n}\r\nvar lastModalFocus = null;\r\nfunction closeReviewModal(returnFocus){\r\n  document.getElementById(\"reviewOverlay\").classList.remove(\"open\");\r\n  if(returnFocus !== false && lastModalFocus && lastModalFocus.focus) lastModalFocus.focus();\r\n}\r\ndocument.getElementById(\"btnReviewBack\").addEventListener(\"click\", function(){\r\n  closeReviewModal();\r\n});\r\n\/\/ \u0e1b\u0e34\u0e14 modal \u0e40\u0e21\u0e37\u0e48\u0e2d\u0e04\u0e25\u0e34\u0e01\u0e1e\u0e37\u0e49\u0e19\u0e2b\u0e25\u0e31\u0e07\r\ndocument.getElementById(\"reviewOverlay\").addEventListener(\"click\", function(e){\r\n  if(e.target === this) closeReviewModal();\r\n});\r\ndocument.getElementById(\"reviewOverlay\").addEventListener(\"keydown\", function(e){\r\n  if(e.key === \"Escape\"){ e.preventDefault(); closeReviewModal(); return; }\r\n  if(e.key !== \"Tab\") return;\r\n  var items=this.querySelectorAll('button:not([disabled]),[href],input:not([disabled]),select:not([disabled]),[tabindex]:not([tabindex=\"-1\"])');\r\n  if(!items.length) return;\r\n  var first=items[0], last=items[items.length-1];\r\n  if(e.shiftKey && document.activeElement===first){ e.preventDefault(); last.focus(); }\r\n  else if(!e.shiftKey && document.activeElement===last){ e.preventDefault(); first.focus(); }\r\n});\r\n\/\/ \u0e1b\u0e38\u0e48\u0e21\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e43\u0e19 modal\r\ndocument.getElementById(\"btnReviewConfirm\").addEventListener(\"click\", function(){\r\n  this.disabled = true;\r\n  closeReviewModal(false);\r\n  startUploadAndSubmit();\r\n});\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n\/\/ SUBMIT \u2014 \u0e01\u0e14 \"\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e01\u0e48\u0e2d\u0e19\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\"\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\ndocument.getElementById(\"regForm\").addEventListener(\"submit\", function(e){\r\n  e.preventDefault();\r\n  if(!validate()) return;\r\n  showReviewModal();\r\n});\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n\/\/ \u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e41\u0e25\u0e30\u0e2a\u0e48\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e08\u0e23\u0e34\u0e07 (\u0e40\u0e23\u0e35\u0e22\u0e01\u0e2b\u0e25\u0e31\u0e07 modal \u0e22\u0e37\u0e19\u0e22\u0e31\u0e19)\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\nfunction startUploadAndSubmit(){\r\n  var btn = document.getElementById(\"submitBtn\");\r\n  if(!activeSubmissionId) activeSubmissionId = createSubmissionId();\r\n  btn.disabled = true;\r\n  Swal.fire({\r\n    title: T(\"uploading1\"),\r\n    html: T(\"uploading1sub\"),\r\n    allowOutsideClick: false,\r\n    didOpen: function(){ Swal.showLoading(); }\r\n  });\r\n  var tempFilename = \"abj_photo_\" + Date.now();\r\n  \/\/ \u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e15\u0e48\u0e32\u0e07\u0e0a\u0e32\u0e15\u0e34\u0e02\u0e2d\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e1f\u0e2d\u0e23\u0e4c\u0e21\u0e20\u0e32\u0e29\u0e32\u0e2d\u0e31\u0e07\u0e01\u0e24\u0e29 \u2014 \u0e16\u0e49\u0e32\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e44\u0e27\u0e49\u0e41\u0e25\u0e49\u0e27\u0e2a\u0e25\u0e31\u0e1a\u0e01\u0e25\u0e31\u0e1a\u0e40\u0e1b\u0e47\u0e19\u0e44\u0e17\u0e22\r\n  \/\/ \u0e15\u0e49\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e2a\u0e48\u0e07\u0e02\u0e36\u0e49\u0e19\u0e44\u0e1b (\u0e44\u0e1f\u0e25\u0e4c\u0e22\u0e31\u0e07\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e40\u0e27\u0e47\u0e1a \u0e2a\u0e25\u0e31\u0e1a\u0e01\u0e25\u0e31\u0e1a\u0e40\u0e1b\u0e47\u0e19 EN \u0e41\u0e25\u0e49\u0e27\u0e43\u0e0a\u0e49\u0e15\u0e48\u0e2d\u0e44\u0e14\u0e49)\r\n  \/\/ \u0e42\u0e2b\u0e21\u0e14\u0e41\u0e01\u0e49\u0e44\u0e02\u0e15\u0e49\u0e2d\u0e07\u0e2a\u0e48\u0e07\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e40\u0e14\u0e34\u0e21\u0e01\u0e25\u0e31\u0e1a\u0e44\u0e1b\u0e14\u0e49\u0e27\u0e22\u0e40\u0e2a\u0e21\u0e2d \u0e44\u0e21\u0e48\u0e27\u0e48\u0e32\u0e2b\u0e19\u0e49\u0e32\u0e40\u0e27\u0e47\u0e1a\u0e01\u0e33\u0e25\u0e31\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e20\u0e32\u0e29\u0e32\u0e43\u0e14\r\n  \/\/ \u0e44\u0e21\u0e48\u0e07\u0e31\u0e49\u0e19\u0e01\u0e14\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e15\u0e2d\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e40\u0e27\u0e47\u0e1a\u0e40\u0e1b\u0e47\u0e19\u0e20\u0e32\u0e29\u0e32\u0e44\u0e17\u0e22\u0e08\u0e30\u0e40\u0e02\u0e35\u0e22\u0e19\u0e17\u0e31\u0e1a\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23 (V\/W\/Z) \u0e43\u0e2b\u0e49\u0e27\u0e48\u0e32\u0e07\r\n  var wantForeignDocs = LANG === \"en\" || isEditMode;\r\n  var uploads = [ cachedUpload(\"photo\", photoBase64, tempFilename + \"_photo\") ];\r\n  uploads.push( wantForeignDocs ? cachedUpload(\"passport\",   passportBase64,   tempFilename + \"_passport_first_page\") : Promise.resolve(\"\") );\r\n  uploads.push( wantForeignDocs ? cachedUpload(\"visaExpiry\", visaExpiryBase64, tempFilename + \"_visa_expiry_page\")   : Promise.resolve(\"\") );\r\n  uploads.push( wantForeignDocs ? cachedUpload(\"tm30\",       tm30Base64,       tempFilename + \"_tm30\")               : Promise.resolve(\"\") );\r\n  Promise.all(uploads)\r\n    .then(function(urls){\r\n      Swal.fire({\r\n        title: T(\"uploading2\"),\r\n        html: T(\"uploading2sub\"),\r\n        allowOutsideClick: false,\r\n        didOpen: function(){ Swal.showLoading(); }\r\n      });\r\n      if(isEditMode) submitUpdateForm(urls[0], btn, urls[1], urls[2], urls[3]);\r\n      else           submitForm(urls[0], btn, urls[1], urls[2], urls[3]);\r\n    })\r\n    .catch(function(err){\r\n      btn.disabled=false;\r\n      Swal.fire({\r\n        icon:\"error\",\r\n        title:T(\"uploadFail\"),\r\n        text:(err && err.message) || T(\"retry\"),\r\n        confirmButtonColor:\"#AD4970\"\r\n      });\r\n    });\r\n}\r\n\/\/ \u0e08\u0e33 URL \u0e17\u0e35\u0e48\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08\u0e41\u0e25\u0e49\u0e27\u0e02\u0e2d\u0e07\u0e44\u0e1f\u0e25\u0e4c\u0e41\u0e15\u0e48\u0e25\u0e30\u0e0a\u0e48\u0e2d\u0e07 \u2014 \u0e01\u0e14\u0e2a\u0e48\u0e07\u0e43\u0e2b\u0e21\u0e48\u0e2b\u0e25\u0e31\u0e07\u0e1e\u0e25\u0e32\u0e14 (\u0e40\u0e0a\u0e48\u0e19 \u0e40\u0e19\u0e47\u0e15\u0e2b\u0e25\u0e38\u0e14, \u0e2b\u0e19\u0e48\u0e27\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e44\u0e21\u0e48\u0e1c\u0e48\u0e32\u0e19)\r\n\/\/ \u0e08\u0e30\u0e44\u0e14\u0e49\u0e44\u0e21\u0e48\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e23\u0e39\u0e1b\u0e40\u0e14\u0e34\u0e21\u0e0b\u0e49\u0e33\u0e02\u0e36\u0e49\u0e19 ImgBB \u0e2d\u0e35\u0e01\u0e0a\u0e38\u0e14 \u0e25\u0e49\u0e32\u0e07\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\/\u0e25\u0e1a\u0e44\u0e1f\u0e25\u0e4c\u0e19\u0e31\u0e49\u0e19\r\nvar uploadedUrls = { photo:\"\", passport:\"\", visaExpiry:\"\", tm30:\"\" };\r\n\/\/ \u0e40\u0e19\u0e37\u0e49\u0e2d\u0e44\u0e1f\u0e25\u0e4c (data URL \u0e02\u0e2d\u0e07\u0e23\u0e39\u0e1b\u0e17\u0e35\u0e48\u0e40\u0e1e\u0e34\u0e48\u0e07\u0e40\u0e25\u0e37\u0e2d\u0e01 \u0e2b\u0e23\u0e37\u0e2d URL \u0e40\u0e14\u0e34\u0e21\u0e43\u0e19\u0e42\u0e2b\u0e21\u0e14\u0e41\u0e01\u0e49\u0e44\u0e02) \u0e17\u0e35\u0e48\u0e1c\u0e39\u0e01\u0e01\u0e31\u0e1a uploadedUrls \u0e41\u0e15\u0e48\u0e25\u0e30\u0e0a\u0e48\u0e2d\u0e07\r\n\/\/ \u0e43\u0e0a\u0e49\u0e40\u0e17\u0e35\u0e22\u0e1a\u0e27\u0e48\u0e32 URL \u0e17\u0e35\u0e48\u0e41\u0e04\u0e0a\u0e44\u0e27\u0e49\u0e40\u0e1b\u0e47\u0e19\u0e02\u0e2d\u0e07\u0e44\u0e1f\u0e25\u0e4c\u0e0a\u0e38\u0e14\u0e17\u0e35\u0e48\u0e01\u0e33\u0e25\u0e31\u0e07\u0e08\u0e30\u0e2a\u0e48\u0e07\u0e08\u0e23\u0e34\u0e07\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48\r\nvar uploadedSrc  = { photo:\"\", passport:\"\", visaExpiry:\"\", tm30:\"\" };\r\nfunction cachedUpload(slot, base64, filename){\r\n  if(!base64) return Promise.resolve(\"\");\r\n  \/\/ \u0e40\u0e14\u0e34\u0e21\u0e40\u0e0a\u0e47\u0e04\u0e41\u0e04\u0e48\u0e27\u0e48\u0e32 \"\u0e0a\u0e48\u0e2d\u0e07\u0e19\u0e35\u0e49\u0e40\u0e04\u0e22\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08\u0e41\u0e25\u0e49\u0e27\u0e2b\u0e23\u0e37\u0e2d\u0e22\u0e31\u0e07\" \u0e16\u0e49\u0e32\u0e08\u0e38\u0e14\u0e43\u0e14\u0e08\u0e38\u0e14\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e25\u0e49\u0e32\u0e07 uploadedUrls\r\n  \/\/ \u0e15\u0e2d\u0e19\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e44\u0e1f\u0e25\u0e4c \u0e23\u0e30\u0e1a\u0e1a\u0e08\u0e30\u0e2a\u0e48\u0e07 URL \u0e23\u0e39\u0e1b\u0e40\u0e14\u0e34\u0e21\u0e01\u0e25\u0e31\u0e1a\u0e44\u0e1b\u0e17\u0e31\u0e49\u0e07\u0e17\u0e35\u0e48\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e23\u0e39\u0e1b\u0e43\u0e2b\u0e21\u0e48\u0e41\u0e25\u0e49\u0e27 \u2014 \u0e40\u0e2a\u0e35\u0e48\u0e22\u0e07\u0e21\u0e32\u0e01\u0e43\u0e19\u0e42\u0e2b\u0e21\u0e14\r\n  \/\/ \u0e41\u0e01\u0e49\u0e44\u0e02\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 \u0e40\u0e1e\u0e23\u0e32\u0e30\u0e0a\u0e48\u0e2d\u0e07\u0e23\u0e39\u0e1b\u0e16\u0e39\u0e01\u0e40\u0e15\u0e34\u0e21 URL \u0e40\u0e14\u0e34\u0e21\u0e44\u0e27\u0e49\u0e25\u0e48\u0e27\u0e07\u0e2b\u0e19\u0e49\u0e32 \u0e15\u0e2d\u0e19\u0e19\u0e35\u0e49\u0e1c\u0e39\u0e01\u0e41\u0e04\u0e0a\u0e01\u0e31\u0e1a\u0e40\u0e19\u0e37\u0e49\u0e2d\u0e44\u0e1f\u0e25\u0e4c \u0e08\u0e36\u0e07\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e43\u0e2b\u0e21\u0e48\u0e40\u0e2a\u0e21\u0e2d\r\n  \/\/ \u0e40\u0e21\u0e37\u0e48\u0e2d\u0e44\u0e1f\u0e25\u0e4c\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19 \u0e41\u0e25\u0e30\u0e44\u0e21\u0e48\u0e2d\u0e31\u0e1b\u0e0b\u0e49\u0e33\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e2a\u0e48\u0e07\u0e44\u0e1f\u0e25\u0e4c\u0e0a\u0e38\u0e14\u0e40\u0e14\u0e34\u0e21\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07\r\n  if(uploadedUrls[slot] && uploadedSrc[slot] === base64) return Promise.resolve(uploadedUrls[slot]);\r\n  \/\/ \u0e42\u0e2b\u0e21\u0e14\u0e41\u0e01\u0e49\u0e44\u0e02: \u0e44\u0e1f\u0e25\u0e4c\u0e40\u0e14\u0e34\u0e21\u0e40\u0e01\u0e47\u0e1a\u0e21\u0e32\u0e40\u0e1b\u0e47\u0e19 URL \u0e2d\u0e22\u0e39\u0e48\u0e41\u0e25\u0e49\u0e27 (\u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48 data:) \u0e43\u0e0a\u0e49\u0e15\u0e48\u0e2d\u0e44\u0e14\u0e49\u0e40\u0e25\u0e22 \u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e2d\u0e31\u0e1b\u0e02\u0e36\u0e49\u0e19 ImgBB \u0e0b\u0e49\u0e33\r\n  if(\/^https:\\\/\\\/\/i.test(base64)){\r\n    uploadedUrls[slot] = base64; uploadedSrc[slot] = base64;\r\n    return Promise.resolve(base64);\r\n  }\r\n  return uploadFile(base64, filename).then(function(url){\r\n    uploadedUrls[slot] = url; uploadedSrc[slot] = base64;\r\n    return url;\r\n  });\r\n}\r\nfunction uploadFile(base64, filename){\r\n  if(!base64) return Promise.resolve(\"\");\r\n  var b64 = base64.replace(\/^data:[^;]+;base64,\/, \"\");\r\n  var form = new FormData();\r\n  form.append(\"key\",   IMGBB_KEY);\r\n  form.append(\"image\", b64);\r\n  form.append(\"name\",  filename);\r\n  return fetch(\"https:\/\/api.imgbb.com\/1\/upload\", { method:\"POST\", body:form })\r\n    .then(function(r){ if(!r.ok) throw new Error(\"ImgBB HTTP \"+r.status); return r.json(); })\r\n    .then(function(data){\r\n      if(!data.success) throw new Error(data.error && data.error.message || \"Upload failed\");\r\n      return data.data.url;\r\n    });\r\n}\r\n\/\/ \u0e40\u0e21\u0e37\u0e48\u0e2d\u0e21\u0e35\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e01\u0e31\u0e19\u0e2b\u0e25\u0e32\u0e22\u0e04\u0e19 Google Apps Script \u0e15\u0e49\u0e2d\u0e07\u0e40\u0e02\u0e49\u0e32\u0e04\u0e34\u0e27\u0e40\u0e02\u0e35\u0e22\u0e19\u0e0a\u0e35\u0e15\u0e17\u0e35\u0e25\u0e30\u0e23\u0e32\u0e22\r\n\/\/ \u0e08\u0e36\u0e07\u0e15\u0e49\u0e2d\u0e07\u0e23\u0e2d\u0e19\u0e32\u0e19\u0e01\u0e27\u0e48\u0e32\u0e40\u0e14\u0e34\u0e21 \u0e41\u0e25\u0e30\u0e2a\u0e48\u0e07\u0e0b\u0e49\u0e33\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e16\u0e39\u0e01\u0e1b\u0e0f\u0e34\u0e40\u0e2a\u0e18\u0e40\u0e1e\u0e23\u0e32\u0e30\u0e04\u0e34\u0e27\u0e40\u0e15\u0e47\u0e21\r\n\/\/ \u0e01\u0e32\u0e23\u0e2a\u0e48\u0e07\u0e0b\u0e49\u0e33\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22 \u0e40\u0e1e\u0e23\u0e32\u0e30\u0e43\u0e0a\u0e49 clientSubmissionId \u0e40\u0e14\u0e34\u0e21 \u2192 \u0e1d\u0e31\u0e48\u0e07\u0e40\u0e0b\u0e34\u0e23\u0e4c\u0e1f\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e04\u0e37\u0e19\u0e1c\u0e25\u0e40\u0e14\u0e34\u0e21\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e0b\u0e49\u0e33\r\nvar REG_TIMEOUT_MS   = 90000;\r\nvar REG_MAX_ATTEMPTS = 3;\r\n\r\nfunction submitForm(imageUrl, btn, passportUrl, visaExpiryUrl, tm30Url){\r\n  var params = {\r\n    action:\"register\", language:LANG, prefix:document.getElementById(\"prefix\").value,\r\n    firstName:document.getElementById(\"firstName\").value.trim(),\r\n    lastName:document.getElementById(\"lastName\").value.trim(),\r\n    temple:(document.getElementById(\"temple\") && document.getElementById(\"temple\").value.trim()) || \"\",\r\n    birthdate:document.getElementById(\"birthdate\").value,\r\n    phone:document.getElementById(\"phone\").value.trim(),\r\n    education:document.getElementById(\"education\").value,\r\n    pali:document.getElementById(\"pali\").value,\r\n    dhamma:document.getElementById(\"dhamma\").value,\r\n    address:document.getElementById(\"address\").value.trim(),\r\n    soi:document.getElementById(\"soi\").value.trim(),\r\n    subdistrict:document.getElementById(\"subdistrict\").value.trim(),\r\n    district:document.getElementById(\"district\").value.trim(),\r\n    province:document.getElementById(\"province\").value,\r\n    postalCode:document.getElementById(\"postalCode\").value.trim(),\r\n    serviceLocation:document.getElementById(\"serviceLocation\").value,\r\n    imageUrl:imageUrl,\r\n    passportUrl:passportUrl||\"\",\r\n    visaExpiryUrl:visaExpiryUrl||\"\",\r\n    tm30Url:tm30Url||\"\",\r\n    clientSubmissionId:activeSubmissionId,\r\n    \/\/ \u0e2a\u0e48\u0e07 \"\u0e23\u0e30\u0e22\u0e30\u0e40\u0e27\u0e25\u0e32\u0e17\u0e35\u0e48\u0e40\u0e1b\u0e34\u0e14\u0e1f\u0e2d\u0e23\u0e4c\u0e21\" \u0e17\u0e35\u0e48\u0e04\u0e33\u0e19\u0e27\u0e13\u0e08\u0e32\u0e01\u0e19\u0e32\u0e2c\u0e34\u0e01\u0e32\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e40\u0e2d\u0e07 (\u0e15\u0e2d\u0e19\u0e42\u0e2b\u0e25\u0e14 vs \u0e15\u0e2d\u0e19\u0e2a\u0e48\u0e07 = \u0e19\u0e32\u0e2c\u0e34\u0e01\u0e32\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e19)\r\n    \/\/ \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e44\u0e21\u0e48\u0e43\u0e2b\u0e49\u0e04\u0e48\u0e32\u0e40\u0e1e\u0e35\u0e49\u0e22\u0e19\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e19\u0e32\u0e2c\u0e34\u0e01\u0e32\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e44\u0e21\u0e48\u0e15\u0e23\u0e07\u0e01\u0e31\u0e1a\u0e19\u0e32\u0e2c\u0e34\u0e01\u0e32\u0e40\u0e0b\u0e34\u0e23\u0e4c\u0e1f\u0e40\u0e27\u0e2d\u0e23\u0e4c\r\n    formElapsedMs:String(Date.now() - formStartedAt),\r\n    website:\"\"\r\n  };\r\n  sendRegistration(params, btn, 1);\r\n}\r\n\r\n\/\/ \u0e2a\u0e48\u0e07 \"\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02\" \u2014 action:\"update\" \u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e15\u0e31\u0e27\u0e14\u0e49\u0e27\u0e22\u0e23\u0e2b\u0e31\u0e2a+\u0e40\u0e1a\u0e2d\u0e23\u0e4c\u0e17\u0e49\u0e32\u0e22\u0e40\u0e14\u0e34\u0e21 (editAuth) \u0e41\u0e17\u0e19 clientSubmissionId\r\n\/\/ \u0e40\u0e02\u0e35\u0e22\u0e19\u0e17\u0e31\u0e1a\u0e41\u0e16\u0e27\u0e40\u0e14\u0e34\u0e21\u0e43\u0e19\u0e0a\u0e35\u0e15 \u0e44\u0e21\u0e48\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e41\u0e16\u0e27\/\u0e40\u0e25\u0e02\u0e17\u0e35\u0e48\/\u0e23\u0e2b\u0e31\u0e2a\u0e43\u0e2b\u0e21\u0e48\r\nfunction submitUpdateForm(imageUrl, btn, passportUrl, visaExpiryUrl, tm30Url){\r\n  var params = {\r\n    action:\"update\", language:LANG,\r\n    code: editAuth.code, phoneLast4: editAuth.phoneLast4,\r\n    prefix:document.getElementById(\"prefix\").value,\r\n    firstName:document.getElementById(\"firstName\").value.trim(),\r\n    lastName:document.getElementById(\"lastName\").value.trim(),\r\n    temple:(document.getElementById(\"temple\") && document.getElementById(\"temple\").value.trim()) || \"\",\r\n    birthdate:document.getElementById(\"birthdate\").value,\r\n    phone:document.getElementById(\"phone\").value.trim(),\r\n    education:document.getElementById(\"education\").value,\r\n    pali:document.getElementById(\"pali\").value,\r\n    dhamma:document.getElementById(\"dhamma\").value,\r\n    address:document.getElementById(\"address\").value.trim(),\r\n    soi:document.getElementById(\"soi\").value.trim(),\r\n    subdistrict:document.getElementById(\"subdistrict\").value.trim(),\r\n    district:document.getElementById(\"district\").value.trim(),\r\n    province:document.getElementById(\"province\").value,\r\n    postalCode:document.getElementById(\"postalCode\").value.trim(),\r\n    serviceLocation:document.getElementById(\"serviceLocation\").value,\r\n    imageUrl:imageUrl,\r\n    passportUrl:passportUrl||\"\",\r\n    visaExpiryUrl:visaExpiryUrl||\"\",\r\n    tm30Url:tm30Url||\"\",\r\n    website:\"\"\r\n  };\r\n  sendRegistration(params, btn, 1, showUpdateSuccess);\r\n}\r\n\r\nfunction sendRegistration(params, btn, attempt, onSuccess){\r\n  onSuccess = onSuccess || showRegSuccess;   \/\/ \u0e15\u0e2d\u0e19\u0e41\u0e01\u0e49\u0e44\u0e02\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e08\u0e30\u0e2a\u0e48\u0e07 showUpdateSuccess \u0e21\u0e32\u0e41\u0e17\u0e19\r\n  var settled  = false;\r\n  var controller = window.AbortController ? new AbortController() : null;\r\n\r\n  var timer = setTimeout(function(){\r\n    if(settled) return; settled = true;\r\n    if(controller) controller.abort();\r\n    cleanup();\r\n    retryOrFail(T(\"timeout\"), T(\"timeoutMsg\"));\r\n  }, REG_TIMEOUT_MS);\r\n\r\n  function cleanup(){\r\n    clearTimeout(timer);\r\n  }\r\n  function showError(title, msg){\r\n    btn.disabled = false;\r\n    Swal.fire({icon:\"error\",title:title,text:msg,confirmButtonColor:\"#AD4970\"});\r\n  }\r\n  \/\/ \u0e2a\u0e48\u0e07\u0e0b\u0e49\u0e33\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34\u0e14\u0e49\u0e27\u0e22\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e0a\u0e38\u0e14\u0e40\u0e14\u0e34\u0e21 (submission id \u0e40\u0e14\u0e34\u0e21) \u2014 \u0e44\u0e21\u0e48\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e40\u0e01\u0e34\u0e14\u0e41\u0e16\u0e27\u0e0b\u0e49\u0e33\r\n  function retryOrFail(title, msg){\r\n    if(attempt >= REG_MAX_ATTEMPTS){ showError(title, msg); return; }\r\n    Swal.fire({\r\n      title: T(\"regBusy\"),\r\n      html: T(\"regBusySub\"),\r\n      allowOutsideClick:false,\r\n      didOpen:function(){ Swal.showLoading(); }\r\n    });\r\n    setTimeout(function(){ sendRegistration(params, btn, attempt + 1, onSuccess); }, 3000 * attempt);\r\n  }\r\n\r\n  var body = Object.keys(params).map(function(k){\r\n    return encodeURIComponent(k)+\"=\"+encodeURIComponent(params[k]);\r\n  }).join(\"&\");\r\n  var options = {\r\n    method:\"POST\",\r\n    headers:{\"Content-Type\":\"application\/x-www-form-urlencoded;charset=UTF-8\"},\r\n    body:body\r\n  };\r\n  if(controller) options.signal = controller.signal;\r\n  fetch(GAS_URL, options)\r\n    .then(function(r){ if(!r.ok) throw new Error(\"HTTP \"+r.status); return r.json(); })\r\n    .then(function(data){\r\n      if(settled) return; settled = true;\r\n      cleanup();\r\n      if(data && data.ok){ onSuccess(data, btn); return; }\r\n      if(data && data.retryable){ retryOrFail(T(\"errTitle\"), data.message || T(\"retry\")); return; }\r\n      Swal.close();\r\n      showError(T(\"errTitle\"), (data && data.message) || T(\"retry\"));\r\n    })\r\n    .catch(function(err){\r\n      if(settled) return; settled = true;\r\n      cleanup();\r\n      retryOrFail(T(\"connErr\"), (err && err.message) || T(\"connErrMsg\"));\r\n    });\r\n}\r\n\r\nfunction showRegSuccess(data, btn){\r\n  Swal.close();\r\n  btn.disabled = false;\r\n  \/\/ data.resubmitted = \u0e04\u0e33\u0e02\u0e2d\u0e43\u0e1a\u0e40\u0e14\u0e34\u0e21\u0e02\u0e2d\u0e07\u0e40\u0e23\u0e32\u0e40\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e2a\u0e48\u0e07\u0e0b\u0e49\u0e33\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34 \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e01\u0e32\u0e23\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e0b\u0e49\u0e33 \u0e08\u0e36\u0e07\u0e16\u0e37\u0e2d\u0e27\u0e48\u0e32\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08\u0e1b\u0e01\u0e15\u0e34\r\n  var already = !!data.alreadySubmitted && !data.resubmitted;\r\n  var greeting = already\r\n    ? (LANG===\"en\" ? \"You have already registered, \" : \"\u0e17\u0e48\u0e32\u0e19\u0e40\u0e04\u0e22\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e44\u0e27\u0e49\u0e41\u0e25\u0e49\u0e27 \")\r\n    : (LANG===\"en\" ? \"Welcome, \" : \"\u0e22\u0e34\u0e19\u0e14\u0e35\u0e15\u0e49\u0e2d\u0e19\u0e23\u0e31\u0e1a \");\r\n  var successHtml =\r\n    \"<p style='margin-bottom:6px'>\"+greeting+\"<strong>\"+esc2(data.name)+\"<\/strong><\/p>\" +\r\n    \"<p style='font-size:13px;color:#888;margin-bottom:12px'>\"+T(\"successDate\")+\": \"+esc2(data.regDateTime||data.regDate)+\" | \"+T(\"successSeq\")+\": \"+esc2(String(data.seqNo))+\"<\/p>\" +\r\n    \"<p style='font-size:14px;margin-bottom:6px'>\"+T(\"successCodeLabel\")+\"<\/p>\" +\r\n    \"<div class='code-display' id='successTempCode'>\"+esc2(data.tempCode)+\"<\/div><br>\" +\r\n    \"<button type='button' class='copy-code-btn' id='copyTempCode'>\ud83d\udccb \"+(LANG===\"en\"?\"Copy code\":\"\u0e04\u0e31\u0e14\u0e25\u0e2d\u0e01\u0e23\u0e2b\u0e31\u0e2a\")+\"<\/button>\" +\r\n    \"<p style='font-size:13px;color:#8E2A57;margin-top:10px'>\"+T(\"successCodeNote\")+\"<\/p>\";\r\n  Swal.fire({\r\n    icon: already ? \"info\" : \"success\",\r\n    title: already ? (LANG===\"en\" ? \"Existing registration found\" : \"\u0e1e\u0e1a\u0e01\u0e32\u0e23\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e40\u0e14\u0e34\u0e21\u0e02\u0e2d\u0e07\u0e17\u0e48\u0e32\u0e19\") : T(\"successTitle\"),\r\n    html: successHtml,\r\n    confirmButtonText: T(\"successConfirm\"),\r\n    confirmButtonColor: \"#8E2A57\",\r\n    allowOutsideClick: false,\r\n    didOpen:function(){\r\n      var copyBtn=document.getElementById(\"copyTempCode\");\r\n      if(copyBtn) copyBtn.addEventListener(\"click\",function(){ copyText(data.tempCode,copyBtn); });\r\n    }\r\n  }).then(function(){ resetForm(); });\r\n}\r\n\/\/ \u0e41\u0e08\u0e49\u0e07\u0e1c\u0e25\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08\u0e15\u0e2d\u0e19 \"\u0e41\u0e01\u0e49\u0e44\u0e02\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\" \u2014 \u0e41\u0e22\u0e01\u0e08\u0e32\u0e01 showRegSuccess \u0e40\u0e1e\u0e23\u0e32\u0e30\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\/\u0e2b\u0e31\u0e27\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e15\u0e49\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e1e\u0e39\u0e14\u0e27\u0e48\u0e32 \"\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08\"\r\nfunction showUpdateSuccess(data, btn){\r\n  Swal.close();\r\n  btn.disabled = false;\r\n  var successHtml =\r\n    \"<p style='margin-bottom:6px'>\"+(LANG===\"en\"?\"Updated information for \":\"\u0e41\u0e01\u0e49\u0e44\u0e02\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e02\u0e2d\u0e07 \")+\"<strong>\"+esc2(data.name)+\"<\/strong><\/p>\" +\r\n    \"<p style='font-size:13px;color:#888;margin-bottom:12px'>\"+T(\"successSeq\")+\": \"+esc2(String(data.seqNo))+\" | \"+(LANG===\"en\"?\"Code\":\"\u0e23\u0e2b\u0e31\u0e2a\")+\": \"+esc2(data.tempCode)+\"<\/p>\" +\r\n    \"<p style='font-size:13.5px;color:#8E2A57'>\"+(LANG===\"en\"\r\n      ? \"Your information has been updated successfully.\"\r\n      : \"\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e40\u0e23\u0e35\u0e22\u0e1a\u0e23\u0e49\u0e2d\u0e22\u0e41\u0e25\u0e49\u0e27\")+\"<\/p>\";\r\n  Swal.fire({\r\n    icon: \"success\",\r\n    title: LANG===\"en\" ? \"Information Updated! \u2705\" : \"\u0e41\u0e01\u0e49\u0e44\u0e02\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08! \u2705\",\r\n    html: successHtml,\r\n    confirmButtonText: T(\"successConfirm\"),\r\n    confirmButtonColor: \"#8E2A57\",\r\n    allowOutsideClick: false\r\n  }).then(function(){ resetForm(); setAppMode(\"status\", false); });\r\n}\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n\/\/ Reset form\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\nfunction copyText(text,button){\r\n  function done(){ button.textContent=LANG===\"en\"?\"\u2713 Copied\":\"\u2713 \u0e04\u0e31\u0e14\u0e25\u0e2d\u0e01\u0e41\u0e25\u0e49\u0e27\"; }\r\n  function fail(){ button.textContent=T(\"copyFail\"); }\r\n  \/\/ \u0e27\u0e34\u0e18\u0e35\u0e2a\u0e33\u0e23\u0e2d\u0e07: textarea + execCommand \u0e43\u0e0a\u0e49\u0e44\u0e14\u0e49\u0e01\u0e31\u0e1a\u0e40\u0e1a\u0e23\u0e32\u0e27\u0e4c\u0e40\u0e0b\u0e2d\u0e23\u0e4c\u0e40\u0e01\u0e48\u0e32\/\u0e2b\u0e19\u0e49\u0e32\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48 https\r\n  function legacyCopy(){\r\n    var area=document.createElement(\"textarea\");\r\n    area.value=text; area.style.position=\"fixed\"; area.style.opacity=\"0\";\r\n    document.body.appendChild(area); area.select();\r\n    var ok=false;\r\n    try{ ok=document.execCommand(\"copy\"); } catch(err){ ok=false; } finally{ area.remove(); }\r\n    if(ok) done(); else fail();\r\n  }\r\n  if(navigator.clipboard && window.isSecureContext){\r\n    \/\/ \u0e16\u0e49\u0e32 clipboard API \u0e16\u0e39\u0e01\u0e1b\u0e0f\u0e34\u0e40\u0e2a\u0e18 (\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c\/\u0e42\u0e1f\u0e01\u0e31\u0e2a) \u0e15\u0e49\u0e2d\u0e07\u0e15\u0e01\u0e21\u0e32\u0e43\u0e0a\u0e49\u0e27\u0e34\u0e18\u0e35\u0e2a\u0e33\u0e23\u0e2d\u0e07 \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e40\u0e07\u0e35\u0e22\u0e1a\u0e44\u0e1b\u0e40\u0e09\u0e22 \u0e46\r\n    navigator.clipboard.writeText(text).then(done).catch(legacyCopy);\r\n    return;\r\n  }\r\n  legacyCopy();\r\n}\r\nfunction resetForm(){\r\n  document.getElementById(\"regForm\").reset();\r\n  clearDraft();                 \/\/ \u0e2a\u0e21\u0e31\u0e04\u0e23\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08\/\u0e25\u0e49\u0e32\u0e07\u0e1f\u0e2d\u0e23\u0e4c\u0e21\u0e41\u0e25\u0e49\u0e27 \u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e01\u0e47\u0e1a\u0e23\u0e48\u0e32\u0e07\u0e44\u0e27\u0e49\u0e43\u0e19\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e2d\u0e35\u0e01\r\n  var draftBar = document.getElementById(\"draftBar\");\r\n  if(draftBar) draftBar.hidden = true;\r\n  clearFieldErrors();\r\n  hasAttemptedSubmit = false;   \/\/ \u0e40\u0e23\u0e34\u0e48\u0e21\u0e1f\u0e2d\u0e23\u0e4c\u0e21\u0e43\u0e2b\u0e21\u0e48 \u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e15\u0e37\u0e2d\u0e19\u0e0a\u0e48\u0e2d\u0e07\u0e27\u0e48\u0e32\u0e07\u0e08\u0e19\u0e01\u0e27\u0e48\u0e32\u0e08\u0e30\u0e01\u0e14\u0e2a\u0e48\u0e07\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07\r\n  photoBase64 = \"\";\r\n  uploadedUrls = { photo:\"\", passport:\"\", visaExpiry:\"\", tm30:\"\" };\r\n  uploadedSrc  = { photo:\"\", passport:\"\", visaExpiry:\"\", tm30:\"\" };\r\n  activeSubmissionId = \"\";\r\n  formStartedAt = Date.now();\r\n  document.getElementById(\"photoImg\").style.display = \"none\";\r\n  document.getElementById(\"photoImg\").src = \"\";\r\n  document.getElementById(\"photoPlaceholder\").style.display = \"\";\r\n  document.getElementById(\"btnPhotoRemove\").hidden = true;\r\n  passportBase64 = \"\"; visaExpiryBase64 = \"\"; tm30Base64 = \"\";\r\n  [\"passport\",\"visaExpiry\",\"tm30\"].forEach(function(kind){\r\n    var ui=docUI(kind); ui.img.src=\"\"; ui.img.style.display=\"none\"; ui.placeholder.style.display=\"\";\r\n    ui.name.style.display=\"none\"; ui.name.textContent=\"\"; ui.remove.hidden=true;\r\n  });\r\n  updateUploadSummary();\r\n  document.getElementById(\"birthdate\").value = \"\";\r\n  provSyncFromSelect();\r\n  var distSel = document.getElementById(\"district\");\r\n  var subSel  = document.getElementById(\"subdistrict\");\r\n  if(distSel && distSel.tagName===\"SELECT\"){ distSel.innerHTML='<option value=\"\">'+T(\"selDistrictWait\")+'<\/option>'; distSel.disabled=true; }\r\n  if(subSel  && subSel.tagName ===\"SELECT\"){ subSel.innerHTML ='<option value=\"\">'+T(\"selSubWait\")+'<\/option>';     subSel.disabled=true; }\r\n  document.getElementById(\"postalCode\").value = \"\";\r\n  document.getElementById(\"serviceLocationAddr\").style.display = \"none\";\r\n  var chkRes = document.getElementById(\"checkResult\");\r\n  if(chkRes){ chkRes.style.display=\"none\"; chkRes.className=\"check-result\"; chkRes.innerHTML=\"\"; }\r\n  document.getElementById(\"checkCodeInput\").value = \"\";\r\n  document.getElementById(\"checkPhoneInput\").value = \"\";\r\n  onPrefixChange();\r\n  \/\/ \u0e25\u0e49\u0e32\u0e07\u0e2a\u0e16\u0e32\u0e19\u0e30\u0e42\u0e2b\u0e21\u0e14\u0e41\u0e01\u0e49\u0e44\u0e02 (\u0e16\u0e49\u0e32\u0e21\u0e35) \u0e01\u0e25\u0e31\u0e1a\u0e40\u0e1b\u0e47\u0e19\u0e1f\u0e2d\u0e23\u0e4c\u0e21\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e43\u0e2b\u0e21\u0e48\u0e1b\u0e01\u0e15\u0e34\u0e40\u0e2a\u0e21\u0e2d\r\n  isEditMode = false;\r\n  editAuth = null;\r\n  var editBar = document.getElementById(\"editModeBar\");\r\n  if(editBar) editBar.hidden = true;\r\n  var submitTxt = document.getElementById(\"submitBtnText\");\r\n  if(submitTxt) submitTxt.textContent = T(\"submitBtn\");\r\n  window.scrollTo({top:0, behavior:\"smooth\"});\r\n}\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n\/\/ Validate\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\nfunction clearFieldErrors(){\r\n  document.querySelectorAll(\"#regForm .field-error\").forEach(function(el){el.remove();});\r\n  document.querySelectorAll('#regForm [aria-invalid=\"true\"]').forEach(function(el){el.removeAttribute(\"aria-invalid\");el.removeAttribute(\"aria-describedby\");});\r\n  document.querySelectorAll(\"#regForm .invalid\").forEach(function(el){el.classList.remove(\"invalid\");});\r\n}\r\nfunction clearErrorFor(el){\r\n  if(!el) return;\r\n  var box = el.closest(\".birthdate-grid\") || el.closest(\".field\") || el.closest(\".document-upload-tile\") || el.closest(\".photo-upload-wrap\") || el.closest(\".consent-check\");\r\n  if(!box && el.id===\"photoInput\") box=document.querySelector(\".photo-upload-wrap\");\r\n  if(box){ box.classList.remove(\"invalid\"); var err=box.querySelector(\".field-error\"); if(err) err.remove(); }\r\n  if(box && box.classList.contains(\"birthdate-grid\")){ var hiddenBirth=document.getElementById(\"birthdate\"); hiddenBirth.removeAttribute(\"aria-invalid\"); hiddenBirth.removeAttribute(\"aria-describedby\"); }\r\n  el.removeAttribute(\"aria-invalid\"); el.removeAttribute(\"aria-describedby\");\r\n  var proxy = el.dataset && el.dataset.errorProxy ? document.getElementById(el.dataset.errorProxy) : null;\r\n  if(proxy){ proxy.removeAttribute(\"aria-invalid\"); proxy.removeAttribute(\"aria-describedby\"); }\r\n}\r\nfunction markInvalid(id,message,boxSelector,focusId){\r\n  var el=document.getElementById(id), box=boxSelector?document.querySelector(boxSelector):(el && el.closest(\".field\"));\r\n  if(!box || !el) return null;\r\n  var err=document.createElement(\"span\"), errId=\"err_\"+id;\r\n  err.className=\"field-error\"; err.id=errId; err.setAttribute(\"role\",\"alert\"); err.textContent=message; box.appendChild(err);\r\n  el.setAttribute(\"aria-invalid\",\"true\"); el.setAttribute(\"aria-describedby\",errId);\r\n  \/\/ \u0e0a\u0e48\u0e2d\u0e07\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14\u0e40\u0e01\u0e47\u0e1a\u0e04\u0e48\u0e32\u0e44\u0e27\u0e49\u0e43\u0e19 select \u0e17\u0e35\u0e48\u0e0b\u0e48\u0e2d\u0e19\u0e2d\u0e22\u0e39\u0e48 \u2014 \u0e01\u0e23\u0e2d\u0e1a\u0e41\u0e14\u0e07\u0e41\u0e25\u0e30\u0e42\u0e1f\u0e01\u0e31\u0e2a\u0e15\u0e49\u0e2d\u0e07\u0e44\u0e1b\u0e25\u0e07\u0e17\u0e35\u0e48\u0e0a\u0e48\u0e2d\u0e07\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e17\u0e35\u0e48\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e40\u0e2b\u0e47\u0e19\u0e08\u0e23\u0e34\u0e07\r\n  var proxy = el.dataset.errorProxy ? document.getElementById(el.dataset.errorProxy) : null;\r\n  if(proxy){ proxy.setAttribute(\"aria-invalid\",\"true\"); proxy.setAttribute(\"aria-describedby\",errId); }\r\n  if(boxSelector) box.classList.add(\"invalid\");\r\n  if(focusId) return document.getElementById(focusId) || el;\r\n  return proxy || el;\r\n}\r\nfunction isValidBirthdateValue(value){\r\n  var parts=String(value||\"\").split(\"\/\");\r\n  if(parts.length!==3) return false;\r\n  var d=parseInt(parts[0],10), m=parseInt(parts[1],10), y=parseInt(parts[2],10);\r\n  if(y>2400) y-=543;\r\n  if(!d || !m || !y) return false;\r\n  var date=new Date(y,m-1,d), today=new Date();\r\n  return date.getFullYear()===y && date.getMonth()===m-1 && date.getDate()===d && date<=today && y>=today.getFullYear()-120;\r\n}\r\nfunction validate(){\r\n  hasAttemptedSubmit = true;   \/\/ \u0e15\u0e31\u0e49\u0e07\u0e41\u0e15\u0e48\u0e19\u0e35\u0e49\u0e44\u0e1b \u0e0a\u0e48\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e40\u0e27\u0e49\u0e19\u0e27\u0e48\u0e32\u0e07\u0e08\u0e30\u0e40\u0e15\u0e37\u0e2d\u0e19\u0e15\u0e2d\u0e19 blur \u0e14\u0e49\u0e27\u0e22\r\n  clearFieldErrors();\r\n  var errs=[], first=null;\r\n  function add(id,message,box,focus){ var f=markInvalid(id,message,box,focus); errs.push(message); if(!first) first=f; }\r\n  if(!document.getElementById(\"prefix\").value) add(\"prefix\",T(\"vPrefix\"));\r\n  if(!document.getElementById(\"firstName\").value.trim()) add(\"firstName\",T(\"vFirstName\"));\r\n  if(!isValidBirthdateValue(document.getElementById(\"birthdate\").value)){\r\n    var bdComplete = document.getElementById(\"birthDay\").value && document.getElementById(\"birthMonth\").value\r\n                  && \/^\\d{4}$\/.test(document.getElementById(\"birthYear\").value.trim());\r\n    add(\"birthdate\",T(bdComplete ? \"vBirthInvalid\" : \"vBirth\"),\".birthdate-grid\",\"birthDay\");\r\n  }\r\n  var phone=document.getElementById(\"phone\").value.replace(\/\\D\/g,\"\");\r\n  if(!\/^\\d{9,10}$\/.test(phone)) add(\"phone\",T(\"vPhone\"));\r\n  if(!document.getElementById(\"address\").value.trim()) add(\"address\",T(\"vAddress\"));\r\n  if(!document.getElementById(\"province\").value) add(\"province\",T(\"vProvince\"));\r\n  if(!document.getElementById(\"district\").value) add(\"district\",T(\"vDistrict\"));\r\n  if(!document.getElementById(\"subdistrict\").value) add(\"subdistrict\",T(\"vSubdistrict\"));\r\n  if(!\/^\\d{5}$\/.test(document.getElementById(\"postalCode\").value.trim())) add(\"postalCode\",T(\"vPostal\"));\r\n  if(!document.getElementById(\"serviceLocation\").value) add(\"serviceLocation\",T(\"vService\"));\r\n  if(!photoBase64) add(\"photoInput\",T(\"vPhoto\"),\"#photoTile\",\"photoPreview\");\r\n  if(LANG===\"en\" && !passportBase64) add(\"passportInput\",T(\"vPassport\"),\"#passportTile\",\"passportPreview\");\r\n  if(LANG===\"en\" && !visaExpiryBase64) add(\"visaExpiryInput\",T(\"vVisaExpiry\"),\"#visaExpiryTile\",\"visaExpiryPreview\");\r\n  if(LANG===\"en\" && !tm30Base64) add(\"tm30Input\",T(\"vTM30\"),\"#tm30Tile\",\"tm30Preview\");\r\n  if(!document.getElementById(\"consent\").checked) add(\"consent\",T(\"vConsent\"),\".consent-check\");\r\n  if(errs.length){\r\n    var target=first;\r\n    Swal.fire({icon:\"warning\",title:T(\"validTitle\"),text:LANG===\"en\"?\"Please check the highlighted fields.\":\"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e0a\u0e48\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e17\u0e33\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e2b\u0e21\u0e32\u0e22\u0e44\u0e27\u0e49\",confirmButtonColor:\"#8E2A57\"})\r\n      .then(function(){ if(target){ target.focus(); target.scrollIntoView({behavior:\"smooth\",block:\"center\"}); } });\r\n    return false;\r\n  }\r\n  return true;\r\n}\r\ndocument.getElementById(\"regForm\").addEventListener(\"input\",function(e){ clearErrorFor(e.target); });\r\ndocument.getElementById(\"regForm\").addEventListener(\"change\",function(e){ clearErrorFor(e.target); });\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n\/\/ \u0e01\u0e23\u0e2d\u0e07\u0e2d\u0e31\u0e01\u0e02\u0e23\u0e30\u0e02\u0e13\u0e30\u0e1e\u0e34\u0e21\u0e1e\u0e4c\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n\/\/ \u0e15\u0e31\u0e14\u0e2d\u0e31\u0e01\u0e02\u0e23\u0e30\u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e17\u0e34\u0e49\u0e07\u0e17\u0e31\u0e19\u0e17\u0e35\u0e17\u0e35\u0e48\u0e1e\u0e34\u0e21\u0e1e\u0e4c \u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e08\u0e36\u0e07\u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e23\u0e2d\u0e40\u0e08\u0e2d error \u0e15\u0e2d\u0e19\u0e01\u0e14\u0e2a\u0e48\u0e07\r\n\/\/ \u0e23\u0e31\u0e01\u0e29\u0e32\u0e15\u0e33\u0e41\u0e2b\u0e19\u0e48\u0e07\u0e40\u0e04\u0e2d\u0e23\u0e4c\u0e40\u0e0b\u0e2d\u0e23\u0e4c\u0e44\u0e27\u0e49 \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e41\u0e01\u0e49\u0e01\u0e25\u0e32\u0e07\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e44\u0e14\u0e49\u0e15\u0e32\u0e21\u0e1b\u0e01\u0e15\u0e34\r\nfunction attachInputFilter(el, disallowed){\r\n  if(!el) return;\r\n  el.addEventListener(\"input\", function(){\r\n    var before = el.value;\r\n    var after  = before.replace(disallowed, \"\");\r\n    if(before === after) return;\r\n    var caret = el.selectionStart;\r\n    var newCaret = (caret === null) ? after.length\r\n                 : before.slice(0, caret).replace(disallowed, \"\").length;\r\n    el.value = after;\r\n    try { el.setSelectionRange(newCaret, newCaret); } catch(err){ \/* \u0e1a\u0e32\u0e07 browser \u0e44\u0e21\u0e48\u0e23\u0e2d\u0e07\u0e23\u0e31\u0e1a *\/ }\r\n  });\r\n}\r\n\/\/ \u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c: \u0e2d\u0e19\u0e38\u0e0d\u0e32\u0e15\u0e15\u0e31\u0e27\u0e40\u0e25\u0e02 \u0e02\u0e35\u0e14 \u0e41\u0e25\u0e30\u0e40\u0e27\u0e49\u0e19\u0e27\u0e23\u0e23\u0e04 (\u0e15\u0e23\u0e07\u0e01\u0e31\u0e1a placeholder 08x-xxx-xxxx)\r\nattachInputFilter(document.getElementById(\"phone\"), \/[^\\d\\-\\s]\/g);\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n\/\/ \u0e15\u0e23\u0e27\u0e08\u0e17\u0e35\u0e25\u0e30\u0e0a\u0e48\u0e2d\u0e07\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e2d\u0e2d\u0e01\u0e08\u0e32\u0e01\u0e0a\u0e48\u0e2d\u0e07 (blur)\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n\/\/ \u0e2b\u0e25\u0e31\u0e01\u0e01\u0e32\u0e23: \"\u0e01\u0e23\u0e2d\u0e01\u0e1c\u0e34\u0e14\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\" \u0e40\u0e15\u0e37\u0e2d\u0e19\u0e17\u0e31\u0e19\u0e17\u0e35\u0e17\u0e35\u0e48\u0e2d\u0e2d\u0e01\u0e08\u0e32\u0e01\u0e0a\u0e48\u0e2d\u0e07 (\u0e40\u0e0a\u0e48\u0e19 \u0e40\u0e1a\u0e2d\u0e23\u0e4c\u0e42\u0e17\u0e23\u0e44\u0e21\u0e48\u0e04\u0e23\u0e1a)\r\n\/\/ \u0e41\u0e15\u0e48 \"\u0e0a\u0e48\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e22\u0e31\u0e07\u0e27\u0e48\u0e32\u0e07\" \u0e08\u0e30\u0e40\u0e15\u0e37\u0e2d\u0e19\u0e15\u0e48\u0e2d\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e40\u0e04\u0e22\u0e01\u0e14\u0e2a\u0e48\u0e07\u0e44\u0e1b\u0e41\u0e25\u0e49\u0e27 1 \u0e04\u0e23\u0e31\u0e49\u0e07\r\n\/\/ \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e44\u0e21\u0e48\u0e43\u0e2b\u0e49\u0e02\u0e36\u0e49\u0e19\u0e40\u0e15\u0e37\u0e2d\u0e19\u0e23\u0e31\u0e27 \u0e46 \u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e17\u0e35\u0e48\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e22\u0e31\u0e07\u0e44\u0e25\u0e48\u0e01\u0e23\u0e2d\u0e01\u0e2d\u0e22\u0e39\u0e48\r\nvar hasAttemptedSubmit = false;\r\nvar BLUR_RULES = {\r\n  prefix:          { emptyKey:\"vPrefix\" },\r\n  firstName:       { emptyKey:\"vFirstName\" },\r\n  address:         { emptyKey:\"vAddress\" },\r\n  province:        { emptyKey:\"vProvince\" },\r\n  district:        { emptyKey:\"vDistrict\" },\r\n  subdistrict:     { emptyKey:\"vSubdistrict\" },\r\n  serviceLocation: { emptyKey:\"vService\" },\r\n  phone:           { emptyKey:\"vPhone\",  ok:function(v){ return \/^\\d{9,10}$\/.test(v.replace(\/\\D\/g,\"\")); } },\r\n  postalCode:      { emptyKey:\"vPostal\", ok:function(v){ return \/^\\d{5}$\/.test(v); } }\r\n};\r\nfunction runBlurCheck(id){\r\n  var rule = BLUR_RULES[id], el = document.getElementById(id);\r\n  if(!rule || !el) return;\r\n  var v = (el.value||\"\").trim();\r\n  clearErrorFor(el);                       \/\/ \u0e25\u0e1a\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e40\u0e14\u0e34\u0e21\u0e01\u0e48\u0e2d\u0e19 \u0e01\u0e31\u0e19\u0e0b\u0e49\u0e2d\u0e19\u0e01\u0e31\u0e19\r\n  if(!v){\r\n    if(hasAttemptedSubmit) markInvalid(id, T(rule.emptyKey));\r\n    return;\r\n  }\r\n  if(rule.ok && !rule.ok(v)) markInvalid(id, T(rule.emptyKey));\r\n}\r\n\/\/ \u0e27\u0e31\u0e19\u0e40\u0e14\u0e37\u0e2d\u0e19\u0e1b\u0e35\u0e40\u0e01\u0e34\u0e14\u0e43\u0e0a\u0e49 3 \u0e0a\u0e48\u0e2d\u0e07\u0e23\u0e48\u0e27\u0e21\u0e01\u0e31\u0e19 \u0e08\u0e36\u0e07\u0e15\u0e23\u0e27\u0e08\u0e23\u0e27\u0e21\u0e17\u0e35\u0e40\u0e14\u0e35\u0e22\u0e27\r\nfunction runBirthdateCheck(){\r\n  var yEl = document.getElementById(\"birthYear\");\r\n  var d = document.getElementById(\"birthDay\").value;\r\n  var m = document.getElementById(\"birthMonth\").value;\r\n  var y = yEl.value.trim();\r\n  clearErrorFor(yEl);\r\n  var complete = d && m && \/^\\d{4}$\/.test(y);\r\n  var invalid  = !complete || !isValidBirthdateValue(document.getElementById(\"birthdate\").value);\r\n  if(!invalid) return;\r\n  \/\/ \u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e41\u0e15\u0e30\u0e2d\u0e30\u0e44\u0e23\u0e40\u0e25\u0e22 \u2192 \u0e40\u0e15\u0e37\u0e2d\u0e19\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e04\u0e22\u0e01\u0e14\u0e2a\u0e48\u0e07\r\n  if(!d && !m && !y && !hasAttemptedSubmit) return;\r\n  \/\/ \u0e01\u0e23\u0e2d\u0e01\u0e04\u0e23\u0e1a\u0e41\u0e25\u0e49\u0e27\u0e41\u0e15\u0e48\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07 (\u0e40\u0e0a\u0e48\u0e19 31 \u0e01\u0e38\u0e21\u0e20\u0e32\u0e1e\u0e31\u0e19\u0e18\u0e4c) \u0e15\u0e49\u0e2d\u0e07\u0e1a\u0e2d\u0e01\u0e43\u0e2b\u0e49\u0e15\u0e23\u0e07\u0e40\u0e2b\u0e15\u0e38 \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48 \"\u0e01\u0e23\u0e2d\u0e01\u0e44\u0e21\u0e48\u0e04\u0e23\u0e1a\"\r\n  if(y || hasAttemptedSubmit) markInvalid(\"birthdate\", T(complete ? \"vBirthInvalid\" : \"vBirth\"), \".birthdate-grid\", \"birthDay\");\r\n}\r\n\/\/ blur \u0e44\u0e21\u0e48 bubble \u0e08\u0e36\u0e07\u0e15\u0e49\u0e2d\u0e07\u0e14\u0e31\u0e01\u0e17\u0e35\u0e48 capture phase\r\ndocument.getElementById(\"regForm\").addEventListener(\"blur\", function(e){\r\n  var id = e.target && e.target.id;\r\n  if(BLUR_RULES[id]) runBlurCheck(id);\r\n  else if(id === \"birthYear\") runBirthdateCheck();\r\n}, true);\r\n\/\/ \u0e25\u0e07\u0e17\u0e30\u0e40\u0e1a\u0e35\u0e22\u0e19\u0e2b\u0e25\u0e31\u0e07 listener clearErrorFor \u0e14\u0e49\u0e32\u0e19\u0e1a\u0e19 \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e15\u0e23\u0e27\u0e08\u0e0b\u0e49\u0e33\u0e2b\u0e25\u0e31\u0e07\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e40\u0e14\u0e34\u0e21\u0e16\u0e39\u0e01\u0e25\u0e49\u0e32\u0e07\u0e41\u0e25\u0e49\u0e27\r\ndocument.getElementById(\"regForm\").addEventListener(\"change\", function(e){\r\n  var id = e.target && e.target.id;\r\n  if((id===\"birthDay\" || id===\"birthMonth\") && document.getElementById(\"birthYear\").value.trim()) runBirthdateCheck();\r\n});\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n\/\/ \u0e15\u0e23\u0e27\u0e08\u0e2a\u0e16\u0e32\u0e19\u0e30\u0e01\u0e32\u0e23\u0e2a\u0e21\u0e31\u0e04\u0e23\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\nfunction doCheckStatus(){\r\n  var code = document.getElementById(\"checkCodeInput\").value.trim().toUpperCase();\r\n  var phoneLast4 = document.getElementById(\"checkPhoneInput\").value.replace(\/\\D\/g, \"\");\r\n  var resEl = document.getElementById(\"checkResult\");\r\n  var btn   = document.getElementById(\"btnCheck\");\r\n  if(!code || !\/^\\d{4}$\/.test(phoneLast4)){\r\n    resEl.className = \"check-result not-found\";\r\n    resEl.style.display = \"block\";\r\n    resEl.innerHTML = \"\u26a0\ufe0f \" + (LANG===\"en\" ? \"Please enter the code and the last 4 phone digits.\" : \"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e01\u0e23\u0e2d\u0e01\u0e23\u0e2b\u0e31\u0e2a\u0e41\u0e25\u0e30\u0e40\u0e25\u0e02\u0e17\u0e49\u0e32\u0e22\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c 4 \u0e2b\u0e25\u0e31\u0e01\");\r\n    return;\r\n  }\r\n  btn.disabled = true;\r\n  resEl.className = \"check-result\";\r\n  resEl.style.display = \"block\";\r\n  resEl.innerHTML = \"\u23f3 \" + (LANG===\"en\" ? \"Searching\u2026\" : \"\u0e01\u0e33\u0e25\u0e31\u0e07\u0e04\u0e49\u0e19\u0e2b\u0e32\u2026\");\r\n  var cbName   = \"chkCb_\" + Date.now();\r\n  var scriptEl = null;\r\n  var timer    = setTimeout(function(){\r\n    cleanup();\r\n    btn.disabled = false;\r\n    resEl.className = \"check-result not-found\";\r\n    resEl.innerHTML = \"\u26a0\ufe0f \" + (LANG===\"en\" ? \"Request timed out. Please try again.\" : \"\u0e2b\u0e21\u0e14\u0e40\u0e27\u0e25\u0e32\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d \u0e01\u0e23\u0e38\u0e13\u0e32\u0e25\u0e2d\u0e07\u0e43\u0e2b\u0e21\u0e48\");\r\n  }, 20000);\r\n  function cleanup(){\r\n    clearTimeout(timer);\r\n    delete window[cbName];\r\n    if(scriptEl && scriptEl.parentNode) scriptEl.parentNode.removeChild(scriptEl);\r\n  }\r\n  window[cbName] = function(data){\r\n    cleanup();\r\n    btn.disabled = false;\r\n    if(data && data.ok){\r\n      resEl.className = \"check-result found\";\r\n      var isLang = LANG === \"en\";\r\n      var L = function(th,en){ return isLang ? en : th; };\r\n      resEl.innerHTML =\r\n        \"<div style='font-weight:700;font-size:15px;margin-bottom:10px;color:#1a6633'>\u2705 \"+L(\"\u0e1e\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e01\u0e32\u0e23\u0e2a\u0e21\u0e31\u0e04\u0e23\",\"Registration found\")+\"<\/div>\" +\r\n        \"<div class='check-result-code'>\"+esc2(code)+\"<\/div>\" +\r\n        \"<div style='margin-top:12px'>\" +\r\n        ckRow(L(\"\u0e0a\u0e37\u0e48\u0e2d-\u0e19\u0e32\u0e21\u0e2a\u0e01\u0e38\u0e25\",\"Full Name\"),     displayStoredName(data.name)) +\r\n        ckRow(L(\"\u0e40\u0e25\u0e02\u0e17\u0e35\u0e48\u0e43\u0e1a\u0e2a\u0e21\u0e31\u0e04\u0e23\",\"Registration No.\"), String(data.seqNo||\"\")) +\r\n        ckRow(L(\"\u0e27\u0e31\u0e19\u0e40\u0e27\u0e25\u0e32\u0e17\u0e35\u0e48\u0e2a\u0e21\u0e31\u0e04\u0e23\",\"Date & Time\"),   String(data.regDateTime||data.regDate||\"\")) +\r\n        (data.serviceLocation ? ckRow(L(\"\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\",\"Study Center\"), locDisplayName(data.serviceLocation)) : \"\") +\r\n        \"<\/div>\" +\r\n        \"<div style='margin-top:12px;font-size:13px;color:#2e7d52'>\"+\r\n          L(\"\ud83d\udccc \u0e01\u0e23\u0e38\u0e13\u0e32\u0e41\u0e08\u0e49\u0e07\u0e23\u0e2b\u0e31\u0e2a\u0e19\u0e35\u0e49\u0e41\u0e01\u0e48\u0e40\u0e08\u0e49\u0e32\u0e2b\u0e19\u0e49\u0e32\u0e17\u0e35\u0e48\u0e43\u0e19\u0e27\u0e31\u0e19\u0e2a\u0e21\u0e31\u0e04\u0e23\",\r\n            \"\ud83d\udccc Please present this code to staff on registration day\")+\"<\/div>\" +\r\n        \"<button type='button' class='btn-check' id='btnGoEdit' style='margin-top:14px;width:100%'>\u270f\ufe0f \"+\r\n          L(\"\u0e41\u0e01\u0e49\u0e44\u0e02\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\",\"Edit Information\")+\"<\/button>\";\r\n      var editBtn = document.getElementById(\"btnGoEdit\");\r\n      if(editBtn) editBtn.addEventListener(\"click\", function(){ startEditFlow(code, phoneLast4, editBtn); });\r\n    } else {\r\n      resEl.className = \"check-result not-found\";\r\n      resEl.innerHTML =\r\n        \"<div style='font-weight:700;font-size:15px;margin-bottom:6px;color:#8b1a1a'>\u274c \"+\r\n        (LANG===\"en\"?\"Registration not found\":\"\u0e44\u0e21\u0e48\u0e1e\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e01\u0e32\u0e23\u0e2a\u0e21\u0e31\u0e04\u0e23\")+\"<\/div>\" +\r\n        \"<div style='font-size:14px;margin-top:4px'>\"+\r\n        (LANG===\"en\"?\"Please check the code and phone digits, then try again.\"\r\n                    :\"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e23\u0e2b\u0e31\u0e2a\u0e41\u0e25\u0e30\u0e40\u0e25\u0e02\u0e17\u0e49\u0e32\u0e22\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c\u0e41\u0e25\u0e49\u0e27\u0e25\u0e2d\u0e07\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07\")+\"<\/div>\";\r\n    }\r\n  };\r\n  scriptEl = document.createElement(\"script\");\r\n  scriptEl.src = GAS_URL + \"?action=check&code=\" + encodeURIComponent(code) +\r\n    \"&phoneLast4=\" + encodeURIComponent(phoneLast4) + \"&language=\" + encodeURIComponent(LANG) +\r\n    \"&callback=\" + encodeURIComponent(cbName);\r\n  scriptEl.onerror = function(){\r\n    cleanup(); btn.disabled = false;\r\n    resEl.className = \"check-result not-found\";\r\n    resEl.innerHTML = \"\u26a0\ufe0f \" + (LANG===\"en\" ? \"Connection error. Please try again.\" : \"\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49 \u0e01\u0e23\u0e38\u0e13\u0e32\u0e25\u0e2d\u0e07\u0e43\u0e2b\u0e21\u0e48\");\r\n  };\r\n  document.body.appendChild(scriptEl);\r\n}\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n\/\/ \u0e41\u0e01\u0e49\u0e44\u0e02\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e40\u0e04\u0e22\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e44\u0e27\u0e49 \u2014 \u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e15\u0e31\u0e27\u0e14\u0e49\u0e27\u0e22\u0e23\u0e2b\u0e31\u0e2a+\u0e40\u0e1a\u0e2d\u0e23\u0e4c\u0e17\u0e49\u0e32\u0e22\u0e40\u0e14\u0e34\u0e21 (\u0e41\u0e1a\u0e1a\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e16\u0e32\u0e19\u0e30)\r\n\/\/ \u0e41\u0e25\u0e49\u0e27\u0e14\u0e36\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e21\u0e32\u0e40\u0e15\u0e34\u0e21\u0e1f\u0e2d\u0e23\u0e4c\u0e21\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e40\u0e14\u0e34\u0e21 \u0e43\u0e2b\u0e49\u0e41\u0e01\u0e49\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e08\u0e38\u0e14\u0e17\u0e35\u0e48\u0e1c\u0e34\u0e14\u0e41\u0e25\u0e49\u0e27\u0e01\u0e14\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e17\u0e31\u0e1a\u0e41\u0e16\u0e27\u0e40\u0e14\u0e34\u0e21 (\u0e44\u0e21\u0e48\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e41\u0e16\u0e27\u0e43\u0e2b\u0e21\u0e48)\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\nfunction startEditFlow(code, phoneLast4, btn){\r\n  if(btn) btn.disabled = true;\r\n  Swal.fire({\r\n    title: LANG===\"en\" ? \"Fetching your information\u2026\" : \"\u0e01\u0e33\u0e25\u0e31\u0e07\u0e14\u0e36\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u2026\",\r\n    allowOutsideClick: false,\r\n    didOpen: function(){ Swal.showLoading(); }\r\n  });\r\n  var body = \"action=getRecord&code=\"+encodeURIComponent(code)+\r\n    \"&phoneLast4=\"+encodeURIComponent(phoneLast4)+\"&language=\"+encodeURIComponent(LANG);\r\n  fetch(GAS_URL, { method:\"POST\", headers:{\"Content-Type\":\"application\/x-www-form-urlencoded;charset=UTF-8\"}, body:body })\r\n    .then(function(r){ if(!r.ok) throw new Error(\"HTTP \"+r.status); return r.json(); })\r\n    .then(function(data){\r\n      if(btn) btn.disabled = false;\r\n      Swal.close();\r\n      if(!data || !data.ok){\r\n        Swal.fire({icon:\"error\", title:T(\"errTitle\"), text:(data&&data.message)||T(\"retry\"), confirmButtonColor:\"#AD4970\"});\r\n        return;\r\n      }\r\n      applyRecordToForm(data, code, phoneLast4);\r\n    })\r\n    .catch(function(err){\r\n      if(btn) btn.disabled = false;\r\n      Swal.close();\r\n      Swal.fire({icon:\"error\", title:T(\"connErr\"), text:(err&&err.message)||T(\"connErrMsg\"), confirmButtonColor:\"#AD4970\"});\r\n    });\r\n}\r\n\/\/ \u0e40\u0e15\u0e34\u0e21\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e14\u0e36\u0e07\u0e21\u0e32\u0e25\u0e07\u0e43\u0e19\u0e1f\u0e2d\u0e23\u0e4c\u0e21\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e40\u0e14\u0e34\u0e21 \u0e41\u0e25\u0e49\u0e27\u0e2a\u0e25\u0e31\u0e1a\u0e40\u0e1b\u0e47\u0e19\u0e42\u0e2b\u0e21\u0e14\u0e41\u0e01\u0e49\u0e44\u0e02\r\nfunction applyRecordToForm(rec, code, phoneLast4){\r\n  resetForm();   \/\/ \u0e40\u0e23\u0e34\u0e48\u0e21\u0e08\u0e32\u0e01\u0e1f\u0e2d\u0e23\u0e4c\u0e21\u0e27\u0e48\u0e32\u0e07\u0e2a\u0e30\u0e2d\u0e32\u0e14\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e2a\u0e21\u0e2d (\u0e25\u0e49\u0e32\u0e07 isEditMode \u0e44\u0e1b\u0e14\u0e49\u0e27\u0e22 \u0e08\u0e36\u0e07\u0e15\u0e49\u0e2d\u0e07\u0e15\u0e31\u0e49\u0e07\u0e43\u0e2b\u0e21\u0e48\u0e14\u0e49\u0e32\u0e19\u0e25\u0e48\u0e32\u0e07)\r\n  isEditMode = true;\r\n  editAuth = { code: code, phoneLast4: phoneLast4 };\r\n\r\n  \/\/ \u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e15\u0e48\u0e32\u0e07\u0e0a\u0e32\u0e15\u0e34 (\u0e21\u0e35\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23 Passport\/TM.30) \u0e15\u0e49\u0e2d\u0e07\u0e1a\u0e31\u0e07\u0e04\u0e31\u0e1a\u0e40\u0e1b\u0e47\u0e19\u0e1f\u0e2d\u0e23\u0e4c\u0e21\u0e20\u0e32\u0e29\u0e32\u0e2d\u0e31\u0e07\u0e01\u0e24\u0e29\u0e40\u0e2a\u0e21\u0e2d\u0e15\u0e2d\u0e19\u0e41\u0e01\u0e49\u0e44\u0e02\r\n  \/\/ \u0e40\u0e1e\u0e23\u0e32\u0e30\u0e0a\u0e48\u0e2d\u0e07\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e15\u0e48\u0e32\u0e07\u0e0a\u0e32\u0e15\u0e34\u0e08\u0e30\u0e16\u0e39\u0e01\u0e2a\u0e48\u0e07\/\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e43\u0e2b\u0e21\u0e48\u0e01\u0e47\u0e15\u0e48\u0e2d\u0e40\u0e21\u0e37\u0e48\u0e2d LANG===\"en\" \u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19\r\n  \/\/ \u0e16\u0e49\u0e32\u0e1b\u0e25\u0e48\u0e2d\u0e22\u0e15\u0e32\u0e21\u0e20\u0e32\u0e29\u0e32\u0e1b\u0e31\u0e08\u0e08\u0e38\u0e1a\u0e31\u0e19\u0e02\u0e2d\u0e07\u0e2b\u0e19\u0e49\u0e32\u0e40\u0e27\u0e47\u0e1a (\u0e40\u0e0a\u0e48\u0e19 \u0e1c\u0e39\u0e49\u0e14\u0e39\u0e41\u0e25\u0e40\u0e1b\u0e34\u0e14\u0e40\u0e1b\u0e47\u0e19\u0e44\u0e17\u0e22\u0e2d\u0e22\u0e39\u0e48) \u0e01\u0e14\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e08\u0e30\u0e40\u0e02\u0e35\u0e22\u0e19\u0e17\u0e31\u0e1a\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e40\u0e14\u0e34\u0e21\u0e43\u0e2b\u0e49\u0e27\u0e48\u0e32\u0e07\u0e44\u0e1b\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e15\u0e31\u0e49\u0e07\u0e43\u0e08\r\n  if((rec.passportUrl || rec.visaExpiryUrl || rec.tm30Url) && LANG !== \"en\") setLanguage(\"en\");\r\n\r\n  setAppMode(\"register\", false);\r\n\r\n  var setVal = function(id, v){ var el=document.getElementById(id); if(el && v!=null) el.value = v; };\r\n  setVal(\"prefix\",    rec.prefix);\r\n  setVal(\"firstName\", rec.firstName);\r\n  setVal(\"lastName\",  rec.lastName);\r\n  setVal(\"temple\",    rec.temple);\r\n  setVal(\"phone\",     rec.phone);\r\n  setVal(\"education\", rec.education);\r\n  setVal(\"pali\",      rec.pali);\r\n  setVal(\"dhamma\",    rec.dhamma);\r\n  setVal(\"address\",   rec.address);\r\n  setVal(\"soi\",       rec.soi);\r\n  onPrefixChange();\r\n  translateOptions(LANG);\r\n\r\n  var bParts = String(rec.birthdate || \"\").split(\"\/\");\r\n  if(bParts.length === 3){\r\n    var yearBE = parseInt(bParts[2], 10);\r\n    \/\/ \u0e04\u0e48\u0e32\u0e17\u0e35\u0e48\u0e40\u0e01\u0e47\u0e1a\u0e44\u0e27\u0e49\u0e40\u0e1b\u0e47\u0e19 \u0e1e.\u0e28. \u0e40\u0e2a\u0e21\u0e2d \u0e41\u0e15\u0e48\u0e0a\u0e48\u0e2d\u0e07\u0e1b\u0e35\u0e43\u0e19\u0e42\u0e2b\u0e21\u0e14\u0e2d\u0e31\u0e07\u0e01\u0e24\u0e29\u0e41\u0e2a\u0e14\u0e07\u0e40\u0e1b\u0e47\u0e19 \u0e04.\u0e28. \u2014 \u0e41\u0e1b\u0e25\u0e07\u0e43\u0e2b\u0e49\u0e15\u0e23\u0e07\u0e15\u0e32\u0e21\u0e17\u0e35\u0e48 setLanguage \u0e17\u0e33\r\n    var displayYear = (LANG === \"en\" && yearBE > 2400) ? String(yearBE - 543) : bParts[2];\r\n    setVal(\"birthDay\",   bParts[0]);\r\n    setVal(\"birthMonth\", bParts[1]);\r\n    setVal(\"birthYear\",  displayYear);\r\n  }\r\n  syncBirthdate();\r\n\r\n  \/\/ \u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14\/\u0e2d\u0e33\u0e40\u0e20\u0e2d\/\u0e15\u0e33\u0e1a\u0e25\/\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23 \u0e15\u0e31\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e42\u0e2b\u0e25\u0e14\u0e08\u0e32\u0e01 CDN\/\u0e0a\u0e35\u0e15\u0e41\u0e1a\u0e1a async \u2014 \u0e43\u0e0a\u0e49\u0e15\u0e31\u0e27\u0e0a\u0e48\u0e27\u0e22\u0e15\u0e31\u0e27\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e01\u0e39\u0e49\u0e23\u0e48\u0e32\u0e07\r\n  \/\/ \u0e17\u0e35\u0e48\u0e23\u0e2d\u0e08\u0e19\u0e01\u0e27\u0e48\u0e32 <option> \u0e08\u0e30\u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e41\u0e25\u0e49\u0e27\u0e04\u0e48\u0e2d\u0e22\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32+\u0e44\u0e25\u0e48 cascade \u0e15\u0e48\u0e2d\u0e01\u0e31\u0e19\u0e40\u0e1b\u0e47\u0e19\u0e17\u0e2d\u0e14 \u0e46\r\n  \/\/ draftAborted \u0e40\u0e1b\u0e47\u0e19\u0e2a\u0e27\u0e34\u0e15\u0e0a\u0e4c\u0e17\u0e32\u0e07\u0e40\u0e14\u0e35\u0e22\u0e27 (\u0e15\u0e31\u0e49\u0e07 true \u0e15\u0e2d\u0e19\u0e01\u0e14 \"\u0e25\u0e49\u0e32\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\" \u0e02\u0e2d\u0e07\u0e23\u0e48\u0e32\u0e07\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e43\u0e2b\u0e21\u0e48 \u0e41\u0e25\u0e49\u0e27\u0e44\u0e21\u0e48\u0e40\u0e04\u0e22\u0e16\u0e39\u0e01\u0e23\u0e35\u0e40\u0e0b\u0e47\u0e15\u0e2d\u0e35\u0e01\u0e40\u0e25\u0e22\r\n  \/\/ \u0e17\u0e31\u0e49\u0e07\u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19) \u0e16\u0e49\u0e32\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e40\u0e04\u0e22\u0e01\u0e14\u0e25\u0e49\u0e32\u0e07\u0e23\u0e48\u0e32\u0e07\u0e21\u0e32\u0e01\u0e48\u0e2d\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e19\u0e35\u0e49\u0e43\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e19 draftSetSelect \u0e14\u0e49\u0e32\u0e19\u0e25\u0e48\u0e32\u0e07\u0e08\u0e30\u0e44\u0e21\u0e48\u0e17\u0e33\u0e07\u0e32\u0e19\u0e40\u0e07\u0e35\u0e22\u0e1a \u0e46\r\n  \/\/ \u0e08\u0e36\u0e07\u0e15\u0e49\u0e2d\u0e07\u0e23\u0e35\u0e40\u0e0b\u0e47\u0e15\u0e43\u0e2b\u0e49\u0e01\u0e48\u0e2d\u0e19\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e23\u0e2d\u0e1a\u0e19\u0e35\u0e49 \u2014 \u0e44\u0e21\u0e48\u0e01\u0e23\u0e30\u0e17\u0e1a\u0e23\u0e30\u0e1a\u0e1a\u0e01\u0e39\u0e49\u0e23\u0e48\u0e32\u0e07\u0e40\u0e14\u0e34\u0e21\u0e40\u0e1e\u0e23\u0e32\u0e30\u0e21\u0e31\u0e19\u0e23\u0e31\u0e19\u0e41\u0e04\u0e48\u0e04\u0e23\u0e31\u0e49\u0e07\u0e40\u0e14\u0e35\u0e22\u0e27\u0e15\u0e2d\u0e19\u0e42\u0e2b\u0e25\u0e14\u0e2b\u0e19\u0e49\u0e32\u0e44\u0e1b\u0e41\u0e25\u0e49\u0e27\r\n  draftAborted = false;\r\n  draftSetSelect(\"serviceLocation\", rec.serviceLocation);\r\n  draftSetSelect(\"province\", rec.province, function(){\r\n    draftSetSelect(\"district\", rec.district, function(){\r\n      draftSetSelect(\"subdistrict\", rec.subdistrict, function(){\r\n        var pc = document.getElementById(\"postalCode\");\r\n        if(pc) pc.value = rec.postalCode || \"\";\r\n      });\r\n    });\r\n  });\r\n\r\n  \/\/ \u0e23\u0e39\u0e1b\/\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23 \u2014 \u0e43\u0e0a\u0e49 URL \u0e40\u0e14\u0e34\u0e21\u0e17\u0e35\u0e48\u0e40\u0e04\u0e22\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e44\u0e27\u0e49\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e0b\u0e49\u0e33 (cachedUpload \u0e08\u0e30\u0e04\u0e37\u0e19 URL \u0e19\u0e35\u0e49\u0e17\u0e31\u0e19\u0e17\u0e35)\r\n  \/\/ \u0e08\u0e19\u0e01\u0e27\u0e48\u0e32\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e08\u0e30\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e44\u0e1f\u0e25\u0e4c\u0e43\u0e2b\u0e21\u0e48\u0e2b\u0e23\u0e37\u0e2d\u0e01\u0e14\u0e25\u0e1a\u0e40\u0e2d\u0e07\r\n  if(rec.imageUrl){\r\n    photoBase64 = rec.imageUrl;\r\n    uploadedUrls.photo = rec.imageUrl; uploadedSrc.photo = rec.imageUrl;\r\n    document.getElementById(\"photoImg\").src = rec.imageUrl;\r\n    document.getElementById(\"photoImg\").style.display = \"block\";\r\n    document.getElementById(\"photoPlaceholder\").style.display = \"none\";\r\n    document.getElementById(\"btnPhotoRemove\").hidden = false;\r\n  }\r\n  [[\"passport\", rec.passportUrl], [\"visaExpiry\", rec.visaExpiryUrl], [\"tm30\", rec.tm30Url]].forEach(function(pair){\r\n    var kind = pair[0], url = pair[1];\r\n    if(!url) return;\r\n    if(kind === \"passport\") passportBase64 = url;\r\n    else if(kind === \"visaExpiry\") visaExpiryBase64 = url;\r\n    else tm30Base64 = url;\r\n    uploadedUrls[kind] = url; uploadedSrc[kind] = url;\r\n    var ui = docUI(kind);\r\n    ui.img.src = url; ui.img.style.display = \"block\";\r\n    ui.placeholder.style.display = \"none\";\r\n    ui.name.textContent = LANG === \"en\" ? \"\u2713 Existing file kept\" : \"\u2713 \u0e43\u0e0a\u0e49\u0e44\u0e1f\u0e25\u0e4c\u0e40\u0e14\u0e34\u0e21\";\r\n    ui.name.style.display = \"block\";\r\n    ui.remove.hidden = false;\r\n  });\r\n  updateUploadSummary();\r\n\r\n  var bar = document.getElementById(\"editModeBar\");\r\n  if(bar){\r\n    document.getElementById(\"editModeBarTitle\").textContent =\r\n      (LANG === \"en\" ? \"Editing registration No. \" : \"\u0e01\u0e33\u0e25\u0e31\u0e07\u0e41\u0e01\u0e49\u0e44\u0e02\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e40\u0e25\u0e02\u0e17\u0e35\u0e48 \") + (rec.seqNo || \"\");\r\n    document.getElementById(\"editModeBarNote\").textContent = LANG === \"en\"\r\n      ? \"Change only what's wrong, then save below.\"\r\n      : \"\u0e41\u0e01\u0e49\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e08\u0e38\u0e14\u0e17\u0e35\u0e48\u0e1c\u0e34\u0e14 \u0e41\u0e25\u0e49\u0e27\u0e01\u0e14\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e14\u0e49\u0e32\u0e19\u0e25\u0e48\u0e32\u0e07\";\r\n    document.getElementById(\"editModeCancelBtn\").textContent = LANG === \"en\" ? \"Cancel\" : \"\u0e22\u0e01\u0e40\u0e25\u0e34\u0e01\";\r\n    bar.hidden = false;\r\n  }\r\n  var submitTxt = document.getElementById(\"submitBtnText\");\r\n  if(submitTxt) submitTxt.textContent = LANG === \"en\" ? \"Review Changes\" : \"\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e01\u0e48\u0e2d\u0e19\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\";\r\n\r\n  setTimeout(function(){\r\n    var target = document.getElementById(\"cardPersonal\");\r\n    if(target) target.scrollIntoView({behavior:\"smooth\", block:\"start\"});\r\n  }, 50);\r\n}\r\nfunction cancelEditMode(){\r\n  resetForm();\r\n  setAppMode(\"status\", true);\r\n}\r\nfunction displayStoredName(name){\r\n  var value=String(name||\"\");\r\n  if(LANG!==\"en\" || !value || !OPT_EN || !OPT_EN.prefix) return value;\r\n  var prefixes=Object.keys(OPT_EN.prefix).filter(function(k){return !!k;}).sort(function(a,b){return b.length-a.length;});\r\n  for(var i=0;i<prefixes.length;i++){\r\n    var th=prefixes[i];\r\n    if(value===th || value.indexOf(th+\" \")===0){\r\n      return OPT_EN.prefix[th]+value.substring(th.length);\r\n    }\r\n  }\r\n  return value;\r\n}\r\nfunction ckRow(label, value){\r\n  return '<div class=\"check-result-row\"><div class=\"check-result-label\">'+esc2(label)+'<\/div><div class=\"check-result-value\">'+esc2(value||\"\u2014\")+'<\/div><\/div>';\r\n}\r\n\/\/ Enter \u0e43\u0e19\u0e0a\u0e48\u0e2d\u0e07\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e16\u0e32\u0e19\u0e30\r\n[\"checkCodeInput\",\"checkPhoneInput\"].forEach(function(id){\r\n  document.getElementById(id).addEventListener(\"keydown\", function(e){\r\n    if(e.key === \"Enter\"){ e.preventDefault(); doCheckStatus(); }\r\n  });\r\n});\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n\/\/ i18n\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\nvar LANG = \"th\";\r\nvar I18N = {\r\n  th: {\r\n    heroTitle:\"\u0e41\u0e1a\u0e1a\u0e1f\u0e2d\u0e23\u0e4c\u0e21\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e40\u0e23\u0e35\u0e22\u0e19\u0e1e\u0e23\u0e30\u0e2d\u0e20\u0e34\u0e18\u0e23\u0e23\u0e21\",\r\n    heroSub:\"\u0e01\u0e23\u0e2d\u0e01\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e43\u0e2b\u0e49\u0e04\u0e23\u0e1a\u0e16\u0e49\u0e27\u0e19 \u2014 \u0e23\u0e30\u0e1a\u0e1a\u0e08\u0e30\u0e2d\u0e2d\u0e01\u0e23\u0e2b\u0e31\u0e2a\u0e0a\u0e31\u0e48\u0e27\u0e04\u0e23\u0e32\u0e27\u0e43\u0e2b\u0e49\u0e2b\u0e25\u0e31\u0e07\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08\",\r\n    secPersonal:\"\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2a\u0e48\u0e27\u0e19\u0e15\u0e31\u0e27\", secAddress:\"\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e1b\u0e31\u0e08\u0e08\u0e38\u0e1a\u0e31\u0e19\",\r\n    secLocation:\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\/\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\",\r\n    secPhoto:\"\u0e23\u0e39\u0e1b\u0e16\u0e48\u0e32\u0e22\", secCheck:\"\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e2a\u0e16\u0e32\u0e19\u0e30\u0e01\u0e32\u0e23\u0e2a\u0e21\u0e31\u0e04\u0e23\",\r\n    lbPrefix:\"\u0e04\u0e33\u0e19\u0e33\u0e2b\u0e19\u0e49\u0e32\", firstNameLabel:\"\u0e0a\u0e37\u0e48\u0e2d\", lastNameLabel:\"\u0e19\u0e32\u0e21\u0e2a\u0e01\u0e38\u0e25\",\r\n    lbTemple:\"\u0e27\u0e31\u0e14 \/ \u0e2a\u0e33\u0e19\u0e31\u0e01\", lbBirthdate:\"\u0e27\u0e31\u0e19\u0e40\u0e14\u0e37\u0e2d\u0e19\u0e1b\u0e35\u0e40\u0e01\u0e34\u0e14 (\u0e1e.\u0e28.)\", lbPhone:\"\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c\",\r\n    lbEducation:\"\u0e27\u0e38\u0e12\u0e34\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32\u0e2a\u0e32\u0e21\u0e31\u0e0d\", lbPali:\"\u0e40\u0e1b\u0e23\u0e35\u0e22\u0e0d\u0e18\u0e23\u0e23\u0e21 (\u0e1a\u0e32\u0e25\u0e35)\",\r\n    lbDhamma:\"\u0e19\u0e31\u0e01\u0e18\u0e23\u0e23\u0e21 \/ \u0e18\u0e23\u0e23\u0e21\u0e28\u0e36\u0e01\u0e29\u0e32\", lbAddress:\"\u0e40\u0e25\u0e02\u0e17\u0e35\u0e48\", lbSoi:\"\u0e0b\u0e2d\u0e22 \/ \u0e2b\u0e21\u0e39\u0e48\",\r\n    lbProvince:\"\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14\", lbDistrict:\"\u0e2d\u0e33\u0e40\u0e20\u0e2d \/ \u0e40\u0e02\u0e15\", lbSubdistrict:\"\u0e15\u0e33\u0e1a\u0e25 \/ \u0e41\u0e02\u0e27\u0e07\",\r\n    lbPostal:\"\u0e23\u0e2b\u0e31\u0e2a\u0e44\u0e1b\u0e23\u0e29\u0e13\u0e35\u0e22\u0e4c\", lbServiceLocation:\"\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e2a\u0e30\u0e14\u0e27\u0e01\u0e40\u0e14\u0e34\u0e19\u0e17\u0e32\u0e07\",\r\n    lbCheckCode:\"\u0e01\u0e23\u0e2d\u0e01\u0e23\u0e2b\u0e31\u0e2a\u0e0a\u0e31\u0e48\u0e27\u0e04\u0e23\u0e32\u0e27\u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e2b\u0e25\u0e31\u0e07\u0e2a\u0e21\u0e31\u0e04\u0e23\",\r\n    lbCheckPhone:\"\u0e40\u0e25\u0e02\u0e17\u0e49\u0e32\u0e22\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c 4 \u0e2b\u0e25\u0e31\u0e01\u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23\",\r\n    phCheckCode:\"0001\", phCheckPhone:\"1234\",\r\n    paymentNoteText:\"\u0e15\u0e34\u0e14\u0e15\u0e48\u0e2d\u0e2a\u0e2d\u0e1a\u0e16\u0e32\u0e21\", lineBtnText:\"\u0e15\u0e34\u0e14\u0e15\u0e48\u0e2d LINE Official Account\",\r\n    btnPhoto:\"\ud83d\udcf7 \u0e40\u0e25\u0e37\u0e2d\u0e01\u0e23\u0e39\u0e1b\u0e20\u0e32\u0e1e\", btnPhotoCamera:\"\ud83d\udcf8 \u0e16\u0e48\u0e32\u0e22\u0e20\u0e32\u0e1e\", photoPlaceholderText:\"\u0e04\u0e25\u0e34\u0e01\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\",\r\n    docRequired:\"\u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19\", docRemove:\"\u0e25\u0e1a\u0e44\u0e1f\u0e25\u0e4c\",\r\n    photoHint:\"\u2022 \u0e23\u0e39\u0e1b\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e23\u0e07 \u0e02\u0e19\u0e32\u0e14 1 \u0e19\u0e34\u0e49\u0e27 \u0e2b\u0e23\u0e37\u0e2d 3x4 \u0e0b\u0e21.<br>\u2022 \u0e44\u0e1f\u0e25\u0e4c JPG, PNG \u0e02\u0e19\u0e32\u0e14\u0e44\u0e21\u0e48\u0e40\u0e01\u0e34\u0e19 10 MB<br>\u2022 \u0e41\u0e15\u0e48\u0e07\u0e01\u0e32\u0e22\u0e2a\u0e38\u0e20\u0e32\u0e1e \/ \u0e04\u0e23\u0e2d\u0e07\u0e08\u0e35\u0e27\u0e23\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e1e\u0e23\u0e30\u0e2a\u0e07\u0e06\u0e4c\",\r\n    consentText:\"\u0e02\u0e49\u0e32\u0e1e\u0e40\u0e08\u0e49\u0e32\u0e22\u0e34\u0e19\u0e22\u0e2d\u0e21\u0e43\u0e2b\u0e49\u0e2d\u0e20\u0e34\u0e18\u0e23\u0e23\u0e21\u0e42\u0e0a\u0e15\u0e34\u0e01\u0e30\u0e27\u0e34\u0e17\u0e22\u0e32\u0e25\u0e31\u0e22 \u0e21\u0e2b\u0e32\u0e27\u0e34\u0e17\u0e22\u0e32\u0e25\u0e31\u0e22\u0e21\u0e2b\u0e32\u0e08\u0e38\u0e2c\u0e32\u0e25\u0e07\u0e01\u0e23\u0e13\u0e23\u0e32\u0e0a\u0e27\u0e34\u0e17\u0e22\u0e32\u0e25\u0e31\u0e22 \u0e40\u0e01\u0e47\u0e1a\u0e23\u0e27\u0e1a\u0e23\u0e27\u0e21\u0e41\u0e25\u0e30\u0e43\u0e0a\u0e49\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2a\u0e48\u0e27\u0e19\u0e1a\u0e38\u0e04\u0e04\u0e25\u0e17\u0e35\u0e48\u0e43\u0e2b\u0e49\u0e44\u0e27\u0e49\u0e43\u0e19\u0e41\u0e1a\u0e1a\u0e1f\u0e2d\u0e23\u0e4c\u0e21\u0e19\u0e35\u0e49 \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e27\u0e31\u0e15\u0e16\u0e38\u0e1b\u0e23\u0e30\u0e2a\u0e07\u0e04\u0e4c\u0e43\u0e19\u0e01\u0e32\u0e23\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e40\u0e23\u0e35\u0e22\u0e19 \u0e01\u0e32\u0e23\u0e15\u0e34\u0e14\u0e15\u0e48\u0e2d\u0e2a\u0e37\u0e48\u0e2d\u0e2a\u0e32\u0e23 \u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32 \u0e15\u0e32\u0e21\u0e1e\u0e23\u0e30\u0e23\u0e32\u0e0a\u0e1a\u0e31\u0e0d\u0e0d\u0e31\u0e15\u0e34\u0e04\u0e38\u0e49\u0e21\u0e04\u0e23\u0e2d\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2a\u0e48\u0e27\u0e19\u0e1a\u0e38\u0e04\u0e04\u0e25 \u0e1e.\u0e28. \u0e52\u0e55\u0e56\u0e52\",\r\n    consentLabel:'\u0e02\u0e49\u0e32\u0e1e\u0e40\u0e08\u0e49\u0e32\u0e2d\u0e48\u0e32\u0e19\u0e41\u0e25\u0e30\u0e22\u0e34\u0e19\u0e22\u0e2d\u0e21\u0e15\u0e32\u0e21\u0e40\u0e07\u0e37\u0e48\u0e2d\u0e19\u0e44\u0e02\u0e02\u0e49\u0e32\u0e07\u0e15\u0e49\u0e19 <span style=\"color:var(--mcru)\">*<\/span>',\r\n    submitBtn:\"\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e01\u0e48\u0e2d\u0e19\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\",\r\n    formNote:'* \u0e1a\u0e31\u0e07\u0e04\u0e31\u0e1a\u0e01\u0e23\u0e2d\u0e01 &nbsp;|&nbsp; \u0e2b\u0e25\u0e31\u0e07\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08\u0e23\u0e30\u0e1a\u0e1a\u0e08\u0e30\u0e41\u0e2a\u0e14\u0e07 <strong>\u0e23\u0e2b\u0e31\u0e2a\u0e0a\u0e31\u0e48\u0e27\u0e04\u0e23\u0e32\u0e27<\/strong> \u0e42\u0e1b\u0e23\u0e14\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e44\u0e27\u0e49',\r\n    rvTitle:\"\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e01\u0e48\u0e2d\u0e19\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\", rvSubtitle:\"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e43\u0e2b\u0e49\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e48\u0e2d\u0e19\u0e01\u0e14\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\",\r\n    rvBack:\"\u0e41\u0e01\u0e49\u0e44\u0e02\", rvConfirm:\"\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e01\u0e32\u0e23\u0e2a\u0e21\u0e31\u0e04\u0e23\",\r\n    checkBtnText:\"\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\",\r\n    phFirstName:\"\u0e0a\u0e37\u0e48\u0e2d \/ \u0e09\u0e32\u0e22\u0e32\", phLastName:\"\u0e19\u0e32\u0e21\u0e2a\u0e01\u0e38\u0e25\", phTemple:\"\u0e0a\u0e37\u0e48\u0e2d\u0e27\u0e31\u0e14 \/ \u0e2a\u0e33\u0e19\u0e31\u0e01\",\r\n    phAddress:\"\u0e1a\u0e49\u0e32\u0e19\u0e40\u0e25\u0e02\u0e17\u0e35\u0e48\", phSoi:\"\u0e0b\u0e2d\u0e22 \/ \u0e2b\u0e21\u0e39\u0e48\u0e1a\u0e49\u0e32\u0e19\", phProvince:\"\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14\", phProvinceSearch:\"\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e0a\u0e37\u0e48\u0e2d\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14 \u0e40\u0e0a\u0e48\u0e19 \u0e40\u0e0a\u0e35\u0e22\u0e07\u0e43\u0e2b\u0e21\u0e48\", provNoMatch:\"\u0e44\u0e21\u0e48\u0e1e\u0e1a\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14\u0e17\u0e35\u0e48\u0e15\u0e23\u0e07\u0e01\u0e31\u0e1a\u0e17\u0e35\u0e48\u0e1e\u0e34\u0e21\u0e1e\u0e4c\", phDistrict:\"\u0e2d\u0e33\u0e40\u0e20\u0e2d\/\u0e40\u0e02\u0e15\", phSubdistrict:\"\u0e15\u0e33\u0e1a\u0e25\/\u0e41\u0e02\u0e27\u0e07\", phPostal:\"\u0e40\u0e15\u0e34\u0e21\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34\",\r\n    bdDay:\"\u0e27\u0e31\u0e19\", bdMonth:\"\u0e40\u0e14\u0e37\u0e2d\u0e19\", phBirthYear:\"\u0e1b\u0e35 2510\",\r\n    selProvince:\"\u2014 \u0e40\u0e25\u0e37\u0e2d\u0e01\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14 \u2014\", selDistrict:\"\u2014 \u0e40\u0e25\u0e37\u0e2d\u0e01\u0e2d\u0e33\u0e40\u0e20\u0e2d\/\u0e40\u0e02\u0e15 \u2014\",\r\n    selDistrictWait:\"\u2014 \u0e40\u0e25\u0e37\u0e2d\u0e01\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14\u0e01\u0e48\u0e2d\u0e19 \u2014\", selSubdistrict:\"\u2014 \u0e40\u0e25\u0e37\u0e2d\u0e01\u0e15\u0e33\u0e1a\u0e25\/\u0e41\u0e02\u0e27\u0e07 \u2014\",\r\n    selSubWait:\"\u2014 \u0e40\u0e25\u0e37\u0e2d\u0e01\u0e2d\u0e33\u0e40\u0e20\u0e2d\u0e01\u0e48\u0e2d\u0e19 \u2014\", selService:\"\u2014 \u0e40\u0e25\u0e37\u0e2d\u0e01\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23 \u2014\", selServiceNone:\"\u2014 \u0e44\u0e21\u0e48\u0e1e\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23 \u2014\",\r\n    photoWrongType:\"\u0e0a\u0e19\u0e34\u0e14\u0e44\u0e1f\u0e25\u0e4c\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\", photoWrongTypeMsg:\"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e23\u0e39\u0e1b JPG \u0e2b\u0e23\u0e37\u0e2d PNG \u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19\",\r\n    photoTooBig:\"\u0e44\u0e1f\u0e25\u0e4c\u0e43\u0e2b\u0e0d\u0e48\u0e40\u0e01\u0e34\u0e19\u0e44\u0e1b\", photoTooBigMsg:\"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e23\u0e39\u0e1b\u0e02\u0e19\u0e32\u0e14\u0e44\u0e21\u0e48\u0e40\u0e01\u0e34\u0e19 10 MB\",\r\n    photoReadFail:\"\u0e40\u0e1b\u0e34\u0e14\u0e44\u0e1f\u0e25\u0e4c\u0e23\u0e39\u0e1b\u0e44\u0e21\u0e48\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08\", photoReadFailMsg:\"\u0e44\u0e1f\u0e25\u0e4c\u0e2d\u0e32\u0e08\u0e40\u0e2a\u0e35\u0e22\u0e2b\u0e32\u0e22\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48\u0e23\u0e2d\u0e07\u0e23\u0e31\u0e1a \u0e01\u0e23\u0e38\u0e13\u0e32\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e23\u0e39\u0e1b\u0e43\u0e2b\u0e21\u0e48\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07\",\r\n    copyFail:\"\u0e04\u0e31\u0e14\u0e25\u0e2d\u0e01\u0e44\u0e21\u0e48\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08 \u0e01\u0e23\u0e38\u0e13\u0e32\u0e01\u0e14\u0e04\u0e49\u0e32\u0e07\u0e17\u0e35\u0e48\u0e23\u0e2b\u0e31\u0e2a\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e04\u0e31\u0e14\u0e25\u0e2d\u0e01\u0e40\u0e2d\u0e07\",\r\n    uploading1:\"\u0e01\u0e33\u0e25\u0e31\u0e07\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e23\u0e39\u0e1b\u0e20\u0e32\u0e1e\u2026\", uploading1sub:\"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e23\u0e2d\u0e2a\u0e31\u0e01\u0e04\u0e23\u0e39\u0e48 (\u0e02\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19 1\/2)\",\r\n    uploading2:\"\u0e01\u0e33\u0e25\u0e31\u0e07\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u2026\", uploading2sub:\"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e23\u0e2d\u0e2a\u0e31\u0e01\u0e04\u0e23\u0e39\u0e48 (\u0e02\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19 2\/2)\",\r\n    uploadFail:\"\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e23\u0e39\u0e1b\u0e44\u0e21\u0e48\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08\", timeout:\"\u0e2b\u0e21\u0e14\u0e40\u0e27\u0e25\u0e32\",\r\n    timeoutMsg:\"\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e15\u0e2d\u0e1a\u0e01\u0e25\u0e31\u0e1a\u0e08\u0e32\u0e01\u0e23\u0e30\u0e1a\u0e1a \u0e01\u0e23\u0e38\u0e13\u0e32\u0e25\u0e2d\u0e07\u0e43\u0e2b\u0e21\u0e48\",\r\n    connErr:\"\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\", connErrMsg:\"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e2d\u0e34\u0e19\u0e40\u0e17\u0e2d\u0e23\u0e4c\u0e40\u0e19\u0e47\u0e15\u0e41\u0e25\u0e49\u0e27\u0e25\u0e2d\u0e07\u0e43\u0e2b\u0e21\u0e48\",\r\n    errTitle:\"\u0e40\u0e01\u0e34\u0e14\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\", retry:\"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e25\u0e2d\u0e07\u0e43\u0e2b\u0e21\u0e48\",\r\n    regBusy:\"\u0e23\u0e30\u0e1a\u0e1a\u0e01\u0e33\u0e25\u0e31\u0e07\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e02\u0e2d\u0e07\u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e17\u0e48\u0e32\u0e19\u0e2d\u0e37\u0e48\u0e19\u2026\",\r\n    regBusySub:\"\u0e01\u0e33\u0e25\u0e31\u0e07\u0e2a\u0e48\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e02\u0e2d\u0e07\u0e17\u0e48\u0e32\u0e19\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07\u0e42\u0e14\u0e22\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34<br>\u0e01\u0e23\u0e38\u0e13\u0e32\u0e2d\u0e22\u0e48\u0e32\u0e1b\u0e34\u0e14\u0e2b\u0e19\u0e49\u0e32\u0e19\u0e35\u0e49\",\r\n    successTitle:\"\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e40\u0e23\u0e35\u0e22\u0e19\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08! \ud83c\udf89\", successDate:\"\u0e27\u0e31\u0e19\u0e40\u0e27\u0e25\u0e32\u0e17\u0e35\u0e48\u0e2a\u0e21\u0e31\u0e04\u0e23\", successSeq:\"\u0e40\u0e25\u0e02\u0e17\u0e35\u0e48\",\r\n    successCodeLabel:\"\u0e23\u0e2b\u0e31\u0e2a\u0e0a\u0e31\u0e48\u0e27\u0e04\u0e23\u0e32\u0e27\u0e02\u0e2d\u0e07\u0e17\u0e48\u0e32\u0e19\u0e04\u0e37\u0e2d\",\r\n    successCodeNote:\"\ud83d\udccc \u0e01\u0e23\u0e38\u0e13\u0e32\u0e08\u0e14\u0e23\u0e2b\u0e31\u0e2a\u0e19\u0e35\u0e49\u0e44\u0e27\u0e49 \u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e16\u0e32\u0e19\u0e30\u0e2d\u0e2d\u0e19\u0e44\u0e25\u0e19\u0e4c\u0e15\u0e49\u0e2d\u0e07\u0e43\u0e0a\u0e49\u0e40\u0e25\u0e02\u0e17\u0e49\u0e32\u0e22\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c 4 \u0e2b\u0e25\u0e31\u0e01\u0e23\u0e48\u0e27\u0e21\u0e14\u0e49\u0e27\u0e22\",\r\n    successConfirm:\"\u0e23\u0e31\u0e1a\u0e17\u0e23\u0e32\u0e1a \u2713\",\r\n    validTitle:\"\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e44\u0e21\u0e48\u0e04\u0e23\u0e1a\u0e16\u0e49\u0e27\u0e19\",\r\n    vPrefix:\"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e04\u0e33\u0e19\u0e33\u0e2b\u0e19\u0e49\u0e32\", vFirstName:\"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e01\u0e23\u0e2d\u0e01\u0e0a\u0e37\u0e48\u0e2d\/\u0e09\u0e32\u0e22\u0e32\",\r\n    vBirth:\"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e01\u0e23\u0e2d\u0e01\u0e27\u0e31\u0e19\u0e40\u0e14\u0e37\u0e2d\u0e19\u0e1b\u0e35\u0e40\u0e01\u0e34\u0e14\u0e43\u0e2b\u0e49\u0e04\u0e23\u0e1a (\u0e1b\u0e35 \u0e1e.\u0e28. 4 \u0e2b\u0e25\u0e31\u0e01)\",\r\n    vBirthInvalid:\"\u0e27\u0e31\u0e19\u0e40\u0e14\u0e37\u0e2d\u0e19\u0e1b\u0e35\u0e40\u0e01\u0e34\u0e14\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07 \u0e01\u0e23\u0e38\u0e13\u0e32\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07\",\r\n    vPhone:\"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e01\u0e23\u0e2d\u0e01\u0e40\u0e1a\u0e2d\u0e23\u0e4c\u0e42\u0e17\u0e23 9\u201310 \u0e2b\u0e25\u0e31\u0e01\",\r\n    vAddress:\"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e01\u0e23\u0e2d\u0e01\u0e40\u0e25\u0e02\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\", vProvince:\"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14\",\r\n    vDistrict:\"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e2d\u0e33\u0e40\u0e20\u0e2d\/\u0e40\u0e02\u0e15\", vSubdistrict:\"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e15\u0e33\u0e1a\u0e25\/\u0e41\u0e02\u0e27\u0e07\",\r\n    vPostal:\"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e01\u0e23\u0e2d\u0e01\u0e23\u0e2b\u0e31\u0e2a\u0e44\u0e1b\u0e23\u0e29\u0e13\u0e35\u0e22\u0e4c 5 \u0e2b\u0e25\u0e31\u0e01\", vService:\"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\/\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\",\r\n    vConsent:\"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e22\u0e34\u0e19\u0e22\u0e2d\u0e21\u0e15\u0e32\u0e21\u0e40\u0e07\u0e37\u0e48\u0e2d\u0e19\u0e44\u0e02\", vPhoto:\"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e23\u0e39\u0e1b\u0e16\u0e48\u0e32\u0e22\",\r\n    vPassport:\"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e1e\u0e32\u0e2a\u0e1b\u0e2d\u0e23\u0e4c\u0e15\u0e2b\u0e19\u0e49\u0e32\u0e41\u0e23\u0e01\", vVisaExpiry:\"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e2b\u0e19\u0e49\u0e32\u0e17\u0e35\u0e48\u0e21\u0e35\u0e27\u0e31\u0e19\u0e2b\u0e21\u0e14\u0e2d\u0e32\u0e22\u0e38\u0e27\u0e35\u0e0b\u0e48\u0e32\", vTM30:\"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23 TM.30\",\r\n    monkFirstName:\"\u0e0a\u0e37\u0e48\u0e2d \/ \u0e09\u0e32\u0e22\u0e32\",\r\n    optOpt:\"\u0e44\u0e21\u0e48\u0e1a\u0e31\u0e07\u0e04\u0e31\u0e1a\", optLayEdu:\"\u0e17\u0e32\u0e07\u0e42\u0e25\u0e01 \u2014 \u0e44\u0e21\u0e48\u0e1a\u0e31\u0e07\u0e04\u0e31\u0e1a\"\r\n  },\r\n  en: {\r\n    heroTitle:\"Abhidhamma Study Registration Form\",\r\n    heroSub:\"Please fill in all required fields \u2014 a temporary code will be issued upon completion\",\r\n    secPersonal:\"Personal Information\", secAddress:\"Current Address\",\r\n    secLocation:\"Study Center Near You\",\r\n    secPhoto:\"Photos and Required Documents\", secCheck:\"Check Registration Status\",\r\n    lbPrefix:\"Title \/ Prefix\", firstNameLabel:\"First Name\", lastNameLabel:\"Last Name\",\r\n    lbTemple:\"Temple \/ Monastery\", lbBirthdate:\"Date of Birth\", lbPhone:\"Phone Number\",\r\n    lbEducation:\"Secular Education\", lbPali:\"Pali Studies\", lbDhamma:\"Dhamma Studies\",\r\n    lbAddress:\"House No.\", lbSoi:\"Soi \/ Village\", lbProvince:\"Province\",\r\n    lbDistrict:\"District\", lbSubdistrict:\"Subdistrict\", lbPostal:\"Postal Code\",\r\n    lbServiceLocation:\"Select the most convenient study center\",\r\n    lbCheckCode:\"Enter the temporary code received after registration\",\r\n    lbCheckPhone:\"Last 4 digits of the phone number used to register\",\r\n    phCheckCode:\"0001\", phCheckPhone:\"1234\",\r\n    paymentNoteText:\"Contact for more information\", lineBtnText:\"Contact via LINE Official Account\",\r\n    btnPhoto:\"\ud83d\udcf7 Choose Photo\", btnPhotoCamera:\"\ud83d\udcf8 Take photo\", photoPlaceholderText:\"Click to upload\",\r\n    docRequired:\"Required\", docRemove:\"Remove\",\r\n    photoHint:\"\u2022 Front-facing portrait, 1 inch or 3\u00d74 cm<br>\u2022 JPG or PNG, max 10 MB<br>\u2022 Smart attire \/ monastic robe for clergy\",\r\n    consentText:\"I consent to Abhidhamma Jotikavidyalaya, MCU collecting and using the personal data provided in this form for the purposes of study registration, communication, and student record management, in accordance with the Personal Data Protection Act B.E. 2562 (2019).\",\r\n    consentLabel:'I have read and agree to the above terms <span style=\"color:var(--mcru)\">*<\/span>',\r\n    submitBtn:\"Review Before Submitting\",\r\n    formNote:'* Required fields &nbsp;|&nbsp; A <strong>temporary registration code<\/strong> will be shown after successful submission',\r\n    rvTitle:\"Review Your Information\", rvSubtitle:\"Please verify all details before confirming\",\r\n    rvBack:\"Edit\", rvConfirm:\"Confirm Registration\",\r\n    checkBtnText:\"Search\",\r\n    phFirstName:\"First name \/ Religious name\", phLastName:\"Last name\",\r\n    phTemple:\"Temple \/ Monastery name\", phAddress:\"House number\",\r\n    phSoi:\"Soi \/ Village\", phProvince:\"Province\", phProvinceSearch:\"Type a province, e.g. Chiang Mai\", provNoMatch:\"No province matches what you typed\", phDistrict:\"District\", phSubdistrict:\"Subdistrict\", phPostal:\"Auto-filled\",\r\n    bdDay:\"Day\", bdMonth:\"Month\", phBirthYear:\"Year 1967\",\r\n    selProvince:\"\u2014 Select province \u2014\", selDistrict:\"\u2014 Select district \u2014\",\r\n    selDistrictWait:\"\u2014 Select province first \u2014\", selSubdistrict:\"\u2014 Select subdistrict \u2014\",\r\n    selSubWait:\"\u2014 Select district first \u2014\", selService:\"\u2014 Select study center \u2014\", selServiceNone:\"\u2014 No study centers found \u2014\",\r\n    photoWrongType:\"Invalid file type\", photoWrongTypeMsg:\"Please select a JPG or PNG image\",\r\n    photoTooBig:\"File too large\", photoTooBigMsg:\"Please select an image under 10 MB\",\r\n    photoReadFail:\"Could not open the image\", photoReadFailMsg:\"The file may be corrupted or unsupported. Please choose another image.\",\r\n    copyFail:\"Copy failed \u2014 please select the code and copy it manually\",\r\n    uploading1:\"Uploading photo\u2026\", uploading1sub:\"Please wait (step 1\/2)\",\r\n    uploading2:\"Saving registration\u2026\", uploading2sub:\"Please wait (step 2\/2)\",\r\n    uploadFail:\"Photo upload failed\", timeout:\"Request timed out\",\r\n    timeoutMsg:\"No response from server. Please try again.\",\r\n    connErr:\"Connection error\", connErrMsg:\"Please check your internet connection and try again.\",\r\n    errTitle:\"An error occurred\", retry:\"Please try again\",\r\n    regBusy:\"Server is saving other submissions\u2026\",\r\n    regBusySub:\"Automatically resending your registration.<br>Please keep this page open.\",\r\n    successTitle:\"Registration Successful! \ud83c\udf89\", successDate:\"Date & Time\", successSeq:\"No.\",\r\n    successCodeLabel:\"Your temporary code is\",\r\n    successCodeNote:\"\ud83d\udccc Keep this code. Online status checks also require the last 4 digits of your phone number.\",\r\n    successConfirm:\"Acknowledged \u2713\",\r\n    validTitle:\"Incomplete information\",\r\n    vPrefix:\"Please select a title\/prefix\", vFirstName:\"Please enter your first name\",\r\n    vBirth:\"Please complete your date of birth\",\r\n    vBirthInvalid:\"That date of birth is not valid. Please check again.\",\r\n    vPhone:\"Please enter a 9\u201310 digit phone number\",\r\n    vAddress:\"Please enter your house number\", vProvince:\"Please select a province\",\r\n    vDistrict:\"Please select a district\", vSubdistrict:\"Please select a subdistrict\",\r\n    vPostal:\"Please enter a valid 5-digit postal code\", vService:\"Please select a study center\",\r\n    vConsent:\"Please agree to the terms\", vPhoto:\"Please upload a front-facing photo\",\r\n    vPassport:\"Please upload the passport first page\", vVisaExpiry:\"Please upload the visa expiry page\", vTM30:\"Please upload the TM.30 document\",\r\n    monkFirstName:\"First name \/ Religious name\",\r\n    optOpt:\"optional\", optLayEdu:\"secular \u2014 optional\"\r\n  }\r\n};\r\nfunction T(key){ return (I18N[LANG] && I18N[LANG][key]) || (I18N[\"th\"][key]) || key; }\r\nfunction setLanguage(lang){\r\n  LANG = lang;\r\n  document.getElementById(\"btnTH\").className = lang===\"th\" ? \"active\" : \"inactive\";\r\n  document.getElementById(\"btnEN\").className = lang===\"en\" ? \"active\" : \"inactive\";\r\n  document.getElementById(\"btnTH\").setAttribute(\"aria-pressed\",String(lang===\"th\"));\r\n  document.getElementById(\"btnEN\").setAttribute(\"aria-pressed\",String(lang===\"en\"));\r\n  var navText=lang===\"en\"\r\n    ? {reg:\"Apply\",status:\"Check status\",personal:\"Personal\",address:\"Address\",location:\"Study center\",photo:\"Photo & confirm\",remove:\"Remove photo\"}\r\n    : {reg:\"\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e40\u0e23\u0e35\u0e22\u0e19\",status:\"\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e2a\u0e16\u0e32\u0e19\u0e30\",personal:\"\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2a\u0e48\u0e27\u0e19\u0e15\u0e31\u0e27\",address:\"\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\",location:\"\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\/\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\",photo:\"\u0e23\u0e39\u0e1b\u0e41\u0e25\u0e30\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\",remove:\"\u0e25\u0e1a\u0e23\u0e39\u0e1b\"};\r\n  document.getElementById(\"modeRegisterText\").textContent=navText.reg;\r\n  document.getElementById(\"modeStatusText\").textContent=navText.status;\r\n  document.getElementById(\"stepPersonal\").textContent=navText.personal;\r\n  document.getElementById(\"stepAddress\").textContent=navText.address;\r\n  document.getElementById(\"stepLocation\").textContent=navText.location;\r\n  document.getElementById(\"stepPhoto\").textContent=navText.photo;\r\n  document.getElementById(\"btnPhotoRemoveText\").textContent=navText.remove;\r\n  function setLabel(id, key, req, optText){\r\n    var el = document.getElementById(id); if(!el) return;\r\n    var txt = T(key);\r\n    if(req)     txt += ' <span class=\"req\">*<\/span>';\r\n    if(optText) txt += ' <span class=\"opt\">('+optText+')<\/span>';\r\n    el.innerHTML = txt;\r\n  }\r\n  function setText(id, key){ var el=document.getElementById(id); if(!el) return; el.textContent=T(key); }\r\n  function setHTML(id, key){ var el=document.getElementById(id); if(!el) return; el.innerHTML=T(key); }\r\n  setText(\"heroTitle\",\"heroTitle\"); setText(\"heroSub\",\"heroSub\");\r\n  setText(\"secPersonal\",\"secPersonal\"); setText(\"secAddress\",\"secAddress\");\r\n  setLabel(\"secLocation\",\"secLocation\",true);\r\n  setLabel(\"secPhoto\",\"secPhoto\",true);\r\n  setText(\"secCheck\",\"secCheck\");\r\n  setLabel(\"lbPrefix\",\"lbPrefix\",true);\r\n  setLabel(\"firstNameLabel\",\"firstNameLabel\",true);\r\n  setText(\"lastNameLabel\",\"lastNameLabel\");\r\n  setText(\"lbTemple\",\"lbTemple\");\r\n  setLabel(\"lbBirthdate\",\"lbBirthdate\",true);\r\n  setLabel(\"lbPhone\",\"lbPhone\",true);\r\n  setLabel(\"lbEducation\",\"lbEducation\",false,T(\"optLayEdu\"));\r\n  setLabel(\"lbPali\",\"lbPali\",false,T(\"optOpt\"));\r\n  setLabel(\"lbDhamma\",\"lbDhamma\",false,T(\"optOpt\"));\r\n  setLabel(\"lbAddress\",\"lbAddress\",true);\r\n  setLabel(\"lbSoi\",\"lbSoi\",false,lang===\"th\"?\"\u0e16\u0e49\u0e32\u0e21\u0e35\":\"if any\");\r\n  setLabel(\"lbProvince\",\"lbProvince\",true);\r\n  setLabel(\"lbDistrict\",\"lbDistrict\",true);\r\n  setLabel(\"lbSubdistrict\",\"lbSubdistrict\",true);\r\n  setLabel(\"lbPostal\",\"lbPostal\",true);\r\n  setLabel(\"lbServiceLocation\",\"lbServiceLocation\",true);\r\n  setLabel(\"lbCheckCode\",\"lbCheckCode\",true);\r\n  setLabel(\"lbCheckPhone\",\"lbCheckPhone\",true);\r\n  setText(\"paymentNoteText\",\"paymentNoteText\"); setText(\"lineBtnText\",\"lineBtnText\");\r\n  setText(\"btnPhoto\",\"btnPhoto\"); setText(\"btnPhotoCamera\",\"btnPhotoCamera\"); setHTML(\"photoHint\",\"photoHint\");\r\n  setText(\"photoPlaceholderText\",\"photoPlaceholderText\");\r\n  setHTML(\"consentText\",\"consentText\"); setHTML(\"consentLabel\",\"consentLabel\");\r\n  setHTML(\"formNote\",\"formNote\");\r\n  setText(\"checkBtnText\",\"checkBtnText\");\r\n  setText(\"rvTitle\",\"rvTitle\"); setText(\"rvSubtitle\",\"rvSubtitle\");\r\n  setText(\"rvBack\",\"rvBack\"); setText(\"rvConfirm\",\"rvConfirm\");\r\n  setHTML(\"submitBtnText\",\"submitBtn\");\r\n  \/\/ placeholder\r\n  function setPH(id, key){ var el=document.getElementById(id); if(!el) return; el.placeholder=T(key); }\r\n  setPH(\"firstName\",\"phFirstName\"); setPH(\"lastName\",\"phLastName\");\r\n  var templeEl=document.getElementById(\"temple\"); if(templeEl) templeEl.placeholder=T(\"phTemple\");\r\n  setPH(\"address\",\"phAddress\"); setPH(\"soi\",\"phSoi\"); setPH(\"province\",\"phProvince\"); setPH(\"district\",\"phDistrict\"); setPH(\"subdistrict\",\"phSubdistrict\"); setPH(\"postalCode\",\"phPostal\");\r\n  \/\/ \u0e0a\u0e48\u0e2d\u0e07\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14: \u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e22\u0e31\u0e07\u0e42\u0e2b\u0e25\u0e14\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e44\u0e21\u0e48\u0e40\u0e2a\u0e23\u0e47\u0e08\u0e43\u0e2b\u0e49\u0e1a\u0e2d\u0e01\u0e2a\u0e16\u0e32\u0e19\u0e30 \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e02\u0e36\u0e49\u0e19\u0e04\u0e33\u0e43\u0e1a\u0e49\u0e43\u0e2b\u0e49\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e17\u0e31\u0e49\u0e07\u0e17\u0e35\u0e48\u0e22\u0e31\u0e07\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\r\n  var provSearchEl=document.getElementById(\"provinceSearch\");\r\n  if(provSearchEl) provSearchEl.placeholder = thaiAddrData ? T(\"phProvinceSearch\") : (lang===\"en\" ? \"\u23f3 Loading\u2026\" : \"\u23f3 \u0e01\u0e33\u0e25\u0e31\u0e07\u0e42\u0e2b\u0e25\u0e14\u2026\");\r\n  setPH(\"checkCodeInput\",\"phCheckCode\");\r\n  setPH(\"checkPhoneInput\",\"phCheckPhone\");\r\n  \/\/ birthdate dropdowns\r\n  var dayEl=document.getElementById(\"birthDay\"), monEl=document.getElementById(\"birthMonth\"), yearEl=document.getElementById(\"birthYear\");\r\n  if(dayEl && monEl && yearEl){\r\n    var savedD=dayEl.value, savedM=monEl.value;\r\n    var dHtml='<option value=\"\">'+T(\"bdDay\")+'<\/option>';\r\n    for(var d=1;d<=31;d++) dHtml+='<option value=\"'+pad2(d)+'\">'+d+'<\/option>';\r\n    dayEl.innerHTML=dHtml; dayEl.value=savedD;\r\n    dayEl.setAttribute(\"aria-label\",lang===\"en\"?\"Day of birth\":\"\u0e27\u0e31\u0e19\u0e40\u0e01\u0e34\u0e14\");\r\n    monEl.setAttribute(\"aria-label\",lang===\"en\"?\"Month of birth\":\"\u0e40\u0e14\u0e37\u0e2d\u0e19\u0e40\u0e01\u0e34\u0e14\");\r\n    var MONTHS_EN=[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"];\r\n    var mNames=lang===\"en\"?MONTHS_EN:MONTHS_TH;\r\n    var mHtml='<option value=\"\">'+T(\"bdMonth\")+'<\/option>';\r\n    mNames.forEach(function(n,i){ mHtml+='<option value=\"'+pad2(i+1)+'\">'+n+'<\/option>'; });\r\n    monEl.innerHTML=mHtml; monEl.value=savedM;\r\n    \/\/ \u0e1b\u0e35\u0e40\u0e01\u0e34\u0e14\u0e40\u0e1b\u0e47\u0e19\u0e0a\u0e48\u0e2d\u0e07\u0e1e\u0e34\u0e21\u0e1e\u0e4c: \u0e2a\u0e25\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e41\u0e2a\u0e14\u0e07\u0e1c\u0e25 \u0e1e.\u0e28. \u2194 \u0e04.\u0e28. \u0e15\u0e32\u0e21\u0e20\u0e32\u0e29\u0e32\r\n    \/\/ (\u0e04\u0e48\u0e32\u0e17\u0e35\u0e48\u0e40\u0e01\u0e47\u0e1a\u0e43\u0e19 #birthdate \u0e22\u0e31\u0e07\u0e40\u0e1b\u0e47\u0e19 \u0e1e.\u0e28. \u0e40\u0e2a\u0e21\u0e2d)\r\n    yearEl.placeholder=T(\"phBirthYear\");\r\n    yearEl.setAttribute(\"aria-label\",lang===\"en\"?\"Year of birth\":\"\u0e1b\u0e35\u0e40\u0e01\u0e34\u0e14\");\r\n    var typedY=yearEl.value.trim();\r\n    if(\/^\\d{4}$\/.test(typedY)){\r\n      var yv=parseInt(typedY,10);\r\n      if(lang===\"en\" && yv>2400)      yearEl.value=String(yv-543);\r\n      else if(lang!==\"en\" && yv<=2400) yearEl.value=String(yv+543);\r\n    }\r\n    syncBirthdate();\r\n  }\r\n  \/\/ \u0e15\u0e31\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e41\u0e23\u0e01 (placeholder) \u0e15\u0e49\u0e2d\u0e07\u0e41\u0e1b\u0e25\u0e17\u0e38\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07\u0e17\u0e35\u0e48\u0e2a\u0e25\u0e31\u0e1a\u0e20\u0e32\u0e29\u0e32\r\n  \/\/ \u0e40\u0e14\u0e34\u0e21\u0e40\u0e0a\u0e47\u0e04 options.length===1 \u0e17\u0e33\u0e43\u0e2b\u0e49\u0e1e\u0e2d\u0e42\u0e2b\u0e25\u0e14 77 \u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14\u0e40\u0e2a\u0e23\u0e47\u0e08\u0e41\u0e25\u0e49\u0e27\u0e44\u0e21\u0e48\u0e40\u0e04\u0e22\u0e16\u0e39\u0e01\u0e41\u0e1b\u0e25\u0e2d\u0e35\u0e01\u0e40\u0e25\u0e22\r\n  function setSelectPlaceholder(sel, text){\r\n    if(!sel || sel.tagName!==\"SELECT\" || !sel.options.length) return;\r\n    if(sel.options[0].value !== \"\") return;\r\n    sel.options[0].text = text;\r\n  }\r\n  var distSel=document.getElementById(\"district\"), subSel=document.getElementById(\"subdistrict\");\r\n  var provSel=document.getElementById(\"province\");\r\n  setSelectPlaceholder(provSel, thaiAddrData ? T(\"selProvince\") : (lang===\"en\" ? \"\u23f3 Loading\u2026\" : \"\u23f3 \u0e01\u0e33\u0e25\u0e31\u0e07\u0e42\u0e2b\u0e25\u0e14\u2026\"));\r\n  setSelectPlaceholder(distSel, T(distSel && distSel.disabled ? \"selDistrictWait\" : \"selDistrict\"));\r\n  setSelectPlaceholder(subSel,  T(subSel  && subSel.disabled  ? \"selSubWait\"      : \"selSubdistrict\"));\r\n  \/\/ \u0e1b\u0e35\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32\r\n  var badge=document.getElementById(\"academicYearBadge\");\r\n  if(badge){\r\n    var yr=getBuddhistYear();\r\n    badge.textContent=lang===\"en\"?\"\u2726 Academic Year \"+(yr-543)+\" \u2726\":\"\u2726 \u0e1b\u0e35\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32 \"+toThaiDigits(yr)+\" \u2726\";\r\n  }\r\n  document.documentElement.lang = lang===\"en\" ? \"en\" : \"th\";\r\n  \/\/ \u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e15\u0e48\u0e32\u0e07\u0e0a\u0e32\u0e15\u0e34\r\n  var fdCard=document.getElementById(\"foreignDocsCard\");\r\n  if(fdCard) fdCard.classList.toggle(\"hidden\",lang!==\"en\");\r\n  var uploadSummary=document.getElementById(\"uploadSummary\");\r\n  if(uploadSummary) uploadSummary.classList.toggle(\"hidden\",lang!==\"en\");\r\n  var fd={\r\n    en:{secForeignDocs:\"Photos and Required Documents\",\r\n        foreignDocsHint:\"Upload all four required images. JPG or PNG, maximum 10 MB per file.\",\r\n        lbPassport:\"Passport first page\",\r\n        lbVisaExpiry:\"Passport page showing visa expiry date\",\r\n        lbTM30:\"TM.30\",\r\n        passportHint:\"Upload the page containing your photo and personal details.\",\r\n        visaExpiryHint:\"Make sure the visa expiry date is clearly visible.\",\r\n        tm30Hint:\"Upload a clear and complete image of the TM.30 document.\",\r\n        btnPassport:\"\ud83d\udcf7 Choose \/ replace file\", btnVisaExpiry:\"\ud83d\udcf7 Choose \/ replace file\", btnTM30:\"\ud83d\udcf7 Choose \/ replace file\"},\r\n    th:{secForeignDocs:\"\u0e23\u0e39\u0e1b\u0e20\u0e32\u0e1e\u0e41\u0e25\u0e30\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e1b\u0e23\u0e30\u0e01\u0e2d\u0e1a\",\r\n        foreignDocsHint:\"\u0e01\u0e23\u0e38\u0e13\u0e32\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e44\u0e1f\u0e25\u0e4c JPG \u0e2b\u0e23\u0e37\u0e2d PNG \u0e02\u0e19\u0e32\u0e14\u0e44\u0e21\u0e48\u0e40\u0e01\u0e34\u0e19 10 MB \u0e15\u0e48\u0e2d\u0e44\u0e1f\u0e25\u0e4c\",\r\n        lbPassport:\"\u0e1e\u0e32\u0e2a\u0e1b\u0e2d\u0e23\u0e4c\u0e15\u0e2b\u0e19\u0e49\u0e32\u0e41\u0e23\u0e01\",\r\n        lbVisaExpiry:\"\u0e1e\u0e32\u0e2a\u0e1b\u0e2d\u0e23\u0e4c\u0e15\u0e2b\u0e19\u0e49\u0e32\u0e17\u0e35\u0e48\u0e21\u0e35\u0e27\u0e31\u0e19\u0e2b\u0e21\u0e14\u0e2d\u0e32\u0e22\u0e38\u0e27\u0e35\u0e0b\u0e48\u0e32\",\r\n        lbTM30:\"\u0e41\u0e1a\u0e1a \u0e15\u0e21.30 (TM.30)\",\r\n        passportHint:\"\u0e2b\u0e19\u0e49\u0e32\u0e17\u0e35\u0e48\u0e21\u0e35\u0e23\u0e39\u0e1b\u0e16\u0e48\u0e32\u0e22\u0e41\u0e25\u0e30\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2a\u0e48\u0e27\u0e19\u0e1a\u0e38\u0e04\u0e04\u0e25\",\r\n        visaExpiryHint:\"\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e2b\u0e21\u0e14\u0e2d\u0e32\u0e22\u0e38\u0e27\u0e35\u0e0b\u0e48\u0e32\u0e15\u0e49\u0e2d\u0e07\u0e21\u0e2d\u0e07\u0e40\u0e2b\u0e47\u0e19\u0e44\u0e14\u0e49\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19\",\r\n        tm30Hint:\"\u0e16\u0e48\u0e32\u0e22\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23 TM.30 \u0e43\u0e2b\u0e49\u0e40\u0e2b\u0e47\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e04\u0e23\u0e1a\u0e16\u0e49\u0e27\u0e19\",\r\n        btnPassport:\"\ud83d\udcf7 \u0e40\u0e25\u0e37\u0e2d\u0e01 \/ \u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e44\u0e1f\u0e25\u0e4c\", btnVisaExpiry:\"\ud83d\udcf7 \u0e40\u0e25\u0e37\u0e2d\u0e01 \/ \u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e44\u0e1f\u0e25\u0e4c\", btnTM30:\"\ud83d\udcf7 \u0e40\u0e25\u0e37\u0e2d\u0e01 \/ \u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e44\u0e1f\u0e25\u0e4c\"}\r\n  };\r\n  var fdL=fd[lang]||fd.th;\r\n  var sF=function(id,html){ var el=document.getElementById(id); if(el) el.innerHTML=html; };\r\n  sF(\"lbPassport\",fdL.lbPassport); sF(\"lbVisaExpiry\",fdL.lbVisaExpiry); sF(\"lbTM30\",fdL.lbTM30);\r\n  sF(\"passportHint\",fdL.passportHint); sF(\"visaExpiryHint\",fdL.visaExpiryHint); sF(\"tm30Hint\",fdL.tm30Hint);\r\n  sF(\"btnPassport\",fdL.btnPassport); sF(\"btnVisaExpiry\",fdL.btnVisaExpiry); sF(\"btnTM30\",fdL.btnTM30);\r\n  var photoTileTitle=document.getElementById(\"photoTileTitle\");\r\n  if(photoTileTitle) photoTileTitle.textContent=lang===\"en\"?\"Front-facing photo\":\"\u0e20\u0e32\u0e1e\u0e16\u0e48\u0e32\u0e22\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e23\u0e07\";\r\n  \/\/ \u0e1b\u0e49\u0e32\u0e22 \"\u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19\" \/ \"\u0e04\u0e25\u0e34\u0e01\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\" \/ \"\u0e25\u0e1a\u0e44\u0e1f\u0e25\u0e4c\" \u0e02\u0e2d\u0e07\u0e17\u0e38\u0e01\u0e01\u0e32\u0e23\u0e4c\u0e14 (\u0e40\u0e14\u0e34\u0e21\u0e01\u0e32\u0e23\u0e4c\u0e14\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e15\u0e48\u0e32\u0e07\u0e0a\u0e32\u0e15\u0e34 hardcode \u0e2d\u0e31\u0e07\u0e01\u0e24\u0e29\u0e44\u0e27\u0e49)\r\n  [\"photo\",\"passport\",\"visaExpiry\",\"tm30\"].forEach(function(k){\r\n    var chip=document.getElementById(k+\"RequiredChip\");\r\n    if(chip) chip.textContent=T(\"docRequired\");\r\n    var ph=document.getElementById(k+\"PlaceholderText\");\r\n    if(ph) ph.textContent=T(\"photoPlaceholderText\");\r\n  });\r\n  [\"btnPassportRemoveText\",\"btnVisaExpiryRemoveText\",\"btnTM30RemoveText\"].forEach(function(id){\r\n    var el=document.getElementById(id);\r\n    if(el) el.textContent=T(\"docRemove\");\r\n  });\r\n  sF(\"btnPassportCamera\",T(\"btnPhotoCamera\")); sF(\"btnVisaExpiryCamera\",T(\"btnPhotoCamera\")); sF(\"btnTM30Camera\",T(\"btnPhotoCamera\"));\r\n  var summaryLabel=document.getElementById(\"uploadSummaryLabel\");\r\n  if(summaryLabel) summaryLabel.textContent=lang===\"en\"?\"Document upload progress\":\"\u0e04\u0e27\u0e32\u0e21\u0e04\u0e23\u0e1a\u0e16\u0e49\u0e27\u0e19\u0e02\u0e2d\u0e07\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\";\r\n  updateUploadSummary();  \/\/ address options\r\n  [\"province\",\"district\",\"subdistrict\"].forEach(function(selId){\r\n    var sel=document.getElementById(selId);\r\n    if(!sel || sel.tagName!==\"SELECT\") return;\r\n    for(var i=0;i<sel.options.length;i++){\r\n      var o=sel.options[i]; if(!o.value) continue;\r\n      var en=o.getAttribute(\"data-en\");\r\n      o.textContent=(lang===\"en\" && en)?en:o.value;\r\n    }\r\n  });\r\n  provBuildItems(); provSyncFromSelect();   \/\/ \u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49\u0e04\u0e32\u0e14\u0e40\u0e14\u0e32\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e20\u0e32\u0e29\u0e32\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e17\u0e35\u0e48\u0e41\u0e2a\u0e14\u0e07\r\n  \/\/ render service locations\r\n  var svcSel=document.getElementById(\"serviceLocation\");\r\n  if(svcSel && serviceLocationsData.length){\r\n    var savedSvc=svcSel.value;\r\n    renderServiceLocations(serviceLocationsData);\r\n    svcSel.value=savedSvc;\r\n  }\r\n  translateOptions(lang);\r\n  onPrefixChange();\r\n}\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n\/\/ \u0e41\u0e1b\u0e25 dropdown options\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\nvar OPT_EN = {\r\n  prefix:{\r\n    \"\":\"\u2014 Select title \u2014\",\r\n    \"\u0e19\u0e32\u0e22\":\"Mr.\",\"\u0e19\u0e32\u0e07\":\"Mrs.\",\"\u0e19\u0e32\u0e07\u0e2a\u0e32\u0e27\":\"Ms.\",\"\u0e14.\u0e0a.\":\"Master\",\"\u0e14.\u0e0d.\":\"Miss\",\r\n    \"\u0e14\u0e23.\":\"Dr.\",\"\u0e1c\u0e28.\":\"Asst. Prof.\",\"\u0e1c\u0e28.\u0e14\u0e23.\":\"Asst. Prof. Dr.\",\"\u0e23\u0e28.\":\"Assoc. Prof.\",\r\n    \"\u0e23\u0e28.\u0e14\u0e23.\":\"Assoc. Prof. Dr.\",\"\u0e28.\":\"Prof.\",\"\u0e28.\u0e14\u0e23.\":\"Prof. Dr.\",\r\n    \"\u0e1e\u0e23\u0e30\":\"Phra (Monk)\",\"\u0e2a\u0e32\u0e21\u0e40\u0e13\u0e23\":\"Samanera (Novice)\",\"\u0e1e\u0e23\u0e30\u0e21\u0e2b\u0e32\":\"Phra Maha\",\r\n    \"\u0e1e\u0e23\u0e30\u0e2d\u0e18\u0e34\u0e01\u0e32\u0e23\":\"Phra Athikan\",\"\u0e40\u0e08\u0e49\u0e32\u0e2d\u0e18\u0e34\u0e01\u0e32\u0e23\":\"Chao Athikan\",\"\u0e1e\u0e23\u0e30\u0e1b\u0e25\u0e31\u0e14\":\"Phra Palad\",\r\n    \"\u0e1e\u0e23\u0e30\u0e2a\u0e21\u0e38\u0e2b\u0e4c\":\"Phra Samu\",\"\u0e1e\u0e23\u0e30\u0e43\u0e1a\u0e0e\u0e35\u0e01\u0e32\":\"Phra Baidika\",\"\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\":\"Phra Khru\",\r\n    \"\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\u0e1b\u0e25\u0e31\u0e14\":\"Phra Khru Palad\",\"\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\u0e18\u0e23\u0e23\u0e21\u0e18\u0e23\":\"Phra Khru Thammathon\",\r\n    \"\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\u0e27\u0e34\u0e19\u0e31\u0e22\u0e18\u0e23\":\"Phra Khru Winaithon\",\"\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\u0e2a\u0e31\u0e07\u0e06\u0e23\u0e31\u0e01\u0e29\u0e4c\":\"Phra Khru Sangkharak\",\r\n    \"\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\u0e2a\u0e21\u0e38\u0e2b\u0e4c\":\"Phra Khru Samu\",\"\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\u0e43\u0e1a\u0e0e\u0e35\u0e01\u0e32\":\"Phra Khru Baidika\",\r\n    \"\u0e20\u0e34\u0e01\u0e29\u0e38\u0e13\u0e35\":\"Bhikkhuni\",\"\u0e2a\u0e32\u0e21\u0e40\u0e13\u0e23\u0e35\":\"Samaneri\",\"\u0e41\u0e21\u0e48\u0e0a\u0e35\":\"Mae Chi (Nun)\"\r\n  },\r\n  education:{\r\n    \"\":\"\u2014 Not specified \u2014\",\r\n    \"\u0e1b\u0e23\u0e30\u0e16\u0e21\u0e28\u0e36\u0e01\u0e29\u0e32\":\"Primary School\",\"\u0e21\u0e31\u0e18\u0e22\u0e21\u0e28\u0e36\u0e01\u0e29\u0e32\u0e15\u0e2d\u0e19\u0e15\u0e49\u0e19 (\u0e21.3)\":\"Lower Secondary (M.3)\",\r\n    \"\u0e21\u0e31\u0e18\u0e22\u0e21\u0e28\u0e36\u0e01\u0e29\u0e32\u0e15\u0e2d\u0e19\u0e1b\u0e25\u0e32\u0e22 (\u0e21.6)\":\"Upper Secondary (M.6)\",\"\u0e1b\u0e27\u0e0a.\":\"Vocational Certificate\",\r\n    \"\u0e1b\u0e27\u0e2a. \/ \u0e2d\u0e19\u0e38\u0e1b\u0e23\u0e34\u0e0d\u0e0d\u0e32\":\"Diploma\",\"\u0e1b\u0e23\u0e34\u0e0d\u0e0d\u0e32\u0e15\u0e23\u0e35\":\"Bachelor's Degree\",\r\n    \"\u0e1b\u0e23\u0e34\u0e0d\u0e0d\u0e32\u0e42\u0e17\":\"Master's Degree\",\"\u0e1b\u0e23\u0e34\u0e0d\u0e0d\u0e32\u0e40\u0e2d\u0e01\":\"Doctorate\"\r\n  },\r\n  pali:{\r\n    \"\":\"\u2014 Not specified \u2014\",\"\u0e1b\u0e23\u0e30\u0e42\u0e22\u0e04 1-2\":\"Grade 1-2\",\"\u0e1b.\u0e18.3\":\"Pali Grade 3\",\r\n    \"\u0e1b.\u0e18.4\":\"Pali Grade 4\",\"\u0e1b.\u0e18.5\":\"Pali Grade 5\",\"\u0e1b.\u0e18.6\":\"Pali Grade 6\",\r\n    \"\u0e1b.\u0e18.7\":\"Pali Grade 7\",\"\u0e1b.\u0e18.8\":\"Pali Grade 8\",\"\u0e1b.\u0e18.9\":\"Pali Grade 9\"\r\n  },\r\n  dhamma:{\r\n    \"\":\"\u2014 Not specified \u2014\",\r\n    \"\u0e19\u0e31\u0e01\u0e18\u0e23\u0e23\u0e21\u0e0a\u0e31\u0e49\u0e19\u0e15\u0e23\u0e35\":\"Dhamma Grade 3 (Monk)\",\"\u0e19\u0e31\u0e01\u0e18\u0e23\u0e23\u0e21\u0e0a\u0e31\u0e49\u0e19\u0e42\u0e17\":\"Dhamma Grade 2 (Monk)\",\r\n    \"\u0e19\u0e31\u0e01\u0e18\u0e23\u0e23\u0e21\u0e0a\u0e31\u0e49\u0e19\u0e40\u0e2d\u0e01\":\"Dhamma Grade 1 (Monk)\",\r\n    \"\u0e18\u0e23\u0e23\u0e21\u0e28\u0e36\u0e01\u0e29\u0e32\u0e0a\u0e31\u0e49\u0e19\u0e15\u0e23\u0e35\":\"Dhamma Studies Grade 3\",\"\u0e18\u0e23\u0e23\u0e21\u0e28\u0e36\u0e01\u0e29\u0e32\u0e0a\u0e31\u0e49\u0e19\u0e42\u0e17\":\"Dhamma Studies Grade 2\",\r\n    \"\u0e18\u0e23\u0e23\u0e21\u0e28\u0e36\u0e01\u0e29\u0e32\u0e0a\u0e31\u0e49\u0e19\u0e40\u0e2d\u0e01\":\"Dhamma Studies Grade 1\"\r\n  }\r\n};\r\n\/\/ \u0e0a\u0e37\u0e48\u0e2d\u0e01\u0e25\u0e38\u0e48\u0e21\u0e44\u0e21\u0e48\u0e43\u0e2a\u0e48\u0e02\u0e35\u0e14\u0e15\u0e01\u0e41\u0e15\u0e48\u0e07 \u2014 \u0e1a\u0e19\u0e21\u0e37\u0e2d\u0e16\u0e37\u0e2d\u0e23\u0e30\u0e1a\u0e1a\u0e41\u0e2a\u0e14\u0e07\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e40\u0e15\u0e47\u0e21\u0e08\u0e2d \u0e02\u0e35\u0e14\u0e22\u0e32\u0e27\u0e08\u0e30\u0e15\u0e31\u0e14\u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14\u0e14\u0e39\u0e23\u0e01\r\n\/\/ \u0e41\u0e25\u0e30\u0e15\u0e31\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e41\u0e1a\u0e1a native \u0e41\u0e22\u0e01\u0e2b\u0e31\u0e27\u0e02\u0e49\u0e2d\u0e01\u0e25\u0e38\u0e48\u0e21\u0e43\u0e2b\u0e49\u0e0a\u0e31\u0e14\u0e2d\u0e22\u0e39\u0e48\u0e41\u0e25\u0e49\u0e27\r\nvar OPTGROUP_EN = {\r\n  \"\u0e06\u0e23\u0e32\u0e27\u0e32\u0e2a\":\"Laypersons\",\r\n  \"\u0e27\u0e38\u0e12\u0e34\u0e17\u0e32\u0e07\u0e27\u0e34\u0e0a\u0e32\u0e01\u0e32\u0e23\":\"Academic Titles\",\r\n  \"\u0e1e\u0e23\u0e30\u0e20\u0e34\u0e01\u0e29\u0e38 \/ \u0e2a\u0e32\u0e21\u0e40\u0e13\u0e23\":\"Monks \/ Novices\",\r\n  \"\u0e20\u0e34\u0e01\u0e29\u0e38\u0e13\u0e35 \/ \u0e19\u0e31\u0e01\u0e1a\u0e27\u0e0a\u0e2b\u0e0d\u0e34\u0e07\":\"Female Monastics\"\r\n};\r\nfunction translateOptions(lang){\r\n  [\"prefix\",\"education\",\"pali\",\"dhamma\"].forEach(function(selId){\r\n    var sel=document.getElementById(selId); if(!sel || sel.tagName !== \"SELECT\") return;\r\n    var saved=sel.value;\r\n    sel.querySelectorAll(\"option\").forEach(function(o){\r\n      if(!o.hasAttribute(\"data-th\")) o.setAttribute(\"data-th\",o.textContent);\r\n      var th=o.getAttribute(\"data-th\");\r\n      var map=OPT_EN[selId];\r\n      o.textContent=(lang===\"en\" && map && map[o.value]!==undefined)?map[o.value]:th;\r\n    });\r\n    sel.querySelectorAll(\"optgroup\").forEach(function(g){\r\n      if(!g.hasAttribute(\"data-th\")) g.setAttribute(\"data-th\",g.label);\r\n      var th=g.getAttribute(\"data-th\");\r\n      g.label=(lang===\"en\" && OPTGROUP_EN[th])?OPTGROUP_EN[th]:th;\r\n    });\r\n    sel.value=saved;\r\n  });\r\n}\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n\/\/ Helpers\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n\/\/ esc \u0e16\u0e39\u0e01\u0e43\u0e0a\u0e49\u0e17\u0e31\u0e49\u0e07\u0e43\u0e19 attribute \u0e41\u0e25\u0e30\u0e40\u0e19\u0e37\u0e49\u0e2d\u0e2b\u0e32\u0e02\u0e2d\u0e07 <option> (\u0e0a\u0e37\u0e48\u0e2d\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e21\u0e32\u0e08\u0e32\u0e01\u0e0a\u0e35\u0e15)\r\n\/\/ \u0e08\u0e36\u0e07\u0e15\u0e49\u0e2d\u0e07\u0e2b\u0e19\u0e35 < > \u0e14\u0e49\u0e27\u0e22 \u0e44\u0e21\u0e48\u0e07\u0e31\u0e49\u0e19\u0e0a\u0e37\u0e48\u0e2d\u0e17\u0e35\u0e48\u0e21\u0e35\u0e2d\u0e31\u0e01\u0e02\u0e23\u0e30\u0e40\u0e2b\u0e25\u0e48\u0e32\u0e19\u0e35\u0e49\u0e08\u0e30\u0e17\u0e33\u0e43\u0e2b\u0e49 dropdown \u0e40\u0e1e\u0e35\u0e49\u0e22\u0e19\r\nfunction esc(s){ return String(s).replace(\/&\/g,\"&amp;\").replace(\/<\/g,\"&lt;\").replace(\/>\/g,\"&gt;\").replace(\/\"\/g,\"&quot;\").replace(\/'\/g,\"&#39;\"); }\r\nfunction esc2(s){ return String(s).replace(\/&\/g,\"&amp;\").replace(\/<\/g,\"&lt;\").replace(\/>\/g,\"&gt;\"); }\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n\/\/ \u0e23\u0e48\u0e32\u0e07\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34 \u2014 \u0e01\u0e31\u0e19\u0e01\u0e23\u0e2d\u0e01\u0e43\u0e2b\u0e21\u0e48\u0e17\u0e31\u0e49\u0e07\u0e0a\u0e38\u0e14\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e40\u0e1c\u0e25\u0e2d\u0e1b\u0e34\u0e14\u0e41\u0e17\u0e47\u0e1a \/ \u0e40\u0e19\u0e47\u0e15\u0e2b\u0e25\u0e38\u0e14\r\n\/\/  \u2022 \u0e40\u0e01\u0e47\u0e1a\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e17\u0e35\u0e48\u0e01\u0e23\u0e2d\u0e01 \u0e44\u0e21\u0e48\u0e40\u0e01\u0e47\u0e1a\u0e23\u0e39\u0e1b\u0e16\u0e48\u0e32\u0e22\u0e41\u0e25\u0e30\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23 (\u0e43\u0e2b\u0e0d\u0e48\u0e40\u0e01\u0e34\u0e19 localStorage\r\n\/\/    \u0e41\u0e25\u0e30\u0e40\u0e1b\u0e47\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2d\u0e48\u0e2d\u0e19\u0e44\u0e2b\u0e27\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e04\u0e27\u0e23\u0e04\u0e49\u0e32\u0e07\u0e43\u0e19\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07)\r\n\/\/  \u2022 \u0e44\u0e21\u0e48\u0e01\u0e39\u0e49\u0e0a\u0e48\u0e2d\u0e07\u0e22\u0e34\u0e19\u0e22\u0e2d\u0e21 PDPA \u2014 \u0e1c\u0e39\u0e49\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e15\u0e49\u0e2d\u0e07\u0e15\u0e34\u0e4a\u0e01\u0e40\u0e2d\u0e07\r\n\/\/  \u2022 \u0e2b\u0e21\u0e14\u0e2d\u0e32\u0e22\u0e38\u0e43\u0e19 24 \u0e0a\u0e21. \u0e25\u0e1a\u0e17\u0e31\u0e19\u0e17\u0e35\u0e17\u0e35\u0e48\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08 \u0e41\u0e25\u0e30\u0e21\u0e35\u0e1b\u0e38\u0e48\u0e21\u0e25\u0e49\u0e32\u0e07\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e2a\u0e32\u0e18\u0e32\u0e23\u0e13\u0e30\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\nvar DRAFT_KEY = \"abjRegDraft_v1\";\r\nvar DRAFT_TTL_MS = 24 * 60 * 60 * 1000;\r\nvar DRAFT_FIELDS = [\"prefix\",\"firstName\",\"lastName\",\"temple\",\"birthDay\",\"birthMonth\",\"birthYear\",\r\n  \"phone\",\"education\",\"pali\",\"dhamma\",\"address\",\"soi\",\"province\",\"district\",\"subdistrict\",\r\n  \"postalCode\",\"serviceLocation\"];\r\nvar DRAFT_TXT = {\r\n  th:{ title:\"\u0e01\u0e39\u0e49\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e01\u0e23\u0e2d\u0e01\u0e04\u0e49\u0e32\u0e07\u0e44\u0e27\u0e49\u0e43\u0e2b\u0e49\u0e41\u0e25\u0e49\u0e27\", note:\"\u0e40\u0e01\u0e47\u0e1a\u0e44\u0e27\u0e49\u0e43\u0e19\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e19\u0e35\u0e49 24 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07 \u2014 \u0e23\u0e39\u0e1b\u0e20\u0e32\u0e1e\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e43\u0e2b\u0e21\u0e48\", clear:\"\u0e25\u0e49\u0e32\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\" },\r\n  en:{ title:\"Restored your unfinished form\", note:\"Kept on this device for 24 hours \u2014 photos must be selected again\", clear:\"Clear\" }\r\n};\r\n\/\/ localStorage \u0e43\u0e0a\u0e49\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e43\u0e19\u0e42\u0e2b\u0e21\u0e14\u0e2a\u0e48\u0e27\u0e19\u0e15\u0e31\u0e27\u0e1a\u0e32\u0e07\u0e40\u0e1a\u0e23\u0e32\u0e27\u0e4c\u0e40\u0e0b\u0e2d\u0e23\u0e4c \/ \u0e16\u0e39\u0e01\u0e1b\u0e34\u0e14\u0e44\u0e27\u0e49 \u2014 \u0e15\u0e49\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e1f\u0e2d\u0e23\u0e4c\u0e21\u0e1e\u0e31\u0e07\r\nvar draftStore = (function(){\r\n  try { var k=\"__abjtest\"; localStorage.setItem(k,\"1\"); localStorage.removeItem(k); return localStorage; }\r\n  catch(e){ return null; }\r\n})();\r\nvar draftTimer = null;\r\nvar draftRestoring = false;\r\nvar draftAborted = false;   \/\/ \u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e01\u0e14\u0e25\u0e49\u0e32\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e17\u0e35\u0e48\u0e22\u0e31\u0e07\u0e01\u0e39\u0e49\u0e44\u0e21\u0e48\u0e40\u0e2a\u0e23\u0e47\u0e08\r\n\r\nfunction saveDraft(){\r\n  \/\/ \u0e01\u0e33\u0e25\u0e31\u0e07\u0e41\u0e01\u0e49\u0e44\u0e02\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e40\u0e04\u0e22\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e44\u0e27\u0e49 \u2014 \u0e2b\u0e49\u0e32\u0e21\u0e17\u0e31\u0e1a\u0e23\u0e48\u0e32\u0e07\u0e02\u0e2d\u0e07\u0e01\u0e32\u0e23 \"\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e43\u0e2b\u0e21\u0e48\" \u0e1b\u0e01\u0e15\u0e34 \u0e44\u0e21\u0e48\u0e07\u0e31\u0e49\u0e19\u0e04\u0e23\u0e31\u0e49\u0e07\u0e16\u0e31\u0e14\u0e44\u0e1b\u0e17\u0e35\u0e48\r\n  \/\/ \u0e40\u0e1b\u0e34\u0e14\u0e1f\u0e2d\u0e23\u0e4c\u0e21\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e43\u0e2b\u0e21\u0e48\u0e08\u0e30\u0e16\u0e39\u0e01\u0e40\u0e15\u0e34\u0e21\u0e14\u0e49\u0e27\u0e22\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e02\u0e2d\u0e07\u0e04\u0e19\u0e17\u0e35\u0e48\u0e40\u0e1e\u0e34\u0e48\u0e07\u0e41\u0e01\u0e49\u0e44\u0e02\u0e44\u0e1b\u0e41\u0e17\u0e19 (\u0e23\u0e31\u0e48\u0e27\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\/\u0e2a\u0e31\u0e1a\u0e2a\u0e19\u0e1a\u0e19\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e2a\u0e32\u0e18\u0e32\u0e23\u0e13\u0e30)\r\n  if(!draftStore || draftRestoring || isEditMode) return;\r\n  var data = { at:Date.now(), v:{} }, any = false;\r\n  DRAFT_FIELDS.forEach(function(id){\r\n    var el = document.getElementById(id);\r\n    if(!el || !el.value) return;\r\n    data.v[id] = el.value; any = true;\r\n  });\r\n  try {\r\n    if(any) draftStore.setItem(DRAFT_KEY, JSON.stringify(data));\r\n    else    draftStore.removeItem(DRAFT_KEY);\r\n  } catch(e){}   \/\/ \u0e40\u0e15\u0e47\u0e21\u0e2b\u0e23\u0e37\u0e2d\u0e16\u0e39\u0e01\u0e1b\u0e0f\u0e34\u0e40\u0e2a\u0e18 \u2014 \u0e02\u0e49\u0e32\u0e21\u0e44\u0e1b \u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e23\u0e1a\u0e01\u0e27\u0e19\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\r\n}\r\nfunction scheduleSaveDraft(){\r\n  if(!draftStore) return;\r\n  clearTimeout(draftTimer);\r\n  draftTimer = setTimeout(saveDraft, 600);\r\n}\r\nfunction clearDraft(){\r\n  if(!draftStore) return;\r\n  try { draftStore.removeItem(DRAFT_KEY); } catch(e){}\r\n}\r\nfunction readDraft(){\r\n  if(!draftStore) return null;\r\n  try {\r\n    var raw = draftStore.getItem(DRAFT_KEY);\r\n    if(!raw) return null;\r\n    var d = JSON.parse(raw);\r\n    if(!d || !d.v || !d.at || (Date.now() - d.at) > DRAFT_TTL_MS){ clearDraft(); return null; }\r\n    return d;\r\n  } catch(e){ clearDraft(); return null; }\r\n}\r\nfunction applyDraftLang(){\r\n  var t = DRAFT_TXT[LANG] || DRAFT_TXT.th;\r\n  var a = document.getElementById(\"draftBarTitle\");\r\n  var b = document.getElementById(\"draftBarNote\");\r\n  var c = document.getElementById(\"draftClearBtn\");\r\n  if(a) a.textContent = t.title;\r\n  if(b) b.textContent = t.note;\r\n  if(c) c.textContent = t.clear;\r\n}\r\nfunction discardDraft(){\r\n  \/\/ \u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e42\u0e2b\u0e25\u0e14\u0e0a\u0e49\u0e32\u0e01\u0e27\u0e48\u0e32\u0e0a\u0e48\u0e2d\u0e07\u0e2d\u0e37\u0e48\u0e19 \u0e01\u0e32\u0e23\u0e01\u0e39\u0e49\u0e2d\u0e32\u0e08\u0e22\u0e31\u0e07\u0e04\u0e49\u0e32\u0e07\u0e2d\u0e22\u0e39\u0e48\u0e15\u0e2d\u0e19\u0e01\u0e14\u0e25\u0e49\u0e32\u0e07\r\n  \/\/ \u0e16\u0e49\u0e32\u0e44\u0e21\u0e48\u0e2b\u0e22\u0e38\u0e14\u0e44\u0e27\u0e49 \u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e08\u0e30\u0e16\u0e39\u0e01\u0e40\u0e15\u0e34\u0e21\u0e01\u0e25\u0e31\u0e1a\u0e21\u0e32\u0e41\u0e25\u0e49\u0e27\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e43\u0e2b\u0e21\u0e48\u0e2b\u0e25\u0e31\u0e07\u0e25\u0e49\u0e32\u0e07\u0e44\u0e1b\u0e41\u0e25\u0e49\u0e27\r\n  draftAborted = true;\r\n  draftRestoring = false;\r\n  clearTimeout(draftTimer);\r\n  clearDraft();\r\n  var bar = document.getElementById(\"draftBar\");\r\n  if(bar) bar.hidden = true;\r\n  resetForm();\r\n  setTimeout(clearDraft, 100);   \/\/ \u0e40\u0e01\u0e47\u0e1a\u0e01\u0e27\u0e32\u0e14 event \u0e17\u0e35\u0e48\u0e22\u0e31\u0e07\u0e04\u0e49\u0e32\u0e07\u0e43\u0e19\u0e04\u0e34\u0e27\r\n}\r\n\/\/ \u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e43\u0e2b\u0e49\u0e0a\u0e48\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e15\u0e31\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e16\u0e39\u0e01\u0e40\u0e15\u0e34\u0e21\u0e17\u0e35\u0e2b\u0e25\u0e31\u0e07 (\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14\/\u0e2d\u0e33\u0e40\u0e20\u0e2d\/\u0e15\u0e33\u0e1a\u0e25\/\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23)\r\n\/\/ \u0e16\u0e49\u0e32\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e21\u0e35\u0e15\u0e31\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e19\u0e31\u0e49\u0e19\u0e43\u0e2b\u0e49\u0e23\u0e2d\u0e41\u0e25\u0e49\u0e27\u0e25\u0e2d\u0e07\u0e43\u0e2b\u0e21\u0e48 \u2014 \u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e14\u0e36\u0e07\u0e08\u0e32\u0e01 CDN \u0e43\u0e0a\u0e49\u0e40\u0e27\u0e25\u0e32\u0e2a\u0e31\u0e01\u0e04\u0e23\u0e39\u0e48\r\nfunction draftSetSelect(id, want, done){\r\n  if(!want){ if(done) done(); return; }\r\n  var tries = 0;\r\n  (function attempt(){\r\n    if(draftAborted) return;\r\n    var el = document.getElementById(id);\r\n    if(!el){ if(done) done(); return; }\r\n    if(el.value && el.value !== want){ if(done) done(); return; }   \/\/ \u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e40\u0e2d\u0e07\u0e44\u0e1b\u0e41\u0e25\u0e49\u0e27 \u0e2d\u0e22\u0e48\u0e32\u0e17\u0e31\u0e1a\r\n    el.value = want;\r\n    if(el.value === want){\r\n      el.dispatchEvent(new Event(\"change\", { bubbles:true }));\r\n      if(done) done();\r\n      return;\r\n    }\r\n    if(++tries > 45){ if(done) done(); return; }                    \/\/ ~18 \u0e27\u0e34\u0e19\u0e32\u0e17\u0e35\r\n    setTimeout(attempt, 400);\r\n  })();\r\n}\r\nfunction restoreDraft(){\r\n  var d = readDraft();\r\n  if(!d) return;\r\n  var v = d.v;\r\n  draftRestoring = true;\r\n\r\n  [\"prefix\",\"firstName\",\"lastName\",\"temple\",\"phone\",\"education\",\"pali\",\"dhamma\",\"address\",\"soi\"]\r\n    .forEach(function(id){\r\n      var el = document.getElementById(id);\r\n      if(el && !el.value && v[id]) el.value = v[id];\r\n    });\r\n  onPrefixChange();\r\n  translateOptions(LANG);\r\n\r\n  [\"birthDay\",\"birthMonth\",\"birthYear\"].forEach(function(id){\r\n    var el = document.getElementById(id);\r\n    if(el && !el.value && v[id]) el.value = v[id];\r\n  });\r\n  syncBirthdate();\r\n\r\n  draftSetSelect(\"serviceLocation\", v.serviceLocation);\r\n  draftSetSelect(\"province\", v.province, function(){\r\n    draftSetSelect(\"district\", v.district, function(){\r\n      draftSetSelect(\"subdistrict\", v.subdistrict, function(){\r\n        if(draftAborted) return;\r\n        var pc = document.getElementById(\"postalCode\");\r\n        if(pc && !pc.value && v.postalCode) pc.value = v.postalCode;\r\n        draftRestoring = false;\r\n      });\r\n    });\r\n  });\r\n  setTimeout(function(){ draftRestoring = false; }, 20000);   \/\/ \u0e01\u0e31\u0e19\u0e04\u0e49\u0e32\u0e07\u0e16\u0e49\u0e32\u0e42\u0e2b\u0e25\u0e14\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e44\u0e21\u0e48\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08\r\n\r\n  var bar = document.getElementById(\"draftBar\");\r\n  if(bar){ applyDraftLang(); bar.hidden = false; }\r\n}\r\n(function initDraft(){\r\n  if(!draftStore) return;\r\n  var form = document.getElementById(\"regForm\");\r\n  form.addEventListener(\"input\",  scheduleSaveDraft);\r\n  form.addEventListener(\"change\", scheduleSaveDraft);\r\n  \/\/ \u0e2a\u0e25\u0e31\u0e1a\u0e20\u0e32\u0e29\u0e32\u0e41\u0e25\u0e49\u0e27\u0e15\u0e49\u0e2d\u0e07\u0e41\u0e1b\u0e25\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e1a\u0e19\u0e41\u0e16\u0e1a\u0e14\u0e49\u0e27\u0e22 \u2014 \u0e2b\u0e48\u0e2d setLanguage \u0e40\u0e14\u0e34\u0e21\u0e44\u0e27\u0e49\r\n  var baseSetLanguage = setLanguage;\r\n  setLanguage = function(lang){ baseSetLanguage(lang); applyDraftLang(); };\r\n  restoreDraft();\r\n})();\r\n<\/script>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-9121687 e-flex e-con-boxed e-con e-parent\" data-id=\"9121687\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-40fc714 e-flex e-con-boxed e-con e-parent\" data-id=\"40fc714\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-d795a39 e-flex e-con-boxed e-con e-parent\" data-id=\"d795a39\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>\ud83d\udccb \u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e01\u0e48\u0e2d\u0e19\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19 \u0e01\u0e23\u0e38\u0e13\u0e32\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e43\u0e2b\u0e49\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e48\u0e2d\u0e19\u0e01\u0e14\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19 \u2190 \u0e41\u0e01\u0e49\u0e44\u0e02 \u2726 \u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e01\u0e32\u0e23\u0e2a\u0e21\u0e31\u0e04\u0e23 \u0e44\u0e17\u0e22 EN \u2726 \u0e1b\u0e35\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32 \u2726 \u0e41\u0e1a\u0e1a\u0e1f\u0e2d\u0e23\u0e4c\u0e21\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e40\u0e23\u0e35\u0e22\u0e19\u0e1e\u0e23\u0e30\u0e2d\u0e20\u0e34\u0e18\u0e23\u0e23\u0e21 \u0e01\u0e23\u0e2d\u0e01\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e43\u0e2b\u0e49\u0e04\u0e23\u0e1a\u0e16\u0e49\u0e27\u0e19 \u2014 \u0e23\u0e30\u0e1a\u0e1a\u0e08\u0e30\u0e2d\u0e2d\u0e01\u0e23\u0e2b\u0e31\u0e2a\u0e0a\u0e31\u0e48\u0e27\u0e04\u0e23\u0e32\u0e27\u0e43\u0e2b\u0e49\u0e2b\u0e25\u0e31\u0e07\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08 \ud83d\udcdd \u0e2a\u0e21\u0e31\u0e04\u0e23\u0e40\u0e23\u0e35\u0e22\u0e19 \ud83d\udd0e \u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e2a\u0e16\u0e32\u0e19\u0e30 \u21ba \u0e01\u0e39\u0e49\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e01\u0e23\u0e2d\u0e01\u0e04\u0e49\u0e32\u0e07\u0e44\u0e27\u0e49\u0e43\u0e2b\u0e49\u0e41\u0e25\u0e49\u0e27 \u0e40\u0e01\u0e47\u0e1a\u0e44\u0e27\u0e49\u0e43\u0e19\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e19\u0e35\u0e49 24 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07 \u2014 \u0e23\u0e39\u0e1b\u0e20\u0e32\u0e1e\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e43\u0e2b\u0e21\u0e48 \u0e25\u0e49\u0e32\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 \u270f\ufe0f \u0e01\u0e33\u0e25\u0e31\u0e07\u0e41\u0e01\u0e49\u0e44\u0e02\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 \u0e41\u0e01\u0e49\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e08\u0e38\u0e14\u0e17\u0e35\u0e48\u0e1c\u0e34\u0e14 \u0e41\u0e25\u0e49\u0e27\u0e01\u0e14\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e14\u0e49\u0e32\u0e19\u0e25\u0e48\u0e32\u0e07 \u0e22\u0e01\u0e40\u0e25\u0e34\u0e01 1\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2a\u0e48\u0e27\u0e19\u0e15\u0e31\u0e27 2\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48 3\u0e2b\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\/\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23 4\u0e23\u0e39\u0e1b\u0e41\u0e25\u0e30\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19 \u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2a\u0e48\u0e27\u0e19\u0e15\u0e31\u0e27 \u0e04\u0e33\u0e19\u0e33\u0e2b\u0e19\u0e49\u0e32 * \u2014 \u0e40\u0e25\u0e37\u0e2d\u0e01\u0e04\u0e33\u0e19\u0e33\u0e2b\u0e19\u0e49\u0e32 \u2014\u0e19\u0e32\u0e22\u0e19\u0e32\u0e07\u0e19\u0e32\u0e07\u0e2a\u0e32\u0e27\u0e14.\u0e0a.\u0e14.\u0e0d. \u0e14\u0e23.\u0e1c\u0e28.\u0e1c\u0e28.\u0e14\u0e23.\u0e23\u0e28.\u0e23\u0e28.\u0e14\u0e23.\u0e28.\u0e28.\u0e14\u0e23. \u0e1e\u0e23\u0e30\u0e2a\u0e32\u0e21\u0e40\u0e13\u0e23\u0e1e\u0e23\u0e30\u0e21\u0e2b\u0e32\u0e1e\u0e23\u0e30\u0e2d\u0e18\u0e34\u0e01\u0e32\u0e23\u0e40\u0e08\u0e49\u0e32\u0e2d\u0e18\u0e34\u0e01\u0e32\u0e23\u0e1e\u0e23\u0e30\u0e1b\u0e25\u0e31\u0e14\u0e1e\u0e23\u0e30\u0e2a\u0e21\u0e38\u0e2b\u0e4c\u0e1e\u0e23\u0e30\u0e43\u0e1a\u0e0e\u0e35\u0e01\u0e32\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\u0e1b\u0e25\u0e31\u0e14\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\u0e18\u0e23\u0e23\u0e21\u0e18\u0e23\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\u0e27\u0e34\u0e19\u0e31\u0e22\u0e18\u0e23\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\u0e2a\u0e31\u0e07\u0e06\u0e23\u0e31\u0e01\u0e29\u0e4c\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\u0e2a\u0e21\u0e38\u0e2b\u0e4c\u0e1e\u0e23\u0e30\u0e04\u0e23\u0e39\u0e43\u0e1a\u0e0e\u0e35\u0e01\u0e32 \u0e20\u0e34\u0e01\u0e29\u0e38\u0e13\u0e35\u0e2a\u0e32\u0e21\u0e40\u0e13\u0e23\u0e35\u0e41\u0e21\u0e48\u0e0a\u0e35 \u0e0a\u0e37\u0e48\u0e2d * \u0e19\u0e32\u0e21\u0e2a\u0e01\u0e38\u0e25 \u0e27\u0e31\u0e14 \/ \u0e2a\u0e33\u0e19\u0e31\u0e01 \u0e27\u0e31\u0e19\u0e40\u0e14\u0e37\u0e2d\u0e19\u0e1b\u0e35\u0e40\u0e01\u0e34\u0e14 (\u0e1e.\u0e28.) * [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1471","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/abhidham.mcu.ac.th\/index.php?rest_route=\/wp\/v2\/pages\/1471","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/abhidham.mcu.ac.th\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/abhidham.mcu.ac.th\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/abhidham.mcu.ac.th\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/abhidham.mcu.ac.th\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1471"}],"version-history":[{"count":242,"href":"https:\/\/abhidham.mcu.ac.th\/index.php?rest_route=\/wp\/v2\/pages\/1471\/revisions"}],"predecessor-version":[{"id":4270,"href":"https:\/\/abhidham.mcu.ac.th\/index.php?rest_route=\/wp\/v2\/pages\/1471\/revisions\/4270"}],"wp:attachment":[{"href":"https:\/\/abhidham.mcu.ac.th\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1471"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}