User Tools

Site Tools


yivalkes:calendar

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
yivalkes:calendar [2026/04/13 09:36] – created mangotrainyivalkes:calendar [2026/04/27 04:52] (current) mangotrain
Line 1: Line 1:
-====Year====+<html> 
 +<!-- Hi fellow cheesebrain ;> --> 
 +</html> 
 +<html> 
 +<style> 
 +    /* Force the calendar icon to white and the popup to dark mode */ 
 +    #custom-date-picker { 
 +        color-scheme: dark; 
 +    } 
 +    #custom-date-picker::-webkit-calendar-picker-indicator { 
 +        filter: invert(1); 
 +        cursor: pointer; 
 +    } 
 +</style>
  
-While the year used to be based off the moon cycles (Yadellna or moon year), this has changed in preference to the solar cycle (Yasha).+<div id="yivalkes-date-container" style="border: 1px solid #555; padding: 15px; margin: 15px 0 10px 0; background: transparent; border-radius: 8px; font-family: sans-serif; text-align: center;"> 
 +    <strong style="font-size: 1.1em; text-transform: uppercase; letter-spacing: 1px;">Our Current Date in Yivalkes'</strong><br> 
 +    <div id="yivalkes-date" style="font-size: 1.4em; margin-top: 8px; font-weight: bold;">Calculating...</div> 
 +    <div id="yivalkes-details" style="font-size: 0.9em; opacity: 0.8; margin-top: 5px;"></div> 
 +</div>
  
-There are 8 months leading up to solsticesequinoxesand points in between.+<div id="yivalkes-converter-container" style="border: 1px solid #444; padding: 12px; margin-bottom: 15px; background: rgba(255,255,255,0.05); border-radius: 8px; font-family: sans-serif; text-align: center;"> 
 +    <span style="font-size: 0.9em; font-weight: bold; opacity: 0.9;">Or Select Date:</span><br/> 
 +    <div style="margin-top: 3px; display: flex; align-items: center; justify-content: center;"> 
 +        <input type="date" id="custom-date-picker" style="padding: 5px; border-radius: 4px; border: 1px solid #777; background: transparent; color: white; font-family: inherit; outline: none;"> 
 +    </div> 
 +    <div id="custom-date-result" style="font-weight: bold; color: #4CAF50;"></div> 
 +</div> 
 +</html>
  
-Each month is composed of 8 regular weeks of 5 days, plus 4 to 6 celebratory days, along with the holiday proper.+====== Year ======
  
-The day in the month is referred to as Morning-Day-Weekwhich is counter intuitive to what we expect. The first day of the week is actually 10, while the first week is 1, giving us 11. The 2nd day of the week is 20, which would mean that the day following day 11 is actually 21, then 31, 41, 51, to end up to 12, 22, 32, and so on.+While the year used to be based off the moon cycles (**Yadellna** or moon year)this has changed in preference to the solar cycle (**Yasha**).
  
-This strange arrangement is made to preserve the week number at the single digit level, so that for example if one person simply says "Day 1", it basically mean "any one day during the first week".+====== Calendar Structure ====== 
 + 
 +There are **8 months** leading up to solstices, equinoxes, and points in between.  
 + 
 +Each month is composed of: 
 +  * 8 regular weeks of 5 days 
 +  * 4 to 6 celebratory days (**Levannas**) 
 +  * The holiday proper (**Sharenden**) 
 + 
 +====== Day and Week Logic ====== 
 + 
 +The day in the month is referred to as **Morning-Day-Week**, which is counter-intuitive to what we expect.  
 + 
 +  * The first day of the week is actually **10** 
 +  * The first week is **1** 
 +  * Combining these gives us **11** for the very first day 
 + 
 +The 2nd day of the week is **20**, which would mean that the day following day 11 is actually 21, then 31, 41, 51, to end up to 12, 22, 32, and so on. 
 + 
 +This strange arrangement is made to preserve the week number at the single digit level. For exampleif one person simply says "Day 1", it basically means "any one day during the first week".
  
 ^ Month ^ First day ^ 2nd day ^ 3rd day ^ 4th day ^ 5th day ^ ^ Month ^ First day ^ 2nd day ^ 3rd day ^ 4th day ^ 5th day ^
 +^ Wilaf ^ Nemf ^ Doof ^ Leffe ^ Tshof ^ Bamf ^
 ^ Week 1 | 11 | 21 | 31 | 41 | 51 | ^ Week 1 | 11 | 21 | 31 | 41 | 51 |
 +^ Nenar | Nenarla / Shaalen / Nennelen | Binnelen | Lennelen | Gunnelen | Baniineren |
 ^ Week 2 | 12 | 22 | 32 | 42 | 52 | ^ Week 2 | 12 | 22 | 32 | 42 | 52 |
 +^ Doolar | Doolarla / Dootslen / NeDoolen | BiDoolen | LeDoolen | KuDoolen | PanDoolen |
 ^ Week 3 | 13 | 23 | 33 | 43 | 53 | ^ Week 3 | 13 | 23 | 33 | 43 | 53 |
 +^ Lelar | Lelarla / Nitslen / NeLaaren | BiLaaren | Lilleren | GuuLaren | Banarlen |
 ^ Week 4 | 14 | 24 | 34 | 44 | 54 | ^ Week 4 | 14 | 24 | 34 | 44 | 54 |
 +^ Goolar | Goolarla / Tsoorelen / NeRuulen | BiRuulen * | LeRuulen | KuRuulen | Banoorlen |
 ^ Week 5 | 15 | 25 | 35 | 45 | 55 | ^ Week 5 | 15 | 25 | 35 | 45 | 55 |
 +^ Bammar | Bammarla / Sheenelen / NeVameng | BiVameng | LeVameng | KuVameng | FaVameng * |
 ^ Week 6 | 16 | 26 | 36 | 46 | 56 | ^ Week 6 | 16 | 26 | 36 | 46 | 56 |
 +^ Duulelar | Duulelarla / NeDuuleren | BiDuuleren | LeDuuleren | KuDuuleren | PaDuuleren |
 ^ Week 7 | 17 | 27 | 37 | 47 | 57 | ^ Week 7 | 17 | 27 | 37 | 47 | 57 |
 +^ Niraar | Niraarla / NeNirlen | BiNirlen | LeNirlen | KuNirlen | PanNirlen / NeBellen |
 ^ Last week | 10 | 20 | 30 | 40 | 50 | ^ Last week | 10 | 20 | 30 | 40 | 50 |
 +^ Barell | Barella / | BiGiilen | LeLiilen | GuWiilen | BaNiilen |
 ^ Levannas | (6) 5 | 4 | 3 | 2 | 1/0 | ^ Levannas | (6) 5 | 4 | 3 | 2 | 1/0 |
