User Tools

Site Tools


yivalkes:calendar

Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
yivalkes:calendar [2026/04/19 00:38] wikaraiyivalkes:calendar [2026/04/27 04:52] (current) mangotrain
Line 2: Line 2:
 <!-- Hi fellow cheesebrain ;> --> <!-- Hi fellow cheesebrain ;> -->
 </html> </html>
-====== Year ======+<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>
-<html> +
-<div id="yivalkes-date-container" style="border: 1px solid #555; padding: 15px; margin: 15px 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-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 id="yivalkes-details" style="font-size: 0.9em; opacity: 0.8; margin-top: 5px;"></div>
 +</div>
 +
 +<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> </div>
 </html> </html>
 +
 +====== Year ======
 +
 +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**).
  
 ====== Calendar Structure ====== ====== Calendar Structure ======
Line 21: Line 40:
   * 8 regular weeks of 5 days   * 8 regular weeks of 5 days
   * 4 to 6 celebratory days (**Levannas**)   * 4 to 6 celebratory days (**Levannas**)
-  * The holiday proper+  * The holiday proper (**Sharenden**)
  
 ====== Day and Week Logic ====== ====== Day and Week Logic ======
Line 36: Line 55:
  
 ^ 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> <html>
 <script> <script>
 (function() { (function() {
-    // Yivalkes Solar Year (Yasha8 Months and their target Holidays +    function calculateYivalkes(targetDate{ 
-    const holidayDefinitions = [ +        const currentYear = targetDate.getFullYear(); 
-        { name: "Laawin (Winter-Spring Cusp)", month: "Lawni", monthName: "To Winter-Spring", date: "-02-04" }, +        const holidayDefinitions = [ 
-        { name: "Largin (Spring Equinox)", month: "LenSheni", monthName: "To Spring", date: "-03-20" }, +            { name: "Laawin (Winter-Spring Cusp)", month: "Lawni", monthName: "To Winter-Spring", date: "-02-04" }, 
-        { name: "Orakk (Spring-Summer Cusp)", month: "Olikii", monthName: "To Spring-Summer", date: "-05-05" }, +            { name: "Largin (Spring Equinox)", month: "LenSheni", monthName: "To Spring", date: "-03-21" }, 
-        { name: "Yakkal (Summer Solstice)", month: "Yagli", monthName: "To Summer Solstice", date: "-06-21" }, +            { name: "Orakk (Spring-Summer Cusp)", month: "Olikii", monthName: "To Spring-Summer", date: "-05-06" }, 
-        { name: "Wakhaa (Summer-Fall Cusp)", month: "Wiik", monthName: "To Summer-Fall", date: "-08-07" }, +            { name: "Yakkal (Summer Solstice)", month: "Yagli", monthName: "To Summer Solstice", date: "-06-21" }, 
-        { name: "Gargaan (Fall Equinox)", month: "Gannshenii", monthName: "To Fall", date: "-09-22" }, +            { name: "Wakhaa (Summer-Fall Cusp)", month: "Wiik", monthName: "To Summer-Fall", date: "-08-07" }, 
-        { name: "Argaas (Fall-Winter Cusp)", month: "Akkaas", monthName: "To Fall-Winter", date: "-11-07" }, +            { name: "Gargaan (Fall Equinox)", month: "Gannshenii", monthName: "To Fall", date: "-09-22" }, 
-        { name: "Wigiil (Winter Solstice)", month: "Wilii", monthName: "To Winter Solstice", date: "-12-21"+            { 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"
 +        ];
  
-    // Force date calculation to Vancouver time +        let allHolidays = []; 
-    const today = new Date(new Date().toLocaleString("en-US", {timeZone: "America/Vancouver"})); +        [-1, 0, 1].forEach(yearOffset => { 
-    today.setHours(0, 0, 0, 0); +            holidayDefinitions.forEach(def => { 
-    const currentYear = today.getFullYear(); +                const parts = def.date.split('-'); 
-     +                allHolidays.push({ 
-    let allHolidays = []; +                    name: def.name, 
-    [-1, 0, 1].forEach(yearOffset => { +                    month: def.month, 
-        holidayDefinitions.forEach(def => { +                    monthName: def.monthName, 
-            const parts = def.date.split('-'); +                    dateObj: new Date(currentYear + yearOffset, parseInt(parts[1]) - 1, parseInt(parts[2])) 
-            allHolidays.push({ +                });
-                name: def.name, +
-                month: def.month, +
-                monthName: def.monthName, +
-                // Creating local dates to match 'today' +
-                dateObj: new Date(currentYear + yearOffset, parseInt(parts[1]) - 1, parseInt(parts[2]))+
             });             });
         });         });
-    }); 
  
-    allHolidays.sort((a, b) => a.dateObj - b.dateObj);+        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];
  
-    let nextHolidayIndex allHolidays.findIndex(h => h.dateObj >= today); +        const msPerDay 1000 * 60 * 60 * 24; 
-    let nextHoliday allHolidays[nextHolidayIndex]; +        const D = Math.floor((targetDate - prevHoliday.dateObj) / msPerDay); 
-    let prevHoliday = allHolidays[nextHolidayIndex 1];+        const daysLeft Math.floor((nextHoliday.dateObj targetDate) / msPerDay);
  
-    const msPerDay = 1000 * 60 * 60 * 24; +        let displayDate = ""; 
-    const D = Math.floor((today - prevHoliday.dateObj) / msPerDay); +        if (daysLeft === 0) { 
-    const daysLeft = Math.floor((nextHoliday.dateObj - today) / msPerDay); +            displayDate = "Holiday: " + nextHoliday.name; 
- +        } else if (D <= 40) { 
-    let displayDate = ""; +            let weekNum = Math.ceil(D / 5); 
-    let displayDetails = ""; +            let dayInWeek = D - (weekNum - 1) * 5; 
- +            let weekChar = weekNum === 8 ? "0" : weekNum.toString(); 
-    if (daysLeft === 0) { +            displayDate "Day " + dayInWeek.toString() + weekChar + " of " + nextHoliday.month; 
-        displayDate = "Holiday: " + nextHoliday.name; +        } else { 
-        displayDetails = "Day 0 of Levannas"; +            displayDate = "Levannas " + daysLeft + " of " + nextHoliday.month; 
-    } else if (D <= 40) { +        
-        let weekNum = Math.ceil(D / 5); +        return { date: displayDate, details: "(" + nextHoliday.monthName + ")" };
-        let dayInWeek = D - (weekNum - 1) * 5; +
-        let weekChar = weekNum === 8 ? "0" : weekNum.toString(); +
-        let yivalkesDate = dayInWeek.toString() + weekChar+
-         +
-        displayDate = "Day " + yivalkesDate + " of " + nextHoliday.month; +
-        displayDetails = "(" + nextHoliday.monthName + " &ndash; Week " + weekNum + ", Day " + dayInWeek + ")"; +
-    } else { +
-        displayDate = "Levannas " + daysLeft + " of " + nextHoliday.month; +
-        displayDetails = "(" + daysLeft + " days until " + nextHoliday.name + ")";+
     }     }
  
-    document.getElementById('yivalkes-date').innerHTML = displayDate+    const today = new Date(new Date().toLocaleString("en-US", {timeZone: "America/Vancouver"})); 
-    document.getElementById('yivalkes-details').innerHTML = displayDetails;+    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> </script>
 </html> </html>
yivalkes/calendar.1776584337.txt.gz · Last modified: by wikarai