var validdates = [
{
"Month": 12,
"Date": 1,
"URL": "https://goods.ryokuyou.co.jp/search/comiket_deadline_from:20231201/comiket_deadline_to:20231201"},
{
"Month": 12,
"Date": 4,
"URL": "https://goods.ryokuyou.co.jp/search/comiket_deadline_from:20231204/comiket_deadline_to:20231204"},
{
"Month": 12,
"Date": 5,
"URL": "https://goods.ryokuyou.co.jp/search/comiket_deadline_from:20231205/comiket_deadline_to:20231205"},
{
"Month": 12,
"Date": 6,
"URL": "https://goods.ryokuyou.co.jp/search/comiket_deadline_from:20231206/comiket_deadline_to:20231206"},
{
"Month": 12,
"Date": 7,
"URL": "https://goods.ryokuyou.co.jp/search/comiket_deadline_from:20231207/comiket_deadline_to:20231207"},
{
"Month": 12,
"Date": 8,
"URL": "https://goods.ryokuyou.co.jp/search/comiket_deadline_from:20231208/comiket_deadline_to:20231208"},
{
"Month": 12,
"Date": 11,
"URL": "https://goods.ryokuyou.co.jp/search/comiket_deadline_from:20231211/comiket_deadline_to:20231211"},
{
"Month": 12,
"Date": 12,
"URL": "https://goods.ryokuyou.co.jp/search/comiket_deadline_from:20231212/comiket_deadline_to:20231212"},
{
"Month": 12,
"Date": 13,
"URL": "https://goods.ryokuyou.co.jp/search/comiket_deadline_from:20231213/comiket_deadline_to:20231213"},
{
"Month": 12,
"Date": 14,
"URL": "https://goods.ryokuyou.co.jp/search/comiket_deadline_from:20231214/comiket_deadline_to:20231214"},
{
"Month": 12,
"Date": 15,
"URL": "https://goods.ryokuyou.co.jp/search/comiket_deadline_from:20231215/comiket_deadline_to:20231215"},
{
"Month": 12,
"Date": 18,
"URL": "https://goods.ryokuyou.co.jp/search/comiket_deadline_from:20231218/comiket_deadline_to:20231218"},
{
"Month": 12,
"Date": 19,
"URL": "https://goods.ryokuyou.co.jp/search/comiket_deadline_from:20231219/comiket_deadline_to:20231219"}
]
var event1 = "Sat Dec 30 2023";
var event2 = "Sun Dec 31 2023";
var eventname1 = "冬コミ";
var eventname2 = "冬コミ";
$(document).ready(function () {
function createMonth(month, year) {
var monthElement = document.createElement("div");
monthElement.className = "dp-month";
monthElement.innerHTML = "
" + year + "年" + getMonthName(month) + "
";
// Add row for day names
var dayNamesRow = document.createElement("div");
dayNamesRow.className = "dp-day-names";
var dayNames = ["日", "月", "火", "水", "木", "金", "土"];
for (var i = 0; i < 7; i++) {
var dayNameElement = document.createElement("div");
dayNameElement.className = "dp-day-name";
dayNameElement.textContent = dayNames[i];
dayNamesRow.appendChild(dayNameElement);
}
monthElement.appendChild(dayNamesRow);
var daysInMonth = getDaysInMonth(month, year);
var firstDay = new Date(year, month, 1).getDay();
for (var i = 0; i < firstDay; i++) {
monthElement.innerHTML += "";
}
for (var i = 1; i <= daysInMonth; i++) {
var dayElement = document.createElement("div");
dayElement.className = "dp-day";
dayElement.setAttribute("data-date", new Date(year, month, i).toDateString());
// Check Saturday or Sunday
if (new Date(year, month, i).getDay() === 6 || new Date(year, month, i).getDay() === 0) {
dayElement.classList.add("dp-wknd");
}
var dateValue = dayElement.getAttribute("data-date");
// Set event day
if (dateValue === event1 || dateValue === event2) {
//if (dateValue === event1) {
dayElement.classList.remove("dp-wknd");
dayElement.classList.add("dp-event");
dayElement.title = eventname1;
}
if (dayElement.getAttribute("data-date") === "Fri Nov 03 2023" || dayElement.getAttribute("data-date") === "Thu Nov 23 2023") {
dayElement.classList.add("dp-wknd");
}
var currentDate = dayElement.getAttribute("data-date");
var matchingDate = validdates.find(function (item) {
return item.Month - 1 === new Date(currentDate).getMonth() && item.Date === new Date(currentDate).getDate();
});
if (matchingDate) {
dayElement.classList.add("highlight");
var linkElement = document.createElement("a");
linkElement.href = matchingDate.URL;
linkElement.textContent = i;
dayElement.innerHTML = "";
dayElement.appendChild(linkElement);
} else {
dayElement.textContent = i;
}
monthElement.appendChild(dayElement);
}
// Add empty days for the remaining cells in the last row
var lastDay = new Date(year, month, daysInMonth).getDay();
for (var i = lastDay + 1; i < 7; i++) {
monthElement.innerHTML += "";
}
return monthElement;
}
function getDayName(day) {
var dayNames = [
"日", "月", "火", "水", "木", "金", "土"];
return dayNames[day];
}
function getMonthName(month) {
var monthNames = [
"1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"];
return monthNames[month];
}
function getDaysInMonth(month, year) {
return new Date(year, month + 1, 0).getDate();
}
function createCalendar() {
var calendar = document.getElementById("dp-calendar");
var currentDate = new Date();
var currentMonth = currentDate.getMonth();
var currentYear = currentDate.getFullYear();
var months = [];
for (var i = 0; i < monthsahead; i++) {
var month = currentMonth + i;
var year = currentYear;
if (month >= 12) {
month -= 12;
year += 1;
}
var monthElement = createMonth(month, year);
months.push(monthElement);
}
months.forEach(function (month) {
calendar.appendChild(month);
});
applyLinkUrls();
}
createCalendar();
function applyLinkUrls() {
var dayElements = document.getElementsByClassName("dp-day");
for (var i = 0; i < dayElements.length; i++) {
var dayElement = dayElements[i];
var currentDate = dayElement.getAttribute("data-date");
console.log(currentDate);
var matchingDate = validdates.find(function (item) {
var dateParts = currentDate.split("-");
var itemDate = new Date(item.Month + "/" + item.Date + "/" + dateParts[0]);
return itemDate.toISOString().split("T")[0] === currentDate;
});
if (matchingDate) {
dayElement.classList.add("highlight");
// Check if the day element has the "dp-wknd" class
if (dayElement.classList.contains("dp-wknd")) {
dayElement.classList.add("dp-wknd");
}
if (!dayElement.querySelector("a")) {
var linkElement = document.createElement("a");
linkElement.href = matchingDate.URL;
linkElement.textContent = dayElement.textContent;
dayElement.innerHTML = "";
dayElement.appendChild(linkElement);
}
} else {
// Remove any existing elements
var linkElement = dayElement.querySelector("a");
if (linkElement) {
dayElement.innerHTML = dayElement.textContent;
}
}
}
}
});