jquery-dateandtimepicker-rails 1.0.1 → 1.0.2

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: 68f2444a5fe7a010b1bfbb540371fd7f65f26ae1
4
- data.tar.gz: 46af3783f04f6cd2bab802f7bfedfe371daa4bed
3
+ metadata.gz: e37717df12af5ff631b367dcfb12529b360dcdeb
4
+ data.tar.gz: a46e72a9aad4d9feaa9515d5f719b449705e784c
5
5
  SHA512:
6
- metadata.gz: 8885545c5b747f976ae54bf7a85b40cd0edde5fca5d9363dc9e315efd3d0359e0dd466ab153523fefb38ad9b88ecf80c53b6cba58f431367d4ef43fbdeda7f3b
7
- data.tar.gz: 6e7950120e9c0c4c6282cc53294aaf775224d2dce7a2d029b20a065659bab1f308d630c483e013b781bfc7cafd8cf8b72336b9a6b8ec5e3b7f2b036990984707
6
+ metadata.gz: affded4106de249450dc97ccc88a5e9545b9bec2e21e95a585aacd7a5307b9cf3ec85469611ad9365cc3e80a190df7e150a4b21a90553fdda13e5745d86c1493
7
+ data.tar.gz: 021b9d0a6ab0e1a23de1b699d104f8f266a92d6447986cf72e04d6ebaa7091cf52a30ef3ded579b31ff9af5142d954a026d6a51486e44132615fa3d682ea3475
data/README.md CHANGED
@@ -9,7 +9,7 @@ jQuery Date and Time picker plugin version: `v2.5.3`
9
9
 
10
10
  Add this line to your application's Gemfile:
11
11
 
12
- gem 'jquery-dateandtimepicker-rails', '~> 1.0.1'
12
+ gem 'jquery-dateandtimepicker-rails', '~> 1.0.2'
13
13
 
14
14
  And then execute:
15
15
 
