1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
| var startDate = new Date();
var currentMonth = startDate.getMonth();
var currentYear = startDate.getFullYear();
var selectYear = document.getElementById("year");
var selectMonth = document.getElementById("month");
var monthHeader = document.getElementById("monthHeader");
var yearHeader = document.getElementById("yearHeader");
var nextBtn = document.getElementById("next");
var previousBtn = document.getElementById("previous");
var datePicked = document.getElementById("date-picked");
var months = "";
var days = "";
var monthsArr = ["Janvier", "Fevrier", "Mars", "Avril", "Mai", "Juin", "Juillet", "Auot", "Septembre", "Octobre", "Novembre", "Decembre"];
var daysArr = ["DIM", "LUN", "MAR", "MER", "JEUDI", "VEN", "SAM"];
months = monthsArr;
days = daysArr;
var tableHeaderMonth = document.getElementById("thead-month");
var dataHead = "<tr>";
var startDay = "";
for (dhead in days) {
days[dhead] === "Sun" ? startDay = "Green-text" : startDay = "";
dataHead += "<th data-days='" + days[dhead] + "' class='" + startDay + "'>" + days[dhead] + "</th>";
}
dataHead += "</tr>";
tableHeaderMonth.innerHTML = dataHead;
showCalendar(currentMonth, currentYear);
nextBtn.addEventListener("click", next, false);
previousBtn.addEventListener("click", previous, false);
function yearRange(start, end) {
var years = "";
for (var year = start; year <= end; year++) {
years += "<option value='" + year + "'>" + year + "</option>";
}
return years;
}
var createYear = yearRange(2021, 2050);
selectYear.innerHTML = createYear;
function next() {
currentYear = currentMonth === 11 ? currentYear + 1 : currentYear;
currentMonth = (currentMonth + 1) % 12;
showCalendar(currentMonth, currentYear);
}
function previous() {
currentYear = currentMonth === 0 ? currentYear - 1 : currentYear;
currentMonth = currentMonth === 0 ? 11 : currentMonth - 1;
showCalendar(currentMonth, currentYear);
}
function jump() {
currentYear = parseInt(selectYear.value);
currentMonth = parseInt(selectMonth.value);
showCalendar(currentMonth, currentYear);
}
function showCalendar(month, year) {
var firstDay = new Date(year, month).getDay();
var monthString = monthsArr[month];
table = document.getElementById("calendar-body");
table.innerHTML = "";
monthHeader.innerHTML = monthString.substring(0, 3);
yearHeader.innerHTML = year;
selectYear.value = year;
selectMonth.value = month;
var date = 1;
for (var i = 0; i < 6; i++ ) {
var row = document.createElement("tr");
for (var j = 0; j < 7; j++) {
if (i === 0 && j < firstDay) {
cell = document.createElement("td");
cellText = document.createTextNode("");
cell.appendChild(cellText);
row.appendChild(cell);
} else if (date > daysInMonth(month, year)) {
break;
} else {
cell = document.createElement("td");
cell.setAttribute("data-date", date);
cell.setAttribute("data-month", month + 1);
cell.setAttribute("data-year", year);
cell.setAttribute("data-month-name", months[month]);
cell.className = "date-picker";
cell.innerHTML = "<span>" + date + "</span>";
cell.onclick = function(event) {
var dates = document.querySelectorAll(".date-picker");
var currentTarget = event.currentTarget;
var date = currentTarget.dataset.date;
var month = currentTarget.dataset.month - 1;
var year = currentTarget.dataset.year;
for (var i = 0; i < dates.length; i++) {
dates[i].classList.remove("selected");
}
currentTarget.classList.add("selected");
datePicked.innerHTML = date + " " + monthsArr[month] + " " + year;
}
if (date === startDate.getDate() && year === startDate.getFullYear() && month === startDate.getMonth()) {
cell.className = "date-picker selected";
}
row.appendChild(cell);
date++;
}
}
table.appendChild(row);
}
}
function daysInMonth(month, year) {
return 32 - new Date(year, month, 32).getDate();
} |
Partager