Brought in another asset for Ray's eye form: moment
[openemr.git] / public / assets / moment-2-13-0 / src / lib / units / week-calendar-utils.js
blobb89810c75ac934a24cb81ce4a4adaffef0cf6a18
1 import { daysInYear } from './year';
2 import { createLocal } from '../create/local';
3 import { createUTCDate } from '../create/date-from-array';
5 // start-of-first-week - start-of-year
6 function firstWeekOffset(year, dow, doy) {
7     var // first-week day -- which january is always in the first week (4 for iso, 1 for other)
8         fwd = 7 + dow - doy,
9         // first-week day local weekday -- which local weekday is fwd
10         fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;
12     return -fwdlw + fwd - 1;
15 //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
16 export function dayOfYearFromWeeks(year, week, weekday, dow, doy) {
17     var localWeekday = (7 + weekday - dow) % 7,
18         weekOffset = firstWeekOffset(year, dow, doy),
19         dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,
20         resYear, resDayOfYear;
22     if (dayOfYear <= 0) {
23         resYear = year - 1;
24         resDayOfYear = daysInYear(resYear) + dayOfYear;
25     } else if (dayOfYear > daysInYear(year)) {
26         resYear = year + 1;
27         resDayOfYear = dayOfYear - daysInYear(year);
28     } else {
29         resYear = year;
30         resDayOfYear = dayOfYear;
31     }
33     return {
34         year: resYear,
35         dayOfYear: resDayOfYear
36     };
39 export function weekOfYear(mom, dow, doy) {
40     var weekOffset = firstWeekOffset(mom.year(), dow, doy),
41         week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,
42         resWeek, resYear;
44     if (week < 1) {
45         resYear = mom.year() - 1;
46         resWeek = week + weeksInYear(resYear, dow, doy);
47     } else if (week > weeksInYear(mom.year(), dow, doy)) {
48         resWeek = week - weeksInYear(mom.year(), dow, doy);
49         resYear = mom.year() + 1;
50     } else {
51         resYear = mom.year();
52         resWeek = week;
53     }
55     return {
56         week: resWeek,
57         year: resYear
58     };
61 export function weeksInYear(year, dow, doy) {
62     var weekOffset = firstWeekOffset(year, dow, doy),
63         weekOffsetNext = firstWeekOffset(year + 1, dow, doy);
64     return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;