@@ -1,4 +1,580 @@
1
- /**
1
+ /*!
2
+ * @copyright Copyright © Kartik Visweswaran, Krajee.com, 2014 - 2015
3
+ * @version 1.3.3
4
+ *
5
+ * Date formatter utility library that allows formatting date/time variables or Date objects using PHP DateTime format.
6
+ * @see http://php.net/manual/en/function.date.php
7
+ *
8
+ * For more JQuery plugins visit http://plugins.krajee.com
9
+ * For more Yii related demos visit http://demos.krajee.com
10
+ */
11
+ var DateFormatter;
12
+ (function () {
13
+ "use strict";
14
+
15
+ var _compare, _lpad, _extend, defaultSettings, DAY, HOUR;
16
+ DAY = 1000 * 60 * 60 * 24;
17
+ HOUR = 3600;
18
+
19
+ _compare = function (str1, str2) {
20
+ return typeof(str1) === 'string' && typeof(str2) === 'string' && str1.toLowerCase() === str2.toLowerCase();
21
+ };
22
+ _lpad = function (value, length, char) {
23
+ var chr = char || '0', val = value.toString();
24
+ return val.length < length ? _lpad(chr + val, length) : val;
25
+ };
26
+ _extend = function (out) {
27
+ var i, obj;
28
+ out = out || {};
29
+ for (i = 1; i < arguments.length; i++) {
30
+ obj = arguments[i];
31
+ if (!obj) {
32
+ continue;
33
+ }
34
+ for (var key in obj) {
35
+ if (obj.hasOwnProperty(key)) {
36
+ if (typeof obj[key] === 'object') {
37
+ _extend(out[key], obj[key]);
38
+ } else {
39
+ out[key] = obj[key];
40
+ }
41
+ }
42
+ }
43
+ }
44
+ return out;
45
+ };
46
+ defaultSettings = {
47
+ dateSettings: {
48
+ days: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
49
+ daysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
50
+ months: [
51
+ 'January', 'February', 'March', 'April', 'May', 'June', 'July',
52
+ 'August', 'September', 'October', 'November', 'December'
53
+ ],
54
+ monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
55
+ meridiem: ['AM', 'PM'],
56
+ ordinal: function (number) {
57
+ var n = number % 10, suffixes = {1: 'st', 2: 'nd', 3: 'rd'};
58
+ return Math.floor(number % 100 / 10) === 1 || !suffixes[n] ? 'th' : suffixes[n];
59
+ }
60
+ },
61
+ separators: /[ \-+\/\.T:@]/g,
62
+ validParts: /[dDjlNSwzWFmMntLoYyaABgGhHisueTIOPZcrU]/g,
63
+ intParts: /[djwNzmnyYhHgGis]/g,
64
+ tzParts: /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,
65
+ tzClip: /[^-+\dA-Z]/g
66
+ };
67
+
68
+ DateFormatter = function (options) {
69
+ var self = this, config = _extend(defaultSettings, options);
70
+ self.dateSettings = config.dateSettings;
71
+ self.separators = config.separators;
72
+ self.validParts = config.validParts;
73
+ self.intParts = config.intParts;
74
+ self.tzParts = config.tzParts;
75
+ self.tzClip = config.tzClip;
76
+ };
77
+
78
+ DateFormatter.prototype = {
79
+ constructor: DateFormatter,
80
+ parseDate: function (vDate, vFormat) {
81
+ var self = this, vFormatParts, vDateParts, i, vDateFlag = false, vTimeFlag = false, vDatePart, iDatePart,
82
+ vSettings = self.dateSettings, vMonth, vMeriIndex, vMeriOffset, len, mer,
83
+ out = {date: null, year: null, month: null, day: null, hour: 0, min: 0, sec: 0};
84
+ if (!vDate) {
85
+ return undefined;
86
+ }
87
+ if (vDate instanceof Date) {
88
+ return vDate;
89
+ }
90
+ if (typeof vDate === 'number') {
91
+ return new Date(vDate);
92
+ }
93
+ if (vFormat === 'U') {
94
+ i = parseInt(vDate);
95
+ return i ? new Date(i * 1000) : vDate;
96
+ }
97
+ if (typeof vDate !== 'string') {
98
+ return '';
99
+ }
100
+ vFormatParts = vFormat.match(self.validParts);
101
+ if (!vFormatParts || vFormatParts.length === 0) {
102
+ throw new Error("Invalid date format definition.");
103
+ }
104
+ vDateParts = vDate.replace(self.separators, '\0').split('\0');
105
+ for (i = 0; i < vDateParts.length; i++) {
106
+ vDatePart = vDateParts[i];
107
+ iDatePart = parseInt(vDatePart);
108
+ switch (vFormatParts[i]) {
109
+ case 'y':
110
+ case 'Y':
111
+ len = vDatePart.length;
112
+ if (len === 2) {
113
+ out.year = parseInt((iDatePart < 70 ? '20' : '19') + vDatePart);
114
+ } else if (len === 4) {
115
+ out.year = iDatePart;
116
+ }
117
+ vDateFlag = true;
118
+ break;
119
+ case 'm':
120
+ case 'n':
121
+ case 'M':
122
+ case 'F':
123
+ if (isNaN(vDatePart)) {
124
+ vMonth = vSettings.monthsShort.indexOf(vDatePart);
125
+ if (vMonth > -1) {
126
+ out.month = vMonth + 1;
127
+ }
128
+ vMonth = vSettings.months.indexOf(vDatePart);
129
+ if (vMonth > -1) {
130
+ out.month = vMonth + 1;
131
+ }
132
+ } else {
133
+ if (iDatePart >= 1 && iDatePart <= 12) {
134
+ out.month = iDatePart;
135
+ }
136
+ }
137
+ vDateFlag = true;
138
+ break;
139
+ case 'd':
140
+ case 'j':
141
+ if (iDatePart >= 1 && iDatePart <= 31) {
142
+ out.day = iDatePart;
143
+ }
144
+ vDateFlag = true;
145
+ break;
146
+ case 'g':
147
+ case 'h':
148
+ vMeriIndex = (vFormatParts.indexOf('a') > -1) ? vFormatParts.indexOf('a') :
149
+ (vFormatParts.indexOf('A') > -1) ? vFormatParts.indexOf('A') : -1;
150
+ mer = vDateParts[vMeriIndex];
151
+ if (vMeriIndex > -1) {
152
+ vMeriOffset = _compare(mer, vSettings.meridiem[0]) ? 0 :
153
+ (_compare(mer, vSettings.meridiem[1]) ? 12 : -1);
154
+ if (iDatePart >= 1 && iDatePart <= 12 && vMeriOffset > -1) {
155
+ out.hour = iDatePart + vMeriOffset - 1;
156
+ } else if (iDatePart >= 0 && iDatePart <= 23) {
157
+ out.hour = iDatePart;
158
+ }
159
+ } else if (iDatePart >= 0 && iDatePart <= 23) {
160
+ out.hour = iDatePart;
161
+ }
162
+ vTimeFlag = true;
163
+ break;
164
+ case 'G':
165
+ case 'H':
166
+ if (iDatePart >= 0 && iDatePart <= 23) {
167
+ out.hour = iDatePart;
168
+ }
169
+ vTimeFlag = true;
170
+ break;
171
+ case 'i':
172
+ if (iDatePart >= 0 && iDatePart <= 59) {
173
+ out.min = iDatePart;
174
+ }
175
+ vTimeFlag = true;
176
+ break;
177
+ case 's':
178
+ if (iDatePart >= 0 && iDatePart <= 59) {
179
+ out.sec = iDatePart;
180
+ }
181
+ vTimeFlag = true;
182
+ break;
183
+ }
184
+ }
185
+ if (vDateFlag === true && out.year && out.month && out.day) {
186
+ out.date = new Date(out.year, out.month - 1, out.day, out.hour, out.min, out.sec, 0);
187
+ } else {
188
+ if (vTimeFlag !== true) {
189
+ return false;
190
+ }
191
+ out.date = new Date(0, 0, 0, out.hour, out.min, out.sec, 0);
192
+ }
193
+ return out.date;
194
+ },
195
+ guessDate: function (vDateStr, vFormat) {
196
+ if (typeof vDateStr !== 'string') {
197
+ return vDateStr;
198
+ }
199
+ var self = this, vParts = vDateStr.replace(self.separators, '\0').split('\0'), vPattern = /^[djmn]/g,
200
+ vFormatParts = vFormat.match(self.validParts), vDate = new Date(), vDigit = 0, vYear, i, iPart, iSec;
201
+
202
+ if (!vPattern.test(vFormatParts[0])) {
203
+ return vDateStr;
204
+ }
205
+
206
+ for (i = 0; i < vParts.length; i++) {
207
+ vDigit = 2;
208
+ iPart = vParts[i];
209
+ iSec = parseInt(iPart.substr(0, 2));
210
+ switch (i) {
211
+ case 0:
212
+ if (vFormatParts[0] === 'm' || vFormatParts[0] === 'n') {
213
+ vDate.setMonth(iSec - 1);
214
+ } else {
215
+ vDate.setDate(iSec);
216
+ }
217
+ break;
218
+ case 1:
219
+ if (vFormatParts[0] === 'm' || vFormatParts[0] === 'n') {
220
+ vDate.setDate(iSec);
221
+ } else {
222
+ vDate.setMonth(iSec - 1);
223
+ }
224
+ break;
225
+ case 2:
226
+ vYear = vDate.getFullYear();
227
+ if (iPart.length < 4) {
228
+ vDate.setFullYear(parseInt(vYear.toString().substr(0, 4 - iPart.length) + iPart));
229
+ vDigit = iPart.length;
230
+ } else {
231
+ vDate.setFullYear = parseInt(iPart.substr(0, 4));
232
+ vDigit = 4;
233
+ }
234
+ break;
235
+ case 3:
236
+ vDate.setHours(iSec);
237
+ break;
238
+ case 4:
239
+ vDate.setMinutes(iSec);
240
+ break;
241
+ case 5:
242
+ vDate.setSeconds(iSec);
243
+ break;
244
+ }
245
+ if (iPart.substr(vDigit).length > 0) {
246
+ vParts.splice(i + 1, 0, iPart.substr(vDigit));
247
+ }
248
+ }
249
+ return vDate;
250
+ },
251
+ parseFormat: function (vChar, vDate) {
252
+ var self = this, vSettings = self.dateSettings, fmt, backspace = /\\?(.?)/gi, doFormat = function (t, s) {
253
+ return fmt[t] ? fmt[t]() : s;
254
+ };
255
+ fmt = {
256
+ /////////
257
+ // DAY //
258
+ /////////
259
+ /**
260
+ * Day of month with leading 0: `01..31`
261
+ * @return {string}
262
+ */
263
+ d: function () {
264
+ return _lpad(fmt.j(), 2);
265
+ },
266
+ /**
267
+ * Shorthand day name: `Mon...Sun`
268
+ * @return {string}
269
+ */
270
+ D: function () {
271
+ return vSettings.daysShort[fmt.w()];
272
+ },
273
+ /**
274
+ * Day of month: `1..31`
275
+ * @return {number}
276
+ */
277
+ j: function () {
278
+ return vDate.getDate();
279
+ },
280
+ /**
281
+ * Full day name: `Monday...Sunday`
282
+ * @return {number}
283
+ */
284
+ l: function () {
285
+ return vSettings.days[fmt.w()];
286
+ },
287
+ /**
288
+ * ISO-8601 day of week: `1[Mon]..7[Sun]`
289
+ * @return {number}
290
+ */
291
+ N: function () {
292
+ return fmt.w() || 7;
293
+ },
294
+ /**
295
+ * Day of week: `0[Sun]..6[Sat]`
296
+ * @return {number}
297
+ */
298
+ w: function () {
299
+ return vDate.getDay();
300
+ },
301
+ /**
302
+ * Day of year: `0..365`
303
+ * @return {number}
304
+ */
305
+ z: function () {
306
+ var a = new Date(fmt.Y(), fmt.n() - 1, fmt.j()), b = new Date(fmt.Y(), 0, 1);
307
+ return Math.round((a - b) / DAY);
308
+ },
309
+
310
+ //////////
311
+ // WEEK //
312
+ //////////
313
+ /**
314
+ * ISO-8601 week number
315
+ * @return {number}
316
+ */
317
+ W: function () {
318
+ var a = new Date(fmt.Y(), fmt.n() - 1, fmt.j() - fmt.N() + 3), b = new Date(a.getFullYear(), 0, 4);
319
+ return _lpad(1 + Math.round((a - b) / DAY / 7), 2);
320
+ },
321
+
322
+ ///////////
323
+ // MONTH //
324
+ ///////////
325
+ /**
326
+ * Full month name: `January...December`
327
+ * @return {string}
328
+ */
329
+ F: function () {
330
+ return vSettings.months[vDate.getMonth()];
331
+ },
332
+ /**
333
+ * Month w/leading 0: `01..12`
334
+ * @return {string}
335
+ */
336
+ m: function () {
337
+ return _lpad(fmt.n(), 2);
338
+ },
339
+ /**
340
+ * Shorthand month name; `Jan...Dec`
341
+ * @return {string}
342
+ */
343
+ M: function () {
344
+ return vSettings.monthsShort[vDate.getMonth()];
345
+ },
346
+ /**
347
+ * Month: `1...12`
348
+ * @return {number}
349
+ */
350
+ n: function () {
351
+ return vDate.getMonth() + 1;
352
+ },
353
+ /**
354
+ * Days in month: `28...31`
355
+ * @return {number}
356
+ */
357
+ t: function () {
358
+ return (new Date(fmt.Y(), fmt.n(), 0)).getDate();
359
+ },
360
+
361
+ //////////
362
+ // YEAR //
363
+ //////////
364
+ /**
365
+ * Is leap year? `0 or 1`
366
+ * @return {number}
367
+ */
368
+ L: function () {
369
+ var Y = fmt.Y();
370
+ return (Y % 4 === 0 && Y % 100 !== 0 || Y % 400 === 0) ? 1 : 0;
371
+ },
372
+ /**
373
+ * ISO-8601 year
374
+ * @return {number}
375
+ */
376
+ o: function () {
377
+ var n = fmt.n(), W = fmt.W(), Y = fmt.Y();
378
+ return Y + (n === 12 && W < 9 ? 1 : n === 1 && W > 9 ? -1 : 0);
379
+ },
380
+ /**
381
+ * Full year: `e.g. 1980...2010`
382
+ * @return {number}
383
+ */
384
+ Y: function () {
385
+ return vDate.getFullYear();
386
+ },
387
+ /**
388
+ * Last two digits of year: `00...99`
389
+ * @return {string}
390
+ */
391
+ y: function () {
392
+ return fmt.Y().toString().slice(-2);
393
+ },
394
+
395
+ //////////
396
+ // TIME //
397
+ //////////
398
+ /**
399
+ * Meridian lower: `am or pm`
400
+ * @return {string}
401
+ */
402
+ a: function () {
403
+ return fmt.A().toLowerCase();
404
+ },
405
+ /**
406
+ * Meridian upper: `AM or PM`
407
+ * @return {string}
408
+ */
409
+ A: function () {
410
+ var n = fmt.G() < 12 ? 0 : 1;
411
+ return vSettings.meridiem[n];
412
+ },
413
+ /**
414
+ * Swatch Internet time: `000..999`
415
+ * @return {string}
416
+ */
417
+ B: function () {
418
+ var H = vDate.getUTCHours() * HOUR, i = vDate.getUTCMinutes() * 60, s = vDate.getUTCSeconds();
419
+ return _lpad(Math.floor((H + i + s + HOUR) / 86.4) % 1000, 3);
420
+ },
421
+ /**
422
+ * 12-Hours: `1..12`
423
+ * @return {number}
424
+ */
425
+ g: function () {
426
+ return fmt.G() % 12 || 12;
427
+ },
428
+ /**
429
+ * 24-Hours: `0..23`
430
+ * @return {number}
431
+ */
432
+ G: function () {
433
+ return vDate.getHours();
434
+ },
435
+ /**
436
+ * 12-Hours with leading 0: `01..12`
437
+ * @return {string}
438
+ */
439
+ h: function () {
440
+ return _lpad(fmt.g(), 2);
441
+ },
442
+ /**
443
+ * 24-Hours w/leading 0: `00..23`
444
+ * @return {string}
445
+ */
446
+ H: function () {
447
+ return _lpad(fmt.G(), 2);
448
+ },
449
+ /**
450
+ * Minutes w/leading 0: `00..59`
451
+ * @return {string}
452
+ */
453
+ i: function () {
454
+ return _lpad(vDate.getMinutes(), 2);
455
+ },
456
+ /**
457
+ * Seconds w/leading 0: `00..59`
458
+ * @return {string}
459
+ */
460
+ s: function () {
461
+ return _lpad(vDate.getSeconds(), 2);
462
+ },
463
+ /**
464
+ * Microseconds: `000000-999000`
465
+ * @return {string}
466
+ */
467
+ u: function () {
468
+ return _lpad(vDate.getMilliseconds() * 1000, 6);
469
+ },
470
+
471
+ //////////////
472
+ // TIMEZONE //
473
+ //////////////
474
+ /**
475
+ * Timezone identifier: `e.g. Atlantic/Azores, ...`
476
+ * @return {string}
477
+ */
478
+ e: function () {
479
+ var str = /\((.*)\)/.exec(String(vDate))[1];
480
+ return str || 'Coordinated Universal Time';
481
+ },
482
+ /**
483
+ * Timezone abbreviation: `e.g. EST, MDT, ...`
484
+ * @return {string}
485
+ */
486
+ T: function () {
487
+ var str = (String(vDate).match(self.tzParts) || [""]).pop().replace(self.tzClip, "");
488
+ return str || 'UTC';
489
+ },
490
+ /**
491
+ * DST observed? `0 or 1`
492
+ * @return {number}
493
+ */
494
+ I: function () {
495
+ var a = new Date(fmt.Y(), 0), c = Date.UTC(fmt.Y(), 0),
496
+ b = new Date(fmt.Y(), 6), d = Date.UTC(fmt.Y(), 6);
497
+ return ((a - c) !== (b - d)) ? 1 : 0;
498
+ },
499
+ /**
500
+ * Difference to GMT in hour format: `e.g. +0200`
501
+ * @return {string}
502
+ */
503
+ O: function () {
504
+ var tzo = vDate.getTimezoneOffset(), a = Math.abs(tzo);
505
+ return (tzo > 0 ? '-' : '+') + _lpad(Math.floor(a / 60) * 100 + a % 60, 4);
506
+ },
507
+ /**
508
+ * Difference to GMT with colon: `e.g. +02:00`
509
+ * @return {string}
510
+ */
511
+ P: function () {
512
+ var O = fmt.O();
513
+ return (O.substr(0, 3) + ':' + O.substr(3, 2));
514
+ },
515
+ /**
516
+ * Timezone offset in seconds: `-43200...50400`
517
+ * @return {number}
518
+ */
519
+ Z: function () {
520
+ return -vDate.getTimezoneOffset() * 60;
521
+ },
522
+
523
+ ////////////////////
524
+ // FULL DATE TIME //
525
+ ////////////////////
526
+ /**
527
+ * ISO-8601 date
528
+ * @return {string}
529
+ */
530
+ c: function () {
531
+ return 'Y-m-d\\TH:i:sP'.replace(backspace, doFormat);
532
+ },
533
+ /**
534
+ * RFC 2822 date
535
+ * @return {string}
536
+ */
537
+ r: function () {
538
+ return 'D, d M Y H:i:s O'.replace(backspace, doFormat);
539
+ },
540
+ /**
541
+ * Seconds since UNIX epoch
542
+ * @return {number}
543
+ */
544
+ U: function () {
545
+ return vDate.getTime() / 1000 || 0;
546
+ }
547
+ };
548
+ return doFormat(vChar, vChar);
549
+ },
550
+ formatDate: function (vDate, vFormat) {
551
+ var self = this, i, n, len, str, vChar, vDateStr = '';
552
+ if (typeof vDate === 'string') {
553
+ vDate = self.parseDate(vDate, vFormat);
554
+ if (vDate === false) {
555
+ return false;
556
+ }
557
+ }
558
+ if (vDate instanceof Date) {
559
+ len = vFormat.length;
560
+ for (i = 0; i < len; i++) {
561
+ vChar = vFormat.charAt(i);
562
+ if (vChar === 'S') {
563
+ continue;
564
+ }
565
+ str = self.parseFormat(vChar, vDate);
566
+ if (i !== (len - 1) && self.intParts.test(vChar) && vFormat.charAt(i + 1) === 'S') {
567
+ n = parseInt(str);
568
+ str += self.dateSettings.ordinal(n);
569
+ }
570
+ vDateStr += str;
571
+ }
572
+ return vDateStr;
573
+ }
574
+ return '';
575
+ }
576
+ };
577
+ })();/**
2
578
  * @preserve jQuery DateTimePicker plugin v2.5.3
3
579
  * @homepage http://xdsoft.net/jqplugins/datetimepicker/
4
580
  * @author Chupurnov Valeriy (<chupurnov@gmail.com>)
@@ -2368,3 +2944,223 @@
2368
2944
  this.style = style;
2369
2945
  }
2370
2946
  }));
2947
+ /*!
2948
+ * jQuery Mousewheel 3.1.13
2949
+ *
2950
+ * Copyright jQuery Foundation and other contributors
2951
+ * Released under the MIT license
2952
+ * http://jquery.org/license
2953
+ */
2954
+
2955
+ (function (factory) {
2956
+ if ( typeof define === 'function' && define.amd ) {
2957
+ // AMD. Register as an anonymous module.
2958
+ define(['jquery'], factory);
2959
+ } else if (typeof exports === 'object') {
2960
+ // Node/CommonJS style for Browserify
2961
+ module.exports = factory;
2962
+ } else {
2963
+ // Browser globals
2964
+ factory(jQuery);
2965
+ }
2966
+ }(function ($) {
2967
+
2968
+ var toFix = ['wheel', 'mousewheel', 'DOMMouseScroll', 'MozMousePixelScroll'],
2969
+ toBind = ( 'onwheel' in document || document.documentMode >= 9 ) ?
2970
+ ['wheel'] : ['mousewheel', 'DomMouseScroll', 'MozMousePixelScroll'],
2971
+ slice = Array.prototype.slice,
2972
+ nullLowestDeltaTimeout, lowestDelta;
2973
+
2974
+ if ( $.event.fixHooks ) {
2975
+ for ( var i = toFix.length; i; ) {
2976
+ $.event.fixHooks[ toFix[--i] ] = $.event.mouseHooks;
2977
+ }
2978
+ }
2979
+
2980
+ var special = $.event.special.mousewheel = {
2981
+ version: '3.1.12',
2982
+
2983
+ setup: function() {
2984
+ if ( this.addEventListener ) {
2985
+ for ( var i = toBind.length; i; ) {
2986
+ this.addEventListener( toBind[--i], handler, false );
2987
+ }
2988
+ } else {
2989
+ this.onmousewheel = handler;
2990
+ }
2991
+ // Store the line height and page height for this particular element
2992
+ $.data(this, 'mousewheel-line-height', special.getLineHeight(this));
2993
+ $.data(this, 'mousewheel-page-height', special.getPageHeight(this));
2994
+ },
2995
+
2996
+ teardown: function() {
2997
+ if ( this.removeEventListener ) {
2998
+ for ( var i = toBind.length; i; ) {
2999
+ this.removeEventListener( toBind[--i], handler, false );
3000
+ }
3001
+ } else {
3002
+ this.onmousewheel = null;
3003
+ }
3004
+ // Clean up the data we added to the element
3005
+ $.removeData(this, 'mousewheel-line-height');
3006
+ $.removeData(this, 'mousewheel-page-height');
3007
+ },
3008
+
3009
+ getLineHeight: function(elem) {
3010
+ var $elem = $(elem),
3011
+ $parent = $elem['offsetParent' in $.fn ? 'offsetParent' : 'parent']();
3012
+ if (!$parent.length) {
3013
+ $parent = $('body');
3014
+ }
3015
+ return parseInt($parent.css('fontSize'), 10) || parseInt($elem.css('fontSize'), 10) || 16;
3016
+ },
3017
+
3018
+ getPageHeight: function(elem) {
3019
+ return $(elem).height();
3020
+ },
3021
+
3022
+ settings: {
3023
+ adjustOldDeltas: true, // see shouldAdjustOldDeltas() below
3024
+ normalizeOffset: true // calls getBoundingClientRect for each event
3025
+ }
3026
+ };
3027
+
3028
+ $.fn.extend({
3029
+ mousewheel: function(fn) {
3030
+ return fn ? this.bind('mousewheel', fn) : this.trigger('mousewheel');
3031
+ },
3032
+
3033
+ unmousewheel: function(fn) {
3034
+ return this.unbind('mousewheel', fn);
3035
+ }
3036
+ });
3037
+
3038
+
3039
+ function handler(event) {
3040
+ var orgEvent = event || window.event,
3041
+ args = slice.call(arguments, 1),
3042
+ delta = 0,
3043
+ deltaX = 0,
3044
+ deltaY = 0,
3045
+ absDelta = 0,
3046
+ offsetX = 0,
3047
+ offsetY = 0;
3048
+ event = $.event.fix(orgEvent);
3049
+ event.type = 'mousewheel';
3050
+
3051
+ // Old school scrollwheel delta
3052
+ if ( 'detail' in orgEvent ) { deltaY = orgEvent.detail * -1; }
3053
+ if ( 'wheelDelta' in orgEvent ) { deltaY = orgEvent.wheelDelta; }
3054
+ if ( 'wheelDeltaY' in orgEvent ) { deltaY = orgEvent.wheelDeltaY; }
3055
+ if ( 'wheelDeltaX' in orgEvent ) { deltaX = orgEvent.wheelDeltaX * -1; }
3056
+
3057
+ // Firefox < 17 horizontal scrolling related to DOMMouseScroll event
3058
+ if ( 'axis' in orgEvent && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) {
3059
+ deltaX = deltaY * -1;
3060
+ deltaY = 0;
3061
+ }
3062
+
3063
+ // Set delta to be deltaY or deltaX if deltaY is 0 for backwards compatabilitiy
3064
+ delta = deltaY === 0 ? deltaX : deltaY;
3065
+
3066
+ // New school wheel delta (wheel event)
3067
+ if ( 'deltaY' in orgEvent ) {
3068
+ deltaY = orgEvent.deltaY * -1;
3069
+ delta = deltaY;
3070
+ }
3071
+ if ( 'deltaX' in orgEvent ) {
3072
+ deltaX = orgEvent.deltaX;
3073
+ if ( deltaY === 0 ) { delta = deltaX * -1; }
3074
+ }
3075
+
3076
+ // No change actually happened, no reason to go any further
3077
+ if ( deltaY === 0 && deltaX === 0 ) { return; }
3078
+
3079
+ // Need to convert lines and pages to pixels if we aren't already in pixels
3080
+ // There are three delta modes:
3081
+ // * deltaMode 0 is by pixels, nothing to do
3082
+ // * deltaMode 1 is by lines
3083
+ // * deltaMode 2 is by pages
3084
+ if ( orgEvent.deltaMode === 1 ) {
3085
+ var lineHeight = $.data(this, 'mousewheel-line-height');
3086
+ delta *= lineHeight;
3087
+ deltaY *= lineHeight;
3088
+ deltaX *= lineHeight;
3089
+ } else if ( orgEvent.deltaMode === 2 ) {
3090
+ var pageHeight = $.data(this, 'mousewheel-page-height');
3091
+ delta *= pageHeight;
3092
+ deltaY *= pageHeight;
3093
+ deltaX *= pageHeight;
3094
+ }
3095
+
3096
+ // Store lowest absolute delta to normalize the delta values
3097
+ absDelta = Math.max( Math.abs(deltaY), Math.abs(deltaX) );
3098
+
3099
+ if ( !lowestDelta || absDelta < lowestDelta ) {
3100
+ lowestDelta = absDelta;
3101
+
3102
+ // Adjust older deltas if necessary
3103
+ if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) {
3104
+ lowestDelta /= 40;
3105
+ }
3106
+ }
3107
+
3108
+ // Adjust older deltas if necessary
3109
+ if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) {
3110
+ // Divide all the things by 40!
3111
+ delta /= 40;
3112
+ deltaX /= 40;
3113
+ deltaY /= 40;
3114
+ }
3115
+
3116
+ // Get a whole, normalized value for the deltas
3117
+ delta = Math[ delta >= 1 ? 'floor' : 'ceil' ](delta / lowestDelta);
3118
+ deltaX = Math[ deltaX >= 1 ? 'floor' : 'ceil' ](deltaX / lowestDelta);
3119
+ deltaY = Math[ deltaY >= 1 ? 'floor' : 'ceil' ](deltaY / lowestDelta);
3120
+
3121
+ // Normalise offsetX and offsetY properties
3122
+ if ( special.settings.normalizeOffset && this.getBoundingClientRect ) {
3123
+ var boundingRect = this.getBoundingClientRect();
3124
+ offsetX = event.clientX - boundingRect.left;
3125
+ offsetY = event.clientY - boundingRect.top;
3126
+ }
3127
+
3128
+ // Add information to the event object
3129
+ event.deltaX = deltaX;
3130
+ event.deltaY = deltaY;
3131
+ event.deltaFactor = lowestDelta;
3132
+ event.offsetX = offsetX;
3133
+ event.offsetY = offsetY;
3134
+ // Go ahead and set deltaMode to 0 since we converted to pixels
3135
+ // Although this is a little odd since we overwrite the deltaX/Y
3136
+ // properties with normalized deltas.
3137
+ event.deltaMode = 0;
3138
+
3139
+ // Add event and delta to the front of the arguments
3140
+ args.unshift(event, delta, deltaX, deltaY);
3141
+
3142
+ // Clearout lowestDelta after sometime to better
3143
+ // handle multiple device types that give different
3144
+ // a different lowestDelta
3145
+ // Ex: trackpad = 3 and mouse wheel = 120
3146
+ if (nullLowestDeltaTimeout) { clearTimeout(nullLowestDeltaTimeout); }
3147
+ nullLowestDeltaTimeout = setTimeout(nullLowestDelta, 200);
3148
+
3149
+ return ($.event.dispatch || $.event.handle).apply(this, args);
3150
+ }
3151
+
3152
+ function nullLowestDelta() {
3153
+ lowestDelta = null;
3154
+ }
3155
+
3156
+ function shouldAdjustOldDeltas(orgEvent, absDelta) {
3157
+ // If this is an older event and the delta is divisable by 120,
3158
+ // then we are assuming that the browser is treating this as an
3159
+ // older mouse wheel event and that we should divide the deltas
3160
+ // by 40 to try and get a more usable deltaFactor.
3161
+ // Side note, this actually impacts the reported scroll distance
3162
+ // in older browsers and can cause scrolling to be slower than native.
3163
+ // Turn this off by setting $.event.special.mousewheel.settings.adjustOldDeltas to false.
3164
+ return special.settings.adjustOldDeltas && orgEvent.type === 'mousewheel' && absDelta % 120 === 0;
3165
+ }
3166
+ }));
@@ -1,7 +1,7 @@
1
1
  module Jquery
2
2
  module Dateandtimepicker
3
3
  module Rails
4
- VERSION = '1.0.1'.freeze
4
+ VERSION = '1.0.2'.freeze
5
5
  end
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jquery-dateandtimepicker-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - ksarunas