{"id":1997,"date":"2026-07-20T15:49:14","date_gmt":"2026-07-20T15:49:14","guid":{"rendered":"https:\/\/fbs.vau.ac.lk\/pm\/?page_id=1997"},"modified":"2026-07-21T10:37:44","modified_gmt":"2026-07-21T10:37:44","slug":"1997-2","status":"publish","type":"page","link":"https:\/\/fbs.vau.ac.lk\/pm\/1997-2\/","title":{"rendered":"Club Activities"},"content":{"rendered":"\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>Faculty Club Events<\/title>\n<link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.4.0\/css\/all.min.css\">\n\n<style>\n    @import url('https:\/\/fonts.googleapis.com\/css2?family=Outfit:wght@300;400;500;600;700&family=Space+Grotesk:wght@400;500;600;700&display=swap');\n\n    \/* --- DESIGN SYSTEM --- *\/\n    :root {\n        --bg-dark: #f8fafc;\n        --bg-card: rgba(255, 255, 255, 0.7);\n        --bg-card-hover: #ffffff;\n        --border-color: rgba(15, 23, 42, 0.08);\n        --border-hover: rgba(37, 99, 235, 0.25);\n        --text-primary: #1e3a8a;\n        --text-secondary: #334155;\n        --text-muted: #64748b;\n        --accent-blue: #2563eb;\n        --accent-indigo: #4f46e5;\n        --accent-teal: #0d9488;\n        --accent-cyan: #0891b2;\n        --glass-blur: blur(20px) saturate(190%);\n        --transition-smooth: all 0.35s cubic-bezier(0.16, 1, 0.3, 1);\n    }\n\n    * {\n        margin: 0;\n        padding: 0;\n        box-sizing: border-box;\n    }\n\n    body {\n        background-color: var(--bg-dark);\n        color: var(--text-secondary);\n        font-family: 'Outfit', sans-serif;\n        min-height: 100vh;\n        overflow-x: hidden;\n        line-height: 1.5;\n    }\n\n    \/* Ambient glow backgrounds *\/\n    .ambient-bg {\n        position: fixed;\n        top: 0;\n        left: 0;\n        width: 100%;\n        height: 100%;\n        z-index: -1;\n        overflow: hidden;\n        pointer-events: none;\n    }\n\n    .blob {\n        position: absolute;\n        border-radius: 50%;\n        filter: blur(100px);\n        opacity: 0.15;\n        animation: float 25s infinite alternate ease-in-out;\n    }\n\n    .blob-1 {\n        top: -10%;\n        left: 10%;\n        width: 500px;\n        height: 500px;\n        background: radial-gradient(circle, rgba(79, 70, 229, 0.4) 0%, transparent 70%);\n    }\n\n    .blob-2 {\n        bottom: -10%;\n        right: 15%;\n        width: 600px;\n        height: 600px;\n        background: radial-gradient(circle, rgba(37, 99, 235, 0.4) 0%, transparent 70%);\n        animation-delay: -5s;\n        animation-duration: 30s;\n    }\n\n    .blob-3 {\n        top: 40%;\n        left: 50%;\n        transform: translate(-50%, -50%);\n        width: 450px;\n        height: 450px;\n        background: radial-gradient(circle, rgba(8, 145, 178, 0.4) 0%, transparent 70%);\n        animation-delay: -10s;\n        animation-duration: 20s;\n    }\n\n    @keyframes float {\n        0% {\n            transform: translate(0, 0) scale(1);\n        }\n\n        100% {\n            transform: translate(40px, 60px) scale(1.08);\n        }\n    }\n\n    \/* Scrollbar *\/\n    ::-webkit-scrollbar {\n        width: 8px;\n    }\n\n    ::-webkit-scrollbar-track {\n        background: var(--bg-dark);\n    }\n\n    ::-webkit-scrollbar-thumb {\n        background: rgba(15, 23, 42, 0.15);\n        border-radius: 4px;\n    }\n\n    ::-webkit-scrollbar-thumb:hover {\n        background: rgba(15, 23, 42, 0.3);\n    }\n\n    \/* Container *\/\n    .container {\n        max-width: 1400px;\n        margin: 0 auto;\n        padding: 2rem;\n    }\n\n    \/* --- FILTER BAR --- *\/\n    .filter-section {\n        margin-bottom: 1.5rem;\n        display: flex;\n        flex-direction: column;\n        align-items: center;\n        justify-content: center;\n        gap: 0.75rem;\n    }\n\n    .filter-label {\n        font-size: 0.8rem;\n        font-weight: 600;\n        text-transform: uppercase;\n        letter-spacing: 1px;\n        color: var(--text-muted);\n        white-space: nowrap;\n    }\n\n    .filter-bar {\n        display: flex;\n        gap: 0.5rem;\n        flex-wrap: wrap;\n        align-items: center;\n        justify-content: center;\n    }\n\n    .filter-bar button {\n        background: rgba(15, 23, 42, 0.03);\n        border: 1px solid var(--border-color);\n        color: var(--text-secondary);\n        padding: 0.45rem 1.2rem;\n        border-radius: 20px;\n        font-family: 'Outfit', sans-serif;\n        font-size: 0.85rem;\n        font-weight: 500;\n        cursor: pointer;\n        transition: var(--transition-smooth);\n    }\n\n    .filter-bar button:hover {\n        background: rgba(15, 23, 42, 0.06);\n        color: var(--text-primary);\n        border-color: rgba(15, 23, 42, 0.15);\n    }\n\n    .filter-bar button.active {\n        background: var(--text-primary);\n        color: #ffffff;\n        border-color: var(--text-primary);\n        font-weight: 600;\n        box-shadow: 0 4px 15px rgba(30, 58, 138, 0.2);\n    }\n\n    \/* --- GRID --- *\/\n    .news-grid {\n        display: grid;\n        grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));\n        gap: 2rem;\n    }\n\n    \/* --- CARDS --- *\/\n    .news-card {\n        background: var(--bg-card);\n        border: 1px solid var(--border-color);\n        border-radius: 20px;\n        overflow: hidden;\n        display: flex;\n        flex-direction: column;\n        backdrop-filter: var(--glass-blur);\n        -webkit-backdrop-filter: var(--glass-blur);\n        transition: var(--transition-smooth);\n        position: relative;\n        box-shadow: 0 8px 30px rgba(15, 23, 42, 0.04);\n        cursor: pointer;\n    }\n\n    .news-card:hover {\n        transform: translateY(-6px);\n        background: var(--bg-card-hover);\n        border-color: var(--border-hover);\n        box-shadow: 0 15px 35px rgba(15, 23, 42, 0.09), 0 0 20px rgba(37, 99, 235, 0.07);\n    }\n\n    .card-image {\n        position: relative;\n        width: 100%;\n        padding-top: 56.25%;\n        overflow: hidden;\n        background: #f1f5f9;\n    }\n\n    .card-image img,\n    .card-image .su-custom-gallery,\n    .card-image .su-custom-gallery img {\n        position: absolute;\n        top: 0;\n        left: 0;\n        width: 100% !important;\n        height: 100% !important;\n        object-fit: cover !important;\n        transition: transform 0.6s cubic-bezier(0.16, 1, 0.3, 1);\n    }\n\n    .news-card:hover .card-image img,\n    .news-card:hover .card-image .su-custom-gallery img {\n        transform: scale(1.06);\n    }\n\n    \/* Club badge over image *\/\n    .card-badge {\n        position: absolute;\n        top: 1rem;\n        left: 1rem;\n        padding: 0.3rem 0.85rem;\n        border-radius: 30px;\n        font-size: 0.75rem;\n        font-weight: 600;\n        letter-spacing: 0.5px;\n        backdrop-filter: blur(8px);\n        background: rgba(255, 255, 255, 0.88);\n        color: var(--text-primary);\n        border: 1px solid rgba(15, 23, 42, 0.08);\n        box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);\n        z-index: 2;\n    }\n\n    .card-content {\n        padding: 1.4rem 1.5rem;\n        display: flex;\n        flex-direction: column;\n        flex-grow: 1;\n        gap: 0.5rem;\n    }\n\n    .card-club {\n        font-size: 0.78rem;\n        font-weight: 700;\n        text-transform: uppercase;\n        letter-spacing: 0.8px;\n        color: var(--accent-blue);\n    }\n\n    .card-title {\n        font-size: 1.1rem;\n        font-weight: 700;\n        line-height: 1.4;\n        font-family: 'Space Grotesk', sans-serif;\n        color: var(--text-primary);\n        display: -webkit-box;\n        -webkit-line-clamp: 2;\n        -webkit-box-orient: vertical;\n        overflow: hidden;\n        transition: var(--transition-smooth);\n    }\n\n    .news-card:hover .card-title {\n        color: var(--accent-blue);\n    }\n\n    .card-date {\n        font-size: 0.82rem;\n        color: var(--text-muted);\n        font-weight: 500;\n    }\n\n    .card-description {\n        font-size: 0.88rem;\n        color: var(--text-secondary);\n        line-height: 1.6;\n        display: -webkit-box;\n        -webkit-line-clamp: 3;\n        -webkit-box-orient: vertical;\n        overflow: hidden;\n    }\n\n    .see-more-btn {\n        margin-top: auto;\n        padding-top: 0.6rem;\n        background: none !important;\n        border: none !important;\n        outline: none !important;\n        -webkit-appearance: none;\n        appearance: none;\n        color: var(--text-primary) !important;\n        font-family: 'Outfit', sans-serif;\n        font-size: 0.85rem;\n        font-weight: 700;\n        cursor: pointer;\n        display: flex;\n        align-items: center;\n        gap: 0.4rem;\n        align-self: flex-start;\n        transition: color 0.3s ease;\n        text-decoration: none !important;\n        box-shadow: none !important;\n    }\n\n    .see-more-btn:hover,\n    .see-more-btn:focus,\n    .see-more-btn:active,\n    .see-more-btn:visited {\n        color: var(--accent-blue) !important;\n        background: none !important;\n        border: none !important;\n        text-decoration: none !important;\n        box-shadow: none !important;\n        outline: none !important;\n    }\n\n    .see-more-btn i {\n        font-size: 0.75rem;\n        transition: transform 0.3s ease;\n    }\n\n    .news-card:hover .see-more-btn i {\n        transform: translateX(4px);\n    }\n\n    \/* --- NO RESULTS --- *\/\n    .no-results {\n        grid-column: 1 \/ -1;\n        display: flex;\n        flex-direction: column;\n        align-items: center;\n        justify-content: center;\n        text-align: center;\n        padding: 5rem 2rem;\n        background: var(--bg-card);\n        border: 1px solid var(--border-color);\n        border-radius: 20px;\n        backdrop-filter: var(--glass-blur);\n        gap: 1rem;\n        color: var(--text-muted);\n    }\n\n    \/* --- MODAL --- *\/\n    .modal-overlay {\n        position: fixed;\n        inset: 0;\n        background: rgba(15, 23, 42, 0.4);\n        backdrop-filter: blur(10px);\n        -webkit-backdrop-filter: blur(10px);\n        z-index: 200;\n        display: flex;\n        justify-content: center;\n        align-items: center;\n        padding: 2rem;\n        opacity: 0;\n        pointer-events: none;\n        transition: opacity 0.35s cubic-bezier(0.16, 1, 0.3, 1);\n    }\n\n    .modal-overlay.open {\n        opacity: 1;\n        pointer-events: auto;\n    }\n\n    .modal-content {\n        background: #ffffff;\n        border: 1px solid rgba(15, 23, 42, 0.08);\n        border-radius: 24px;\n        width: 100%;\n        max-width: 760px;\n        max-height: 88vh;\n        overflow-y: auto;\n        position: relative;\n        box-shadow: 0 25px 50px -12px rgba(15, 23, 42, 0.18);\n        transform: scale(0.95) translateY(15px);\n        transition: transform 0.35s cubic-bezier(0.16, 1, 0.3, 1);\n        display: flex;\n        flex-direction: column;\n    }\n\n    .modal-overlay.open .modal-content {\n        transform: scale(1) translateY(0);\n    }\n\n    .modal-close {\n        position: absolute;\n        top: 1.25rem;\n        right: 1.25rem;\n        width: 40px;\n        height: 40px;\n        border-radius: 50%;\n        background: rgba(255, 255, 255, 0.9);\n        border: 1px solid rgba(15, 23, 42, 0.08);\n        color: #0f172a;\n        display: flex;\n        justify-content: center;\n        align-items: center;\n        font-size: 1.1rem;\n        cursor: pointer;\n        z-index: 10;\n        transition: var(--transition-smooth);\n    }\n\n    .modal-close:hover {\n        background: var(--text-primary);\n        color: #ffffff;\n        transform: scale(1.05);\n    }\n\n    .modal-image {\n        display: none !important;\n    }\n\n    .modal-image img,\n    .modal-image .su-custom-gallery,\n    .modal-image .su-custom-gallery img {\n        width: 100% !important;\n        height: 320px !important;\n        object-fit: cover !important;\n        display: block !important;\n    }\n\n    .modal-body {\n        padding: 2rem;\n        display: flex;\n        flex-direction: column;\n        gap: 0.75rem;\n    }\n\n    .modal-club {\n        font-size: 0.78rem;\n        font-weight: 700;\n        text-transform: uppercase;\n        letter-spacing: 0.8px;\n        color: var(--accent-blue);\n    }\n\n    .modal-title {\n        font-size: 1.6rem;\n        font-weight: 700;\n        font-family: 'Space Grotesk', sans-serif;\n        color: var(--text-primary);\n        line-height: 1.3;\n    }\n\n    .modal-date {\n        font-size: 0.85rem;\n        color: var(--text-muted);\n        font-weight: 500;\n    }\n\n    .modal-deco-line {\n        height: 3px;\n        width: 70px;\n        border-radius: 20px;\n        background: linear-gradient(90deg, var(--accent-blue), var(--accent-indigo));\n        margin: 0.25rem 0;\n    }\n\n    .modal-description {\n        font-size: 0.97rem;\n        color: var(--text-secondary);\n        line-height: 1.8;\n    }\n\n    \/* --- RESPONSIVE --- *\/\n    @media (max-width: 900px) {\n        .container {\n            padding: 1.25rem;\n        }\n\n        .news-grid {\n            grid-template-columns: 1fr;\n            gap: 1.25rem;\n        }\n\n        .modal-overlay {\n            padding: 1rem;\n        }\n\n        .modal-title {\n            font-size: 1.3rem;\n        }\n\n        .modal-image,\n        .modal-image img,\n        .modal-image .su-custom-gallery,\n        .modal-image .su-custom-gallery img {\n            height: 220px !important;\n        }\n\n        .filter-section {\n            flex-direction: column;\n            align-items: center;\n        }\n    }\n<\/style>\n\n<!-- Ambient Glow Backdrop -->\n<div class=\"ambient-bg\" aria-hidden=\"true\">\n    <div class=\"blob blob-1\"><\/div>\n    <div class=\"blob blob-2\"><\/div>\n    <div class=\"blob blob-3\"><\/div>\n<\/div>\n\n<div class=\"container\">\n    <!-- Year Filter -->\n    <div class=\"filter-section\">\n        <span class=\"filter-label\">Year<\/span>\n        <div class=\"filter-bar\" id=\"yearFilters\">\n            <!-- Dynamically populated via JavaScript -->\n        <\/div>\n    <\/div>\n\n    <!-- Event Type Filter -->\n    <div class=\"filter-section\">\n        <span class=\"filter-label\">Event Type<\/span>\n        <div class=\"filter-bar\" id=\"eventTypeFilters\">\n            <!-- Dynamically populated via JavaScript -->\n        <\/div>\n    <\/div>\n\n    <!-- News Grid -->\n    <div class=\"news-grid\" id=\"newsGrid\"><\/div>\n<\/div>\n\n<!-- Modal Overlay -->\n<div class=\"modal-overlay\" id=\"eventModal\" onclick=\"closeModalOnOutsideClick(event)\">\n    <div class=\"modal-content\">\n        <button class=\"modal-close\" onclick=\"closeModal()\"><i class=\"fa-solid fa-xmark\"><\/i><\/button>\n        <div class=\"modal-image\" id=\"modalImage\"><\/div>\n        <div class=\"modal-body\">\n            <div class=\"modal-club\" id=\"modalClub\"><\/div>\n            <h2 class=\"modal-title\" id=\"modalTitle\"><\/h2>\n            <div class=\"modal-date\" id=\"modalDate\"><\/div>\n            <div class=\"modal-deco-line\"><\/div>\n            <div class=\"modal-description\" id=\"modalDescription\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n\n<script>\n    \/\/ COMPREHENSIVE DATA FROM BOTH SOURCES\n    const newsData = [\n        \/\/ ========== 2026 Events ==========\n\n        \/\/ {\n        \/\/     title: \"\",\n        \/\/     type: \"\",\n        \/\/     date: \"\",\n        \/\/     year: \"2026\",\n        \/\/     description: \"\",\n        \/\/     gallery: ``\n        \/\/ },\n        {\n            title: \"Memorial Plantation Day\",\n            type: \"Events\",\n            date: \"03 Feb 2026\",\n            year: \"2026\",\n            description: \"The Faculty of Business Studies honored the late Prof. A. Pushpanathan through a Plantation Day organized by the Project Management Club on 03rd February 2026. Held near the Project Management Building roundabout and the Nature and Herbal Park, the event symbolized sustainability and growth, serving as a living memorial to his enduring contributions and values at the University of Vavuniya.\",\n            gallery: `<div class=\"su-custom-gallery su-custom-gallery-align-left su-custom-gallery-title-hover su-lightbox-gallery\"><div class=\"su-custom-gallery-slide\" style=\"width:342px;height:185px\"><a href=\"https:\/\/fbs.vau.ac.lk\/pm\/wp-content\/uploads\/2026\/07\/Memorial-Plantation-Day-2.jpeg\" title=\"Memorial Plantation Day 2\"><img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/fbs.vau.ac.lk\/pm\/wp-content\/uploads\/2026\/07\/Memorial-Plantation-Day-2-342x185.jpeg\" alt=\"Memorial Plantation Day 2\" width=\"342\" height=\"185\" \/><span class=\"su-custom-gallery-title\">Memorial Plantation Day 2<\/span><\/a><\/div><div class=\"su-custom-gallery-slide\" style=\"width:342px;height:185px\"><a href=\"https:\/\/fbs.vau.ac.lk\/pm\/wp-content\/uploads\/2026\/07\/Memorial-Plantation-Day-1.jpeg\" title=\"Memorial Plantation Day 1\"><img decoding=\"async\" src=\"https:\/\/fbs.vau.ac.lk\/pm\/wp-content\/uploads\/2026\/07\/Memorial-Plantation-Day-1-342x185.jpeg\" alt=\"Memorial Plantation Day 1\" width=\"342\" height=\"185\" \/><span class=\"su-custom-gallery-title\">Memorial Plantation Day 1<\/span><\/a><\/div><div class=\"su-custom-gallery-slide\" style=\"width:342px;height:185px\"><a href=\"https:\/\/fbs.vau.ac.lk\/pm\/wp-content\/uploads\/2026\/07\/Memorial-Plantation-Day-3.jpeg\" title=\"Memorial Plantation Day 3\"><img decoding=\"async\" src=\"https:\/\/fbs.vau.ac.lk\/pm\/wp-content\/uploads\/2026\/07\/Memorial-Plantation-Day-3-342x185.jpeg\" alt=\"Memorial Plantation Day 3\" width=\"342\" height=\"185\" \/><span class=\"su-custom-gallery-title\">Memorial Plantation Day 3<\/span><\/a><\/div><div class=\"su-custom-gallery-slide\" style=\"width:342px;height:185px\"><a href=\"https:\/\/fbs.vau.ac.lk\/pm\/wp-content\/uploads\/2026\/07\/Memorial-Plantation-Day-4.jpeg\" title=\"Memorial Plantation Day 4\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/fbs.vau.ac.lk\/pm\/wp-content\/uploads\/2026\/07\/Memorial-Plantation-Day-4-342x185.jpeg\" alt=\"Memorial Plantation Day 4\" width=\"342\" height=\"185\" \/><span class=\"su-custom-gallery-title\">Memorial Plantation Day 4<\/span><\/a><\/div><div class=\"su-clear\"><\/div><\/div>`\n        },\n        {\n            title: \"Undergraduate Research Kickoff: Guidance for Beginners\",\n            type: \"Workshop\",\n            date: \"22 Jan 2026\",\n            year: \"2026\",\n            description: \"The Project Management Club of the University of Vavuniya conducted a workshop titled \u201cUndergraduate Research Kickoff: Guidance for Beginners\u201d on January 22, 2026, at PMH 2 for Project Management undergraduates. The session provided foundational guidance on undergraduate research, covering research scope, basic methods, ethics, and topic selection. Facilitated by Mr. G.R.M. Gamlath, Senior Lecturer at the University of Vavuniya, the workshop aimed to build students\u2019 confidence and research competencies, aligning with the department\u2019s vision to develop dynamic project leaders through learner-centric education.\",\n            gallery: `<div class=\"su-custom-gallery su-custom-gallery-align-left su-custom-gallery-title-hover su-lightbox-gallery\"><div class=\"su-custom-gallery-slide\" style=\"width:342px;height:185px\"><a href=\"https:\/\/fbs.vau.ac.lk\/pm\/wp-content\/uploads\/2026\/07\/Workshop-Research-Kickoff-1.jpeg\" title=\"Workshop \u2013 Research Kickoff 1\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/fbs.vau.ac.lk\/pm\/wp-content\/uploads\/2026\/07\/Workshop-Research-Kickoff-1-342x185.jpeg\" alt=\"Workshop \u2013 Research Kickoff 1\" width=\"342\" height=\"185\" \/><span class=\"su-custom-gallery-title\">Workshop &#8211; Research Kickoff 1<\/span><\/a><\/div><div class=\"su-custom-gallery-slide\" style=\"width:342px;height:185px\"><a href=\"https:\/\/fbs.vau.ac.lk\/pm\/wp-content\/uploads\/2026\/07\/Workshop-Research-Kickoff-2.jpeg\" title=\"Workshop \u2013 Research Kickoff 2\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/fbs.vau.ac.lk\/pm\/wp-content\/uploads\/2026\/07\/Workshop-Research-Kickoff-2-342x185.jpeg\" alt=\"Workshop \u2013 Research Kickoff 2\" width=\"342\" height=\"185\" \/><span class=\"su-custom-gallery-title\">Workshop &#8211; Research Kickoff 2<\/span><\/a><\/div><div class=\"su-clear\"><\/div><\/div>`\n        },\n        {\n            title: \"Integrating MEAL and Data Science for Effective Project Management\",\n            type: \"Webinar\",\n            date: \"19 Jan 2026\",\n            year: \"2026\",\n            description: \"On January 19th, 2026, the Project Management Club of the University of Vavuniya organized a professional webinar titled \u201cIntegrating MEAL and Data Science for Effective Project Management\u201d via Zoom for Project Management students of the Faculty of Business Studies. The session highlighted how integrating MEAL frameworks with data science enhances evidence-based decision-making, accountability, and project success. Led by Mr. Sudar Theepan of RTI International, the webinar aligned with the Department of Project Management\u2019s vision and aimed to strengthen students\u2019 competencies to manage projects effectively across diverse sectors.\",\n            gallery: `<div class=\"su-custom-gallery su-custom-gallery-align-left su-custom-gallery-title-hover su-lightbox-gallery\"><div class=\"su-custom-gallery-slide\" style=\"width:342px;height:185px\"><a href=\"https:\/\/fbs.vau.ac.lk\/pm\/wp-content\/uploads\/2026\/07\/image-1-4.jpg\" title=\"image 1 (4)\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/fbs.vau.ac.lk\/pm\/wp-content\/uploads\/2026\/07\/image-1-4-342x185.jpg\" alt=\"image 1 (4)\" width=\"342\" height=\"185\" \/><span class=\"su-custom-gallery-title\">image 1 (4)<\/span><\/a><\/div><div class=\"su-custom-gallery-slide\" style=\"width:342px;height:185px\"><a href=\"https:\/\/fbs.vau.ac.lk\/pm\/wp-content\/uploads\/2026\/07\/image-2-5.jpg\" title=\"image 2 (5)\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/fbs.vau.ac.lk\/pm\/wp-content\/uploads\/2026\/07\/image-2-5-342x185.jpg\" alt=\"image 2 (5)\" width=\"342\" height=\"185\" \/><span class=\"su-custom-gallery-title\">image 2 (5)<\/span><\/a><\/div><div class=\"su-clear\"><\/div><\/div>`\n        },\n        {\n            title: \"Corn selling\",\n            type: \"Fund Raising\",\n            date: \"13 Jan 2026\",\n            year: \"2026\",\n            description: \"The Project Management Club of the University of Vavuniya organized a fundraising event by selling sweet corn at the BS Canteen on January 13 from 10.00 AM to 12.30 PM. The initiative aimed to raise funds for future club activities while fostering interaction among students and staff. The event also provided students with hands-on experience in event planning and management, supporting the club\u2019s mission to develop dynamic project leaders through practical learning.\",\n            gallery: `<div class=\"su-custom-gallery su-custom-gallery-align-left su-custom-gallery-title-hover su-lightbox-gallery\"><div class=\"su-custom-gallery-slide\" style=\"width:342px;height:185px\"><a href=\"https:\/\/fbs.vau.ac.lk\/pm\/wp-content\/uploads\/2026\/07\/Fundraising-Corn-Selling-1.jpeg\" title=\"Fundraising \u2013 Corn Selling 1\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/fbs.vau.ac.lk\/pm\/wp-content\/uploads\/2026\/07\/Fundraising-Corn-Selling-1-342x185.jpeg\" alt=\"Fundraising \u2013 Corn Selling 1\" width=\"342\" height=\"185\" \/><span class=\"su-custom-gallery-title\">Fundraising &#8211; Corn Selling 1<\/span><\/a><\/div><div class=\"su-custom-gallery-slide\" style=\"width:342px;height:185px\"><a href=\"https:\/\/fbs.vau.ac.lk\/pm\/wp-content\/uploads\/2026\/07\/Fundraising-Corn-Selling-2.jpeg\" title=\"Fundraising \u2013 Corn Selling 2\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/fbs.vau.ac.lk\/pm\/wp-content\/uploads\/2026\/07\/Fundraising-Corn-Selling-2-342x185.jpeg\" alt=\"Fundraising \u2013 Corn Selling 2\" width=\"342\" height=\"185\" \/><span class=\"su-custom-gallery-title\">Fundraising &#8211; Corn Selling 2<\/span><\/a><\/div><div class=\"su-custom-gallery-slide\" style=\"width:342px;height:185px\"><a href=\"https:\/\/fbs.vau.ac.lk\/pm\/wp-content\/uploads\/2026\/07\/Fundraising-Corn-Selling-3.jpeg\" title=\"Fundraising \u2013 Corn Selling 3\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/fbs.vau.ac.lk\/pm\/wp-content\/uploads\/2026\/07\/Fundraising-Corn-Selling-3-342x185.jpeg\" alt=\"Fundraising \u2013 Corn Selling 3\" width=\"342\" height=\"185\" \/><span class=\"su-custom-gallery-title\">Fundraising &#8211; Corn Selling 3<\/span><\/a><\/div><div class=\"su-custom-gallery-slide\" style=\"width:342px;height:185px\"><a href=\"https:\/\/fbs.vau.ac.lk\/pm\/wp-content\/uploads\/2026\/07\/Fundraising-Corn-Selling-4.jpeg\" title=\"Fundraising \u2013 Corn Selling 4\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/fbs.vau.ac.lk\/pm\/wp-content\/uploads\/2026\/07\/Fundraising-Corn-Selling-4-342x185.jpeg\" alt=\"Fundraising \u2013 Corn Selling 4\" width=\"342\" height=\"185\" \/><span class=\"su-custom-gallery-title\">Fundraising &#8211; Corn Selling 4<\/span><\/a><\/div><div class=\"su-clear\"><\/div><\/div>`\n        }\n    ];\n\n    let activeYear = \"All\";\n    let activeType = \"All\";\n\n    \/\/ Cache DOM Elements to avoid repetitive document queries\n    const DOM = {\n        grid: document.getElementById(\"newsGrid\"),\n        yearFilters: document.getElementById(\"yearFilters\"),\n        typeFilters: document.getElementById(\"eventTypeFilters\"),\n        modal: document.getElementById(\"eventModal\"),\n        modalImage: document.getElementById(\"modalImage\"),\n        modalClub: document.getElementById(\"modalClub\"),\n        modalTitle: document.getElementById(\"modalTitle\"),\n        modalDate: document.getElementById(\"modalDate\"),\n        modalDescription: document.getElementById(\"modalDescription\")\n    };\n\n    \/\/ Helper to get type of event dynamically if not explicitly defined\n    function getEventType(item) {\n        if (item.type) return item.type;\n        const title = item.title.toLowerCase();\n        if (title.includes('seminar')) return 'Seminar';\n        if (title.includes('workshop')) return 'Workshop';\n        if (title.includes('webinar')) return 'Webinar';\n        if (title.includes('tournament') || title.includes('cricket') || title.includes('match') || title.includes('sports')) return 'Tournament';\n        if (title.includes('stall')) return 'Stall';\n        if (title.includes('exhibition') || title.includes('expo')) return 'Exhibition';\n        if (title.includes('campaign') || title.includes('camp')) return 'Campaign';\n        return 'Other';\n    }\n\n    \/\/ Pre-process newsData to avoid calculating originalIndex and eventType on every render\n    newsData.forEach((item, index) => {\n        item.originalIndex = index;\n        item.eventType = getEventType(item);\n    });\n\n    let isGridInitialized = false;\n\n    function renderNews() {\n        if (!isGridInitialized) {\n            \/\/ Initial render: output all HTML so slider plugins can initialize on the DOM elements\n            DOM.grid.innerHTML = newsData.map(item => `\n    <div class=\"news-card\" data-index=\"${item.originalIndex}\" onclick=\"openModal(${item.originalIndex})\">\n      <div class=\"card-image\">\n        ${item.gallery}\n        <div class=\"card-badge\">${item.eventType}<\/div>\n      <\/div>\n      <div class=\"card-content\">\n        <h3 class=\"card-title\">${item.title}<\/h3>\n        <div class=\"card-date\">${item.date}<\/div>\n        <div class=\"card-description\">${item.description}<\/div>\n        <button class=\"see-more-btn\" onclick=\"event.stopPropagation(); openModal(${item.originalIndex})\">\n          Read More <i class=\"fa-solid fa-arrow-right\"><\/i>\n        <\/button>\n      <\/div>\n    <\/div>\n  `).join(\"\") + `\n      <div class=\"no-results\" id=\"noResultsMsg\" style=\"display: none;\">\n        <h3>No events found for the selected filters<\/h3>\n        <p>Try selecting different year or event type filters<\/p>\n      <\/div>\n  `;\n            isGridInitialized = true;\n        }\n\n        let visibleCount = 0;\n        const cards = DOM.grid.querySelectorAll('.news-card');\n\n        cards.forEach(card => {\n            const index = parseInt(card.getAttribute('data-index'));\n            const item = newsData.find(i => i.originalIndex === index);\n\n            if (item) {\n                const matchYear = activeYear === \"All\" || item.year === activeYear;\n                const matchType = activeType === \"All\" || item.eventType === activeType;\n\n                if (matchYear && matchType) {\n                    card.style.display = 'flex';\n                    visibleCount++;\n                } else {\n                    card.style.display = 'none';\n                }\n            }\n        });\n\n        const noResults = document.getElementById('noResultsMsg');\n        if (noResults) {\n            noResults.style.display = visibleCount === 0 ? 'flex' : 'none';\n        }\n        \n        \/\/ Trigger resize to fix any slider layout issues after unhiding elements\n        setTimeout(() => {\n            window.dispatchEvent(new Event('resize'));\n        }, 50);\n\n        \/\/ Remove title attributes to prevent hover tooltips\n        setTimeout(() => {\n            DOM.grid.querySelectorAll('.card-image [title]').forEach(el => el.removeAttribute('title'));\n        }, 100);\n    }\n\n    function openModal(index) {\n        const item = newsData[index];\n        if (!item) return;\n\n        DOM.modalImage.innerHTML = item.gallery;\n\n        \/\/ Remove title attributes to prevent hover tooltips\n        setTimeout(() => {\n            DOM.modalImage.querySelectorAll('[title]').forEach(el => el.removeAttribute('title'));\n        }, 50);\n\n        DOM.modalClub.textContent = item.eventType;\n        DOM.modalTitle.textContent = item.title;\n        DOM.modalDate.textContent = item.date;\n        DOM.modalDescription.textContent = item.description;\n\n        DOM.modal.classList.add('open');\n        document.body.style.overflow = 'hidden';\n    }\n\n    function closeModal() {\n        DOM.modal.classList.remove('open');\n        document.body.style.overflow = '';\n    }\n\n    function closeModalOnOutsideClick(event) {\n        if (event.target === DOM.modal) {\n            closeModal();\n        }\n    }\n\n    function setupFilters() {\n        \/\/ Extract distinct years from newsData\n        const years = [\"All\", ...new Set(newsData.map(item => item.year))].sort((a, b) => {\n            if (a === \"All\") return -1;\n            if (b === \"All\") return 1;\n            return b - a;\n        });\n\n        DOM.yearFilters.innerHTML = years.map(year => `\n            <button class=\"${year === activeYear ? \"active\" : \"\"}\" onclick=\"setYear('${year}', event)\">${year}<\/button>\n        `).join(\"\");\n\n        updateEventTypeFilters();\n    }\n\n    function updateEventTypeFilters() {\n        \/\/ Filter newsData by activeYear to see which event types are currently available\n        const availableNews = newsData.filter(item => activeYear === \"All\" || item.year === activeYear);\n        const types = [\"All\", ...new Set(availableNews.map(item => item.eventType))].sort((a, b) => {\n            if (a === \"All\") return -1;\n            if (b === \"All\") return 1;\n            return a.localeCompare(b);\n        });\n\n        if (!types.includes(activeType)) {\n            activeType = \"All\";\n        }\n\n        DOM.typeFilters.innerHTML = types.map(type => `\n            <button class=\"${type === activeType ? \"active\" : \"\"}\" onclick=\"setEventType('${type}', event)\">${type}<\/button>\n        `).join(\"\");\n    }\n\n    function setYear(year, e) {\n        activeYear = year;\n        const buttons = DOM.yearFilters.querySelectorAll(\"button\");\n        buttons.forEach(b => b.classList.remove(\"active\"));\n        if (e && e.target) {\n            e.target.classList.add(\"active\");\n        } else {\n            for (const b of buttons) {\n                if (b.textContent === year) {\n                    b.classList.add(\"active\");\n                    break;\n                }\n            }\n        }\n        updateEventTypeFilters();\n        renderNews();\n    }\n\n    function setEventType(type, e) {\n        activeType = type;\n        const buttons = DOM.typeFilters.querySelectorAll(\"button\");\n        buttons.forEach(b => b.classList.remove(\"active\"));\n        if (e && e.target) {\n            e.target.classList.add(\"active\");\n        } else {\n            for (const b of buttons) {\n                if (b.textContent === type) {\n                    b.classList.add(\"active\");\n                    break;\n                }\n            }\n        }\n        renderNews();\n    }\n\n    \/\/ Close modal with Escape key\n    document.addEventListener('keydown', function(event) {\n        if (event.key === 'Escape' && DOM.modal.classList.contains('open')) {\n            closeModal();\n        }\n    });\n\n    \/\/ Initialize\n    setupFilters();\n    renderNews();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Faculty Club Events Year Event Type<\/p>\n","protected":false},"author":4,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"template-fullwidth.php","meta":{"footnotes":""},"class_list":["post-1997","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/fbs.vau.ac.lk\/pm\/wp-json\/wp\/v2\/pages\/1997","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fbs.vau.ac.lk\/pm\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/fbs.vau.ac.lk\/pm\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/fbs.vau.ac.lk\/pm\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/fbs.vau.ac.lk\/pm\/wp-json\/wp\/v2\/comments?post=1997"}],"version-history":[{"count":12,"href":"https:\/\/fbs.vau.ac.lk\/pm\/wp-json\/wp\/v2\/pages\/1997\/revisions"}],"predecessor-version":[{"id":2059,"href":"https:\/\/fbs.vau.ac.lk\/pm\/wp-json\/wp\/v2\/pages\/1997\/revisions\/2059"}],"wp:attachment":[{"href":"https:\/\/fbs.vau.ac.lk\/pm\/wp-json\/wp\/v2\/media?parent=1997"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}