{"id":3863,"date":"2026-07-31T14:36:32","date_gmt":"2026-07-31T07:36:32","guid":{"rendered":"https:\/\/agritech.kmitl.ac.th\/main\/?page_id=3863"},"modified":"2026-07-31T16:35:03","modified_gmt":"2026-07-31T09:35:03","slug":"academic-calendar","status":"publish","type":"page","link":"https:\/\/www.agri.kmitl.ac.th\/main\/en\/academic-calendar\/","title":{"rendered":"Academic calendar"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"3863\" class=\"elementor elementor-3863\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3b08fa8 e-flex e-con-boxed e-con e-parent\" data-id=\"3b08fa8\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b89edf8 elementor-widget elementor-widget-spacer\" data-id=\"b89edf8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-cab50a0 e-flex e-con-boxed e-con e-parent\" data-id=\"cab50a0\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2e6a782 elementor-widget elementor-widget-html\" data-id=\"2e6a782\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.5.2\/css\/all.min.css\">\r\n\r\n<div class=\"agri-breadcrumb\">\r\n  <a href=\"\/main\" class=\"agri-breadcrumb-item\">\r\n    <i class=\"fa-solid fa-house\"><\/i>\r\n    <span>\u0e2b\u0e19\u0e49\u0e32\u0e41\u0e23\u0e01<\/span>\r\n  <\/a>\r\n\r\n  <span class=\"agri-breadcrumb-separator\">\r\n    <i class=\"fa-solid fa-chevron-right\"><\/i>\r\n  <\/span>\r\n\r\n  <span class=\"agri-breadcrumb-current\">\r\n    \u0e1b\u0e0f\u0e34\u0e17\u0e34\u0e19\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32\r\n  <\/span>\r\n<\/div>\r\n\r\n<style>\r\n.agri-breadcrumb {\r\n  width: 100%;\r\n  max-width: 1180px;\r\n  margin: 0 auto;\r\n  padding: 16px 24px;\r\n  background: #f7f4f4;\r\n  border-radius: 14px;\r\n  display: flex;\r\n  align-items: center;\r\n  gap: 14px;\r\n  font-family: \"Prompt\", sans-serif;\r\n  font-size: 14px;\r\n  line-height: 1.4;\r\n  box-sizing: border-box;\r\n}\r\n\r\n.agri-breadcrumb a {\r\n  text-decoration: none !important;\r\n}\r\n\r\n.agri-breadcrumb-item {\r\n  display: inline-flex;\r\n  align-items: center;\r\n  gap: 8px;\r\n  color: #cfd6d3;\r\n  font-weight: 400;\r\n  transition: all .2s ease;\r\n}\r\n\r\n.agri-breadcrumb-item:hover {\r\n  color: #159C54;\r\n}\r\n\r\n.agri-breadcrumb-item i {\r\n  font-size: 14px;\r\n}\r\n\r\n.agri-breadcrumb-separator {\r\n  color: #cfd6d3;\r\n  display: inline-flex;\r\n  align-items: center;\r\n  font-size: 12px;\r\n}\r\n\r\n.agri-breadcrumb-current {\r\n  color: #555555;\r\n  font-weight: 500;\r\n}\r\n\r\n@media (max-width: 767px) {\r\n  .agri-breadcrumb {\r\n    max-width: calc(100% - 32px);\r\n    padding: 14px 16px;\r\n    gap: 10px;\r\n    font-size: 13px;\r\n    overflow-x: auto;\r\n    white-space: nowrap;\r\n    border-radius: 12px;\r\n  }\r\n\r\n  .agri-breadcrumb::-webkit-scrollbar {\r\n    display: none;\r\n  }\r\n}\r\n<\/style>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-ba81c4d e-flex e-con-boxed e-con e-parent\" data-id=\"ba81c4d\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a8ae27a elementor-widget elementor-widget-html\" data-id=\"a8ae27a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\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\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32 2569<\/title>\r\n\r\n<style>\r\n.agri-calendar-app {\r\n  --green: #159c54;\r\n  --green-dark: #0b6b3a;\r\n  --navy: #17324d;\r\n  --text: #263238;\r\n  --muted: #667085;\r\n  --border: #e4e9e6;\r\n  --soft: #f5f8f6;\r\n  --registration: #159c54;\r\n  --payment: #f79009;\r\n  --evaluation: #2563eb;\r\n  --event: #0e9384;\r\n  --competition: #d97706;\r\n  --exam: #d92d20;\r\n  --holiday: #7a5af8;\r\n\r\n  max-width: 1180px;\r\n  margin: 30px auto;\r\n  padding: 0 16px 40px;\r\n  font-family: \"Prompt\", sans-serif;\r\n  color: var(--text);\r\n  box-sizing: border-box;\r\n}\r\n\r\n.agri-calendar-app *,\r\n.agri-calendar-app *::before,\r\n.agri-calendar-app *::after {\r\n  box-sizing: border-box;\r\n}\r\n\r\n\/* ---------- \u0e2a\u0e48\u0e27\u0e19\u0e2b\u0e31\u0e27 ---------- *\/\r\n.agri-calendar-hero {\r\n  padding: 30px;\r\n  margin-bottom: 20px;\r\n  border-radius: 22px;\r\n  color: #fff;\r\n  background: linear-gradient(135deg, #087342, #159c54);\r\n}\r\n\r\n.agri-calendar-hero-kicker {\r\n  display: inline-block;\r\n  margin-bottom: 8px;\r\n  padding: 5px 11px;\r\n  border: 1px solid rgba(255,255,255,.28);\r\n  border-radius: 999px;\r\n  background: rgba(255,255,255,.12);\r\n  font-size: 12px;\r\n}\r\n\r\n.agri-calendar-hero h2 {\r\n  margin: 0 0 7px;\r\n  color: #fff;\r\n  font-size: clamp(27px, 4vw, 40px);\r\n  line-height: 1.25;\r\n}\r\n\r\n.agri-calendar-hero p {\r\n  margin: 0;\r\n  color: rgba(255,255,255,.9);\r\n  font-size: 13px;\r\n  line-height: 1.7;\r\n}\r\n\r\n\/* ---------- \u0e04\u0e33\u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22\u0e2a\u0e35 ---------- *\/\r\n.agri-calendar-legend {\r\n  display: flex;\r\n  flex-wrap: wrap;\r\n  gap: 9px 15px;\r\n  margin-bottom: 22px;\r\n  padding: 13px 16px;\r\n  border: 1px solid var(--border);\r\n  border-radius: 14px;\r\n  background: #fff;\r\n}\r\n\r\n.agri-legend-item {\r\n  display: inline-flex;\r\n  align-items: center;\r\n  gap: 6px;\r\n  color: #475467;\r\n  font-size: 12px;\r\n}\r\n\r\n.agri-legend-dot,\r\n.agri-event-dot {\r\n  flex: 0 0 auto;\r\n  width: 9px;\r\n  height: 9px;\r\n  border-radius: 50%;\r\n}\r\n\r\n.is-registration { background: var(--registration); }\r\n.is-payment { background: var(--payment); }\r\n.is-evaluation { background: var(--evaluation); }\r\n.is-event { background: var(--event); }\r\n.is-competition { background: var(--competition); }\r\n.is-exam { background: var(--exam); }\r\n.is-holiday,\r\n.is-holiday-special { background: var(--holiday); }\r\n\r\n\/* ---------- \u0e20\u0e32\u0e1e\u0e23\u0e27\u0e21\u0e23\u0e32\u0e22\u0e1b\u0e35 ---------- *\/\r\n.agri-year-section {\r\n  margin-bottom: 26px;\r\n}\r\n\r\n.agri-section-head {\r\n  display: flex;\r\n  justify-content: space-between;\r\n  align-items: flex-end;\r\n  gap: 15px;\r\n  margin-bottom: 13px;\r\n}\r\n\r\n.agri-section-head h3 {\r\n  margin: 0;\r\n  color: var(--navy);\r\n  font-size: 22px;\r\n}\r\n\r\n.agri-section-head p {\r\n  margin: 3px 0 0;\r\n  color: var(--muted);\r\n  font-size: 12px;\r\n}\r\n\r\n.agri-current-badge {\r\n  display: inline-flex;\r\n  padding: 6px 10px;\r\n  border-radius: 999px;\r\n  color: var(--green-dark);\r\n  background: #e8f7ee;\r\n  font-size: 11px;\r\n  font-weight: 600;\r\n}\r\n\r\n.agri-year-grid {\r\n  display: grid;\r\n  grid-template-columns: repeat(6, minmax(0, 1fr));\r\n  grid-auto-rows: 1fr;\r\n  align-items: stretch;\r\n  gap: 12px;\r\n}\r\n\r\n.agri-month-box {\r\n  width: 100%;\r\n  height: 100%;\r\n  min-height: 168px;\r\n  display: flex;\r\n  flex-direction: column;\r\n  padding: 0;\r\n  overflow: hidden;\r\n  border: 1px solid var(--border);\r\n  border-radius: 15px;\r\n  color: var(--text);\r\n  background: #fff;\r\n  font-family: inherit;\r\n  text-align: left;\r\n  cursor: pointer;\r\n  transition: .18s ease;\r\n}\r\n\r\n.agri-month-box:hover {\r\n  transform: translateY(-2px);\r\n  border-color: #9bcdb0;\r\n  box-shadow: 0 8px 20px rgba(16,48,32,.07);\r\n}\r\n\r\n.agri-month-box.is-active {\r\n  border-color: var(--green);\r\n  box-shadow: inset 0 0 0 1px var(--green);\r\n}\r\n\r\n.agri-month-box.is-current .agri-month-box-head {\r\n  background: #eaf8f0;\r\n}\r\n\r\n.agri-month-box-head {\r\n  display: flex;\r\n  justify-content: space-between;\r\n  align-items: center;\r\n  padding: 11px 12px;\r\n  border-bottom: 1px solid var(--border);\r\n  background: #f8faf9;\r\n}\r\n\r\n.agri-month-box-name {\r\n  color: var(--navy);\r\n  font-size: 14px;\r\n  font-weight: 700;\r\n}\r\n\r\n.agri-month-box-count {\r\n  padding: 3px 7px;\r\n  border-radius: 999px;\r\n  color: var(--green-dark);\r\n  background: #e4f4ea;\r\n  font-size: 9.5px;\r\n  font-weight: 600;\r\n}\r\n\r\n.agri-month-box-body {\r\n  display: flex;\r\n  flex: 1;\r\n  flex-direction: column;\r\n  gap: 7px;\r\n  min-height: 0;\r\n  padding: 11px 12px;\r\n}\r\n\r\n.agri-month-preview {\r\n  display: grid;\r\n  grid-template-columns: 8px minmax(0,1fr);\r\n  gap: 7px;\r\n  align-items: start;\r\n  color: #475467;\r\n  font-size: 11px;\r\n  line-height: 1.4;\r\n}\r\n\r\n.agri-month-preview-dot {\r\n  width: 7px;\r\n  height: 7px;\r\n  margin-top: 4px;\r\n  border-radius: 50%;\r\n}\r\n\r\n.agri-month-preview-title {\r\n  display: -webkit-box;\r\n  min-height: 31px;\r\n  overflow: hidden;\r\n  -webkit-box-orient: vertical;\r\n  -webkit-line-clamp: 2;\r\n}\r\n\r\n.agri-month-more,\r\n.agri-month-empty {\r\n  margin-top: auto;\r\n  margin-bottom: auto;\r\n  color: #98a2b3;\r\n  font-size: 10px;\r\n}\r\n\r\n.agri-month-more {\r\n  color: var(--green-dark);\r\n  font-weight: 600;\r\n}\r\n\r\n\/* ---------- \u0e1b\u0e0f\u0e34\u0e17\u0e34\u0e19\u0e23\u0e32\u0e22\u0e40\u0e14\u0e37\u0e2d\u0e19 ---------- *\/\r\n.agri-monthly-card {\r\n  overflow: hidden;\r\n  border: 1px solid var(--border);\r\n  border-radius: 20px;\r\n  background: #fff;\r\n  box-shadow: 0 9px 25px rgba(16,48,32,.06);\r\n}\r\n\r\n.agri-calendar-toolbar {\r\n  display: grid;\r\n  grid-template-columns: 44px 1fr 44px;\r\n  align-items: center;\r\n  gap: 12px;\r\n  padding: 17px 20px;\r\n  border-bottom: 1px solid var(--border);\r\n  background: #f7fbf8;\r\n}\r\n\r\n.agri-nav-button {\r\n  display: grid;\r\n  place-items: center;\r\n  width: 42px;\r\n  height: 42px;\r\n  padding: 0;\r\n  border: 1px solid #cfe2d6;\r\n  border-radius: 11px;\r\n  color: var(--green-dark);\r\n  background: #fff;\r\n  font-family: inherit;\r\n  font-size: 23px;\r\n  cursor: pointer;\r\n}\r\n\r\n.agri-nav-button:hover {\r\n  color: #fff;\r\n  border-color: var(--green);\r\n  background: var(--green);\r\n}\r\n\r\n.agri-month-title {\r\n  text-align: center;\r\n}\r\n\r\n.agri-month-title h3 {\r\n  margin: 0;\r\n  color: var(--navy);\r\n  font-size: 22px;\r\n}\r\n\r\n.agri-month-title p {\r\n  margin: 2px 0 0;\r\n  color: var(--muted);\r\n  font-size: 12px;\r\n}\r\n\r\n.agri-calendar-controls {\r\n  display: flex;\r\n  flex-wrap: wrap;\r\n  justify-content: center;\r\n  gap: 9px;\r\n  padding: 12px;\r\n  border-bottom: 1px solid var(--border);\r\n}\r\n\r\n.agri-month-select,\r\n.agri-today-button {\r\n  min-height: 40px;\r\n  border-radius: 10px;\r\n  font-family: inherit;\r\n  font-size: 13px;\r\n}\r\n\r\n.agri-month-select {\r\n  min-width: 185px;\r\n  padding: 7px 32px 7px 11px;\r\n  border: 1px solid #d5ddd8;\r\n  color: #344054;\r\n  background: #fff;\r\n}\r\n\r\n.agri-today-button {\r\n  padding: 7px 13px;\r\n  border: 1px solid var(--green);\r\n  color: #fff;\r\n  background: var(--green);\r\n  font-weight: 600;\r\n  cursor: pointer;\r\n}\r\n\r\n.agri-calendar-scroll {\r\n  overflow-x: auto;\r\n}\r\n\r\n.agri-calendar-grid {\r\n  min-width: 720px;\r\n  display: grid;\r\n  grid-template-columns: repeat(7, minmax(95px, 1fr));\r\n}\r\n\r\n.agri-day-name {\r\n  padding: 11px 7px;\r\n  text-align: center;\r\n  border-right: 1px solid var(--border);\r\n  border-bottom: 1px solid var(--border);\r\n  color: #475467;\r\n  background: #fafcfb;\r\n  font-size: 12px;\r\n  font-weight: 600;\r\n}\r\n\r\n.agri-day-name:nth-child(7) {\r\n  border-right: 0;\r\n}\r\n\r\n.agri-day {\r\n  position: relative;\r\n  min-height: 118px;\r\n  padding: 8px;\r\n  border-right: 1px solid var(--border);\r\n  border-bottom: 1px solid var(--border);\r\n  background: #fff;\r\n}\r\n\r\n.agri-day:nth-child(7n) {\r\n  border-right: 0;\r\n}\r\n\r\n.agri-day.is-weekend {\r\n  background: #fcfdfc;\r\n}\r\n\r\n.agri-day.is-empty {\r\n  background:\r\n    repeating-linear-gradient(\r\n      -45deg,\r\n      #fbfcfb,\r\n      #fbfcfb 8px,\r\n      #f7f9f8 8px,\r\n      #f7f9f8 16px\r\n    );\r\n}\r\n\r\n.agri-date-number {\r\n  display: grid;\r\n  place-items: center;\r\n  width: 29px;\r\n  height: 29px;\r\n  border-radius: 9px;\r\n  color: #344054;\r\n  font-size: 13px;\r\n  font-weight: 600;\r\n}\r\n\r\n.agri-day.is-today {\r\n  background: #f2fff7;\r\n  box-shadow: inset 0 0 0 2px var(--green);\r\n}\r\n\r\n.agri-day.is-today .agri-date-number {\r\n  color: #fff;\r\n  background: var(--green);\r\n}\r\n\r\n.agri-day-events {\r\n  display: flex;\r\n  flex-direction: column;\r\n  gap: 4px;\r\n  margin-top: 7px;\r\n}\r\n\r\n.agri-day-event {\r\n  display: block;\r\n  width: 100%;\r\n  padding: 4px 6px;\r\n  border-left: 3px solid;\r\n  border-radius: 6px;\r\n  font-size: 9.5px;\r\n  line-height: 1.35;\r\n  font-weight: 500;\r\n  overflow-wrap: anywhere;\r\n}\r\n\r\n.agri-day-event.type-registration {\r\n  color: #087342;\r\n  border-color: var(--registration);\r\n  background: #eaf8f0;\r\n}\r\n\r\n.agri-day-event.type-event {\r\n  color: #0f766e;\r\n  border-color: var(--event);\r\n  background: #e9fbf8;\r\n}\r\n\r\n.agri-day-event.type-competition {\r\n  color: #9a4e00;\r\n  border-color: var(--competition);\r\n  background: #fff5df;\r\n}\r\n\r\n.agri-day-event.type-exam {\r\n  color: #b42318;\r\n  border-color: var(--exam);\r\n  background: #fff0ee;\r\n}\r\n\r\n.agri-day-event.type-holiday,\r\n.agri-day-event.type-holiday-special {\r\n  color: #5925dc;\r\n  border-color: var(--holiday);\r\n  background: #f4f0ff;\r\n}\r\n\r\n.agri-calendar-note {\r\n  padding: 10px 15px;\r\n  color: var(--muted);\r\n  background: #fafcfb;\r\n  font-size: 11px;\r\n}\r\n\r\n\/* ---------- \u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e1b\u0e23\u0e30\u0e08\u0e33\u0e40\u0e14\u0e37\u0e2d\u0e19 ---------- *\/\r\n.agri-agenda {\r\n  padding: 20px;\r\n  border-top: 1px solid var(--border);\r\n}\r\n\r\n.agri-agenda-head {\r\n  display: flex;\r\n  justify-content: space-between;\r\n  align-items: center;\r\n  gap: 12px;\r\n  margin-bottom: 13px;\r\n}\r\n\r\n.agri-agenda-head h4 {\r\n  margin: 0;\r\n  color: var(--navy);\r\n  font-size: 18px;\r\n}\r\n\r\n.agri-agenda-count {\r\n  color: var(--muted);\r\n  font-size: 11px;\r\n}\r\n\r\n.agri-agenda-list {\r\n  display: grid;\r\n  grid-template-columns: repeat(2, minmax(0,1fr));\r\n  gap: 10px;\r\n}\r\n\r\n.agri-agenda-item {\r\n  display: grid;\r\n  grid-template-columns: 83px minmax(0,1fr);\r\n  gap: 11px;\r\n  align-items: start;\r\n  padding: 12px;\r\n  border: 1px solid var(--border);\r\n  border-left: 4px solid;\r\n  border-radius: 12px;\r\n  background: #fff;\r\n}\r\n\r\n.agri-agenda-item.type-registration { border-left-color: var(--registration); }\r\n.agri-agenda-item.type-payment { border-left-color: var(--payment); }\r\n.agri-agenda-item.type-evaluation { border-left-color: var(--evaluation); }\r\n.agri-agenda-item.type-event { border-left-color: var(--event); }\r\n.agri-agenda-item.type-competition { border-left-color: var(--competition); }\r\n.agri-agenda-item.type-exam { border-left-color: var(--exam); }\r\n.agri-agenda-item.type-holiday,\r\n.agri-agenda-item.type-holiday-special { border-left-color: var(--holiday); }\r\n\r\n.agri-agenda-date {\r\n  color: var(--green-dark);\r\n  font-size: 11px;\r\n  font-weight: 700;\r\n  line-height: 1.45;\r\n}\r\n\r\n.agri-agenda-title {\r\n  color: #344054;\r\n  font-size: 12px;\r\n  line-height: 1.5;\r\n}\r\n\r\n.agri-no-agenda {\r\n  padding: 22px;\r\n  border: 1px dashed #cfd8d3;\r\n  border-radius: 12px;\r\n  color: var(--muted);\r\n  text-align: center;\r\n  font-size: 12px;\r\n}\r\n\r\n@media (max-width: 1180px) {\r\n  .agri-year-grid {\r\n    grid-template-columns: repeat(4, minmax(0, 1fr));\r\n  }\r\n}\r\n\r\n@media (max-width: 900px) {\r\n  .agri-year-grid {\r\n    grid-template-columns: repeat(3, minmax(0, 1fr));\r\n  }\r\n}\r\n\r\n@media (max-width: 700px) {\r\n  .agri-calendar-app {\r\n    margin-top: 18px;\r\n    padding-left: 10px;\r\n    padding-right: 10px;\r\n  }\r\n\r\n  .agri-calendar-hero {\r\n    padding: 24px 20px;\r\n    border-radius: 18px;\r\n  }\r\n\r\n  .agri-section-head {\r\n    align-items: flex-start;\r\n    flex-direction: column;\r\n    gap: 8px;\r\n  }\r\n\r\n  .agri-year-grid {\r\n    grid-template-columns: repeat(2, minmax(0, 1fr));\r\n  }\r\n\r\n  .agri-month-box {\r\n    min-height: 160px;\r\n  }\r\n\r\n  .agri-calendar-toolbar {\r\n    padding: 14px 11px;\r\n    gap: 7px;\r\n  }\r\n\r\n  .agri-month-title h3 {\r\n    font-size: 17px;\r\n  }\r\n\r\n  .agri-agenda {\r\n    padding: 15px 12px;\r\n  }\r\n\r\n  .agri-agenda-list {\r\n    grid-template-columns: 1fr;\r\n  }\r\n}\r\n\r\n@media (max-width: 560px) {\r\n  .agri-year-grid {\r\n    grid-template-columns: repeat(2, minmax(0, 1fr));\r\n  }\r\n}\r\n\r\n@media (max-width: 430px) {\r\n  .agri-year-grid {\r\n    grid-template-columns: 1fr;\r\n  }\r\n\r\n  .agri-month-box {\r\n    min-height: 145px;\r\n  }\r\n}\r\n<\/style>\r\n<\/head>\r\n\r\n<body>\r\n\r\n<section class=\"agri-calendar-app\" id=\"agriCalendarApp\">\r\n\r\n  <header class=\"agri-calendar-hero\">\r\n    <span class=\"agri-calendar-hero-kicker\">\u0e1b\u0e0f\u0e34\u0e17\u0e34\u0e19\u0e01\u0e34\u0e08\u0e01\u0e23\u0e23\u0e21\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32<\/span>\r\n    <h2>\u0e1b\u0e0f\u0e34\u0e17\u0e34\u0e19\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32<\/h2>\r\n    <p>\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32 \u0e01\u0e34\u0e08\u0e01\u0e23\u0e23\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d \u0e41\u0e25\u0e30\u0e27\u0e31\u0e19\u0e2b\u0e22\u0e38\u0e14\u0e23\u0e32\u0e0a\u0e01\u0e32\u0e23 \u0e1b\u0e23\u0e30\u0e08\u0e33\u0e1b\u0e35 \u0e1e.\u0e28. 2569<\/p>\r\n  <\/header>\r\n\r\n  <div class=\"agri-calendar-legend\" aria-label=\"\u0e04\u0e33\u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22\u0e2a\u0e35\">\r\n    <span class=\"agri-legend-item\"><i class=\"agri-legend-dot is-registration\"><\/i>\u0e40\u0e1b\u0e34\u0e14\u2013\u0e1b\u0e34\u0e14\u0e20\u0e32\u0e04 \/ \u0e25\u0e07\u0e17\u0e30\u0e40\u0e1a\u0e35\u0e22\u0e19<\/span>\r\n    <span class=\"agri-legend-item\"><i class=\"agri-legend-dot is-event\"><\/i>\u0e01\u0e34\u0e08\u0e01\u0e23\u0e23\u0e21<\/span>\r\n    <span class=\"agri-legend-item\"><i class=\"agri-legend-dot is-competition\"><\/i>\u0e1b\u0e23\u0e30\u0e01\u0e27\u0e14<\/span>\r\n    <span class=\"agri-legend-item\"><i class=\"agri-legend-dot is-exam\"><\/i>\u0e2a\u0e2d\u0e1a<\/span>\r\n    <span class=\"agri-legend-item\"><i class=\"agri-legend-dot is-holiday\"><\/i>\u0e27\u0e31\u0e19\u0e2b\u0e22\u0e38\u0e14\u0e23\u0e32\u0e0a\u0e01\u0e32\u0e23<\/span>\r\n  <\/div>\r\n\r\n  <section class=\"agri-year-section\" aria-labelledby=\"agriYearTitle\">\r\n    <div class=\"agri-section-head\">\r\n      <div>\r\n        <h3 id=\"agriYearTitle\">\u0e20\u0e32\u0e1e\u0e23\u0e27\u0e21\u0e23\u0e32\u0e22\u0e1b\u0e35 2569<\/h3>\r\n        <p>\u0e41\u0e2a\u0e14\u0e07\u0e40\u0e1e\u0e35\u0e22\u0e07\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e40\u0e14\u0e48\u0e19 \u0e01\u0e14\u0e17\u0e35\u0e48\u0e40\u0e14\u0e37\u0e2d\u0e19\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e14\u0e39\u0e23\u0e32\u0e22\u0e25\u0e30\u0e40\u0e2d\u0e35\u0e22\u0e14\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14<\/p>\r\n      <\/div>\r\n      <span class=\"agri-current-badge\" id=\"agriCurrentBadge\"><\/span>\r\n    <\/div>\r\n\r\n    <div class=\"agri-year-grid\" id=\"agriYearGrid\"><\/div>\r\n  <\/section>\r\n\r\n  <section class=\"agri-monthly-card\" id=\"agriMonthlyCard\">\r\n\r\n    <div class=\"agri-calendar-toolbar\">\r\n      <button class=\"agri-nav-button\" id=\"agriPrev\" type=\"button\" aria-label=\"\u0e40\u0e14\u0e37\u0e2d\u0e19\u0e01\u0e48\u0e2d\u0e19\u0e2b\u0e19\u0e49\u0e32\">\u2039<\/button>\r\n\r\n      <div class=\"agri-month-title\">\r\n        <h3 id=\"agriMonthTitle\"><\/h3>\r\n        <p id=\"agriMonthEnglish\"><\/p>\r\n      <\/div>\r\n\r\n      <button class=\"agri-nav-button\" id=\"agriNext\" type=\"button\" aria-label=\"\u0e40\u0e14\u0e37\u0e2d\u0e19\u0e16\u0e31\u0e14\u0e44\u0e1b\">\u203a<\/button>\r\n    <\/div>\r\n\r\n    <div class=\"agri-calendar-controls\">\r\n      <select class=\"agri-month-select\" id=\"agriMonthSelect\" aria-label=\"\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e40\u0e14\u0e37\u0e2d\u0e19\"><\/select>\r\n      <button class=\"agri-today-button\" id=\"agriTodayButton\" type=\"button\">\u0e01\u0e25\u0e31\u0e1a\u0e44\u0e1b\u0e40\u0e14\u0e37\u0e2d\u0e19\u0e1b\u0e31\u0e08\u0e08\u0e38\u0e1a\u0e31\u0e19<\/button>\r\n    <\/div>\r\n\r\n    <div class=\"agri-calendar-scroll\">\r\n      <div class=\"agri-calendar-grid\" id=\"agriCalendarGrid\"><\/div>\r\n    <\/div>\r\n\r\n    <div class=\"agri-calendar-note\">\r\n      \u0e41\u0e2a\u0e14\u0e07\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e01\u0e32\u0e23\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32 \u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e27\u0e31\u0e19\u0e2b\u0e22\u0e38\u0e14\u0e41\u0e25\u0e30\u0e01\u0e34\u0e08\u0e01\u0e23\u0e23\u0e21\u0e04\u0e13\u0e30\r\n    <\/div>\r\n\r\n    <div class=\"agri-agenda\">\r\n      <div class=\"agri-agenda-head\">\r\n        <h4 id=\"agriAgendaTitle\"><\/h4>\r\n        <span class=\"agri-agenda-count\" id=\"agriAgendaCount\"><\/span>\r\n      <\/div>\r\n      <div class=\"agri-agenda-list\" id=\"agriAgendaList\"><\/div>\r\n    <\/div>\r\n\r\n  <\/section>\r\n\r\n<\/section>\r\n\r\n<script>\r\n(function () {\r\n  const calendarYear = 2026;\r\n  const buddhistYear = 2569;\r\n\r\n  const thaiMonths = [\r\n    \"\u0e21\u0e01\u0e23\u0e32\u0e04\u0e21\", \"\u0e01\u0e38\u0e21\u0e20\u0e32\u0e1e\u0e31\u0e19\u0e18\u0e4c\", \"\u0e21\u0e35\u0e19\u0e32\u0e04\u0e21\", \"\u0e40\u0e21\u0e29\u0e32\u0e22\u0e19\",\r\n    \"\u0e1e\u0e24\u0e29\u0e20\u0e32\u0e04\u0e21\", \"\u0e21\u0e34\u0e16\u0e38\u0e19\u0e32\u0e22\u0e19\", \"\u0e01\u0e23\u0e01\u0e0e\u0e32\u0e04\u0e21\", \"\u0e2a\u0e34\u0e07\u0e2b\u0e32\u0e04\u0e21\",\r\n    \"\u0e01\u0e31\u0e19\u0e22\u0e32\u0e22\u0e19\", \"\u0e15\u0e38\u0e25\u0e32\u0e04\u0e21\", \"\u0e1e\u0e24\u0e28\u0e08\u0e34\u0e01\u0e32\u0e22\u0e19\", \"\u0e18\u0e31\u0e19\u0e27\u0e32\u0e04\u0e21\"\r\n  ];\r\n\r\n  const shortMonths = [\r\n    \"\u0e21.\u0e04.\", \"\u0e01.\u0e1e.\", \"\u0e21\u0e35.\u0e04.\", \"\u0e40\u0e21.\u0e22.\",\r\n    \"\u0e1e.\u0e04.\", \"\u0e21\u0e34.\u0e22.\", \"\u0e01.\u0e04.\", \"\u0e2a.\u0e04.\",\r\n    \"\u0e01.\u0e22.\", \"\u0e15.\u0e04.\", \"\u0e1e.\u0e22.\", \"\u0e18.\u0e04.\"\r\n  ];\r\n\r\n  const englishMonths = [\r\n    \"January\", \"February\", \"March\", \"April\",\r\n    \"May\", \"June\", \"July\", \"August\",\r\n    \"September\", \"October\", \"November\", \"December\"\r\n  ];\r\n\r\n  const dayNames = [\r\n    \"\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c\", \"\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23\", \"\u0e1e\u0e38\u0e18\", \"\u0e1e\u0e24\u0e2b\u0e31\u0e2a\u0e1a\u0e14\u0e35\",\r\n    \"\u0e28\u0e38\u0e01\u0e23\u0e4c\", \"\u0e40\u0e2a\u0e32\u0e23\u0e4c\", \"\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c\"\r\n  ];\r\n\r\n  const events = [\r\n    \/* \u0e27\u0e31\u0e19\u0e2b\u0e22\u0e38\u0e14\u0e23\u0e32\u0e0a\u0e01\u0e32\u0e23 *\/\r\n    { start: \"2026-01-01\", end: \"2026-01-01\", title: \"\u0e27\u0e31\u0e19\u0e02\u0e36\u0e49\u0e19\u0e1b\u0e35\u0e43\u0e2b\u0e21\u0e48\", type: \"holiday\" },\r\n    { start: \"2026-01-02\", end: \"2026-01-02\", title: \"\u0e27\u0e31\u0e19\u0e2b\u0e22\u0e38\u0e14\u0e23\u0e32\u0e0a\u0e01\u0e32\u0e23\u0e01\u0e23\u0e13\u0e35\u0e1e\u0e34\u0e40\u0e28\u0e29\", type: \"holiday\" },\r\n    { start: \"2026-03-03\", end: \"2026-03-03\", title: \"\u0e27\u0e31\u0e19\u0e21\u0e32\u0e06\u0e1a\u0e39\u0e0a\u0e32\", type: \"holiday\" },\r\n    { start: \"2026-04-06\", end: \"2026-04-06\", title: \"\u0e27\u0e31\u0e19\u0e08\u0e31\u0e01\u0e23\u0e35\", type: \"holiday\" },\r\n    { start: \"2026-04-13\", end: \"2026-04-15\", title: \"\u0e27\u0e31\u0e19\u0e2a\u0e07\u0e01\u0e23\u0e32\u0e19\u0e15\u0e4c\", type: \"holiday\" },\r\n    { start: \"2026-05-04\", end: \"2026-05-04\", title: \"\u0e27\u0e31\u0e19\u0e09\u0e31\u0e15\u0e23\u0e21\u0e07\u0e04\u0e25\", type: \"holiday\" },\r\n    { start: \"2026-05-13\", end: \"2026-05-13\", title: \"\u0e27\u0e31\u0e19\u0e1e\u0e37\u0e0a\u0e21\u0e07\u0e04\u0e25\", type: \"holiday\" },\r\n    { start: \"2026-05-31\", end: \"2026-05-31\", title: \"\u0e27\u0e31\u0e19\u0e27\u0e34\u0e2a\u0e32\u0e02\u0e1a\u0e39\u0e0a\u0e32\", type: \"holiday\" },\r\n    { start: \"2026-06-01\", end: \"2026-06-01\", title: \"\u0e0a\u0e14\u0e40\u0e0a\u0e22\u0e27\u0e31\u0e19\u0e27\u0e34\u0e2a\u0e32\u0e02\u0e1a\u0e39\u0e0a\u0e32\", type: \"holiday\" },\r\n    { start: \"2026-06-03\", end: \"2026-06-03\", title: \"\u0e27\u0e31\u0e19\u0e40\u0e09\u0e25\u0e34\u0e21\u0e1e\u0e23\u0e30\u0e0a\u0e19\u0e21\u0e1e\u0e23\u0e23\u0e29\u0e32\u0e2a\u0e21\u0e40\u0e14\u0e47\u0e08\u0e1e\u0e23\u0e30\u0e23\u0e32\u0e0a\u0e34\u0e19\u0e35\", type: \"holiday\" },\r\n    { start: \"2026-07-28\", end: \"2026-07-28\", title: \"\u0e27\u0e31\u0e19\u0e40\u0e09\u0e25\u0e34\u0e21\u0e1e\u0e23\u0e30\u0e0a\u0e19\u0e21\u0e1e\u0e23\u0e23\u0e29\u0e32\u0e1e\u0e23\u0e30\u0e1a\u0e32\u0e17\u0e2a\u0e21\u0e40\u0e14\u0e47\u0e08\u0e1e\u0e23\u0e30\u0e40\u0e08\u0e49\u0e32\u0e2d\u0e22\u0e39\u0e48\u0e2b\u0e31\u0e27\", type: \"holiday\" },\r\n    { start: \"2026-07-29\", end: \"2026-07-29\", title: \"\u0e27\u0e31\u0e19\u0e2d\u0e32\u0e2a\u0e32\u0e2c\u0e2b\u0e1a\u0e39\u0e0a\u0e32\", type: \"holiday\" },\r\n    { start: \"2026-07-30\", end: \"2026-07-30\", title: \"\u0e27\u0e31\u0e19\u0e40\u0e02\u0e49\u0e32\u0e1e\u0e23\u0e23\u0e29\u0e32\", type: \"holiday\" },\r\n    { start: \"2026-08-12\", end: \"2026-08-12\", title: \"\u0e27\u0e31\u0e19\u0e41\u0e21\u0e48\u0e41\u0e2b\u0e48\u0e07\u0e0a\u0e32\u0e15\u0e34\u0e41\u0e25\u0e30\u0e27\u0e31\u0e19\u0e40\u0e09\u0e25\u0e34\u0e21\u0e1e\u0e23\u0e30\u0e0a\u0e19\u0e21\u0e1e\u0e23\u0e23\u0e29\u0e32\u0e2f\", type: \"holiday\" },\r\n    { start: \"2026-10-13\", end: \"2026-10-13\", title: \"\u0e27\u0e31\u0e19\u0e19\u0e27\u0e21\u0e34\u0e19\u0e17\u0e23\u0e21\u0e2b\u0e32\u0e23\u0e32\u0e0a\", type: \"holiday\" },\r\n    { start: \"2026-10-16\", end: \"2026-10-16\", title: \"\u0e27\u0e31\u0e19\u0e2b\u0e22\u0e38\u0e14\u0e1e\u0e34\u0e40\u0e28\u0e29 \u0e01\u0e17\u0e21. (\u0e23\u0e2d\u0e1b\u0e23\u0e30\u0e01\u0e32\u0e28 \u0e2a\u0e08\u0e25.)\", type: \"holiday-special\" },\r\n    { start: \"2026-10-23\", end: \"2026-10-23\", title: \"\u0e27\u0e31\u0e19\u0e1b\u0e34\u0e22\u0e21\u0e2b\u0e32\u0e23\u0e32\u0e0a\", type: \"holiday\" },\r\n    { start: \"2026-12-05\", end: \"2026-12-05\", title: \"\u0e27\u0e31\u0e19\u0e0a\u0e32\u0e15\u0e34\u0e41\u0e25\u0e30\u0e27\u0e31\u0e19\u0e1e\u0e48\u0e2d\u0e41\u0e2b\u0e48\u0e07\u0e0a\u0e32\u0e15\u0e34\", type: \"holiday\" },\r\n    { start: \"2026-12-07\", end: \"2026-12-07\", title: \"\u0e27\u0e31\u0e19\u0e2b\u0e22\u0e38\u0e14\u0e0a\u0e14\u0e40\u0e0a\u0e22\", type: \"holiday\" },\r\n    { start: \"2026-12-10\", end: \"2026-12-10\", title: \"\u0e27\u0e31\u0e19\u0e23\u0e31\u0e10\u0e18\u0e23\u0e23\u0e21\u0e19\u0e39\u0e0d\", type: \"holiday\" },\r\n    { start: \"2026-12-31\", end: \"2026-12-31\", title: \"\u0e27\u0e31\u0e19\u0e2a\u0e34\u0e49\u0e19\u0e1b\u0e35\", type: \"holiday\" },\r\n\r\n    \/* \u0e01\u0e33\u0e2b\u0e19\u0e14\u0e01\u0e32\u0e23\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32 \u0e20\u0e32\u0e04\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32\u0e17\u0e35\u0e48 1 *\/\r\n    { start: \"2026-06-22\", end: \"2026-06-26\", title: \"\u0e25\u0e07\u0e17\u0e30\u0e40\u0e1a\u0e35\u0e22\u0e19\u0e40\u0e23\u0e35\u0e22\u0e19\u0e1b\u0e01\u0e15\u0e34\", type: \"registration\" },\r\n    { start: \"2026-06-29\", end: \"2026-06-29\", title: \"\u0e40\u0e1b\u0e34\u0e14\u0e20\u0e32\u0e04\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32\u0e17\u0e35\u0e48 1\", type: \"registration\" },\r\n    { start: \"2026-09-07\", end: \"2026-09-13\", title: \"\u0e2a\u0e2d\u0e1a\u0e01\u0e25\u0e32\u0e07\u0e20\u0e32\u0e04\", type: \"exam\" },\r\n    { start: \"2026-10-26\", end: \"2026-11-06\", title: \"\u0e2a\u0e2d\u0e1a\u0e1b\u0e25\u0e32\u0e22\u0e20\u0e32\u0e04\", type: \"exam\" },\r\n    { start: \"2026-11-07\", end: \"2026-11-07\", title: \"\u0e1b\u0e34\u0e14\u0e20\u0e32\u0e04\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32\u0e17\u0e35\u0e48 1\", type: \"registration\" },\r\n\r\n    \/* \u0e01\u0e33\u0e2b\u0e19\u0e14\u0e01\u0e32\u0e23\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e19\u0e31\u0e01\u0e28\u0e36\u0e01\u0e29\u0e32 \u0e20\u0e32\u0e04\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32\u0e17\u0e35\u0e48 2 *\/\r\n    { start: \"2026-11-23\", end: \"2026-11-27\", title: \"\u0e25\u0e07\u0e17\u0e30\u0e40\u0e1a\u0e35\u0e22\u0e19\u0e40\u0e23\u0e35\u0e22\u0e19\u0e1b\u0e01\u0e15\u0e34 \u0e20\u0e32\u0e04 2\", type: \"registration\" },\r\n    { start: \"2026-11-30\", end: \"2026-11-30\", title: \"\u0e40\u0e1b\u0e34\u0e14\u0e20\u0e32\u0e04\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32\u0e17\u0e35\u0e48 2\", type: \"registration\" },\r\n\r\n    \/* \u0e01\u0e34\u0e08\u0e01\u0e23\u0e23\u0e21\u0e04\u0e13\u0e30 *\/\r\n    { start: \"2026-09-02\", end: \"2026-09-05\", title: \"\u0e07\u0e32\u0e19\u0e25\u0e32\u0e14\u0e01\u0e23\u0e30\u0e1a\u0e31\u0e07\u0e19\u0e34\u0e17\u0e23\u0e23\u0e28\u0e19\u0e4c 2569\", type: \"event\" },\r\n    { start: \"2026-09-04\", end: \"2026-09-04\", title: \"\u0e1b\u0e23\u0e30\u0e01\u0e27\u0e14\u0e41\u0e19\u0e27\u0e04\u0e34\u0e14\u0e19\u0e27\u0e31\u0e15\u0e01\u0e23\u0e23\u0e21\u0e01\u0e32\u0e23\u0e40\u0e01\u0e29\u0e15\u0e23\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e2d\u0e19\u0e32\u0e04\u0e15\", type: \"competition\" },\r\n    { start: \"2026-09-05\", end: \"2026-09-05\", title: \"AgriNext Innovation\", type: \"event\" }\r\n  ];\r\n\r\n  const now = new Date();\r\n  let currentMonth = now.getFullYear() === calendarYear ? now.getMonth() : 0;\r\n\r\n  const yearGrid = document.getElementById(\"agriYearGrid\");\r\n  const currentBadge = document.getElementById(\"agriCurrentBadge\");\r\n  const monthTitle = document.getElementById(\"agriMonthTitle\");\r\n  const monthEnglish = document.getElementById(\"agriMonthEnglish\");\r\n  const monthSelect = document.getElementById(\"agriMonthSelect\");\r\n  const calendarGrid = document.getElementById(\"agriCalendarGrid\");\r\n  const agendaTitle = document.getElementById(\"agriAgendaTitle\");\r\n  const agendaCount = document.getElementById(\"agriAgendaCount\");\r\n  const agendaList = document.getElementById(\"agriAgendaList\");\r\n  const monthlyCard = document.getElementById(\"agriMonthlyCard\");\r\n\r\n  function parseDate(value) {\r\n    const parts = value.split(\"-\").map(Number);\r\n    return new Date(parts[0], parts[1] - 1, parts[2], 12, 0, 0);\r\n  }\r\n\r\n  function monthStart(monthIndex) {\r\n    return new Date(calendarYear, monthIndex, 1, 12, 0, 0);\r\n  }\r\n\r\n  function monthEnd(monthIndex) {\r\n    return new Date(calendarYear, monthIndex + 1, 0, 12, 0, 0);\r\n  }\r\n\r\n  function eventOverlapsMonth(event, monthIndex) {\r\n    return parseDate(event.start) <= monthEnd(monthIndex) &&\r\n           parseDate(event.end) >= monthStart(monthIndex);\r\n  }\r\n\r\n  function eventsForMonth(monthIndex) {\r\n    return events\r\n      .filter(function (event) {\r\n        return eventOverlapsMonth(event, monthIndex);\r\n      })\r\n      .sort(function (a, b) {\r\n        return parseDate(a.start) - parseDate(b.start);\r\n      });\r\n  }\r\n\r\n  function eventsForDate(date) {\r\n    return events.filter(function (event) {\r\n      return parseDate(event.start) <= date && parseDate(event.end) >= date;\r\n    });\r\n  }\r\n\r\n  function formatDateRange(event) {\r\n    const start = parseDate(event.start);\r\n    const end = parseDate(event.end);\r\n\r\n    if (event.start === event.end) {\r\n      return start.getDate() + \" \" + shortMonths[start.getMonth()] + \" \" + (start.getFullYear() + 543);\r\n    }\r\n\r\n    if (\r\n      start.getFullYear() === end.getFullYear() &&\r\n      start.getMonth() === end.getMonth()\r\n    ) {\r\n      return start.getDate() + \"\u2013\" + end.getDate() + \" \" +\r\n        shortMonths[start.getMonth()] + \" \" + (start.getFullYear() + 543);\r\n    }\r\n\r\n    return start.getDate() + \" \" + shortMonths[start.getMonth()] + \" \" +\r\n      (start.getFullYear() + 543) + \" \u2013 \" +\r\n      end.getDate() + \" \" + shortMonths[end.getMonth()] + \" \" +\r\n      (end.getFullYear() + 543);\r\n  }\r\n\r\n  function dotClass(type) {\r\n    return \"is-\" + type;\r\n  }\r\n\r\n  thaiMonths.forEach(function (month, index) {\r\n    const option = document.createElement(\"option\");\r\n    option.value = index;\r\n    option.textContent = month + \" \" + buddhistYear;\r\n    monthSelect.appendChild(option);\r\n  });\r\n\r\n  function renderYearOverview() {\r\n    yearGrid.innerHTML = \"\";\r\n\r\n    const deviceMonth = now.getFullYear() === calendarYear\r\n      ? now.getMonth()\r\n      : null;\r\n\r\n    currentBadge.textContent = deviceMonth !== null\r\n      ? \"\u0e40\u0e14\u0e37\u0e2d\u0e19\u0e1b\u0e31\u0e08\u0e08\u0e38\u0e1a\u0e31\u0e19: \" + thaiMonths[deviceMonth]\r\n      : \"\u0e1b\u0e23\u0e30\u0e08\u0e33\u0e1b\u0e35 \" + buddhistYear;\r\n\r\n    thaiMonths.forEach(function (monthName, monthIndex) {\r\n      const monthEvents = eventsForMonth(monthIndex);\r\n      const box = document.createElement(\"button\");\r\n\r\n      box.type = \"button\";\r\n      box.className = \"agri-month-box\";\r\n      box.dataset.month = monthIndex;\r\n      box.setAttribute(\"aria-label\", \"\u0e40\u0e1b\u0e34\u0e14\u0e40\u0e14\u0e37\u0e2d\u0e19\" + monthName);\r\n\r\n      if (monthIndex === currentMonth) {\r\n        box.classList.add(\"is-active\");\r\n      }\r\n\r\n      if (monthIndex === deviceMonth) {\r\n        box.classList.add(\"is-current\");\r\n      }\r\n\r\n      const head = document.createElement(\"span\");\r\n      head.className = \"agri-month-box-head\";\r\n\r\n      const name = document.createElement(\"span\");\r\n      name.className = \"agri-month-box-name\";\r\n      name.textContent = monthName;\r\n\r\n      const count = document.createElement(\"span\");\r\n      count.className = \"agri-month-box-count\";\r\n      count.textContent = monthEvents.length + \" \u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\";\r\n\r\n      head.appendChild(name);\r\n      head.appendChild(count);\r\n      box.appendChild(head);\r\n\r\n      const body = document.createElement(\"span\");\r\n      body.className = \"agri-month-box-body\";\r\n\r\n      if (monthEvents.length === 0) {\r\n        const empty = document.createElement(\"span\");\r\n        empty.className = \"agri-month-empty\";\r\n        empty.textContent = \"\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e21\u0e35\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e01\u0e32\u0e23\";\r\n        body.appendChild(empty);\r\n      } else {\r\n        monthEvents.slice(0, 2).forEach(function (event) {\r\n          const preview = document.createElement(\"span\");\r\n          preview.className = \"agri-month-preview\";\r\n\r\n          const dot = document.createElement(\"i\");\r\n          dot.className = \"agri-month-preview-dot \" + dotClass(event.type);\r\n\r\n          const title = document.createElement(\"span\");\r\n          title.className = \"agri-month-preview-title\";\r\n          title.textContent = event.title;\r\n\r\n          preview.appendChild(dot);\r\n          preview.appendChild(title);\r\n          body.appendChild(preview);\r\n        });\r\n\r\n        if (monthEvents.length > 2) {\r\n          const more = document.createElement(\"span\");\r\n          more.className = \"agri-month-more\";\r\n          more.textContent = \"\u0e14\u0e39\u0e2d\u0e35\u0e01 \" + (monthEvents.length - 2) + \" \u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\";\r\n          body.appendChild(more);\r\n        }\r\n      }\r\n\r\n      box.appendChild(body);\r\n\r\n      box.addEventListener(\"click\", function () {\r\n        currentMonth = Number(this.dataset.month);\r\n        renderAll();\r\n\r\n        monthlyCard.scrollIntoView({\r\n          behavior: \"smooth\",\r\n          block: \"start\"\r\n        });\r\n      });\r\n\r\n      yearGrid.appendChild(box);\r\n    });\r\n  }\r\n\r\n  function renderCalendar() {\r\n    calendarGrid.innerHTML = \"\";\r\n    monthTitle.textContent = thaiMonths[currentMonth] + \" \" + buddhistYear;\r\n    monthEnglish.textContent = englishMonths[currentMonth] + \" \" + calendarYear;\r\n    monthSelect.value = currentMonth;\r\n\r\n    dayNames.forEach(function (dayName) {\r\n      const header = document.createElement(\"div\");\r\n      header.className = \"agri-day-name\";\r\n      header.textContent = dayName;\r\n      calendarGrid.appendChild(header);\r\n    });\r\n\r\n    const firstDay = new Date(calendarYear, currentMonth, 1).getDay();\r\n    const firstDayMonday = (firstDay + 6) % 7;\r\n    const totalDays = new Date(calendarYear, currentMonth + 1, 0).getDate();\r\n\r\n    for (let i = 0; i < firstDayMonday; i++) {\r\n      const empty = document.createElement(\"div\");\r\n      empty.className = \"agri-day is-empty\";\r\n      calendarGrid.appendChild(empty);\r\n    }\r\n\r\n    for (let day = 1; day <= totalDays; day++) {\r\n      const date = new Date(calendarYear, currentMonth, day, 12, 0, 0);\r\n      const dayEvents = eventsForDate(date);\r\n      const cell = document.createElement(\"div\");\r\n\r\n      cell.className = \"agri-day\";\r\n\r\n      if (date.getDay() === 0 || date.getDay() === 6) {\r\n        cell.classList.add(\"is-weekend\");\r\n      }\r\n\r\n      if (\r\n        now.getFullYear() === calendarYear &&\r\n        now.getMonth() === currentMonth &&\r\n        now.getDate() === day\r\n      ) {\r\n        cell.classList.add(\"is-today\");\r\n      }\r\n\r\n      const number = document.createElement(\"span\");\r\n      number.className = \"agri-date-number\";\r\n      number.textContent = day;\r\n      cell.appendChild(number);\r\n\r\n      if (dayEvents.length > 0) {\r\n        cell.title = dayEvents.map(function (event) {\r\n          return event.title;\r\n        }).join(\"\\n\");\r\n\r\n        const eventList = document.createElement(\"div\");\r\n        eventList.className = \"agri-day-events\";\r\n\r\n        dayEvents.forEach(function (event) {\r\n          const eventLabel = document.createElement(\"span\");\r\n          eventLabel.className = \"agri-day-event type-\" + event.type;\r\n          eventLabel.textContent = event.title;\r\n          eventList.appendChild(eventLabel);\r\n        });\r\n\r\n        cell.appendChild(eventList);\r\n      }\r\n\r\n      calendarGrid.appendChild(cell);\r\n    }\r\n\r\n    const usedCells = firstDayMonday + totalDays;\r\n    const trailing = (7 - (usedCells % 7)) % 7;\r\n\r\n    for (let i = 0; i < trailing; i++) {\r\n      const empty = document.createElement(\"div\");\r\n      empty.className = \"agri-day is-empty\";\r\n      calendarGrid.appendChild(empty);\r\n    }\r\n  }\r\n\r\n  function renderAgenda() {\r\n    const monthEvents = eventsForMonth(currentMonth);\r\n\r\n    agendaTitle.textContent = \"\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e01\u0e32\u0e23\u0e40\u0e14\u0e37\u0e2d\u0e19\" + thaiMonths[currentMonth];\r\n    agendaCount.textContent = monthEvents.length + \" \u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\";\r\n    agendaList.innerHTML = \"\";\r\n\r\n    if (monthEvents.length === 0) {\r\n      const empty = document.createElement(\"div\");\r\n      empty.className = \"agri-no-agenda\";\r\n      empty.textContent = \"\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e21\u0e35\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e01\u0e32\u0e23\u0e43\u0e19\u0e40\u0e14\u0e37\u0e2d\u0e19\u0e19\u0e35\u0e49\";\r\n      agendaList.appendChild(empty);\r\n      return;\r\n    }\r\n\r\n    monthEvents.forEach(function (event) {\r\n      const item = document.createElement(\"article\");\r\n      item.className = \"agri-agenda-item type-\" + event.type;\r\n\r\n      const date = document.createElement(\"div\");\r\n      date.className = \"agri-agenda-date\";\r\n      date.textContent = formatDateRange(event);\r\n\r\n      const title = document.createElement(\"div\");\r\n      title.className = \"agri-agenda-title\";\r\n      title.textContent = event.title;\r\n\r\n      item.appendChild(date);\r\n      item.appendChild(title);\r\n      agendaList.appendChild(item);\r\n    });\r\n  }\r\n\r\n  function renderActiveMonth() {\r\n    document.querySelectorAll(\".agri-month-box\").forEach(function (box) {\r\n      box.classList.toggle(\r\n        \"is-active\",\r\n        Number(box.dataset.month) === currentMonth\r\n      );\r\n    });\r\n  }\r\n\r\n  function renderAll() {\r\n    renderActiveMonth();\r\n    renderCalendar();\r\n    renderAgenda();\r\n  }\r\n\r\n  document.getElementById(\"agriPrev\").addEventListener(\"click\", function () {\r\n    currentMonth = currentMonth === 0 ? 11 : currentMonth - 1;\r\n    renderAll();\r\n  });\r\n\r\n  document.getElementById(\"agriNext\").addEventListener(\"click\", function () {\r\n    currentMonth = currentMonth === 11 ? 0 : currentMonth + 1;\r\n    renderAll();\r\n  });\r\n\r\n  monthSelect.addEventListener(\"change\", function () {\r\n    currentMonth = Number(this.value);\r\n    renderAll();\r\n  });\r\n\r\n  document.getElementById(\"agriTodayButton\").addEventListener(\"click\", function () {\r\n    currentMonth = now.getFullYear() === calendarYear ? now.getMonth() : 0;\r\n    renderAll();\r\n  });\r\n\r\n  renderYearOverview();\r\n  renderAll();\r\n})();\r\n<\/script>\r\n\r\n<\/body>\r\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-844c9af e-flex e-con-boxed e-con e-parent\" data-id=\"844c9af\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2eb7029 elementor-widget elementor-widget-spacer\" data-id=\"2eb7029\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\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>\u0e2b\u0e19\u0e49\u0e32\u0e41\u0e23\u0e01 \u0e1b\u0e0f\u0e34\u0e17\u0e34\u0e19\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32 \u0e1b\u0e0f\u0e34\u0e17\u0e34\u0e19\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32 2569 \u0e1b\u0e0f\u0e34\u0e17\u0e34\u0e19\u0e01\u0e34\u0e08\u0e01\u0e23\u0e23\u0e21\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32 \u0e1b\u0e0f\u0e34\u0e17\u0e34\u0e19\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32 \u0e01\u0e33\u0e2b\u0e19\u0e14\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32 \u0e01\u0e34\u0e08\u0e01\u0e23\u0e23\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d \u0e41\u0e25\u0e30\u0e27\u0e31\u0e19\u0e2b\u0e22\u0e38\u0e14\u0e23\u0e32\u0e0a\u0e01\u0e32\u0e23 \u0e1b\u0e23\u0e30\u0e08\u0e33\u0e1b\u0e35 \u0e1e.\u0e28. 2569 \u0e40\u0e1b\u0e34\u0e14\u2013\u0e1b\u0e34\u0e14\u0e20\u0e32\u0e04 \/ \u0e25\u0e07\u0e17\u0e30\u0e40\u0e1a\u0e35\u0e22\u0e19 \u0e01\u0e34\u0e08\u0e01\u0e23\u0e23\u0e21 \u0e1b\u0e23\u0e30\u0e01\u0e27\u0e14 \u0e2a\u0e2d\u0e1a \u0e27\u0e31\u0e19\u0e2b\u0e22\u0e38\u0e14\u0e23\u0e32\u0e0a\u0e01\u0e32\u0e23 \u0e20\u0e32\u0e1e\u0e23\u0e27\u0e21\u0e23\u0e32\u0e22\u0e1b\u0e35 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"default","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-3863","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.agri.kmitl.ac.th\/main\/en\/wp-json\/wp\/v2\/pages\/3863","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.agri.kmitl.ac.th\/main\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.agri.kmitl.ac.th\/main\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.agri.kmitl.ac.th\/main\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.agri.kmitl.ac.th\/main\/en\/wp-json\/wp\/v2\/comments?post=3863"}],"version-history":[{"count":49,"href":"https:\/\/www.agri.kmitl.ac.th\/main\/en\/wp-json\/wp\/v2\/pages\/3863\/revisions"}],"predecessor-version":[{"id":3914,"href":"https:\/\/www.agri.kmitl.ac.th\/main\/en\/wp-json\/wp\/v2\/pages\/3863\/revisions\/3914"}],"wp:attachment":[{"href":"https:\/\/www.agri.kmitl.ac.th\/main\/en\/wp-json\/wp\/v2\/media?parent=3863"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}