xdan-datetimepicker-rails 2.4.5 → 2.4.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b02fb62a9ce53094f451362edc2804adb17ebbd9
4
- data.tar.gz: 073f3908166f9c570a56fc6a9396524237d68b76
3
+ metadata.gz: 0d587117d8b3dd751445bda248d2c6b46ef45b30
4
+ data.tar.gz: 5d0962a757bb44cc70825ad49242f79d658459cd
5
5
  SHA512:
6
- metadata.gz: 548e5526320f218abde9ec644066eefa2515e034ac9d2d96c4129a9e755ac314892cbd3be64c075a971ce11069228a0e7f58351530a3ee809ca1d02519781c0e
7
- data.tar.gz: 07c2135936094bf896c44d81a2e861951863b88340de800f5eb20f67fa0181d6eb10835f05e4dabffeb5213ddd8870054559e8037333e2ea78d10f17e0faaf3b
6
+ metadata.gz: 5d36112cc732842885de3ab9666d609f8723996d3ac905135b3e1d14d0369823ff599b3bbeda91f297a1b6992fe3dbf20e4e2f2b5ddb4fec05e80546a0a946ce
7
+ data.tar.gz: 670f1d6f61b57633a4b9177803dd703e22f1c55a6faf4c5f86ee5dc6722119814d8d0142245b20fa2cf462806a4ba155875c3db8d68a0e9470ca09e60ad27462
@@ -1,10 +1,21 @@
1
1
  /**
2
- * @preserve jQuery DateTimePicker plugin v2.4.5
2
+ * @preserve jQuery DateTimePicker plugin v2.4.6
3
3
  * @homepage http://xdsoft.net/jqplugins/datetimepicker/
4
- * (c) 2014, Chupurnov Valeriy.
4
+ * @author Chupurnov Valeriy (<chupurnov@gmail.com>)
5
5
  */
