
{"id":11533,"date":"2025-09-04T15:19:25","date_gmt":"2025-09-04T15:19:25","guid":{"rendered":"https:\/\/indianbrahmins.com\/?page_id=11533"},"modified":"2026-04-19T07:25:42","modified_gmt":"2026-04-19T01:55:42","slug":"dvf-process","status":"publish","type":"page","link":"https:\/\/indianbrahmins.com\/index.php\/dvf-process\/","title":{"rendered":"DVF-PROCESS"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"11533\" class=\"elementor elementor-11533\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e9a6c1d e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-parent\" data-id=\"e9a6c1d\" 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-3caf30f elementor-widget elementor-widget-html\" data-id=\"3caf30f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!doctype html>\r\n<html lang=\"en\">\r\n<head>\r\n<meta charset=\"utf-8\"\/>\r\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"\/>\r\n<title>Investor Affidavit & Statement Builder \u2014 DFI Victims Forum<\/title>\r\n<style>\r\n  :root{\r\n    \/* Colors requested *\/\r\n    --menu-bg: #fff59b;           \/* yellow menu\/background *\/\r\n    --menu-font: #052a6b;        \/* dark blue menu fonts *\/\r\n    --entry-bg: #fff9c4;         \/* light yellow entry fields *\/\r\n    --entry-font: #7f1d1d;       \/* dark red entry font *\/\r\n    --card:#ffffff;\r\n    --accent:#0ea5a0;\r\n    --muted:#6b7280;\r\n    --danger:#ef4444;\r\n    --glass: rgba(15,23,42,0.04);\r\n  }\r\n\r\n  \/* Base layout *\/\r\n  body{font-family:Inter, system-ui, Arial, sans-serif; margin:0; background:linear-gradient(180deg,#f7ffea 0%,#f4ffe0 100%); color:#0f172a; font-size:13px;}\r\n  .wrap{max-width:760px;margin:16px auto;padding:12px;}\r\n  header{\r\n    display:flex;\r\n    align-items:center;\r\n    gap:12px;\r\n    margin-bottom:12px;\r\n    background:var(--menu-bg);\r\n    padding:10px;\r\n    border-radius:10px;\r\n    color:var(--menu-font);\r\n  }\r\n  header h1{font-size:18px;margin:0;color:var(--menu-font)}\r\n  header .brand{color:var(--menu-font); font-weight:700}\r\n  .card{background:var(--card);border-radius:10px;padding:12px;box-shadow:0 6px 16px rgba(2,6,23,0.05);margin-bottom:10px}\r\n  label{display:block;font-size:12px;color:var(--muted);margin-bottom:6px}\r\n\r\n  \/* ENTRY fields: exact look *\/\r\n  input[type=\"text\"],input[type=\"tel\"],input[type=\"email\"],input[type=\"number\"],select,textarea,input[type=\"date\"],input[type=\"month\"]{\r\n    padding:8px 10px;border:1px solid #e6eef6;border-radius:8px;font-size:13px;box-sizing:border-box;\r\n    background:var(--entry-bg); color:var(--entry-font); font-weight:600;\r\n    \/* default width overridden per-field below with exact px widths *\/\r\n  }\r\n\r\n  \/* layout grid *\/\r\n  .grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}\r\n  .full{grid-column:1\/-1}\r\n  .btn{display:inline-block;padding:8px 12px;border-radius:8px;border:0;background:var(--accent);color:white;font-weight:600;cursor:pointer;font-size:13px}\r\n  .btn.ghost{background:transparent;color:var(--accent);border:1px solid var(--accent)}\r\n  .btn.danger{background:var(--danger)}\r\n  table{width:100%;border-collapse:collapse;margin-top:8px;font-size:13px}\r\n  \/* Table headers \u2014 BLACK, BOLD, ITALIC per request *\/\r\n  table thead th{\r\n    background:var(--glass);\r\n    padding:8px;\r\n    border-bottom:1px solid #e6eef6;\r\n    text-align:left;\r\n    color: #000000;\r\n    font-weight: 700;\r\n    font-style: italic;\r\n  }\r\n  table tbody td{padding:6px;border-bottom:1px solid #f1f5f9;vertical-align:middle}\r\n  .small{font-size:12px;color:var(--muted)}\r\n  .muted{color:var(--muted)}\r\n  .right{text-align:right}\r\n  .controls{display:flex;gap:8px;flex-wrap:wrap}\r\n  .summary{display:flex;gap:10px;flex-wrap:wrap;margin-top:8px}\r\n  .pill{background:#f8fafc;padding:8px;border-radius:8px;min-width:140px}\r\n  .note{font-size:12px;color:var(--muted);margin-top:8px}\r\n  footer{font-size:12px;color:var(--muted);text-align:center;margin-top:12px}\r\n  .instr {position:fixed;right:12px;bottom:12px;background:#0f172a;color:#fff;padding:10px 12px;border-radius:8px;box-shadow:0 8px 20px rgba(2,6,23,0.12);max-width:320px;font-size:13px;line-height:1.3}\r\n  .instr h4{margin:0 0 6px 0;font-size:13px}\r\n  .instr p{margin:0}\r\n  .instr .mute{display:inline-block;margin-top:8px;background:transparent;border:1px solid rgba(255,255,255,0.12);padding:6px 8px;border-radius:6px;color:#fff;cursor:pointer;font-size:12px}\r\n  .autocomplete-dropdown {\r\n    position: absolute;\r\n    z-index: 9999;\r\n    background: var(--entry-bg);\r\n    border: 1px solid #e6eef6;\r\n    border-radius: 8px;\r\n    box-shadow: 0 8px 20px rgba(2,6,23,0.10);\r\n    max-height: 200px;\r\n    overflow: auto;\r\n    min-width: 220px;\r\n  }\r\n  .autocomplete-item {\r\n    padding: 8px 10px;\r\n    cursor: pointer;\r\n    font-size: 13px;\r\n    color:var(--menu-font);\r\n  }\r\n  .autocomplete-item:hover, .autocomplete-item.active {\r\n    background: #f1f5f9;\r\n  }\r\n  .serialBadge{background:#eef2ff;padding:6px 8px;border-radius:8px;border:1px solid #e6eef6;font-weight:700;color:#0f172a}\r\n\r\n  \/* ========== EXACT WIDTHS FOR FIELDS (PIXELS) ========== *\/\r\n  \/* Table header exact widths *\/\r\n  table thead th:nth-child(1){width:200px;}   \/* Company \/ Scheme *\/\r\n  table thead th:nth-child(2){width:160px;}   \/* Investment Date \u2014 increased *\/\r\n  table thead th:nth-child(3){width:160px;}   \/* Interest recvd up to \u2014 increased *\/\r\n  table thead th:nth-child(4){width:120px;}   \/* Principal *\/\r\n  table thead th:nth-child(5){width:80px;}    \/* Interest % *\/\r\n  table thead th:nth-child(6){width:140px;}   \/* Interest calc *\/\r\n  table thead th:nth-child(7){width:80px;}    \/* Comp % *\/\r\n  table thead th:nth-child(8){width:140px;}   \/* Total Claim *\/\r\n  table thead th:nth-child(9){width:60px;}    \/* Remove btn *\/\r\n\r\n  \/* Inputs exact widths to match column widths (minus padding) *\/\r\n  input.company{width:190px; max-width:190px;}\r\n  input.invDate{width:150px; max-width:150px;}         \/* increased *\/\r\n  input.receivedUpTo{width:150px; max-width:150px;}    \/* increased *\/\r\n  input.principal{width:110px; max-width:110px; text-align:right;}\r\n  input.rate{width:70px; max-width:70px; text-align:right;}\r\n  .interestCell{width:130px; text-align:right; color:var(--entry-font); font-weight:700;}\r\n  input.comp{width:70px; max-width:70px; text-align:right;}\r\n  .totalCell{width:130px; text-align:right; color:var(--entry-font); font-weight:800;}\r\n  td > button.remove{width:56px; padding:6px 6px;}\r\n\r\n  \/* Ensure form fields in left sections have exact widths (two-column grid) *\/\r\n  .grid > div input, .grid > div textarea {\r\n    width:100%; \/* grid columns define available width *\/\r\n  }\r\n\r\n  \/* Controls & header responsiveness *\/\r\n  @media (max-width:760px){\r\n    .wrap{padding:10px}\r\n    table thead th:nth-child(1){width:150px;}\r\n    table thead th:nth-child(2){width:130px;}\r\n    table thead th:nth-child(3){width:130px;}\r\n    input.company{width:140px; max-width:140px;}\r\n    input.invDate,input.receivedUpTo{width:120px;}\r\n    input.principal{width:100px;}\r\n    .interestCell,.totalCell{width:120px;}\r\n    .instr{left:8px;right:8px;bottom:8px;max-width:none}\r\n    .grid{grid-template-columns:1fr}\r\n    header{flex-direction:column;align-items:flex-start}\r\n  }\r\n<\/style>\r\n<\/head>\r\n<body>\r\n<div class=\"wrap\">\r\n  <header>\r\n    <div style=\"width:48px;height:48px;border-radius:10px;background:linear-gradient(135deg,#06b6d4,#0ea5a0);display:flex;align-items:center;justify-content:center;color:white;font-weight:700\" class=\"brand\">DFI<\/div>\r\n    <div style=\"flex:1\">\r\n      <h1>DFI Victims Forum \u2014 Affidavit & Investment Statement Builder<\/h1>\r\n      <div class=\"small\" style=\"color:var(--menu-font)\">Fill details, add investments, and click <strong>Download Statement<\/strong> to get a Word-compatible affidavit file<\/div>\r\n    <\/div>\r\n    <div style=\"display:flex;flex-direction:column;align-items:flex-end;gap:6px\">\r\n      <div class=\"small\" style=\"color:var(--menu-font)\">Document S.No.<\/div>\r\n      <div id=\"serialDisplay\" class=\"serialBadge\">Loading\u2026<\/div>\r\n    <\/div>\r\n  <\/header>\r\n\r\n  <!-- Personal details -->\r\n  <section class=\"card\">\r\n    <div style=\"display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;\">\r\n      <div class=\"small\">Investor Details<\/div>\r\n      <div class=\"small muted\">Interest calculated up to <strong>31 March 2026<\/strong><\/div>\r\n    <\/div>\r\n    <div class=\"grid\" style=\"margin-top:10px\">\r\n      <div>\r\n        <label>Name<\/label>\r\n        <input id=\"inpName\" type=\"text\" placeholder=\"Full name as in ID\"\r\n               data-instruction=\"NAME. ENTER YOUR FULL NAME EXACTLY AS ON YOUR ID. SAY YOUR FULL NAME CLEARLY. EXAMPLE: GIRI PRASAD SARMA KALLE.\" \/>\r\n      <\/div>\r\n      <div>\r\n        <label>Mobile No.<\/label>\r\n        <input id=\"inpMobile\" class=\"principal\" type=\"tel\" placeholder=\"e.g. 91XXXXXXXXXX\"\r\n               data-instruction=\"MOBILE NUMBER. ENTER YOUR PHONE NUMBER. INCLUDE COUNTRY CODE. EXAMPLE: 919812345678.\" \/>\r\n      <\/div>\r\n      <div>\r\n        <label>Email (optional)<\/label>\r\n        <input id=\"inpEmail\" type=\"email\" placeholder=\"you@example.com\"\r\n               data-instruction=\"EMAIL. OPTIONAL. ENTER AN EMAIL IF YOU WANT IT INCLUDED IN THE AFFIDAVIT.\" \/>\r\n      <\/div>\r\n      <div>\r\n        <label>Address<\/label>\r\n        <input id=\"inpAddress\" type=\"text\" placeholder=\"Address \/ City \/ Pin\"\r\n               data-instruction=\"ADDRESS. ENTER YOUR FULL RESIDENTIAL ADDRESS, CITY AND PIN CODE. THIS APPEARS IN THE AFFIDAVIT.\" \/>\r\n      <\/div>\r\n      <div>\r\n        <label>PAN (optional)<\/label>\r\n        <input id=\"inpPAN\" type=\"text\" placeholder=\"ABCDE1234F\"\r\n               data-instruction=\"PAN. OPTIONAL. ENTER YOUR PAN NUMBER IF YOU HAVE ONE.\" \/>\r\n      <\/div>\r\n      <div>\r\n        <label>Aadhaar (optional)<\/label>\r\n        <input id=\"inpAadhaar\" type=\"text\" placeholder=\"xxxx-xxxx-xxxx\"\r\n               data-instruction=\"AADHAAR. OPTIONAL. ENTER YOUR AADHAAR NUMBER IF YOU WISH TO INCLUDE IT.\" \/>\r\n      <\/div>\r\n      <div class=\"full\">\r\n        <label>Declaration \/ Short note (optional)<\/label>\r\n        <textarea id=\"inpNote\" rows=\"2\" placeholder=\"Any short note to include in affidavit\"\r\n                  data-instruction=\"DECLARATION OR SHORT NOTE. WRITE A SHORT NOTE YOU WANT INCLUDED IN THE AFFIDAVIT. THIS IS OPTIONAL.\"><\/textarea>\r\n      <\/div>\r\n    <\/div>\r\n  <\/section>\r\n\r\n  <!-- Investment table -->\r\n  <section class=\"card\">\r\n    <div style=\"display:flex;justify-content:space-between;align-items:center\">\r\n      <div><strong>Investments (Add one row per investment \/ company)<\/strong><div class=\"small muted\">You may add multiple rows if you invested in different DFI companies\/schemes<\/div><\/div>\r\n      <div class=\"controls\">\r\n        <button id=\"btnAddRow\" class=\"btn ghost\">+ Add Row<\/button>\r\n        <button id=\"btnClear\" class=\"btn\" title=\"Clear all rows\">Clear All<\/button>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <table id=\"invTable\" aria-label=\"Investments table\">\r\n      <thead>\r\n        <tr>\r\n          <th>Company \/ Scheme<\/th>\r\n          <th>Investment Date<\/th>\r\n          <th>Interest recvd up to (YYYY-MM)<\/th>\r\n          <th>Principal (\u20b9)<\/th>\r\n          <th>Interest % p.a.<\/th>\r\n          <th>Interest up to 31-March-2026 (\u20b9)<\/th>\r\n          <th>Comp %<\/th>\r\n          <th>Total Claim (\u20b9)<\/th>\r\n          <th><\/th>\r\n        <\/tr>\r\n      <\/thead>\r\n      <tbody id=\"invBody\">\r\n        <!-- JS generates rows -->\r\n      <\/tbody>\r\n    <\/table>\r\n\r\n    <div style=\"margin-top:10px;display:flex;gap:8px;align-items:center;flex-wrap:wrap\">\r\n      <label style=\"margin:0;font-size:12px;color:var(--muted)\">Default compensation % for new rows<\/label>\r\n      <input id=\"defaultComp\" type=\"number\" min=\"0\" step=\"0.1\" value=\"10\" style=\"width:90px;padding:6px;border-radius:8px;border:1px solid #e6eef6\"\r\n             data-instruction=\"DEFAULT COMPENSATION PERCENT. SET A DEFAULT COMPENSATION PERCENTAGE FOR NEW ROWS. DEFAULT IS TEN PERCENT.\" \/>\r\n      <button id=\"btnCalc\" class=\"btn\">Compute Interest & Totals<\/button>\r\n      <button id=\"btnDownload\" class=\"btn\" title=\"Download affidavit + annexure\">Download Statement<\/button>\r\n    <\/div>\r\n\r\n    <div class=\"summary\">\r\n      <div class=\"pill\">\r\n        <div class=\"small muted\">Total Principal<\/div>\r\n        <div id=\"sumPrincipal\" style=\"font-weight:700;font-size:15px\">\u20b9 0.00<\/div>\r\n      <\/div>\r\n      <div class=\"pill\">\r\n        <div class=\"small muted\">Total Interest (to 31-March-2026)<\/div>\r\n        <div id=\"sumInterest\" style=\"font-weight:700;font-size:15px\">\u20b9 0.00<\/div>\r\n      <\/div>\r\n      <div class=\"pill\">\r\n        <div class=\"small muted\">Total Compensation<\/div>\r\n        <div id=\"sumComp\" style=\"font-weight:700;font-size:15px\">\u20b9 0.00<\/div>\r\n      <\/div>\r\n      <div class=\"pill\">\r\n        <div class=\"small muted\">Grand Total Claim<\/div>\r\n        <div id=\"sumTotal\" style=\"font-weight:700;font-size:15px\">\u20b9 0.00<\/div>\r\n      <\/div>\r\n    <\/div>\r\n    <div class=\"note\">Note: interest is computed using simple interest formula: <em>Principal \u00d7 Rate(%) \u00d7 (Days \/ 365)<\/em>, where Days = from investment date or the day after \"Interest recvd up to\" (if provided) to 31-March-2026.<\/div>\r\n  <\/section>\r\n\r\n  <!-- preview and instructions -->\r\n  <section class=\"card\">\r\n    <div style=\"display:flex;justify-content:space-between;align-items:center\">\r\n      <div><strong>Affidavit Preview (will be included in downloaded file)<\/strong><\/div>\r\n      <div class=\"small muted\">Edit personal details above and press <strong>Compute Interest & Totals<\/strong> before download<\/div>\r\n    <\/div>\r\n    <div id=\"preview\" style=\"margin-top:10px;white-space:pre-wrap;font-family:Georgia,serif;background:#fff8f0;padding:10px;border-radius:8px;border:1px dashed #fde68a;color:#0f172a;font-size:13px\"><\/div>\r\n    <div style=\"margin-top:10px;display:flex;gap:8px\">\r\n      <button id=\"btnDownloadDoc\" class=\"btn\">Download Statement (.doc)<\/button>\r\n      <button id=\"btnCopyText\" class=\"btn ghost\">Copy Text<\/button>\r\n    <\/div>\r\n  <\/section>\r\n\r\n  <footer>\r\n    <div class=\"small muted\">This tool generates a Word-compatible affidavit\/statement file for submission to the Govt of Telangana \/ DFI Victims Forum. Keep original receipts and proof ready for notarisation if required.<\/div>\r\n  <\/footer>\r\n<\/div>\r\n\r\n<!-- Instruction \/ Speech widget -->\r\n<div class=\"instr\" id=\"instrBox\" aria-live=\"polite\">\r\n  <h4 id=\"instrTitle\">INSTRUCTION<\/h4>\r\n  <p id=\"instrText\">Click any field. You will hear loud, clear instructions for what to enter.<\/p>\r\n  <button class=\"mute\" id=\"btnMute\">MUTE VOICE<\/button>\r\n<\/div>\r\n\r\n<!-- Autocomplete dropdown root -->\r\n<div id=\"globalAutocompleteRoot\" style=\"position:fixed;left:0;top:0;pointer-events:none;z-index:9998\"><\/div>\r\n\r\n<script>\r\n\/* =============== Company list for autocomplete =============== *\/\r\nconst COMPANY_LIST = [\r\n  \"DFI NIRMAN PVT.\",\r\n  \"DSPL\",\r\n  \"INFRA\",\r\n  \"DHARANI SHELTERS\",\r\n  \"DFI VENTURES\",\r\n  \"PREFERENTIAL SHARES\",\r\n  \"DFI HOSPITALS\",\r\n  \"DFI INFRA PROJECTS\",\r\n  \"SRUJANA PVT LTD\",\r\n  \"DFI IT SOLUTIONS\",\r\n  \"DEBENCHERS\",\r\n  \"CHAMUNDI AGRAHARAM\",\r\n  \"TIRUPATI AGRAHARAM\",\r\n  \"VISAKHAPATNAM AGRAHARAM\",\r\n  \"VIJAYAWADA AGRAHARAM\",\r\n  \"YADAGIRI GUTTA AGRAHARAM\",\r\n  \"AGRAHARAM\",\r\n  \"SIDDIPET LANDS\/PLOTS\",\r\n  \"MIDJIL \/MIDGIL LANDS\/PLOTS\",\r\n  \"ANANTA SAGAR LANDS \/ PLOTS\",\r\n  \"BOND PAPERS\",\r\n  \"ADVANCE FOR PLOT\/LAND\"\r\n].map(s => s.trim()).filter(Boolean);\r\n\r\n\/* =============== Utilities =============== *\/\r\nfunction $id(id){return document.getElementById(id);}\r\nfunction money(v){ return \"\u20b9 \" + Number(v||0).toLocaleString('en-IN', {maximumFractionDigits:2, minimumFractionDigits:2}); }\r\nfunction parseFloatSafe(s){s=String(s||'').replace(\/,\/g,'').trim(); return s?parseFloat(s):0;}\r\nfunction escapeHtml(s){ return String(s||'').replace(\/&\/g,'&amp;').replace(\/<\/g,'&lt;').replace(\/>\/g,'&gt;').replace(\/\"\/g,'&quot;').replace(\/'\/g,'&#39;'); }\r\n\r\n\/* =============== Calculation settings =============== *\/\r\nconst cutoffDate = new Date(\"2026-03-31T23:59:59Z\");\r\nconst MS_PER_DAY = 1000*60*60*24;\r\n\r\n\/* =============== DOM wiring =============== *\/\r\nconst invBody = $id('invBody');\r\nconst btnAddRow = $id('btnAddRow');\r\nconst btnCalc = $id('btnCalc');\r\nconst btnDownload = $id('btnDownload');\r\nconst btnClear = $id('btnClear');\r\nconst defaultComp = $id('defaultComp');\r\nconst sumPrincipal = $id('sumPrincipal');\r\nconst sumInterest = $id('sumInterest');\r\nconst sumComp = $id('sumComp');\r\nconst sumTotal = $id('sumTotal');\r\nconst preview = $id('preview');\r\nconst btnDownloadDoc = $id('btnDownloadDoc');\r\nconst btnCopyText = $id('btnCopyText');\r\n\r\nconst instrTitle = $id('instrTitle');\r\nconst instrText = $id('instrText');\r\nconst btnMute = $id('btnMute');\r\n\r\nconst serialDisplay = $id('serialDisplay');\r\n\r\nlet voiceMuted = false;\r\n\r\n\/* =============== Speech \/ Instruction helpers =============== *\/\r\nfunction speakLoud(text){\r\n  if(voiceMuted) return;\r\n  try {\r\n    if(!('speechSynthesis' in window)) return;\r\n    window.speechSynthesis.cancel();\r\n    const u = new SpeechSynthesisUtterance();\r\n    u.text = text;\r\n    u.lang = 'en-US';\r\n    u.volume = 1;\r\n    u.rate = 0.85;\r\n    u.pitch = 1.0;\r\n    const voices = window.speechSynthesis.getVoices();\r\n    if(voices && voices.length){\r\n      u.voice = voices.find(v=>\/en(-|_)us|english.*us\/i.test(v.lang)) || voices[0];\r\n    }\r\n    window.speechSynthesis.speak(u);\r\n  } catch(e){ console.warn(e); }\r\n}\r\nfunction showInstruction(text){\r\n  instrTitle.textContent = 'READ THIS \u2014 SLOW AND LOUD';\r\n  instrText.textContent = text;\r\n}\r\n\r\n\/* Attach instruction behavior to an element (visible text + speak on focus) *\/\r\nfunction attachInstruction(el){\r\n  if(!el || el.__instr_attached) return;\r\n  el.__instr_attached = true;\r\n  const instr = el.getAttribute('data-instruction') || generateFallbackInstruction(el);\r\n  el.addEventListener('focus', ()=>{ showInstruction(instr); speakLoud(instr); });\r\n  el.addEventListener('blur', ()=>{ setTimeout(()=>{ if(!document.activeElement || !isFormField(document.activeElement)) resetInstruction(); }, 200); });\r\n}\r\nfunction isFormField(el){ if(!el) return false; const tag = el.tagName.toLowerCase(); return ['input','textarea','select','button'].includes(tag); }\r\nfunction resetInstruction(){ instrTitle.textContent = 'INSTRUCTION'; instrText.textContent = 'Click any field. You will hear loud, clear instructions for what to enter.'; }\r\n\r\n\/* Mute toggle *\/\r\nbtnMute.addEventListener('click', ()=>{ voiceMuted = !voiceMuted; btnMute.textContent = voiceMuted ? 'UNMUTE VOICE' : 'MUTE VOICE'; if(voiceMuted) window.speechSynthesis.cancel(); });\r\n\r\n\/* Fallback instruction *\/\r\nfunction generateFallbackInstruction(el){\r\n  const id = el.id || el.name || el.placeholder || el.getAttribute('aria-label') || el.tagName;\r\n  return `ENTER A VALUE FOR ${String(id).toString().toUpperCase()}. TYPE THE CORRECT INFORMATION.`;\r\n}\r\n\r\n\/* =============== Autocomplete implementation (custom) =============== *\/\r\nconst globalRoot = $id('globalAutocompleteRoot');\r\nlet activeDropdown = null;\r\n\r\nfunction attachAutocompleteToInput(inputEl){\r\n  if(!inputEl || inputEl.__autocomplete_attached) return;\r\n  inputEl.__autocomplete_attached = true;\r\n  inputEl.setAttribute('autocomplete','off');\r\n\r\n  \/\/ show suggestions when typed >=1 char (user previously wanted on first letter)\r\n  inputEl.addEventListener('input', onInputChanged);\r\n  inputEl.addEventListener('keydown', onInputKeyDown);\r\n  inputEl.addEventListener('blur', ()=> { \/\/ hide with slight delay to allow click selection\r\n    setTimeout(hideDropdown, 180);\r\n  });\r\n\r\n  \/\/ helper functions for this input\r\n  function onInputChanged(e){\r\n    const val = e.target.value || '';\r\n    if(val.trim().length < 1){ hideDropdown(); return; } \/\/ activate on first char\r\n    const matches = findMatches(val);\r\n    if(matches.length === 0){ hideDropdown(); return; }\r\n    showDropdownForInput(inputEl, matches);\r\n  }\r\n  function onInputKeyDown(ev){\r\n    if(!activeDropdown) return;\r\n    const items = activeDropdown.querySelectorAll('.autocomplete-item');\r\n    if(items.length===0) return;\r\n    const key = ev.key;\r\n    if(key === 'ArrowDown'){ ev.preventDefault(); moveActive(1); }\r\n    else if(key === 'ArrowUp'){ ev.preventDefault(); moveActive(-1); }\r\n    else if(key === 'Enter'){ ev.preventDefault(); selectActive(); }\r\n    else if(key === 'Escape'){ hideDropdown(); inputEl.blur(); }\r\n    function moveActive(delta){\r\n      let idx = Array.from(items).findIndex(i=>i.classList.contains('active'));\r\n      items.forEach(it=>it.classList.remove('active'));\r\n      idx = idx + delta;\r\n      if(idx < 0) idx = items.length - 1;\r\n      if(idx >= items.length) idx = 0;\r\n      items[idx].classList.add('active');\r\n      items[idx].scrollIntoView({block:'nearest'});\r\n    }\r\n    function selectActive(){\r\n      const sel = activeDropdown.querySelector('.autocomplete-item.active') || items[0];\r\n      if(sel) { applySelection(sel.dataset.value); hideDropdown(); inputEl.focus(); }\r\n    }\r\n  }\r\n}\r\n\r\n\/* Find matching company names (case-insensitive substring match) *\/\r\nfunction findMatches(query){\r\n  const q = String(query||'').trim().toLowerCase();\r\n  if(!q) return [];\r\n  const starts = [], includes = [];\r\n  for(const s of COMPANY_LIST){\r\n    const low = s.toLowerCase();\r\n    if(low.startsWith(q)) starts.push(s);\r\n    else if(low.includes(q)) includes.push(s);\r\n  }\r\n  return starts.concat(includes).slice(0, 50);\r\n}\r\n\r\n\/* Show dropdown near input with matches *\/\r\nfunction showDropdownForInput(inputEl, matches){\r\n  hideDropdown();\r\n  const rect = inputEl.getBoundingClientRect();\r\n  const dropdown = document.createElement('div');\r\n  dropdown.className = 'autocomplete-dropdown';\r\n  dropdown.style.minWidth = Math.max(200, rect.width) + 'px';\r\n  dropdown.style.pointerEvents = 'auto';\r\n\r\n  matches.forEach((m, idx) => {\r\n    const it = document.createElement('div');\r\n    it.className = 'autocomplete-item';\r\n    it.textContent = m;\r\n    it.dataset.value = m;\r\n    it.addEventListener('mousedown', (ev) => { \/\/ mousedown to prevent input blur before click\r\n      ev.preventDefault();\r\n      applySelection(m);\r\n      hideDropdown();\r\n      setTimeout(()=> inputEl.focus(), 10);\r\n    });\r\n    dropdown.appendChild(it);\r\n  });\r\n\r\n  globalRoot.appendChild(dropdown);\r\n  activeDropdown = dropdown;\r\n  const scrollY = window.scrollY || window.pageYOffset;\r\n  const viewportHeight = window.innerHeight;\r\n  const dropdownHeight = Math.min(200, matches.length * 34 + 6);\r\n  let top = rect.bottom + scrollY + 6;\r\n  if((rect.bottom + dropdownHeight) > viewportHeight && (rect.top - dropdownHeight) > 0){\r\n    top = rect.top + scrollY - dropdownHeight - 6;\r\n  }\r\n  let left = rect.left + (window.scrollX || window.pageXOffset);\r\n  const maxWidth = document.documentElement.clientWidth - 16;\r\n  if(left + parseFloat(dropdown.style.minWidth) > maxWidth) left = maxWidth - parseFloat(dropdown.style.minWidth);\r\n  dropdown.style.left = left + 'px';\r\n  dropdown.style.top = top + 'px';\r\n\r\n  const first = dropdown.querySelector('.autocomplete-item');\r\n  if(first) first.classList.add('active');\r\n}\r\n\r\n\/* Apply selection to the currently focused input if it's a company input; otherwise to last focused company *\/\r\nfunction applySelection(value){\r\n  const el = document.activeElement;\r\n  if(el && el.classList && el.classList.contains('company')){\r\n    el.value = value;\r\n    el.dispatchEvent(new Event('input', {bubbles:true}));\r\n  } else {\r\n    const last = document.querySelector('input.company');\r\n    if(last){ last.value = value; last.dispatchEvent(new Event('input', {bubbles:true})); }\r\n  }\r\n}\r\n\r\n\/* Hide dropdown *\/\r\nfunction hideDropdown(){\r\n  if(activeDropdown && activeDropdown.parentElement) activeDropdown.parentElement.removeChild(activeDropdown);\r\n  activeDropdown = null;\r\n}\r\n\r\n\/* Hide dropdown on outside click *\/\r\ndocument.addEventListener('click', function(e){\r\n  if(!activeDropdown) return;\r\n  if(e.target.closest && (e.target.closest('.autocomplete-dropdown') || e.target.classList && e.target.classList.contains('company'))) return;\r\n  hideDropdown();\r\n});\r\nwindow.addEventListener('scroll', ()=> hideDropdown());\r\nwindow.addEventListener('resize', ()=> hideDropdown());\r\n\r\n\/* =============== Serial number management =============== *\/\r\n\/*\r\n  New behavior per request:\r\n  - Serial format: DVF{YEAR}-{NUMBER}-MSJ& High Court of Telangana  e.g. DVF2026-108-MSJ\/HC\r\n  - Start numeric counter from 108 for first download (user requested \"start serial number from 108-& High Court of Telangana \")\r\n  - To achieve this, if no serial exists in localStorage we initialize stored counter to 107 so first increment -> 108.\r\n  - The badge shows the NEXT serial that will be used (so before first download it displays DVF2026-108-MSJ& High Court of Telangana).\r\n*\/\r\n\r\nconst SERIAL_STORAGE_KEY = 'dvf_affidavit_counter_v1';\r\nconst SERIAL_START_NUMBER = 108; \/\/ user requested start from 108\r\n\r\nfunction readSerialCounter() {\r\n  try {\r\n    const v = parseInt(localStorage.getItem(SERIAL_STORAGE_KEY), 10);\r\n    if(isNaN(v)) return null;\r\n    return v;\r\n  } catch(e){\r\n    return null;\r\n  }\r\n}\r\nfunction writeSerialCounter(n){\r\n  try { localStorage.setItem(SERIAL_STORAGE_KEY, String(n)); } catch(e){ \/* ignore *\/ }\r\n}\r\n\r\n\/* Ensure initialization: if not present, set to (START-1) so first increment yields START *\/\r\n(function ensureSerialInit(){\r\n  const cur = readSerialCounter();\r\n  if(cur === null){\r\n    \/\/ initialize to START-1 (so first inc -> START)\r\n    writeSerialCounter(SERIAL_START_NUMBER - 1);\r\n  }\r\n})();\r\n\r\nfunction formatSerial(n){\r\n  const year = new Date().getFullYear();\r\n  return `DVF${year}-${n}-MSJ& High Court of Telangana `;\r\n}\r\n\r\n\/* getSerial: if inc=true, increment stored counter and return the new formatted serial;\r\n   if inc=false, return the NEXT serial (formatted) without changing storage.\r\n*\/\r\nfunction getSerial({ inc = false } = {}){\r\n  let cur = readSerialCounter();\r\n  if(cur === null) cur = SERIAL_START_NUMBER - 1;\r\n  if(inc){\r\n    cur = cur + 1;\r\n    writeSerialCounter(cur);\r\n    return { value: cur, formatted: formatSerial(cur) };\r\n  } else {\r\n    const next = cur + 1;\r\n    return { value: next, formatted: formatSerial(next) };\r\n  }\r\n}\r\n\r\n\/* Show the NEXT serial in UI (so user sees what will be issued on download) *\/\r\nfunction refreshSerialDisplay(){\r\n  const s = getSerial({ inc:false }); \/\/ next serial\r\n  serialDisplay.textContent = s.formatted;\r\n}\r\n\r\n\/* =============== Row management, compute, preview & download =============== *\/\r\nfunction addRow(data){\r\n  const row = document.createElement('tr');\r\n  row.innerHTML = `\r\n    <td><input class=\"txt company\" type=\"text\" placeholder=\"DFI Nirmaan \/ Dharani Shelters ...\" value=\"${escapeHtml(data?.company||'')}\"\r\n       data-instruction=\"COMPANY OR SCHEME NAME. ENTER THE NAME OF THE COMPANY OR SCHEME WHERE YOU INVESTED. EXAMPLE: DHANWANTARI FOUNDATION OR DHARANI SHELTERS.\"><\/td>\r\n    <td><input class=\"date invDate\" type=\"date\" value=\"${escapeHtml(data?.date||'')}\"\r\n       data-instruction=\"INVESTMENT DATE. ENTER THE DATE YOU PAID THE INVESTMENT. FORMAT: YEAR-MONTH-DAY. EXAMPLE: 2020-01-15.\"><\/td>\r\n    <td><input class=\"month receivedUpTo\" type=\"month\" value=\"${escapeHtml(data?.receivedUpTo||'')}\" title=\"If you already received interest up to this month, set YYYY-MM\"\r\n       data-instruction=\"INTEREST RECEIVED UP TO. IF YOU HAVE ALREADY RECEIVED INTEREST FOR A PERIOD, ENTER THE YEAR AND MONTH UP TO WHICH YOU RECEIVED IT. FORMAT: YYYY-MM. EXAMPLE: 2023-05. LEAVE EMPTY IF YOU DID NOT RECEIVE ANY INTEREST.\"><\/td>\r\n    <td><input class=\"num principal\" type=\"number\" min=\"0\" step=\"0.01\" value=\"${escapeHtml(data?.principal||'')}\"\r\n       data-instruction=\"PRINCIPAL. ENTER THE ORIGINAL AMOUNT YOU INVESTED IN RUPEES. DO NOT ENTER SYMBOLS. EXAMPLE: 100000\"><\/td>\r\n    <td><input class=\"num rate\" type=\"number\" min=\"0\" step=\"0.01\" value=\"${escapeHtml(data?.rate||'')||12}\"\r\n       data-instruction=\"ANNUAL INTEREST RATE PERCENT. ENTER THE PERCENT PER ANNUM PROMISED. EXAMPLE: 12 FOR TWELVE PERCENT.\"><\/td>\r\n    <td class=\"right interestCell\" data-instruction=\"CALCULATED INTEREST. THIS CELL IS AUTOMATIC. IT SHOWS INTEREST DUE UP TO 31 March 2026. DO NOT EDIT.\">\u20b9 0.00<\/td>\r\n    <td><input class=\"num comp\" type=\"number\" min=\"0\" step=\"0.01\" value=\"${escapeHtml(data?.comp||defaultComp.value)}\"\r\n       data-instruction=\"COMPENSATION PERCENT. ENTER A COMPENSATION PERCENTAGE (E.G. TEN FOR 10 PERCENT).\"><\/td>\r\n    <td class=\"right totalCell\" data-instruction=\"TOTAL CLAIM FOR ROW. THIS CELL IS AUTOMATIC. IT SHOWS PRINCIPAL PLUS CALCULATED INTEREST PLUS COMPENSATION. DO NOT EDIT.\">\u20b9 0.00<\/td>\r\n    <td style=\"text-align:center\"><button class=\"btn remove\" style=\"padding:6px 6px\" data-instruction=\"REMOVE ROW. CLICK TO DELETE THIS INVESTMENT ROW.\">Remove<\/button><\/td>\r\n  `;\r\n  invBody.appendChild(row);\r\n\r\n  \/\/ attach instruction to new fields\r\n  row.querySelectorAll('input, button').forEach(el => attachInstruction(el));\r\n\r\n  \/\/ attach autocomplete to company input\r\n  const companyInput = row.querySelector('input.company');\r\n  attachAutocompleteToInput(companyInput);\r\n\r\n  \/\/ remove handler\r\n  row.querySelector('.remove').addEventListener('click', ()=> {\r\n    row.remove();\r\n    computeAll();\r\n  });\r\n\r\n  \/\/ compute on change\r\n  ['input','change'].forEach(ev=>{ row.addEventListener(ev, ()=> computeAll()); });\r\n}\r\n\r\n\/* Buttons and events *\/\r\nbtnAddRow.addEventListener('click', ()=> addRow());\r\nbtnClear.addEventListener('click', ()=> {\r\n  if(!confirm('Clear all investment rows?')) return;\r\n  invBody.innerHTML='';\r\n  addRow();\r\n  computeAll();\r\n});\r\nbtnCalc.addEventListener('click', computeAll);\r\n\r\n\/* initial row *\/\r\naddRow();\r\n\r\n\/* Compute logic *\/\r\nfunction computeAll(){\r\n  const rows = Array.from(invBody.querySelectorAll('tr'));\r\n  let totalP=0, totalI=0, totalC=0;\r\n  rows.forEach(r=>{\r\n    const dateVal = r.querySelector('.invDate')?.value;\r\n    const receivedVal = r.querySelector('.receivedUpTo')?.value;\r\n    const principal = parseFloatSafe(r.querySelector('.principal')?.value);\r\n    const rate = parseFloatSafe(r.querySelector('.rate')?.value);\r\n    const compPerc = parseFloatSafe(r.querySelector('.comp')?.value);\r\n    let interest = 0;\r\n\r\n    if(dateVal && principal>0 && rate>0){\r\n      const investDate = new Date(dateVal+\"T00:00:00\");\r\n      let startDate = investDate;\r\n      if(receivedVal){\r\n        const parts = receivedVal.split('-');\r\n        if(parts.length===2){\r\n          const y = parseInt(parts[0],10);\r\n          const m = parseInt(parts[1],10); \/\/ 1-12\r\n          if(!isNaN(y) && !isNaN(m)){\r\n            const receivedEnd = new Date(y, m, 0, 23, 59, 59);\r\n            const nextDay = new Date(receivedEnd.getTime() + MS_PER_DAY);\r\n            if(nextDay > startDate) startDate = nextDay;\r\n          }\r\n        }\r\n      }\r\n      if(startDate < cutoffDate){\r\n        let days = Math.floor((cutoffDate - startDate) \/ MS_PER_DAY);\r\n        if(isNaN(days) || days<=0) days=0;\r\n        interest = principal * (rate\/100) * (days\/365);\r\n      } else {\r\n        interest = 0;\r\n      }\r\n    }\r\n\r\n    const compVal = (principal * (compPerc\/100));\r\n    const total = principal + interest + compVal;\r\n\r\n    const interestCell = r.querySelector('.interestCell');\r\n    const totalCell = r.querySelector('.totalCell');\r\n    if(interestCell) interestCell.textContent = money(Number(interest||0).toFixed(2));\r\n    if(totalCell) totalCell.textContent = money(Number(total||0).toFixed(2));\r\n\r\n    totalP += principal;\r\n    totalI += interest;\r\n    totalC += compVal;\r\n  });\r\n\r\n  sumPrincipal.textContent = money(totalP.toFixed(2));\r\n  sumInterest.textContent = money(totalI.toFixed(2));\r\n  sumComp.textContent = money(totalC.toFixed(2));\r\n  sumTotal.textContent = money((totalP+totalI+totalC).toFixed(2));\r\n  renderPreview();\r\n}\r\n\r\n\/* Preview Affidavit text generator *\/\r\nfunction renderPreview(){\r\n  const name = $id('inpName').value.trim() || '[Name]';\r\n  const mobile = $id('inpMobile').value.trim() || '[Mobile]';\r\n  const email = $id('inpEmail').value.trim() || '';\r\n  const address = $id('inpAddress').value.trim() || '[Address]';\r\n  const pan = $id('inpPAN').value.trim();\r\n  const aad = $id('inpAadhaar').value.trim();\r\n  const note = $id('inpNote').value.trim();\r\n\r\n  const rows = Array.from(invBody.querySelectorAll('tr'));\r\n  let annexRowsText = '';\r\n  const tableHdr = ['S.No','Company \/ Scheme','Inv Date','Interest recvd up to','Principal (\u20b9)','Rate % p.a.','Interest (to 31-March-2026) (\u20b9)','Comp %','Comp (\u20b9)','Total Claim (\u20b9)'];\r\n  annexRowsText += tableHdr.join('\\t') + '\\n';\r\n  let i=0, grandP=0, grandI=0, grandC=0, grandTotal=0;\r\n  rows.forEach(r=>{\r\n    i++;\r\n    const comp = r.querySelector('.company')?.value?.trim() || '-';\r\n    const dateVal = r.querySelector('.invDate')?.value || '-';\r\n    const receivedVal = r.querySelector('.receivedUpTo')?.value || '-';\r\n    const principal = parseFloatSafe(r.querySelector('.principal')?.value);\r\n    const rate = parseFloatSafe(r.querySelector('.rate')?.value);\r\n    const compPerc = parseFloatSafe(r.querySelector('.comp')?.value);\r\n    const interestText = r.querySelector('.interestCell')?.textContent?.replace('\u20b9','').trim() || '0';\r\n    const interest = parseFloatSafe(interestText);\r\n    const compVal = principal*(compPerc\/100);\r\n\r\n    annexRowsText += [i, comp, dateVal, (receivedVal==='-'?'-':receivedVal), principal.toFixed(2), rate.toFixed(2), interest.toFixed(2), compPerc.toFixed(2), compVal.toFixed(2), (principal+interest+compVal).toFixed(2)].join('\\t') + '\\n';\r\n    grandP += principal; grandI += interest; grandC += compVal; grandTotal += (principal+interest+compVal);\r\n  });\r\n\r\n  const currentSerial = getSerial({ inc:false }).formatted;\r\n\r\n  const affidavitText = `\r\nAFFIDAVIT \/ CLAIM DECLARATION\r\nDocument S.No.: ${currentSerial}\r\n(Under the Telangana Protection of Depositors of Financial Establishments Act, 1999)\r\n\r\nI, ${name}, S\/o \/ D\/o ____________, aged __ years, residing at ${address}, Mobile: ${mobile}${ email ? ', Email: ' + email : '' } do hereby solemnly affirm and state as follows:\r\n\r\n1. That I am an investor and one of the victims in Crime No. 358\/2023 of CCS, DD, Hyderabad registered under Sections 406, 420 r\/w 34 IPC and Section 5 of the TSPDFE Act, 1999, against Dr. Pantangi Kamalakar Sharma and others (Dhanwantari Foundation International and allied companies).\r\n\r\n2. That I invested the following amounts with the said financial establishment under the schemes\/debentures\/agreements which expressly promised returns in the form of interest, plots, or other benefits. (Annexure attached).\r\n\r\n3. Details of claims (Annexure):\r\n${annexRowsText}\r\n\r\nTotal Principal: ${money(grandP.toFixed(2))}\r\nTotal Interest (up to 31-March-2026): ${money(grandI.toFixed(2))}\r\nTotal Compensation: ${money(grandC.toFixed(2))}\r\nGrand Total Claim: ${money(grandTotal.toFixed(2))}\r\n\r\n4. That the accused have failed to repay my investments and have defaulted on both principal and assured interest, thereby causing financial loss, mental agony and hardship to me.\r\n\r\n5. I enclose herewith true copies of my supporting documents, namely: investment receipts, debenture certificates, agreements, bank transaction proofs, and identity documents (PAN\/Aadhaar).\r\n\r\n6. I therefore humbly pray that the Govt of Telanganamay kindly admit and verify my claim and release my rightful dues out of the attached and auctioned properties of the accused persons.\r\n7. I respectfully submit as follows:\r\n1.\tBackground of the Case\r\nThe criminal case pertaining to Dhanwantari Foundation International (DFI) was registered in the year 2023. The accused persons, including the Board of Directors of DFI, were arrested and subsequently released on bail during the year 2024. The matter is presently under adjudication before the Hon\u2019ble High Court of Telangana. \r\n2.\tViolation of Bail Conditions\r\nIt is submitted that the accused persons are in continuous and deliberate violation of the bail conditions imposed by the competent court. Despite judicial restrictions, they are: \r\no\tActively influencing and misleading investors, \r\no\tEngaging in unauthorized financial transactions, \r\no\tUsing mobile phones and operating from the DFI office situated at Amberpet, \r\no\tCollecting substantial amounts of money from the public. \r\n3.\tIllegal Sale of Properties\r\nIt has come to light that the accused persons are unlawfully selling lands situated in Bejjanki, Siddipet District, Telangana. This raises serious legal concerns, particularly in light of the attachment proceedings and ongoing litigation. The manner in which the accused are operating bank accounts and executing property transactions, despite legal restrictions, creates grave suspicion of systemic violations. \r\n4.\tDisassociation of Investors\r\nI submit that I, as an investor, have no connection whatsoever with the present activities of DFI or its management. The investment made was out of my hard-earned money, relying upon representations made in the name of a Brahmin trust. Any subsequent actions, transactions, or dealings undertaken by the accused are entirely without my consent or involvement. \r\n5.\tClaim for Restitution and Compensation\r\nIn view of the above, I am entitled to:\r\no\tFull refund of the principal amount invested, \r\no\tApplicable interest, and \r\no\t100% compensation for the loss, hardship, and mental agony suffered. \r\nThe liability of repayment rests solely upon the accused persons, irrespective of their internal dealings, sale of properties, or financial arrangements.\r\n6.\tPrayer\r\nIn the interest of justice, it is humbly prayed that: \r\no\tImmediate steps be taken to restrain the accused from further violating bail conditions, \r\no\tStrict action be initiated against unauthorized sale of attached or disputed properties, \r\no\tThe Government of Telangana and concerned authorities ensure recovery of amounts from the accused and remit the same directly to my account without any conditions, \r\no\tAdequate protection be extended to investors from further exploitation or coercion. \r\nConclusion\r\nThe continued unlawful conduct of the accused undermines the authority of the judicial process and causes irreparable harm to innocent investors. Immediate intervention is necessary to safeguard the interests of victims and uphold the rule of law.\r\n\r\n\r\n${ note ? ('Note by claimant: ' + note + '\\n') : '' }\r\n\r\nI solemnly affirm that the above facts are true and correct to the best of my knowledge and belief.\r\n\r\nPlace: ____________________     Date: ____________________\r\n\r\n(Signature of Investor) ______________________\r\nName: ${name}\r\nMobile: ${mobile}\r\n${ pan ? ('PAN: ' + pan) : '' } ${ aad ? ('  Aadhaar: ' + aad) : '' }\r\n\r\n(Witnesses)\r\n1. ______________________\r\n2. ______________________\r\n  `;\r\n  preview.textContent = affidavitText;\r\n}\r\n\r\n\/* Document builder & downloads *\/\r\nfunction buildDocContent(serialFormatted){\r\n  const rows = Array.from(invBody.querySelectorAll('tr'));\r\n  let annexHtml = '<table border=\"1\" cellpadding=\"6\" style=\"border-collapse:collapse;width:100%\"><thead style=\"background:#f3f4f6\"><tr>';\r\n  const hdr = ['S.No','Company \/ Scheme','Inv Date','Interest recvd up to','Principal (\u20b9)','Rate % p.a.','Interest (to 31-March-2026) (\u20b9)','Comp %','Comp (\u20b9)','Total Claim (\u20b9)'];\r\n  hdr.forEach(h=> annexHtml += `<th style=\"text-align:left;font-weight:700;font-style:italic;color:#000\">${h}<\/th>`);\r\n  annexHtml += '<\/tr><\/thead><tbody>';\r\n  let i=0, grandP=0, grandI=0, grandC=0, grandTotal=0;\r\n  rows.forEach(r=>{\r\n    i++;\r\n    const comp = r.querySelector('.company')?.value?.trim() || '-';\r\n    const dateVal = r.querySelector('.invDate')?.value || '-';\r\n    const receivedVal = r.querySelector('.receivedUpTo')?.value || '-';\r\n    const principal = parseFloatSafe(r.querySelector('.principal')?.value);\r\n    const rate = parseFloatSafe(r.querySelector('.rate')?.value);\r\n    const compPerc = parseFloatSafe(r.querySelector('.comp')?.value);\r\n    const interestText = r.querySelector('.interestCell')?.textContent?.replace('\u20b9','').trim() || '0';\r\n    const interest = parseFloatSafe(interestText);\r\n    const compVal = principal*(compPerc\/100);\r\n    const total = principal+interest+compVal;\r\n    annexHtml += `<tr>\r\n      <td>${i}<\/td>\r\n      <td>${escapeHtml(comp)}<\/td>\r\n      <td>${escapeHtml(dateVal)}<\/td>\r\n      <td>${escapeHtml(receivedVal)}<\/td>\r\n      <td style=\"text-align:right\">${Number(principal).toFixed(2)}<\/td>\r\n      <td style=\"text-align:right\">${Number(rate).toFixed(2)}<\/td>\r\n      <td style=\"text-align:right\">${Number(interest).toFixed(2)}<\/td>\r\n      <td style=\"text-align:right\">${Number(compPerc).toFixed(2)}<\/td>\r\n      <td style=\"text-align:right\">${Number(compVal).toFixed(2)}<\/td>\r\n      <td style=\"text-align:right\">${Number(total).toFixed(2)}<\/td>\r\n    <\/tr>`;\r\n    grandP += principal; grandI += interest; grandC += compVal; grandTotal += total;\r\n  });\r\n  annexHtml += `<\/tbody><\/table>`;\r\n\r\n  const name = $id('inpName').value.trim() || '[Name]';\r\n  const addr = $id('inpAddress').value.trim() || '';\r\n  const mobile = $id('inpMobile').value.trim() || '';\r\n  const email = $id('inpEmail').value.trim() || '';\r\n  const pan = $id('inpPAN').value.trim() || '';\r\n  const aad = $id('inpAadhaar').value.trim() || '';\r\n  const note = $id('inpNote').value.trim() || '';\r\n\r\n  const headerHtml = `<div style=\"font-family:Arial, sans-serif;color:#0f172a\">\r\n    <h2 style=\"margin:0;padding:0\">AFFIDAVIT \/ CLAIM DECLARATION<\/h2>\r\n    <div style=\"font-size:13px;color:#374151\">(Under the Telangana Protection of Depositors of Financial Establishments Act, 1999)<\/div>\r\n    <div style=\"margin-top:6px;font-weight:700\">Document S.No.: ${escapeHtml(serialFormatted)}<\/div>\r\n    <hr style=\"border:none;border-top:1px solid #e6eef6;margin:10px 0\"\/>\r\n  `;\r\n\r\n  const bodyHtml = `<div style=\"font-size:14px;line-height:1.5\">\r\n  <p>I, <strong>${escapeHtml(name)}<\/strong>, S\/o \/ D\/o ___________, aged __ years, residing at <strong>${escapeHtml(addr)}<\/strong>, Mobile: <strong>${escapeHtml(mobile)}<\/strong>${ email ? ', Email: ' + escapeHtml(email) : '' } do hereby solemnly affirm and state as follows:<\/p>\r\n\r\n  <ol>\r\n    <li>That I am an investor and one of the victims in <strong>Crime No. 358\/2023 of CCS, DD, Hyderabad<\/strong> registered under Sections 406, 420 r\/w 34 IPC and Section 5 of the TSPDFE Act, 1999, against <strong>Dr. Pantangi Kamalakar Sharma and others (Dhanwantari Foundation International and allied companies)<\/strong>.<\/li>\r\n    <li>That I invested the following amounts with the said financial establishment under the schemes\/debentures\/agreements which expressly promised returns in the form of interest, plots, or other benefits. (Annexure attached).<\/li>\r\n  <\/ol>\r\n\r\n  <h3 style=\"margin-bottom:6px\">Annexure \u2014 Investment Details<\/h3>\r\n  ${annexHtml}\r\n\r\n  <p style=\"margin-top:10px\">\r\n    <strong>Total Principal:<\/strong> ${money(grandP.toFixed(2))}<br\/>\r\n    <strong>Total Interest (up to 31-March-2026):<\/strong> ${money(grandI.toFixed(2))}<br\/>\r\n    <strong>Total Compensation:<\/strong> ${money(grandC.toFixed(2))}<br\/>\r\n    <strong>Grand Total Claim:<\/strong> ${money(grandTotal.toFixed(2))}\r\n  <\/p>\r\n\r\n  <ol start=\"3\">\r\n    <li>That the accused have failed to repay my investments and have defaulted on both principal and assured interest, thereby causing financial loss, mental agony and hardship to me.<\/li>\r\n    <li>I enclose herewith true copies of my supporting documents, namely: investment receipts, debenture certificates, agreements, bank transaction proofs, and identity documents (PAN\/Aadhaar).<\/li>\r\n    <li>I therefore humbly pray that the Govt of Telanganamay kindly admit and verify my claim and release my rightful dues out of the attached and auctioned properties of the accused persons.<\/li>\r\n  <\/ol>\r\n\r\n  ${ note ? '<p style=\"background:#fff3c4;padding:8px;border-radius:6px\">Note by claimant: '+ escapeHtml(note) +'<\/p>' : '' }\r\n\r\n  <p>I solemnly affirm that the above facts are true and correct to the best of my knowledge and belief.<\/p>\r\n\r\n  <p>Place: ____________________ &nbsp;&nbsp;&nbsp;&nbsp; Date: ____________________<\/p>\r\n\r\n  <p>(Signature of Investor) ____________________________<br\/>\r\n  Name: <strong>${escapeHtml(name)}<\/strong><br\/>\r\n  Mobile: <strong>${escapeHtml(mobile)}<\/strong>${ pan ? ('<br\/>PAN: '+escapeHtml(pan)) : '' }${ aad ? ('<br\/>Aadhaar: '+escapeHtml(aad)) : '' }<\/p>\r\n\r\n  <p><strong>Witnesses:<\/strong><br\/>1. ____________________________&nbsp;&nbsp;&nbsp;&nbsp;2. ____________________________<\/p>\r\n  <\/div>`;\r\n\r\n  const footerHtml = `<div style=\"font-size:12px;color:#6b7280;margin-top:12px\">\r\n    <hr style=\"border:none;border-top:1px solid #e6eef6\"\/>\r\n    <div>Generated by DFI Victims Forum \u2014 Affidavit & Statement Builder<\/div>\r\n    <div style=\"margin-top:6px\">Document S.No.: ${escapeHtml(serialFormatted)}<\/div>\r\n  <\/div><\/div>`;\r\n\r\n  return '<html><head><meta charset=\"utf-8\"><title>Affidavit - ' + escapeHtml(name) + '<\/title><\/head><body>' + headerHtml + bodyHtml + footerHtml + '<\/body><\/html>';\r\n}\r\n\r\n\/* Download handlers: increment serial when actual download occurs *\/\r\nbtnDownload.addEventListener('click', ()=> { computeAll(); btnDownloadDoc.click(); });\r\n\r\nbtnDownloadDoc.addEventListener('click', ()=>{\r\n  computeAll();\r\n\r\n  \/\/ increment serial here (user is actually downloading) \u2014 this will produce the next number (first download -> 108)\r\n  const newSerial = getSerial({ inc:true }); \/\/ increments and returns new numeric + formatted serial\r\n  refreshSerialDisplay(); \/\/ update UI to show the following NEXT serial after this download\r\n\r\n  const serialFormatted = newSerial.formatted;\r\n  const name = $id('inpName').value.trim() || 'Investor';\r\n  const date = new Date().toISOString().slice(0,10);\r\n  const filename = `${name.replace(\/\\s+\/g,'_')}_Affidavit_${serialFormatted}_${date}.doc`;\r\n  const html = buildDocContent(serialFormatted);\r\n  const blob = new Blob([html], {type: 'application\/msword'});\r\n  const url = URL.createObjectURL(blob);\r\n  const a = document.createElement('a');\r\n  a.href = url; a.download = filename; document.body.appendChild(a); a.click();\r\n  setTimeout(()=>{ URL.revokeObjectURL(url); a.remove(); }, 1500);\r\n});\r\n\r\nbtnCopyText.addEventListener('click', ()=>{\r\n  computeAll();\r\n  const text = preview.textContent;\r\n  navigator.clipboard.writeText(text).then(()=> alert('Affidavit text copied to clipboard. You can paste into Word \/ Notepad.'), ()=> alert('Copy failed. Please select and copy manually.'));\r\n});\r\n\r\n\/* Attach instructions to static elements at load *\/\r\ndocument.querySelectorAll('input[data-instruction], textarea[data-instruction], select[data-instruction], button[data-instruction]').forEach(el => attachInstruction(el));\r\n\r\n\/* initial compute and serial display *\/\r\nrefreshSerialDisplay();\r\ncomputeAll();\r\n\r\n<\/script>\r\n<\/body>\r\n<\/html>\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\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Investor Affidavit &#038; Statement Builder \u2014 DFI Victims Forum DFI DFI Victims Forum \u2014 Affidavit &#038; Investment Statement Builder Fill details, add investments, and click Download Statement to get a Word-compatible affidavit file Document S.No. Loading\u2026 Investor Details Interest calculated up to 31 March 2026 Name Mobile No. Email (optional) Address PAN (optional) Aadhaar (optional) Declaration \/ Short note (optional) Investments (Add one row per investment \/ company)You may add multiple rows if you invested in different DFI companies\/schemes + Add Row Clear All Company \/ Scheme Investment Date Interest recvd up to (YYYY-MM) Principal (\u20b9) Interest % p.a. Interest up to 31-March-2026 (\u20b9) Comp % Total Claim (\u20b9) Default compensation % for new rows Compute Interest &#038; Totals Download Statement Total Principal \u20b9 0.00 Total Interest (to 31-March-2026) \u20b9 0.00 Total Compensation \u20b9 0.00 Grand Total Claim \u20b9 0.00 Note: interest is computed using simple interest formula: Principal \u00d7 Rate(%) \u00d7 (Days \/ 365), where Days = from investment date or the day after &#8220;Interest recvd up to&#8221; (if provided) to 31-March-2026. Affidavit Preview (will be included in downloaded file) Edit personal details above and press Compute Interest &#038; Totals before download Download Statement (.doc) Copy Text This tool generates a Word-compatible affidavit\/statement file for submission to the Govt of Telangana \/ DFI Victims Forum. Keep original receipts and proof ready for notarisation if required. INSTRUCTION Click any field. You will hear loud, clear instructions for what to enter. MUTE VOICE<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-11533","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/indianbrahmins.com\/index.php\/wp-json\/wp\/v2\/pages\/11533","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/indianbrahmins.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/indianbrahmins.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/indianbrahmins.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/indianbrahmins.com\/index.php\/wp-json\/wp\/v2\/comments?post=11533"}],"version-history":[{"count":139,"href":"https:\/\/indianbrahmins.com\/index.php\/wp-json\/wp\/v2\/pages\/11533\/revisions"}],"predecessor-version":[{"id":13300,"href":"https:\/\/indianbrahmins.com\/index.php\/wp-json\/wp\/v2\/pages\/11533\/revisions\/13300"}],"wp:attachment":[{"href":"https:\/\/indianbrahmins.com\/index.php\/wp-json\/wp\/v2\/media?parent=11533"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}