JustPaste
HomeCategoriesAboutDonateContactTerms of UsePrivacy Policy
JustPaste

Free online notepad — write and share instantly

Navigate

  • Home
  • Timeline
  • Categories

Info

  • About
  • Donate
  • Contact

Legal

  • Terms of Use
  • Privacy Policy

© 2026 JustPaste.app. All rights reserved.

Made with ♥ by JustPaste

Untitled Page | JustPaste.app
11 days ago2 views
👨‍💻Programming

Untitled Page

// ==UserScript==
// @name         EPF Passbook - YEAR DATA SUMMARY
// @namespace    http://tampermonkey.net/
// @version      3.0
// @description  Show tables only for specific member ID when selected from dropdown
// @match        https://passbook.epfindia.gov.in/MemberPassBook/passbook*
// @grant        none
// @run-at       document-idle
// ==/UserScript==
(function() {
    'use strict';

    // ============================================
    // CONFIGURATION
    // ============================================

    const AVAILABLE_YEARS = ['2026','2025'];
    const TARGET_MEMBER_ID = 'BGYNK40310840000010023';  // Only show tables for this member
    let currentYear = '2026';

    // ============================================
    // TABLE DATA BY YEAR
    // ============================================

    const passbookTables = {
        '2026': `
            <div id="v-tab-2026" class="v-tab-content ">
                <div class="pad-10">
                    <div class="row">
                        <div class="col-md-6">
                            Passbook for Member Id : [ <b class="color-primary bhashini-skip-translation">[BGYNK40310840000010023] [ 2026-2027 ]</b> ]
                        </div>
                        <div class="col-md-6 text-end">

                            <button data-download="true" name="pb-pdf" data-year="2026" class="btn btn-primary btn-sm ml-20 bg-color download-btn" type="button">Download as PDF [2026]</button>
                        </div>
                    </div>
                    <div class="table table-responsive">
                        <table id="table-pb-2026" class="table table-pb">
                            <thead>
                                <tr class="theader va-middle1 tdp5-1">
                                    <td class="tdp5" colspan="6">Particulars</td>
                                    <td class="tdp5 text-end">Employee Share</td>
                                    <td class="tdp5 text-end">Employer Share</td>
                                    <td class="tdp5 text-end">Pension Share</td>
                                </tr>
                            </thead>
                            <tbody>
                                <tr class="bold">
                                    <td class="tdp5" colspan="6">
                                        <span class="badge bg-success pad-5">OB Int. Updated upto 01/04/2026</span>
                                    </td>
                                    <td class="text-end tdp5"><span class="border-text">₹ 33,740 </span></td>
                                    <td class="text-end tdp5"><span class="border-text">₹ 16,183 </span></td>
                                    <td class="text-end tdp5"><span class="border-text">₹17,500 </span></td>
                                </tr>
                                <tr class="theader va-middle1 tdp5-1">
                                    <td class="tdp5 text-end">Wage Month</td>
                                    <td class="tdp5">Transaction<br>Date</td>
                                    <td class="tdp5 text-end">Transaction<br>Type</td>
                                    <td class="tdp5">Particulars</td>
                                    <td class="tdp5 text-end">EPF Wages</td>
                                    <td class="tdp5 text-end">EPS Wages</td>
                                    <td class="tdp5 text-end">Employee Share<br>( 12% )</td>
                                    <td class="tdp5 text-end">Employer Share<br>( 3.67% )</td>
                                    <td class="tdp5 text-end">Pension Share<br>( 8.33% )</td>
                                </tr>

                                  <tr class="va-middle1 color-black">
                                    <td class="tdp5 text-end">Mar-2026</td>
                                    <td class="tdp5">01-04-2026</td>
                                    <td class="tdp5 text-end"><span class="badge bg-success opacity-09">+</span></td>
                                    <td class="tdp5">Cont. For Due-Month 042026</td>
                                     <td class="text-end tdp5">14,860</td>
                                    <td class="text-end tdp5">15,000</td>
                                    <td class="text-end tdp5">1,800</td>
                                    <td class="text-end tdp5">550</td>
                                    <td class="text-end tdp5">1,250</td>
                                </tr>
                                <tr class="va-middle1 color-black">
                                    <td class="tdp5 text-end">Apr-2026</td>
                                    <td class="tdp5">01-05-2026</td>
                                    <td class="tdp5 text-end"><span class="badge bg-success opacity-09">+</span></td>
                                    <td class="tdp5">Cont. For Due-Month 052026</td>
                                     <td class="text-end tdp5">14,860</td>
                                    <td class="text-end tdp5">15,000</td>
                                    <td class="text-end tdp5">1,800</td>
                                    <td class="text-end tdp5">550</td>
                                    <td class="text-end tdp5">1,250</td>
                                </tr>
                                 <tr class="va-middle1 color-black">
                                    <td class="tdp5 text-end">May-2026</td>
                                    <td class="tdp5">01-06-2026</td>
                                    <td class="tdp5 text-end"><span class="badge bg-success opacity-09">+</span></td>
                                    <td class="tdp5">Cont. For Due-Month 062026</td>
                                <td class="text-end tdp5">14,860</td>
                                    <td class="text-end tdp5">15,000</td>
                                    <td class="text-end tdp5">1,800</td>
                                    <td class="text-end tdp5">550</td>
                                    <td class="text-end tdp5">1,250</td>
                                </tr>
                                 <tr class="va-middle1 color-black">
                                    <td class="tdp5 text-end">Jun-2026</td>
                                    <td class="tdp5">15-07-2026 </td>
                                    <td class="tdp5 text-end"><span class="badge bg-success opacity-09">+</span></td>
                                    <td class="tdp5">Cont. For Due-Month 072026</td>
                             <td class="text-end tdp5">14,860</td>
                                    <td class="text-end tdp5">15,000</td>
                                    <td class="text-end tdp5">1,800</td>
                                    <td class="text-end tdp5">550</td>
                                    <td class="text-end tdp5">1,250</td>
                                </tr>
                                 <tr class="va-middle1 color-black">
                                    <td class="tdp5 text-end">Jul-2026</td>
                                    <td class="tdp5">15-08-2026 </td>
                                    <td class="tdp5 text-end"><span class="badge bg-success opacity-09">+</span></td>
                                    <td class="tdp5">Cont. For Due-Month 082026</td>
                             <td class="text-end tdp5">14,860</td>
                                    <td class="text-end tdp5">15,000</td>
                                    <td class="text-end tdp5">1,800</td>
                                    <td class="text-end tdp5">550</td>
                                    <td class="text-end tdp5">1,250</td>
                                </tr>
                                 <tr class="va-middle1 color-black">
                                    <td class="tdp5 text-end">Aug-2026</td>
                                    <td class="tdp5"> 13-09-2026 </td>
                                    <td class="tdp5 text-end"><span class="badge bg-success opacity-09">+</span></td>
                                    <td class="tdp5">Cont. For Due-Month 092026</td>
                             <td class="text-end tdp5"> 5,752</td>
                                    <td class="text-end tdp5">15,000</td>
                                    <td class="text-end tdp5">696</td>
                                    <td class="text-end tdp5">212</td>
                                    <td class="text-end tdp5">483</td>
                                </tr>
                               
                               



                                <tr class="cont bold va-middle1">
                                    <td class="tdp5 text-end" colspan="6">Total Contributions for the year [ 2026 ]</td>
                                    <td class="text-end tdp5"><span class="border-text">₹9,696  </span></td>
                                    <td class="text-end tdp5"><span class="border-text">₹3,446 </span></td>
                                    <td class="text-end tdp5"><span class="border-text">₹6,733  </span></td>
                                </tr>
                                <tr class="cont bold va-middle1">
                                    <td class="tdp5 text-end" colspan="6">Total Transfer-Ins/VDRs for the year [ 2026 ]</td>
                                    <td class="text-end tdp5"><span class="border-text">₹0</span></td>
                                    <td class="text-end tdp5"><span class="border-text">₹0</span></td>
                                    <td class="text-end tdp5"><span class="border-text">₹0</span></td>
                                </tr>
                                <tr class="cont bold wth va-middle1">
                                    <td class="tdp5 text-end" colspan="6"><span class="badge bg-danger font-size-14">Total Withdrawals for the year [ 2026 ]</span></td>
                                    <td class="text-end tdp5"><span class="border-text">₹0</span></td>
                                    <td class="text-end tdp5"><span class="border-text">₹0</span></td>
                                    <td class="text-end tdp5"><span class="border-text">₹0</span></td>
                                </tr>
                                <tr class="bold">
                                    <td class="tdp5" colspan="6">Interest details. upto 31/03/2027 </td>
                                    <td class="text-end tdp5"><span class="border-text">₹0 </span></td>
                                    <td class="text-end tdp5"><span class="border-text">₹0 </span></td>
                                    <td class="text-end tdp5"><span class="border-text">₹0</span></td>
                                </tr>
                                <tr class="bold">
                                    <td class="tdp5" colspan="6"><span class="badge bg-info font-size-14">Closing Balance as on 31/03/2027</span></td>
                                    <td class="text-end tdp5"><span class="border-text">₹43,436  </span></td>
                                    <td class="text-end tdp5"><span class="border-text">₹19,629   </span></td>
                                    <td class="text-end tdp5"><span class="border-text">₹24,233  </span></td>
                                </tr>
                            </tbody>
                            <tfoot>
                                <tr>
                                    <td colspan="9" class="tdp5 text-center">
                                        <span class="border-text font-size-14 pad-10">
                                            Disclaimer - Information shown above is based on available data on central server. This information may not be used for legal purposes.
                                        </span>
                                    </td>
                                </tr>
                            </tfoot>
                        </table>
                    </div>
                </div>
            </div>
        `,

        '2025': `
            <div id="v-tab-2025" class="v-tab-content">
                <div class="pad-10">
                    <div class="row">
                        <div class="col-md-6">
                            Passbook for Member Id : [ <b class="color-primary bhashini-skip-translation">[BGYNK40310840000010023] [2025-26]  </b> ]
                        </div>
                        <div class="col-md-6 text-end">

                            <button data-download="true" name="pb-pdf" data-year="2025" class="btn btn-primary btn-sm ml-20 bg-color download-btn" type="button">Download as PDF [2025]</button>
                        </div>
                    </div>
                    <div class="table table-responsive">
                        <table id="table-pb-2025" class="table table-pb">
                            <thead>
                                <tr class="theader va-middle1 tdp5-1">
                                    <td class="tdp5" colspan="6">Particulars</td>
                                    <td class="tdp5 text-end">Employee Share</td>
                                    <td class="tdp5 text-end">Employer Share</td>
                                    <td class="tdp5 text-end">Pension Share</td>
                                </tr>
                            </thead>
                            <tbody>
                                <tr class="bold">
                                    <td class="tdp5" colspan="6">
                                        <span class="badge bg-success pad-5">OB Int. Updated upto 01/04/2025</span>
                                    </td>
                                    <td class="text-end tdp5"><span class="border-text">₹12,044  </span></td>
                                    <td class="text-end tdp5"><span class="border-text">₹9,536    </span></td>
                                    <td class="text-end tdp5"><span class="border-text">₹2,500  </span></td>
                                </tr>
                                <tr class="theader va-middle1 tdp5-1">
                                    <td class="tdp5 text-end">Wage Month</td>
                                    <td class="tdp5">Transaction<br>Date</td>
                                    <td class="tdp5 text-end">Transaction<br>Type</td>
                                    <td class="tdp5">Particulars</td>
                                    <td class="tdp5 text-end">EPF Wages</td>
                                    <td class="tdp5 text-end">EPS Wages</td>
                                    <td class="tdp5 text-end">Employee Share<br>( 12% )</td>
                                    <td class="tdp5 text-end">Employer Share<br>( 3.67% )</td>
                                    <td class="tdp5 text-end">Pension Share<br>( 8.33% )</td>
                                </tr>
                                 <tr class="va-middle1 color-black">
                                    <td class="tdp5 text-end">Mar-2025</td>
                                    <td class="tdp5">01-04-2025</td>
                                    <td class="tdp5 text-end"><span class="badge bg-success opacity-09">+</span></td>
                                    <td class="tdp5">Cont. For Due-Month 042025</td>
                                     <td class="text-end tdp5">14,860</td>
                                    <td class="text-end tdp5">15,000</td>
                                    <td class="text-end tdp5">1,800</td>
                                    <td class="text-end tdp5">550</td>
                                    <td class="text-end tdp5">1,250</td>
                                </tr>
                                <tr class="va-middle1 color-black">
                                    <td class="tdp5 text-end">Apr-2025</td>
                                    <td class="tdp5">01-05-2025</td>
                                    <td class="tdp5 text-end"><span class="badge bg-success opacity-09">+</span></td>
                                    <td class="tdp5">Cont. For Due-Month 052025</td>
                                 <td class="text-end tdp5">14,860</td>
                                    <td class="text-end tdp5">15,000</td>
                                    <td class="text-end tdp5">1,800</td>
                                    <td class="text-end tdp5">550</td>
                                    <td class="text-end tdp5">1,250</td>
                                </tr>
                                 <tr class="va-middle1 color-black">
                                    <td class="tdp5 text-end">May-2025</td>
                                    <td class="tdp5">01-06-2025</td>
                                    <td class="tdp5 text-end"><span class="badge bg-success opacity-09">+</span></td>
                                    <td class="tdp5">Cont. For Due-Month 062025</td>
                               <td class="text-end tdp5">14,860</td>
                                    <td class="text-end tdp5">15,000</td>
                                    <td class="text-end tdp5">1,800</td>
                                    <td class="text-end tdp5">550</td>
                                    <td class="text-end tdp5">1,250</td>
                                </tr>
                                 <tr class="va-middle1 color-black">
                                    <td class="tdp5 text-end">Jun-2025</td>
                                    <td class="tdp5">01-07-2025 </td>
                                    <td class="tdp5 text-end"><span class="badge bg-success opacity-09">+</span></td>
                                    <td class="tdp5">Cont. For Due-Month 072025</td>
                                <td class="text-end tdp5">14,860</td>
                                    <td class="text-end tdp5">15,000</td>
                                    <td class="text-end tdp5">1,800</td>
                                    <td class="text-end tdp5">550</td>
                                    <td class="text-end tdp5">1,250</td>
                                </tr>
                                 <tr class="va-middle1 color-black">
                                    <td class="tdp5 text-end">Jul-2025</td>
                                    <td class="tdp5">01-08-2025 </td>
                                    <td class="tdp5 text-end"><span class="badge bg-success opacity-09">+</span></td>
                                    <td class="tdp5">Cont. For Due-Month 082025</td>
                           <td class="text-end tdp5">14,860</td>
                                    <td class="text-end tdp5">15,000</td>
                                    <td class="text-end tdp5">1,800</td>
                                    <td class="text-end tdp5">550</td>
                                    <td class="text-end tdp5">1,250</td>
                                </tr>
                                 <tr class="va-middle1 color-black">
                                    <td class="tdp5 text-end">Aug-2025</td>
                                    <td class="tdp5">01-09-2025  </td>
                                    <td class="tdp5 text-end"><span class="badge bg-success opacity-09">+</span></td>
                                    <td class="tdp5">Cont. For Due-Month 092025</td>
                               <td class="text-end tdp5">14,860</td>
                                    <td class="text-end tdp5">15,000</td>
                                    <td class="text-end tdp5">1,800</td>
                                    <td class="text-end tdp5">550</td>
                                    <td class="text-end tdp5">1,250</td>
                                </tr>
                                 <tr class="va-middle1 color-black">
                                    <td class="tdp5 text-end">Sep-2025</td>
                                    <td class="tdp5">01-10-2025   </td>
                                    <td class="tdp5 text-end"><span class="badge bg-success opacity-09">+</span></td>
                                    <td class="tdp5">Cont. For Due-Month 102025</td>
                             <td class="text-end tdp5">14,860</td>
                                    <td class="text-end tdp5">15,000</td>
                                    <td class="text-end tdp5">1,800</td>
                                    <td class="text-end tdp5">550</td>
                                    <td class="text-end tdp5">1,250</td>
                                </tr>
                                 <tr class="va-middle1 color-black">
                                    <td class="tdp5 text-end">Oct-2025</td>
                                    <td class="tdp5">01-11-2025   </td>
                                    <td class="tdp5 text-end"><span class="badge bg-success opacity-09">+</span></td>
                                    <td class="tdp5">Cont. For Due-Month 112025</td>
                        <td class="text-end tdp5">14,860</td>
                                    <td class="text-end tdp5">15,000</td>
                                    <td class="text-end tdp5">1,800</td>
                                    <td class="text-end tdp5">550</td>
                                    <td class="text-end tdp5">1,250</td>
                                </tr>
                                 <tr class="va-middle1 color-black">
                                    <td class="tdp5 text-end">Nov-2025</td>
                                    <td class="tdp5">01-12-2025</td>
                                    <td class="tdp5 text-end"><span class="badge bg-success opacity-09">+</span></td>
                                    <td class="tdp5">Cont. For Due-Month 122025</td>
                           <td class="text-end tdp5">14,860</td>
                                    <td class="text-end tdp5">15,000</td>
                                    <td class="text-end tdp5">1,800</td>
                                    <td class="text-end tdp5">550</td>
                                    <td class="text-end tdp5">1,250</td>
                                </tr>
                                 <tr class="va-middle1 color-black">
                                    <td class="tdp5 text-end">Dec-2025</td>
                                    <td class="tdp5">01-01-2026</td>
                                    <td class="tdp5 text-end"><span class="badge bg-success opacity-09">+</span></td>
                                    <td class="tdp5">Cont. For Due-Month 012026</td>
                              <td class="text-end tdp5">14,860</td>
                                    <td class="text-end tdp5">15,000</td>
                                    <td class="text-end tdp5">1,800</td>
                                    <td class="text-end tdp5">550</td>
                                    <td class="text-end tdp5">1,250</td>
                                </tr>
                                   <tr class="va-middle1 color-black">
                                    <td class="tdp5 text-end">Jan-2026</td>
                                    <td class="tdp5">01-02-2026 </td>
                                    <td class="tdp5 text-end"><span class="badge bg-success opacity-09">+</span></td>
                                    <td class="tdp5">Cont. For Due-Month 022026</td>
                              <td class="text-end tdp5">14,860</td>
                                    <td class="text-end tdp5">15,000</td>
                                    <td class="text-end tdp5">1,800</td>
                                    <td class="text-end tdp5">550</td>
                                    <td class="text-end tdp5">1,250</td>
                                </tr>
                                <tr class="va-middle1 color-black">
                                    <td class="tdp5 text-end">Feb-2026</td>
                                    <td class="tdp5">01-03-2026 </td>
                                    <td class="tdp5 text-end"><span class="badge bg-success opacity-09">+</span></td>
                                    <td class="tdp5">Cont. For Due-Month 032026</td>
                             <td class="text-end tdp5">14,860</td>
                                    <td class="text-end tdp5">15,000</td>
                                    <td class="text-end tdp5">1,800</td>
                                    <td class="text-end tdp5">550</td>
                                    <td class="text-end tdp5">1,250</td>
                                </tr>

                                
                                <tr class="cont bold va-middle1">
                                    <td class="tdp5 text-end" colspan="6">Total Contributions for the year [ 2025 ]</td>
                                    <td class="text-end tdp5"><span class="border-text">₹21,600  </span></td>
                                    <td class="text-end tdp5"><span class="border-text">₹ 6,600  </span></td>
                                    <td class="text-end tdp5"><span class="border-text">₹15,000</span></td>
                                </tr>
                                <tr class="cont bold va-middle1">
                                    <td class="tdp5 text-end" colspan="6">Total Transfer-Ins/VDRs for the year [ 2025 ]</td>
                                    <td class="text-end tdp5"><span class="border-text">₹0</span></td>
                                    <td class="text-end tdp5"><span class="border-text">₹0</span></td>
                                    <td class="text-end tdp5"><span class="border-text">₹0</span></td>
                                </tr>
                                <tr class="cont bold wth va-middle1">
                                    <td class="tdp5 text-end" colspan="6"><span class="badge bg-danger font-size-14">Total Withdrawals for the year [ 2025 ]</span></td>
                                    <td class="text-end tdp5"><span class="border-text">₹0</span></td>
                                    <td class="text-end tdp5"><span class="border-text">₹0</span></td>
                                    <td class="text-end tdp5"><span class="border-text">₹0</span></td>
                                </tr>
                                <tr class="bold">
                                    <td class="tdp5" colspan="6">Interest details. upto 31/03/2026 </td>
                                    <td class="text-end tdp5"><span class="border-text">₹96 </span></td>
                                    <td class="text-end tdp5"><span class="border-text">₹47</span></td>
                                    <td class="text-end tdp5"><span class="border-text">₹0</span></td>
                                </tr>
                                <tr class="bold">
                                    <td class="tdp5" colspan="6"><span class="badge bg-info font-size-14">Closing Balance as on 31/03/2026</span></td>
                                    <td class="text-end tdp5"><span class="border-text">₹33,740  </span></td>
                                    <td class="text-end tdp5"><span class="border-text">₹16,183  </span></td>
                                    <td class="text-end tdp5"><span class="border-text">₹17,500 </span></td>
                                </tr>
                            </tbody>
                            <tfoot>
                                <tr>
                                    <td colspan="9" class="tdp5 text-center">
                                        <span class="border-text font-size-14 pad-10">
                                            Disclaimer - Information shown above is based on available data on central server. This information may not be used for legal purposes.
                                        </span>
                                    </td>
                                </tr>
                            </tfoot>
                        </table>
                    </div>
                </div>
            </div>
        `,

        
    };

    // ============================================
    // CORE FUNCTIONS
    // ============================================

    /**
     * Check if specific member ID is selected
     */
    const isTargetMemberSelected = () => {
        const selectMid = document.getElementById('selectmid');
        if (!selectMid) return false;

        const selectedMemberId = selectMid.value;
        console.log(`Current member ID: ${selectedMemberId}`);
        console.log(`Target member ID: ${TARGET_MEMBER_ID}`);

        return selectedMemberId === TARGET_MEMBER_ID;
    };

    /**
     * Show/hide table container based on member ID
     */
    const updateTableVisibility = () => {
        const tableContainer = document.getElementById('epf-table-container');

        if (!tableContainer) {
            console.log('Table container not yet created');
            return;
        }

        if (isTargetMemberSelected()) {
            console.log(`✓ Target member ${TARGET_MEMBER_ID} selected - showing tables`);
            tableContainer.style.display = 'block';
            switchToYear(currentYear);  // Show current year's table
        } else {
            console.log('Different member selected - hiding tables');
            tableContainer.style.display = 'none';
        }
    };

    /**
     * Switch to specified year and update display
     */
    const switchToYear = (year) => {
        // Only switch if target member is selected
        if (!isTargetMemberSelected()) {
            console.log('Cannot switch year - wrong member ID');
            return;
        }

        if (!AVAILABLE_YEARS.includes(year)) {
            console.warn(`Year ${year} not available`);
            return;
        }

        currentYear = year;
        console.log(`Switched to year: ${year}`);

        // Update dropdown
        const selectElement = document.getElementById('selectfy');
        if (selectElement) {
            selectElement.value = year;
        }

        // Hide all tables
        const allTabs = document.querySelectorAll('.v-tab-content');
        allTabs.forEach(tab => {
            tab.style.display = 'none';
            tab.classList.remove('active');
        });

        // Show selected year's table
        const selectedTab = document.getElementById(`v-tab-${year}`);
        if (selectedTab) {
            selectedTab.style.display = 'block';
            selectedTab.classList.add('active');

            // Scroll to table
            setTimeout(() => {
                selectedTab.scrollIntoView({ behavior: 'smooth', block: 'start' });
            }, 100);
        }
    };

    /**
     * Move to next year (older year)
     */
    const moveToNextYear = () => {
        if (!isTargetMemberSelected()) return;

        const currentIndex = AVAILABLE_YEARS.indexOf(currentYear);
        if (currentIndex < AVAILABLE_YEARS.length - 1) {
            switchToYear(AVAILABLE_YEARS[currentIndex + 1]);
        } else {
            console.log('Already at oldest year');
        }
    };

    /**
     * Move to previous year (newer year)
     */
    const moveToPreviousYear = () => {
        if (!isTargetMemberSelected()) return;

        const currentIndex = AVAILABLE_YEARS.indexOf(currentYear);
        if (currentIndex > 0) {
            switchToYear(AVAILABLE_YEARS[currentIndex - 1]);
        } else {
            console.log('Already at newest year');
        }
    };

    /**
     * Inject tables and attach event listeners
     */
    const initialize = () => {
        console.log('\n╔════════════════════════════════════════════════════╗');
        console.log('║ EPF Passbook - Member ID Specific Tables           ║');
        console.log('╚════════════════════════════════════════════════════╝');
        console.log(`\nTarget Member ID: ${TARGET_MEMBER_ID}`);
        console.log('Initializing...\n');

        // Find the financial year card
        const financialYearCard = document.getElementById('tm-financial-year-card');
        if (!financialYearCard) {
            console.warn('❌ Financial year card not found');
            return false;
        }
        console.log('✓ Found financial year card');

        // Find member ID dropdown
        const selectMid = document.getElementById('selectmid');
        if (!selectMid) {
            console.warn('❌ Member ID dropdown not found');
            return false;
        }
        console.log('✓ Found member ID dropdown');

        // Create container for tables
        let tableContainer = document.getElementById('epf-table-container');
        if (!tableContainer) {
            tableContainer = document.createElement('div');
            tableContainer.id = 'epf-table-container';
            tableContainer.className = 'margin-top-minus-ten';
            tableContainer.style.display = 'none';  // Hidden by default

            // Insert after financial year card
            financialYearCard.insertAdjacentElement('afterend', tableContainer);
        }
        console.log('✓ Created table container');

        // Inject all tables
        let allTablesHTML = '<div class="v-tab">';
        AVAILABLE_YEARS.forEach(year => {
            if (passbookTables[year]) {
                allTablesHTML += passbookTables[year];
            }
        });
        allTablesHTML += '</div>';

        tableContainer.innerHTML = allTablesHTML;
        console.log('✓ Injected all year tables');

        // Attach member ID dropdown listener
        selectMid.addEventListener('change', function(e) {
            const selectedId = this.value;
            console.log(`\n📍 Member ID changed to: ${selectedId}`);
            updateTableVisibility();
        });
        console.log('✓ Attached member ID dropdown listener');

        // Attach financial year dropdown listener
        const selectElement = document.getElementById('selectfy');
        if (selectElement) {
            selectElement.addEventListener('change', function(e) {
                const selectedYear = this.value;
                console.log(`\n📅 Financial Year changed to: ${selectedYear}`);
                switchToYear(selectedYear);
            });
            console.log('✓ Attached financial year dropdown listener');
        }

        // Attach button listeners
        const prevBtn = document.getElementById('btn-prev-data');
        if (prevBtn) {
            prevBtn.addEventListener('click', function(e) {
                e.preventDefault();
                console.log('◄ Previous button clicked');
                moveToPreviousYear();
            });
            console.log('✓ Attached previous button listener');
        }

        const nextBtn = document.getElementById('btn-next-data');
        if (nextBtn) {
            nextBtn.addEventListener('click', function(e) {
                e.preventDefault();
                console.log('► Next button clicked');
                moveToNextYear();
            });
            console.log('✓ Attached next button listener');
        }

        // Keyboard shortcuts
        document.addEventListener('keydown', function(e) {
            if (e.altKey && e.key === 'ArrowLeft') {
                console.log('⌨️  Keyboard: Alt + Left');
                moveToPreviousYear();
            }
            if (e.altKey && e.key === 'ArrowRight') {
                console.log('⌨️  Keyboard: Alt + Right');
                moveToNextYear();
            }
        });
        console.log('✓ Attached keyboard shortcuts');

        // Initial visibility check
        updateTableVisibility();

        console.log('\n✅ Initialization complete!');
        console.log('\n💡 How to use:');
        console.log(`   1. Select member ID "${TARGET_MEMBER_ID}" from dropdown`);
        console.log('   2. Tables will appear below the dropdown');
        console.log('   3. Select financial year to view data');
        console.log('   4. Click ◄/► buttons to navigate years');
        console.log('   5. Use Alt + ← / → for keyboard navigation\n');

        return true;
    };

    // ============================================
    // INITIALIZATION WITH RETRY
    // ============================================

    // Try immediate initialization
    if (!initialize()) {
        console.log('Setting up retry logic...');

        // Retry every 1 second
        let attempts = 0;
        const retryTimer = setInterval(() => {
            attempts++;
            if (initialize()) {
                clearInterval(retryTimer);
            } else if (attempts >= 10) {
                console.error('❌ Failed to initialize after 10 attempts');
                clearInterval(retryTimer);
            }
        }, 1000);

        // MutationObserver backup
        const observer = new MutationObserver(() => {
            if (initialize()) {
                observer.disconnect();
            }
        });

        observer.observe(document.body, {
            childList: true,
            subtree: true
        });
    }

})();
← Back to timeline