12345678 |
- /*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
- */
- if(!dojo._hasResource["dojox.date.hebrew.Date"]){dojo._hasResource["dojox.date.hebrew.Date"]=true;dojo.provide("dojox.date.hebrew.Date");dojo.require("dojox.date.hebrew.numerals");dojo.declare("dojox.date.hebrew.Date",null,{_MONTH_LENGTH:[[30,30,30],[29,29,30],[29,30,30],[29,29,29],[30,30,30],[30,30,30],[29,29,29],[30,30,30],[29,29,29],[30,30,30],[29,29,29],[30,30,30],[29,29,29]],_MONTH_START:[[0,0,0],[30,30,30],[59,59,60],[88,89,90],[117,118,119],[147,148,149],[147,148,149],[176,177,178],[206,207,208],[235,236,237],[265,266,267],[294,295,296],[324,325,326],[353,354,355]],_LEAP_MONTH_START:[[0,0,0],[30,30,30],[59,59,60],[88,89,90],[117,118,119],[147,148,149],[177,178,179],[206,207,208],[236,237,238],[265,266,267],[295,296,297],[324,325,326],[354,355,356],[383,384,385]],_GREGORIAN_MONTH_COUNT:[[31,31,0,0],[28,29,31,31],[31,31,59,60],[30,30,90,91],[31,31,120,121],[30,30,151,152],[31,31,181,182],[31,31,212,213],[30,30,243,244],[31,31,273,274],[30,30,304,305],[31,31,334,335]],_date:0,_month:0,_year:0,_hours:0,_minutes:0,_seconds:0,_milliseconds:0,_day:0,constructor:function(){var _1=arguments.length;if(!_1){this.fromGregorian(new Date());}else{if(_1==1){var _2=arguments[0];if(typeof _2=="number"){_2=new Date(_2);}if(_2 instanceof Date){this.fromGregorian(_2);}else{if(_2==""){this._date=new Date("");}else{this._year=_2._year;this._month=_2._month;this._date=_2._date;this._hours=_2._hours;this._minutes=_2._minutes;this._seconds=_2._seconds;this._milliseconds=_2._milliseconds;}}}else{if(_1>=3){this._year+=arguments[0];this._month+=arguments[1];this._date+=arguments[2];if(this._month>12){console.warn("the month is incorrect , set 0 "+this._month+" "+this._year);this._month=0;}this._hours+=arguments[3]||0;this._minutes+=arguments[4]||0;this._seconds+=arguments[5]||0;this._milliseconds+=arguments[6]||0;}}}this._setDay();},getDate:function(){return this._date;},getDateLocalized:function(_3){return (_3||dojo.locale).match(/^he(?:-.+)?$/)?dojox.date.hebrew.numerals.getDayHebrewLetters(this._date):this.getDate();},getMonth:function(){return this._month;},getFullYear:function(){return this._year;},getHours:function(){return this._hours;},getMinutes:function(){return this._minutes;},getSeconds:function(){return this._seconds;},getMilliseconds:function(){return this._milliseconds;},setDate:function(_4){_4=+_4;var _5;if(_4>0){while(_4>(_5=this.getDaysInHebrewMonth(this._month,this._year))){_4-=_5;this._month++;if(this._month>=13){this._year++;this._month-=13;}}}else{while(_4<=0){_5=this.getDaysInHebrewMonth((this._month-1)>=0?(this._month-1):12,((this._month-1)>=0)?this._year:this._year-1);this._month--;if(this._month<0){this._year--;this._month+=13;}_4+=_5;}}this._date=_4;this._setDay();return this;},setFullYear:function(_6,_7,_8){this._year=_6=+_6;if(!this.isLeapYear(_6)&&this._month==5){this._month++;}if(_7!==undefined){this.setMonth(_7);}if(_8!==undefined){this.setDate(_8);}var _9=this.getDaysInHebrewMonth(this._month,this._year);if(_9<this._date){this._date=_9;}this._setDay();return this;},setMonth:function(_a){_a=+_a;if(!this.isLeapYear(this._year)&&_a==5){_a++;}if(_a>=0){while(_a>12){this._year++;_a-=13;if(!this.isLeapYear(this._year)&&_a>=5){_a++;}}}else{while(_a<0){this._year--;_a+=(!this.isLeapYear(this._year)&&_a<-7)?12:13;}}this._month=_a;var _b=this.getDaysInHebrewMonth(this._month,this._year);if(_b<this._date){this._date=_b;}this._setDay();return this;},setHours:function(){var _c=arguments.length;var _d=0;if(_c>=1){_d+=+arguments[0];}if(_c>=2){this._minutes+=+arguments[1];}if(_c>=3){this._seconds+=+arguments[2];}if(_c==4){this._milliseconds+=+arguments[3];}while(_d>=24){this._date++;var _e=this.getDaysInHebrewMonth(this._month,this._year);if(this._date>_e){this._month++;if(!this.isLeapYear(this._year)&&this._month==5){this._month++;}if(this._month>=13){this._year++;this._month-=13;}this._date-=_e;}_d-=24;}this._hours=_d;this._setDay();return this;},setMinutes:function(_f){_f=+_f;this._minutes=_f%60;this.setHours(parseInt(_f/60));this._setDay();return this;},setSeconds:function(_10){_10=+_10;this._seconds=_10%60;this.setMinutes(parseInt(_10/60));this._setDay();return this;},setMilliseconds:function(_11){_11=+_11;this._milliseconds=_11%1000;this.setSeconds(parseInt(_11/1000));this._setDay();return this;},_setDay:function(){var day=this._startOfYear(this._year);if(this._month!=0){day+=(this.isLeapYear(this._year)?this._LEAP_MONTH_START:this._MONTH_START)[this._month][this._yearType(this._year)];}day+=this._date-1;this._day=(day+1)%7;},toString:function(){return this._date+", "+this._month+", "+this._year+" "+this._hours+":"+this._minutes+":"+this._seconds;},getDaysInHebrewMonth:function(_12,_13){var _14=(_12==1||_12==2)?this._yearType(_13):0;return (!this.isLeapYear(this._year)&&_12==5)?0:this._MONTH_LENGTH[_12][_14];},_yearType:function(_15){var _16=this._handleGetYearLength(Number(_15));if(_16>380){_16-=30;}var _17=_16-353;if(_17<0||_17>2){throw new Error("Illegal year length "+_16+" in year "+_15);}return _17;},_handleGetYearLength:function(_18){return this._startOfYear(_18+1)-this._startOfYear(_18);},_startOfYear:function(_19){var _1a=Math.floor((235*_19-234)/19),_1b=_1a*(12*1080+793)+11*1080+204,day=_1a*29+Math.floor(_1b/(24*1080));_1b%=24*1080;var wd=day%7;if(wd==2||wd==4||wd==6){day+=1;wd=day%7;}if(wd==1&&_1b>15*1080+204&&!this.isLeapYear(_19)){day+=2;}else{if(wd==0&&_1b>21*1080+589&&this.isLeapYear(_19-1)){day+=1;}}return day;},isLeapYear:function(_1c){var x=(_1c*12+17)%19;return x>=((x<0)?-7:12);},fromGregorian:function(_1d){var _1e=this._computeHebrewFields(_1d);this._year=_1e[0];this._month=_1e[1];this._date=_1e[2];this._hours=_1d.getHours();this._milliseconds=_1d.getMilliseconds();this._minutes=_1d.getMinutes();this._seconds=_1d.getSeconds();this._setDay();return this;},_computeHebrewFields:function(_1f){var _20=this._getJulianDayFromGregorianDate(_1f),d=_20-347997,m=Math.floor((d*24*1080)/(29*24*1080+12*1080+793)),_21=Math.floor((19*m+234)/235)+1,ys=this._startOfYear(_21),_22=(d-ys);while(_22<1){_21--;ys=this._startOfYear(_21);_22=d-ys;}var _23=this._yearType(_21),_24=this.isLeapYear(_21)?this._LEAP_MONTH_START:this._MONTH_START,_25=0;while(_22>_24[_25][_23]){_25++;}_25--;var _26=_22-_24[_25][_23];return [_21,_25,_26];},toGregorian:function(){var _27=this._year,_28=this._month,_29=this._date,day=this._startOfYear(_27);if(_28!=0){day+=(this.isLeapYear(_27)?this._LEAP_MONTH_START:this._MONTH_START)[_28][this._yearType(_27)];}var _2a=(_29+day+347997),_2b=_2a-1721426;var rem=[];var _2c=this._floorDivide(_2b,146097,rem),_2d=this._floorDivide(rem[0],36524,rem),n4=this._floorDivide(rem[0],1461,rem),n1=this._floorDivide(rem[0],365,rem),_2e=400*_2c+100*_2d+4*n4+n1,_2f=rem[0];if(_2d==4||n1==4){_2f=365;}else{++_2e;}var _30=!(_2e%4)&&(_2e%100||!(_2e%400)),_31=0,_32=_30?60:59;if(_2f>=_32){_31=_30?1:2;}var _33=Math.floor((12*(_2f+_31)+6)/367);var _34=_2f-this._GREGORIAN_MONTH_COUNT[_33][_30?3:2]+1;return new Date(_2e,_33,_34,this._hours,this._minutes,this._seconds,this._milliseconds);},_floorDivide:function(_35,_36,_37){if(_35>=0){_37[0]=(_35%_36);return Math.floor(_35/_36);}var _38=Math.floor(_35/_36);_37[0]=_35-(_38*_36);return _38;},getDay:function(){var _39=this._year,_3a=this._month,_3b=this._date,day=this._startOfYear(_39);if(_3a!=0){day+=(this.isLeapYear(_39)?this._LEAP_MONTH_START:this._MONTH_START)[_3a][this._yearType(_39)];}day+=_3b-1;return (day+1)%7;},_getJulianDayFromGregorianDate:function(_3c){var _3d=_3c.getFullYear(),_3e=_3c.getMonth(),d=_3c.getDate(),_3f=!(_3d%4)&&(_3d%100||!(_3d%400)),y=_3d-1;var _40=365*y+Math.floor(y/4)-Math.floor(y/100)+Math.floor(y/400)+1721426-1;if(_3e!=0){_40+=this._GREGORIAN_MONTH_COUNT[_3e][_3f?3:2];}_40+=d;return _40;}});dojox.date.hebrew.Date.prototype.valueOf=function(){return this.toGregorian().valueOf();};}
|