6
- /*global document,window,jQuery,setTimeout,clearTimeout,HighlightedDate,getCurrentValue*/
7
- (function ($) {
6
+ /*global DateFormatter, document,window,jQuery,setTimeout,clearTimeout,HighlightedDate,getCurrentValue*/
7
+ ;(function (factory) {
8
+ if ( typeof define === 'function' && define.amd ) {
9
+ // AMD. Register as an anonymous module.
10
+ define(['jquery', 'jquery-mousewheel', 'date-functions'], factory);
11
+ } else if (typeof exports === 'object') {
12
+ // Node/CommonJS style for Browserify
13
+ module.exports = factory;
14
+ } else {
15
+ // Browser globals
16
+ factory(jQuery);
17
+ }
18
+ }(function ($) {
8
19
  'use strict';
9
20
  var default_options = {
10
21
  i18n: {
@@ -12,151 +23,169 @@
12
23
  months: [
13
24
  "كانون الثاني", "شباط", "آذار", "نيسان", "مايو", "حزيران", "تموز", "آب", "أيلول", "تشرين الأول", "تشرين الثاني", "كانون الأول"
14
25
  ],
15
- dayOfWeek: [
26
+ dayOfWeekShort: [
16
27
  "ن", "ث", "ع", "خ", "ج", "س", "ح"
17
- ]
28
+ ],
29
+ dayOfWeek: ["الأحد", "الاثنين", "الثلاثاء", "الأربعاء", "الخميس", "الجمعة", "السبت", "الأحد"]
18
30
  },
19
31
  ro: { // Romanian
20
32
  months: [
21
- "ianuarie", "februarie", "martie", "aprilie", "mai", "iunie", "iulie", "august", "septembrie", "octombrie", "noiembrie", "decembrie"
33
+ "Ianuarie", "Februarie", "Martie", "Aprilie", "Mai", "Iunie", "Iulie", "August", "Septembrie", "Octombrie", "Noiembrie", "Decembrie"
22
34
  ],
23
- dayOfWeek: [
24
- "l", "ma", "mi", "j", "v", "s", "d"
25
- ]
35
+ dayOfWeekShort: [
36
+ "Du", "Lu", "Ma", "Mi", "Jo", "Vi", ""
37
+ ],
38
+ dayOfWeek: ["Duminică", "Luni", "Marţi", "Miercuri", "Joi", "Vineri", "Sâmbătă"]
26
39
  },
27
40
  id: { // Indonesian
28
41
  months: [
29
42
  "Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember"
30
43
  ],
31
- dayOfWeek: [
44
+ dayOfWeekShort: [
32
45
  "Min", "Sen", "Sel", "Rab", "Kam", "Jum", "Sab"
33
- ]
46
+ ],
47
+ dayOfWeek: ["Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu"]
34
48
  },
35
49
  is: { // Icelandic
36
50
  months: [
37
51
  "Janúar", "Febrúar", "Mars", "Apríl", "Maí", "Júní", "Júlí", "Ágúst", "September", "Október", "Nóvember", "Desember"
38
52
  ],
39
- dayOfWeek: [
53
+ dayOfWeekShort: [
40
54
  "Sun", "Mán", "Þrið", "Mið", "Fim", "Fös", "Lau"
41
- ]
55
+ ],
56
+ dayOfWeek: ["Sunnudagur", "Mánudagur", "Þriðjudagur", "Miðvikudagur", "Fimmtudagur", "Föstudagur", "Laugardagur"]
42
57
  },
43
58
  bg: { // Bulgarian
44
59
  months: [
45
60
  "Януари", "Февруари", "Март", "Април", "Май", "Юни", "Юли", "Август", "Септември", "Октомври", "Ноември", "Декември"
46
61
  ],
47
- dayOfWeek: [
62
+ dayOfWeekShort: [
48
63
  "Нд", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб"
49
- ]
64
+ ],
65
+ dayOfWeek: ["Неделя", "Понеделник", "Вторник", "Сряда", "Четвъртък", "Петък", "Събота"]
50
66
  },
51
67
  fa: { // Persian/Farsi
52
68
  months: [
53
69
  'فروردین', 'اردیبهشت', 'خرداد', 'تیر', 'مرداد', 'شهریور', 'مهر', 'آبان', 'آذر', 'دی', 'بهمن', 'اسفند'
54
70
  ],
55
- dayOfWeek: [
71
+ dayOfWeekShort: [
56
72
  'یکشنبه', 'دوشنبه', 'سه شنبه', 'چهارشنبه', 'پنجشنبه', 'جمعه', 'شنبه'
57
- ]
73
+ ],
74
+ dayOfWeek: ["یک‌شنبه", "دوشنبه", "سه‌شنبه", "چهارشنبه", "پنج‌شنبه", "جمعه", "شنبه", "یک‌شنبه"]
58
75
  },
59
76
  ru: { // Russian
60
77
  months: [
61
78
  'Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'
62
79
  ],
63
- dayOfWeek: [
64
- "Вск", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб"
65
- ]
80
+ dayOfWeekShort: [
81
+ "Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб"
82
+ ],
83
+ dayOfWeek: ["Воскресенье", "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота"]
66
84
  },
67
85
  uk: { // Ukrainian
68
86
  months: [
69
87
  'Січень', 'Лютий', 'Березень', 'Квітень', 'Травень', 'Червень', 'Липень', 'Серпень', 'Вересень', 'Жовтень', 'Листопад', 'Грудень'
70
88
  ],
71
- dayOfWeek: [
89
+ dayOfWeekShort: [
72
90
  "Ндл", "Пнд", "Втр", "Срд", "Чтв", "Птн", "Сбт"
73
- ]
91
+ ],
92
+ dayOfWeek: ["Неділя", "Понеділок", "Вівторок", "Середа", "Четвер", "П'ятниця", "Субота"]
74
93
  },
75
94
  en: { // English
76
95
  months: [
77
96
  "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
78
97
  ],
79
- dayOfWeek: [
98
+ dayOfWeekShort: [
80
99
  "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
81
- ]
100
+ ],
101
+ dayOfWeek: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
82
102
  },
83
103
  el: { // Ελληνικά
84
104
  months: [
85
105
  "Ιανουάριος", "Φεβρουάριος", "Μάρτιος", "Απρίλιος", "Μάιος", "Ιούνιος", "Ιούλιος", "Αύγουστος", "Σεπτέμβριος", "Οκτώβριος", "Νοέμβριος", "Δεκέμβριος"
86
106
  ],
87
- dayOfWeek: [
107
+ dayOfWeekShort: [
88
108
  "Κυρ", "Δευ", "Τρι", "Τετ", "Πεμ", "Παρ", "Σαβ"
89
- ]
109
+ ],
110
+ dayOfWeek: ["Κυριακή", "Δευτέρα", "Τρίτη", "Τετάρτη", "Πέμπτη", "Παρασκευή", "Σάββατο"]
90
111
  },
91
112
  de: { // German
92
113
  months: [
93
114
  'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'
94
115
  ],
95
- dayOfWeek: [
116
+ dayOfWeekShort: [
96
117
  "So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"
97
- ]
118
+ ],
119
+ dayOfWeek: ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"]
98
120
  },
99
121
  nl: { // Dutch
100
122
  months: [
101
123
  "januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december"
102
124
  ],
103
- dayOfWeek: [
125
+ dayOfWeekShort: [
104
126
  "zo", "ma", "di", "wo", "do", "vr", "za"
105
- ]
127
+ ],
128
+ dayOfWeek: ["zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag"]
106
129
  },
107
130
  tr: { // Turkish
108
131
  months: [
109
132
  "Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık"
110
133
  ],
111
- dayOfWeek: [
134
+ dayOfWeekShort: [
112
135
  "Paz", "Pts", "Sal", "Çar", "Per", "Cum", "Cts"
113
- ]
136
+ ],
137
+ dayOfWeek: ["Pazar", "Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma", "Cumartesi"]
114
138
  },
115
139
  fr: { //French
116
140
  months: [
117
141
  "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"
118
142
  ],
119
- dayOfWeek: [
143
+ dayOfWeekShort: [
120
144
  "Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam"
121
- ]
145
+ ],
146
+ dayOfWeek: ["dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"]
122
147
  },
123
148
  es: { // Spanish
124
149
  months: [
125
150
  "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"
126
151
  ],
127
- dayOfWeek: [
152
+ dayOfWeekShort: [
128
153
  "Dom", "Lun", "Mar", "Mié", "Jue", "Vie", "Sáb"
129
- ]
154
+ ],
155
+ dayOfWeek: ["Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado"]
130
156
  },
131
157
  th: { // Thai
132
158
  months: [
133
159
  'มกราคม', 'กุมภาพันธ์', 'มีนาคม', 'เมษายน', 'พฤษภาคม', 'มิถุนายน', 'กรกฎาคม', 'สิงหาคม', 'กันยายน', 'ตุลาคม', 'พฤศจิกายน', 'ธันวาคม'
134
160
  ],
135
- dayOfWeek: [
161
+ dayOfWeekShort: [
136
162
  'อา.', 'จ.', 'อ.', 'พ.', 'พฤ.', 'ศ.', 'ส.'
137
- ]
163
+ ],
164
+ dayOfWeek: ["อาทิตย์", "จันทร์", "อังคาร", "พุธ", "พฤหัส", "ศุกร์", "เสาร์", "อาทิตย์"]
138
165
  },
139
166
  pl: { // Polish
140
167
  months: [
141
168
  "styczeń", "luty", "marzec", "kwiecień", "maj", "czerwiec", "lipiec", "sierpień", "wrzesień", "październik", "listopad", "grudzień"
142
169
  ],
143
- dayOfWeek: [
170
+ dayOfWeekShort: [
144
171
  "nd", "pn", "wt", "śr", "cz", "pt", "sb"
145
- ]
172
+ ],
173
+ dayOfWeek: ["niedziela", "poniedziałek", "wtorek", "środa", "czwartek", "piątek", "sobota"]
146
174
  },
147
175
  pt: { // Portuguese
148
176
  months: [
149
177
  "Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"
150
178
  ],
151
- dayOfWeek: [
179
+ dayOfWeekShort: [
152
180
  "Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sab"
153
- ]
181
+ ],
182
+ dayOfWeek: ["Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado"]
154
183
  },
155
184
  ch: { // Simplified Chinese
156
185
  months: [
157
186
  "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"
158
187
  ],
159
- dayOfWeek: [
188
+ dayOfWeekShort: [
160
189
  "日", "一", "二", "三", "四", "五", "六"
161
190
  ]
162
191
  },
@@ -164,7 +193,7 @@
164
193
  months: [
165
194
  "Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September", "Oktober", "November", "December"
166
195
  ],
167
- dayOfWeek: [
196
+ dayOfWeekShort: [
168
197
  "Sön", "Mån", "Tis", "Ons", "Tor", "Fre", "Lör"
169
198
  ]
170
199
  },
@@ -172,63 +201,70 @@
172
201
  months: [
173
202
  "1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"
174
203
  ],
175
- dayOfWeek: [
204
+ dayOfWeekShort: [
176
205
  "일", "월", "화", "수", "목", "금", "토"
177
- ]
206
+ ],
207
+ dayOfWeek: ["일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일"]
178
208
  },
179
209
  it: { // Italian
180
210
  months: [
181
211
  "Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"
182
212
  ],
183
- dayOfWeek: [
213
+ dayOfWeekShort: [
184
214
  "Dom", "Lun", "Mar", "Mer", "Gio", "Ven", "Sab"
185
- ]
215
+ ],
216
+ dayOfWeek: ["Domenica", "Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato"]
186
217
  },
187
218
  da: { // Dansk
188
219
  months: [
189
220
  "January", "Februar", "Marts", "April", "Maj", "Juni", "July", "August", "September", "Oktober", "November", "December"
190
221
  ],
191
- dayOfWeek: [
222
+ dayOfWeekShort: [
192
223
  "Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør"
193
- ]
224
+ ],
225
+ dayOfWeek: ["søndag", "mandag", "tirsdag", "onsdag", "torsdag", "fredag", "lørdag"]
194
226
  },
195
227
  no: { // Norwegian
196
228
  months: [
197
229
  "Januar", "Februar", "Mars", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Desember"
198
230
  ],
199
- dayOfWeek: [
231
+ dayOfWeekShort: [
200
232
  "Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør"
201
- ]
233
+ ],
234
+ dayOfWeek: ['Søndag', 'Mandag', 'Tirsdag', 'Onsdag', 'Torsdag', 'Fredag', 'Lørdag']
202
235
  },
203
236
  ja: { // Japanese
204
237
  months: [
205
238
  "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"
206
239
  ],
207
- dayOfWeek: [
240
+ dayOfWeekShort: [
208
241
  "日", "月", "火", "水", "木", "金", "土"
209
- ]
242
+ ],
243
+ dayOfWeek: ["日曜", "月曜", "火曜", "水曜", "木曜", "金曜", "土曜"]
210
244
  },
211
245
  vi: { // Vietnamese
212
246
  months: [
213
247
  "Tháng 1", "Tháng 2", "Tháng 3", "Tháng 4", "Tháng 5", "Tháng 6", "Tháng 7", "Tháng 8", "Tháng 9", "Tháng 10", "Tháng 11", "Tháng 12"
214
248
  ],
215
- dayOfWeek: [
249
+ dayOfWeekShort: [
216
250
  "CN", "T2", "T3", "T4", "T5", "T6", "T7"
217
- ]
251
+ ],
252
+ dayOfWeek: ["Chủ nhật", "Thứ hai", "Thứ ba", "Thứ tư", "Thứ năm", "Thứ sáu", "Thứ bảy"]
218
253
  },
219
254
  sl: { // Slovenščina
220
255
  months: [
221
256
  "Januar", "Februar", "Marec", "April", "Maj", "Junij", "Julij", "Avgust", "September", "Oktober", "November", "December"
222
257
  ],
223
- dayOfWeek: [
258
+ dayOfWeekShort: [
224
259
  "Ned", "Pon", "Tor", "Sre", "Čet", "Pet", "Sob"
225
- ]
260
+ ],
261
+ dayOfWeek: ["Nedelja", "Ponedeljek", "Torek", "Sreda", "Četrtek", "Petek", "Sobota"]
226
262
  },
227
263
  cs: { // Čeština
228
264
  months: [
229
265
  "Leden", "Únor", "Březen", "Duben", "Květen", "Červen", "Červenec", "Srpen", "Září", "Říjen", "Listopad", "Prosinec"
230
266
  ],
231
- dayOfWeek: [
267
+ dayOfWeekShort: [
232
268
  "Ne", "Po", "Út", "St", "Čt", "Pá", "So"
233
269
  ]
234
270
  },
@@ -236,213 +272,252 @@
236
272
  months: [
237
273
  "Január", "Február", "Március", "Április", "Május", "Június", "Július", "Augusztus", "Szeptember", "Október", "November", "December"
238
274
  ],
239
- dayOfWeek: [
275
+ dayOfWeekShort: [
240
276
  "Va", "Hé", "Ke", "Sze", "Cs", "Pé", "Szo"
241
- ]
277
+ ],
278
+ dayOfWeek: ["vasárnap", "hétfő", "kedd", "szerda", "csütörtök", "péntek", "szombat"]
242
279
  },
243
280
  az: { //Azerbaijanian (Azeri)
244
281
  months: [
245
282
  "Yanvar", "Fevral", "Mart", "Aprel", "May", "Iyun", "Iyul", "Avqust", "Sentyabr", "Oktyabr", "Noyabr", "Dekabr"
246
283
  ],
247
- dayOfWeek: [
284
+ dayOfWeekShort: [
248
285
  "B", "Be", "Ça", "Ç", "Ca", "C", "Ş"
249
- ]
286
+ ],
287
+ dayOfWeek: ["Bazar", "Bazar ertəsi", "Çərşənbə axşamı", "Çərşənbə", "Cümə axşamı", "Cümə", "Şənbə"]
250
288
  },
251
289
  bs: { //Bosanski
252
290
  months: [
253
291
  "Januar", "Februar", "Mart", "April", "Maj", "Jun", "Jul", "Avgust", "Septembar", "Oktobar", "Novembar", "Decembar"
254
292
  ],
255
- dayOfWeek: [
293
+ dayOfWeekShort: [
256
294
  "Ned", "Pon", "Uto", "Sri", "Čet", "Pet", "Sub"
257
- ]
295
+ ],
296
+ dayOfWeek: ["Nedjelja","Ponedjeljak", "Utorak", "Srijeda", "Četvrtak", "Petak", "Subota"]
258
297
  },
259
298
  ca: { //Català
260
299
  months: [
261
300
  "Gener", "Febrer", "Març", "Abril", "Maig", "Juny", "Juliol", "Agost", "Setembre", "Octubre", "Novembre", "Desembre"
262
301
  ],
263
- dayOfWeek: [
302
+ dayOfWeekShort: [
264
303
  "Dg", "Dl", "Dt", "Dc", "Dj", "Dv", "Ds"
265
- ]
304
+ ],
305
+ dayOfWeek: ["Diumenge", "Dilluns", "Dimarts", "Dimecres", "Dijous", "Divendres", "Dissabte"]
266
306
  },
267
307
  'en-GB': { //English (British)
268
308
  months: [
269
309
  "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
270
310
  ],
271
- dayOfWeek: [
311
+ dayOfWeekShort: [
272
312
  "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
273
- ]
313
+ ],
314
+ dayOfWeek: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
274
315
  },
275
316
  et: { //"Eesti"
276
317
  months: [
277
318
  "Jaanuar", "Veebruar", "Märts", "Aprill", "Mai", "Juuni", "Juuli", "August", "September", "Oktoober", "November", "Detsember"
278
319
  ],
279
- dayOfWeek: [
320
+ dayOfWeekShort: [
280
321
  "P", "E", "T", "K", "N", "R", "L"
281
- ]
322
+ ],
323
+ dayOfWeek: ["Pühapäev", "Esmaspäev", "Teisipäev", "Kolmapäev", "Neljapäev", "Reede", "Laupäev"]
282
324
  },
283
325
  eu: { //Euskara
284
326
  months: [
285
327
  "Urtarrila", "Otsaila", "Martxoa", "Apirila", "Maiatza", "Ekaina", "Uztaila", "Abuztua", "Iraila", "Urria", "Azaroa", "Abendua"
286
328
  ],
287
- dayOfWeek: [
329
+ dayOfWeekShort: [
288
330
  "Ig.", "Al.", "Ar.", "Az.", "Og.", "Or.", "La."
289
- ]
331
+ ],
332
+ dayOfWeek: ['Igandea', 'Astelehena', 'Asteartea', 'Asteazkena', 'Osteguna', 'Ostirala', 'Larunbata']
290
333
  },
291
334
  fi: { //Finnish (Suomi)
292
335
  months: [
293
336
  "Tammikuu", "Helmikuu", "Maaliskuu", "Huhtikuu", "Toukokuu", "Kesäkuu", "Heinäkuu", "Elokuu", "Syyskuu", "Lokakuu", "Marraskuu", "Joulukuu"
294
337
  ],
295
- dayOfWeek: [
338
+ dayOfWeekShort: [
296
339
  "Su", "Ma", "Ti", "Ke", "To", "Pe", "La"
297
- ]
340
+ ],
341
+ dayOfWeek: ["sunnuntai", "maanantai", "tiistai", "keskiviikko", "torstai", "perjantai", "lauantai"]
298
342
  },
299
343
  gl: { //Galego
300
344
  months: [
301
345
  "Xan", "Feb", "Maz", "Abr", "Mai", "Xun", "Xul", "Ago", "Set", "Out", "Nov", "Dec"
302
346
  ],
303
- dayOfWeek: [
347
+ dayOfWeekShort: [
304
348
  "Dom", "Lun", "Mar", "Mer", "Xov", "Ven", "Sab"
305
- ]
349
+ ],
350
+ dayOfWeek: ["Domingo", "Luns", "Martes", "Mércores", "Xoves", "Venres", "Sábado"]
306
351
  },
307
352
  hr: { //Hrvatski
308
353
  months: [
309
354
  "Siječanj", "Veljača", "Ožujak", "Travanj", "Svibanj", "Lipanj", "Srpanj", "Kolovoz", "Rujan", "Listopad", "Studeni", "Prosinac"
310
355
  ],
311
- dayOfWeek: [
356
+ dayOfWeekShort: [
312
357
  "Ned", "Pon", "Uto", "Sri", "Čet", "Pet", "Sub"
313
- ]
358
+ ],
359
+ dayOfWeek: ["Nedjelja", "Ponedjeljak", "Utorak", "Srijeda", "Četvrtak", "Petak", "Subota"]
314
360
  },
315
361
  ko: { //Korean (한국어)
316
362
  months: [
317
363
  "1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"
318
364
  ],
319
- dayOfWeek: [
365
+ dayOfWeekShort: [
320
366
  "일", "월", "화", "수", "목", "금", "토"
321
- ]
367
+ ],
368
+ dayOfWeek: ["일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일"]
322
369
  },
323
370
  lt: { //Lithuanian (lietuvių)
324
371
  months: [
325
372
  "Sausio", "Vasario", "Kovo", "Balandžio", "Gegužės", "Birželio", "Liepos", "Rugpjūčio", "Rugsėjo", "Spalio", "Lapkričio", "Gruodžio"
326
373
  ],
327
- dayOfWeek: [
374
+ dayOfWeekShort: [
328
375
  "Sek", "Pir", "Ant", "Tre", "Ket", "Pen", "Šeš"
329
- ]
376
+ ],
377
+ dayOfWeek: ["Sekmadienis", "Pirmadienis", "Antradienis", "Trečiadienis", "Ketvirtadienis", "Penktadienis", "Šeštadienis"]
330
378
  },
331
379
  lv: { //Latvian (Latviešu)
332
380
  months: [
333
381
  "Janvāris", "Februāris", "Marts", "Aprīlis ", "Maijs", "Jūnijs", "Jūlijs", "Augusts", "Septembris", "Oktobris", "Novembris", "Decembris"
334
382
  ],
335
- dayOfWeek: [
383
+ dayOfWeekShort: [
336
384
  "Sv", "Pr", "Ot", "Tr", "Ct", "Pk", "St"
337
- ]
385
+ ],
386
+ dayOfWeek: ["Svētdiena", "Pirmdiena", "Otrdiena", "Trešdiena", "Ceturtdiena", "Piektdiena", "Sestdiena"]
338
387
  },
339
388
  mk: { //Macedonian (Македонски)
340
389
  months: [
341
390
  "јануари", "февруари", "март", "април", "мај", "јуни", "јули", "август", "септември", "октомври", "ноември", "декември"
342
391
  ],
343
- dayOfWeek: [
392
+ dayOfWeekShort: [
344
393
  "нед", "пон", "вто", "сре", "чет", "пет", "саб"
345
- ]
394
+ ],
395
+ dayOfWeek: ["Недела", "Понеделник", "Вторник", "Среда", "Четврток", "Петок", "Сабота"]
346
396
  },
347
397
  mn: { //Mongolian (Монгол)
348
398
  months: [
349
399
  "1-р сар", "2-р сар", "3-р сар", "4-р сар", "5-р сар", "6-р сар", "7-р сар", "8-р сар", "9-р сар", "10-р сар", "11-р сар", "12-р сар"
350
400
  ],
351
- dayOfWeek: [
401
+ dayOfWeekShort: [
352
402
  "Дав", "Мяг", "Лха", "Пүр", "Бсн", "Бям", "Ням"
353
- ]
403
+ ],
404
+ dayOfWeek: ["Даваа", "Мягмар", "Лхагва", "Пүрэв", "Баасан", "Бямба", "Ням"]
354
405
  },
355
406
  'pt-BR': { //Português(Brasil)
356
407
  months: [
357
408
  "Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"
358
409
  ],
359
- dayOfWeek: [
410
+ dayOfWeekShort: [
360
411
  "Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb"
361
- ]
412
+ ],
413
+ dayOfWeek: ["Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado"]
362
414
  },
363
415
  sk: { //Slovenčina
364
416
  months: [
365
417
  "Január", "Február", "Marec", "Apríl", "Máj", "Jún", "Júl", "August", "September", "Október", "November", "December"
366
418
  ],
367
- dayOfWeek: [
419
+ dayOfWeekShort: [
368
420
  "Ne", "Po", "Ut", "St", "Št", "Pi", "So"
369
- ]
421
+ ],
422
+ dayOfWeek: ["Nedeľa", "Pondelok", "Utorok", "Streda", "Štvrtok", "Piatok", "Sobota"]
370
423
  },
371
424
  sq: { //Albanian (Shqip)
372
425
  months: [
373
- "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
426
+ "Janar", "Shkurt", "Mars", "Prill", "Maj", "Qershor", "Korrik", "Gusht", "Shtator", "Tetor", "Nëntor", "Dhjetor"
374
427
  ],
375
- dayOfWeek: [
376
- "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
377
- ]
428
+ dayOfWeekShort: [
429
+ "Die", "Hën", "Mar", "Mër", "Enj", "Pre", "Shtu"
430
+ ],
431
+ dayOfWeek: ["E Diel", "E Hënë", "E Martē", "E Mërkurë", "E Enjte", "E Premte", "E Shtunë"]
378
432
  },
379
433
  'sr-YU': { //Serbian (Srpski)
380
434
  months: [
381
435
  "Januar", "Februar", "Mart", "April", "Maj", "Jun", "Jul", "Avgust", "Septembar", "Oktobar", "Novembar", "Decembar"
382
436
  ],
383
- dayOfWeek: [
437
+ dayOfWeekShort: [
384
438
  "Ned", "Pon", "Uto", "Sre", "čet", "Pet", "Sub"
385
- ]
439
+ ],
440
+ dayOfWeek: ["Nedelja","Ponedeljak", "Utorak", "Sreda", "Četvrtak", "Petak", "Subota"]
386
441
  },
387
442
  sr: { //Serbian Cyrillic (Српски)
388
443
  months: [
389
444
  "јануар", "фебруар", "март", "април", "мај", "јун", "јул", "август", "септембар", "октобар", "новембар", "децембар"
390
445
  ],
391
- dayOfWeek: [
446
+ dayOfWeekShort: [
392
447
  "нед", "пон", "уто", "сре", "чет", "пет", "суб"
393
- ]
448
+ ],
449
+ dayOfWeek: ["Недеља","Понедељак", "Уторак", "Среда", "Четвртак", "Петак", "Субота"]
394
450
  },
395
451
  sv: { //Svenska
396
452
  months: [
397
453
  "Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September", "Oktober", "November", "December"
398
454
  ],
399
- dayOfWeek: [
455
+ dayOfWeekShort: [
400
456
  "Sön", "Mån", "Tis", "Ons", "Tor", "Fre", "Lör"
401
- ]
457
+ ],
458
+ dayOfWeek: ["Söndag", "Måndag", "Tisdag", "Onsdag", "Torsdag", "Fredag", "Lördag"]
402
459
  },
403
460
  'zh-TW': { //Traditional Chinese (繁體中文)
404
461
  months: [
405
462
  "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"
406
463
  ],
407
- dayOfWeek: [
464
+ dayOfWeekShort: [
408
465
  "日", "一", "二", "三", "四", "五", "六"
409
- ]
466
+ ],
467
+ dayOfWeek: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"]
410
468
  },
411
469
  zh: { //Simplified Chinese (简体中文)
412
470
  months: [
413
471
  "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"
414
472
  ],
415
- dayOfWeek: [
473
+ dayOfWeekShort: [
416
474
  "日", "一", "二", "三", "四", "五", "六"
417
- ]
475
+ ],
476
+ dayOfWeek: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"]
418
477
  },
419
478
  he: { //Hebrew (עברית)
420
479
  months: [
421
480
  'ינואר', 'פברואר', 'מרץ', 'אפריל', 'מאי', 'יוני', 'יולי', 'אוגוסט', 'ספטמבר', 'אוקטובר', 'נובמבר', 'דצמבר'
422
481
  ],
423
- dayOfWeek: [
482
+ dayOfWeekShort: [
424
483
  'א\'', 'ב\'', 'ג\'', 'ד\'', 'ה\'', 'ו\'', 'שבת'
425
- ]
484
+ ],
485
+ dayOfWeek: ["ראשון", "שני", "שלישי", "רביעי", "חמישי", "שישי", "שבת", "ראשון"]
426
486
  },
427
487
  hy: { // Armenian
428
488
  months: [
429
489
  "Հունվար", "Փետրվար", "Մարտ", "Ապրիլ", "Մայիս", "Հունիս", "Հուլիս", "Օգոստոս", "Սեպտեմբեր", "Հոկտեմբեր", "Նոյեմբեր", "Դեկտեմբեր"
430
490
  ],
431
- dayOfWeek: [
491
+ dayOfWeekShort: [
432
492
  "Կի", "Երկ", "Երք", "Չոր", "Հնգ", "Ուրբ", "Շբթ"
493
+ ],
494
+ dayOfWeek: ["Կիրակի", "Երկուշաբթի", "Երեքշաբթի", "Չորեքշաբթի", "Հինգշաբթի", "Ուրբաթ", "Շաբաթ"]
495
+ },
496
+ kg: { // Kyrgyz
497
+ months: [
498
+ 'Үчтүн айы', 'Бирдин айы', 'Жалган Куран', 'Чын Куран', 'Бугу', 'Кулжа', 'Теке', 'Баш Оона', 'Аяк Оона', 'Тогуздун айы', 'Жетинин айы', 'Бештин айы'
499
+ ],
500
+ dayOfWeekShort: [
501
+ "Жек", "Дүй", "Шей", "Шар", "Бей", "Жум", "Ише"
502
+ ],
503
+ dayOfWeek: [
504
+ "Жекшемб", "Дүйшөмб", "Шейшемб", "Шаршемб", "Бейшемби", "Жума", "Ишенб"
505
+ ]
506
+ },
507
+ rm: { // Romansh
508
+ months: [
509
+ "Schaner", "Favrer", "Mars", "Avrigl", "Matg", "Zercladur", "Fanadur", "Avust", "Settember", "October", "November", "December"
510
+ ],
511
+ dayOfWeekShort: [
512
+ "Du", "Gli", "Ma", "Me", "Gie", "Ve", "So"
513
+ ],
514
+ dayOfWeek: [
515
+ "Dumengia", "Glindesdi", "Mardi", "Mesemna", "Gievgia", "Venderdi", "Sonda"
433
516
  ]
434
517
  },
435
- kg: { // Kyrgyz
436
- months: [
437
- 'Үчтүн айы', 'Бирдин айы', 'Жалган Куран', 'Чын Куран', 'Бугу', 'Кулжа', 'Теке', 'Баш Оона', 'Аяк Оона', 'Тогуздун айы', 'Жетинин айы', 'Бештин айы'
438
- ],
439
- dayOfWeek: [
440
- "Жек", "Дүй", "Шей", "Шар", "Бей", "Жум", "Ише"
441
- ]
442
- }
443
518
  },
444
519
  value: '',
445
- lang: 'en',
520
+ rtl: false,
446
521
 
447
522
  format: 'Y/m/d H:i',
448
523
  formatTime: 'H:i',
@@ -480,6 +555,7 @@
480
555
  onSelectDate: function () {},
481
556
  onSelectTime: function () {},
482
557
  onChangeMonth: function () {},
558
+ onGetWeekOfYear: function () {},
483
559
  onChangeYear: function () {},
484
560
  onChangeDateTime: function () {},
485
561
  onShow: function () {},
@@ -520,6 +596,8 @@
520
596
  weekends: [],
521
597
  highlightedDates: [],
522
598
  highlightedPeriods: [],
599
+ allowDates : [],
600
+ allowDateRe : null,
523
601
  disabledDates : [],
524
602
  disabledWeekDays: [],
525
603
  yearOffset: 0,
@@ -528,6 +606,53 @@
528
606
  enterLikeTab: true,
529
607
  showApplyButton: false
530
608
  };
609
+
610
+ var dateHelper = null,
611
+ globalLocaleDefault = 'en',
612
+ globalLocale = 'en';
613
+
614
+ var dateFormatterOptionsDefault = {
615
+ meridiem: ['AM', 'PM']
616
+ };
617
+
618
+ var initDateFormatter = function(){
619
+ var locale = default_options.i18n[globalLocale],
620
+ opts = {
621
+ days: locale.dayOfWeek,
622
+ daysShort: locale.dayOfWeekShort,
623
+ months: locale.months,
624
+ monthsShort: $.map(locale.months, function(n){ return n.substring(0, 3) }),
625
+ };
626
+
627
+ dateHelper = new DateFormatter({
628
+ dateSettings: $.extend({}, dateFormatterOptionsDefault, opts)
629
+ });
630
+ };
631
+
632
+ // for locale settings
633
+ $.datetimepicker = {
634
+ setLocale: function(locale){
635
+ var newLocale = default_options.i18n[locale]?locale:globalLocaleDefault;
636
+ if(globalLocale != newLocale){
637
+ globalLocale = newLocale;
638
+ // reinit date formatter
639
+ initDateFormatter();
640
+ }
641
+ },
642
+ RFC_2822: 'D, d M Y H:i:s O',
643
+ ATOM: 'Y-m-d\TH:i:sP',
644
+ ISO_8601: 'Y-m-d\TH:i:sO',
645
+ RFC_822: 'D, d M y H:i:s O',
646
+ RFC_850: 'l, d-M-y H:i:s T',
647
+ RFC_1036: 'D, d M y H:i:s O',
648
+ RFC_1123: 'D, d M Y H:i:s O',
649
+ RSS: 'D, d M Y H:i:s O',
650
+ W3C: 'Y-m-d\TH:i:sP'
651
+ };
652
+
653
+ // first init date formatter
654
+ initDateFormatter();
655
+
531
656
  // fix for ie8
532
657
  if (!window.getComputedStyle) {
533
658
  window.getComputedStyle = function (el, pseudo) {
@@ -623,12 +748,12 @@
623
748
  startTopScroll = parseInt(scroller.css('margin-top'), 10);
624
749
  h1 = scrollbar[0].offsetHeight;
625
750
 
626
- if (event.type === 'mousedown') {
751
+ if (event.type === 'mousedown' || event.type === 'touchstart') {
627
752
  if (document) {
628
753
  $(document.body).addClass('xdsoft_noselect');
629
754
  }
630
- $([document.body, window]).on('mouseup.xdsoft_scroller', function arguments_callee() {
631
- $([document.body, window]).off('mouseup.xdsoft_scroller', arguments_callee)
755
+ $([document.body, window]).on('touchend mouseup.xdsoft_scroller', function arguments_callee() {
756
+ $([document.body, window]).off('touchend mouseup.xdsoft_scroller', arguments_callee)
632
757
  .off('mousemove.xdsoft_scroller', calcOffset)
633
758
  .removeClass('xdsoft_noselect');
634
759
  });
@@ -746,7 +871,7 @@
746
871
 
747
872
  lazyInit = function (input) {
748
873
  input
749
- .on('open.xdsoft focusin.xdsoft mousedown.xdsoft', function initOnActionCallback(event) {
874
+ .on('open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart', function initOnActionCallback(event) {
750
875
  if (input.is(':disabled') || input.data('xdsoft_datetimepicker')) {
751
876
  return;
752
877
  }
@@ -757,7 +882,7 @@
757
882
  createDateTimePicker(input);
758
883
  }
759
884
  input
760
- .off('open.xdsoft focusin.xdsoft mousedown.xdsoft', initOnActionCallback)
885
+ .off('open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart', initOnActionCallback)
761
886
  .trigger('open.xdsoft');
762
887
  }, 100);
763
888
  });
@@ -800,6 +925,9 @@
800
925
  if (options.weeks) {
801
926
  datetimepicker.addClass('xdsoft_showweeks');
802
927
  }
928
+ if (options.rtl) {
929
+ datetimepicker.addClass('xdsoft_rtl');
930
+ }
803
931
 
804
932
  datetimepicker.addClass('xdsoft_' + options.theme);
805
933
  datetimepicker.addClass(options.className);
@@ -813,7 +941,7 @@
813
941
 
814
942
  mounth_picker
815
943
  .find('.xdsoft_month,.xdsoft_year')
816
- .on('mousedown.xdsoft', function (event) {
944
+ .on('touchstart mousedown.xdsoft', function (event) {
817
945
  var select = $(this).find('.xdsoft_select').eq(0),
818
946
  val = 0,
819
947
  top = 0,
@@ -845,12 +973,11 @@
845
973
  mounth_picker
846
974
  .find('.xdsoft_select')
847
975
  .xdsoftScroller()
848
- .on('mousedown.xdsoft', function (event) {
976
+ .on('touchstart mousedown.xdsoft', function (event) {
849
977
  event.stopPropagation();
850
978
  event.preventDefault();
851
979
  })
852
- .on('mousedown.xdsoft', '.xdsoft_option', function (event) {
853
-
980
+ .on('touchstart mousedown.xdsoft', '.xdsoft_option', function (event) {
854
981
  if (_xdsoft_datetime.currentTime === undefined || _xdsoft_datetime.currentTime === null) {
855
982
  _xdsoft_datetime.currentTime = _xdsoft_datetime.now();
856
983
  }
@@ -925,12 +1052,20 @@
925
1052
  options.weekends = $.extend(true, [], _options.weekends);
926
1053
  }
927
1054
 
1055
+ if (_options.allowDates && $.isArray(_options.allowDates) && _options.allowDates.length) {
1056
+ options.allowDates = $.extend(true, [], _options.allowDates);
1057
+ }
1058
+
1059
+ if (_options.allowDateRe && Object.prototype.toString.call(_options.allowDateRe)==="[object String]") {
1060
+ options.allowDateRe = new RegExp(_options.allowDateRe);
1061
+ }
1062
+
928
1063
  if (_options.highlightedDates && $.isArray(_options.highlightedDates) && _options.highlightedDates.length) {
929
1064
  $.each(_options.highlightedDates, function (index, value) {
930
1065
  var splitData = $.map(value.split(','), $.trim),
931
1066
  exDesc,
932
- hDate = new HighlightedDate(Date.parseDate(splitData[0], options.formatDate), splitData[1], splitData[2]), // date, desc, style
933
- keyDate = hDate.date.dateFormat(options.formatDate);
1067
+ hDate = new HighlightedDate(dateHelper.parseDate(splitData[0], options.formatDate), splitData[1], splitData[2]), // date, desc, style
1068
+ keyDate = dateHelper.formatDate(hDate.date, options.formatDate);
934
1069
  if (highlightedDates[keyDate] !== undefined) {
935
1070
  exDesc = highlightedDates[keyDate].desc;
936
1071
  if (exDesc && exDesc.length && hDate.desc && hDate.desc.length) {
@@ -947,18 +1082,30 @@
947
1082
  if (_options.highlightedPeriods && $.isArray(_options.highlightedPeriods) && _options.highlightedPeriods.length) {
948
1083
  highlightedDates = $.extend(true, [], options.highlightedDates);
949
1084
  $.each(_options.highlightedPeriods, function (index, value) {
950
- var splitData = $.map(value.split(','), $.trim),
951
- dateTest = Date.parseDate(splitData[0], options.formatDate), // start date
952
- dateEnd = Date.parseDate(splitData[1], options.formatDate),
953
- desc = splitData[2],
1085
+ var dateTest, // start date
1086
+ dateEnd,
1087
+ desc,
954
1088
  hDate,
955
1089
  keyDate,
956
1090
  exDesc,
1091
+ style;
1092
+ if ($.isArray(value)) {
1093
+ dateTest = value[0];
1094
+ dateEnd = value[1];
1095
+ desc = value[2];
1096
+ style = value[3];
1097
+ }
1098
+ else {
1099
+ var splitData = $.map(value.split(','), $.trim);
1100
+ dateTest = dateHelper.parseDate(splitData[0], options.formatDate);
1101
+ dateEnd = dateHelper.parseDate(splitData[1], options.formatDate);
1102
+ desc = splitData[2];
957
1103
  style = splitData[3];
1104
+ }
958
1105
 
959
1106
  while (dateTest <= dateEnd) {
960
1107
  hDate = new HighlightedDate(dateTest, desc, style);
961
- keyDate = dateTest.dateFormat(options.formatDate);
1108
+ keyDate = dateHelper.formatDate(dateTest, options.formatDate);
962
1109
  dateTest.setDate(dateTest.getDate() + 1);
963
1110
  if (highlightedDates[keyDate] !== undefined) {
964
1111
  exDesc = highlightedDates[keyDate].desc;
@@ -1026,12 +1173,12 @@
1026
1173
  timeboxparent.xdsoftScroller('hide');
1027
1174
  }
1028
1175
 
1029
- if (options.minDate && /^-(.*)$/.test(options.minDate)) {
1030
- options.minDate = _xdsoft_datetime.strToDateTime(options.minDate).dateFormat(options.formatDate);
1176
+ if (options.minDate && /^[\+\-](.*)$/.test(options.minDate)) {
1177
+ options.minDate = dateHelper.formatDate(_xdsoft_datetime.strToDateTime(options.minDate), options.formatDate);
1031
1178
  }
1032
1179
 
1033
- if (options.maxDate && /^\+(.*)$/.test(options.maxDate)) {
1034
- options.maxDate = _xdsoft_datetime.strToDateTime(options.maxDate).dateFormat(options.formatDate);
1180
+ if (options.maxDate && /^[\+\-](.*)$/.test(options.maxDate)) {
1181
+ options.maxDate = dateHelper.formatDate(_xdsoft_datetime.strToDateTime(options.maxDate), options.formatDate);
1035
1182
  }
1036
1183
 
1037
1184
  applyButton.toggle(options.showApplyButton);
@@ -1065,6 +1212,7 @@
1065
1212
  if ($.type(options.mask) === 'string') {
1066
1213
  if (!isValidValue(options.mask, input.val())) {
1067
1214
  input.val(options.mask.replace(/[0-9]/g, '_'));
1215
+ setCaretPos(input[0], 0);
1068
1216
  }
1069
1217
 
1070
1218
  input.on('keydown.xdsoft', function (event) {
@@ -1127,7 +1275,7 @@
1127
1275
  if (options.allowBlank && !$.trim($(this).val()).length) {
1128
1276
  $(this).val(null);
1129
1277
  datetimepicker.data('xdsoft_datetime').empty();
1130
- } else if (!Date.parseDate($(this).val(), options.format)) {
1278
+ } else if (!dateHelper.parseDate($(this).val(), options.format)) {
1131
1279
  var splittedHours = +([$(this).val()[0], $(this).val()[1]].join('')),
1132
1280
  splittedMinutes = +([$(this).val()[2], $(this).val()[3]].join(''));
1133
1281
 
@@ -1137,7 +1285,7 @@
1137
1285
  return item > 9 ? item : '0' + item;
1138
1286
  }).join(':'));
1139
1287
  } else {
1140
- $(this).val((_xdsoft_datetime.now()).dateFormat(options.format));
1288
+ $(this).val(dateHelper.formatDate(_xdsoft_datetime.now(), options.format));
1141
1289
  }
1142
1290
 
1143
1291
  datetimepicker.data('xdsoft_datetime').setCurrentTime($(this).val());
@@ -1157,7 +1305,7 @@
1157
1305
 
1158
1306
  datetimepicker
1159
1307
  .data('options', options)
1160
- .on('mousedown.xdsoft', function (event) {
1308
+ .on('touchstart mousedown.xdsoft', function (event) {
1161
1309
  event.stopPropagation();
1162
1310
  event.preventDefault();
1163
1311
  yearselect.hide();
@@ -1297,7 +1445,16 @@
1297
1445
  };
1298
1446
 
1299
1447
  _this.getWeekOfYear = function (datetime) {
1448
+ if (options.onGetWeekOfYear && $.isFunction(options.onGetWeekOfYear)) {
1449
+ var week = options.onGetWeekOfYear.call(datetimepicker, datetime);
1450
+ if (typeof week !== 'undefined') {
1451
+ return week;
1452
+ }
1453
+ }
1300
1454
  var onejan = new Date(datetime.getFullYear(), 0, 1);
1455
+ //First week of the year is th one with the first Thursday according to ISO8601
1456
+ if(onejan.getDay()!=4)
1457
+ onejan.setMonth(0, 1 + ((4 - onejan.getDay()+ 7) % 7));
1301
1458
  return Math.ceil((((datetime - onejan) / 86400000) + onejan.getDay() + 1) / 7);
1302
1459
  };
1303
1460
 
@@ -1310,13 +1467,13 @@
1310
1467
 
1311
1468
  tmpDate = /^(\+|\-)(.*)$/.exec(sDateTime);
1312
1469
  if (tmpDate) {
1313
- tmpDate[2] = Date.parseDate(tmpDate[2], options.formatDate);
1470
+ tmpDate[2] = dateHelper.parseDate(tmpDate[2], options.formatDate);
1314
1471
  }
1315
1472
  if (tmpDate && tmpDate[2]) {
1316
1473
  timeOffset = tmpDate[2].getTime() - (tmpDate[2].getTimezoneOffset()) * 60000;
1317
1474
  currentTime = new Date((_this.now(true)).getTime() + parseInt(tmpDate[1] + '1', 10) * timeOffset);
1318
1475
  } else {
1319
- currentTime = sDateTime ? Date.parseDate(sDateTime, options.format) : _this.now();
1476
+ currentTime = sDateTime ? dateHelper.parseDate(sDateTime, options.format) : _this.now();
1320
1477
  }
1321
1478
 
1322
1479
  if (!_this.isValidDate(currentTime)) {
@@ -1331,7 +1488,7 @@
1331
1488
  return sDate;
1332
1489
  }
1333
1490
 
1334
- var currentTime = sDate ? Date.parseDate(sDate, options.formatDate) : _this.now(true);
1491
+ var currentTime = sDate ? dateHelper.parseDate(sDate, options.formatDate) : _this.now(true);
1335
1492
  if (!_this.isValidDate(currentTime)) {
1336
1493
  currentTime = _this.now(true);
1337
1494
  }
@@ -1342,7 +1499,7 @@
1342
1499
  if (sTime && sTime instanceof Date && _this.isValidDate(sTime)) {
1343
1500
  return sTime;
1344
1501
  }
1345
- var currentTime = sTime ? Date.parseDate(sTime, options.formatTime) : _this.now(true);
1502
+ var currentTime = sTime ? dateHelper.parseDate(sTime, options.formatTime) : _this.now(true);
1346
1503
  if (!_this.isValidDate(currentTime)) {
1347
1504
  currentTime = _this.now(true);
1348
1505
  }
@@ -1350,14 +1507,14 @@
1350
1507
  };
1351
1508
 
1352
1509
  _this.str = function () {
1353
- return _this.currentTime.dateFormat(options.format);
1510
+ return dateHelper.formatDate(_this.currentTime, options.format);
1354
1511
  };
1355
1512
  _this.currentTime = this.now();
1356
1513
  };
1357
1514
 
1358
1515
  _xdsoft_datetime = new XDSoft_datetime();
1359
1516
 
1360
- applyButton.on('click', function (e) {//pathbrite
1517
+ applyButton.on('touchend click', function (e) {//pathbrite
1361
1518
  e.preventDefault();
1362
1519
  datetimepicker.data('changed', true);
1363
1520
  _xdsoft_datetime.setCurrentTime(getCurrentValue());
@@ -1366,7 +1523,7 @@
1366
1523
  });
1367
1524
  mounth_picker
1368
1525
  .find('.xdsoft_today_button')
1369
- .on('mousedown.xdsoft', function () {
1526
+ .on('touchend mousedown.xdsoft', function () {
1370
1527
  datetimepicker.data('changed', true);
1371
1528
  _xdsoft_datetime.setCurrentTime(0);
1372
1529
  datetimepicker.trigger('afterOpen.xdsoft');
@@ -1384,11 +1541,12 @@
1384
1541
  return;
1385
1542
  }
1386
1543
  input.val(_xdsoft_datetime.str());
1544
+ input.trigger('change');
1387
1545
  datetimepicker.trigger('close.xdsoft');
1388
1546
  });
1389
1547
  mounth_picker
1390
1548
  .find('.xdsoft_prev,.xdsoft_next')
1391
- .on('mousedown.xdsoft', function () {
1549
+ .on('touchend mousedown.xdsoft', function () {
1392
1550
  var $this = $(this),
1393
1551
  timer = 0,
1394
1552
  stop = false;
@@ -1406,16 +1564,16 @@
1406
1564
  }
1407
1565
  }(500));
1408
1566
 
1409
- $([document.body, window]).on('mouseup.xdsoft', function arguments_callee2() {
1567
+ $([document.body, window]).on('touchend mouseup.xdsoft', function arguments_callee2() {
1410
1568
  clearTimeout(timer);
1411
1569
  stop = true;
1412
- $([document.body, window]).off('mouseup.xdsoft', arguments_callee2);
1570
+ $([document.body, window]).off('touchend mouseup.xdsoft', arguments_callee2);
1413
1571
  });
1414
1572
  });
1415
1573
 
1416
1574
  timepicker
1417
1575
  .find('.xdsoft_prev,.xdsoft_next')
1418
- .on('mousedown.xdsoft', function () {
1576
+ .on('touchend mousedown.xdsoft', function () {
1419
1577
  var $this = $(this),
1420
1578
  timer = 0,
1421
1579
  stop = false,
@@ -1435,11 +1593,11 @@
1435
1593
  timer = setTimeout(arguments_callee4, v || period);
1436
1594
  }
1437
1595
  }(500));
1438
- $([document.body, window]).on('mouseup.xdsoft', function arguments_callee5() {
1596
+ $([document.body, window]).on('touchend mouseup.xdsoft', function arguments_callee5() {
1439
1597
  clearTimeout(timer);
1440
1598
  stop = true;
1441
1599
  $([document.body, window])
1442
- .off('mouseup.xdsoft', arguments_callee5);
1600
+ .off('touchend mouseup.xdsoft', arguments_callee5);
1443
1601
  });
1444
1602
  });
1445
1603
 
@@ -1486,7 +1644,7 @@
1486
1644
  }
1487
1645
 
1488
1646
  for (j = 0; j < 7; j += 1) {
1489
- table += '<th>' + options.i18n[options.lang].dayOfWeek[(j + options.dayOfWeekStart) % 7] + '</th>';
1647
+ table += '<th>' + options.i18n[globalLocale].dayOfWeekShort[(j + options.dayOfWeekStart) % 7] + '</th>';
1490
1648
  }
1491
1649
 
1492
1650
  table += '</tr></thead>';
@@ -1521,9 +1679,17 @@
1521
1679
  customDateSettings = null;
1522
1680
  }
1523
1681
 
1524
- if ((maxDate !== false && start > maxDate) || (minDate !== false && start < minDate) || (customDateSettings && customDateSettings[0] === false)) {
1682
+ if(options.allowDateRe && Object.prototype.toString.call(options.allowDateRe) === "[object RegExp]"){
1683
+ if(!options.allowDateRe.test(start.dateFormat(options.formatDate))){
1684
+ classes.push('xdsoft_disabled');
1685
+ }
1686
+ } else if(options.allowDates && options.allowDates.length>0){
1687
+ if(options.allowDates.indexOf(start.dateFormat(options.formatDate)) === -1){
1688
+ classes.push('xdsoft_disabled');
1689
+ }
1690
+ } else if ((maxDate !== false && start > maxDate) || (minDate !== false && start < minDate) || (customDateSettings && customDateSettings[0] === false)) {
1525
1691
  classes.push('xdsoft_disabled');
1526
- } else if (options.disabledDates.indexOf(start.dateFormat(options.formatDate)) !== -1) {
1692
+ } else if (options.disabledDates.indexOf(dateHelper.formatDate(start, options.formatDate)) !== -1) {
1527
1693
  classes.push('xdsoft_disabled');
1528
1694
  } else if (options.disabledWeekDays.indexOf(day) !== -1) {
1529
1695
  classes.push('xdsoft_disabled');
@@ -1537,20 +1703,20 @@
1537
1703
  classes.push('xdsoft_other_month');
1538
1704
  }
1539
1705
 
1540
- if ((options.defaultSelect || datetimepicker.data('changed')) && _xdsoft_datetime.currentTime.dateFormat(options.formatDate) === start.dateFormat(options.formatDate)) {
1706
+ if ((options.defaultSelect || datetimepicker.data('changed')) && dateHelper.formatDate(_xdsoft_datetime.currentTime, options.formatDate) === dateHelper.formatDate(start, options.formatDate)) {
1541
1707
  classes.push('xdsoft_current');
1542
1708
  }
1543
1709
 
1544
- if (today.dateFormat(options.formatDate) === start.dateFormat(options.formatDate)) {
1710
+ if (dateHelper.formatDate(today, options.formatDate) === dateHelper.formatDate(start, options.formatDate)) {
1545
1711
  classes.push('xdsoft_today');
1546
1712
  }
1547
1713
 
1548
- if (start.getDay() === 0 || start.getDay() === 6 || options.weekends.indexOf(start.dateFormat(options.formatDate)) !== -1) {
1714
+ if (start.getDay() === 0 || start.getDay() === 6 || options.weekends.indexOf(dateHelper.formatDate(start, options.formatDate)) !== -1) {
1549
1715
  classes.push('xdsoft_weekend');
1550
1716
  }
1551
1717
 
1552
- if (options.highlightedDates[start.dateFormat(options.formatDate)] !== undefined) {
1553
- hDate = options.highlightedDates[start.dateFormat(options.formatDate)];
1718
+ if (options.highlightedDates[dateHelper.formatDate(start, options.formatDate)] !== undefined) {
1719
+ hDate = options.highlightedDates[dateHelper.formatDate(start, options.formatDate)];
1554
1720
  classes.push(hDate.style === undefined ? 'xdsoft_highlighted_default' : hDate.style);
1555
1721
  description = hDate.desc === undefined ? '' : hDate.desc;
1556
1722
  }
@@ -1582,15 +1748,17 @@
1582
1748
 
1583
1749
  calendar.html(table);
1584
1750
 
1585
- mounth_picker.find('.xdsoft_label span').eq(0).text(options.i18n[options.lang].months[_xdsoft_datetime.currentTime.getMonth()]);
1751
+ mounth_picker.find('.xdsoft_label span').eq(0).text(options.i18n[globalLocale].months[_xdsoft_datetime.currentTime.getMonth()]);
1586
1752
  mounth_picker.find('.xdsoft_label span').eq(1).text(_xdsoft_datetime.currentTime.getFullYear());
1587
1753
 
1588
1754
  // generate timebox
1589
1755
  time = '';
1590
1756
  h = '';
1591
1757
  m = '';
1758
+
1592
1759
  line_time = function line_time(h, m) {
1593
- var now = _xdsoft_datetime.now(), optionDateTime, current_time;
1760
+ var now = _xdsoft_datetime.now(), optionDateTime, current_time,
1761
+ isALlowTimesInit = options.allowTimes && $.isArray(options.allowTimes) && options.allowTimes.length;
1594
1762
  now.setHours(h);
1595
1763
  h = parseInt(now.getHours(), 10);
1596
1764
  now.setMinutes(m);
@@ -1608,9 +1776,12 @@
1608
1776
 
1609
1777
  current_time = new Date(_xdsoft_datetime.currentTime);
1610
1778
  current_time.setHours(parseInt(_xdsoft_datetime.currentTime.getHours(), 10));
1611
- current_time.setMinutes(Math[options.roundTime](_xdsoft_datetime.currentTime.getMinutes() / options.step) * options.step);
1612
1779
 
1613
- if ((options.initTime || options.defaultSelect || datetimepicker.data('changed')) && current_time.getHours() === parseInt(h, 10) && (options.step > 59 || current_time.getMinutes() === parseInt(m, 10))) {
1780
+ if (!isALlowTimesInit) {
1781
+ current_time.setMinutes(Math[options.roundTime](_xdsoft_datetime.currentTime.getMinutes() / options.step) * options.step);
1782
+ }
1783
+
1784
+ if ((options.initTime || options.defaultSelect || datetimepicker.data('changed')) && current_time.getHours() === parseInt(h, 10) && ((!isALlowTimesInit && options.step > 59) || current_time.getMinutes() === parseInt(m, 10))) {
1614
1785
  if (options.defaultSelect || datetimepicker.data('changed')) {
1615
1786
  classes.push('xdsoft_current');
1616
1787
  } else if (options.initTime) {
@@ -1620,7 +1791,7 @@
1620
1791
  if (parseInt(today.getHours(), 10) === parseInt(h, 10) && parseInt(today.getMinutes(), 10) === parseInt(m, 10)) {
1621
1792
  classes.push('xdsoft_today');
1622
1793
  }
1623
- time += '<div class="xdsoft_time ' + classes.join(' ') + '" data-hour="' + h + '" data-minute="' + m + '">' + now.dateFormat(options.formatTime) + '</div>';
1794
+ time += '<div class="xdsoft_time ' + classes.join(' ') + '" data-hour="' + h + '" data-minute="' + m + '">' + dateHelper.formatDate(now, options.formatTime) + '</div>';
1624
1795
  };
1625
1796
 
1626
1797
  if (!options.allowTimes || !$.isArray(options.allowTimes) || !options.allowTimes.length) {
@@ -1651,7 +1822,7 @@
1651
1822
  .html(opt);
1652
1823
 
1653
1824
  for (i = parseInt(options.monthStart, 10), opt = ''; i <= parseInt(options.monthEnd, 10); i += 1) {
1654
- opt += '<div class="xdsoft_option ' + (_xdsoft_datetime.currentTime.getMonth() === i ? 'xdsoft_current' : '') + '" data-value="' + i + '">' + options.i18n[options.lang].months[i] + '</div>';
1825
+ opt += '<div class="xdsoft_option ' + (_xdsoft_datetime.currentTime.getMonth() === i ? 'xdsoft_current' : '') + '" data-value="' + i + '">' + options.i18n[globalLocale].months[i] + '</div>';
1655
1826
  }
1656
1827
  monthselect.children().eq(0).html(opt);
1657
1828
  $(datetimepicker)
@@ -1683,7 +1854,7 @@
1683
1854
 
1684
1855
  timerclick = 0;
1685
1856
  calendar
1686
- .on('click.xdsoft', 'td', function (xdevent) {
1857
+ .on('touchend click.xdsoft', 'td', function (xdevent) {
1687
1858
  xdevent.stopPropagation(); // Prevents closing of Pop-ups, Modals and Flyouts in Bootstrap
1688
1859
  timerclick += 1;
1689
1860
  var $this = $(this),
@@ -1706,9 +1877,6 @@
1706
1877
  datetimepicker.trigger('select.xdsoft', [currentTime]);
1707
1878
 
1708
1879
  input.val(_xdsoft_datetime.str());
1709
- if ((timerclick > 1 || (options.closeOnDateSelect === true || (options.closeOnDateSelect === false && !options.timepicker))) && !options.inline) {
1710
- datetimepicker.trigger('close.xdsoft');
1711
- }
1712
1880
 
1713
1881
  if (options.onSelectDate && $.isFunction(options.onSelectDate)) {
1714
1882
  options.onSelectDate.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), xdevent);
@@ -1717,13 +1885,16 @@
1717
1885
  datetimepicker.data('changed', true);
1718
1886
  datetimepicker.trigger('xchange.xdsoft');
1719
1887
  datetimepicker.trigger('changedatetime.xdsoft');
1888
+ if ((timerclick > 1 || (options.closeOnDateSelect === true || (options.closeOnDateSelect === false && !options.timepicker))) && !options.inline) {
1889
+ datetimepicker.trigger('close.xdsoft');
1890
+ }
1720
1891
  setTimeout(function () {
1721
1892
  timerclick = 0;
1722
1893
  }, 200);
1723
1894
  });
1724
1895
 
1725
1896
  timebox
1726
- .on('click.xdsoft', 'div', function (xdevent) {
1897
+ .on('touchend click.xdsoft', 'div', function (xdevent) {
1727
1898
  xdevent.stopPropagation();
1728
1899
  var $this = $(this),
1729
1900
  currentTime = _xdsoft_datetime.currentTime;
@@ -1742,16 +1913,15 @@
1742
1913
 
1743
1914
  datetimepicker.data('input').val(_xdsoft_datetime.str());
1744
1915
 
1745
- if (options.inline !== true && options.closeOnTimeSelect === true) {
1746
- datetimepicker.trigger('close.xdsoft');
1747
- }
1748
-
1749
1916
  if (options.onSelectTime && $.isFunction(options.onSelectTime)) {
1750
1917
  options.onSelectTime.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), xdevent);
1751
1918
  }
1752
1919
  datetimepicker.data('changed', true);
1753
1920
  datetimepicker.trigger('xchange.xdsoft');
1754
1921
  datetimepicker.trigger('changedatetime.xdsoft');
1922
+ if (options.inline !== true && options.closeOnTimeSelect === true) {
1923
+ datetimepicker.trigger('close.xdsoft');
1924
+ }
1755
1925
  });
1756
1926
 
1757
1927
 
@@ -1818,20 +1988,41 @@
1818
1988
  current_time_index = 0;
1819
1989
 
1820
1990
  setPos = function () {
1821
- var offset = datetimepicker.data('input').offset(), top = offset.top + datetimepicker.data('input')[0].offsetHeight - 1, left = offset.left, position = "absolute", node;
1991
+ /**
1992
+ * 修复输入框在window最右边,且输入框的宽度小于日期控件宽度情况下,日期控件显示不全的bug。
1993
+ * Bug fixed - The datetimepicker will overflow-y when the width of the date input less than its, which
1994
+ * could causes part of the datetimepicker being hidden.
1995
+ * by Soon start
1996
+ */
1997
+ var offset = datetimepicker.data('input').offset(),
1998
+ datetimepickerelement = datetimepicker.data('input')[0],
1999
+ top = offset.top + datetimepickerelement.offsetHeight - 1,
2000
+ left = offset.left,
2001
+ position = "absolute",
2002
+ node;
2003
+
2004
+ if ((document.documentElement.clientWidth - offset.left) < datepicker.parent().outerWidth(true)) {
2005
+ var diff = datepicker.parent().outerWidth(true) - datetimepickerelement.offsetWidth;
2006
+ left = left - diff;
2007
+ }
2008
+ /**
2009
+ * by Soon end
2010
+ */
2011
+ if (datetimepicker.data('input').parent().css('direction') == 'rtl')
2012
+ left -= (datetimepicker.outerWidth() - datetimepicker.data('input').outerWidth());
1822
2013
  if (options.fixed) {
1823
2014
  top -= $(window).scrollTop();
1824
2015
  left -= $(window).scrollLeft();
1825
2016
  position = "fixed";
1826
2017
  } else {
1827
- if (top + datetimepicker[0].offsetHeight > $(window).height() + $(window).scrollTop()) {
1828
- top = offset.top - datetimepicker[0].offsetHeight + 1;
2018
+ if (top + datetimepickerelement.offsetHeight > $(window).height() + $(window).scrollTop()) {
2019
+ top = offset.top - datetimepickerelement.offsetHeight + 1;
1829
2020
  }
1830
2021
  if (top < 0) {
1831
2022
  top = 0;
1832
2023
  }
1833
- if (left + datetimepicker[0].offsetWidth > $(window).width()) {
1834
- left = $(window).width() - datetimepicker[0].offsetWidth;
2024
+ if (left + datetimepickerelement.offsetWidth > $(window).width()) {
2025
+ left = $(window).width() - datetimepickerelement.offsetWidth;
1835
2026
  }
1836
2027
  }
1837
2028
 
@@ -1863,9 +2054,9 @@
1863
2054
  .on('resize.xdsoft', setPos);
1864
2055
 
1865
2056
  if (options.closeOnWithoutClick) {
1866
- $([document.body, window]).on('mousedown.xdsoft', function arguments_callee6() {
2057
+ $([document.body, window]).on('touchstart mousedown.xdsoft', function arguments_callee6() {
1867
2058
  datetimepicker.trigger('close.xdsoft');
1868
- $([document.body, window]).off('mousedown.xdsoft', arguments_callee6);
2059
+ $([document.body, window]).off('touchstart mousedown.xdsoft', arguments_callee6);
1869
2060
  });
1870
2061
  }
1871
2062
  }
@@ -1931,7 +2122,7 @@
1931
2122
 
1932
2123
  input
1933
2124
  .data('xdsoft_datetimepicker', datetimepicker)
1934
- .on('open.xdsoft focusin.xdsoft mousedown.xdsoft', function (event) {
2125
+ .on('open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart', function (event) {
1935
2126
  if (input.is(':disabled') || (input.data('xdsoft_datetimepicker').is(':visible') && options.closeOnInputClick)) {
1936
2127
  return;
1937
2128
  }
@@ -1951,7 +2142,7 @@
1951
2142
  var val = this.value, elementSelector,
1952
2143
  key = event.which;
1953
2144
  if ([ENTER].indexOf(key) !== -1 && options.enterLikeTab) {
1954
- elementSelector = $("input:visible,textarea:visible");
2145
+ elementSelector = $("input:visible,textarea:visible,button:visible,a:visible");
1955
2146
  datetimepicker.trigger('close.xdsoft');
1956
2147
  elementSelector.eq(elementSelector.index(this) + 1).focus();
1957
2148
  return false;
@@ -1971,7 +2162,7 @@
1971
2162
  .data('xdsoft_datetimepicker', null)
1972
2163
  .off('.xdsoft');
1973
2164
  $(window).off('resize.xdsoft');
1974
- $([window, document.body]).off('mousedown.xdsoft');
2165
+ $([window, document.body]).off('mousedown.xdsoft touchstart');
1975
2166
  if (input.unmousewheel) {
1976
2167
  input.unmousewheel();
1977
2168
  }
@@ -2009,7 +2200,7 @@
2009
2200
  break;
2010
2201
  case 'reset':
2011
2202
  this.value = this.defaultValue;
2012
- if (!this.value || !datetimepicker.data('xdsoft_datetime').isValidDate(Date.parseDate(this.value, options.format))) {
2203
+ if (!this.value || !datetimepicker.data('xdsoft_datetime').isValidDate(dateHelper.parseDate(this.value, options.format))) {
2013
2204
  datetimepicker.data('changed', false);
2014
2205
  }
2015
2206
  datetimepicker.data('xdsoft_datetime').setCurrentTime(this.value);
@@ -2035,39 +2226,12 @@
2035
2226
  });
2036
2227
  };
2037
2228
  $.fn.datetimepicker.defaults = default_options;
2038
- }(jQuery));
2039
-
2040
- function HighlightedDate(date, desc, style) {
2041
- "use strict";
2042
- this.date = date;
2043
- this.desc = desc;
2044
- this.style = style;
2045
- }
2046
-
2047
- (function () {
2048
-
2049
- /*! Copyright (c) 2013 Brandon Aaron (http://brandon.aaron.sh)
2050
- * Licensed under the MIT License (LICENSE.txt).
2051
- *
2052
- * Version: 3.1.12
2053
- *
2054
- * Requires: jQuery 1.2.2+
2055
- */
2056
- !function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?module.exports=a:a(jQuery)}(function(a){function b(b){var g=b||window.event,h=i.call(arguments,1),j=0,l=0,m=0,n=0,o=0,p=0;if(b=a.event.fix(g),b.type="mousewheel","detail"in g&&(m=-1*g.detail),"wheelDelta"in g&&(m=g.wheelDelta),"wheelDeltaY"in g&&(m=g.wheelDeltaY),"wheelDeltaX"in g&&(l=-1*g.wheelDeltaX),"axis"in g&&g.axis===g.HORIZONTAL_AXIS&&(l=-1*m,m=0),j=0===m?l:m,"deltaY"in g&&(m=-1*g.deltaY,j=m),"deltaX"in g&&(l=g.deltaX,0===m&&(j=-1*l)),0!==m||0!==l){if(1===g.deltaMode){var q=a.data(this,"mousewheel-line-height");j*=q,m*=q,l*=q}else if(2===g.deltaMode){var r=a.data(this,"mousewheel-page-height");j*=r,m*=r,l*=r}if(n=Math.max(Math.abs(m),Math.abs(l)),(!f||f>n)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?"floor":"ceil"](j/f),l=Math[l>=1?"floor":"ceil"](l/f),m=Math[m>=1?"floor":"ceil"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&"mousewheel"===a.type&&b%120===0}var e,f,g=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],h="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,"mousewheel-line-height",k.getLineHeight(this)),a.data(this,"mousewheel-page-height",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,"mousewheel-line-height"),a.removeData(this,"mousewheel-page-height")},getLineHeight:function(b){var c=a(b),d=c["offsetParent"in a.fn?"offsetParent":"parent"]();return d.length||(d=a("body")),parseInt(d.css("fontSize"),10)||parseInt(c.css("fontSize"),10)||16},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})});
2057
-
2058
- // Parse and Format Library
2059
- //http://www.xaprb.com/blog/2005/12/12/javascript-closures-for-runtime-efficiency/
2060
- /*
2061
- * Copyright (C) 2004 Baron Schwartz <baron at sequent dot org>
2062
- *
2063
- * This program is free software; you can redistribute it and/or modify it
2064
- * under the terms of the GNU Lesser General Public License as published by the
2065
- * Free Software Foundation, version 2.1.
2066
- *
2067
- * This program is distributed in the hope that it will be useful, but WITHOUT
2068
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
2069
- * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
2070
- * details.
2071
- */
2072
- Date.parseFunctions={count:0};Date.parseRegexes=[];Date.formatFunctions={count:0};Date.prototype.dateFormat=function(b){if(b=="unixtime"){return parseInt(this.getTime()/1000);}if(Date.formatFunctions[b]==null){Date.createNewFormat(b);}var a=Date.formatFunctions[b];return this[a]();};Date.createNewFormat=function(format){var funcName="format"+Date.formatFunctions.count++;Date.formatFunctions[format]=funcName;var codePrefix="Date.prototype."+funcName+" = function() {return ";var code="";var special=false;var ch="";for(var i=0;i<format.length;++i){ch=format.charAt(i);if(!special&&ch=="\\"){special=true;}else{if(special){special=false;code+="'"+String.escape(ch)+"' + ";}else{code+=Date.getFormatCode(ch);}}}if(code.length==0){code="\"\"";}else{code=code.substring(0,code.length-3);}eval(codePrefix+code+";}");};Date.getFormatCode=function(a){switch(a){case"d":return"String.leftPad(this.getDate(), 2, '0') + ";case"D":return"Date.dayNames[this.getDay()].substring(0, 3) + ";case"j":return"this.getDate() + ";case"l":return"Date.dayNames[this.getDay()] + ";case"S":return"this.getSuffix() + ";case"w":return"this.getDay() + ";case"z":return"this.getDayOfYear() + ";case"W":return"this.getWeekOfYear() + ";case"F":return"Date.monthNames[this.getMonth()] + ";case"m":return"String.leftPad(this.getMonth() + 1, 2, '0') + ";case"M":return"Date.monthNames[this.getMonth()].substring(0, 3) + ";case"n":return"(this.getMonth() + 1) + ";case"t":return"this.getDaysInMonth() + ";case"L":return"(this.isLeapYear() ? 1 : 0) + ";case"Y":return"this.getFullYear() + ";case"y":return"('' + this.getFullYear()).substring(2, 4) + ";case"a":return"(this.getHours() < 12 ? 'am' : 'pm') + ";case"A":return"(this.getHours() < 12 ? 'AM' : 'PM') + ";case"g":return"((this.getHours() %12) ? this.getHours() % 12 : 12) + ";case"G":return"this.getHours() + ";case"h":return"String.leftPad((this.getHours() %12) ? this.getHours() % 12 : 12, 2, '0') + ";case"H":return"String.leftPad(this.getHours(), 2, '0') + ";case"i":return"String.leftPad(this.getMinutes(), 2, '0') + ";case"s":return"String.leftPad(this.getSeconds(), 2, '0') + ";case"O":return"this.getGMTOffset() + ";case"T":return"this.getTimezone() + ";case"Z":return"(this.getTimezoneOffset() * -60) + ";default:return"'"+String.escape(a)+"' + ";}};Date.parseDate=function(a,c){if(c=="unixtime"){return new Date(!isNaN(parseInt(a))?parseInt(a)*1000:0);}if(Date.parseFunctions[c]==null){Date.createParser(c);}var b=Date.parseFunctions[c];return Date[b](a);};Date.createParser=function(format){var funcName="parse"+Date.parseFunctions.count++;var regexNum=Date.parseRegexes.length;var currentGroup=1;Date.parseFunctions[format]=funcName;var code="Date."+funcName+" = function(input) {\nvar y = -1, m = -1, d = -1, h = -1, i = -1, s = -1, z = -1;\nvar d = new Date();\ny = d.getFullYear();\nm = d.getMonth();\nd = d.getDate();\nvar results = input.match(Date.parseRegexes["+regexNum+"]);\nif (results && results.length > 0) {";var regex="";var special=false;var ch="";for(var i=0;i<format.length;++i){ch=format.charAt(i);if(!special&&ch=="\\"){special=true;}else{if(special){special=false;regex+=String.escape(ch);}else{obj=Date.formatCodeToRegex(ch,currentGroup);currentGroup+=obj.g;regex+=obj.s;if(obj.g&&obj.c){code+=obj.c;}}}}code+="if (y > 0 && z > 0){\nvar doyDate = new Date(y,0);\ndoyDate.setDate(z);\nm = doyDate.getMonth();\nd = doyDate.getDate();\n}";code+="if (y > 0 && m >= 0 && d > 0 && h >= 0 && i >= 0 && s >= 0)\n{return new Date(y, m, d, h, i, s);}\nelse if (y > 0 && m >= 0 && d > 0 && h >= 0 && i >= 0)\n{return new Date(y, m, d, h, i);}\nelse if (y > 0 && m >= 0 && d > 0 && h >= 0)\n{return new Date(y, m, d, h);}\nelse if (y > 0 && m >= 0 && d > 0)\n{return new Date(y, m, d);}\nelse if (y > 0 && m >= 0)\n{return new Date(y, m);}\nelse if (y > 0)\n{return new Date(y);}\n}return null;}";Date.parseRegexes[regexNum]=new RegExp("^"+regex+"$",'i');eval(code);};Date.formatCodeToRegex=function(b,a){switch(b){case"D":return{g:0,c:null,s:"(?:Sun|Mon|Tue|Wed|Thu|Fri|Sat)"};case"j":case"d":return{g:1,c:"d = parseInt(results["+a+"], 10);\n",s:"(\\d{1,2})"};case"l":return{g:0,c:null,s:"(?:"+Date.dayNames.join("|")+")"};case"S":return{g:0,c:null,s:"(?:st|nd|rd|th)"};case"w":return{g:0,c:null,s:"\\d"};case"z":return{g:1,c:"z = parseInt(results["+a+"], 10);\n",s:"(\\d{1,3})"};case"W":return{g:0,c:null,s:"(?:\\d{2})"};case"F":return{g:1,c:"m = parseInt(Date.monthNumbers[results["+a+"].substring(0, 3)], 10);\n",s:"("+Date.monthNames.join("|")+")"};case"M":return{g:1,c:"m = parseInt(Date.monthNumbers[results["+a+"]], 10);\n",s:"(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)"};case"n":case"m":return{g:1,c:"m = parseInt(results["+a+"], 10) - 1;\n",s:"(\\d{1,2})"};case"t":return{g:0,c:null,s:"\\d{1,2}"};case"L":return{g:0,c:null,s:"(?:1|0)"};case"Y":return{g:1,c:"y = parseInt(results["+a+"], 10);\n",s:"(\\d{4})"};case"y":return{g:1,c:"var ty = parseInt(results["+a+"], 10);\ny = ty > Date.y2kYear ? 1900 + ty : 2000 + ty;\n",s:"(\\d{1,2})"};case"a":return{g:1,c:"if (results["+a+"] == 'am') {\nif (h == 12) { h = 0; }\n} else { if (h < 12) { h += 12; }}",s:"(am|pm)"};case"A":return{g:1,c:"if (results["+a+"] == 'AM') {\nif (h == 12) { h = 0; }\n} else { if (h < 12) { h += 12; }}",s:"(AM|PM)"};case"g":case"G":case"h":case"H":return{g:1,c:"h = parseInt(results["+a+"], 10);\n",s:"(\\d{1,2})"};case"i":return{g:1,c:"i = parseInt(results["+a+"], 10);\n",s:"(\\d{2})"};case"s":return{g:1,c:"s = parseInt(results["+a+"], 10);\n",s:"(\\d{2})"};case"O":return{g:0,c:null,s:"[+-]\\d{4}"};case"T":return{g:0,c:null,s:"[A-Z]{3}"};case"Z":return{g:0,c:null,s:"[+-]\\d{1,5}"};default:return{g:0,c:null,s:String.escape(b)};}};Date.prototype.getTimezone=function(){return this.toString().replace(/^.*? ([A-Z]{3}) [0-9]{4}.*$/,"$1").replace(/^.*?\(([A-Z])[a-z]+ ([A-Z])[a-z]+ ([A-Z])[a-z]+\)$/,"$1$2$3");};Date.prototype.getGMTOffset=function(){return(this.getTimezoneOffset()>0?"-":"+")+String.leftPad(Math.floor(Math.abs(this.getTimezoneOffset())/60),2,"0")+String.leftPad(Math.abs(this.getTimezoneOffset())%60,2,"0");};Date.prototype.getDayOfYear=function(){var a=0;Date.daysInMonth[1]=this.isLeapYear()?29:28;for(var b=0;b<this.getMonth();++b){a+=Date.daysInMonth[b];}return a+this.getDate();};Date.prototype.getWeekOfYear=function(){var b=this.getDayOfYear()+(4-this.getDay());var a=new Date(this.getFullYear(),0,1);var c=(7-a.getDay()+4);return String.leftPad(Math.ceil((b-c)/7)+1,2,"0");};Date.prototype.isLeapYear=function(){var a=this.getFullYear();return((a&3)==0&&(a%100||(a%400==0&&a)));};Date.prototype.getFirstDayOfMonth=function(){var a=(this.getDay()-(this.getDate()-1))%7;return(a<0)?(a+7):a;};Date.prototype.getLastDayOfMonth=function(){var a=(this.getDay()+(Date.daysInMonth[this.getMonth()]-this.getDate()))%7;return(a<0)?(a+7):a;};Date.prototype.getDaysInMonth=function(){Date.daysInMonth[1]=this.isLeapYear()?29:28;return Date.daysInMonth[this.getMonth()];};Date.prototype.getSuffix=function(){switch(this.getDate()){case 1:case 21:case 31:return"st";case 2:case 22:return"nd";case 3:case 23:return"rd";default:return"th";}};String.escape=function(a){return a.replace(/('|\\)/g,"\\$1");};String.leftPad=function(d,b,c){var a=new String(d);if(c==null){c=" ";}while(a.length<b){a=c+a;}return a;};Date.daysInMonth=[31,28,31,30,31,30,31,31,30,31,30,31];Date.monthNames=["January","February","March","April","May","June","July","August","September","October","November","December"];Date.dayNames=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];Date.y2kYear=50;Date.monthNumbers={Jan:0,Feb:1,Mar:2,Apr:3,May:4,Jun:5,Jul:6,Aug:7,Sep:8,Oct:9,Nov:10,Dec:11};Date.patterns={ISO8601LongPattern:"Y-m-d H:i:s",ISO8601ShortPattern:"Y-m-d",ShortDatePattern:"n/j/Y",LongDatePattern:"l, F d, Y",FullDateTimePattern:"l, F d, Y g:i:s A",MonthDayPattern:"F d",ShortTimePattern:"g:i A",LongTimePattern:"g:i:s A",SortableDateTimePattern:"Y-m-d\\TH:i:s",UniversalSortableDateTimePattern:"Y-m-d H:i:sO",YearMonthPattern:"F, Y"};
2073
- }());
2229
+
2230
+ function HighlightedDate(date, desc, style) {
2231
+ "use strict";
2232
+ this.date = date;
2233
+ this.desc = desc;
2234
+ this.style = style;
2235
+ }
2236
+
2237
+ }));