{"id":6007,"date":"2026-01-27T14:59:55","date_gmt":"2026-01-27T07:59:55","guid":{"rendered":"https:\/\/library.srru.ac.th\/?page_id=6007"},"modified":"2026-02-16T10:51:58","modified_gmt":"2026-02-16T03:51:58","slug":"%e0%b8%9b%e0%b8%8f%e0%b8%b4%e0%b8%97%e0%b8%b4%e0%b8%99%e0%b8%82%e0%b9%88%e0%b8%b2%e0%b8%a7-%e0%b8%ab%e0%b9%89%e0%b8%ad%e0%b8%87%e0%b8%aa%e0%b8%a1%e0%b8%b8%e0%b8%94","status":"publish","type":"page","link":"https:\/\/library.srru.ac.th\/?page_id=6007","title":{"rendered":"\u0e1b\u0e0f\u0e34\u0e17\u0e34\u0e19\u0e02\u0e48\u0e32\u0e27 | \u0e2b\u0e49\u0e2d\u0e07\u0e2a\u0e21\u0e38\u0e14"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"6007\" class=\"elementor elementor-6007\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0ce2ab6 e-flex e-con-boxed e-con e-parent\" data-id=\"0ce2ab6\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a000b82 elementor-widget elementor-widget-html\" data-id=\"a000b82\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"th\">\r\n<head>\r\n    <meta charset=\"UTF-8\">\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n    <title>\u0e1b\u0e0f\u0e34\u0e17\u0e34\u0e19\u0e02\u0e48\u0e32\u0e27\u0e1b\u0e23\u0e30\u0e0a\u0e32\u0e2a\u0e31\u0e21\u0e1e\u0e31\u0e19\u0e18\u0e4c \u0e2b\u0e49\u0e2d\u0e07\u0e2a\u0e21\u0e38\u0e14 \u0e2a\u0e33\u0e19\u0e31\u0e01\u0e27\u0e34\u0e17\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e2f \u0e21\u0e23\u0e20.\u0e2a\u0e38\u0e23\u0e34\u0e19\u0e17\u0e23\u0e4c<\/title>\r\n    \r\n    <!-- Tailwind CSS -->\r\n    <script src=\"https:\/\/cdn.tailwindcss.com\"><\/script>\r\n    \r\n    <!-- FullCalendar CSS & JS -->\r\n    <script src=\"https:\/\/cdn.jsdelivr.net\/npm\/fullcalendar@6.1.10\/index.global.min.js\"><\/script>\r\n    \r\n    <!-- Google Fonts: Sarabun -->\r\n    <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Sarabun:wght@300;400;500;600&display=swap\" rel=\"stylesheet\">\r\n\r\n    <style>\r\n        body {\r\n            font-family: 'Sarabun', sans-serif;\r\n            background-color: #f8fafc;\r\n            color: #334155;\r\n        }\r\n        \r\n        \/* Header Styling *\/\r\n        .header-title {\r\n            color: #6d28d9; \/* Purple-700 *\/\r\n            font-size: 1.5rem;\r\n            font-weight: 600;\r\n            line-height: 1.4;\r\n        }\r\n        \r\n        \/* Calendar Container *\/\r\n        .calendar-wrapper {\r\n            background: #ffffff;\r\n            border-radius: 16px;\r\n            box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);\r\n            border: 1px solid #e2e8f0;\r\n            padding: 24px;\r\n            overflow: hidden;\r\n        }\r\n\r\n        \/* FullCalendar Customization *\/\r\n        .fc {\r\n            --fc-border-color: #e2e8f0;\r\n            --fc-button-bg-color: #7c3aed;\r\n            --fc-button-border-color: #7c3aed;\r\n            --fc-button-hover-bg-color: #6d28d9;\r\n            --fc-button-hover-border-color: #6d28d9;\r\n            --fc-today-bg-color: #f3e8ff;\r\n            --fc-event-bg-color: #059669;\r\n            --fc-event-border-color: #059669;\r\n        }\r\n\r\n        .fc-toolbar-title {\r\n            font-size: 1.25rem !important;\r\n            font-weight: 600 !important;\r\n            color: #1e293b;\r\n        }\r\n\r\n        .fc-button {\r\n            font-family: 'Sarabun', sans-serif !important;\r\n            font-weight: 500 !important;\r\n            border-radius: 8px !important;\r\n            padding: 8px 16px !important;\r\n            text-transform: capitalize;\r\n            box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);\r\n        }\r\n\r\n        \/* Event Styling *\/\r\n        .fc-event {\r\n            cursor: pointer;\r\n            border: none !important;\r\n            padding: 4px 8px;\r\n            font-size: 0.85rem;\r\n            border-radius: 6px;\r\n            transition: all 0.2s ease;\r\n            box-shadow: 0 1px 2px rgba(0,0,0,0.1);\r\n        }\r\n        \r\n        .fc-event:hover {\r\n            transform: translateY(-1px);\r\n            box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);\r\n            filter: brightness(1.05);\r\n        }\r\n\r\n        .event-news {\r\n            background-color: #10b981 !important; \/* Emerald 500 *\/\r\n            color: white !important;\r\n            border-left: 4px solid #047857 !important; \/* Emerald 700 *\/\r\n        }\r\n\r\n        \/* List View Styling *\/\r\n        .fc-list-event:hover td {\r\n            background-color: #f0fdf4 !important;\r\n        }\r\n        .fc-list-day-cushion {\r\n            background-color: #f1f5f9 !important;\r\n        }\r\n        .fc-list-event-title a {\r\n            color: #334155 !important;\r\n            text-decoration: none !important;\r\n            font-weight: 500;\r\n        }\r\n        .fc-list-event-dot {\r\n            border-color: #10b981 !important;\r\n        }\r\n\r\n        \/* Loading Overlay *\/\r\n        .loading-overlay {\r\n            position: absolute;\r\n            top: 0; left: 0; right: 0; bottom: 0;\r\n            background: rgba(255, 255, 255, 0.9);\r\n            backdrop-filter: blur(2px);\r\n            display: flex;\r\n            flex-direction: column;\r\n            justify-content: center;\r\n            align-items: center;\r\n            z-index: 50;\r\n            border-radius: 16px;\r\n        }\r\n\r\n        \/* Tooltip *\/\r\n        #calendar-tooltip {\r\n            position: fixed;\r\n            z-index: 9999;\r\n            background: #1e293b;\r\n            color: white;\r\n            padding: 8px 12px;\r\n            border-radius: 6px;\r\n            font-size: 0.8rem;\r\n            max-width: 300px;\r\n            pointer-events: none;\r\n            display: none;\r\n            box-shadow: 0 4px 6px rgba(0,0,0,0.1);\r\n            line-height: 1.4;\r\n        }\r\n    <\/style>\r\n<\/head>\r\n<body class=\"p-4 md:p-8 min-h-screen\">\r\n\r\n    <div class=\"max-w-6xl mx-auto\">\r\n        <!-- Header Section -->\r\n        <div class=\"flex flex-col md:flex-row justify-between items-start md:items-center mb-6 gap-4\">\r\n            <div>\r\n                <h1 class=\"header-title flex items-center gap-2\">\r\n                    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"h-8 w-8 text-purple-600\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\r\n                        <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M19 20H5a2 2 0 01-2-2V6a2 2 0 012-2h10a2 2 0 012 2v1m2 13a2 2 0 01-2-2V7m2 13a2 2 0 002-2V9a2 2 0 00-2-2h-2m-4-3H9M7 16h6M7 8h6v4H7V8z\" \/>\r\n                    <\/svg>\r\n                    \u0e1b\u0e0f\u0e34\u0e17\u0e34\u0e19\u0e02\u0e48\u0e32\u0e27\u0e1b\u0e23\u0e30\u0e0a\u0e32\u0e2a\u0e31\u0e21\u0e1e\u0e31\u0e19\u0e18\u0e4c\r\n                <\/h1>\r\n                <p class=\"text-slate-500 text-sm mt-1 ml-10\">\u0e2b\u0e49\u0e2d\u0e07\u0e2a\u0e21\u0e38\u0e14 \u0e2a\u0e33\u0e19\u0e31\u0e01\u0e27\u0e34\u0e17\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e41\u0e25\u0e30\u0e40\u0e17\u0e04\u0e42\u0e19\u0e42\u0e25\u0e22\u0e35\u0e2a\u0e32\u0e23\u0e2a\u0e19\u0e40\u0e17\u0e28 \u0e21\u0e23\u0e20.\u0e2a\u0e38\u0e23\u0e34\u0e19\u0e17\u0e23\u0e4c<\/p>\r\n            <\/div>\r\n            \r\n            <button onclick=\"location.reload()\" class=\"group flex items-center gap-2 px-4 py-2 bg-white border border-slate-200 rounded-lg text-sm text-slate-600 hover:bg-slate-50 hover:text-purple-600 hover:border-purple-200 transition-all shadow-sm\">\r\n                <svg class=\"w-4 h-4 group-hover:rotate-180 transition-transform duration-500\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n                    <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15\"><\/path>\r\n                <\/svg>\r\n                \u0e23\u0e35\u0e40\u0e1f\u0e23\u0e0a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\r\n            <\/button>\r\n        <\/div>\r\n        \r\n        <!-- Calendar Section -->\r\n        <div class=\"calendar-wrapper relative min-h-[650px]\">\r\n            \r\n            <!-- Error Notification Area -->\r\n            <div id=\"error-container\" class=\"mb-4 hidden\"><\/div>\r\n\r\n            <!-- Loading State -->\r\n            <div id=\"loading\" class=\"loading-overlay\">\r\n                <div class=\"flex flex-col items-center\">\r\n                    <div class=\"animate-spin rounded-full h-10 w-10 border-t-2 border-b-2 border-purple-600 mb-3\"><\/div>\r\n                    <p class=\"text-slate-600 font-medium text-sm\">\u0e01\u0e33\u0e25\u0e31\u0e07\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 (\u0e14\u0e36\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e22\u0e49\u0e2d\u0e19\u0e2b\u0e25\u0e31\u0e07)...<\/p>\r\n                <\/div>\r\n            <\/div>\r\n\r\n            <!-- Calendar Element -->\r\n            <div id=\"calendar\"><\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!-- Tooltip Element -->\r\n    <div id=\"calendar-tooltip\"><\/div>\r\n\r\n    <script>\r\n        document.addEventListener('DOMContentLoaded', function() {\r\n            const calendarEl = document.getElementById('calendar');\r\n            const loader = document.getElementById('loading');\r\n            const errorContainer = document.getElementById('error-container');\r\n            const tooltip = document.getElementById('calendar-tooltip');\r\n\r\n            \/\/ \u0e1f\u0e31\u0e07\u0e01\u0e4c\u0e0a\u0e31\u0e19\u0e41\u0e2a\u0e14\u0e07 Error \u0e17\u0e35\u0e48\u0e14\u0e39\u0e40\u0e1b\u0e47\u0e19\u0e17\u0e32\u0e07\u0e01\u0e32\u0e23\r\n            const showError = (message) => {\r\n                errorContainer.innerHTML = `\r\n                    <div class=\"bg-red-50 border border-red-200 text-red-700 px-4 py-3 rounded-lg flex items-center gap-3\" role=\"alert\">\r\n                        <svg class=\"w-5 h-5 flex-shrink-0\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"><\/path><\/svg>\r\n                        <div>\r\n                            <strong class=\"font-medium\">\u0e02\u0e2d\u0e2d\u0e20\u0e31\u0e22:<\/strong>\r\n                            <span class=\"text-sm\">${message}<\/span>\r\n                        <\/div>\r\n                    <\/div>\r\n                `;\r\n                errorContainer.classList.remove('hidden');\r\n            };\r\n\r\n            \/\/ \u0e1f\u0e31\u0e07\u0e01\u0e4c\u0e0a\u0e31\u0e19\u0e41\u0e1b\u0e25\u0e07\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e43\u0e2b\u0e49\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22\u0e02\u0e36\u0e49\u0e19 (\u0e23\u0e2d\u0e07\u0e23\u0e31\u0e1a Safari\/Old Browsers)\r\n            const safeDateParse = (dateStr) => {\r\n                \/\/ \u0e01\u0e23\u0e13\u0e35 rss2json \u0e2a\u0e48\u0e07\u0e21\u0e32\u0e40\u0e1b\u0e47\u0e19 \"YYYY-MM-DD HH:mm:ss\" \u0e43\u0e2b\u0e49\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e40\u0e1b\u0e47\u0e19 \"YYYY-MM-DDTHH:mm:ss\"\r\n                if (typeof dateStr === 'string') {\r\n                    return new Date(dateStr.replace(' ', 'T'));\r\n                }\r\n                return new Date();\r\n            };\r\n\r\n            const calendar = new FullCalendar.Calendar(calendarEl, {\r\n                initialView: 'dayGridMonth',\r\n                locale: 'th', \/\/ \u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e20\u0e32\u0e29\u0e32\u0e44\u0e17\u0e22\r\n                headerToolbar: {\r\n                    left: 'prev,next today',\r\n                    center: 'title',\r\n                    right: 'dayGridMonth,listMonth'\r\n                },\r\n                buttonText: {\r\n                    today: '\u0e27\u0e31\u0e19\u0e19\u0e35\u0e49',\r\n                    month: '\u0e23\u0e32\u0e22\u0e40\u0e14\u0e37\u0e2d\u0e19',\r\n                    list: '\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e02\u0e48\u0e32\u0e27'\r\n                },\r\n                \r\n                \/\/ \u0e01\u0e32\u0e23\u0e14\u0e36\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 Events \u0e41\u0e1a\u0e1a\u0e2b\u0e25\u0e32\u0e22\u0e2b\u0e19\u0e49\u0e32 (Pagination)\r\n                events: function(fetchInfo, successCallback, failureCallback) {\r\n                    loader.style.display = 'flex';\r\n                    errorContainer.classList.add('hidden');\r\n                    \r\n                    const rssBaseUrl = 'https:\/\/library.srru.ac.th\/?cat=13&feed=rss2';\r\n                    \r\n                    \/\/ \u0e01\u0e33\u0e2b\u0e19\u0e14\u0e08\u0e33\u0e19\u0e27\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e17\u0e35\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e14\u0e36\u0e07 (\u0e40\u0e0a\u0e48\u0e19 5 \u0e2b\u0e19\u0e49\u0e32\u0e25\u0e48\u0e32\u0e2a\u0e38\u0e14)\r\n                    \/\/ \u0e22\u0e34\u0e48\u0e07\u0e40\u0e22\u0e2d\u0e30\u0e22\u0e34\u0e48\u0e07\u0e44\u0e14\u0e49\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e40\u0e01\u0e48\u0e32 \u0e41\u0e15\u0e48\u0e08\u0e30\u0e42\u0e2b\u0e25\u0e14\u0e19\u0e32\u0e19\u0e02\u0e36\u0e49\u0e19\r\n                    const pagesToFetch = [1, 2, 3, 4, 5]; \r\n                    \r\n                    \/\/ \u0e2a\u0e23\u0e49\u0e32\u0e07 Request \u0e2b\u0e25\u0e32\u0e22\u0e15\u0e31\u0e27\u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e01\u0e31\u0e19\r\n                    const fetchPromises = pagesToFetch.map(page => {\r\n                        const pagedUrl = `${rssBaseUrl}&paged=${page}`;\r\n                        \/\/ \u0e43\u0e0a\u0e49 rss2json \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e41\u0e1b\u0e25\u0e07 RSS \u0e40\u0e1b\u0e47\u0e19 JSON\r\n                        const apiUrl = `https:\/\/api.rss2json.com\/v1\/api.json?rss_url=${encodeURIComponent(pagedUrl)}`;\r\n                        \r\n                        return fetch(apiUrl)\r\n                            .then(response => {\r\n                                if (!response.ok) return null; \/\/ \u0e16\u0e49\u0e32\u0e2b\u0e19\u0e49\u0e32\u0e44\u0e2b\u0e19\u0e1e\u0e31\u0e07 \u0e43\u0e2b\u0e49 return null\r\n                                return response.json();\r\n                            })\r\n                            .catch(e => null); \/\/ ignore error per page\r\n                    });\r\n\r\n                    Promise.all(fetchPromises)\r\n                        .then(results => {\r\n                            let allItems = [];\r\n                            let hasAnySuccess = false;\r\n\r\n                            results.forEach(data => {\r\n                                if (data && data.status === 'ok' && data.items) {\r\n                                    allItems = allItems.concat(data.items);\r\n                                    hasAnySuccess = true;\r\n                                }\r\n                            });\r\n\r\n                            if (!hasAnySuccess) {\r\n                                throw new Error(\"\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e14\u0e36\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e02\u0e48\u0e32\u0e27\u0e44\u0e14\u0e49\u0e08\u0e32\u0e01\u0e17\u0e38\u0e01\u0e2b\u0e19\u0e49\u0e32 (\u0e2d\u0e32\u0e08\u0e40\u0e01\u0e34\u0e14\u0e08\u0e32\u0e01\u0e1b\u0e31\u0e0d\u0e2b\u0e32\u0e40\u0e04\u0e23\u0e37\u0e2d\u0e02\u0e48\u0e32\u0e22)\");\r\n                            }\r\n\r\n                            if (allItems.length === 0) {\r\n                                showError(\"\u0e44\u0e21\u0e48\u0e1e\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e02\u0e48\u0e32\u0e27\u0e1b\u0e23\u0e30\u0e0a\u0e32\u0e2a\u0e31\u0e21\u0e1e\u0e31\u0e19\u0e18\u0e4c\u0e43\u0e19\u0e0a\u0e48\u0e27\u0e07\u0e40\u0e27\u0e25\u0e32\u0e19\u0e35\u0e49\");\r\n                                successCallback([]);\r\n                                return;\r\n                            }\r\n\r\n                            \/\/ \u0e01\u0e23\u0e2d\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e0b\u0e49\u0e33 (Deduplicate) \u0e42\u0e14\u0e22\u0e43\u0e0a\u0e49 Link \u0e40\u0e1b\u0e47\u0e19\u0e15\u0e31\u0e27\u0e40\u0e0a\u0e47\u0e04\r\n                            \/\/ \u0e40\u0e1e\u0e23\u0e32\u0e30\u0e1a\u0e32\u0e07\u0e04\u0e23\u0e31\u0e49\u0e07 RSS \u0e2b\u0e19\u0e49\u0e32 2 \u0e2d\u0e32\u0e08\u0e0b\u0e49\u0e33\u0e01\u0e31\u0e1a\u0e2b\u0e19\u0e49\u0e32 1 \u0e44\u0e14\u0e49\u0e43\u0e19\u0e1a\u0e32\u0e07\u0e23\u0e30\u0e1a\u0e1a\r\n                            const uniqueItems = Array.from(new Map(allItems.map(item => [item.link, item])).values());\r\n\r\n                            const events = uniqueItems.map(item => {\r\n                                const startDate = safeDateParse(item.pubDate);\r\n                                return {\r\n                                    title: item.title,\r\n                                    start: startDate,\r\n                                    url: item.link,\r\n                                    extendedProps: {\r\n                                        description: item.description || \"\"\r\n                                    },\r\n                                    className: 'event-news',\r\n                                    allDay: true \/\/ \u0e41\u0e2a\u0e14\u0e07\u0e40\u0e15\u0e47\u0e21\u0e27\u0e31\u0e19\r\n                                };\r\n                            });\r\n\r\n                            successCallback(events);\r\n                        })\r\n                        .catch(error => {\r\n                            console.error('RSS Fetch error:', error);\r\n                            showError(`\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e14\u0e36\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e02\u0e48\u0e32\u0e27\u0e44\u0e14\u0e49: ${error.message}. \u0e01\u0e23\u0e38\u0e13\u0e32\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e2d\u0e34\u0e19\u0e40\u0e17\u0e2d\u0e23\u0e4c\u0e40\u0e19\u0e47\u0e15`);\r\n                            failureCallback(error);\r\n                        })\r\n                        .finally(() => {\r\n                            loader.style.display = 'none';\r\n                        });\r\n                },\r\n\r\n                \/\/ \u0e40\u0e21\u0e37\u0e48\u0e2d\u0e04\u0e25\u0e34\u0e01\u0e17\u0e35\u0e48\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\r\n                eventClick: function(info) {\r\n                    info.jsEvent.preventDefault(); \/\/ \u0e1b\u0e49\u0e2d\u0e07\u0e01\u0e31\u0e19\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34\u0e02\u0e2d\u0e07 Browser \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e40\u0e23\u0e32\u0e08\u0e30\u0e04\u0e38\u0e21\u0e40\u0e2d\u0e07\r\n                    if (info.event.url && info.event.url !== \"#\") {\r\n                        \/\/ \u0e40\u0e1b\u0e34\u0e14 Link \u0e43\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e40\u0e14\u0e34\u0e21 (Self) \u0e15\u0e32\u0e21\u0e17\u0e35\u0e48\u0e02\u0e2d\u0e21\u0e32\r\n                        window.location.href = info.event.url;\r\n                    }\r\n                },\r\n\r\n                \/\/ Tooltip Interaction\r\n                eventMouseEnter: function(info) {\r\n                    const desc = info.event.title;\r\n                    tooltip.innerHTML = `\r\n                        <div class=\"font-semibold border-b border-gray-600 pb-1 mb-1 text-yellow-300\">\u0e02\u0e48\u0e32\u0e27\u0e1b\u0e23\u0e30\u0e0a\u0e32\u0e2a\u0e31\u0e21\u0e1e\u0e31\u0e19\u0e18\u0e4c<\/div>\r\n                        <div class=\"text-white\">${desc}<\/div>\r\n                        <div class=\"mt-2 text-xs text-gray-300 italic\">\u0e04\u0e25\u0e34\u0e01\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e2d\u0e48\u0e32\u0e19\u0e23\u0e32\u0e22\u0e25\u0e30\u0e40\u0e2d\u0e35\u0e22\u0e14\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e40\u0e15\u0e34\u0e21<\/div>\r\n                    `;\r\n                    tooltip.style.display = 'block';\r\n                },\r\n                eventMouseMove: function(info) {\r\n                    \/\/ \u0e04\u0e33\u0e19\u0e27\u0e13\u0e15\u0e33\u0e41\u0e2b\u0e19\u0e48\u0e07\u0e44\u0e21\u0e48\u0e43\u0e2b\u0e49 Tooltip \u0e15\u0e01\u0e02\u0e2d\u0e1a\u0e08\u0e2d\r\n                    const x = info.jsEvent.clientX + 15;\r\n                    const y = info.jsEvent.clientY + 15;\r\n                    tooltip.style.left = x + 'px';\r\n                    tooltip.style.top = y + 'px';\r\n                },\r\n                eventMouseLeave: function() {\r\n                    tooltip.style.display = 'none';\r\n                },\r\n\r\n                \/\/ Config \u0e40\u0e1e\u0e34\u0e48\u0e21\u0e40\u0e15\u0e34\u0e21\r\n                dayMaxEvents: 2, \/\/ \u0e08\u0e33\u0e01\u0e31\u0e14\u0e08\u0e33\u0e19\u0e27\u0e19\u0e02\u0e48\u0e32\u0e27\u0e15\u0e48\u0e2d\u0e27\u0e31\u0e19\u0e44\u0e21\u0e48\u0e43\u0e2b\u0e49\u0e25\u0e49\u0e19\r\n                height: 'auto',\r\n                noEventsText: '\u0e44\u0e21\u0e48\u0e21\u0e35\u0e02\u0e48\u0e32\u0e27\u0e1b\u0e23\u0e30\u0e0a\u0e32\u0e2a\u0e31\u0e21\u0e1e\u0e31\u0e19\u0e18\u0e4c',\r\n                moreLinkText: '\u0e02\u0e48\u0e32\u0e27\u0e2d\u0e37\u0e48\u0e19 \u0e46'\r\n            });\r\n\r\n            calendar.render();\r\n        });\r\n    <\/script>\r\n<\/body>\r\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>\u0e1b\u0e0f\u0e34\u0e17\u0e34\u0e19\u0e02\u0e48\u0e32\u0e27\u0e1b\u0e23\u0e30\u0e0a\u0e32\u0e2a\u0e31\u0e21\u0e1e\u0e31\u0e19\u0e18\u0e4c \u0e2b\u0e49\u0e2d\u0e07\u0e2a\u0e21\u0e38\u0e14 \u0e2a\u0e33\u0e19\u0e31\u0e01\u0e27\u0e34\u0e17\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e2f \u0e21\u0e23\u0e20.\u0e2a [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_theme","meta":{"footnotes":""},"class_list":["post-6007","page","type-page","status-publish"],"_links":{"self":[{"href":"https:\/\/library.srru.ac.th\/index.php?rest_route=\/wp\/v2\/pages\/6007"}],"collection":[{"href":"https:\/\/library.srru.ac.th\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/library.srru.ac.th\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/library.srru.ac.th\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/library.srru.ac.th\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=6007"}],"version-history":[{"count":13,"href":"https:\/\/library.srru.ac.th\/index.php?rest_route=\/wp\/v2\/pages\/6007\/revisions"}],"predecessor-version":[{"id":6117,"href":"https:\/\/library.srru.ac.th\/index.php?rest_route=\/wp\/v2\/pages\/6007\/revisions\/6117"}],"wp:attachment":[{"href":"https:\/\/library.srru.ac.th\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6007"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}