datejs-rails 1.1.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (328) hide show
  1. data/.gitignore +2 -0
  2. data/README.md +9 -6
  3. data/Rakefile +21 -0
  4. data/app/assets/javascripts/date.js +8 -0
  5. data/changelog.md +4 -0
  6. data/datejs-rails.gemspec +13 -0
  7. data/vendor/assets/javascripts/date/af-ZA.js +195 -0
  8. data/vendor/assets/javascripts/date/ar-AE.js +195 -0
  9. data/vendor/assets/javascripts/date/ar-BH.js +195 -0
  10. data/vendor/assets/javascripts/date/ar-DZ.js +195 -0
  11. data/vendor/assets/javascripts/date/ar-EG.js +195 -0
  12. data/vendor/assets/javascripts/date/ar-IQ.js +195 -0
  13. data/vendor/assets/javascripts/date/ar-JO.js +195 -0
  14. data/vendor/assets/javascripts/date/ar-KW.js +195 -0
  15. data/vendor/assets/javascripts/date/ar-LB.js +195 -0
  16. data/vendor/assets/javascripts/date/ar-LY.js +195 -0
  17. data/vendor/assets/javascripts/date/ar-MA.js +195 -0
  18. data/vendor/assets/javascripts/date/ar-OM.js +195 -0
  19. data/vendor/assets/javascripts/date/ar-QA.js +195 -0
  20. data/vendor/assets/javascripts/date/ar-SA.js +195 -0
  21. data/vendor/assets/javascripts/date/ar-SY.js +195 -0
  22. data/vendor/assets/javascripts/date/ar-TN.js +195 -0
  23. data/vendor/assets/javascripts/date/ar-YE.js +195 -0
  24. data/vendor/assets/javascripts/date/az-Cyrl-AZ.js +195 -0
  25. data/vendor/assets/javascripts/date/az-Latn-AZ.js +195 -0
  26. data/vendor/assets/javascripts/date/be-BY.js +195 -0
  27. data/vendor/assets/javascripts/date/bg-BG.js +195 -0
  28. data/vendor/assets/javascripts/date/bs-Latn-BA.js +195 -0
  29. data/vendor/assets/javascripts/date/ca-ES.js +195 -0
  30. data/vendor/assets/javascripts/date/core.js +871 -0
  31. data/vendor/assets/javascripts/date/cs-CZ.js +195 -0
  32. data/vendor/assets/javascripts/date/cy-GB.js +195 -0
  33. data/vendor/assets/javascripts/date/da-DK.js +195 -0
  34. data/vendor/assets/javascripts/date/date.js +21 -0
  35. data/vendor/assets/javascripts/date/de-AT.js +195 -0
  36. data/vendor/assets/javascripts/date/de-CH.js +195 -0
  37. data/vendor/assets/javascripts/date/de-DE.js +195 -0
  38. data/vendor/assets/javascripts/date/de-LI.js +195 -0
  39. data/vendor/assets/javascripts/date/de-LU.js +195 -0
  40. data/vendor/assets/javascripts/date/dv-MV.js +195 -0
  41. data/vendor/assets/javascripts/date/el-GR.js +195 -0
  42. data/vendor/assets/javascripts/date/en-029.js +195 -0
  43. data/vendor/assets/javascripts/date/en-AU.js +195 -0
  44. data/vendor/assets/javascripts/date/en-BZ.js +195 -0
  45. data/vendor/assets/javascripts/date/en-CA.js +195 -0
  46. data/vendor/assets/javascripts/date/en-GB.js +195 -0
  47. data/vendor/assets/javascripts/date/en-IE.js +195 -0
  48. data/vendor/assets/javascripts/date/en-JM.js +195 -0
  49. data/vendor/assets/javascripts/date/en-NZ.js +195 -0
  50. data/vendor/assets/javascripts/date/en-PH.js +195 -0
  51. data/vendor/assets/javascripts/date/en-TT.js +195 -0
  52. data/vendor/assets/javascripts/date/en-US.js +195 -0
  53. data/vendor/assets/javascripts/date/en-ZA.js +195 -0
  54. data/vendor/assets/javascripts/date/en-ZW.js +195 -0
  55. data/vendor/assets/javascripts/date/es-AR.js +195 -0
  56. data/vendor/assets/javascripts/date/es-BO.js +195 -0
  57. data/vendor/assets/javascripts/date/es-CL.js +195 -0
  58. data/vendor/assets/javascripts/date/es-CO.js +195 -0
  59. data/vendor/assets/javascripts/date/es-CR.js +195 -0
  60. data/vendor/assets/javascripts/date/es-DO.js +195 -0
  61. data/vendor/assets/javascripts/date/es-EC.js +195 -0
  62. data/vendor/assets/javascripts/date/es-ES.js +195 -0
  63. data/vendor/assets/javascripts/date/es-GT.js +195 -0
  64. data/vendor/assets/javascripts/date/es-HN.js +195 -0
  65. data/vendor/assets/javascripts/date/es-MX.js +195 -0
  66. data/vendor/assets/javascripts/date/es-NI.js +195 -0
  67. data/vendor/assets/javascripts/date/es-PA.js +195 -0
  68. data/vendor/assets/javascripts/date/es-PE.js +195 -0
  69. data/vendor/assets/javascripts/date/es-PR.js +195 -0
  70. data/vendor/assets/javascripts/date/es-PY.js +195 -0
  71. data/vendor/assets/javascripts/date/es-SV.js +195 -0
  72. data/vendor/assets/javascripts/date/es-UY.js +195 -0
  73. data/vendor/assets/javascripts/date/es-VE.js +195 -0
  74. data/vendor/assets/javascripts/date/et-EE.js +195 -0
  75. data/vendor/assets/javascripts/date/eu-ES.js +195 -0
  76. data/vendor/assets/javascripts/{datejs-extras.js → date/extras.js} +1 -1
  77. data/vendor/assets/javascripts/date/fa-IR.js +195 -0
  78. data/vendor/assets/javascripts/date/fi-FI.js +195 -0
  79. data/vendor/assets/javascripts/date/fo-FO.js +195 -0
  80. data/vendor/assets/javascripts/date/fr-BE.js +195 -0
  81. data/vendor/assets/javascripts/date/fr-CA.js +195 -0
  82. data/vendor/assets/javascripts/date/fr-CH.js +195 -0
  83. data/vendor/assets/javascripts/date/fr-FR.js +195 -0
  84. data/vendor/assets/javascripts/date/fr-LU.js +195 -0
  85. data/vendor/assets/javascripts/date/fr-MC.js +195 -0
  86. data/vendor/assets/javascripts/date/gl-ES.js +195 -0
  87. data/vendor/assets/javascripts/date/gu-IN.js +195 -0
  88. data/vendor/assets/javascripts/date/he-IL.js +195 -0
  89. data/vendor/assets/javascripts/date/hi-IN.js +195 -0
  90. data/vendor/assets/javascripts/date/hr-BA.js +195 -0
  91. data/vendor/assets/javascripts/date/hr-HR.js +195 -0
  92. data/vendor/assets/javascripts/date/hu-HU.js +195 -0
  93. data/vendor/assets/javascripts/date/hy-AM.js +195 -0
  94. data/vendor/assets/javascripts/date/id-ID.js +195 -0
  95. data/vendor/assets/javascripts/date/is-IS.js +195 -0
  96. data/vendor/assets/javascripts/date/it-CH.js +195 -0
  97. data/vendor/assets/javascripts/date/it-IT.js +195 -0
  98. data/vendor/assets/javascripts/date/ja-JP.js +195 -0
  99. data/vendor/assets/javascripts/date/ka-GE.js +195 -0
  100. data/vendor/assets/javascripts/date/kk-KZ.js +195 -0
  101. data/vendor/assets/javascripts/date/kn-IN.js +195 -0
  102. data/vendor/assets/javascripts/date/ko-KR.js +195 -0
  103. data/vendor/assets/javascripts/date/kok-IN.js +195 -0
  104. data/vendor/assets/javascripts/date/ky-KG.js +195 -0
  105. data/vendor/assets/javascripts/date/lt-LT.js +195 -0
  106. data/vendor/assets/javascripts/date/lv-LV.js +195 -0
  107. data/vendor/assets/javascripts/date/mi-NZ.js +195 -0
  108. data/vendor/assets/javascripts/date/mk-MK.js +195 -0
  109. data/vendor/assets/javascripts/date/mn-MN.js +195 -0
  110. data/vendor/assets/javascripts/date/mr-IN.js +195 -0
  111. data/vendor/assets/javascripts/date/ms-BN.js +195 -0
  112. data/vendor/assets/javascripts/date/ms-MY.js +195 -0
  113. data/vendor/assets/javascripts/date/mt-MT.js +195 -0
  114. data/vendor/assets/javascripts/date/nb-NO.js +195 -0
  115. data/vendor/assets/javascripts/date/nl-BE.js +195 -0
  116. data/vendor/assets/javascripts/date/nl-NL.js +195 -0
  117. data/vendor/assets/javascripts/date/nn-NO.js +195 -0
  118. data/vendor/assets/javascripts/date/ns-ZA.js +195 -0
  119. data/vendor/assets/javascripts/date/pa-IN.js +195 -0
  120. data/vendor/assets/javascripts/date/parser.js +1170 -0
  121. data/vendor/assets/javascripts/date/pl-PL.js +195 -0
  122. data/vendor/assets/javascripts/date/pt-BR.js +195 -0
  123. data/vendor/assets/javascripts/date/pt-PT.js +195 -0
  124. data/vendor/assets/javascripts/date/quz-BO.js +195 -0
  125. data/vendor/assets/javascripts/date/quz-EC.js +195 -0
  126. data/vendor/assets/javascripts/date/quz-PE.js +195 -0
  127. data/vendor/assets/javascripts/date/ro-RO.js +195 -0
  128. data/vendor/assets/javascripts/date/ru-RU.js +195 -0
  129. data/vendor/assets/javascripts/date/sa-IN.js +195 -0
  130. data/vendor/assets/javascripts/date/se-FI.js +195 -0
  131. data/vendor/assets/javascripts/date/se-NO.js +195 -0
  132. data/vendor/assets/javascripts/date/se-SE.js +195 -0
  133. data/vendor/assets/javascripts/date/sk-SK.js +195 -0
  134. data/vendor/assets/javascripts/date/sl-SI.js +195 -0
  135. data/vendor/assets/javascripts/date/sma-NO.js +195 -0
  136. data/vendor/assets/javascripts/date/sma-SE.js +195 -0
  137. data/vendor/assets/javascripts/date/smj-NO.js +195 -0
  138. data/vendor/assets/javascripts/date/smj-SE.js +195 -0
  139. data/vendor/assets/javascripts/date/smn-FI.js +195 -0
  140. data/vendor/assets/javascripts/date/sms-FI.js +195 -0
  141. data/vendor/assets/javascripts/date/sq-AL.js +195 -0
  142. data/vendor/assets/javascripts/date/sr-Cyrl-BA.js +195 -0
  143. data/vendor/assets/javascripts/date/sr-Cyrl-CS.js +195 -0
  144. data/vendor/assets/javascripts/date/sr-Latn-BA.js +195 -0
  145. data/vendor/assets/javascripts/date/sr-Latn-CS.js +195 -0
  146. data/vendor/assets/javascripts/date/sugarpak.js +476 -0
  147. data/vendor/assets/javascripts/date/sv-FI.js +195 -0
  148. data/vendor/assets/javascripts/date/sv-SE.js +195 -0
  149. data/vendor/assets/javascripts/date/sw-KE.js +195 -0
  150. data/vendor/assets/javascripts/date/syr-SY.js +195 -0
  151. data/vendor/assets/javascripts/date/ta-IN.js +195 -0
  152. data/vendor/assets/javascripts/date/te-IN.js +195 -0
  153. data/vendor/assets/javascripts/date/th-TH.js +195 -0
  154. data/vendor/assets/javascripts/date/time.js +269 -0
  155. data/vendor/assets/javascripts/date/tn-ZA.js +195 -0
  156. data/vendor/assets/javascripts/date/tr-TR.js +195 -0
  157. data/vendor/assets/javascripts/date/tt-RU.js +195 -0
  158. data/vendor/assets/javascripts/date/uk-UA.js +195 -0
  159. data/vendor/assets/javascripts/date/ur-PK.js +195 -0
  160. data/vendor/assets/javascripts/date/uz-Cyrl-UZ.js +195 -0
  161. data/vendor/assets/javascripts/date/uz-Latn-UZ.js +195 -0
  162. data/vendor/assets/javascripts/date/vi-VN.js +195 -0
  163. data/vendor/assets/javascripts/date/xh-ZA.js +195 -0
  164. data/vendor/assets/javascripts/date/zh-CN.js +195 -0
  165. data/vendor/assets/javascripts/date/zh-HK.js +195 -0
  166. data/vendor/assets/javascripts/date/zh-MO.js +195 -0
  167. data/vendor/assets/javascripts/date/zh-SG.js +195 -0
  168. data/vendor/assets/javascripts/date/zh-TW.js +195 -0
  169. data/vendor/assets/javascripts/date/zu-ZA.js +195 -0
  170. metadata +221 -188
  171. data/vendor/assets/javascripts/date-af-ZA.js +0 -104
  172. data/vendor/assets/javascripts/date-ar-AE.js +0 -104
  173. data/vendor/assets/javascripts/date-ar-BH.js +0 -104
  174. data/vendor/assets/javascripts/date-ar-DZ.js +0 -104
  175. data/vendor/assets/javascripts/date-ar-EG.js +0 -104
  176. data/vendor/assets/javascripts/date-ar-IQ.js +0 -104
  177. data/vendor/assets/javascripts/date-ar-JO.js +0 -104
  178. data/vendor/assets/javascripts/date-ar-KW.js +0 -104
  179. data/vendor/assets/javascripts/date-ar-LB.js +0 -104
  180. data/vendor/assets/javascripts/date-ar-LY.js +0 -104
  181. data/vendor/assets/javascripts/date-ar-MA.js +0 -104
  182. data/vendor/assets/javascripts/date-ar-OM.js +0 -104
  183. data/vendor/assets/javascripts/date-ar-QA.js +0 -104
  184. data/vendor/assets/javascripts/date-ar-SA.js +0 -104
  185. data/vendor/assets/javascripts/date-ar-SY.js +0 -104
  186. data/vendor/assets/javascripts/date-ar-TN.js +0 -104
  187. data/vendor/assets/javascripts/date-ar-YE.js +0 -104
  188. data/vendor/assets/javascripts/date-az-Cyrl-AZ.js +0 -104
  189. data/vendor/assets/javascripts/date-az-Latn-AZ.js +0 -104
  190. data/vendor/assets/javascripts/date-be-BY.js +0 -104
  191. data/vendor/assets/javascripts/date-bg-BG.js +0 -104
  192. data/vendor/assets/javascripts/date-bs-Latn-BA.js +0 -104
  193. data/vendor/assets/javascripts/date-ca-ES.js +0 -104
  194. data/vendor/assets/javascripts/date-cs-CZ.js +0 -104
  195. data/vendor/assets/javascripts/date-cy-GB.js +0 -104
  196. data/vendor/assets/javascripts/date-da-DK.js +0 -104
  197. data/vendor/assets/javascripts/date-de-AT.js +0 -104
  198. data/vendor/assets/javascripts/date-de-CH.js +0 -104
  199. data/vendor/assets/javascripts/date-de-DE.js +0 -104
  200. data/vendor/assets/javascripts/date-de-LI.js +0 -104
  201. data/vendor/assets/javascripts/date-de-LU.js +0 -104
  202. data/vendor/assets/javascripts/date-dv-MV.js +0 -104
  203. data/vendor/assets/javascripts/date-el-GR.js +0 -104
  204. data/vendor/assets/javascripts/date-en-029.js +0 -104
  205. data/vendor/assets/javascripts/date-en-AU.js +0 -104
  206. data/vendor/assets/javascripts/date-en-BZ.js +0 -104
  207. data/vendor/assets/javascripts/date-en-CA.js +0 -104
  208. data/vendor/assets/javascripts/date-en-GB.js +0 -104
  209. data/vendor/assets/javascripts/date-en-IE.js +0 -104
  210. data/vendor/assets/javascripts/date-en-JM.js +0 -104
  211. data/vendor/assets/javascripts/date-en-NZ.js +0 -104
  212. data/vendor/assets/javascripts/date-en-PH.js +0 -104
  213. data/vendor/assets/javascripts/date-en-TT.js +0 -104
  214. data/vendor/assets/javascripts/date-en-US.js +0 -104
  215. data/vendor/assets/javascripts/date-en-ZA.js +0 -104
  216. data/vendor/assets/javascripts/date-en-ZW.js +0 -104
  217. data/vendor/assets/javascripts/date-es-AR.js +0 -104
  218. data/vendor/assets/javascripts/date-es-BO.js +0 -104
  219. data/vendor/assets/javascripts/date-es-CL.js +0 -104
  220. data/vendor/assets/javascripts/date-es-CO.js +0 -104
  221. data/vendor/assets/javascripts/date-es-CR.js +0 -104
  222. data/vendor/assets/javascripts/date-es-DO.js +0 -104
  223. data/vendor/assets/javascripts/date-es-EC.js +0 -104
  224. data/vendor/assets/javascripts/date-es-ES.js +0 -104
  225. data/vendor/assets/javascripts/date-es-GT.js +0 -104
  226. data/vendor/assets/javascripts/date-es-HN.js +0 -104
  227. data/vendor/assets/javascripts/date-es-MX.js +0 -104
  228. data/vendor/assets/javascripts/date-es-NI.js +0 -104
  229. data/vendor/assets/javascripts/date-es-PA.js +0 -104
  230. data/vendor/assets/javascripts/date-es-PE.js +0 -104
  231. data/vendor/assets/javascripts/date-es-PR.js +0 -104
  232. data/vendor/assets/javascripts/date-es-PY.js +0 -104
  233. data/vendor/assets/javascripts/date-es-SV.js +0 -104
  234. data/vendor/assets/javascripts/date-es-UY.js +0 -104
  235. data/vendor/assets/javascripts/date-es-VE.js +0 -104
  236. data/vendor/assets/javascripts/date-et-EE.js +0 -104
  237. data/vendor/assets/javascripts/date-eu-ES.js +0 -104
  238. data/vendor/assets/javascripts/date-fa-IR.js +0 -104
  239. data/vendor/assets/javascripts/date-fi-FI.js +0 -104
  240. data/vendor/assets/javascripts/date-fo-FO.js +0 -104
  241. data/vendor/assets/javascripts/date-fr-BE.js +0 -104
  242. data/vendor/assets/javascripts/date-fr-CA.js +0 -104
  243. data/vendor/assets/javascripts/date-fr-CH.js +0 -104
  244. data/vendor/assets/javascripts/date-fr-FR.js +0 -104
  245. data/vendor/assets/javascripts/date-fr-LU.js +0 -104
  246. data/vendor/assets/javascripts/date-fr-MC.js +0 -104
  247. data/vendor/assets/javascripts/date-gl-ES.js +0 -104
  248. data/vendor/assets/javascripts/date-gu-IN.js +0 -104
  249. data/vendor/assets/javascripts/date-he-IL.js +0 -104
  250. data/vendor/assets/javascripts/date-hi-IN.js +0 -104
  251. data/vendor/assets/javascripts/date-hr-BA.js +0 -104
  252. data/vendor/assets/javascripts/date-hr-HR.js +0 -104
  253. data/vendor/assets/javascripts/date-hu-HU.js +0 -104
  254. data/vendor/assets/javascripts/date-hy-AM.js +0 -104
  255. data/vendor/assets/javascripts/date-id-ID.js +0 -104
  256. data/vendor/assets/javascripts/date-is-IS.js +0 -104
  257. data/vendor/assets/javascripts/date-it-CH.js +0 -104
  258. data/vendor/assets/javascripts/date-it-IT.js +0 -104
  259. data/vendor/assets/javascripts/date-ja-JP.js +0 -104
  260. data/vendor/assets/javascripts/date-ka-GE.js +0 -104
  261. data/vendor/assets/javascripts/date-kk-KZ.js +0 -104
  262. data/vendor/assets/javascripts/date-kn-IN.js +0 -104
  263. data/vendor/assets/javascripts/date-ko-KR.js +0 -104
  264. data/vendor/assets/javascripts/date-kok-IN.js +0 -104
  265. data/vendor/assets/javascripts/date-ky-KG.js +0 -104
  266. data/vendor/assets/javascripts/date-lt-LT.js +0 -104
  267. data/vendor/assets/javascripts/date-lv-LV.js +0 -104
  268. data/vendor/assets/javascripts/date-mi-NZ.js +0 -104
  269. data/vendor/assets/javascripts/date-mk-MK.js +0 -104
  270. data/vendor/assets/javascripts/date-mn-MN.js +0 -104
  271. data/vendor/assets/javascripts/date-mr-IN.js +0 -104
  272. data/vendor/assets/javascripts/date-ms-BN.js +0 -104
  273. data/vendor/assets/javascripts/date-ms-MY.js +0 -104
  274. data/vendor/assets/javascripts/date-mt-MT.js +0 -104
  275. data/vendor/assets/javascripts/date-nb-NO.js +0 -104
  276. data/vendor/assets/javascripts/date-nl-BE.js +0 -104
  277. data/vendor/assets/javascripts/date-nl-NL.js +0 -104
  278. data/vendor/assets/javascripts/date-nn-NO.js +0 -104
  279. data/vendor/assets/javascripts/date-ns-ZA.js +0 -104
  280. data/vendor/assets/javascripts/date-pa-IN.js +0 -104
  281. data/vendor/assets/javascripts/date-pl-PL.js +0 -104
  282. data/vendor/assets/javascripts/date-pt-BR.js +0 -104
  283. data/vendor/assets/javascripts/date-pt-PT.js +0 -104
  284. data/vendor/assets/javascripts/date-quz-BO.js +0 -104
  285. data/vendor/assets/javascripts/date-quz-EC.js +0 -104
  286. data/vendor/assets/javascripts/date-quz-PE.js +0 -104
  287. data/vendor/assets/javascripts/date-ro-RO.js +0 -104
  288. data/vendor/assets/javascripts/date-ru-RU.js +0 -104
  289. data/vendor/assets/javascripts/date-sa-IN.js +0 -104
  290. data/vendor/assets/javascripts/date-se-FI.js +0 -104
  291. data/vendor/assets/javascripts/date-se-NO.js +0 -104
  292. data/vendor/assets/javascripts/date-se-SE.js +0 -104
  293. data/vendor/assets/javascripts/date-sk-SK.js +0 -104
  294. data/vendor/assets/javascripts/date-sl-SI.js +0 -104
  295. data/vendor/assets/javascripts/date-sma-NO.js +0 -104
  296. data/vendor/assets/javascripts/date-sma-SE.js +0 -104
  297. data/vendor/assets/javascripts/date-smj-NO.js +0 -104
  298. data/vendor/assets/javascripts/date-smj-SE.js +0 -104
  299. data/vendor/assets/javascripts/date-smn-FI.js +0 -104
  300. data/vendor/assets/javascripts/date-sms-FI.js +0 -104
  301. data/vendor/assets/javascripts/date-sq-AL.js +0 -104
  302. data/vendor/assets/javascripts/date-sr-Cyrl-BA.js +0 -104
  303. data/vendor/assets/javascripts/date-sr-Cyrl-CS.js +0 -104
  304. data/vendor/assets/javascripts/date-sr-Latn-BA.js +0 -104
  305. data/vendor/assets/javascripts/date-sr-Latn-CS.js +0 -104
  306. data/vendor/assets/javascripts/date-sv-FI.js +0 -104
  307. data/vendor/assets/javascripts/date-sv-SE.js +0 -104
  308. data/vendor/assets/javascripts/date-sw-KE.js +0 -104
  309. data/vendor/assets/javascripts/date-syr-SY.js +0 -104
  310. data/vendor/assets/javascripts/date-ta-IN.js +0 -104
  311. data/vendor/assets/javascripts/date-te-IN.js +0 -104
  312. data/vendor/assets/javascripts/date-th-TH.js +0 -104
  313. data/vendor/assets/javascripts/date-tn-ZA.js +0 -104
  314. data/vendor/assets/javascripts/date-tr-TR.js +0 -104
  315. data/vendor/assets/javascripts/date-tt-RU.js +0 -104
  316. data/vendor/assets/javascripts/date-uk-UA.js +0 -104
  317. data/vendor/assets/javascripts/date-ur-PK.js +0 -104
  318. data/vendor/assets/javascripts/date-uz-Cyrl-UZ.js +0 -104
  319. data/vendor/assets/javascripts/date-uz-Latn-UZ.js +0 -104
  320. data/vendor/assets/javascripts/date-vi-VN.js +0 -104
  321. data/vendor/assets/javascripts/date-xh-ZA.js +0 -104
  322. data/vendor/assets/javascripts/date-zh-CN.js +0 -104
  323. data/vendor/assets/javascripts/date-zh-HK.js +0 -104
  324. data/vendor/assets/javascripts/date-zh-MO.js +0 -104
  325. data/vendor/assets/javascripts/date-zh-SG.js +0 -104
  326. data/vendor/assets/javascripts/date-zh-TW.js +0 -104
  327. data/vendor/assets/javascripts/date-zu-ZA.js +0 -104
  328. data/vendor/assets/javascripts/date.js +0 -104
