bootstrap-datepicker-rails 1.3.0.1.rc5 → 1.3.0.1.rc6

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7679dbe039211388ed5e8184ea70d21aa049c676
4
- data.tar.gz: 43f442b7dbd990507ad7c7be56258be9a63bd14e
3
+ metadata.gz: 4848dcf43c1d2ff14c6dd969e6baa2398089bf20
4
+ data.tar.gz: d85cc2c130f7ad3ce748a3946d1ea06b813ec177
5
5
  SHA512:
6
- metadata.gz: 43154cf425fc7c6ad33e56345582b52e0c41de927275654b4acd81d86eb42f14dfe74c6b94bd516f65a0b7c7f1de78ac06de5003c07f5451b03fea4c4739ad2e
7
- data.tar.gz: c9a4e25b645900b2932ac75b7f4081386e09f6dd161216e470a9d4564f1f0230df27f7b5179914b6ec8cc1426b1c856f1ff656a31ea16c0050965426707e07f7
6
+ metadata.gz: 5e8dffac2f02f1a17e936db9a7d21f3a97e3e0ad78f95c1d6c70726fd95969e9d6296e4091756427c3575e2887e2845569553813b8ca7839feabbf6e4bf567ae
7
+ data.tar.gz: d5e21b96c960164e22bb48e33eadd6af185e97a5f2c2eca73254e85eaffe1d81c6aade1aee61525427923f75c4c81948fb272153a6d2480679f6b835da1a7462
@@ -1,5 +1,5 @@
1
1
  module BootstrapDatepickerRails
2
2
  module Rails
3
- VERSION = "1.3.0.1.rc5"
3
+ VERSION = "1.3.0.1.rc6"
4
4
  end
5
5
  end
@@ -20,7 +20,7 @@
20
20
  * limitations under the License.
21
21
  * ========================================================= */
22
22
 
