]>
Commit | Line | Data |
---|---|---|
2f01fe57 AD |
1 | /* |
2 | Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved. | |
3 | Available via Academic Free License >= 2.1 OR the modified BSD license. | |
4 | see: http://dojotoolkit.org/license for details | |
5 | */ | |
6 | ||
7 | ||
8 | if(!dojo._hasResource["dojo.date"]){ | |
9 | dojo._hasResource["dojo.date"]=true; | |
10 | dojo.provide("dojo.date"); | |
11 | dojo.date.getDaysInMonth=function(_1){ | |
12 | var _2=_1.getMonth(); | |
13 | var _3=[31,28,31,30,31,30,31,31,30,31,30,31]; | |
14 | if(_2==1&&dojo.date.isLeapYear(_1)){ | |
15 | return 29; | |
16 | } | |
17 | return _3[_2]; | |
18 | }; | |
19 | dojo.date.isLeapYear=function(_4){ | |
20 | var _5=_4.getFullYear(); | |
21 | return !(_5%400)||(!(_5%4)&&!!(_5%100)); | |
22 | }; | |
23 | dojo.date.getTimezoneName=function(_6){ | |
24 | var _7=_6.toString(); | |
25 | var tz=""; | |
26 | var _8; | |
27 | var _9=_7.indexOf("("); | |
28 | if(_9>-1){ | |
29 | tz=_7.substring(++_9,_7.indexOf(")")); | |
30 | }else{ | |
31 | var _a=/([A-Z\/]+) \d{4}$/; | |
32 | if((_8=_7.match(_a))){ | |
33 | tz=_8[1]; | |
34 | }else{ | |
35 | _7=_6.toLocaleString(); | |
36 | _a=/ ([A-Z\/]+)$/; | |
37 | if((_8=_7.match(_a))){ | |
38 | tz=_8[1]; | |
39 | } | |
40 | } | |
41 | } | |
42 | return (tz=="AM"||tz=="PM")?"":tz; | |
43 | }; | |
44 | dojo.date.compare=function(_b,_c,_d){ | |
45 | _b=new Date(+_b); | |
46 | _c=new Date(+(_c||new Date())); | |
47 | if(_d=="date"){ | |
48 | _b.setHours(0,0,0,0); | |
49 | _c.setHours(0,0,0,0); | |
50 | }else{ | |
51 | if(_d=="time"){ | |
52 | _b.setFullYear(0,0,0); | |
53 | _c.setFullYear(0,0,0); | |
54 | } | |
55 | } | |
56 | if(_b>_c){ | |
57 | return 1; | |
58 | } | |
59 | if(_b<_c){ | |
60 | return -1; | |
61 | } | |
62 | return 0; | |
63 | }; | |
64 | dojo.date.add=function(_e,_f,_10){ | |
65 | var sum=new Date(+_e); | |
66 | var _11=false; | |
67 | var _12="Date"; | |
68 | switch(_f){ | |
69 | case "day": | |
70 | break; | |
71 | case "weekday": | |
72 | var _13,_14; | |
73 | var mod=_10%5; | |
74 | if(!mod){ | |
75 | _13=(_10>0)?5:-5; | |
76 | _14=(_10>0)?((_10-5)/5):((_10+5)/5); | |
77 | }else{ | |
78 | _13=mod; | |
79 | _14=parseInt(_10/5); | |
80 | } | |
81 | var _15=_e.getDay(); | |
82 | var adj=0; | |
83 | if(_15==6&&_10>0){ | |
84 | adj=1; | |
85 | }else{ | |
86 | if(_15==0&&_10<0){ | |
87 | adj=-1; | |
88 | } | |
89 | } | |
90 | var _16=_15+_13; | |
91 | if(_16==0||_16==6){ | |
92 | adj=(_10>0)?2:-2; | |
93 | } | |
94 | _10=(7*_14)+_13+adj; | |
95 | break; | |
96 | case "year": | |
97 | _12="FullYear"; | |
98 | _11=true; | |
99 | break; | |
100 | case "week": | |
101 | _10*=7; | |
102 | break; | |
103 | case "quarter": | |
104 | _10*=3; | |
105 | case "month": | |
106 | _11=true; | |
107 | _12="Month"; | |
108 | break; | |
109 | default: | |
110 | _12="UTC"+_f.charAt(0).toUpperCase()+_f.substring(1)+"s"; | |
111 | } | |
112 | if(_12){ | |
113 | sum["set"+_12](sum["get"+_12]()+_10); | |
114 | } | |
115 | if(_11&&(sum.getDate()<_e.getDate())){ | |
116 | sum.setDate(0); | |
117 | } | |
118 | return sum; | |
119 | }; | |
120 | dojo.date.difference=function(_17,_18,_19){ | |
121 | _18=_18||new Date(); | |
122 | _19=_19||"day"; | |
123 | var _1a=_18.getFullYear()-_17.getFullYear(); | |
124 | var _1b=1; | |
125 | switch(_19){ | |
126 | case "quarter": | |
127 | var m1=_17.getMonth(); | |
128 | var m2=_18.getMonth(); | |
129 | var q1=Math.floor(m1/3)+1; | |
130 | var q2=Math.floor(m2/3)+1; | |
131 | q2+=(_1a*4); | |
132 | _1b=q2-q1; | |
133 | break; | |
134 | case "weekday": | |
135 | var _1c=Math.round(dojo.date.difference(_17,_18,"day")); | |
136 | var _1d=parseInt(dojo.date.difference(_17,_18,"week")); | |
137 | var mod=_1c%7; | |
138 | if(mod==0){ | |
139 | _1c=_1d*5; | |
140 | }else{ | |
141 | var adj=0; | |
142 | var _1e=_17.getDay(); | |
143 | var _1f=_18.getDay(); | |
144 | _1d=parseInt(_1c/7); | |
145 | mod=_1c%7; | |
146 | var _20=new Date(_17); | |
147 | _20.setDate(_20.getDate()+(_1d*7)); | |
148 | var _21=_20.getDay(); | |
149 | if(_1c>0){ | |
150 | switch(true){ | |
151 | case _1e==6: | |
152 | adj=-1; | |
153 | break; | |
154 | case _1e==0: | |
155 | adj=0; | |
156 | break; | |
157 | case _1f==6: | |
158 | adj=-1; | |
159 | break; | |
160 | case _1f==0: | |
161 | adj=-2; | |
162 | break; | |
163 | case (_21+mod)>5: | |
164 | adj=-2; | |
165 | } | |
166 | }else{ | |
167 | if(_1c<0){ | |
168 | switch(true){ | |
169 | case _1e==6: | |
170 | adj=0; | |
171 | break; | |
172 | case _1e==0: | |
173 | adj=1; | |
174 | break; | |
175 | case _1f==6: | |
176 | adj=2; | |
177 | break; | |
178 | case _1f==0: | |
179 | adj=1; | |
180 | break; | |
181 | case (_21+mod)<0: | |
182 | adj=2; | |
183 | } | |
184 | } | |
185 | } | |
186 | _1c+=adj; | |
187 | _1c-=(_1d*2); | |
188 | } | |
189 | _1b=_1c; | |
190 | break; | |
191 | case "year": | |
192 | _1b=_1a; | |
193 | break; | |
194 | case "month": | |
195 | _1b=(_18.getMonth()-_17.getMonth())+(_1a*12); | |
196 | break; | |
197 | case "week": | |
198 | _1b=parseInt(dojo.date.difference(_17,_18,"day")/7); | |
199 | break; | |
200 | case "day": | |
201 | _1b/=24; | |
202 | case "hour": | |
203 | _1b/=60; | |
204 | case "minute": | |
205 | _1b/=60; | |
206 | case "second": | |
207 | _1b/=1000; | |
208 | case "millisecond": | |
209 | _1b*=_18.getTime()-_17.getTime(); | |
210 | } | |
211 | return Math.round(_1b); | |
212 | }; | |
213 | } |