- +^ Levannas | (Lenduley) Lembami | Lenko'i | Lenleli | Lendoli | Baringi | 
 + 
 +* BiRuulen is a great day for beating things, like dusty cloths or aging leather. 
 + 
 +* Favameng is a great day for silly jokes. 
 + 
 + 
 +<html> 
 +<script> 
 +(function() { 
 +    function calculateYivalkes(targetDate) { 
 +        const currentYear = targetDate.getFullYear(); 
 +        const holidayDefinitions = [ 
 +            { name: "Laawin (Winter-Spring Cusp)", month: "Lawni", monthName: "To Winter-Spring", date: "-02-04" }, 
 +            { name: "Largin (Spring Equinox)", month: "LenSheni", monthName: "To Spring", date: "-03-21" }, 
 +            { name: "Orakk (Spring-Summer Cusp)", month: "Olikii", monthName: "To Spring-Summer", date: "-05-06" }, 
 +            { name: "Yakkal (Summer Solstice)", month: "Yagli", monthName: "To Summer Solstice", date: "-06-21" }, 
 +            { name: "Wakhaa (Summer-Fall Cusp)", month: "Wiik", monthName: "To Summer-Fall", date: "-08-07" }, 
 +            { name: "Gargaan (Fall Equinox)", month: "Gannshenii", monthName: "To Fall", date: "-09-22" }, 
 +            { name: "Argaas (Fall-Winter Cusp)", month: "Akkaas", monthName: "To Fall-Winter", date: "-11-07" }, 
 +            { name: "Wigiil (Winter Solstice)", month: "Wilii", monthName: "To Winter Solstice", date: "-12-21"
 +        ]; 
 + 
 +        let allHolidays = []; 
 +        [-1, 0, 1].forEach(yearOffset => { 
 +            holidayDefinitions.forEach(def => { 
 +                const parts = def.date.split('-'); 
 +                allHolidays.push({ 
 +                    name: def.name, 
 +                    month: def.month, 
 +                    monthName: def.monthName, 
 +                    dateObj: new Date(currentYear + yearOffset, parseInt(parts[1]) - 1, parseInt(parts[2])) 
 +                }); 
 +            }); 
 +        }); 
 + 
 +        allHolidays.sort((a, b) => a.dateObj - b.dateObj); 
 +        let nextHolidayIndex = allHolidays.findIndex(h => h.dateObj >= targetDate); 
 +        let nextHoliday = allHolidays[nextHolidayIndex]; 
 +        let prevHoliday = allHolidays[nextHolidayIndex - 1]; 
 + 
 +        const msPerDay = 1000 * 60 * 60 * 24; 
 +        const D = Math.floor((targetDate - prevHoliday.dateObj) / msPerDay); 
 +        const daysLeft = Math.floor((nextHoliday.dateObj - targetDate) / msPerDay); 
 + 
 +        let displayDate = ""; 
 +        if (daysLeft === 0) { 
 +            displayDate = "Holiday: " + nextHoliday.name; 
 +        } else if (D <= 40) { 
 +            let weekNum = Math.ceil(D / 5); 
 +            let dayInWeek = D - (weekNum - 1) * 5; 
 +            let weekChar = weekNum === 8 ? "0" : weekNum.toString(); 
 +            displayDate = "Day " + dayInWeek.toString() + weekChar + " of " + nextHoliday.month; 
 +        } else { 
 +            displayDate = "Levannas " + daysLeft + " of " + nextHoliday.month; 
 +        } 
 +        return { date: displayDate, details: "(" + nextHoliday.monthName + ")" }; 
 +    } 
 + 
 +    const today = new Date(new Date().toLocaleString("en-US", {timeZone: "America/Vancouver"})); 
 +    today.setHours(0, 0, 0, 0); 
 +    const currentRes = calculateYivalkes(today); 
 +    document.getElementById('yivalkes-date').innerHTML = currentRes.date; 
 +    document.getElementById('yivalkes-details').innerHTML = currentRes.details; 
 + 
 +    const picker = document.getElementById('custom-date-picker'); 
 +    const resultSpan = document.getElementById('custom-date-result'); 
 +    picker.addEventListener('change', function(e) { 
 +        if (!e.target.value) return; 
 +        const parts = e.target.value.split('-'); 
 +        const selectedDate = new Date(parts[0], parts[1] - 1, parts[2]); 
 +        const res = calculateYivalkes(selectedDate); 
 +        resultSpan.innerHTML = res.date; 
 +    }); 
 +})(); 
 +</script> 
 +</html>
yivalkes/calendar.1776098162.txt.gz · Last modified: by mangotrain