23
- (function($, undefined) {
23
+ (function($, undefined){
24
24
 
25
25
  var $window = $(window);
26
26
 
@@ -34,7 +34,7 @@
34
34
  function alias(method){
35
35
  return function(){
36
36
  return this[method].apply(this, arguments);
37
- }
37
+ };
38
38
  }
39
39
 
40
40
  var DateArray = (function(){
@@ -46,7 +46,7 @@
46
46
  // Array.indexOf is not cross-browser;
47
47
  // $.inArray doesn't work with Dates
48
48
  var val = d && d.valueOf();
49
- for (var i=0, l=this.length; i<l; i++)
49
+ for (var i=0, l=this.length; i < l; i++)
50
50
  if (this[i].valueOf() === val)
51
51
  return i;
52
52
  return -1;
@@ -77,13 +77,13 @@
77
77
  a.push.apply(a, arguments);
78
78
  $.extend(a, extras);
79
79
  return a;
80
- }
80
+ };
81
81
  })();
82
82
 
83
83
 
84
84
  // Picker object
85
85
 
86
- var Datepicker = function(element, options) {
86
+ var Datepicker = function(element, options){
87
87
  this.dates = new DateArray();
88
88
  this.viewDate = UTCToday();
89
89
  this.focusDate = null;
@@ -95,16 +95,17 @@
95
95
  this.isInput = this.element.is('input');
96
96
  this.component = this.element.is('.date') ? this.element.find('.add-on, .input-group-addon, .btn') : false;
97
97
  this.hasInput = this.component && this.element.find('input').length;
98
- if(this.component && this.component.length === 0)
98
+ if (this.component && this.component.length === 0)
99
99
  this.component = false;
100
100
 
101
101
  this.picker = $(DPGlobal.template);
102
102
  this._buildEvents();
103
103
  this._attachEvents();
104
104
 
105
- if(this.isInline) {
105
+ if (this.isInline){
106
106
  this.picker.addClass('datepicker-inline').appendTo(this.element);
107
- } else {
107
+ }
108
+ else {
108
109
  this.picker.addClass('datepicker-dropdown dropdown-menu');
109
110
  }
110
111
 
@@ -134,7 +135,7 @@
134
135
  this.update();
135
136
  this.showMode();
136
137
 
137
- if(this.isInline) {
138
+ if (this.isInline){
138
139
  this.show();
139
140
  }
140
141
  };
@@ -151,14 +152,14 @@
151
152
  // Check if "de-DE" style date is available, if not language should
152
153
  // fallback to 2 letter code eg "de"
153
154
  var lang = o.language;
154
- if (!dates[lang]) {
155
+ if (!dates[lang]){
155
156
  lang = lang.split('-')[0];
156
157
  if (!dates[lang])
157
158
  lang = defaults.language;
158
159
  }
159
160
  o.language = lang;
160
161
 
161
- switch(o.startView){
162
+ switch (o.startView){
162
163
  case 2:
163
164
  case 'decade':
164
165
  o.startView = 2;
@@ -171,7 +172,7 @@
171
172
  o.startView = 0;
172
173
  }
173
174
 
174
- switch (o.minViewMode) {
175
+ switch (o.minViewMode){
175
176
  case 1:
176
177
  case 'months':
177
178
  o.minViewMode = 1;
@@ -200,23 +201,25 @@
200
201
  o.weekEnd = ((o.weekStart + 6) % 7);
201
202
 
202
203
  var format = DPGlobal.parseFormat(o.format);
203
- if (o.startDate !== -Infinity) {
204
- if (!!o.startDate) {
204
+ if (o.startDate !== -Infinity){
205
+ if (!!o.startDate){
205
206
  if (o.startDate instanceof Date)
206
207
  o.startDate = this._local_to_utc(this._zero_time(o.startDate));
207
208
  else
208
209
  o.startDate = DPGlobal.parseDate(o.startDate, format, o.language);
209
- } else {
210
+ }
211
+ else {
210
212
  o.startDate = -Infinity;
211
213
  }
212
214
  }
213
- if (o.endDate !== Infinity) {
214
- if (!!o.endDate) {
215
+ if (o.endDate !== Infinity){
216
+ if (!!o.endDate){
215
217
  if (o.endDate instanceof Date)
216
218
  o.endDate = this._local_to_utc(this._zero_time(o.endDate));
217
219
  else
218
220
  o.endDate = DPGlobal.parseDate(o.endDate, format, o.language);
219
- } else {
221
+ }
222
+ else {
220
223
  o.endDate = Infinity;
221
224
  }
222
225
  }
@@ -224,7 +227,7 @@
224
227
  o.daysOfWeekDisabled = o.daysOfWeekDisabled||[];
225
228
  if (!$.isArray(o.daysOfWeekDisabled))
226
229
  o.daysOfWeekDisabled = o.daysOfWeekDisabled.split(/[,\s]*/);
227
- o.daysOfWeekDisabled = $.map(o.daysOfWeekDisabled, function (d) {
230
+ o.daysOfWeekDisabled = $.map(o.daysOfWeekDisabled, function(d){
228
231
  return parseInt(d, 10);
229
232
  });
230
233
 
@@ -237,7 +240,7 @@
237
240
  if (!_plc || _plc === 'auto')
238
241
  ; // no action
239
242
  else if (plc.length === 1){
240
- switch(plc[0]){
243
+ switch (plc[0]){
241
244
  case 'top':
242
245
  case 'bottom':
243
246
  o.orientation.y = plc[0];
@@ -263,13 +266,13 @@
263
266
  _events: [],
264
267
  _secondaryEvents: [],
265
268
  _applyEvents: function(evs){
266
- for (var i=0, el, ch, ev; i<evs.length; i++){
269
+ for (var i=0, el, ch, ev; i < evs.length; i++){
267
270
  el = evs[i][0];
268
- if (evs[i].length == 2){
271
+ if (evs[i].length === 2){
269
272
  ch = undefined;
270
273
  ev = evs[i][1];
271
274
  }
272
- else if (evs[i].length == 3){
275
+ else if (evs[i].length === 3){
273
276
  ch = evs[i][1];
274
277
  ev = evs[i][2];
275
278
  }
@@ -277,13 +280,13 @@
277
280
  }
278
281
  },
279
282
  _unapplyEvents: function(evs){
280
- for (var i=0, el, ev, ch; i<evs.length; i++){
283
+ for (var i=0, el, ev, ch; i < evs.length; i++){
281
284
  el = evs[i][0];
282
- if (evs[i].length == 2){
285
+ if (evs[i].length === 2){
283
286
  ch = undefined;
284
287
  ev = evs[i][1];
285
288
  }
286
- else if (evs[i].length == 3){
289
+ else if (evs[i].length === 3){
287
290
  ch = evs[i][1];
288
291
  ev = evs[i][2];
289
292
  }
@@ -291,7 +294,7 @@
291
294
  }
292
295
  },
293
296
  _buildEvents: function(){
294
- if (this.isInput) { // single input
297
+ if (this.isInput){ // single input
295
298
  this._events = [
296
299
  [this.element, {
297
300
  focus: $.proxy(this.show, this),
@@ -310,7 +313,7 @@
310
313
  focus: $.proxy(this.show, this),
311
314
  keyup: $.proxy(function(e){
312
315
  if ($.inArray(e.keyCode, [27,37,39,38,40,32,13,9]) === -1)
313
- this.update()
316
+ this.update();
314
317
  }, this),
315
318
  keydown: $.proxy(this.keydown, this)
316
319
  }],
@@ -319,7 +322,7 @@
319
322
  }]
320
323
  ];
321
324
  }
322
- else if (this.element.is('div')) { // inline datepicker
325
+ else if (this.element.is('div')){ // inline datepicker
323
326
  this.isInline = true;
324
327
  }
325
328
  else {
@@ -352,14 +355,14 @@
352
355
  resize: $.proxy(this.place, this)
353
356
  }],
354
357
  [$(document), {
355
- 'mousedown touchstart': $.proxy(function (e) {
358
+ 'mousedown touchstart': $.proxy(function(e){
356
359
  // Clicked outside the datepicker, hide it
357
360
  if (!(
358
361
  this.element.is(e.target) ||
359
362
  this.element.find(e.target).length ||
360
363
  this.picker.is(e.target) ||
361
364
  this.picker.find(e.target).length
362
- )) {
365
+ )){
363
366
  this.hide();
364
367
  }
365
368
  }, this)
@@ -393,7 +396,7 @@
393
396
  ix = this.dates.length - 1;
394
397
  format = this.o.format;
395
398
  }
396
- else if (typeof ix == 'string'){
399
+ else if (typeof ix === 'string'){
397
400
  format = ix;
398
401
  ix = this.dates.length - 1;
399
402
  }
@@ -404,19 +407,20 @@
404
407
  });
405
408
  },
406
409
 
407
- show: function(e) {
410
+ show: function(){
408
411
  if (!this.isInline)
409
412
  this.picker.appendTo('body');
410
413
  this.picker.show();
411
- this.height = this.component ? this.component.outerHeight() : this.element.outerHeight();
412
414
  this.place();
413
415
  this._attachSecondaryEvents();
414
416
  this._trigger('show');
415
417
  },
416
418
 
417
419
  hide: function(){
418
- if(this.isInline) return;
419
- if (!this.picker.is(':visible')) return;
420
+ if (this.isInline)
421
+ return;
422
+ if (!this.picker.is(':visible'))
423
+ return;
420
424
  this.focusDate = null;
421
425
  this.picker.hide().detach();
422
426
  this._detachSecondaryEvents();
@@ -434,13 +438,13 @@
434
438
  this._trigger('hide');
435
439
  },
436
440
 
437
- remove: function() {
441
+ remove: function(){
438
442
  this.hide();
439
443
  this._detachEvents();
440
444
  this._detachSecondaryEvents();
441
445
  this.picker.remove();
442
446
  delete this.element.data().datepicker;
443
- if (!this.isInput) {
447
+ if (!this.isInput){
444
448
  delete this.element.data().date;
445
449
  }
446
450
  },
@@ -463,25 +467,29 @@
463
467
  },
464
468
 
465
469
  getUTCDates: function(){
466
- return $.map(this.dates, function(d){ return new Date(d); });
470
+ return $.map(this.dates, function(d){
471
+ return new Date(d);
472
+ });
467
473
  },
468
474
 
469
- getDate: function() {
475
+ getDate: function(){
470
476
  return this._utc_to_local(this.getUTCDate());
471
477
  },
472
478
 
473
- getUTCDate: function() {
479
+ getUTCDate: function(){
474
480
  return new Date(this.dates.get(-1));
475
481
  },
476
482
 
477
- setDates: function() {
478
- this.update.apply(this, arguments);
483
+ setDates: function(){
484
+ var args = $.isArray(arguments[0]) ? arguments[0] : arguments;
485
+ this.update.apply(this, args);
479
486
  this._trigger('changeDate');
480
487
  this.setValue();
481
488
  },
482
489
 
483
- setUTCDates: function() {
484
- this.update.apply(this, $.map(arguments, this._utc_to_local));
490
+ setUTCDates: function(){
491
+ var args = $.isArray(arguments[0]) ? arguments[0] : arguments;
492
+ this.update.apply(this, $.map(args, this._utc_to_local));
485
493
  this._trigger('changeDate');
486
494
  this.setValue();
487
495
  },
@@ -489,18 +497,19 @@
489
497
  setDate: alias('setDates'),
490
498
  setUTCDate: alias('setUTCDates'),
491
499
 
492
- setValue: function() {
500
+ setValue: function(){
493
501
  var formatted = this.getFormattedDate();
494
- if (!this.isInput) {
502
+ if (!this.isInput){
495
503
  if (this.component){
496
504
  this.element.find('input').val(formatted).change();
497
505
  }
498
- } else {
506
+ }
507
+ else {
499
508
  this.element.val(formatted).change();
500
509
  }
501
510
  },
502
511
 
503
- getFormattedDate: function(format) {
512
+ getFormattedDate: function(format){
504
513
  if (format === undefined)
505
514
  format = this.o.format;
506
515
 
@@ -529,7 +538,8 @@
529
538
  },
530
539
 
531
540
  place: function(){
532
- if(this.isInline) return;
541
+ if (this.isInline)
542
+ return;
533
543
  var calendarWidth = this.picker.outerWidth(),
534
544
  calendarHeight = this.picker.outerHeight(),
535
545
  visualPadding = 10,
@@ -537,9 +547,9 @@
537
547
  windowHeight = $window.height(),
538
548
  scrollTop = $window.scrollTop();
539
549
 
540
- var zIndex = parseInt(this.element.parents().filter(function() {
541
- return $(this).css('z-index') != 'auto';
542
- }).first().css('z-index'))+10;
550
+ var zIndex = parseInt(this.element.parents().filter(function(){
551
+ return $(this).css('z-index') !== 'auto';
552
+ }).first().css('z-index'))+10;
543
553
  var offset = this.component ? this.component.parent().offset() : this.element.offset();
544
554
  var height = this.component ? this.component.outerHeight(true) : this.element.outerHeight(false);
545
555
  var width = this.component ? this.component.outerWidth(true) : this.element.outerWidth(false);
@@ -551,7 +561,7 @@
551
561
  'datepicker-orient-right datepicker-orient-left'
552
562
  );
553
563
 
554
- if (this.o.orientation.x !== 'auto') {
564
+ if (this.o.orientation.x !== 'auto'){
555
565
  this.picker.addClass('datepicker-orient-' + this.o.orientation.x);
556
566
  if (this.o.orientation.x === 'right')
557
567
  left -= calendarWidth - width;
@@ -571,7 +581,7 @@
571
581
  // decision based on which shows more of the calendar
572
582
  var yorient = this.o.orientation.y,
573
583
  top_overflow, bottom_overflow;
574
- if (yorient === 'auto') {
584
+ if (yorient === 'auto'){
575
585
  top_overflow = -scrollTop + offset.top - calendarHeight;
576
586
  bottom_overflow = scrollTop + windowHeight - (offset.top + height + calendarHeight);
577
587
  if (Math.max(top_overflow, bottom_overflow) === bottom_overflow)
@@ -594,19 +604,21 @@
594
604
 
595
605
  _allow_update: true,
596
606
  update: function(){
597
- if (!this._allow_update) return;
607
+ if (!this._allow_update)
608
+ return;
598
609
 
599
610
  var oldDates = this.dates.copy(),
600
611
  dates = [],
601
612
  fromArgs = false;
602
- if(arguments.length) {
613
+ if (arguments.length){
603
614
  $.each(arguments, $.proxy(function(i, date){
604
615
  if (date instanceof Date)
605
616
  date = this._local_to_utc(date);
606
617
  dates.push(date);
607
618
  }, this));
608
619
  fromArgs = true;
609
- } else {
620
+ }
621
+ else {
610
622
  dates = this.isInput
611
623
  ? this.element.val()
612
624
  : this.element.data('date') || this.element.find('input').val();
@@ -636,10 +648,11 @@
636
648
  else if (this.viewDate > this.o.endDate)
637
649
  this.viewDate = new Date(this.o.endDate);
638
650
 
639
- if (fromArgs) {
651
+ if (fromArgs){
640
652
  // setting date by clicking
641
653
  this.setValue();
642
- } else if (dates.length) {
654
+ }
655
+ else if (dates.length){
643
656
  // setting date by typing
644
657
  if (String(oldDates) !== String(this.dates))
645
658
  this._trigger('changeDate');
@@ -652,13 +665,13 @@
652
665
 
653
666
  fillDow: function(){
654
667
  var dowCnt = this.o.weekStart,
655
- html = '<tr>';
656
- if(this.o.calendarWeeks){
668
+ html = '<tr>';
669
+ if (this.o.calendarWeeks){
657
670
  var cell = '<th class="cw">&nbsp;</th>';
658
671
  html += cell;
659
672
  this.picker.find('.datepicker-days thead tr:first-child').prepend(cell);
660
673
  }
661
- while (dowCnt < this.o.weekStart + 7) {
674
+ while (dowCnt < this.o.weekStart + 7){
662
675
  html += '<th class="dow">'+dates[this.o.language].daysMin[(dowCnt++)%7]+'</th>';
663
676
  }
664
677
  html += '</tr>';
@@ -668,7 +681,7 @@
668
681
  fillMonths: function(){
669
682
  var html = '',
670
683
  i = 0;
671
- while (i < 12) {
684
+ while (i < 12){
672
685
  html += '<span class="month">'+dates[this.o.language].monthsShort[i++]+'</span>';
673
686
  }
674
687
  this.picker.find('.datepicker-months td').html(html);
@@ -678,7 +691,9 @@
678
691
  if (!range || !range.length)
679
692
  delete this.range;
680
693
  else
681
- this.range = $.map(range, function(d){ return d.valueOf(); });
694
+ this.range = $.map(range, function(d){
695
+ return d.valueOf();
696
+ });
682
697
  this.fill();
683
698
  },
684
699
 
@@ -687,38 +702,39 @@
687
702
  year = this.viewDate.getUTCFullYear(),
688
703
  month = this.viewDate.getUTCMonth(),
689
704
  today = new Date();
690
- if (date.getUTCFullYear() < year || (date.getUTCFullYear() == year && date.getUTCMonth() < month)) {
705
+ if (date.getUTCFullYear() < year || (date.getUTCFullYear() === year && date.getUTCMonth() < month)){
691
706
  cls.push('old');
692
- } else if (date.getUTCFullYear() > year || (date.getUTCFullYear() == year && date.getUTCMonth() > month)) {
707
+ }
708
+ else if (date.getUTCFullYear() > year || (date.getUTCFullYear() === year && date.getUTCMonth() > month)){
693
709
  cls.push('new');
694
710
  }
695
711
  if (this.focusDate && date.valueOf() === this.focusDate.valueOf())
696
712
  cls.push('focused');
697
713
  // Compare internal UTC date with local today, not UTC today
698
714
  if (this.o.todayHighlight &&
699
- date.getUTCFullYear() == today.getFullYear() &&
700
- date.getUTCMonth() == today.getMonth() &&
701
- date.getUTCDate() == today.getDate()) {
715
+ date.getUTCFullYear() === today.getFullYear() &&
716
+ date.getUTCMonth() === today.getMonth() &&
717
+ date.getUTCDate() === today.getDate()){
702
718
  cls.push('today');
703
719
  }
704
720
  if (this.dates.contains(date) !== -1)
705
721
  cls.push('active');
706
722
  if (date.valueOf() < this.o.startDate || date.valueOf() > this.o.endDate ||
707
- $.inArray(date.getUTCDay(), this.o.daysOfWeekDisabled) !== -1) {
723
+ $.inArray(date.getUTCDay(), this.o.daysOfWeekDisabled) !== -1){
708
724
  cls.push('disabled');
709
725
  }
710
726
  if (this.range){
711
727
  if (date > this.range[0] && date < this.range[this.range.length-1]){
712
728
  cls.push('range');
713
729
  }
714
- if ($.inArray(date.valueOf(), this.range) != -1){
730
+ if ($.inArray(date.valueOf(), this.range) !== -1){
715
731
  cls.push('selected');
716
732
  }
717
733
  }
718
734
  return cls;
719
735
  },
720
736
 
721
- fill: function() {
737
+ fill: function(){
722
738
  var d = new Date(this.viewDate),
723
739
  year = d.getUTCFullYear(),
724
740
  month = d.getUTCMonth(),
@@ -726,14 +742,16 @@
726
742
  startMonth = this.o.startDate !== -Infinity ? this.o.startDate.getUTCMonth() : -Infinity,
727
743
  endYear = this.o.endDate !== Infinity ? this.o.endDate.getUTCFullYear() : Infinity,
728
744
  endMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity,
729
- tooltip, currentYear;
745
+ todaytxt = dates[this.o.language].today || dates['en'].today || '',
746
+ cleartxt = dates[this.o.language].clear || dates['en'].clear || '',
747
+ tooltip;
730
748
  this.picker.find('.datepicker-days thead th.datepicker-switch')
731
749
  .text(dates[this.o.language].months[month]+' '+year);
732
750
  this.picker.find('tfoot th.today')
733
- .text(dates[this.o.language].today)
751
+ .text(todaytxt)
734
752
  .toggle(this.o.todayBtn !== false);
735
753
  this.picker.find('tfoot th.clear')
736
- .text(dates[this.o.language].clear)
754
+ .text(cleartxt)
737
755
  .toggle(this.o.clearBtn !== false);
738
756
  this.updateNavArrows();
739
757
  this.fillMonths();
@@ -746,19 +764,19 @@
746
764
  nextMonth = nextMonth.valueOf();
747
765
  var html = [];
748
766
  var clsName;
749
- while(prevMonth.valueOf() < nextMonth) {
750
- if (prevMonth.getUTCDay() == this.o.weekStart) {
767
+ while (prevMonth.valueOf() < nextMonth){
768
+ if (prevMonth.getUTCDay() === this.o.weekStart){
751
769
  html.push('<tr>');
752
- if(this.o.calendarWeeks){
770
+ if (this.o.calendarWeeks){
753
771
  // ISO 8601: First week contains first thursday.
754
772
  // ISO also states week starts on Monday, but we can be more abstract here.
755
773
  var
756
774
  // Start of current week: based on weekstart/current date
757
775
  ws = new Date(+prevMonth + (this.o.weekStart - prevMonth.getUTCDay() - 7) % 7 * 864e5),
758
776
  // Thursday of this week
759
- th = new Date(+ws + (7 + 4 - ws.getUTCDay()) % 7 * 864e5),
777
+ th = new Date(Number(ws) + (7 + 4 - ws.getUTCDay()) % 7 * 864e5),
760
778
  // First Thursday of year, year from thursday
761
- yth = new Date(+(yth = UTCDate(th.getUTCFullYear(), 0, 1)) + (7 + 4 - yth.getUTCDay())%7*864e5),
779
+ yth = new Date(Number(yth = UTCDate(th.getUTCFullYear(), 0, 1)) + (7 + 4 - yth.getUTCDay())%7*864e5),
762
780
  // Calendar week: ms between thursdays, div ms per day, div 7 days
763
781
  calWeek = (th - yth) / 864e5 / 7 + 1;
764
782
  html.push('<td class="cw">'+ calWeek +'</td>');
@@ -786,7 +804,7 @@
786
804
 
787
805
  clsName = $.unique(clsName);
788
806
  html.push('<td class="'+clsName.join(' ')+'"' + (tooltip ? ' title="'+tooltip+'"' : '') + '>'+prevMonth.getUTCDate() + '</td>');
789
- if (prevMonth.getUTCDay() == this.o.weekEnd) {
807
+ if (prevMonth.getUTCDay() === this.o.weekEnd){
790
808
  html.push('</tr>');
791
809
  }
792
810
  prevMonth.setUTCDate(prevMonth.getUTCDate()+1);
@@ -800,17 +818,17 @@
800
818
  .find('span').removeClass('active');
801
819
 
802
820
  $.each(this.dates, function(i, d){
803
- if (d.getUTCFullYear() == year)
821
+ if (d.getUTCFullYear() === year)
804
822
  months.eq(d.getUTCMonth()).addClass('active');
805
823
  });
806
824
 
807
- if (year < startYear || year > endYear) {
825
+ if (year < startYear || year > endYear){
808
826
  months.addClass('disabled');
809
827
  }
810
- if (year == startYear) {
828
+ if (year === startYear){
811
829
  months.slice(0, startMonth).addClass('disabled');
812
830
  }
813
- if (year == endYear) {
831
+ if (year === endYear){
814
832
  months.slice(endMonth+1).addClass('disabled');
815
833
  }
816
834
 
@@ -822,9 +840,11 @@
822
840
  .end()
823
841
  .find('td');
824
842
  year -= 1;
825
- var years = $.map(this.dates, function(d){ return d.getUTCFullYear(); }),
843
+ var years = $.map(this.dates, function(d){
844
+ return d.getUTCFullYear();
845
+ }),
826
846
  classes;
827
- for (var i = -1; i < 11; i++) {
847
+ for (var i = -1; i < 11; i++){
828
848
  classes = ['year'];
829
849
  if (i === -1)
830
850
  classes.push('old');
@@ -840,56 +860,61 @@
840
860
  yearCont.html(html);
841
861
  },
842
862
 
843
- updateNavArrows: function() {
844
- if (!this._allow_update) return;
863
+ updateNavArrows: function(){
864
+ if (!this._allow_update)
865
+ return;
845
866
 
846
867
  var d = new Date(this.viewDate),
847
868
  year = d.getUTCFullYear(),
848
869
  month = d.getUTCMonth();
849
- switch (this.viewMode) {
870
+ switch (this.viewMode){
850
871
  case 0:
851
- if (this.o.startDate !== -Infinity && year <= this.o.startDate.getUTCFullYear() && month <= this.o.startDate.getUTCMonth()) {
872
+ if (this.o.startDate !== -Infinity && year <= this.o.startDate.getUTCFullYear() && month <= this.o.startDate.getUTCMonth()){
852
873
  this.picker.find('.prev').css({visibility: 'hidden'});
853
- } else {
874
+ }
875
+ else {
854
876
  this.picker.find('.prev').css({visibility: 'visible'});
855
877
  }
856
- if (this.o.endDate !== Infinity && year >= this.o.endDate.getUTCFullYear() && month >= this.o.endDate.getUTCMonth()) {
878
+ if (this.o.endDate !== Infinity && year >= this.o.endDate.getUTCFullYear() && month >= this.o.endDate.getUTCMonth()){
857
879
  this.picker.find('.next').css({visibility: 'hidden'});
858
- } else {
880
+ }
881
+ else {
859
882
  this.picker.find('.next').css({visibility: 'visible'});
860
883
  }
861
884
  break;
862
885
  case 1:
863
886
  case 2:
864
- if (this.o.startDate !== -Infinity && year <= this.o.startDate.getUTCFullYear()) {
887
+ if (this.o.startDate !== -Infinity && year <= this.o.startDate.getUTCFullYear()){
865
888
  this.picker.find('.prev').css({visibility: 'hidden'});
866
- } else {
889
+ }
890
+ else {
867
891
  this.picker.find('.prev').css({visibility: 'visible'});
868
892
  }
869
- if (this.o.endDate !== Infinity && year >= this.o.endDate.getUTCFullYear()) {
893
+ if (this.o.endDate !== Infinity && year >= this.o.endDate.getUTCFullYear()){
870
894
  this.picker.find('.next').css({visibility: 'hidden'});
871
- } else {
895
+ }
896
+ else {
872
897
  this.picker.find('.next').css({visibility: 'visible'});
873
898
  }
874
899
  break;
875
900
  }
876
901
  },
877
902
 
878
- click: function(e) {
903
+ click: function(e){
879
904
  e.preventDefault();
880
905
  var target = $(e.target).closest('span, td, th'),
881
906
  year, month, day;
882
- if (target.length == 1) {
883
- switch(target[0].nodeName.toLowerCase()) {
907
+ if (target.length === 1){
908
+ switch (target[0].nodeName.toLowerCase()){
884
909
  case 'th':
885
- switch(target[0].className) {
910
+ switch (target[0].className){
886
911
  case 'datepicker-switch':
887
912
  this.showMode(1);
888
913
  break;
889
914
  case 'prev':
890
915
  case 'next':
891
- var dir = DPGlobal.modes[this.viewMode].navStep * (target[0].className == 'prev' ? -1 : 1);
892
- switch(this.viewMode){
916
+ var dir = DPGlobal.modes[this.viewMode].navStep * (target[0].className === 'prev' ? -1 : 1);
917
+ switch (this.viewMode){
893
918
  case 0:
894
919
  this.viewDate = this.moveMonth(this.viewDate, dir);
895
920
  this._trigger('changeMonth', this.viewDate);
@@ -908,7 +933,7 @@
908
933
  date = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);
909
934
 
910
935
  this.showMode(-2);
911
- var which = this.o.todayBtn == 'linked' ? null : 'view';
936
+ var which = this.o.todayBtn === 'linked' ? null : 'view';
912
937
  this._setDate(date, which);
913
938
  break;
914
939
  case 'clear':
@@ -927,24 +952,25 @@
927
952
  }
928
953
  break;
929
954
  case 'span':
930
- if (!target.is('.disabled')) {
955
+ if (!target.is('.disabled')){
931
956
  this.viewDate.setUTCDate(1);
932
- if (target.is('.month')) {
957
+ if (target.is('.month')){
933
958
  day = 1;
934
959
  month = target.parent().find('span').index(target);
935
960
  year = this.viewDate.getUTCFullYear();
936
961
  this.viewDate.setUTCMonth(month);
937
962
  this._trigger('changeMonth', this.viewDate);
938
- if (this.o.minViewMode === 1) {
963
+ if (this.o.minViewMode === 1){
939
964
  this._setDate(UTCDate(year, month, day));
940
965
  }
941
- } else {
966
+ }
967
+ else {
942
968
  day = 1;
943
969
  month = 0;
944
970
  year = parseInt(target.text(), 10)||0;
945
971
  this.viewDate.setUTCFullYear(year);
946
972
  this._trigger('changeYear', this.viewDate);
947
- if (this.o.minViewMode === 2) {
973
+ if (this.o.minViewMode === 2){
948
974
  this._setDate(UTCDate(year, month, day));
949
975
  }
950
976
  }
@@ -957,18 +983,21 @@
957
983
  day = parseInt(target.text(), 10)||1;
958
984
  year = this.viewDate.getUTCFullYear();
959
985
  month = this.viewDate.getUTCMonth();
960
- if (target.is('.old')) {
961
- if (month === 0) {
986
+ if (target.is('.old')){
987
+ if (month === 0){
962
988
  month = 11;
963
989
  year -= 1;
964
- } else {
990
+ }
991
+ else {
965
992
  month -= 1;
966
993
  }
967
- } else if (target.is('.new')) {
968
- if (month == 11) {
994
+ }
995
+ else if (target.is('.new')){
996
+ if (month === 11){
969
997
  month = 0;
970
998
  year += 1;
971
- } else {
999
+ }
1000
+ else {
972
1001
  month += 1;
973
1002
  }
974
1003
  }
@@ -983,7 +1012,7 @@
983
1012
  delete this._focused_from;
984
1013
  },
985
1014
 
986
- _toggle_multidate: function( date ) {
1015
+ _toggle_multidate: function(date){
987
1016
  var ix = this.dates.contains(date);
988
1017
  if (!date){
989
1018
  this.dates.clear();
@@ -991,68 +1020,78 @@
991
1020
  else if (ix !== -1){
992
1021
  this.dates.remove(ix);
993
1022
  }
994
- else{
1023
+ else {
995
1024
  this.dates.push(date);
996
1025
  }
997
- if (typeof this.o.multidate == 'number')
1026
+ if (typeof this.o.multidate === 'number')
998
1027
  while (this.dates.length > this.o.multidate)
999
1028
  this.dates.remove(0);
1000
1029
  },
1001
1030
 
1002
1031
  _setDate: function(date, which){
1003
- if (!which || which == 'date')
1032
+ if (!which || which === 'date')
1004
1033
  this._toggle_multidate(date && new Date(date));
1005
- if (!which || which == 'view')
1034
+ if (!which || which === 'view')
1006
1035
  this.viewDate = date && new Date(date);
1007
1036
 
1008
1037
  this.fill();
1009
1038
  this.setValue();
1010
1039
  this._trigger('changeDate');
1011
1040
  var element;
1012
- if (this.isInput) {
1041
+ if (this.isInput){
1013
1042
  element = this.element;
1014
- } else if (this.component){
1043
+ }
1044
+ else if (this.component){
1015
1045
  element = this.element.find('input');
1016
1046
  }
1017
- if (element) {
1047
+ if (element){
1018
1048
  element.change();
1019
1049
  }
1020
- if (this.o.autoclose && (!which || which == 'date')) {
1050
+ if (this.o.autoclose && (!which || which === 'date')){
1021
1051
  this.hide();
1022
1052
  }
1023
1053
  },
1024
1054
 
1025
1055
  moveMonth: function(date, dir){
1026
- if (!date) return undefined;
1027
- if (!dir) return date;
1056
+ if (!date)
1057
+ return undefined;
1058
+ if (!dir)
1059
+ return date;
1028
1060
  var new_date = new Date(date.valueOf()),
1029
1061
  day = new_date.getUTCDate(),
1030
1062
  month = new_date.getUTCMonth(),
1031
1063
  mag = Math.abs(dir),
1032
1064
  new_month, test;
1033
1065
  dir = dir > 0 ? 1 : -1;
1034
- if (mag == 1){
1035
- test = dir == -1
1066
+ if (mag === 1){
1067
+ test = dir === -1
1036
1068
  // If going back one month, make sure month is not current month
1037
1069
  // (eg, Mar 31 -> Feb 31 == Feb 28, not Mar 02)
1038
- ? function(){ return new_date.getUTCMonth() == month; }
1070
+ ? function(){
1071
+ return new_date.getUTCMonth() === month;
1072
+ }
1039
1073
  // If going forward one month, make sure month is as expected
1040
1074
  // (eg, Jan 31 -> Feb 31 == Feb 28, not Mar 02)
1041
- : function(){ return new_date.getUTCMonth() != new_month; };
1075
+ : function(){
1076
+ return new_date.getUTCMonth() !== new_month;
1077
+ };
1042
1078
  new_month = month + dir;
1043
1079
  new_date.setUTCMonth(new_month);
1044
1080
  // Dec -> Jan (12) or Jan -> Dec (-1) -- limit expected date to 0-11
1045
1081
  if (new_month < 0 || new_month > 11)
1046
1082
  new_month = (new_month + 12) % 12;
1047
- } else {
1083
+ }
1084
+ else {
1048
1085
  // For magnitudes >1, move one month at a time...
1049
- for (var i=0; i<mag; i++)
1086
+ for (var i=0; i < mag; i++)
1050
1087
  // ...which might decrease the day (eg, Jan 31 to Feb 28, etc)...
1051
1088
  new_date = this.moveMonth(new_date, dir);
1052
1089
  // ...then reset the day, keeping it in the new month
1053
1090
  new_month = new_date.getUTCMonth();
1054
1091
  new_date.setUTCDate(day);
1055
- test = function(){ return new_month != new_date.getUTCMonth(); };
1092
+ test = function(){
1093
+ return new_month !== new_date.getUTCMonth();
1094
+ };
1056
1095
  }
1057
1096
  // Common date-resetting loop -- if date is beyond end of month, make it
1058
1097
  // end of month
@@ -1073,14 +1112,14 @@
1073
1112
 
1074
1113
  keydown: function(e){
1075
1114
  if (this.picker.is(':not(:visible)')){
1076
- if (e.keyCode == 27) // allow escape to hide and re-show picker
1115
+ if (e.keyCode === 27) // allow escape to hide and re-show picker
1077
1116
  this.show();
1078
1117
  return;
1079
1118
  }
1080
1119
  var dateChanged = false,
1081
1120
  dir, newDate, newViewDate,
1082
1121
  focusDate = this.focusDate || this.viewDate;
1083
- switch(e.keyCode){
1122
+ switch (e.keyCode){
1084
1123
  case 27: // escape
1085
1124
  if (this.focusDate){
1086
1125
  this.focusDate = null;
@@ -1093,17 +1132,20 @@
1093
1132
  break;
1094
1133
  case 37: // left
1095
1134
  case 39: // right
1096
- if (!this.o.keyboardNavigation) break;
1097
- dir = e.keyCode == 37 ? -1 : 1;
1135
+ if (!this.o.keyboardNavigation)
1136
+ break;
1137
+ dir = e.keyCode === 37 ? -1 : 1;
1098
1138
  if (e.ctrlKey){
1099
1139
  newDate = this.moveYear(this.dates.get(-1) || UTCToday(), dir);
1100
1140
  newViewDate = this.moveYear(focusDate, dir);
1101
1141
  this._trigger('changeYear', this.viewDate);
1102
- } else if (e.shiftKey){
1142
+ }
1143
+ else if (e.shiftKey){
1103
1144
  newDate = this.moveMonth(this.dates.get(-1) || UTCToday(), dir);
1104
1145
  newViewDate = this.moveMonth(focusDate, dir);
1105
1146
  this._trigger('changeMonth', this.viewDate);
1106
- } else {
1147
+ }
1148
+ else {
1107
1149
  newDate = new Date(this.dates.get(-1) || UTCToday());
1108
1150
  newDate.setUTCDate(newDate.getUTCDate() + dir);
1109
1151
  newViewDate = new Date(focusDate);
@@ -1118,17 +1160,20 @@
1118
1160
  break;
1119
1161
  case 38: // up
1120
1162
  case 40: // down
1121
- if (!this.o.keyboardNavigation) break;
1122
- dir = e.keyCode == 38 ? -1 : 1;
1163
+ if (!this.o.keyboardNavigation)
1164
+ break;
1165
+ dir = e.keyCode === 38 ? -1 : 1;
1123
1166
  if (e.ctrlKey){
1124
1167
  newDate = this.moveYear(this.dates.get(-1) || UTCToday(), dir);
1125
1168
  newViewDate = this.moveYear(focusDate, dir);
1126
1169
  this._trigger('changeYear', this.viewDate);
1127
- } else if (e.shiftKey){
1170
+ }
1171
+ else if (e.shiftKey){
1128
1172
  newDate = this.moveMonth(this.dates.get(-1) || UTCToday(), dir);
1129
1173
  newViewDate = this.moveMonth(focusDate, dir);
1130
1174
  this._trigger('changeMonth', this.viewDate);
1131
- } else {
1175
+ }
1176
+ else {
1132
1177
  newDate = new Date(this.dates.get(-1) || UTCToday());
1133
1178
  newDate.setUTCDate(newDate.getUTCDate() + dir * 7);
1134
1179
  newViewDate = new Date(focusDate);
@@ -1172,55 +1217,58 @@
1172
1217
  else
1173
1218
  this._trigger('clearDate');
1174
1219
  var element;
1175
- if (this.isInput) {
1220
+ if (this.isInput){
1176
1221
  element = this.element;
1177
- } else if (this.component){
1222
+ }
1223
+ else if (this.component){
1178
1224
  element = this.element.find('input');
1179
1225
  }
1180
- if (element) {
1226
+ if (element){
1181
1227
  element.change();
1182
1228
  }
1183
1229
  }
1184
1230
  },
1185
1231
 
1186
- showMode: function(dir) {
1187
- if (dir) {
1232
+ showMode: function(dir){
1233
+ if (dir){
1188
1234
  this.viewMode = Math.max(this.o.minViewMode, Math.min(2, this.viewMode + dir));
1189
1235
  }
1190
- /*
1191
- vitalets: fixing bug of very special conditions:
1192
- jquery 1.7.1 + webkit + show inline datepicker in bootstrap popover.
1193
- Method show() does not set display css correctly and datepicker is not shown.
1194
- Changed to .css('display', 'block') solve the problem.
1195
- See https://github.com/vitalets/x-editable/issues/37
1196
-
1197
- In jquery 1.7.2+ everything works fine.
1198
- */
1199
- //this.picker.find('>div').hide().filter('.datepicker-'+DPGlobal.modes[this.viewMode].clsName).show();
1200
- this.picker.find('>div').hide().filter('.datepicker-'+DPGlobal.modes[this.viewMode].clsName).css('display', 'block');
1236
+ this.picker
1237
+ .find('>div')
1238
+ .hide()
1239
+ .filter('.datepicker-'+DPGlobal.modes[this.viewMode].clsName)
1240
+ .css('display', 'block');
1201
1241
  this.updateNavArrows();
1202
1242
  }
1203
1243
  };
1204
1244
 
1205
1245
  var DateRangePicker = function(element, options){
1206
1246
  this.element = $(element);
1207
- this.inputs = $.map(options.inputs, function(i){ return i.jquery ? i[0] : i; });
1247
+ this.inputs = $.map(options.inputs, function(i){
1248
+ return i.jquery ? i[0] : i;
1249
+ });
1208
1250
  delete options.inputs;
1209
1251
 
1210
1252
  $(this.inputs)
1211
1253
  .datepicker(options)
1212
1254
  .bind('changeDate', $.proxy(this.dateUpdated, this));
1213
1255
 
1214
- this.pickers = $.map(this.inputs, function(i){ return $(i).data('datepicker'); });
1256
+ this.pickers = $.map(this.inputs, function(i){
1257
+ return $(i).data('datepicker');
1258
+ });
1215
1259
  this.updateDates();
1216
1260
  };
1217
1261
  DateRangePicker.prototype = {
1218
1262
  updateDates: function(){
1219
- this.dates = $.map(this.pickers, function(i){ return i.getUTCDate(); });
1263
+ this.dates = $.map(this.pickers, function(i){
1264
+ return i.getUTCDate();
1265
+ });
1220
1266
  this.updateRanges();
1221
1267
  },
1222
1268
  updateRanges: function(){
1223
- var range = $.map(this.dates, function(d){ return d.valueOf(); });
1269
+ var range = $.map(this.dates, function(d){
1270
+ return d.valueOf();
1271
+ });
1224
1272
  $.each(this.pickers, function(i, p){
1225
1273
  p.setRange(range);
1226
1274
  });
@@ -1237,7 +1285,8 @@
1237
1285
  new_date = dp.getUTCDate(),
1238
1286
  i = $.inArray(e.target, this.inputs),
1239
1287
  l = this.inputs.length;
1240
- if (i == -1) return;
1288
+ if (i === -1)
1289
+ return;
1241
1290
 
1242
1291
  $.each(this.pickers, function(i, p){
1243
1292
  if (!p.getUTCDate())
@@ -1246,13 +1295,13 @@
1246
1295
 
1247
1296
  if (new_date < this.dates[i]){
1248
1297
  // Date being moved earlier/left
1249
- while (i>=0 && new_date < this.dates[i]){
1298
+ while (i >= 0 && new_date < this.dates[i]){
1250
1299
  this.pickers[i--].setUTCDate(new_date);
1251
1300
  }
1252
1301
  }
1253
1302
  else if (new_date > this.dates[i]){
1254
1303
  // Date being moved later/right
1255
- while (i<l && new_date > this.dates[i]){
1304
+ while (i < l && new_date > this.dates[i]){
1256
1305
  this.pickers[i++].setUTCDate(new_date);
1257
1306
  }
1258
1307
  }
@@ -1270,11 +1319,14 @@
1270
1319
  // Derive options from element data-attrs
1271
1320
  var data = $(el).data(),
1272
1321
  out = {}, inkey,
1273
- replace = new RegExp('^' + prefix.toLowerCase() + '([A-Z])'),
1274
- prefix = new RegExp('^' + prefix.toLowerCase());
1322
+ replace = new RegExp('^' + prefix.toLowerCase() + '([A-Z])');
1323
+ prefix = new RegExp('^' + prefix.toLowerCase());
1324
+ function re_lower(_,a){
1325
+ return a.toLowerCase();
1326
+ }
1275
1327
  for (var key in data)
1276
1328
  if (prefix.test(key)){
1277
- inkey = key.replace(replace, function(_,a){ return a.toLowerCase(); });
1329
+ inkey = key.replace(replace, re_lower);
1278
1330
  out[inkey] = data[key];
1279
1331
  }
1280
1332
  return out;
@@ -1285,7 +1337,7 @@
1285
1337
  var out = {};
1286
1338
  // Check if "de-DE" style date is available, if not language should
1287
1339
  // fallback to 2 letter code eg "de"
1288
- if (!dates[lang]) {
1340
+ if (!dates[lang]){
1289
1341
  lang = lang.split('-')[0];
1290
1342
  if (!dates[lang])
1291
1343
  return;
@@ -1299,15 +1351,15 @@
1299
1351
  }
1300
1352
 
1301
1353
  var old = $.fn.datepicker;
1302
- $.fn.datepicker = function ( option ) {
1354
+ $.fn.datepicker = function(option){
1303
1355
  var args = Array.apply(null, arguments);
1304
1356
  args.shift();
1305
1357
  var internal_return;
1306
- this.each(function () {
1358
+ this.each(function(){
1307
1359
  var $this = $(this),
1308
1360
  data = $this.data('datepicker'),
1309
- options = typeof option == 'object' && option;
1310
- if (!data) {
1361
+ options = typeof option === 'object' && option;
1362
+ if (!data){
1311
1363
  var elopts = opts_from_el(this, 'date'),
1312
1364
  // Preliminary otions
1313
1365
  xopts = $.extend({}, defaults, elopts, options),
@@ -1320,11 +1372,11 @@
1320
1372
  };
1321
1373
  $this.data('datepicker', (data = new DateRangePicker(this, $.extend(opts, ropts))));
1322
1374
  }
1323
- else{
1375
+ else {
1324
1376
  $this.data('datepicker', (data = new Datepicker(this, opts)));
1325
1377
  }
1326
1378
  }
1327
- if (typeof option == 'string' && typeof data[option] == 'function') {
1379
+ if (typeof option === 'string' && typeof data[option] === 'function'){
1328
1380
  internal_return = data[option].apply(data, args);
1329
1381
  if (internal_return !== undefined)
1330
1382
  return false;
@@ -1393,10 +1445,10 @@
1393
1445
  navFnc: 'FullYear',
1394
1446
  navStep: 10
1395
1447
  }],
1396
- isLeapYear: function (year) {
1448
+ isLeapYear: function(year){
1397
1449
  return (((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0));
1398
1450
  },
1399
- getDaysInMonth: function (year, month) {
1451
+ getDaysInMonth: function(year, month){
1400
1452
  return [31, (DPGlobal.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month];
1401
1453
  },
1402
1454
  validParts: /dd?|DD?|mm?|MM?|yy(?:yy)?/g,
@@ -1411,21 +1463,22 @@
1411
1463
  }
1412
1464
  return {separators: separators, parts: parts};
1413
1465
  },
1414
- parseDate: function(date, format, language) {
1466
+ parseDate: function(date, format, language){
1415
1467
  if (!date)
1416
1468
  return undefined;
1417
- if (date instanceof Date) return date;
1469
+ if (date instanceof Date)
1470
+ return date;
1418
1471
  if (typeof format === 'string')
1419
1472
  format = DPGlobal.parseFormat(format);
1420
- if (/^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/.test(date)) {
1421
- var part_re = /([\-+]\d+)([dmwy])/,
1422
- parts = date.match(/([\-+]\d+)([dmwy])/g),
1423
- part, dir;
1473
+ var part_re = /([\-+]\d+)([dmwy])/,
1474
+ parts = date.match(/([\-+]\d+)([dmwy])/g),
1475
+ part, dir, i;
1476
+ if (/^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/.test(date)){
1424
1477
  date = new Date();
1425
- for (var i=0; i<parts.length; i++) {
1478
+ for (i=0; i < parts.length; i++){
1426
1479
  part = part_re.exec(parts[i]);
1427
1480
  dir = parseInt(part[1]);
1428
- switch(part[2]){
1481
+ switch (part[2]){
1429
1482
  case 'd':
1430
1483
  date.setUTCDate(date.getUTCDate() + dir);
1431
1484
  break;
@@ -1442,65 +1495,70 @@
1442
1495
  }
1443
1496
  return UTCDate(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), 0, 0, 0);
1444
1497
  }
1445
- var parts = date && date.match(this.nonpunctuation) || [],
1446
- date = new Date(),
1447
- parsed = {},
1498
+ parts = date && date.match(this.nonpunctuation) || [];
1499
+ date = new Date();
1500
+ var parsed = {},
1448
1501
  setters_order = ['yyyy', 'yy', 'M', 'MM', 'm', 'mm', 'd', 'dd'],
1449
1502
  setters_map = {
1450
- yyyy: function(d,v){ return d.setUTCFullYear(v); },
1451
- yy: function(d,v){ return d.setUTCFullYear(2000+v); },
1503
+ yyyy: function(d,v){
1504
+ return d.setUTCFullYear(v);
1505
+ },
1506
+ yy: function(d,v){
1507
+ return d.setUTCFullYear(2000+v);
1508
+ },
1452
1509
  m: function(d,v){
1453
1510
  if (isNaN(d))
1454
1511
  return d;
1455
1512
  v -= 1;
1456
- while (v<0) v += 12;
1513
+ while (v < 0) v += 12;
1457
1514
  v %= 12;
1458
1515
  d.setUTCMonth(v);
1459
- while (d.getUTCMonth() != v)
1516
+ while (d.getUTCMonth() !== v)
1460
1517
  d.setUTCDate(d.getUTCDate()-1);
1461
1518
  return d;
1462
1519
  },
1463
- d: function(d,v){ return d.setUTCDate(v); }
1520
+ d: function(d,v){
1521
+ return d.setUTCDate(v);
1522
+ }
1464
1523
  },
1465
- val, filtered, part;
1524
+ val, filtered;
1466
1525
  setters_map['M'] = setters_map['MM'] = setters_map['mm'] = setters_map['m'];
1467
1526
  setters_map['dd'] = setters_map['d'];
1468
1527
  date = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);
1469
1528
  var fparts = format.parts.slice();
1470
1529
  // Remove noop parts
1471
- if (parts.length != fparts.length) {
1530
+ if (parts.length !== fparts.length){
1472
1531
  fparts = $(fparts).filter(function(i,p){
1473
1532
  return $.inArray(p, setters_order) !== -1;
1474
1533
  }).toArray();
1475
1534
  }
1476
1535
  // Process remainder
1477
- if (parts.length == fparts.length) {
1478
- for (var i=0, cnt = fparts.length; i < cnt; i++) {
1536
+ function match_part(){
1537
+ var m = this.slice(0, parts[i].length),
1538
+ p = parts[i].slice(0, m.length);
1539
+ return m === p;
1540
+ }
1541
+ if (parts.length === fparts.length){
1542
+ var cnt;
1543
+ for (i=0, cnt = fparts.length; i < cnt; i++){
1479
1544
  val = parseInt(parts[i], 10);
1480
1545
  part = fparts[i];
1481
- if (isNaN(val)) {
1482
- switch(part) {
1546
+ if (isNaN(val)){
1547
+ switch (part){
1483
1548
  case 'MM':
1484
- filtered = $(dates[language].months).filter(function(){
1485
- var m = this.slice(0, parts[i].length),
1486
- p = parts[i].slice(0, m.length);
1487
- return m == p;
1488
- });
1549
+ filtered = $(dates[language].months).filter(match_part);
1489
1550
  val = $.inArray(filtered[0], dates[language].months) + 1;
1490
1551
  break;
1491
1552
  case 'M':
1492
- filtered = $(dates[language].monthsShort).filter(function(){
1493
- var m = this.slice(0, parts[i].length),
1494
- p = parts[i].slice(0, m.length);
1495
- return m == p;
1496
- });
1553
+ filtered = $(dates[language].monthsShort).filter(match_part);
1497
1554
  val = $.inArray(filtered[0], dates[language].monthsShort) + 1;
1498
1555
  break;
1499
1556
  }
1500
1557
  }
1501
1558
  parsed[part] = val;
1502
1559
  }
1503
- for (var i=0, _date, s; i<setters_order.length; i++){
1560
+ var _date, s;
1561
+ for (i=0; i < setters_order.length; i++){
1504
1562
  s = setters_order[i];
1505
1563
  if (s in parsed && !isNaN(parsed[s])){
1506
1564
  _date = new Date(date);
@@ -1529,9 +1587,9 @@
1529
1587
  };
1530
1588
  val.dd = (val.d < 10 ? '0' : '') + val.d;
1531
1589
  val.mm = (val.m < 10 ? '0' : '') + val.m;
1532
- var date = [],
1533
- seps = $.extend([], format.separators);
1534
- for (var i=0, cnt = format.parts.length; i <= cnt; i++) {
1590
+ date = [];
1591
+ var seps = $.extend([], format.separators);
1592
+ for (var i=0, cnt = format.parts.length; i <= cnt; i++){
1535
1593
  if (seps.length)
1536
1594
  date.push(seps.shift());
1537
1595
  date.push(val[format.parts[i]]);
@@ -1546,7 +1604,14 @@
1546
1604
  '</tr>'+
1547
1605
  '</thead>',
1548
1606
  contTemplate: '<tbody><tr><td colspan="7"></td></tr></tbody>',
1549
- footTemplate: '<tfoot><tr><th colspan="7" class="today"></th></tr><tr><th colspan="7" class="clear"></th></tr></tfoot>'
1607
+ footTemplate: '<tfoot>'+
1608
+ '<tr>'+
1609
+ '<th colspan="7" class="today"></th>'+
1610
+ '</tr>'+
1611
+ '<tr>'+
1612
+ '<th colspan="7" class="clear"></th>'+
1613
+ '</tr>'+
1614
+ '</tfoot>'
1550
1615
  };
1551
1616
  DPGlobal.template = '<div class="datepicker">'+
1552
1617
  '<div class="datepicker-days">'+
@@ -1592,7 +1657,8 @@
1592
1657
  '[data-provide="datepicker"]',
1593
1658
  function(e){
1594
1659
  var $this = $(this);
1595
- if ($this.data('datepicker')) return;
1660
+ if ($this.data('datepicker'))
1661
+ return;
1596
1662
  e.preventDefault();
1597
1663
  // component click requires us to explicitly show it
1598
1664
  $this.datepicker('show');
@@ -1602,4 +1668,4 @@
1602
1668
  $('[data-provide="datepicker-inline"]').datepicker();
1603
1669
  });
1604
1670
 
1605
- }( window.jQuery ));
1671
+ }(window.jQuery));
OSZAR »