{"id":887,"date":"2024-04-08T09:21:10","date_gmt":"2024-04-08T09:21:10","guid":{"rendered":"http:\/\/raigadexplore.in\/Bhajan_Sangrah\/?page_id=887"},"modified":"2026-09-26T18:10:36","modified_gmt":"2026-09-26T18:10:36","slug":"stotra-and-mantra","status":"publish","type":"page","link":"https:\/\/raigadexplore.in\/Bhajan_Sangrah\/stotra-and-mantra\/","title":{"rendered":"Stotra and Mantra"},"content":{"rendered":"\n<!-- ==========================================\n     MANTRA SANGRAH - COMPACT MOBILE DASHBOARD\n     (with pagination + fixed image display)\n     ========================================== -->\n\n<style>\n\n.bs-mantra-container {\n    max-width: 1100px;\n    margin: 0 auto;\n    padding: 10px 12px 35px;\n    box-sizing: border-box;\n}\n\n\/* HEADER *\/\n.bs-mantra-header {\n    text-align: center;\n    margin-bottom: 18px;\n}\n.bs-mantra-header h1 {\n    margin: 0;\n    font-size: 28px;\n    line-height: 1.3;\n    color: #222;\n    font-weight: 700;\n}\n.bs-mantra-header p {\n    margin: 6px 0 0;\n    color: #777;\n    font-size: 14px;\n}\n\n\/* SEARCH BOX *\/\n.bs-mantra-search {\n    position: sticky;\n    top: 5px;\n    z-index: 20;\n    max-width: 700px;\n    margin: 0 auto 22px;\n    display: flex;\n    gap: 8px;\n    background: #fff;\n    padding: 6px;\n    border-radius: 12px;\n    box-shadow: 0 3px 12px rgba(0,0,0,0.12);\n}\n.bs-mantra-search input {\n    flex: 1;\n    min-width: 0;\n    height: 46px;\n    padding: 0 14px;\n    border: 1px solid #ddd;\n    border-radius: 8px;\n    font-size: 16px;\n    outline: none;\n}\n.bs-mantra-search input:focus {\n    border-color: #d4a800;\n}\n.bs-mantra-search button {\n    height: 46px;\n    padding: 0 18px;\n    border: 0;\n    border-radius: 8px;\n    background: #e3b400;\n    color: #111;\n    font-size: 15px;\n    font-weight: 700;\n    cursor: pointer;\n}\n.bs-mantra-search button:disabled {\n    opacity: 0.6;\n    cursor: default;\n}\n\n\/* TOOLBAR \u2014 result count, sort, clear *\/\n.bs-mantra-toolbar {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    gap: 10px;\n    flex-wrap: wrap;\n    max-width: 700px;\n    margin: 0 auto 16px;\n}\n.bs-mantra-count {\n    font-size: 13px;\n    color: #666;\n    font-weight: 600;\n}\n.bs-mantra-count strong {\n    color: #222;\n}\n.bs-mantra-toolbar-actions {\n    display: flex;\n    align-items: center;\n    gap: 8px;\n    flex-wrap: wrap;\n}\n.bs-mantra-sort-select {\n    height: 38px;\n    padding: 0 10px;\n    border: 1px solid #ddd;\n    border-radius: 8px;\n    background: #fff;\n    color: #222;\n    font-size: 13px;\n    font-weight: 600;\n    cursor: pointer;\n    outline: none;\n}\n.bs-mantra-sort-select:focus {\n    border-color: #d4a800;\n}\n.bs-mantra-clear-btn {\n    height: 38px;\n    padding: 0 14px;\n    border: 1px solid #e3b400;\n    border-radius: 8px;\n    background: #fff;\n    color: #a17f00;\n    font-size: 13px;\n    font-weight: 700;\n    cursor: pointer;\n    display: none; \/* only shown once a filter is active *\/\n    align-items: center;\n    gap: 4px;\n}\n.bs-mantra-clear-btn:hover {\n    background: #fff9df;\n}\n.bs-mantra-clear-btn.bs-mantra-visible {\n    display: inline-flex;\n}\n\n\/* Active search chip *\/\n.bs-mantra-active-filter {\n    max-width: 700px;\n    margin: -8px auto 16px;\n    font-size: 13px;\n    color: #555;\n    display: none;\n}\n.bs-mantra-active-filter.bs-mantra-visible {\n    display: block;\n}\n.bs-mantra-active-filter strong {\n    color: #a17f00;\n}\n\n\/* POST GRID *\/\n.bs-mantra-grid {\n    display: grid;\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n    gap: 12px;\n    min-height: 120px;\n    position: relative;\n}\n.bs-mantra-grid.bs-mantra-loading-state {\n    opacity: 0.5;\n    pointer-events: none;\n}\n\n\/* POST CARD *\/\n.bs-mantra-card {\n    display: flex;\n    align-items: center;\n    gap: 12px;\n    min-height: 92px;\n    padding: 9px;\n    box-sizing: border-box;\n    background: #fff;\n    border: 1px solid #e3e3e3;\n    border-radius: 12px;\n    text-decoration: none !important;\n    color: inherit !important;\n    box-shadow: 0 2px 7px rgba(0,0,0,0.07);\n    transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;\n}\n.bs-mantra-card:hover {\n    transform: translateY(-2px);\n    border-color: #e3b400;\n    box-shadow: 0 5px 14px rgba(0,0,0,0.13);\n}\n\n\/* IMAGE \u2014 fixed so nothing gets cropped\/cut off *\/\n.bs-mantra-image-wrap {\n    width: 105px;\n    height: 78px;\n    flex-shrink: 0;\n    border-radius: 8px;\n    background: #f7f2e2; \/* matches the cream tone of the fallback artwork *\/\n    overflow: hidden;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n}\n.bs-mantra-image {\n    width: 100%;\n    height: 100%;\n    \/* contain = whole image always visible, no cropping of logo\/text *\/\n    object-fit: contain;\n    display: block;\n}\n\n\/* CONTENT *\/\n.bs-mantra-content {\n    flex: 1;\n    min-width: 0;\n}\n.bs-mantra-title {\n    font-size: 18px;\n    font-weight: 700;\n    line-height: 1.35;\n    color: #222;\n    display: -webkit-box;\n    -webkit-line-clamp: 2;\n    -webkit-box-orient: vertical;\n    overflow: hidden;\n}\n.bs-mantra-category {\n    margin-top: 6px;\n    font-size: 12px;\n    color: #777;\n}\n\n\/* ARROW *\/\n.bs-mantra-arrow {\n    flex-shrink: 0;\n    width: 32px;\n    height: 32px;\n    border-radius: 50%;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    background: #e3b400;\n    color: #111;\n    font-size: 18px;\n    font-weight: bold;\n}\n\n\/* LOADING \/ SKELETON *\/\n.bs-mantra-loading {\n    text-align: center;\n    padding: 30px;\n    color: #777;\n    font-size: 15px;\n    grid-column: 1 \/ -1;\n}\n.bs-mantra-skeleton-card {\n    display: flex;\n    align-items: center;\n    gap: 12px;\n    min-height: 92px;\n    padding: 9px;\n    box-sizing: border-box;\n    background: #fff;\n    border: 1px solid #e3e3e3;\n    border-radius: 12px;\n}\n.bs-mantra-skeleton-img {\n    width: 105px;\n    height: 78px;\n    border-radius: 8px;\n    background: linear-gradient(90deg, #f0f0f0 25%, #f8f8f8 37%, #f0f0f0 63%);\n    background-size: 400% 100%;\n    animation: bsMantraShimmer 1.4s ease infinite;\n    flex-shrink: 0;\n}\n.bs-mantra-skeleton-lines {\n    flex: 1;\n}\n.bs-mantra-skeleton-line {\n    height: 12px;\n    border-radius: 6px;\n    background: linear-gradient(90deg, #f0f0f0 25%, #f8f8f8 37%, #f0f0f0 63%);\n    background-size: 400% 100%;\n    animation: bsMantraShimmer 1.4s ease infinite;\n    margin-bottom: 8px;\n}\n.bs-mantra-skeleton-line.short { width: 60%; }\n@keyframes bsMantraShimmer {\n    0% { background-position: 100% 50%; }\n    100% { background-position: 0 50%; }\n}\n\n\/* NO RESULTS *\/\n.bs-mantra-no-results {\n    text-align: center;\n    padding: 30px 15px;\n    background: #fff9df;\n    border-radius: 10px;\n    color: #555;\n    grid-column: 1 \/ -1;\n}\n\n\/* PAGINATION *\/\n.bs-mantra-pagination {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    gap: 10px;\n    margin-top: 20px;\n    flex-wrap: wrap;\n}\n.bs-mantra-pagination button {\n    height: 40px;\n    min-width: 40px;\n    padding: 0 14px;\n    border: 1px solid #ddd;\n    border-radius: 8px;\n    background: #fff;\n    color: #222;\n    font-size: 14px;\n    font-weight: 600;\n    cursor: pointer;\n    transition: border-color 0.2s ease, background 0.2s ease;\n}\n.bs-mantra-pagination button:hover:not(:disabled) {\n    border-color: #e3b400;\n}\n.bs-mantra-pagination button:disabled {\n    opacity: 0.4;\n    cursor: default;\n}\n.bs-mantra-pagination button.bs-mantra-page-active {\n    background: #e3b400;\n    border-color: #e3b400;\n    color: #111;\n}\n.bs-mantra-page-info {\n    font-size: 13px;\n    color: #777;\n    margin: 0 4px;\n}\n\n\/* MOBILE *\/\n@media (max-width: 700px) {\n    .bs-mantra-container { padding-left: 8px; padding-right: 8px; }\n    .bs-mantra-grid { grid-template-columns: 1fr; gap: 9px; }\n    .bs-mantra-card { min-height: 82px; padding: 8px; gap: 10px; border-radius: 10px; }\n    .bs-mantra-image-wrap { width: 82px; height: 65px; border-radius: 7px; }\n    .bs-mantra-title { font-size: 16px; line-height: 1.3; }\n    .bs-mantra-category { margin-top: 4px; font-size: 11px; }\n    .bs-mantra-arrow { width: 28px; height: 28px; font-size: 16px; }\n    .bs-mantra-header h1 { font-size: 24px; }\n    .bs-mantra-pagination button { height: 36px; min-width: 36px; padding: 0 10px; font-size: 13px; }\n    .bs-mantra-toolbar { justify-content: center; text-align: center; }\n    .bs-mantra-toolbar-actions { justify-content: center; width: 100%; }\n    .bs-mantra-sort-select { flex: 1; min-width: 0; }\n}\n\n@media (max-width: 380px) {\n    .bs-mantra-image-wrap { width: 72px; height: 58px; }\n    .bs-mantra-title { font-size: 15px; }\n    .bs-mantra-arrow { width: 25px; height: 25px; font-size: 14px; }\n}\n\n<\/style>\n\n\n<div class=\"bs-mantra-container\">\n\n    <div class=\"bs-mantra-header\">\n        <h1>\ud83d\ude4f \u092e\u0902\u0924\u094d\u0930 \u0938\u0902\u0917\u094d\u0930\u0939<\/h1>\n        <p>\u092d\u0915\u094d\u0924\u093f\u0917\u0940\u0924\u0947 \u0906\u0923\u093f \u092e\u0902\u0924\u094d\u0930<\/p>\n    <\/div>\n\n    <div class=\"bs-mantra-search\">\n        <input\n            type=\"search\"\n            id=\"bsMantraSearch\"\n            placeholder=\"\u092e\u0902\u0924\u094d\u0930 \u0936\u094b\u0927\u093e...\"\n            autocomplete=\"off\"\n        >\n        <button type=\"button\" id=\"bsMantraSearchBtn\" onclick=\"filterMantraPosts()\">\n            \ud83d\udd0d \u0936\u094b\u0927\u093e\n        <\/button>\n    <\/div>\n\n    <div class=\"bs-mantra-toolbar\">\n\n        <div class=\"bs-mantra-count\" id=\"bsMantraCount\">\n            \ud83d\ude4f \u092e\u0902\u0924\u094d\u0930 \u0932\u094b\u0921 \u0939\u094b\u0924 \u0906\u0939\u0947\u0924&#8230;\n        <\/div>\n\n        <div class=\"bs-mantra-toolbar-actions\">\n\n            <select class=\"bs-mantra-sort-select\" id=\"bsMantraSort\">\n                <option value=\"date_desc\">\ud83d\udd52 \u0928\u0935\u0940\u0928 \u0906\u0927\u0940<\/option>\n                <option value=\"date_asc\">\ud83d\udd52 \u091c\u0941\u0928\u0947 \u0906\u0927\u0940<\/option>\n                <option value=\"title_asc\">\ud83d\udd24 \u0905 \u0924\u0947 \u091c\u094d\u091e (A-Z)<\/option>\n                <option value=\"title_desc\">\ud83d\udd24 \u091c\u094d\u091e \u0924\u0947 \u0905 (Z-A)<\/option>\n            <\/select>\n\n            <button type=\"button\" class=\"bs-mantra-clear-btn\" id=\"bsMantraClearBtn\" onclick=\"bsMantraClearFilters()\">\n                \u2715 \u092b\u093f\u0932\u094d\u091f\u0930 \u0938\u093e\u092b \u0915\u0930\u093e\n            <\/button>\n\n        <\/div>\n\n    <\/div>\n\n    <div class=\"bs-mantra-active-filter\" id=\"bsMantraActiveFilter\"><\/div>\n\n    <div id=\"bsMantraPosts\" class=\"bs-mantra-grid\"><\/div>\n\n    <div id=\"bsMantraPagination\" class=\"bs-mantra-pagination\" style=\"display:none;\"><\/div>\n\n<\/div>\n\n\n<script>\n\n(function () {\n\n    \"use strict\";\n\n    \/* ==========================\n       CONFIG\n       ========================== *\/\n\n    const API_URL = \"\/Bhajan_Sangrah\/wp-json\/wp\/v2\/posts\";\n    const MANTRA_CATEGORY_ID = 263;\n    const POSTS_PER_PAGE = 10;\n    const FALLBACK_IMAGE =\n        \"https:\/\/raigadexplore.in\/Bhajan_Sangrah\/wp-content\/uploads\/2024\/03\/Stotra-and-Mantras.jpeg\";\n\n    const postsContainer = document.getElementById(\"bsMantraPosts\");\n    const paginationContainer = document.getElementById(\"bsMantraPagination\");\n    const searchInput = document.getElementById(\"bsMantraSearch\");\n    const searchBtn = document.getElementById(\"bsMantraSearchBtn\");\n    const countEl = document.getElementById(\"bsMantraCount\");\n    const sortSelect = document.getElementById(\"bsMantraSort\");\n    const clearBtn = document.getElementById(\"bsMantraClearBtn\");\n    const activeFilterEl = document.getElementById(\"bsMantraActiveFilter\");\n\n    \/\/ sort value -> { orderby, order } for the WP REST API\n    const SORT_MAP = {\n        date_desc:  { orderby: \"date\",  order: \"desc\" },\n        date_asc:   { orderby: \"date\",  order: \"asc\"  },\n        title_asc:  { orderby: \"title\", order: \"asc\"  },\n        title_desc: { orderby: \"title\", order: \"desc\" }\n    };\n    const DEFAULT_SORT = \"date_desc\";\n\n    let currentPage = 1;\n    let totalPages = 1;\n    let totalPosts = 0;\n    let currentSearch = \"\";\n    let currentSort = DEFAULT_SORT;\n    let requestToken = 0; \/\/ guards against out-of-order responses when clicking fast\n\n    \/* ==========================\n       SKELETON WHILE LOADING\n       ========================== *\/\n\n    function renderSkeleton() {\n        let html = \"\";\n        for (let i = 0; i < POSTS_PER_PAGE; i++) {\n            html += `\n                <div class=\"bs-mantra-skeleton-card\">\n                    <div class=\"bs-mantra-skeleton-img\"><\/div>\n                    <div class=\"bs-mantra-skeleton-lines\">\n                        <div class=\"bs-mantra-skeleton-line\"><\/div>\n                        <div class=\"bs-mantra-skeleton-line short\"><\/div>\n                    <\/div>\n                <\/div>\n            `;\n        }\n        postsContainer.innerHTML = html;\n    }\n\n    \/* ==========================\n       LOAD POSTS (paginated)\n       ========================== *\/\n\n    async function loadMantraPosts(page) {\n\n        const myToken = ++requestToken;\n\n        renderSkeleton();\n        paginationContainer.style.display = \"none\";\n\n        try {\n\n            const sort = SORT_MAP[currentSort] || SORT_MAP[DEFAULT_SORT];\n\n            let url =\n                API_URL +\n                \"?categories=\" + MANTRA_CATEGORY_ID +\n                \"&per_page=\" + POSTS_PER_PAGE +\n                \"&page=\" + page +\n                \"&orderby=\" + sort.orderby +\n                \"&order=\" + sort.order +\n                \"&_embed\";\n\n            if (currentSearch) {\n                url += \"&search=\" + encodeURIComponent(currentSearch);\n            }\n\n            const response = await fetch(url);\n\n            \/\/ Ignore stale responses if a newer request has since been made\n            if (myToken !== requestToken) return;\n\n            if (response.status === 400) {\n                \/\/ WP returns 400 when requesting a page beyond available range\n                totalPosts = 0;\n                renderNoResults();\n                renderCount();\n                return;\n            }\n\n            if (!response.ok) {\n                throw new Error(\"Unable to load posts\");\n            }\n\n            totalPages = parseInt(response.headers.get(\"X-WP-TotalPages\"), 10) || 1;\n            totalPosts = parseInt(response.headers.get(\"X-WP-Total\"), 10) || 0;\n\n            const posts = await response.json();\n\n            if (myToken !== requestToken) return;\n\n            \/\/ TEMP DEBUG: open your browser's DevTools (F12) -> Console tab and\n            \/\/ check this output if images still don't show.\n            if (posts[0]) {\n                console.log(\"Mantra debug \u2014 post title:\", posts[0].title && posts[0].title.rendered);\n                console.log(\"Mantra debug \u2014 has _embedded object?\", !!posts[0]._embedded);\n                console.log(\"Mantra debug \u2014 wp:featuredmedia value:\", posts[0]._embedded && posts[0]._embedded[\"wp:featuredmedia\"]);\n            }\n\n            currentPage = page;\n            renderMantraPosts(posts);\n            renderPagination();\n            renderCount();\n            renderActiveFilterChip();\n\n        } catch (error) {\n\n            if (myToken !== requestToken) return;\n\n            console.error(\"Mantra loading error:\", error);\n\n            postsContainer.innerHTML = `\n                <div class=\"bs-mantra-no-results\">\n                    \u0938\u093e\u092e\u0917\u094d\u0930\u0940 \u0932\u094b\u0921 \u0915\u0930\u0924\u093e \u0906\u0932\u0940 \u0928\u093e\u0939\u0940.\n                    <br><br>\n                    \u0915\u0943\u092a\u092f\u093e \u092a\u0941\u0928\u094d\u0939\u093e \u092a\u094d\u0930\u092f\u0924\u094d\u0928 \u0915\u0930\u093e.\n                <\/div>\n            `;\n\n            countEl.textContent = \"\u26a0\ufe0f \u0938\u093e\u092e\u0917\u094d\u0930\u0940 \u0932\u094b\u0921 \u0915\u0930\u0924\u093e \u0906\u0932\u0940 \u0928\u093e\u0939\u0940\";\n        }\n    }\n\n    \/* ==========================\n       COUNT + ACTIVE FILTER CHIP\n       ========================== *\/\n\n    function renderCount() {\n        if (totalPosts === 0) {\n            countEl.innerHTML = `<strong>0<\/strong> \u092e\u0902\u0924\u094d\u0930 \u0938\u093e\u092a\u0921\u0932\u0947`;\n        } else {\n            countEl.innerHTML = `\u090f\u0915\u0942\u0923 <strong>${totalPosts}<\/strong> \u092e\u0902\u0924\u094d\u0930`;\n        }\n    }\n\n    function renderActiveFilterChip() {\n        const hasSearch = !!currentSearch;\n        const hasSort = currentSort !== DEFAULT_SORT;\n\n        if (!hasSearch && !hasSort) {\n            activeFilterEl.classList.remove(\"bs-mantra-visible\");\n            clearBtn.classList.remove(\"bs-mantra-visible\");\n            return;\n        }\n\n        const sortLabels = {\n            date_desc: \"\u0928\u0935\u0940\u0928\u0924\u092e \u0906\u0927\u0940\",\n            date_asc: \"\u091c\u0941\u0928\u0947 \u0906\u0927\u0940\",\n            title_asc: \"\u0905 \u0924\u0947 \u091c\u094d\u091e (A-Z)\",\n            title_desc: \"\u091c\u094d\u091e \u0924\u0947 \u0905 (Z-A)\"\n        };\n\n        let parts = [];\n        if (hasSearch) parts.push(`\u0936\u094b\u0927: <strong>\"${currentSearch}\"<\/strong>`);\n        if (hasSort) parts.push(`\u0915\u094d\u0930\u092e: <strong>${sortLabels[currentSort]}<\/strong>`);\n\n        activeFilterEl.innerHTML = \"\u0938\u0927\u094d\u092f\u093e\u091a\u0947 \u092b\u093f\u0932\u094d\u091f\u0930 \u2014 \" + parts.join(\" | \");\n        activeFilterEl.classList.add(\"bs-mantra-visible\");\n        clearBtn.classList.add(\"bs-mantra-visible\");\n    }\n\n    function renderNoResults() {\n        postsContainer.innerHTML = `\n            <div class=\"bs-mantra-no-results\">\n                \u0938\u0927\u094d\u092f\u093e \u0915\u094b\u0923\u0924\u0947\u0939\u0940 \u092e\u0902\u0924\u094d\u0930 \u0909\u092a\u0932\u092c\u094d\u0927 \u0928\u093e\u0939\u0940\u0924.\n            <\/div>\n        `;\n        paginationContainer.style.display = \"none\";\n    }\n\n    \/* ==========================\n       RENDER POSTS\n       ========================== *\/\n\n    function renderMantraPosts(posts) {\n\n        if (!posts.length) {\n            renderNoResults();\n            renderCount();\n            renderActiveFilterChip();\n            return;\n        }\n\n        postsContainer.innerHTML = posts.map(function (post) {\n\n            let imageURL = \"\";\n\n            const media =\n                post._embedded &&\n                post._embedded[\"wp:featuredmedia\"] &&\n                post._embedded[\"wp:featuredmedia\"][0];\n\n            \/\/ A valid media object won't have an error \"code\" property\n            if (media && !media.code) {\n                const sizes = media.media_details && media.media_details.sizes;\n                imageURL =\n                    (sizes && sizes.medium && sizes.medium.source_url) ||\n                    (sizes && sizes.thumbnail && sizes.thumbnail.source_url) ||\n                    media.source_url ||\n                    \"\";\n            }\n\n            if (!imageURL) {\n                imageURL = FALLBACK_IMAGE;\n            }\n\n            const title = post.title.rendered;\n            const postURL = post.link;\n\n            return `\n                <a class=\"bs-mantra-card\" href=\"${postURL}\">\n\n                    <div class=\"bs-mantra-image-wrap\">\n                        <img decoding=\"async\"\n                            class=\"bs-mantra-image\"\n                            src=\"${imageURL}\"\n                            alt=\"${title}\"\n                            loading=\"lazy\"\n                        >\n                    <\/div>\n\n                    <div class=\"bs-mantra-content\">\n                        <div class=\"bs-mantra-title\">${title}<\/div>\n                        <div class=\"bs-mantra-category\">\ud83d\udcc1 \u092e\u0902\u0924\u094d\u0930 \u0938\u0902\u0917\u094d\u0930\u0939<\/div>\n                    <\/div>\n\n                    <div class=\"bs-mantra-arrow\">\u203a<\/div>\n\n                <\/a>\n            `;\n\n        }).join(\"\");\n    }\n\n    \/* ==========================\n       PAGINATION UI\n       ========================== *\/\n\n    function renderPagination() {\n\n        if (totalPages <= 1) {\n            paginationContainer.style.display = \"none\";\n            return;\n        }\n\n        let html = \"\";\n\n        html += `<button ${currentPage === 1 ? \"disabled\" : \"\"} onclick=\"bsMantraGoToPage(${currentPage - 1})\">\u2039 \u092e\u093e\u0917\u0947<\/button>`;\n\n        \/\/ Show up to 5 page numbers centered on current page\n        let start = Math.max(1, currentPage - 2);\n        let end = Math.min(totalPages, start + 4);\n        start = Math.max(1, end - 4);\n\n        if (start > 1) {\n            html += `<button onclick=\"bsMantraGoToPage(1)\">1<\/button>`;\n            if (start > 2) html += `<span class=\"bs-mantra-page-info\">\u2026<\/span>`;\n        }\n\n        for (let p = start; p <= end; p++) {\n            html += `<button class=\"${p === currentPage ? \"bs-mantra-page-active\" : \"\"}\" onclick=\"bsMantraGoToPage(${p})\">${p}<\/button>`;\n        }\n\n        if (end < totalPages) {\n            if (end < totalPages - 1) html += `<span class=\"bs-mantra-page-info\">\u2026<\/span>`;\n            html += `<button onclick=\"bsMantraGoToPage(${totalPages})\">${totalPages}<\/button>`;\n        }\n\n        html += `<button ${currentPage === totalPages ? \"disabled\" : \"\"} onclick=\"bsMantraGoToPage(${currentPage + 1})\">\u092a\u0941\u0922\u0947 \u203a<\/button>`;\n\n        paginationContainer.innerHTML = html;\n        paginationContainer.style.display = \"flex\";\n    }\n\n    window.bsMantraGoToPage = function (page) {\n        if (page < 1 || page > totalPages || page === currentPage) return;\n        loadMantraPosts(page);\n        postsContainer.scrollIntoView({ behavior: \"smooth\", block: \"start\" });\n    };\n\n    \/* ==========================\n       SEARCH (server-side, resets to page 1)\n       ========================== *\/\n\n    let searchDebounceTimer = null;\n\n    window.filterMantraPosts = function () {\n        currentSearch = searchInput.value.trim();\n        loadMantraPosts(1);\n    };\n\n    searchInput.addEventListener(\"input\", function () {\n        clearTimeout(searchDebounceTimer);\n        searchDebounceTimer = setTimeout(filterMantraPosts, 400);\n    });\n\n    searchInput.addEventListener(\"keydown\", function (event) {\n        if (event.key === \"Enter\") {\n            event.preventDefault();\n            clearTimeout(searchDebounceTimer);\n            filterMantraPosts();\n        }\n    });\n\n    \/* ==========================\n       SORT (ascending \/ descending \/ alphabetical)\n       ========================== *\/\n\n    sortSelect.addEventListener(\"change\", function () {\n        currentSort = sortSelect.value;\n        loadMantraPosts(1);\n    });\n\n    \/* ==========================\n       CLEAR ALL FILTERS\n       ========================== *\/\n\n    window.bsMantraClearFilters = function () {\n        searchInput.value = \"\";\n        currentSearch = \"\";\n        sortSelect.value = DEFAULT_SORT;\n        currentSort = DEFAULT_SORT;\n        loadMantraPosts(1);\n    };\n\n    \/* ==========================\n       START\n       ========================== *\/\n\n    loadMantraPosts(1);\n\n})();\n\n<\/script>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<script async=\"\" src=\"https:\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\n<!-- raigadarticleads -->\n<ins class=\"adsbygoogle\" style=\"display:block\" data-ad-client=\"ca-pub-1846395547477616\" data-ad-slot=\"9116965249\" data-ad-format=\"auto\" data-full-width-responsive=\"true\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>\ud83d\ude4f \u092e\u0902\u0924\u094d\u0930 \u0938\u0902\u0917\u094d\u0930\u0939 \u092d\u0915\u094d\u0924\u093f\u0917\u0940\u0924\u0947 \u0906\u0923\u093f \u092e\u0902\u0924\u094d\u0930 \ud83d\udd0d \u0936\u094b\u0927\u093e \ud83d\ude4f \u092e\u0902\u0924\u094d\u0930 \u0932\u094b\u0921 \u0939\u094b\u0924 \u0906\u0939\u0947\u0924&#8230; \ud83d\udd52 \u0928\u0935\u0940\u0928 \u0906\u0927\u0940\ud83d\udd52 \u091c\u0941\u0928\u0947 \u0906\u0927\u0940\ud83d\udd24 \u0905 \u0924\u0947 \u091c\u094d\u091e (A-Z)\ud83d\udd24 \u091c\u094d\u091e \u0924\u0947 \u0905 (Z-A) \u2715 \u092b\u093f\u0932\u094d\u091f\u0930 \u0938\u093e\u092b \u0915\u0930\u093e<\/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-887","page","type-page","status-publish","hentry","entry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Stotra and Mantra - Bhajan Sangrah (\u092d\u091c\u0928 \u0938\u0902\u0917\u094d\u0930\u0939)<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/raigadexplore.in\/Bhajan_Sangrah\/stotra-and-mantra\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Stotra and Mantra - Bhajan Sangrah (\u092d\u091c\u0928 \u0938\u0902\u0917\u094d\u0930\u0939)\" \/>\n<meta property=\"og:description\" content=\"\ud83d\ude4f \u092e\u0902\u0924\u094d\u0930 \u0938\u0902\u0917\u094d\u0930\u0939 \u092d\u0915\u094d\u0924\u093f\u0917\u0940\u0924\u0947 \u0906\u0923\u093f \u092e\u0902\u0924\u094d\u0930 \ud83d\udd0d \u0936\u094b\u0927\u093e \ud83d\ude4f \u092e\u0902\u0924\u094d\u0930 \u0932\u094b\u0921 \u0939\u094b\u0924 \u0906\u0939\u0947\u0924&#8230; \ud83d\udd52 \u0928\u0935\u0940\u0928 \u0906\u0927\u0940\ud83d\udd52 \u091c\u0941\u0928\u0947 \u0906\u0927\u0940\ud83d\udd24 \u0905 \u0924\u0947 \u091c\u094d\u091e (A-Z)\ud83d\udd24 \u091c\u094d\u091e \u0924\u0947 \u0905 (Z-A) \u2715 \u092b\u093f\u0932\u094d\u091f\u0930 \u0938\u093e\u092b \u0915\u0930\u093e\" \/>\n<meta property=\"og:url\" content=\"https:\/\/raigadexplore.in\/Bhajan_Sangrah\/stotra-and-mantra\/\" \/>\n<meta property=\"og:site_name\" content=\"Bhajan Sangrah (\u092d\u091c\u0928 \u0938\u0902\u0917\u094d\u0930\u0939)\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-26T18:10:36+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/raigadexplore.in\\\/Bhajan_Sangrah\\\/stotra-and-mantra\\\/\",\"url\":\"https:\\\/\\\/raigadexplore.in\\\/Bhajan_Sangrah\\\/stotra-and-mantra\\\/\",\"name\":\"Stotra and Mantra - Bhajan Sangrah (\u092d\u091c\u0928 \u0938\u0902\u0917\u094d\u0930\u0939)\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/raigadexplore.in\\\/Bhajan_Sangrah\\\/#website\"},\"datePublished\":\"2024-04-08T09:21:10+00:00\",\"dateModified\":\"2026-09-26T18:10:36+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/raigadexplore.in\\\/Bhajan_Sangrah\\\/stotra-and-mantra\\\/#breadcrumb\"},\"inLanguage\":\"en\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/raigadexplore.in\\\/Bhajan_Sangrah\\\/stotra-and-mantra\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/raigadexplore.in\\\/Bhajan_Sangrah\\\/stotra-and-mantra\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/raigadexplore.in\\\/Bhajan_Sangrah\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Stotra and Mantra\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/raigadexplore.in\\\/Bhajan_Sangrah\\\/#website\",\"url\":\"https:\\\/\\\/raigadexplore.in\\\/Bhajan_Sangrah\\\/\",\"name\":\"Bhajan Sangrah (\u092d\u091c\u0928 \u0938\u0902\u0917\u094d\u0930\u0939)\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/raigadexplore.in\\\/Bhajan_Sangrah\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Stotra and Mantra - Bhajan Sangrah (\u092d\u091c\u0928 \u0938\u0902\u0917\u094d\u0930\u0939)","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/raigadexplore.in\/Bhajan_Sangrah\/stotra-and-mantra\/","og_locale":"en_US","og_type":"article","og_title":"Stotra and Mantra - Bhajan Sangrah (\u092d\u091c\u0928 \u0938\u0902\u0917\u094d\u0930\u0939)","og_description":"\ud83d\ude4f \u092e\u0902\u0924\u094d\u0930 \u0938\u0902\u0917\u094d\u0930\u0939 \u092d\u0915\u094d\u0924\u093f\u0917\u0940\u0924\u0947 \u0906\u0923\u093f \u092e\u0902\u0924\u094d\u0930 \ud83d\udd0d \u0936\u094b\u0927\u093e \ud83d\ude4f \u092e\u0902\u0924\u094d\u0930 \u0932\u094b\u0921 \u0939\u094b\u0924 \u0906\u0939\u0947\u0924&#8230; \ud83d\udd52 \u0928\u0935\u0940\u0928 \u0906\u0927\u0940\ud83d\udd52 \u091c\u0941\u0928\u0947 \u0906\u0927\u0940\ud83d\udd24 \u0905 \u0924\u0947 \u091c\u094d\u091e (A-Z)\ud83d\udd24 \u091c\u094d\u091e \u0924\u0947 \u0905 (Z-A) \u2715 \u092b\u093f\u0932\u094d\u091f\u0930 \u0938\u093e\u092b \u0915\u0930\u093e","og_url":"https:\/\/raigadexplore.in\/Bhajan_Sangrah\/stotra-and-mantra\/","og_site_name":"Bhajan Sangrah (\u092d\u091c\u0928 \u0938\u0902\u0917\u094d\u0930\u0939)","article_modified_time":"2026-09-26T18:10:36+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/raigadexplore.in\/Bhajan_Sangrah\/stotra-and-mantra\/","url":"https:\/\/raigadexplore.in\/Bhajan_Sangrah\/stotra-and-mantra\/","name":"Stotra and Mantra - Bhajan Sangrah (\u092d\u091c\u0928 \u0938\u0902\u0917\u094d\u0930\u0939)","isPartOf":{"@id":"https:\/\/raigadexplore.in\/Bhajan_Sangrah\/#website"},"datePublished":"2024-04-08T09:21:10+00:00","dateModified":"2026-09-26T18:10:36+00:00","breadcrumb":{"@id":"https:\/\/raigadexplore.in\/Bhajan_Sangrah\/stotra-and-mantra\/#breadcrumb"},"inLanguage":"en","potentialAction":[{"@type":"ReadAction","target":["https:\/\/raigadexplore.in\/Bhajan_Sangrah\/stotra-and-mantra\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/raigadexplore.in\/Bhajan_Sangrah\/stotra-and-mantra\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/raigadexplore.in\/Bhajan_Sangrah\/"},{"@type":"ListItem","position":2,"name":"Stotra and Mantra"}]},{"@type":"WebSite","@id":"https:\/\/raigadexplore.in\/Bhajan_Sangrah\/#website","url":"https:\/\/raigadexplore.in\/Bhajan_Sangrah\/","name":"Bhajan Sangrah (\u092d\u091c\u0928 \u0938\u0902\u0917\u094d\u0930\u0939)","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/raigadexplore.in\/Bhajan_Sangrah\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en"}]}},"rttpg_featured_image_url":null,"rttpg_author":{"display_name":false,"author_link":"https:\/\/raigadexplore.in\/Bhajan_Sangrah\/author\/admin\/"},"rttpg_comment":0,"rttpg_category":null,"rttpg_excerpt":"\ud83d\ude4f \u092e\u0902\u0924\u094d\u0930 \u0938\u0902\u0917\u094d\u0930\u0939 \u092d\u0915\u094d\u0924\u093f\u0917\u0940\u0924\u0947 \u0906\u0923\u093f \u092e\u0902\u0924\u094d\u0930 \ud83d\udd0d \u0936\u094b\u0927\u093e \ud83d\ude4f \u092e\u0902\u0924\u094d\u0930 \u0932\u094b\u0921 \u0939\u094b\u0924 \u0906\u0939\u0947\u0924&#8230; \ud83d\udd52 \u0928\u0935\u0940\u0928 \u0906\u0927\u0940\ud83d\udd52 \u091c\u0941\u0928\u0947 \u0906\u0927\u0940\ud83d\udd24 \u0905 \u0924\u0947 \u091c\u094d\u091e (A-Z)\ud83d\udd24 \u091c\u094d\u091e \u0924\u0947 \u0905 (Z-A) \u2715 \u092b\u093f\u0932\u094d\u091f\u0930 \u0938\u093e\u092b \u0915\u0930\u093e","_links":{"self":[{"href":"https:\/\/raigadexplore.in\/Bhajan_Sangrah\/wp-json\/wp\/v2\/pages\/887","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/raigadexplore.in\/Bhajan_Sangrah\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/raigadexplore.in\/Bhajan_Sangrah\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/raigadexplore.in\/Bhajan_Sangrah\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/raigadexplore.in\/Bhajan_Sangrah\/wp-json\/wp\/v2\/comments?post=887"}],"version-history":[{"count":16,"href":"https:\/\/raigadexplore.in\/Bhajan_Sangrah\/wp-json\/wp\/v2\/pages\/887\/revisions"}],"predecessor-version":[{"id":1712,"href":"https:\/\/raigadexplore.in\/Bhajan_Sangrah\/wp-json\/wp\/v2\/pages\/887\/revisions\/1712"}],"wp:attachment":[{"href":"https:\/\/raigadexplore.in\/Bhajan_Sangrah\/wp-json\/wp\/v2\/media?parent=887"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}