{"id":818,"date":"2026-07-23T09:46:57","date_gmt":"2026-07-23T09:46:57","guid":{"rendered":"https:\/\/victimsrightsprotectiontrust.com\/?page_id=818"},"modified":"2026-07-23T09:47:32","modified_gmt":"2026-07-23T09:47:32","slug":"bjp-dharmik-cell","status":"publish","type":"page","link":"https:\/\/victimsrightsprotectiontrust.com\/?page_id=818","title":{"rendered":"BJP DHARMIK CELL"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"818\" class=\"elementor elementor-818\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c166bd4 e-flex e-con-boxed e-con e-parent\" data-id=\"c166bd4\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f99c1d1 elementor-widget elementor-widget-shortcode\" data-id=\"f99c1d1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">    <div id=\"bjp-endowment-app\" data-handler=\"https:\/\/victimsrightsprotectiontrust.com\/wp-content\/plugins\/bjp-endowment-cell\/handler.php\">\n        <div class=\"bjp-loading\">Loading... \/ \u0c32\u0c4b\u0c21\u0c4d \u0c05\u0c35\u0c41\u0c24\u0c4b\u0c02\u0c26\u0c3f...<\/div>\n    <\/div>\n\n    <style>\n        #bjp-endowment-app, #bjp-endowment-app * { box-sizing: border-box; }\n        #bjp-endowment-app {\n            font-family: 'Segoe UI', 'Nirmala UI', Arial, sans-serif;\n            max-width: 1100px;\n            margin: 0 auto;\n            background: #FFFDF8;\n            border: 1px solid #F0D9B5;\n            border-radius: 10px;\n            overflow: hidden;\n            box-shadow: 0 2px 14px rgba(180,35,26,0.08);\n        }\n        .bjp-topbar {\n            background: linear-gradient(90deg, #FF9933 0%, #FFB35C 55%, #FFFFFF 100%);\n            padding: 14px 20px;\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n            flex-wrap: wrap;\n            gap: 10px;\n            border-bottom: 3px solid #138808;\n        }\n        .bjp-brand {\n            display: flex;\n            align-items: center;\n            gap: 10px;\n            color: #7A1F0A;\n            font-weight: 700;\n        }\n        .bjp-brand .bjp-title-en { font-size: 16px; line-height: 1.2; }\n        .bjp-brand .bjp-title-te { font-size: 13px; color: #138808; font-weight: 600; }\n        .bjp-nav { display: flex; gap: 8px; flex-wrap: wrap; }\n        .bjp-nav button {\n            background: #FFFFFF;\n            color: #B4231A;\n            border: 1.5px solid #B4231A;\n            padding: 7px 12px;\n            border-radius: 6px;\n            font-size: 12.5px;\n            font-weight: 600;\n            cursor: pointer;\n            transition: all .15s;\n        }\n        .bjp-nav button:hover { background: #B4231A; color: #fff; }\n        .bjp-nav button.active { background: #138808; border-color: #138808; color: #fff; }\n\n        .bjp-body { padding: 24px; background: #FFFDF8; min-height: 300px; }\n\n        .bjp-hero {\n            text-align: center;\n            padding: 40px 20px;\n            background: linear-gradient(180deg, #FFF3E0 0%, #FFFDF8 100%);\n            border-radius: 8px;\n            border: 1px dashed #FFCB8E;\n        }\n        .bjp-hero h1 { color: #B4231A; margin: 0 0 4px; font-size: 30px; }\n        .bjp-hero h2 { color: #138808; margin: 0 0 20px; font-size: 20px; }\n        .bjp-hero .bjp-city { color: #7A1F0A; font-weight: 700; font-size: 22px; letter-spacing: 1px; margin-bottom: 24px; }\n        .bjp-officers {\n            display: flex;\n            justify-content: space-between;\n            max-width: 500px;\n            margin: 0 auto 24px;\n            font-size: 13px;\n            color: #444;\n        }\n        .bjp-officers div { text-align: center; }\n        .bjp-officers b { display:block; color:#B4231A; font-size:14px; }\n        .bjp-cta {\n            background: #B4231A;\n            color: #fff;\n            border: none;\n            padding: 14px 34px;\n            border-radius: 30px;\n            font-size: 16px;\n            font-weight: 700;\n            cursor: pointer;\n            box-shadow: 0 3px 10px rgba(180,35,26,0.3);\n        }\n        .bjp-cta:hover { background: #8f1c14; }\n\n        .bjp-section-title { color: #B4231A; font-size: 20px; margin: 0 0 16px; border-bottom: 2px solid #FF9933; padding-bottom: 8px; }\n\n        .bjp-form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px 20px; }\n        @media (max-width: 700px) { .bjp-form-grid { grid-template-columns: 1fr; } }\n        .bjp-field { display: flex; flex-direction: column; gap: 5px; }\n        .bjp-field label { font-size: 13px; font-weight: 600; color: #7A1F0A; }\n        .bjp-field label .te { color: #138808; font-weight: 500; }\n        .bjp-field input, .bjp-field select, .bjp-field textarea {\n            border: 1.5px solid #F0D9B5;\n            border-radius: 6px;\n            padding: 9px 10px;\n            font-size: 14px;\n            background: #fff;\n            color: #333;\n        }\n        .bjp-field input:focus, .bjp-field select:focus, .bjp-field textarea:focus {\n            outline: none;\n            border-color: #FF9933;\n        }\n        .bjp-field.full { grid-column: 1 \/ -1; }\n        .bjp-form-actions { margin-top: 20px; display: flex; gap: 12px; }\n        .bjp-btn {\n            background: #138808; color: #fff; border: none; padding: 11px 26px;\n            border-radius: 6px; font-weight: 700; cursor: pointer; font-size: 14px;\n        }\n        .bjp-btn:hover { background: #0e6706; }\n        .bjp-btn.secondary { background: #fff; color: #B4231A; border: 1.5px solid #B4231A; }\n        .bjp-btn.secondary:hover { background: #FFF3E0; }\n        .bjp-btn.danger { background: #B4231A; }\n        .bjp-btn.danger:hover { background: #8f1c14; }\n        .bjp-btn.small { padding: 5px 10px; font-size: 12px; border-radius: 5px; }\n\n        .bjp-msg { padding: 10px 14px; border-radius: 6px; margin-bottom: 16px; font-size: 13.5px; }\n        .bjp-msg.ok { background: #E6F4E1; color: #138808; border: 1px solid #b6e0ab; }\n        .bjp-msg.err { background: #FDECEA; color: #B4231A; border: 1px solid #f5c2bd; }\n\n        .bjp-otp-row { display: flex; gap: 8px; }\n        .bjp-otp-row input { text-align: center; letter-spacing: 2px; font-weight: 700; width: 90px; }\n\n        .bjp-login-box {\n            max-width: 420px; margin: 10px auto; background: #fff; border: 1.5px solid #F0D9B5;\n            border-radius: 10px; padding: 26px;\n        }\n        .bjp-login-box h3 { color: #B4231A; margin-top:0; }\n        .bjp-tabbar { display: flex; gap: 8px; margin-bottom: 18px; }\n        .bjp-tabbar button {\n            flex: 1; padding: 8px; border-radius: 6px; border: 1.5px solid #F0D9B5; background: #FFF8ED;\n            font-weight: 600; color: #7A1F0A; cursor: pointer; font-size: 13px;\n        }\n        .bjp-tabbar button.active { background: #FF9933; color: #fff; border-color: #FF9933; }\n\n        .bjp-stats { display: flex; gap: 14px; flex-wrap: wrap; margin-bottom: 18px; }\n        .bjp-stat-box {\n            flex: 1; min-width: 110px; background: #fff; border: 1.5px solid #F0D9B5; border-radius: 8px;\n            padding: 14px; text-align: center;\n        }\n        .bjp-stat-box .num { font-size: 24px; font-weight: 800; color: #B4231A; }\n        .bjp-stat-box .lbl { font-size: 12px; color: #666; margin-top: 2px; }\n\n        .bjp-filterbar { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; margin-bottom: 14px; }\n        .bjp-filterbar button {\n            padding: 6px 14px; border-radius: 20px; border: 1.5px solid #F0D9B5; background: #fff;\n            font-size: 12.5px; cursor: pointer; color: #555;\n        }\n        .bjp-filterbar button.active { background: #138808; color: #fff; border-color: #138808; }\n        .bjp-filterbar input[type=text] {\n            flex: 1; min-width: 160px; padding: 7px 10px; border-radius: 20px; border: 1.5px solid #F0D9B5;\n        }\n\n        .bjp-table-wrap { overflow-x: auto; border: 1px solid #F0D9B5; border-radius: 8px; }\n        table.bjp-table { width: 100%; border-collapse: collapse; font-size: 13px; }\n        table.bjp-table th {\n            background: #FFF3E0; color: #7A1F0A; padding: 9px 8px; text-align: left; white-space: nowrap;\n            position: sticky; top: 0;\n        }\n        table.bjp-table td { padding: 8px; border-top: 1px solid #F5E6CC; word-break: break-word; font-size: 13px; }\n        table.bjp-table tr:hover { background: #FFFBF2; }\n        .bjp-badge { padding: 3px 9px; border-radius: 12px; font-size: 11px; font-weight: 700; }\n        .bjp-badge.pending { background: #FFF3CD; color: #856404; }\n        .bjp-badge.approved { background: #D4EDDA; color: #138808; }\n        .bjp-badge.rejected { background: #F8D7DA; color: #B4231A; }\n\n        .bjp-row-actions { display: flex; gap: 5px; flex-wrap: wrap; }\n        .bjp-row-actions button {\n            border: none; color: #fff; padding: 4px 9px; border-radius: 4px; font-size: 11px; cursor: pointer;\n        }\n        .bjp-btn-approve { background: #138808; }\n        .bjp-btn-edit { background: #FF9933; }\n        .bjp-btn-delete { background: #B4231A; }\n        .bjp-btn-word { background: #2C6DB4; }\n\n        .bjp-inline-edit { background: #FFFBF2; }\n        .bjp-inline-edit td { padding: 12px; }\n\n        .bjp-logout-bar { display: flex; justify-content: space-between; align-items: center; margin-bottom: 16px; }\n\n        .bjp-photo-row { display: flex; gap: 14px; align-items: flex-start; flex-wrap: wrap; }\n        .bjp-photo-preview { width: 90px; height: 110px; object-fit: cover; border: 1.5px solid #F0D9B5; border-radius: 6px; background: #fff; }\n        .bjp-photo-btns { display: flex; flex-direction: column; gap: 6px; align-items: flex-start; }\n        .bjp-photo-btns .bjp-btn { padding: 6px 12px; font-size: 12px; }\n        .bjp-photo-hint { font-size: 11px; color: #888; }\n        .bjp-admin-thumb { width: 34px; height: 42px; object-fit: cover; border-radius: 3px; border: 1px solid #F0D9B5; }\n\n        #bjp-endowment-app .bjp-empty { text-align: center; padding: 40px; color: #999; }\n        #bjp-endowment-app .bjp-hidden { display: none !important; }\n        #bjp-endowment-app a { color: #B4231A; }\n    <\/style>\n\n    <script>\n    (function() {\n        var root = document.getElementById('bjp-endowment-app');\n        var HANDLER = root.getAttribute('data-handler');\n\n        var FIELDS = [\n            {key:'name', en:'Name of the Member', te:'\u0c38\u0c2d\u0c4d\u0c2f\u0c41\u0c28\u0c3f \u0c2a\u0c47\u0c30\u0c41', type:'text', required:true},\n            {key:'aadhaar', en:'Aadhaar Number', te:'\u0c06\u0c27\u0c3e\u0c30\u0c4d \u0c28\u0c02\u0c2c\u0c30\u0c4d', type:'text', required:true},\n            {key:'voter_id', en:'Voter ID Number', te:'\u0c13\u0c1f\u0c30\u0c4d \u0c10\u0c21\u0c3f \u0c28\u0c02\u0c2c\u0c30\u0c4d', type:'text'},\n            {key:'party_membership_no', en:'Party Membership Number', te:'\u0c2a\u0c3e\u0c30\u0c4d\u0c1f\u0c40 \u0c38\u0c2d\u0c4d\u0c2f\u0c24\u0c4d\u0c35 \u0c38\u0c02\u0c16\u0c4d\u0c2f', type:'text'},\n            {key:'mobile', en:'Mobile Number', te:'\u0c2e\u0c4a\u0c2c\u0c48\u0c32\u0c4d \u0c28\u0c02\u0c2c\u0c30\u0c4d', type:'text', required:true},\n            {key:'email', en:'E-mail Address', te:'\u0c08-\u0c2e\u0c46\u0c2f\u0c3f\u0c32\u0c4d \u0c1a\u0c3f\u0c30\u0c41\u0c28\u0c3e\u0c2e\u0c3e', type:'email'},\n            {key:'district', en:'District', te:'\u0c1c\u0c3f\u0c32\u0c4d\u0c32\u0c3e', type:'text'},\n            {key:'assembly_constituency', en:'Assembly Constituency', te:'\u0c05\u0c38\u0c46\u0c02\u0c2c\u0c4d\u0c32\u0c40 \u0c28\u0c3f\u0c2f\u0c4b\u0c1c\u0c15\u0c35\u0c30\u0c4d\u0c17\u0c02', type:'text'},\n            {key:'parliament_constituency', en:'Parliament Constituency', te:'\u0c2a\u0c3e\u0c30\u0c4d\u0c32\u0c2e\u0c46\u0c02\u0c1f\u0c4d \u0c28\u0c3f\u0c2f\u0c4b\u0c1c\u0c15\u0c35\u0c30\u0c4d\u0c17\u0c02', type:'text'},\n            {key:'parent_name', en:'Father \/ Mother Name', te:'\u0c24\u0c02\u0c21\u0c4d\u0c30\u0c3f \/ \u0c24\u0c32\u0c4d\u0c32\u0c3f \u0c2a\u0c47\u0c30\u0c41', type:'text'},\n            {key:'dob', en:'Date of Birth', te:'\u0c2a\u0c41\u0c1f\u0c4d\u0c1f\u0c3f\u0c28 \u0c24\u0c47\u0c26\u0c3f', type:'date'},\n            {key:'native_place', en:'Native Village \/ City', te:'\u0c38\u0c4d\u0c35\u0c17\u0c4d\u0c30\u0c3e\u0c2e\u0c02 \/ \u0c28\u0c17\u0c30\u0c02', type:'text'},\n            {key:'education', en:'Educational Qualifications', te:'\u0c35\u0c3f\u0c26\u0c4d\u0c2f\u0c3e \u0c05\u0c30\u0c4d\u0c39\u0c24\u0c32\u0c41', type:'text'},\n            {key:'present_address', en:'Present Address', te:'\u0c2a\u0c4d\u0c30\u0c38\u0c4d\u0c24\u0c41\u0c24 \u0c1a\u0c3f\u0c30\u0c41\u0c28\u0c3e\u0c2e\u0c3e', type:'textarea', full:true},\n            {key:'post_held', en:'Post Held Previously', te:'\u0c17\u0c24\u0c02\u0c32\u0c4b \u0c28\u0c3f\u0c30\u0c4d\u0c35\u0c39\u0c3f\u0c02\u0c1a\u0c3f\u0c28 \u0c2a\u0c26\u0c35\u0c3f', type:'text'},\n            {key:'other_info', en:'Any Other Information', te:'\u0c0f\u0c26\u0c48\u0c28\u0c3e \u0c07\u0c24\u0c30 \u0c38\u0c2e\u0c3e\u0c1a\u0c3e\u0c30\u0c02', type:'textarea', full:true}\n        ];\n\n        var state = { view: 'home', adminPass: null, member: null, editingId: null, filter: 'all', search: '', rows: [] };\n\n        function esc(s) { var d = document.createElement('div'); d.innerText = (s === null || s === undefined) ? '' : s; return d.innerHTML; }\n\n        function post(action, data) {\n            var fd = new FormData();\n            fd.append('action', action);\n            for (var k in data) { if (data[k] !== undefined && data[k] !== null) fd.append(k, data[k]); }\n            return fetch(HANDLER, { method: 'POST', body: fd }).then(function(r){ return r.json(); });\n        }\n\n        function fieldHtml(f, val) {\n            val = val || '';\n            var label = '<label>' + esc(f.en) + ' <span class=\"te\">\/ ' + esc(f.te) + '<\/span><\/label>';\n            var input;\n            if (f.type === 'textarea') {\n                input = '<textarea data-key=\"' + f.key + '\" rows=\"3\">' + esc(val) + '<\/textarea>';\n            } else {\n                input = '<input type=\"' + (f.type === 'date' ? 'text' : f.type) + '\" placeholder=\"' + (f.type==='date' ? 'DD-MM-YYYY' : '') + '\" data-key=\"' + f.key + '\" value=\"' + esc(val) + '\">';\n            }\n            return '<div class=\"bjp-field ' + (f.full ? 'full' : '') + '\">' + label + input + '<\/div>';\n        }\n\n        function collectForm(container) {\n            var data = {};\n            container.querySelectorAll('[data-key]').forEach(function(el) { data[el.getAttribute('data-key')] = el.value; });\n            return data;\n        }\n\n        function photoFieldHtml(val, uid) {\n            val = val || '';\n            return '<div class=\"bjp-field full\">' +\n                '<label>Upload Photo <span class=\"te\">\/ \u0c2b\u0c4b\u0c1f\u0c4b \u0c05\u0c2a\u0c4d\u200c\u0c32\u0c4b\u0c21\u0c4d \u0c1a\u0c47\u0c2f\u0c02\u0c21\u0c3f (\u0c24\u0c2a\u0c4d\u0c2a\u0c28\u0c3f\u0c38\u0c30\u0c3f)<\/span><\/label>' +\n                '<div class=\"bjp-photo-row\" data-uid=\"' + uid + '\">' +\n                '  <img decoding=\"async\" class=\"bjp-photo-preview\" id=\"preview-' + uid + '\" src=\"' + val + '\" style=\"' + (val ? '' : 'display:none;') + '\">' +\n                '  <div class=\"bjp-photo-btns\">' +\n                '    <input type=\"hidden\" data-key=\"photo\" id=\"photoval-' + uid + '\" value=\\'' + val.replace(\/'\/g, '&#39;') + '\\'>' +\n                '    <input type=\"file\" accept=\"image\/jpeg\" id=\"filegallery-' + uid + '\" style=\"display:none;\">' +\n                '    <input type=\"file\" accept=\"image\/jpeg\" capture=\"environment\" id=\"filerear-' + uid + '\" style=\"display:none;\">' +\n                '    <input type=\"file\" accept=\"image\/jpeg\" capture=\"user\" id=\"filefront-' + uid + '\" style=\"display:none;\">' +\n                '    <button type=\"button\" class=\"bjp-btn secondary\" data-trigger=\"filegallery-' + uid + '\">Upload JPG\/JPEG<\/button>' +\n                '    <button type=\"button\" class=\"bjp-btn secondary\" data-trigger=\"filerear-' + uid + '\">Camera (Rear)<\/button>' +\n                '    <button type=\"button\" class=\"bjp-btn secondary\" data-trigger=\"filefront-' + uid + '\">Camera (Front)<\/button>' +\n                '    <div class=\"bjp-photo-hint\">JPG \/ JPEG only. Photo is auto-resized &amp; compressed.<\/div>' +\n                '  <\/div>' +\n                '<\/div>' +\n                '<\/div>';\n        }\n\n        function setupPhotoWidgets(container, uid) {\n            ['filegallery-' + uid, 'filerear-' + uid, 'filefront-' + uid].forEach(function(id) {\n                var input = container.querySelector('#' + id);\n                if (!input) return;\n                input.addEventListener('change', function(e) { handlePhotoFile(e.target.files[0], uid); });\n            });\n            container.querySelectorAll('[data-trigger]').forEach(function(btn) {\n                btn.addEventListener('click', function() {\n                    var el = container.querySelector('#' + btn.getAttribute('data-trigger'));\n                    if (el) el.click();\n                });\n            });\n        }\n\n        function handlePhotoFile(file, uid) {\n            if (!file) return;\n            var validTypes = ['image\/jpeg', 'image\/jpg'];\n            if (validTypes.indexOf(file.type) === -1) {\n                alert('Please select a JPG \/ JPEG image only. \/ \u0c26\u0c2f\u0c1a\u0c47\u0c38\u0c3f JPG\/JPEG \u0c1a\u0c3f\u0c24\u0c4d\u0c30\u0c02 \u0c2e\u0c3e\u0c24\u0c4d\u0c30\u0c2e\u0c47 \u0c0e\u0c02\u0c1a\u0c41\u0c15\u0c4b\u0c02\u0c21\u0c3f');\n                return;\n            }\n            if (file.size > 8 * 1024 * 1024) {\n                alert('Image too large. Please choose a photo under 8MB.');\n                return;\n            }\n            var reader = new FileReader();\n            reader.onload = function(ev) {\n                var img = new Image();\n                img.onload = function() {\n                    var maxDim = 900;\n                    var w = img.width, h = img.height;\n                    if (w > h) { if (w > maxDim) { h = Math.round(h * maxDim \/ w); w = maxDim; } }\n                    else { if (h > maxDim) { w = Math.round(w * maxDim \/ h); h = maxDim; } }\n                    var canvas = document.createElement('canvas');\n                    canvas.width = w; canvas.height = h;\n                    var ctx = canvas.getContext('2d');\n                    ctx.drawImage(img, 0, 0, w, h);\n                    var dataUrl = canvas.toDataURL('image\/jpeg', 0.72);\n                    var preview = document.getElementById('preview-' + uid);\n                    var hiddenInput = document.getElementById('photoval-' + uid);\n                    if (preview) { preview.src = dataUrl; preview.style.display = 'block'; }\n                    if (hiddenInput) { hiddenInput.value = dataUrl; }\n                };\n                img.src = ev.target.result;\n            };\n            reader.readAsDataURL(file);\n        }\n\n        function render() {\n            var html = '';\n            html += '<div class=\"bjp-topbar\">';\n            html += '  <div class=\"bjp-brand\"><div class=\"bjp-title-en\">TELANGANA BJP ENDOWMENT [DHARMIKA] CELL<\/div><\/div>';\n            html += '  <div class=\"bjp-nav\">';\n            html += navBtn('home', 'Home');\n            html += navBtn('enroll', 'Enroll');\n            html += navBtn('adminLogin', 'Admin Login');\n            html += navBtn('chart', 'Applicants Chart');\n            html += navBtn('publicList', 'Public List');\n            html += navBtn('memberLogin', 'Member Login \/ Edit');\n            html += '  <\/div>';\n            html += '<\/div>';\n            html += '<div class=\"bjp-body\" id=\"bjp-body\"><\/div>';\n            root.innerHTML = html;\n\n            root.querySelectorAll('.bjp-nav button').forEach(function(b) {\n                b.addEventListener('click', function() {\n                    var v = b.getAttribute('data-view');\n                    if (v === 'adminPanel' && !state.adminPass) v = 'adminLogin';\n                    goto(v);\n                });\n            });\n\n            renderBody();\n        }\n\n        function navBtn(view, label) {\n            var active = (state.view === view) || (view === 'adminLogin' && state.view === 'adminPanel');\n            return '<button data-view=\"' + view + '\" class=\"' + (active ? 'active' : '') + '\">' + label + '<\/button>';\n        }\n\n        function goto(view) {\n            state.view = view;\n            render();\n        }\n\n        function renderBody() {\n            var body = document.getElementById('bjp-body');\n            if (state.view === 'home') return renderHome(body);\n            if (state.view === 'enroll') return renderEnroll(body);\n            if (state.view === 'adminLogin') return renderAdminLogin(body);\n            if (state.view === 'adminPanel') return renderAdminPanel(body);\n            if (state.view === 'chart') return renderChart(body);\n            if (state.view === 'publicList') return renderPublicList(body);\n            if (state.view === 'memberLogin') return renderMemberLogin(body);\n            if (state.view === 'memberEdit') return renderMemberEdit(body);\n        }\n\n        \/* ---------------- HOME ---------------- *\/\n        function renderHome(body) {\n            body.innerHTML =\n                '<div class=\"bjp-hero\">' +\n                '  <h1>Welcome to<\/h1>' +\n                '  <h2>Endowment Dharmik Cell<\/h2>' +\n                '  <div class=\"bjp-city\">HYDERABAD<\/div>' +\n                '  <div class=\"bjp-officers\">' +\n                '    <div><b>Surya Prakash Annavajula<\/b>Convenor<\/div>' +\n                '    <div><b>Niranjan Desai<\/b>Co-Convenor<\/div>' +\n                '  <\/div>' +\n                '  <button class=\"bjp-cta\" id=\"bjp-home-enroll\">Enroll Now \/ \u0c28\u0c2e\u0c4b\u0c26\u0c41 \u0c1a\u0c47\u0c38\u0c41\u0c15\u0c4b\u0c02\u0c21\u0c3f<\/button>' +\n                '<\/div>';\n            document.getElementById('bjp-home-enroll').addEventListener('click', function() { goto('enroll'); });\n        }\n\n        \/* ---------------- ENROLL ---------------- *\/\n        function renderEnroll(body) {\n            var grid = FIELDS.map(function(f) { return fieldHtml(f, ''); }).join('') + photoFieldHtml('', 'enroll');\n            body.innerHTML =\n                '<h3 class=\"bjp-section-title\">Online Form for Enrollment \/ \u0c28\u0c2e\u0c4b\u0c26\u0c41 \u0c2b\u0c3e\u0c30\u0c02<\/h3>' +\n                '<div id=\"bjp-enroll-msg\"><\/div>' +\n                '<div class=\"bjp-form-grid\" id=\"bjp-enroll-form\">' + grid + '<\/div>' +\n                '<div class=\"bjp-form-actions\">' +\n                '  <button class=\"bjp-btn\" id=\"bjp-enroll-submit\">Submit \/ \u0c38\u0c2e\u0c30\u0c4d\u0c2a\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f<\/button>' +\n                '  <button class=\"bjp-btn secondary\" id=\"bjp-enroll-cancel\">Cancel<\/button>' +\n                '<\/div>';\n\n            setupPhotoWidgets(document.getElementById('bjp-enroll-form'), 'enroll');\n            document.getElementById('bjp-enroll-cancel').addEventListener('click', function() { goto('home'); });\n            document.getElementById('bjp-enroll-submit').addEventListener('click', function() {\n                var data = collectForm(document.getElementById('bjp-enroll-form'));\n                var msg = document.getElementById('bjp-enroll-msg');\n                if (!data.name || !data.aadhaar || !data.mobile) {\n                    msg.innerHTML = '<div class=\"bjp-msg err\">Name, Aadhaar and Mobile are required. \/ \u0c2a\u0c47\u0c30\u0c41, \u0c06\u0c27\u0c3e\u0c30\u0c4d, \u0c2e\u0c4a\u0c2c\u0c48\u0c32\u0c4d \u0c24\u0c2a\u0c4d\u0c2a\u0c28\u0c3f\u0c38\u0c30\u0c3f<\/div>';\n                    return;\n                }\n                if (!data.photo) {\n                    msg.innerHTML = '<div class=\"bjp-msg err\">Photo is required. \/ \u0c2b\u0c4b\u0c1f\u0c4b \u0c24\u0c2a\u0c4d\u0c2a\u0c28\u0c3f\u0c38\u0c30\u0c3f<\/div>';\n                    return;\n                }\n                data.action = 'enroll_submit';\n                post('enroll_submit', data).then(function(res) {\n                    if (res.success) {\n                        msg.innerHTML = '<div class=\"bjp-msg ok\">' + esc(res.message) + '<\/div>';\n                        document.getElementById('bjp-enroll-form').querySelectorAll('input,textarea').forEach(function(el){ el.value=''; });\n                        var pv = document.getElementById('preview-enroll');\n                        if (pv) { pv.src = ''; pv.style.display = 'none'; }\n                    } else {\n                        msg.innerHTML = '<div class=\"bjp-msg err\">' + esc(res.message) + '<\/div>';\n                    }\n                });\n            });\n        }\n\n        \/* ---------------- MEMBER LOGIN ---------------- *\/\n        function renderMemberLogin(body) {\n            body.innerHTML =\n                '<div class=\"bjp-login-box\">' +\n                '  <h3>Member Login \/ \u0c38\u0c2d\u0c4d\u0c2f\u0c41\u0c28\u0c3f \u0c32\u0c3e\u0c17\u0c3f\u0c28\u0c4d<\/h3>' +\n                '  <div class=\"bjp-tabbar\">' +\n                '    <button id=\"bjp-tab-aadhaar\" class=\"active\">Aadhaar No.<\/button>' +\n                '    <button id=\"bjp-tab-mobile\">Mobile No.<\/button>' +\n                '  <\/div>' +\n                '  <div id=\"bjp-login-msg\"><\/div>' +\n                '  <div id=\"bjp-login-aadhaar-fields\">' +\n                '    <div class=\"bjp-field\"><label>Aadhaar Number<\/label>' +\n                '      <div class=\"bjp-otp-row\">' +\n                '        <input maxlength=\"4\" id=\"a1\" placeholder=\"xxxx\">' +\n                '        <input maxlength=\"4\" id=\"a2\" placeholder=\"xxxx\">' +\n                '        <input maxlength=\"4\" id=\"a3\" placeholder=\"xxxx\">' +\n                '      <\/div><\/div>' +\n                '  <\/div>' +\n                '  <div id=\"bjp-login-mobile-fields\" class=\"bjp-hidden\">' +\n                '    <div class=\"bjp-field\"><label>Mobile Number<\/label>' +\n                '      <div class=\"bjp-otp-row\">' +\n                '        <input maxlength=\"5\" id=\"m1\" placeholder=\"xxxxx\">' +\n                '        <input maxlength=\"5\" id=\"m2\" placeholder=\"xxxxx\">' +\n                '      <\/div><\/div>' +\n                '  <\/div>' +\n                '  <div class=\"bjp-field\" style=\"margin-top:10px;\"><label>Birth Year<\/label><input maxlength=\"4\" id=\"byear\" placeholder=\"xxxx\"><\/div>' +\n                '  <div class=\"bjp-form-actions\"><button class=\"bjp-btn\" id=\"bjp-login-go\">Login \/ \u0c32\u0c3e\u0c17\u0c3f\u0c28\u0c4d<\/button><\/div>' +\n                '<\/div>';\n\n            var mode = 'aadhaar';\n            function setupJump(ids, len) {\n                ids.forEach(function(id, idx) {\n                    var el = document.getElementById(id);\n                    el.addEventListener('input', function() {\n                        el.value = el.value.replace(\/\\D\/g,'');\n                        if (el.value.length >= len && ids[idx+1]) document.getElementById(ids[idx+1]).focus();\n                    });\n                });\n            }\n            setupJump(['a1','a2','a3'], 4);\n            setupJump(['m1','m2'], 5);\n            document.getElementById('byear').addEventListener('input', function(e){ e.target.value = e.target.value.replace(\/\\D\/g,''); });\n\n            document.getElementById('bjp-tab-aadhaar').addEventListener('click', function() {\n                mode = 'aadhaar';\n                document.getElementById('bjp-tab-aadhaar').classList.add('active');\n                document.getElementById('bjp-tab-mobile').classList.remove('active');\n                document.getElementById('bjp-login-aadhaar-fields').classList.remove('bjp-hidden');\n                document.getElementById('bjp-login-mobile-fields').classList.add('bjp-hidden');\n            });\n            document.getElementById('bjp-tab-mobile').addEventListener('click', function() {\n                mode = 'mobile';\n                document.getElementById('bjp-tab-mobile').classList.add('active');\n                document.getElementById('bjp-tab-aadhaar').classList.remove('active');\n                document.getElementById('bjp-login-mobile-fields').classList.remove('bjp-hidden');\n                document.getElementById('bjp-login-aadhaar-fields').classList.add('bjp-hidden');\n            });\n\n            document.getElementById('bjp-login-go').addEventListener('click', function() {\n                var msg = document.getElementById('bjp-login-msg');\n                var byear = document.getElementById('byear').value.trim();\n                var payload = { method: mode, birth_year: byear };\n                if (mode === 'aadhaar') {\n                    payload.aadhaar = ['a1','a2','a3'].map(function(id){ return document.getElementById(id).value; }).join('');\n                } else {\n                    payload.mobile = ['m1','m2'].map(function(id){ return document.getElementById(id).value; }).join('');\n                }\n                post('member_login', payload).then(function(res) {\n                    if (res.success) {\n                        state.member = res.member;\n                        state.member._birth_year = byear;\n                        goto('memberEdit');\n                    } else {\n                        msg.innerHTML = '<div class=\"bjp-msg err\">' + esc(res.message) + '<\/div>';\n                    }\n                });\n            });\n        }\n\n        \/* ---------------- MEMBER EDIT ---------------- *\/\n        function renderMemberEdit(body) {\n            if (!state.member) { goto('memberLogin'); return; }\n            var m = state.member;\n            var grid = FIELDS.map(function(f) { return fieldHtml(f, m[f.key]); }).join('') + photoFieldHtml(m.photo || '', 'medit');\n            body.innerHTML =\n                '<h3 class=\"bjp-section-title\">Edit My Details \/ \u0c28\u0c3e \u0c35\u0c3f\u0c35\u0c30\u0c3e\u0c32\u0c41 \u0c28\u0c35\u0c40\u0c15\u0c30\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f<\/h3>' +\n                '<div id=\"bjp-medit-msg\"><\/div>' +\n                '<div class=\"bjp-form-grid\" id=\"bjp-medit-form\">' + grid + '<\/div>' +\n                '<div class=\"bjp-form-actions\">' +\n                '  <button class=\"bjp-btn\" id=\"bjp-medit-save\">Save Changes \/ \u0c2e\u0c3e\u0c30\u0c4d\u0c2a\u0c41\u0c32\u0c28\u0c41 \u0c2d\u0c26\u0c4d\u0c30\u0c2a\u0c30\u0c1a\u0c02\u0c21\u0c3f<\/button>' +\n                '  <button class=\"bjp-btn secondary\" id=\"bjp-medit-logout\">Logout<\/button>' +\n                '<\/div>';\n\n            setupPhotoWidgets(document.getElementById('bjp-medit-form'), 'medit');\n            document.getElementById('bjp-medit-logout').addEventListener('click', function() { state.member = null; goto('home'); });\n            document.getElementById('bjp-medit-save').addEventListener('click', function() {\n                var data = collectForm(document.getElementById('bjp-medit-form'));\n                var msgEl = document.getElementById('bjp-medit-msg');\n                if (!data.photo) {\n                    msgEl.innerHTML = '<div class=\"bjp-msg err\">Photo is required. \/ \u0c2b\u0c4b\u0c1f\u0c4b \u0c24\u0c2a\u0c4d\u0c2a\u0c28\u0c3f\u0c38\u0c30\u0c3f<\/div>';\n                    return;\n                }\n                data.id = m.id;\n                data.birth_year = m._birth_year;\n                post('member_update', data).then(function(res) {\n                    var msg = document.getElementById('bjp-medit-msg');\n                    msg.innerHTML = '<div class=\"bjp-msg ' + (res.success ? 'ok' : 'err') + '\">' + esc(res.message) + '<\/div>';\n                });\n            });\n        }\n\n        \/* ---------------- ADMIN LOGIN ---------------- *\/\n        function renderAdminLogin(body) {\n            body.innerHTML =\n                '<div class=\"bjp-login-box\">' +\n                '  <h3>Admin Login<\/h3>' +\n                '  <div id=\"bjp-admin-login-msg\"><\/div>' +\n                '  <div class=\"bjp-field\"><label>Password<\/label><input type=\"password\" id=\"bjp-admin-pass\"><\/div>' +\n                '  <div class=\"bjp-form-actions\"><button class=\"bjp-btn\" id=\"bjp-admin-login-go\">Login<\/button><\/div>' +\n                '<\/div>';\n            document.getElementById('bjp-admin-login-go').addEventListener('click', function() {\n                var pw = document.getElementById('bjp-admin-pass').value;\n                post('admin_login', { password: pw }).then(function(res) {\n                    if (res.success) { state.adminPass = pw; goto('adminPanel'); }\n                    else document.getElementById('bjp-admin-login-msg').innerHTML = '<div class=\"bjp-msg err\">' + esc(res.message) + '<\/div>';\n                });\n            });\n        }\n\n        \/* ---------------- ADMIN PANEL ---------------- *\/\n        function renderAdminPanel(body) {\n            if (!state.adminPass) { goto('adminLogin'); return; }\n            body.innerHTML = '<div class=\"bjp-logout-bar\">' +\n                '<h3 class=\"bjp-section-title\" style=\"margin:0;border:none;\">Admin Panel<\/h3>' +\n                '<button class=\"bjp-btn secondary small\" id=\"bjp-admin-logout\">Logout<\/button><\/div>' +\n                '<div class=\"bjp-stats\" id=\"bjp-admin-stats\"><\/div>' +\n                '<div class=\"bjp-filterbar\">' +\n                '  <button data-f=\"all\" class=\"active\">All<\/button>' +\n                '  <button data-f=\"approved\">Approved<\/button>' +\n                '  <button data-f=\"pending\">Pending<\/button>' +\n                '  <button data-f=\"rejected\">Rejected<\/button>' +\n                '  <input type=\"text\" id=\"bjp-admin-search\" placeholder=\"Search name \/ mobile \/ aadhaar...\">' +\n                '<\/div>' +\n                '<div style=\"margin-bottom:10px;\">' +\n                '  <label style=\"font-size:12px;\"><input type=\"checkbox\" id=\"bjp-select-all\"> Select All<\/label>' +\n                '  <button class=\"bjp-btn small\" id=\"bjp-bulk-approve\">Bulk Approve<\/button>' +\n                '  <button class=\"bjp-btn secondary small\" id=\"bjp-bulk-reject\">Bulk Reject<\/button>' +\n                '  <button class=\"bjp-btn danger small\" id=\"bjp-bulk-delete\">Bulk Delete<\/button>' +\n                '  <span id=\"bjp-selected-count\" style=\"font-size:12px;color:#666;\"><\/span>' +\n                '<\/div>' +\n                '<div class=\"bjp-table-wrap\"><table class=\"bjp-table\"><thead><tr>' +\n                '<th><\/th><th>Photo<\/th><th>Name<\/th><th>Aadhaar<\/th><th>Mobile<\/th><th>District<\/th><th>AC<\/th><th>Status<\/th><th>Actions<\/th>' +\n                '<\/tr><\/thead><tbody id=\"bjp-admin-tbody\"><\/tbody><\/table><\/div>';\n\n            document.getElementById('bjp-admin-logout').addEventListener('click', function() {\n                state.adminPass = null; goto('home');\n            });\n            body.querySelectorAll('.bjp-filterbar button[data-f]').forEach(function(b) {\n                b.addEventListener('click', function() {\n                    state.filter = b.getAttribute('data-f');\n                    body.querySelectorAll('.bjp-filterbar button[data-f]').forEach(function(x){ x.classList.remove('active'); });\n                    b.classList.add('active');\n                    renderAdminTable();\n                });\n            });\n            document.getElementById('bjp-admin-search').addEventListener('input', function(e) {\n                state.search = e.target.value.toLowerCase();\n                renderAdminTable();\n            });\n            document.getElementById('bjp-select-all').addEventListener('change', function(e) {\n                document.querySelectorAll('.bjp-row-check').forEach(function(c){ c.checked = e.target.checked; });\n                updateSelectedCount();\n            });\n            document.getElementById('bjp-bulk-approve').addEventListener('click', function() { bulkUpdate('approved'); });\n            document.getElementById('bjp-bulk-reject').addEventListener('click', function() { bulkUpdate('rejected'); });\n            document.getElementById('bjp-bulk-delete').addEventListener('click', function() {\n                var ids = getSelectedIds();\n                if (!ids.length) return;\n                if (!confirm('Delete ' + ids.length + ' record(s)? This cannot be undone.')) return;\n                post('admin_delete', { password: state.adminPass, ids: ids }).then(function() { loadAdminData(); });\n            });\n\n            loadAdminData();\n        }\n\n        function loadAdminData() {\n            post('admin_stats', { password: state.adminPass }).then(function(res) {\n                if (!res.success) return;\n                document.getElementById('bjp-admin-stats').innerHTML =\n                    statBox(res.total, 'Total') + statBox(res.pending, 'Pending') + statBox(res.approved, 'Approved') + statBox(res.rejected, 'Rejected');\n            });\n            post('admin_list', { password: state.adminPass }).then(function(res) {\n                if (!res.success) return;\n                state.rows = res.rows;\n                renderAdminTable();\n            });\n        }\n\n        function statBox(num, lbl) {\n            return '<div class=\"bjp-stat-box\"><div class=\"num\">' + num + '<\/div><div class=\"lbl\">' + lbl + '<\/div><\/div>';\n        }\n\n        function getSelectedIds() {\n            return Array.prototype.slice.call(document.querySelectorAll('.bjp-row-check:checked')).map(function(c){ return c.value; });\n        }\n        function updateSelectedCount() {\n            var n = getSelectedIds().length;\n            var el = document.getElementById('bjp-selected-count');\n            if (el) el.innerText = n ? (n + ' selected') : '';\n        }\n        function bulkUpdate(status) {\n            var ids = getSelectedIds();\n            if (!ids.length) return;\n            post('admin_update_status', { password: state.adminPass, status: status, ids: ids }).then(function() { loadAdminData(); });\n        }\n\n        function renderAdminTable() {\n            var tbody = document.getElementById('bjp-admin-tbody');\n            if (!tbody) return;\n            var rows = state.rows.filter(function(r) {\n                if (state.filter !== 'all' && r.status !== state.filter) return false;\n                if (state.search) {\n                    var hay = (r.name + ' ' + r.mobile + ' ' + r.aadhaar).toLowerCase();\n                    if (hay.indexOf(state.search) === -1) return false;\n                }\n                return true;\n            });\n            if (!rows.length) { tbody.innerHTML = '<tr><td colspan=\"9\" class=\"bjp-empty\">No records found.<\/td><\/tr>'; return; }\n\n            tbody.innerHTML = rows.map(function(r) {\n                var editRow = state.editingId == r.id ? renderEditRow(r) : '';\n                return '<tr data-id=\"' + r.id + '\">' +\n                    '<td><input type=\"checkbox\" class=\"bjp-row-check\" value=\"' + r.id + '\"><\/td>' +\n                    '<td>' + (r.photo ? '<img decoding=\"async\" class=\"bjp-admin-thumb\" src=\"' + r.photo + '\">' : '&mdash;') + '<\/td>' +\n                    '<td>' + esc(r.name) + '<\/td>' +\n                    '<td>' + esc(r.aadhaar) + '<\/td>' +\n                    '<td>' + esc(r.mobile) + '<\/td>' +\n                    '<td>' + esc(r.district) + '<\/td>' +\n                    '<td>' + esc(r.assembly_constituency) + '<\/td>' +\n                    '<td><span class=\"bjp-badge ' + r.status + '\">' + r.status + '<\/span><\/td>' +\n                    '<td><div class=\"bjp-row-actions\">' +\n                    '<button class=\"bjp-btn-approve\" data-act=\"approve\" data-id=\"' + r.id + '\">Approve<\/button>' +\n                    '<button class=\"bjp-btn-edit\" data-act=\"edit\" data-id=\"' + r.id + '\">Edit<\/button>' +\n                    '<button class=\"bjp-btn-delete\" data-act=\"delete\" data-id=\"' + r.id + '\">Delete<\/button>' +\n                    '<button class=\"bjp-btn-word\" data-act=\"word\" data-id=\"' + r.id + '\">Word<\/button>' +\n                    '<\/div><\/td><\/tr>' + editRow;\n            }).join('');\n\n            tbody.querySelectorAll('.bjp-row-check').forEach(function(c){ c.addEventListener('change', updateSelectedCount); });\n\n            if (state.editingId) {\n                var inlineForm = document.getElementById('bjp-inline-form-' + state.editingId);\n                if (inlineForm) setupPhotoWidgets(inlineForm, 'inline-' + state.editingId);\n            }\n\n            tbody.querySelectorAll('button[data-act]').forEach(function(btn) {\n                btn.addEventListener('click', function() {\n                    var id = btn.getAttribute('data-id');\n                    var act = btn.getAttribute('data-act');\n                    if (act === 'approve') {\n                        post('admin_update_status', { password: state.adminPass, status: 'approved', ids: [id] }).then(loadAdminData);\n                    } else if (act === 'delete') {\n                        if (!confirm('Delete this record?')) return;\n                        post('admin_delete', { password: state.adminPass, ids: [id] }).then(loadAdminData);\n                    } else if (act === 'edit') {\n                        state.editingId = (state.editingId == id) ? null : id;\n                        renderAdminTable();\n                    } else if (act === 'word') {\n                        var url = HANDLER + '?action=download_word&id=' + id + '&password=' + encodeURIComponent(state.adminPass);\n                        window.open(url, '_blank');\n                    }\n                });\n            });\n        }\n\n        function renderEditRow(r) {\n            var grid = FIELDS.map(function(f) { return fieldHtml(f, r[f.key]); }).join('') + photoFieldHtml(r.photo || '', 'inline-' + r.id);\n            return '<tr class=\"bjp-inline-edit\"><td colspan=\"9\">' +\n                '<div class=\"bjp-form-grid\" id=\"bjp-inline-form-' + r.id + '\">' + grid + '<\/div>' +\n                '<div class=\"bjp-form-actions\">' +\n                '<button class=\"bjp-btn small\" data-save=\"' + r.id + '\">Save<\/button>' +\n                '<button class=\"bjp-btn secondary small\" data-cancel=\"' + r.id + '\">Cancel<\/button>' +\n                '<\/div><\/td><\/tr>';\n        }\n\n        \/\/ Delegate save\/cancel for inline edit (attached after render via mutation-safe approach)\n        document.addEventListener('click', function(e) {\n            if (e.target.matches && e.target.matches('[data-save]')) {\n                var id = e.target.getAttribute('data-save');\n                var container = document.getElementById('bjp-inline-form-' + id);\n                if (!container) return;\n                var data = collectForm(container);\n                data.id = id;\n                data.password = state.adminPass;\n                post('admin_edit_row', data).then(function() { state.editingId = null; loadAdminData(); });\n            }\n            if (e.target.matches && e.target.matches('[data-cancel]')) {\n                state.editingId = null;\n                renderAdminTable();\n            }\n        });\n\n        \/* ---------------- CHART ---------------- *\/\n        function renderChart(body) {\n            body.innerHTML = '<h3 class=\"bjp-section-title\">Applicants Chart \/ \u0c26\u0c30\u0c16\u0c3e\u0c38\u0c4d\u0c24\u0c41\u0c26\u0c3e\u0c30\u0c41\u0c32 \u0c1a\u0c3e\u0c30\u0c4d\u0c1f\u0c4d<\/h3><div id=\"bjp-chart-content\">Loading...<\/div>';\n            post('admin_stats', { password: state.adminPass || '' }).then(function(res) {\n                var el = document.getElementById('bjp-chart-content');\n                if (!res.success) {\n                    el.innerHTML = '<div class=\"bjp-msg err\">Please login as Admin to view the full chart.<\/div>';\n                    return;\n                }\n                var html = '<div class=\"bjp-stats\">' +\n                    statBox(res.total, 'Total') + statBox(res.pending, 'Pending') + statBox(res.approved, 'Approved') + statBox(res.rejected, 'Rejected') +\n                    '<\/div>';\n                if (res.by_district && res.by_district.length) {\n                    var max = Math.max.apply(null, res.by_district.map(function(d){ return parseInt(d.cnt); }));\n                    html += '<h4 style=\"color:#7A1F0A;\">By District<\/h4>';\n                    html += res.by_district.map(function(d) {\n                        var pct = max ? Math.round((d.cnt \/ max) * 100) : 0;\n                        return '<div style=\"margin-bottom:8px;\">' +\n                            '<div style=\"font-size:12.5px;color:#555;margin-bottom:2px;\">' + esc(d.district || 'Unspecified') + ' (' + d.cnt + ')<\/div>' +\n                            '<div style=\"background:#F5E6CC;border-radius:4px;overflow:hidden;height:12px;\">' +\n                            '<div style=\"background:linear-gradient(90deg,#FF9933,#138808);width:' + pct + '%;height:100%;\"><\/div><\/div><\/div>';\n                    }).join('');\n                }\n                el.innerHTML = html;\n            });\n        }\n\n        \/* ---------------- PUBLIC LIST ---------------- *\/\n        function renderPublicList(body) {\n            body.innerHTML = '<h3 class=\"bjp-section-title\">Approved Members Directory \/ \u0c06\u0c2e\u0c4b\u0c26\u0c3f\u0c02\u0c1a\u0c2c\u0c21\u0c3f\u0c28 \u0c38\u0c2d\u0c4d\u0c2f\u0c41\u0c32 \u0c1c\u0c3e\u0c2c\u0c3f\u0c24\u0c3e<\/h3>' +\n                '<div id=\"bjp-public-search-wrap\" class=\"bjp-filterbar\"><input type=\"text\" id=\"bjp-public-search\" placeholder=\"Search by name \/ district...\"><\/div>' +\n                '<div class=\"bjp-table-wrap\"><table class=\"bjp-table\"><thead><tr>' +\n                '<th>Name<\/th><th>District<\/th><th>Assembly Constituency<\/th><th>Parliament Constituency<\/th><th>Post Held<\/th><th>Native Place<\/th>' +\n                '<\/tr><\/thead><tbody id=\"bjp-public-tbody\"><tr><td colspan=\"6\" class=\"bjp-empty\">Loading...<\/td><\/tr><\/tbody><\/table><\/div>';\n\n            var allRows = [];\n            post('public_list', {}).then(function(res) {\n                allRows = res.rows || [];\n                paint(allRows);\n            });\n            function paint(rows) {\n                var tbody = document.getElementById('bjp-public-tbody');\n                if (!rows.length) { tbody.innerHTML = '<tr><td colspan=\"6\" class=\"bjp-empty\">No approved members yet.<\/td><\/tr>'; return; }\n                tbody.innerHTML = rows.map(function(r) {\n                    return '<tr><td>' + esc(r.name) + '<\/td><td>' + esc(r.district) + '<\/td><td>' + esc(r.assembly_constituency) + '<\/td>' +\n                        '<td>' + esc(r.parliament_constituency) + '<\/td><td>' + esc(r.post_held) + '<\/td><td>' + esc(r.native_place) + '<\/td><\/tr>';\n                }).join('');\n            }\n            document.getElementById('bjp-public-search').addEventListener('input', function(e) {\n                var q = e.target.value.toLowerCase();\n                paint(allRows.filter(function(r) { return (r.name + ' ' + r.district).toLowerCase().indexOf(q) !== -1; }));\n            });\n        }\n\n        render();\n    })();\n    <\/script>\n    <\/div>\n\t\t\t\t\t\t<\/div>\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":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-818","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/victimsrightsprotectiontrust.com\/index.php?rest_route=\/wp\/v2\/pages\/818","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/victimsrightsprotectiontrust.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/victimsrightsprotectiontrust.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/victimsrightsprotectiontrust.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/victimsrightsprotectiontrust.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=818"}],"version-history":[{"count":4,"href":"https:\/\/victimsrightsprotectiontrust.com\/index.php?rest_route=\/wp\/v2\/pages\/818\/revisions"}],"predecessor-version":[{"id":823,"href":"https:\/\/victimsrightsprotectiontrust.com\/index.php?rest_route=\/wp\/v2\/pages\/818\/revisions\/823"}],"wp:attachment":[{"href":"https:\/\/victimsrightsprotectiontrust.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=818"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}