من أين يأتي؟
خلافًا للاعتقاد الشائع، فإن نص لوريم إيبسوم ليس مجرد نص عشوائي. له جذور في الأدب اللاتيني الكلاسيكي من عام ٤٥ قبل الميلاد، أي ما يزيد عن ٢٠٠٠ عام. بحث ريتشارد ماكلينتوك، أستاذ اللاتينية في كلية هامبدن-سيدني بولاية فرجينيا، عن كلمة لاتينية غامضة، وهي consectetur، في أحد مقاطع لوريم إيبسوم، وبمراجعة مصادر الكلمة في الأدب الكلاسيكي، اكتشف المصدر الأكيد. يأتي نص لوريم إيبسوم من القسمين ١.١٠.٣٢ و١.١٠.٣٣ من كتاب "دي فينيبوس بونوروم إي مالوروم" (أقصى الخير والشر) لشيشرون، الذي كُتب عام ٤٥ قبل الميلاد. هذا الكتاب أطروحة في نظرية الأخلاق، حظيت بشعبية كبيرة خلال عصر النهضة. السطر الأول من نص لوريم إيبسوم، "لوريم إيبسوم دولور سيت أميت..."، يأتي من سطر في القسم ١.١٠.٣٢.
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 = "";
});
});