@@ -0,0 +1,871 @@
1
+ /**
2
+ * @version: 1.0 Alpha-1
3
+ * @author: Coolite Inc. http://www.coolite.com/
4
+ * @date: 2008-04-13
5
+ * @copyright: Copyright (c) 2006-2008, Coolite Inc. (http://www.coolite.com/). All rights reserved.
6
+ * @license: Licensed under The MIT License. See license.txt and http://www.datejs.com/license/.
7
+ * @website: http://www.datejs.com/
8
+ */
9
+
10
+ (function () {
11
+ var $D = Date,
12
+ $P = $D.prototype,
13
+ $C = $D.CultureInfo,
14
+ p = function (s, l) {
15
+ if (!l) {
16
+ l = 2;
17
+ }
18
+ return ("000" + s).slice(l * -1);
19
+ };
20
+
21
+ /**
22
+ * Resets the time of this Date object to 12:00 AM (00:00), which is the start of the day.
23
+ * @param {Boolean} .clone() this date instance before clearing Time
24
+ * @return {Date} this
25
+ */
26
+ $P.clearTime = function () {
27
+ this.setHours(0);
28
+ this.setMinutes(0);
29
+ this.setSeconds(0);
30
+ this.setMilliseconds(0);
31
+ return this;
32
+ };
33
+
34
+ /**
35
+ * Resets the time of this Date object to the current time ('now').
36
+ * @return {Date} this
37
+ */
38
+ $P.setTimeToNow = function () {
39
+ var n = new Date();
40
+ this.setHours(n.getHours());
41
+ this.setMinutes(n.getMinutes());
42
+ this.setSeconds(n.getSeconds());
43
+ this.setMilliseconds(n.getMilliseconds());
44
+ return this;
45
+ };
46
+
47
+ /**
48
+ * Gets a date that is set to the current date. The time is set to the start of the day (00:00 or 12:00 AM).
49
+ * @return {Date} The current date.
50
+ */
51
+ $D.today = function () {
52
+ return new Date().clearTime();
53
+ };
54
+
55
+ /**
56
+ * Compares the first date to the second date and returns an number indication of their relative values.
57
+ * @param {Date} First Date object to compare [Required].
58
+ * @param {Date} Second Date object to compare to [Required].
59
+ * @return {Number} -1 = date1 is lessthan date2. 0 = values are equal. 1 = date1 is greaterthan date2.
60
+ */
61
+ $D.compare = function (date1, date2) {
62
+ if (isNaN(date1) || isNaN(date2)) {
63
+ throw new Error(date1 + " - " + date2);
64
+ } else if (date1 instanceof Date && date2 instanceof Date) {
65
+ return (date1 < date2) ? -1 : (date1 > date2) ? 1 : 0;
66
+ } else {
67
+ throw new TypeError(date1 + " - " + date2);
68
+ }
69
+ };
70
+
71
+ /**
72
+ * Compares the first Date object to the second Date object and returns true if they are equal.
73
+ * @param {Date} First Date object to compare [Required]
74
+ * @param {Date} Second Date object to compare to [Required]
75
+ * @return {Boolean} true if dates are equal. false if they are not equal.
76
+ */
77
+ $D.equals = function (date1, date2) {
78
+ return (date1.compareTo(date2) === 0);
79
+ };
80
+
81
+ /**
82
+ * Gets the day number (0-6) if given a CultureInfo specific string which is a valid dayName, abbreviatedDayName or shortestDayName (two char).
83
+ * @param {String} The name of the day (eg. "Monday, "Mon", "tuesday", "tue", "We", "we").
84
+ * @return {Number} The day number
85
+ */
86
+ $D.getDayNumberFromName = function (name) {
87
+ var n = $C.dayNames, m = $C.abbreviatedDayNames, o = $C.shortestDayNames, s = name.toLowerCase();
88
+ for (var i = 0; i < n.length; i++) {
89
+ if (n[i].toLowerCase() == s || m[i].toLowerCase() == s || o[i].toLowerCase() == s) {
90
+ return i;
91
+ }
92
+ }
93
+ return -1;
94
+ };
95
+
96
+ /**
97
+ * Gets the month number (0-11) if given a Culture Info specific string which is a valid monthName or abbreviatedMonthName.
98
+ * @param {String} The name of the month (eg. "February, "Feb", "october", "oct").
99
+ * @return {Number} The day number
100
+ */
101
+ $D.getMonthNumberFromName = function (name) {
102
+ var n = $C.monthNames, m = $C.abbreviatedMonthNames, s = name.toLowerCase();
103
+ for (var i = 0; i < n.length; i++) {
104
+ if (n[i].toLowerCase() == s || m[i].toLowerCase() == s) {
105
+ return i;
106
+ }
107
+ }
108
+ return -1;
109
+ };
110
+
111
+ /**
112
+ * Determines if the current date instance is within a LeapYear.
113
+ * @param {Number} The year.
114
+ * @return {Boolean} true if date is within a LeapYear, otherwise false.
115
+ */
116
+ $D.isLeapYear = function (year) {
117
+ return ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0);
118
+ };
119
+
120
+ /**
121
+ * Gets the number of days in the month, given a year and month value. Automatically corrects for LeapYear.
122
+ * @param {Number} The year.
123
+ * @param {Number} The month (0-11).
124
+ * @return {Number} The number of days in the month.
125
+ */
126
+ $D.getDaysInMonth = function (year, month) {
127
+ return [31, ($D.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month];
128
+ };
129
+
130
+ $D.getTimezoneAbbreviation = function (offset) {
131
+ var z = $C.timezones, p;
132
+ for (var i = 0; i < z.length; i++) {
133
+ if (z[i].offset === offset) {
134
+ return z[i].name;
135
+ }
136
+ }
137
+ return null;
138
+ };
139
+
140
+ $D.getTimezoneOffset = function (name) {
141
+ var z = $C.timezones, p;
142
+ for (var i = 0; i < z.length; i++) {
143
+ if (z[i].name === name.toUpperCase()) {
144
+ return z[i].offset;
145
+ }
146
+ }
147
+ return null;
148
+ };
149
+
150
+ /**
151
+ * Returns a new Date object that is an exact date and time copy of the original instance.
152
+ * @return {Date} A new Date instance
153
+ */
154
+ $P.clone = function () {
155
+ return new Date(this.getTime());
156
+ };
157
+
158
+ /**
159
+ * Compares this instance to a Date object and returns an number indication of their relative values.
160
+ * @param {Date} Date object to compare [Required]
161
+ * @return {Number} -1 = this is lessthan date. 0 = values are equal. 1 = this is greaterthan date.
162
+ */
163
+ $P.compareTo = function (date) {
164
+ return Date.compare(this, date);
165
+ };
166
+
167
+ /**
168
+ * Compares this instance to another Date object and returns true if they are equal.
169
+ * @param {Date} Date object to compare. If no date to compare, new Date() [now] is used.
170
+ * @return {Boolean} true if dates are equal. false if they are not equal.
171
+ */
172
+ $P.equals = function (date) {
173
+ return Date.equals(this, date || new Date());
174
+ };
175
+
176
+ /**
177
+ * Determines if this instance is between a range of two dates or equal to either the start or end dates.
178
+ * @param {Date} Start of range [Required]
179
+ * @param {Date} End of range [Required]
180
+ * @return {Boolean} true is this is between or equal to the start and end dates, else false
181
+ */
182
+ $P.between = function (start, end) {
183
+ return this.getTime() >= start.getTime() && this.getTime() <= end.getTime();
184
+ };
185
+
186
+ /**
187
+ * Determines if this date occurs after the date to compare to.
188
+ * @param {Date} Date object to compare. If no date to compare, new Date() ("now") is used.
189
+ * @return {Boolean} true if this date instance is greater than the date to compare to (or "now"), otherwise false.
190
+ */
191
+ $P.isAfter = function (date) {
192
+ return this.compareTo(date || new Date()) === 1;
193
+ };
194
+
195
+ /**
196
+ * Determines if this date occurs before the date to compare to.
197
+ * @param {Date} Date object to compare. If no date to compare, new Date() ("now") is used.
198
+ * @return {Boolean} true if this date instance is less than the date to compare to (or "now").
199
+ */
200
+ $P.isBefore = function (date) {
201
+ return (this.compareTo(date || new Date()) === -1);
202
+ };
203
+
204
+ /**
205
+ * Determines if the current Date instance occurs today.
206
+ * @return {Boolean} true if this date instance is 'today', otherwise false.
207
+ */
208
+
209
+ /**
210
+ * Determines if the current Date instance occurs on the same Date as the supplied 'date'.
211
+ * If no 'date' to compare to is provided, the current Date instance is compared to 'today'.
212
+ * @param {date} Date object to compare. If no date to compare, the current Date ("now") is used.
213
+ * @return {Boolean} true if this Date instance occurs on the same Day as the supplied 'date'.
214
+ */
215
+ $P.isToday = $P.isSameDay = function (date) {
216
+ return this.clone().clearTime().equals((date || new Date()).clone().clearTime());
217
+ };
218
+
219
+ /**
220
+ * Adds the specified number of milliseconds to this instance.
221
+ * @param {Number} The number of milliseconds to add. The number can be positive or negative [Required]
222
+ * @return {Date} this
223
+ */
224
+ $P.addMilliseconds = function (value) {
225
+ this.setMilliseconds(this.getMilliseconds() + value * 1);
226
+ return this;
227
+ };
228
+
229
+ /**
230
+ * Adds the specified number of seconds to this instance.
231
+ * @param {Number} The number of seconds to add. The number can be positive or negative [Required]
232
+ * @return {Date} this
233
+ */
234
+ $P.addSeconds = function (value) {
235
+ return this.addMilliseconds(value * 1000);
236
+ };
237
+
238
+ /**
239
+ * Adds the specified number of seconds to this instance.
240
+ * @param {Number} The number of seconds to add. The number can be positive or negative [Required]
241
+ * @return {Date} this
242
+ */
243
+ $P.addMinutes = function (value) {
244
+ return this.addMilliseconds(value * 60000); /* 60*1000 */
245
+ };
246
+
247
+ /**
248
+ * Adds the specified number of hours to this instance.
249
+ * @param {Number} The number of hours to add. The number can be positive or negative [Required]
250
+ * @return {Date} this
251
+ */
252
+ $P.addHours = function (value) {
253
+ return this.addMilliseconds(value * 3600000); /* 60*60*1000 */
254
+ };
255
+
256
+ /**
257
+ * Adds the specified number of days to this instance.
258
+ * @param {Number} The number of days to add. The number can be positive or negative [Required]
259
+ * @return {Date} this
260
+ */
261
+ $P.addDays = function (value) {
262
+ this.setDate(this.getDate() + value * 1);
263
+ return this;
264
+ };
265
+
266
+ /**
267
+ * Adds the specified number of weeks to this instance.
268
+ * @param {Number} The number of weeks to add. The number can be positive or negative [Required]
269
+ * @return {Date} this
270
+ */
271
+ $P.addWeeks = function (value) {
272
+ return this.addDays(value * 7);
273
+ };
274
+
275
+ /**
276
+ * Adds the specified number of months to this instance.
277
+ * @param {Number} The number of months to add. The number can be positive or negative [Required]
278
+ * @return {Date} this
279
+ */
280
+ $P.addMonths = function (value) {
281
+ var n = this.getDate();
282
+ this.setDate(1);
283
+ this.setMonth(this.getMonth() + value * 1);
284
+ this.setDate(Math.min(n, $D.getDaysInMonth(this.getFullYear(), this.getMonth())));
285
+ return this;
286
+ };
287
+
288
+ /**
289
+ * Adds the specified number of years to this instance.
290
+ * @param {Number} The number of years to add. The number can be positive or negative [Required]
291
+ * @return {Date} this
292
+ */
293
+ $P.addYears = function (value) {
294
+ return this.addMonths(value * 12);
295
+ };
296
+
297
+ /**
298
+ * Adds (or subtracts) to the value of the years, months, weeks, days, hours, minutes, seconds, milliseconds of the date instance using given configuration object. Positive and Negative values allowed.
299
+ * Example
300
+ <pre><code>
301
+ Date.today().add( { days: 1, months: 1 } )
302
+
303
+ new Date().add( { years: -1 } )
304
+ </code></pre>
305
+ * @param {Object} Configuration object containing attributes (months, days, etc.)
306
+ * @return {Date} this
307
+ */
308
+ $P.add = function (config) {
309
+ if (typeof config == "number") {
310
+ this._orient = config;
311
+ return this;
312
+ }
313
+
314
+ var x = config;
315
+
316
+ if (x.milliseconds) {
317
+ this.addMilliseconds(x.milliseconds);
318
+ }
319
+ if (x.seconds) {
320
+ this.addSeconds(x.seconds);
321
+ }
322
+ if (x.minutes) {
323
+ this.addMinutes(x.minutes);
324
+ }
325
+ if (x.hours) {
326
+ this.addHours(x.hours);
327
+ }
328
+ if (x.weeks) {
329
+ this.addWeeks(x.weeks);
330
+ }
331
+ if (x.months) {
332
+ this.addMonths(x.months);
333
+ }
334
+ if (x.years) {
335
+ this.addYears(x.years);
336
+ }
337
+ if (x.days) {
338
+ this.addDays(x.days);
339
+ }
340
+ return this;
341
+ };
342
+
343
+ var $y, $m, $d;
344
+
345
+ /**
346
+ * Get the week number. Week one (1) is the week which contains the first Thursday of the year. Monday is considered the first day of the week.
347
+ * This algorithm is a JavaScript port of the work presented by Claus T�ndering at http://www.tondering.dk/claus/cal/node8.html#SECTION00880000000000000000
348
+ * .getWeek() Algorithm Copyright (c) 2008 Claus Tondering.
349
+ * The .getWeek() function does NOT convert the date to UTC. The local datetime is used. Please use .getISOWeek() to get the week of the UTC converted date.
350
+ * @return {Number} 1 to 53
351
+ */
352
+ $P.getWeek = function () {
353
+ var a, b, c, d, e, f, g, n, s, w;
354
+
355
+ $y = (!$y) ? this.getFullYear() : $y;
356
+ $m = (!$m) ? this.getMonth() + 1 : $m;
357
+ $d = (!$d) ? this.getDate() : $d;
358
+
359
+ if ($m <= 2) {
360
+ a = $y - 1;
361
+ b = (a / 4 | 0) - (a / 100 | 0) + (a / 400 | 0);
362
+ c = ((a - 1) / 4 | 0) - ((a - 1) / 100 | 0) + ((a - 1) / 400 | 0);
363
+ s = b - c;
364
+ e = 0;
365
+ f = $d - 1 + (31 * ($m - 1));
366
+ } else {
367
+ a = $y;
368
+ b = (a / 4 | 0) - (a / 100 | 0) + (a / 400 | 0);
369
+ c = ((a - 1) / 4 | 0) - ((a - 1) / 100 | 0) + ((a - 1) / 400 | 0);
370
+ s = b - c;
371
+ e = s + 1;
372
+ f = $d + ((153 * ($m - 3) + 2) / 5) + 58 + s;
373
+ }
374
+
375
+ g = (a + b) % 7;
376
+ d = (f + g - e) % 7;
377
+ n = (f + 3 - d) | 0;
378
+
379
+ if (n < 0) {
380
+ w = 53 - ((g - s) / 5 | 0);
381
+ } else if (n > 364 + s) {
382
+ w = 1;
383
+ } else {
384
+ w = (n / 7 | 0) + 1;
385
+ }
386
+
387
+ $y = $m = $d = null;
388
+
389
+ return w;
390
+ };
391
+
392
+ /**
393
+ * Get the ISO 8601 week number. Week one ("01") is the week which contains the first Thursday of the year. Monday is considered the first day of the week.
394
+ * The .getISOWeek() function does convert the date to it's UTC value. Please use .getWeek() to get the week of the local date.
395
+ * @return {String} "01" to "53"
396
+ */
397
+ $P.getISOWeek = function () {
398
+ $y = this.getUTCFullYear();
399
+ $m = this.getUTCMonth() + 1;
400
+ $d = this.getUTCDate();
401
+ return p(this.getWeek());
402
+ };
403
+
404
+ /**
405
+ * Moves the date to Monday of the week set. Week one (1) is the week which contains the first Thursday of the year.
406
+ * @param {Number} A Number (1 to 53) that represents the week of the year.
407
+ * @return {Date} this
408
+ */
409
+ $P.setWeek = function (n) {
410
+ return this.moveToDayOfWeek(1).addWeeks(n - this.getWeek());
411
+ };
412
+
413
+ // private
414
+ var validate = function (n, min, max, name) {
415
+ if (typeof n == "undefined" || n == null) {
416
+ return false;
417
+ } else if (typeof n != "number") {
418
+ throw new TypeError(n + " is not a Number.");
419
+ } else if (n < min || n > max) {
420
+ throw new RangeError(n + " is not a valid value for " + name + ".");
421
+ }
422
+ return true;
423
+ };
424
+
425
+ /**
426
+ * Validates the number is within an acceptable range for milliseconds [0-999].
427
+ * @param {Number} The number to check if within range.
428
+ * @return {Boolean} true if within range, otherwise false.
429
+ */
430
+ $D.validateMillisecond = function (value) {
431
+ return validate(value, 0, 999, "millisecond");
432
+ };
433
+
434
+ /**
435
+ * Validates the number is within an acceptable range for seconds [0-59].
436
+ * @param {Number} The number to check if within range.
437
+ * @return {Boolean} true if within range, otherwise false.
438
+ */
439
+ $D.validateSecond = function (value) {
440
+ return validate(value, 0, 59, "second");
441
+ };
442
+
443
+ /**
444
+ * Validates the number is within an acceptable range for minutes [0-59].
445
+ * @param {Number} The number to check if within range.
446
+ * @return {Boolean} true if within range, otherwise false.
447
+ */
448
+ $D.validateMinute = function (value) {
449
+ return validate(value, 0, 59, "minute");
450
+ };
451
+
452
+ /**
453
+ * Validates the number is within an acceptable range for hours [0-23].
454
+ * @param {Number} The number to check if within range.
455
+ * @return {Boolean} true if within range, otherwise false.
456
+ */
457
+ $D.validateHour = function (value) {
458
+ return validate(value, 0, 23, "hour");
459
+ };
460
+
461
+ /**
462
+ * Validates the number is within an acceptable range for the days in a month [0-MaxDaysInMonth].
463
+ * @param {Number} The number to check if within range.
464
+ * @return {Boolean} true if within range, otherwise false.
465
+ */
466
+ $D.validateDay = function (value, year, month) {
467
+ return validate(value, 1, $D.getDaysInMonth(year, month), "day");
468
+ };
469
+
470
+ /**
471
+ * Validates the number is within an acceptable range for months [0-11].
472
+ * @param {Number} The number to check if within range.
473
+ * @return {Boolean} true if within range, otherwise false.
474
+ */
475
+ $D.validateMonth = function (value) {
476
+ return validate(value, 0, 11, "month");
477
+ };
478
+
479
+ /**
480
+ * Validates the number is within an acceptable range for years.
481
+ * @param {Number} The number to check if within range.
482
+ * @return {Boolean} true if within range, otherwise false.
483
+ */
484
+ $D.validateYear = function (value) {
485
+ return validate(value, 0, 9999, "year");
486
+ };
487
+
488
+ /**
489
+ * Set the value of year, month, day, hour, minute, second, millisecond of date instance using given configuration object.
490
+ * Example
491
+ <pre><code>
492
+ Date.today().set( { day: 20, month: 1 } )
493
+
494
+ new Date().set( { millisecond: 0 } )
495
+ </code></pre>
496
+ *
497
+ * @param {Object} Configuration object containing attributes (month, day, etc.)
498
+ * @return {Date} this
499
+ */
500
+ $P.set = function (config) {
501
+ if ($D.validateMillisecond(config.millisecond)) {
502
+ this.addMilliseconds(config.millisecond - this.getMilliseconds());
503
+ }
504
+
505
+ if ($D.validateSecond(config.second)) {
506
+ this.addSeconds(config.second - this.getSeconds());
507
+ }
508
+
509
+ if ($D.validateMinute(config.minute)) {
510
+ this.addMinutes(config.minute - this.getMinutes());
511
+ }
512
+
513
+ if ($D.validateHour(config.hour)) {
514
+ this.addHours(config.hour - this.getHours());
515
+ }
516
+
517
+ if ($D.validateMonth(config.month)) {
518
+ this.addMonths(config.month - this.getMonth());
519
+ }
520
+
521
+ if ($D.validateYear(config.year)) {
522
+ this.addYears(config.year - this.getFullYear());
523
+ }
524
+
525
+ /* day has to go last because you can't validate the day without first knowing the month */
526
+ if ($D.validateDay(config.day, this.getFullYear(), this.getMonth())) {
527
+ this.addDays(config.day - this.getDate());
528
+ }
529
+
530
+ if (config.timezone) {
531
+ this.setTimezone(config.timezone);
532
+ }
533
+
534
+ if (config.timezoneOffset) {
535
+ this.setTimezoneOffset(config.timezoneOffset);
536
+ }
537
+
538
+ if (config.week && validate(config.week, 0, 53, "week")) {
539
+ this.setWeek(config.week);
540
+ }
541
+
542
+ return this;
543
+ };
544
+
545
+ /**
546
+ * Moves the date to the first day of the month.
547
+ * @return {Date} this
548
+ */
549
+ $P.moveToFirstDayOfMonth = function () {
550
+ return this.set({ day: 1 });
551
+ };
552
+
553
+ /**
554
+ * Moves the date to the last day of the month.
555
+ * @return {Date} this
556
+ */
557
+ $P.moveToLastDayOfMonth = function () {
558
+ return this.set({ day: $D.getDaysInMonth(this.getFullYear(), this.getMonth())});
559
+ };
560
+
561
+ /**
562
+ * Moves the date to the next n'th occurrence of the dayOfWeek starting from the beginning of the month. The number (-1) is a magic number and will return the last occurrence of the dayOfWeek in the month.
563
+ * @param {Number} The dayOfWeek to move to
564
+ * @param {Number} The n'th occurrence to move to. Use (-1) to return the last occurrence in the month
565
+ * @return {Date} this
566
+ */
567
+ $P.moveToNthOccurrence = function (dayOfWeek, occurrence) {
568
+ var shift = 0;
569
+ if (occurrence > 0) {
570
+ shift = occurrence - 1;
571
+ }
572
+ else if (occurrence === -1) {
573
+ this.moveToLastDayOfMonth();
574
+ if (this.getDay() !== dayOfWeek) {
575
+ this.moveToDayOfWeek(dayOfWeek, -1);
576
+ }
577
+ return this;
578
+ }
579
+ return this.moveToFirstDayOfMonth().addDays(-1).moveToDayOfWeek(dayOfWeek, +1).addWeeks(shift);
580
+ };
581
+
582
+ /**
583
+ * Move to the next or last dayOfWeek based on the orient value.
584
+ * @param {Number} The dayOfWeek to move to
585
+ * @param {Number} Forward (+1) or Back (-1). Defaults to +1. [Optional]
586
+ * @return {Date} this
587
+ */
588
+ $P.moveToDayOfWeek = function (dayOfWeek, orient) {
589
+ var diff = (dayOfWeek - this.getDay() + 7 * (orient || +1)) % 7;
590
+ return this.addDays((diff === 0) ? diff += 7 * (orient || +1) : diff);
591
+ };
592
+
593
+ /**
594
+ * Move to the next or last month based on the orient value.
595
+ * @param {Number} The month to move to. 0 = January, 11 = December
596
+ * @param {Number} Forward (+1) or Back (-1). Defaults to +1. [Optional]
597
+ * @return {Date} this
598
+ */
599
+ $P.moveToMonth = function (month, orient) {
600
+ var diff = (month - this.getMonth() + 12 * (orient || +1)) % 12;
601
+ return this.addMonths((diff === 0) ? diff += 12 * (orient || +1) : diff);
602
+ };
603
+
604
+ /**
605
+ * Get the Ordinal day (numeric day number) of the year, adjusted for leap year.
606
+ * @return {Number} 1 through 365 (366 in leap years)
607
+ */
608
+ $P.getOrdinalNumber = function () {
609
+ return Math.ceil((this.clone().clearTime() - new Date(this.getFullYear(), 0, 1)) / 86400000) + 1;
610
+ };
611
+
612
+ /**
613
+ * Get the time zone abbreviation of the current date.
614
+ * @return {String} The abbreviated time zone name (e.g. "EST")
615
+ */
616
+ $P.getTimezone = function () {
617
+ return $D.getTimezoneAbbreviation(this.getUTCOffset());
618
+ };
619
+
620
+ $P.setTimezoneOffset = function (offset) {
621
+ var here = this.getTimezoneOffset(), there = Number(offset) * -6 / 10;
622
+ return this.addMinutes(there - here);
623
+ };
624
+
625
+ $P.setTimezone = function (offset) {
626
+ return this.setTimezoneOffset($D.getTimezoneOffset(offset));
627
+ };
628
+
629
+ /**
630
+ * Indicates whether Daylight Saving Time is observed in the current time zone.
631
+ * @return {Boolean} true|false
632
+ */
633
+ $P.hasDaylightSavingTime = function () {
634
+ return (Date.today().set({month: 0, day: 1}).getTimezoneOffset() !== Date.today().set({month: 6, day: 1}).getTimezoneOffset());
635
+ };
636
+
637
+ /**
638
+ * Indicates whether this Date instance is within the Daylight Saving Time range for the current time zone.
639
+ * @return {Boolean} true|false
640
+ */
641
+ $P.isDaylightSavingTime = function () {
642
+ return Date.today().set({month: 0, day: 1}).getTimezoneOffset() != this.getTimezoneOffset();
643
+ };
644
+
645
+ /**
646
+ * Get the offset from UTC of the current date.
647
+ * @return {String} The 4-character offset string prefixed with + or - (e.g. "-0500")
648
+ */
649
+ $P.getUTCOffset = function () {
650
+ var n = this.getTimezoneOffset() * -10 / 6, r;
651
+ if (n < 0) {
652
+ r = (n - 10000).toString();
653
+ return r.charAt(0) + r.substr(2);
654
+ } else {
655
+ r = (n + 10000).toString();
656
+ return "+" + r.substr(1);
657
+ }
658
+ };
659
+
660
+ /**
661
+ * Returns the number of milliseconds between this date and date.
662
+ * @param {Date} Defaults to now
663
+ * @return {Number} The diff in milliseconds
664
+ */
665
+ $P.getElapsed = function (date) {
666
+ return (date || new Date()) - this;
667
+ };
668
+
669
+ if (!$P.toISOString) {
670
+ /**
671
+ * Converts the current date instance into a string with an ISO 8601 format. The date is converted to it's UTC value.
672
+ * @return {String} ISO 8601 string of date
673
+ */
674
+ $P.toISOString = function () {
675
+ // From http://www.json.org/json.js. Public Domain.
676
+ function f(n) {
677
+ return n < 10 ? '0' + n : n;
678
+ }
679
+ function h(i){
680
+ return i.length < 2 ? "00" + i :
681
+ i.length < 3 ? "0" + i :
682
+ 3 < i.length ? Math.round(i/Math.pow(10,i.length-3)) : i
683
+ }
684
+
685
+ return '"' + this.getUTCFullYear() + '-' +
686
+ f(this.getUTCMonth() + 1) + '-' +
687
+ f(this.getUTCDate()) + 'T' +
688
+ f(this.getUTCHours()) + ':' +
689
+ f(this.getUTCMinutes()) + ':' +
690
+ f(this.getUTCSeconds()) + '.' +
691
+ h(this.getUTCMilliseconds()) + 'Z"';
692
+ };
693
+ }
694
+
695
+ // private
696
+ $P._toString = $P.toString;
697
+
698
+ /**
699
+ * Converts the value of the current Date object to its equivalent string representation.
700
+ * Format Specifiers
701
+ <pre>
702
+ CUSTOM DATE AND TIME FORMAT STRINGS
703
+ Format Description Example
704
+ ------ --------------------------------------------------------------------------- -----------------------
705
+ s The seconds of the minute between 0-59. "0" to "59"
706
+ ss The seconds of the minute with leading zero if required. "00" to "59"
707
+
708
+ m The minute of the hour between 0-59. "0" or "59"
709
+ mm The minute of the hour with leading zero if required. "00" or "59"
710
+
711
+ h The hour of the day between 1-12. "1" to "12"
712
+ hh The hour of the day with leading zero if required. "01" to "12"
713
+
714
+ H The hour of the day between 0-23. "0" to "23"
715
+ HH The hour of the day with leading zero if required. "00" to "23"
716
+
717
+ d The day of the month between 1 and 31. "1" to "31"
718
+ dd The day of the month with leading zero if required. "01" to "31"
719
+ ddd Abbreviated day name. $C.abbreviatedDayNames. "Mon" to "Sun"
720
+ dddd The full day name. $C.dayNames. "Monday" to "Sunday"
721
+
722
+ M The month of the year between 1-12. "1" to "12"
723
+ MM The month of the year with leading zero if required. "01" to "12"
724
+ MMM Abbreviated month name. $C.abbreviatedMonthNames. "Jan" to "Dec"
725
+ MMMM The full month name. $C.monthNames. "January" to "December"
726
+
727
+ yy The year as a two-digit number. "99" or "08"
728
+ yyyy The full four digit year. "1999" or "2008"
729
+
730
+ t Displays the first character of the A.M./P.M. designator. "A" or "P"
731
+ $C.amDesignator or $C.pmDesignator
732
+ tt Displays the A.M./P.M. designator. "AM" or "PM"
733
+ $C.amDesignator or $C.pmDesignator
734
+
735
+ S The ordinal suffix ("st, "nd", "rd" or "th") of the current day. "st, "nd", "rd" or "th"
736
+
737
+ || *Format* || *Description* || *Example* ||
738
+ || d || The CultureInfo shortDate Format Pattern || "M/d/yyyy" ||
739
+ || D || The CultureInfo longDate Format Pattern || "dddd, MMMM dd, yyyy" ||
740
+ || F || The CultureInfo fullDateTime Format Pattern || "dddd, MMMM dd, yyyy h:mm:ss tt" ||
741
+ || m || The CultureInfo monthDay Format Pattern || "MMMM dd" ||
742
+ || r || The CultureInfo rfc1123 Format Pattern || "ddd, dd MMM yyyy HH:mm:ss GMT" ||
743
+ || s || The CultureInfo sortableDateTime Format Pattern || "yyyy-MM-ddTHH:mm:ss" ||
744
+ || t || The CultureInfo shortTime Format Pattern || "h:mm tt" ||
745
+ || T || The CultureInfo longTime Format Pattern || "h:mm:ss tt" ||
746
+ || u || The CultureInfo universalSortableDateTime Format Pattern || "yyyy-MM-dd HH:mm:ssZ" ||
747
+ || y || The CultureInfo yearMonth Format Pattern || "MMMM, yyyy" ||
748
+
749
+
750
+ STANDARD DATE AND TIME FORMAT STRINGS
751
+ Format Description Example ("en-US")
752
+ ------ --------------------------------------------------------------------------- -----------------------
753
+ d The CultureInfo shortDate Format Pattern "M/d/yyyy"
754
+ D The CultureInfo longDate Format Pattern "dddd, MMMM dd, yyyy"
755
+ F The CultureInfo fullDateTime Format Pattern "dddd, MMMM dd, yyyy h:mm:ss tt"
756
+ m The CultureInfo monthDay Format Pattern "MMMM dd"
757
+ r The CultureInfo rfc1123 Format Pattern "ddd, dd MMM yyyy HH:mm:ss GMT"
758
+ s The CultureInfo sortableDateTime Format Pattern "yyyy-MM-ddTHH:mm:ss"
759
+ t The CultureInfo shortTime Format Pattern "h:mm tt"
760
+ T The CultureInfo longTime Format Pattern "h:mm:ss tt"
761
+ u The CultureInfo universalSortableDateTime Format Pattern "yyyy-MM-dd HH:mm:ssZ"
762
+ y The CultureInfo yearMonth Format Pattern "MMMM, yyyy"
763
+ </pre>
764
+ * @param {String} A format string consisting of one or more format spcifiers [Optional].
765
+ * @return {String} A string representation of the current Date object.
766
+ */
767
+ $P.toString = function (format) {
768
+ var x = this;
769
+
770
+ // Standard Date and Time Format Strings. Formats pulled from CultureInfo file and
771
+ // may vary by culture.
772
+ if (format && format.length == 1) {
773
+ var c = $C.formatPatterns;
774
+ x.t = x.toString;
775
+ switch (format) {
776
+ case "d":
777
+ return x.t(c.shortDate);
778
+ case "D":
779
+ return x.t(c.longDate);
780
+ case "F":
781
+ return x.t(c.fullDateTime);
782
+ case "m":
783
+ return x.t(c.monthDay);
784
+ case "r":
785
+ return x.t(c.rfc1123);
786
+ case "s":
787
+ return x.t(c.sortableDateTime);
788
+ case "t":
789
+ return x.t(c.shortTime);
790
+ case "T":
791
+ return x.t(c.longTime);
792
+ case "u":
793
+ return x.t(c.universalSortableDateTime);
794
+ case "y":
795
+ return x.t(c.yearMonth);
796
+ }
797
+ }
798
+
799
+ var ord = function (n) {
800
+ switch (n * 1) {
801
+ case 1:
802
+ case 21:
803
+ case 31:
804
+ return "st";
805
+ case 2:
806
+ case 22:
807
+ return "nd";
808
+ case 3:
809
+ case 23:
810
+ return "rd";
811
+ default:
812
+ return "th";
813
+ }
814
+ };
815
+
816
+ return format ? format.replace(/(\\)?(dd?d?d?|MM?M?M?|yy?y?y?|hh?|HH?|mm?|ss?|tt?|S)/g,
817
+ function (m) {
818
+ if (m.charAt(0) === "\\") {
819
+ return m.replace("\\", "");
820
+ }
821
+ x.h = x.getHours;
822
+ switch (m) {
823
+ case "hh":
824
+ return p(x.h() < 13 ? (x.h() === 0 ? 12 : x.h()) : (x.h() - 12));
825
+ case "h":
826
+ return x.h() < 13 ? (x.h() === 0 ? 12 : x.h()) : (x.h() - 12);
827
+ case "HH":
828
+ return p(x.h());
829
+ case "H":
830
+ return x.h();
831
+ case "mm":
832
+ return p(x.getMinutes());
833
+ case "m":
834
+ return x.getMinutes();
835
+ case "ss":
836
+ return p(x.getSeconds());
837
+ case "s":
838
+ return x.getSeconds();
839
+ case "yyyy":
840
+ return p(x.getFullYear(), 4);
841
+ case "yy":
842
+ return p(x.getFullYear());
843
+ case "dddd":
844
+ return $C.dayNames[x.getDay()];
845
+ case "ddd":
846
+ return $C.abbreviatedDayNames[x.getDay()];
847
+ case "dd":
848
+ return p(x.getDate());
849
+ case "d":
850
+ return x.getDate();
851
+ case "MMMM":
852
+ return $C.monthNames[x.getMonth()];
853
+ case "MMM":
854
+ return $C.abbreviatedMonthNames[x.getMonth()];
855
+ case "MM":
856
+ return p((x.getMonth() + 1));
857
+ case "M":
858
+ return x.getMonth() + 1;
859
+ case "t":
860
+ return x.h() < 12 ? $C.amDesignator.substring(0, 1) : $C.pmDesignator.substring(0, 1);
861
+ case "tt":
862
+ return x.h() < 12 ? $C.amDesignator : $C.pmDesignator;
863
+ case "S":
864
+ return ord(x.getDate());
865
+ default:
866
+ return m;
867
+ }
868
+ }
869
+ ) : this._toString();
870
+ };
871
+ }());