لماذا نستخدمه؟
من الحقائق الثابتة أن المحتوى المقروء لصفحة ما سيشتت انتباه القارئ عند النظر إلى شكل توضع الفقرات. يكمن الهدف من استخدام نص لوريم إيبسوم في توزيعه الطبيعي للأحرف، على عكس استخدام "هنا المحتوى، هنا المحتوى"، مما يجعله يبدو كنص مقروء. تستخدم العديد من برامج النشر المكتبي ومحررات صفحات الويب نص لوريم إيبسوم كنموذج افتراضي لها، وعند البحث عن "لوريم إيبسوم" ستظهر العديد من المواقع الإلكترونية التي لا تزال في بداياتها. تطورت نسخ مختلفة من نص لوريم إيبسوم على مر السنين، أحيانًا عن طريق الصدفة، وأحيانًا عن قصد (بإدخال بعض الفكاهة وما شابه).
document.addEventListener("DOMContentLoaded", function () {
/* -------- Date Helpers -------- */
function addDays(date, days) {
const d = new Date(date);
d.setDate(d.getDate() + days);
return d;
}
function isWorkingDay(date) {
const day = date.getDay(); // 0=Sun, 6=Sat
return day !== 0 && day !== 6; // Mon-Fri only
}
function addWorkingDays(startDate, days) {
let current = new Date(startDate);
let remaining = days;
while (remaining > 0) {
current = addDays(current, 1);
if (isWorkingDay(current)) {
remaining--;
}
}
return current;
}
function formatDate(date) {
return date.toISOString().split('T')[0]; // YYYY-MM-DD
}
/* -------- DOM Wiring -------- */
const calcButton = document.getElementById("calcBtn");
const daysInput = document.getElementById("daysInput");
const typeContainer = document.getElementById("typeContainer");
const dayTypeSelect = document.getElementById("dayType");
const resultDiv = document.getElementById("result");
if (!calcButton || !daysInput || !typeContainer || !dayTypeSelect || !resultDiv) {
console.error("Required DOM elements missing");
return;
}
let enteredDays = 0;
calcButton.addEventListener("click", function () {
enteredDays = parseInt(daysInput.value, 10);
if (!Number.isInteger(enteredDays) || enteredDays < 0) {
resultDiv.textContent = "Please enter a valid non-negative integer.";
resultDiv.style.color = "red";
return;
}
typeContainer.style.display = "block";
dayTypeSelect.value = "";
resultDiv.textContent = "";
});
dayTypeSelect.addEventListener("change", function () {
if (enteredDays === 0) return;
const today = new Date();
let resultDate;
if (dayTypeSelect.value === "working") {
resultDate = addWorkingDays(today, enteredDays);
} else {
resultDate = addDays(today, enteredDays);
}
const formatted = formatDate(resultDate);
resultDiv.textContent = `Result date: ${formatted}`;
resultDiv.style.color = "green";
// Reset
enteredDays = 0;
typeContainer.style.display = "none";
dayTypeSelect.value = "";
daysInput.value = "";
});
});