Merge branch 'master' of https://source.jalview.org/git/jalviewjs.git
[jalviewjs.git] / site / j2s / jssun / util / calendar / BaseCalendar.js
index fbfe565..b2a9a30 100644 (file)
-Clazz.declarePackage ("jssun.util.calendar");\r
-Clazz.load (["jssun.util.calendar.AbstractCalendar", "$.CalendarDate"], "jssun.util.calendar.BaseCalendar", ["java.lang.IllegalArgumentException", "jssun.util.calendar.CalendarUtils"], function () {\r
-c$ = Clazz.declareType (jssun.util.calendar, "BaseCalendar", jssun.util.calendar.AbstractCalendar);\r
-Clazz.overrideMethod (c$, "validate", \r
-function (date) {\r
-var bdate = date;\r
-if (bdate.isNormalized ()) {\r
-return true;\r
-}var month = bdate.getMonth ();\r
-if (month < 1 || month > 12) {\r
-return false;\r
-}var d = bdate.getDayOfMonth ();\r
-if (d <= 0 || d > this.getMonthLength (bdate.getNormalizedYear (), month)) {\r
-return false;\r
-}var dow = bdate.getDayOfWeek ();\r
-if (dow != jssun.util.calendar.CalendarDate.FIELD_UNDEFINED && dow != this.getDayOfWeek (bdate)) {\r
-return false;\r
-}if (!this.validateTime (date)) {\r
-return false;\r
-}bdate.setNormalized (true);\r
-return true;\r
-}, "jssun.util.calendar.CalendarDate");\r
-Clazz.overrideMethod (c$, "normalize", \r
-function (date) {\r
-if (date.isNormalized ()) {\r
-return true;\r
-}var bdate = date;\r
-var zi = bdate.getZone ();\r
-if (zi != null) {\r
-this.getTime (date);\r
-return true;\r
-}var days = this.normalizeTime (bdate);\r
-this.normalizeMonth (bdate);\r
-var d = bdate.getDayOfMonth () + days;\r
-var m = bdate.getMonth ();\r
-var y = bdate.getNormalizedYear ();\r
-var ml = this.getMonthLength (y, m);\r
-if (!(d > 0 && d <= ml)) {\r
-if (d <= 0 && d > -28) {\r
-ml = this.getMonthLength (y, --m);\r
-d += ml;\r
-bdate.setDayOfMonth (d);\r
-if (m == 0) {\r
-m = 12;\r
-bdate.setNormalizedYear (y - 1);\r
-}bdate.setMonth (m);\r
-} else if (d > ml && d < (ml + 28)) {\r
-d -= ml;\r
-++m;\r
-bdate.setDayOfMonth (d);\r
-if (m > 12) {\r
-bdate.setNormalizedYear (y + 1);\r
-m = 1;\r
-}bdate.setMonth (m);\r
-} else {\r
-var fixedDate = d + this.getFixedDate (y, m, 1, bdate) - 1;\r
-this.getCalendarDateFromFixedDate (bdate, fixedDate);\r
-}} else {\r
-bdate.setDayOfWeek (this.getDayOfWeek (bdate));\r
-}date.setLeapYear (this.isLeapYear (bdate.getNormalizedYear ()));\r
-date.setZoneOffset (0);\r
-date.setDaylightSaving (0);\r
-bdate.setNormalized (true);\r
-return true;\r
-}, "jssun.util.calendar.CalendarDate");\r
-Clazz.defineMethod (c$, "normalizeMonth", \r
-function (date) {\r
-var bdate = date;\r
-var year = bdate.getNormalizedYear ();\r
-var month = bdate.getMonth ();\r
-if (month <= 0) {\r
-var xm = 1 - month;\r
-year -= ((Clazz.doubleToInt (xm / 12)) + 1);\r
-month = 13 - (xm % 12);\r
-bdate.setNormalizedYear (year);\r
-bdate.setMonth (month);\r
-} else if (month > 12) {\r
-year += (Clazz.doubleToInt ((month - 1) / 12));\r
-month = ((month - 1)) % 12 + 1;\r
-bdate.setNormalizedYear (year);\r
-bdate.setMonth (month);\r
-}}, "jssun.util.calendar.CalendarDate");\r
-Clazz.overrideMethod (c$, "getYearLength", \r
-function (date) {\r
-return this.isLeapYear ((date).getNormalizedYear ()) ? 366 : 365;\r
-}, "jssun.util.calendar.CalendarDate");\r
-Clazz.overrideMethod (c$, "getYearLengthInMonths", \r
-function (date) {\r
-return 12;\r
-}, "jssun.util.calendar.CalendarDate");\r
-Clazz.defineMethod (c$, "getMonthLength", \r
-function (date) {\r
-var gdate = date;\r
-var month = gdate.getMonth ();\r
-if (month < 1 || month > 12) {\r
-throw  new IllegalArgumentException ("Illegal month value: " + month);\r
-}return this.getMonthLength (gdate.getNormalizedYear (), month);\r
-}, "jssun.util.calendar.CalendarDate");\r
-Clazz.defineMethod (c$, "getMonthLength", \r
- function (year, month) {\r
-var days = jssun.util.calendar.BaseCalendar.DAYS_IN_MONTH[month];\r
-if (month == 2 && this.isLeapYear (year)) {\r
-days++;\r
-}return days;\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "getDayOfYear", \r
-function (date) {\r
-return this.getDayOfYear ((date).getNormalizedYear (), date.getMonth (), date.getDayOfMonth ());\r
-}, "jssun.util.calendar.CalendarDate");\r
-Clazz.defineMethod (c$, "getDayOfYear", \r
-function (year, month, dayOfMonth) {\r
-return dayOfMonth + (this.isLeapYear (year) ? jssun.util.calendar.BaseCalendar.ACCUMULATED_DAYS_IN_MONTH_LEAP[month] : jssun.util.calendar.BaseCalendar.ACCUMULATED_DAYS_IN_MONTH[month]);\r
-}, "~N,~N,~N");\r
-Clazz.defineMethod (c$, "getFixedDate", \r
-function (date) {\r
-if (!date.isNormalized ()) {\r
-this.normalizeMonth (date);\r
-}return this.getFixedDate ((date).getNormalizedYear (), date.getMonth (), date.getDayOfMonth (), date);\r
-}, "jssun.util.calendar.CalendarDate");\r
-Clazz.defineMethod (c$, "getFixedDate", \r
-function (year, month, dayOfMonth, cache) {\r
-var isJan1 = month == 1 && dayOfMonth == 1;\r
-if (cache != null && cache.hit (year)) {\r
-if (isJan1) {\r
-return cache.getCachedJan1 ();\r
-}return cache.getCachedJan1 () + this.getDayOfYear (year, month, dayOfMonth) - 1;\r
-}var n = year - 1970;\r
-if (n >= 0 && n < jssun.util.calendar.BaseCalendar.FIXED_DATES.length) {\r
-var jan1 = jssun.util.calendar.BaseCalendar.FIXED_DATES[n];\r
-if (cache != null) {\r
-cache.setCache (year, jan1, this.isLeapYear (year) ? 366 : 365);\r
-}return isJan1 ? jan1 : jan1 + this.getDayOfYear (year, month, dayOfMonth) - 1;\r
-}var prevyear = year - 1;\r
-var days = dayOfMonth;\r
-if (prevyear >= 0) {\r
-days += (365 * prevyear) + (Clazz.doubleToInt (prevyear / 4)) - (Clazz.doubleToInt (prevyear / 100)) + (Clazz.doubleToInt (prevyear / 400)) + (Clazz.doubleToInt ((367 * month - 362) / 12));\r
-} else {\r
-days += (365 * prevyear) + jssun.util.calendar.CalendarUtils.floorDivide (prevyear, 4) - jssun.util.calendar.CalendarUtils.floorDivide (prevyear, 100) + jssun.util.calendar.CalendarUtils.floorDivide (prevyear, 400) + jssun.util.calendar.CalendarUtils.floorDivide ((367 * month - 362), 12);\r
-}if (month > 2) {\r
-days -= this.isLeapYear (year) ? 1 : 2;\r
-}if (cache != null && isJan1) {\r
-cache.setCache (year, days, this.isLeapYear (year) ? 366 : 365);\r
-}return days;\r
-}, "~N,~N,~N,jssun.util.calendar.BaseCalendar.Date");\r
-Clazz.overrideMethod (c$, "getCalendarDateFromFixedDate", \r
-function (date, fixedDate) {\r
-var gdate = date;\r
-var year;\r
-var jan1;\r
-var isLeap;\r
-if (gdate.hit (fixedDate)) {\r
-year = gdate.getCachedYear ();\r
-jan1 = gdate.getCachedJan1 ();\r
-isLeap = this.isLeapYear (year);\r
-} else {\r
-year = this.getGregorianYearFromFixedDate (fixedDate);\r
-jan1 = this.getFixedDate (year, 1, 1, null);\r
-isLeap = this.isLeapYear (year);\r
-gdate.setCache (year, jan1, isLeap ? 366 : 365);\r
-}var priorDays = (fixedDate - jan1);\r
-var mar1 = jan1 + 31 + 28;\r
-if (isLeap) {\r
-++mar1;\r
-}if (fixedDate >= mar1) {\r
-priorDays += isLeap ? 1 : 2;\r
-}var month = 12 * priorDays + 373;\r
-if (month > 0) {\r
-month = Clazz.doubleToInt (month / 367);\r
-} else {\r
-month = jssun.util.calendar.CalendarUtils.floorDivide (month, 367);\r
-}var month1 = jan1 + jssun.util.calendar.BaseCalendar.ACCUMULATED_DAYS_IN_MONTH[month];\r
-if (isLeap && month >= 3) {\r
-++month1;\r
-}var dayOfMonth = (fixedDate - month1) + 1;\r
-var dayOfWeek = jssun.util.calendar.BaseCalendar.getDayOfWeekFromFixedDate (fixedDate);\r
-gdate.setNormalizedYear (year);\r
-gdate.setMonth (month);\r
-gdate.setDayOfMonth (dayOfMonth);\r
-gdate.setDayOfWeek (dayOfWeek);\r
-gdate.setLeapYear (isLeap);\r
-gdate.setNormalized (true);\r
-}, "jssun.util.calendar.CalendarDate,~N");\r
-Clazz.defineMethod (c$, "getDayOfWeek", \r
-function (date) {\r
-var fixedDate = this.getFixedDate (date);\r
-return jssun.util.calendar.BaseCalendar.getDayOfWeekFromFixedDate (fixedDate);\r
-}, "jssun.util.calendar.CalendarDate");\r
-c$.getDayOfWeekFromFixedDate = Clazz.defineMethod (c$, "getDayOfWeekFromFixedDate", \r
-function (fixedDate) {\r
-if (fixedDate >= 0) {\r
-return (fixedDate % 7) + 1;\r
-}return jssun.util.calendar.CalendarUtils.mod (fixedDate, 7) + 1;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getYearFromFixedDate", \r
-function (fixedDate) {\r
-return this.getGregorianYearFromFixedDate (fixedDate);\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getGregorianYearFromFixedDate", \r
-function (fixedDate) {\r
-var d0;\r
-var d1;\r
-var d2;\r
-var d3;\r
-var d4;\r
-var n400;\r
-var n100;\r
-var n4;\r
-var n1;\r
-var year;\r
-if (fixedDate > 0) {\r
-d0 = fixedDate - 1;\r
-n400 = (Clazz.doubleToInt (d0 / 146097));\r
-d1 = (d0 % 146097);\r
-n100 = Clazz.doubleToInt (d1 / 36524);\r
-d2 = d1 % 36524;\r
-n4 = Clazz.doubleToInt (d2 / 1461);\r
-d3 = d2 % 1461;\r
-n1 = Clazz.doubleToInt (d3 / 365);\r
-d4 = (d3 % 365) + 1;\r
-} else {\r
-d0 = fixedDate - 1;\r
-n400 = jssun.util.calendar.CalendarUtils.floorDivide (d0, 146097);\r
-d1 = jssun.util.calendar.CalendarUtils.mod (d0, 146097);\r
-n100 = jssun.util.calendar.CalendarUtils.floorDivide (d1, 36524);\r
-d2 = jssun.util.calendar.CalendarUtils.mod (d1, 36524);\r
-n4 = jssun.util.calendar.CalendarUtils.floorDivide (d2, 1461);\r
-d3 = jssun.util.calendar.CalendarUtils.mod (d2, 1461);\r
-n1 = jssun.util.calendar.CalendarUtils.floorDivide (d3, 365);\r
-d4 = jssun.util.calendar.CalendarUtils.mod (d3, 365) + 1;\r
-}year = 400 * n400 + 100 * n100 + 4 * n4 + n1;\r
-if (!(n100 == 4 || n1 == 4)) {\r
-++year;\r
-}return year;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "isLeapYear", \r
-function (date) {\r
-return this.isLeapYear ((date).getNormalizedYear ());\r
-}, "jssun.util.calendar.CalendarDate");\r
-Clazz.defineMethod (c$, "isLeapYear", \r
-function (normalizedYear) {\r
-return jssun.util.calendar.CalendarUtils.isGregorianLeapYear (normalizedYear);\r
-}, "~N");\r
-Clazz.pu$h(self.c$);\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.cachedYear = 2004;\r
-this.cachedFixedDateJan1 = 731581;\r
-this.cachedFixedDateNextJan1 = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, jssun.util.calendar.BaseCalendar, "Date", jssun.util.calendar.CalendarDate);\r
-Clazz.prepareFields (c$, function () {\r
-this.cachedFixedDateNextJan1 = this.cachedFixedDateJan1 + 366;\r
-});\r
-Clazz.defineMethod (c$, "setNormalizedDate", \r
-function (a, b, c) {\r
-this.setNormalizedYear (a);\r
-this.setMonth (b).setDayOfMonth (c);\r
-return this;\r
-}, "~N,~N,~N");\r
-Clazz.defineMethod (c$, "hit", \r
-function (a) {\r
-return a == this.cachedYear;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "hit", \r
-function (a) {\r
-return (a >= this.cachedFixedDateJan1 && a < this.cachedFixedDateNextJan1);\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getCachedYear", \r
-function () {\r
-return this.cachedYear;\r
-});\r
-Clazz.defineMethod (c$, "getCachedJan1", \r
-function () {\r
-return this.cachedFixedDateJan1;\r
-});\r
-Clazz.defineMethod (c$, "setCache", \r
-function (a, b, c) {\r
-this.cachedYear = a;\r
-this.cachedFixedDateJan1 = b;\r
-this.cachedFixedDateNextJan1 = b + c;\r
-}, "~N,~N,~N");\r
-c$ = Clazz.p0p ();\r
-Clazz.defineStatics (c$,\r
-"JANUARY", 1,\r
-"FEBRUARY", 2,\r
-"MARCH", 3,\r
-"APRIL", 4,\r
-"MAY", 5,\r
-"JUNE", 6,\r
-"JULY", 7,\r
-"AUGUST", 8,\r
-"SEPTEMBER", 9,\r
-"OCTOBER", 10,\r
-"NOVEMBER", 11,\r
-"DECEMBER", 12,\r
-"SUNDAY", 1,\r
-"MONDAY", 2,\r
-"TUESDAY", 3,\r
-"WEDNESDAY", 4,\r
-"THURSDAY", 5,\r
-"FRIDAY", 6,\r
-"SATURDAY", 7,\r
-"BASE_YEAR", 1970,\r
-"FIXED_DATES",  Clazz.newIntArray (-1, [719163, 719528, 719893, 720259, 720624, 720989, 721354, 721720, 722085, 722450, 722815, 723181, 723546, 723911, 724276, 724642, 725007, 725372, 725737, 726103, 726468, 726833, 727198, 727564, 727929, 728294, 728659, 729025, 729390, 729755, 730120, 730486, 730851, 731216, 731581, 731947, 732312, 732677, 733042, 733408, 733773, 734138, 734503, 734869, 735234, 735599, 735964, 736330, 736695, 737060, 737425, 737791, 738156, 738521, 738886, 739252, 739617, 739982, 740347, 740713, 741078, 741443, 741808, 742174, 742539, 742904, 743269, 743635, 744000, 744365]),\r
-"DAYS_IN_MONTH",  Clazz.newIntArray (-1, [31, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]),\r
-"ACCUMULATED_DAYS_IN_MONTH",  Clazz.newIntArray (-1, [-30, 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]),\r
-"ACCUMULATED_DAYS_IN_MONTH_LEAP",  Clazz.newIntArray (-1, [-30, 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335]));\r
-});\r
+Clazz.declarePackage ("jssun.util.calendar");
+Clazz.load (["jssun.util.calendar.AbstractCalendar", "$.CalendarDate"], "jssun.util.calendar.BaseCalendar", ["java.lang.IllegalArgumentException", "jssun.util.calendar.CalendarUtils"], function () {
+c$ = Clazz.declareType (jssun.util.calendar, "BaseCalendar", jssun.util.calendar.AbstractCalendar);
+Clazz.overrideMethod (c$, "validate", 
+function (date) {
+var bdate = date;
+if (bdate.isNormalized ()) {
+return true;
+}var month = bdate.getMonth ();
+if (month < 1 || month > 12) {
+return false;
+}var d = bdate.getDayOfMonth ();
+if (d <= 0 || d > this.getMonthLength (bdate.getNormalizedYear (), month)) {
+return false;
+}var dow = bdate.getDayOfWeek ();
+if (dow != jssun.util.calendar.CalendarDate.FIELD_UNDEFINED && dow != this.getDayOfWeek (bdate)) {
+return false;
+}if (!this.validateTime (date)) {
+return false;
+}bdate.setNormalized (true);
+return true;
+}, "jssun.util.calendar.CalendarDate");
+Clazz.overrideMethod (c$, "normalize", 
+function (date) {
+if (date.isNormalized ()) {
+return true;
+}var bdate = date;
+var zi = bdate.getZone ();
+if (zi != null) {
+this.getTime (date);
+return true;
+}var days = this.normalizeTime (bdate);
+this.normalizeMonth (bdate);
+var d = bdate.getDayOfMonth () + days;
+var m = bdate.getMonth ();
+var y = bdate.getNormalizedYear ();
+var ml = this.getMonthLength (y, m);
+if (!(d > 0 && d <= ml)) {
+if (d <= 0 && d > -28) {
+ml = this.getMonthLength (y, --m);
+d += ml;
+bdate.setDayOfMonth (d);
+if (m == 0) {
+m = 12;
+bdate.setNormalizedYear (y - 1);
+}bdate.setMonth (m);
+} else if (d > ml && d < (ml + 28)) {
+d -= ml;
+++m;
+bdate.setDayOfMonth (d);
+if (m > 12) {
+bdate.setNormalizedYear (y + 1);
+m = 1;
+}bdate.setMonth (m);
+} else {
+var fixedDate = d + this.getFixedDate (y, m, 1, bdate) - 1;
+this.getCalendarDateFromFixedDate (bdate, fixedDate);
+}} else {
+bdate.setDayOfWeek (this.getDayOfWeek (bdate));
+}date.setLeapYear (this.isLeapYear (bdate.getNormalizedYear ()));
+date.setZoneOffset (0);
+date.setDaylightSaving (0);
+bdate.setNormalized (true);
+return true;
+}, "jssun.util.calendar.CalendarDate");
+Clazz.defineMethod (c$, "normalizeMonth", 
+function (date) {
+var bdate = date;
+var year = bdate.getNormalizedYear ();
+var month = bdate.getMonth ();
+if (month <= 0) {
+var xm = 1 - month;
+year -= ((Clazz.doubleToInt (xm / 12)) + 1);
+month = 13 - (xm % 12);
+bdate.setNormalizedYear (year);
+bdate.setMonth (month);
+} else if (month > 12) {
+year += (Clazz.doubleToInt ((month - 1) / 12));
+month = ((month - 1)) % 12 + 1;
+bdate.setNormalizedYear (year);
+bdate.setMonth (month);
+}}, "jssun.util.calendar.CalendarDate");
+Clazz.overrideMethod (c$, "getYearLength", 
+function (date) {
+return this.isLeapYear ((date).getNormalizedYear ()) ? 366 : 365;
+}, "jssun.util.calendar.CalendarDate");
+Clazz.overrideMethod (c$, "getYearLengthInMonths", 
+function (date) {
+return 12;
+}, "jssun.util.calendar.CalendarDate");
+Clazz.defineMethod (c$, "getMonthLength", 
+function (date) {
+var gdate = date;
+var month = gdate.getMonth ();
+if (month < 1 || month > 12) {
+throw  new IllegalArgumentException ("Illegal month value: " + month);
+}return this.getMonthLength (gdate.getNormalizedYear (), month);
+}, "jssun.util.calendar.CalendarDate");
+Clazz.defineMethod (c$, "getMonthLength", 
+ function (year, month) {
+var days = jssun.util.calendar.BaseCalendar.DAYS_IN_MONTH[month];
+if (month == 2 && this.isLeapYear (year)) {
+days++;
+}return days;
+}, "~N,~N");
+Clazz.defineMethod (c$, "getDayOfYear", 
+function (date) {
+return this.getDayOfYear ((date).getNormalizedYear (), date.getMonth (), date.getDayOfMonth ());
+}, "jssun.util.calendar.CalendarDate");
+Clazz.defineMethod (c$, "getDayOfYear", 
+function (year, month, dayOfMonth) {
+return dayOfMonth + (this.isLeapYear (year) ? jssun.util.calendar.BaseCalendar.ACCUMULATED_DAYS_IN_MONTH_LEAP[month] : jssun.util.calendar.BaseCalendar.ACCUMULATED_DAYS_IN_MONTH[month]);
+}, "~N,~N,~N");
+Clazz.defineMethod (c$, "getFixedDate", 
+function (date) {
+if (!date.isNormalized ()) {
+this.normalizeMonth (date);
+}return this.getFixedDate ((date).getNormalizedYear (), date.getMonth (), date.getDayOfMonth (), date);
+}, "jssun.util.calendar.CalendarDate");
+Clazz.defineMethod (c$, "getFixedDate", 
+function (year, month, dayOfMonth, cache) {
+var isJan1 = month == 1 && dayOfMonth == 1;
+if (cache != null && cache.hit (year)) {
+if (isJan1) {
+return cache.getCachedJan1 ();
+}return cache.getCachedJan1 () + this.getDayOfYear (year, month, dayOfMonth) - 1;
+}var n = year - 1970;
+if (n >= 0 && n < jssun.util.calendar.BaseCalendar.FIXED_DATES.length) {
+var jan1 = jssun.util.calendar.BaseCalendar.FIXED_DATES[n];
+if (cache != null) {
+cache.setCache (year, jan1, this.isLeapYear (year) ? 366 : 365);
+}return isJan1 ? jan1 : jan1 + this.getDayOfYear (year, month, dayOfMonth) - 1;
+}var prevyear = year - 1;
+var days = dayOfMonth;
+if (prevyear >= 0) {
+days += (365 * prevyear) + (Clazz.doubleToInt (prevyear / 4)) - (Clazz.doubleToInt (prevyear / 100)) + (Clazz.doubleToInt (prevyear / 400)) + (Clazz.doubleToInt ((367 * month - 362) / 12));
+} else {
+days += (365 * prevyear) + jssun.util.calendar.CalendarUtils.floorDivide (prevyear, 4) - jssun.util.calendar.CalendarUtils.floorDivide (prevyear, 100) + jssun.util.calendar.CalendarUtils.floorDivide (prevyear, 400) + jssun.util.calendar.CalendarUtils.floorDivide ((367 * month - 362), 12);
+}if (month > 2) {
+days -= this.isLeapYear (year) ? 1 : 2;
+}if (cache != null && isJan1) {
+cache.setCache (year, days, this.isLeapYear (year) ? 366 : 365);
+}return days;
+}, "~N,~N,~N,jssun.util.calendar.BaseCalendar.Date");
+Clazz.overrideMethod (c$, "getCalendarDateFromFixedDate", 
+function (date, fixedDate) {
+var gdate = date;
+var year;
+var jan1;
+var isLeap;
+if (gdate.hit (fixedDate)) {
+year = gdate.getCachedYear ();
+jan1 = gdate.getCachedJan1 ();
+isLeap = this.isLeapYear (year);
+} else {
+year = this.getGregorianYearFromFixedDate (fixedDate);
+jan1 = this.getFixedDate (year, 1, 1, null);
+isLeap = this.isLeapYear (year);
+gdate.setCache (year, jan1, isLeap ? 366 : 365);
+}var priorDays = (fixedDate - jan1);
+var mar1 = jan1 + 31 + 28;
+if (isLeap) {
+++mar1;
+}if (fixedDate >= mar1) {
+priorDays += isLeap ? 1 : 2;
+}var month = 12 * priorDays + 373;
+if (month > 0) {
+month = Clazz.doubleToInt (month / 367);
+} else {
+month = jssun.util.calendar.CalendarUtils.floorDivide (month, 367);
+}var month1 = jan1 + jssun.util.calendar.BaseCalendar.ACCUMULATED_DAYS_IN_MONTH[month];
+if (isLeap && month >= 3) {
+++month1;
+}var dayOfMonth = (fixedDate - month1) + 1;
+var dayOfWeek = jssun.util.calendar.BaseCalendar.getDayOfWeekFromFixedDate (fixedDate);
+gdate.setNormalizedYear (year);
+gdate.setMonth (month);
+gdate.setDayOfMonth (dayOfMonth);
+gdate.setDayOfWeek (dayOfWeek);
+gdate.setLeapYear (isLeap);
+gdate.setNormalized (true);
+}, "jssun.util.calendar.CalendarDate,~N");
+Clazz.defineMethod (c$, "getDayOfWeek", 
+function (date) {
+var fixedDate = this.getFixedDate (date);
+return jssun.util.calendar.BaseCalendar.getDayOfWeekFromFixedDate (fixedDate);
+}, "jssun.util.calendar.CalendarDate");
+c$.getDayOfWeekFromFixedDate = Clazz.defineMethod (c$, "getDayOfWeekFromFixedDate", 
+function (fixedDate) {
+if (fixedDate >= 0) {
+return (fixedDate % 7) + 1;
+}return jssun.util.calendar.CalendarUtils.mod (fixedDate, 7) + 1;
+}, "~N");
+Clazz.defineMethod (c$, "getYearFromFixedDate", 
+function (fixedDate) {
+return this.getGregorianYearFromFixedDate (fixedDate);
+}, "~N");
+Clazz.defineMethod (c$, "getGregorianYearFromFixedDate", 
+function (fixedDate) {
+var d0;
+var d1;
+var d2;
+var d3;
+var d4;
+var n400;
+var n100;
+var n4;
+var n1;
+var year;
+if (fixedDate > 0) {
+d0 = fixedDate - 1;
+n400 = (Clazz.doubleToInt (d0 / 146097));
+d1 = (d0 % 146097);
+n100 = Clazz.doubleToInt (d1 / 36524);
+d2 = d1 % 36524;
+n4 = Clazz.doubleToInt (d2 / 1461);
+d3 = d2 % 1461;
+n1 = Clazz.doubleToInt (d3 / 365);
+d4 = (d3 % 365) + 1;
+} else {
+d0 = fixedDate - 1;
+n400 = jssun.util.calendar.CalendarUtils.floorDivide (d0, 146097);
+d1 = jssun.util.calendar.CalendarUtils.mod (d0, 146097);
+n100 = jssun.util.calendar.CalendarUtils.floorDivide (d1, 36524);
+d2 = jssun.util.calendar.CalendarUtils.mod (d1, 36524);
+n4 = jssun.util.calendar.CalendarUtils.floorDivide (d2, 1461);
+d3 = jssun.util.calendar.CalendarUtils.mod (d2, 1461);
+n1 = jssun.util.calendar.CalendarUtils.floorDivide (d3, 365);
+d4 = jssun.util.calendar.CalendarUtils.mod (d3, 365) + 1;
+}year = 400 * n400 + 100 * n100 + 4 * n4 + n1;
+if (!(n100 == 4 || n1 == 4)) {
+++year;
+}return year;
+}, "~N");
+Clazz.defineMethod (c$, "isLeapYear", 
+function (date) {
+return this.isLeapYear ((date).getNormalizedYear ());
+}, "jssun.util.calendar.CalendarDate");
+Clazz.defineMethod (c$, "isLeapYear", 
+function (normalizedYear) {
+return jssun.util.calendar.CalendarUtils.isGregorianLeapYear (normalizedYear);
+}, "~N");
+Clazz.pu$h(self.c$);
+c$ = Clazz.decorateAsClass (function () {
+this.cachedYear = 2004;
+this.cachedFixedDateJan1 = 731581;
+this.cachedFixedDateNextJan1 = 0;
+Clazz.instantialize (this, arguments);
+}, jssun.util.calendar.BaseCalendar, "Date", jssun.util.calendar.CalendarDate);
+Clazz.prepareFields (c$, function () {
+this.cachedFixedDateNextJan1 = this.cachedFixedDateJan1 + 366;
+});
+Clazz.defineMethod (c$, "setNormalizedDate", 
+function (a, b, c) {
+this.setNormalizedYear (a);
+this.setMonth (b).setDayOfMonth (c);
+return this;
+}, "~N,~N,~N");
+Clazz.defineMethod (c$, "hit", 
+function (a) {
+return a == this.cachedYear;
+}, "~N");
+Clazz.defineMethod (c$, "hit", 
+function (a) {
+return (a >= this.cachedFixedDateJan1 && a < this.cachedFixedDateNextJan1);
+}, "~N");
+Clazz.defineMethod (c$, "getCachedYear", 
+function () {
+return this.cachedYear;
+});
+Clazz.defineMethod (c$, "getCachedJan1", 
+function () {
+return this.cachedFixedDateJan1;
+});
+Clazz.defineMethod (c$, "setCache", 
+function (a, b, c) {
+this.cachedYear = a;
+this.cachedFixedDateJan1 = b;
+this.cachedFixedDateNextJan1 = b + c;
+}, "~N,~N,~N");
+c$ = Clazz.p0p ();
+Clazz.defineStatics (c$,
+"JANUARY", 1,
+"FEBRUARY", 2,
+"MARCH", 3,
+"APRIL", 4,
+"MAY", 5,
+"JUNE", 6,
+"JULY", 7,
+"AUGUST", 8,
+"SEPTEMBER", 9,
+"OCTOBER", 10,
+"NOVEMBER", 11,
+"DECEMBER", 12,
+"SUNDAY", 1,
+"MONDAY", 2,
+"TUESDAY", 3,
+"WEDNESDAY", 4,
+"THURSDAY", 5,
+"FRIDAY", 6,
+"SATURDAY", 7,
+"BASE_YEAR", 1970,
+"FIXED_DATES",  Clazz.newIntArray (-1, [719163, 719528, 719893, 720259, 720624, 720989, 721354, 721720, 722085, 722450, 722815, 723181, 723546, 723911, 724276, 724642, 725007, 725372, 725737, 726103, 726468, 726833, 727198, 727564, 727929, 728294, 728659, 729025, 729390, 729755, 730120, 730486, 730851, 731216, 731581, 731947, 732312, 732677, 733042, 733408, 733773, 734138, 734503, 734869, 735234, 735599, 735964, 736330, 736695, 737060, 737425, 737791, 738156, 738521, 738886, 739252, 739617, 739982, 740347, 740713, 741078, 741443, 741808, 742174, 742539, 742904, 743269, 743635, 744000, 744365]),
+"DAYS_IN_MONTH",  Clazz.newIntArray (-1, [31, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]),
+"ACCUMULATED_DAYS_IN_MONTH",  Clazz.newIntArray (-1, [-30, 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]),
+"ACCUMULATED_DAYS_IN_MONTH_LEAP",  Clazz.newIntArray (-1, [-30, 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335]));
+});