jquery-ui-rails 4.0.2 → 4.0.3

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of jquery-ui-rails might be problematic. Click here for more details.

Files changed (70) hide show
  1. data/History.md +6 -2
  2. data/README.md +4 -0
  3. data/app/assets/images/jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  4. data/app/assets/images/jquery-ui/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  5. data/app/assets/images/jquery-ui/ui-bg_glass_65_ffffff_1x400.png +0 -0
  6. data/app/assets/images/jquery-ui/ui-bg_glass_75_dadada_1x400.png +0 -0
  7. data/app/assets/images/jquery-ui/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  8. data/app/assets/images/jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  9. data/app/assets/images/jquery-ui/ui-icons_222222_256x240.png +0 -0
  10. data/app/assets/images/jquery-ui/ui-icons_2e83ff_256x240.png +0 -0
  11. data/app/assets/images/jquery-ui/ui-icons_454545_256x240.png +0 -0
  12. data/app/assets/images/jquery-ui/ui-icons_888888_256x240.png +0 -0
  13. data/app/assets/images/jquery-ui/ui-icons_cd0a0a_256x240.png +0 -0
  14. data/app/assets/javascripts/jquery.ui.accordion.js +6 -5
  15. data/app/assets/javascripts/jquery.ui.autocomplete.js +26 -30
  16. data/app/assets/javascripts/jquery.ui.button.js +5 -5
  17. data/app/assets/javascripts/jquery.ui.core.js +19 -23
  18. data/app/assets/javascripts/jquery.ui.datepicker-de.js +3 -3
  19. data/app/assets/javascripts/jquery.ui.datepicker-sk.js +3 -3
  20. data/app/assets/javascripts/jquery.ui.datepicker-sr-SR.js +1 -1
  21. data/app/assets/javascripts/jquery.ui.datepicker-sr.js +1 -1
  22. data/app/assets/javascripts/jquery.ui.datepicker.js +27 -33
  23. data/app/assets/javascripts/jquery.ui.dialog.js +61 -20
  24. data/app/assets/javascripts/jquery.ui.draggable.js +95 -83
  25. data/app/assets/javascripts/jquery.ui.droppable.js +4 -3
  26. data/app/assets/javascripts/jquery.ui.effect-blind.js +1 -1
  27. data/app/assets/javascripts/jquery.ui.effect-bounce.js +1 -1
  28. data/app/assets/javascripts/jquery.ui.effect-clip.js +1 -1
  29. data/app/assets/javascripts/jquery.ui.effect-drop.js +1 -1
  30. data/app/assets/javascripts/jquery.ui.effect-explode.js +1 -1
  31. data/app/assets/javascripts/jquery.ui.effect-fade.js +1 -1
  32. data/app/assets/javascripts/jquery.ui.effect-fold.js +1 -1
  33. data/app/assets/javascripts/jquery.ui.effect-highlight.js +1 -1
  34. data/app/assets/javascripts/jquery.ui.effect-pulsate.js +1 -1
  35. data/app/assets/javascripts/jquery.ui.effect-scale.js +1 -1
  36. data/app/assets/javascripts/jquery.ui.effect-shake.js +1 -1
  37. data/app/assets/javascripts/jquery.ui.effect-slide.js +1 -1
  38. data/app/assets/javascripts/jquery.ui.effect-transfer.js +1 -1
  39. data/app/assets/javascripts/jquery.ui.effect.js +93 -72
  40. data/app/assets/javascripts/jquery.ui.menu.js +3 -3
  41. data/app/assets/javascripts/jquery.ui.mouse.js +2 -2
  42. data/app/assets/javascripts/jquery.ui.position.js +6 -6
  43. data/app/assets/javascripts/jquery.ui.progressbar.js +2 -2
  44. data/app/assets/javascripts/jquery.ui.resizable.js +2 -2
  45. data/app/assets/javascripts/jquery.ui.selectable.js +2 -2
  46. data/app/assets/javascripts/jquery.ui.slider.js +89 -66
  47. data/app/assets/javascripts/jquery.ui.sortable.js +65 -30
  48. data/app/assets/javascripts/jquery.ui.spinner.js +3 -2
  49. data/app/assets/javascripts/jquery.ui.tabs.js +2 -2
  50. data/app/assets/javascripts/jquery.ui.tooltip.js +2 -2
  51. data/app/assets/javascripts/jquery.ui.widget.js +1 -1
  52. data/app/assets/stylesheets/jquery.ui.accordion.css.erb +1 -1
  53. data/app/assets/stylesheets/jquery.ui.all.css.erb +1 -1
  54. data/app/assets/stylesheets/jquery.ui.autocomplete.css.erb +1 -1
  55. data/app/assets/stylesheets/jquery.ui.base.css.erb +1 -1
  56. data/app/assets/stylesheets/jquery.ui.button.css.erb +1 -1
  57. data/app/assets/stylesheets/jquery.ui.core.css.erb +2 -1
  58. data/app/assets/stylesheets/jquery.ui.datepicker.css.erb +1 -1
  59. data/app/assets/stylesheets/jquery.ui.dialog.css.erb +1 -1
  60. data/app/assets/stylesheets/jquery.ui.menu.css.erb +3 -1
  61. data/app/assets/stylesheets/jquery.ui.progressbar.css.erb +1 -1
  62. data/app/assets/stylesheets/jquery.ui.resizable.css.erb +1 -1
  63. data/app/assets/stylesheets/jquery.ui.selectable.css.erb +1 -1
  64. data/app/assets/stylesheets/jquery.ui.slider.css.erb +1 -1
  65. data/app/assets/stylesheets/jquery.ui.spinner.css.erb +1 -1
  66. data/app/assets/stylesheets/jquery.ui.tabs.css.erb +2 -2
  67. data/app/assets/stylesheets/jquery.ui.theme.css.erb +2 -2
  68. data/app/assets/stylesheets/jquery.ui.tooltip.css.erb +1 -1
  69. data/lib/jquery/ui/rails/version.rb +1 -1
  70. metadata +3 -3
data/History.md CHANGED
@@ -1,12 +1,16 @@
1
1
  # master
2
2
 
3
+ # 4.0.3
4
+
5
+ * Upgrade to jQuery UI 1.10.3
6
+
3
7
  # 4.0.2
4
8
 
5
- * Rails 4 compatibility.
9
+ * Rails 4 compatibility
6
10
 
7
11
  # 4.0.1
8
12
 
9
- * Add missing animated-overlay.gif asset and fix image path.
13
+ * Add missing animated-overlay.gif asset and fix image path
10
14
 
11
15
  # 4.0.0
12
16
 
data/README.md CHANGED
@@ -8,6 +8,10 @@ pipeline](http://guides.rubyonrails.org/asset_pipeline.html), so you never have
8
8
  to download a custom package through the [web
9
9
  interface](http://jqueryui.com/download) again.
10
10
 
11
+ Also check out the
12
+ [jquery-ui-sass-rails](https://github.com/jhilden/jquery-ui-sass-rails) gem,
13
+ which allows you to override theme variables with Sass.
14
+
11
15
  ## Usage
12
16
 
13
17
  In your Gemfile, add:
@@ -2,7 +2,7 @@
2
2
  //= require jquery.ui.widget
3
3
 
4
4
  /*!
5
- * jQuery UI Accordion 1.10.0
5
+ * jQuery UI Accordion 1.10.3
6
6
  * http://jqueryui.com
7
7
  *
8
8
  * Copyright 2013 jQuery Foundation and other contributors
@@ -27,7 +27,7 @@ showProps.height = showProps.paddingTop = showProps.paddingBottom =
27
27
  showProps.borderTopWidth = showProps.borderBottomWidth = "show";
28
28
 
29
29
  $.widget( "ui.accordion", {
30
- version: "1.10.0",
30
+ version: "1.10.3",
31
31
  options: {
32
32
  active: 0,
33
33
  animate: {},
@@ -68,6 +68,7 @@ $.widget( "ui.accordion", {
68
68
  _getCreateEventData: function() {
69
69
  return {
70
70
  header: this.active,
71
+ panel: !this.active.length ? $() : this.active.next(),
71
72
  content: !this.active.length ? $() : this.active.next()
72
73
  };
73
74
  },
@@ -223,7 +224,7 @@ $.widget( "ui.accordion", {
223
224
  options.active = false;
224
225
  this.active = $();
225
226
  // active false only when collapsible is true
226
- } if ( options.active === false ) {
227
+ } else if ( options.active === false ) {
227
228
  this._activate( 0 );
228
229
  // was active, but active panel is gone
229
230
  } else if ( this.active.length && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {
@@ -265,8 +266,8 @@ $.widget( "ui.accordion", {
265
266
  (this.element.attr( "id" ) || ++uid);
266
267
 
267
268
  this.active = this._findActive( options.active )
268
- .addClass( "ui-accordion-header-active ui-state-active" )
269
- .toggleClass( "ui-corner-all ui-corner-top" );
269
+ .addClass( "ui-accordion-header-active ui-state-active ui-corner-top" )
270
+ .removeClass( "ui-corner-all" );
270
271
  this.active.next()
271
272
  .addClass( "ui-accordion-content-active" )
272
273
  .show();
@@ -4,7 +4,7 @@
4
4
  //= require jquery.ui.position
5
5
 
6
6
  /*!
7
- * jQuery UI Autocomplete 1.10.0
7
+ * jQuery UI Autocomplete 1.10.3
8
8
  * http://jqueryui.com
9
9
  *
10
10
  * Copyright 2013 jQuery Foundation and other contributors
@@ -25,7 +25,7 @@
25
25
  var requestIndex = 0;
26
26
 
27
27
  $.widget( "ui.autocomplete", {
28
- version: "1.10.0",
28
+ version: "1.10.3",
29
29
  defaultElement: "<input>",
30
30
  options: {
31
31
  appendTo: null,
@@ -59,10 +59,21 @@ $.widget( "ui.autocomplete", {
59
59
  // so we use the suppressKeyPressRepeat flag to avoid handling keypress
60
60
  // events when we know the keydown event was used to modify the
61
61
  // search term. #7799
62
- var suppressKeyPress, suppressKeyPressRepeat, suppressInput;
63
-
64
- this.isMultiLine = this._isMultiLine();
65
- this.valueMethod = this.element[ this.element.is( "input,textarea" ) ? "val" : "text" ];
62
+ var suppressKeyPress, suppressKeyPressRepeat, suppressInput,
63
+ nodeName = this.element[0].nodeName.toLowerCase(),
64
+ isTextarea = nodeName === "textarea",
65
+ isInput = nodeName === "input";
66
+
67
+ this.isMultiLine =
68
+ // Textareas are always multi-line
69
+ isTextarea ? true :
70
+ // Inputs are always single-line, even if inside a contentEditable element
71
+ // IE also treats inputs as contentEditable
72
+ isInput ? false :
73
+ // All other element types are determined by whether or not they're contentEditable
74
+ this.element.prop( "isContentEditable" );
75
+
76
+ this.valueMethod = this.element[ isTextarea || isInput ? "val" : "text" ];
66
77
  this.isNewMenu = true;
67
78
 
68
79
  this.element
@@ -136,7 +147,9 @@ $.widget( "ui.autocomplete", {
136
147
  keypress: function( event ) {
137
148
  if ( suppressKeyPress ) {
138
149
  suppressKeyPress = false;
139
- event.preventDefault();
150
+ if ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) {
151
+ event.preventDefault();
152
+ }
140
153
  return;
141
154
  }
142
155
  if ( suppressKeyPressRepeat ) {
@@ -186,15 +199,12 @@ $.widget( "ui.autocomplete", {
186
199
 
187
200
  this._initSource();
188
201
  this.menu = $( "<ul>" )
189
- .addClass( "ui-autocomplete" )
202
+ .addClass( "ui-autocomplete ui-front" )
190
203
  .appendTo( this._appendTo() )
191
204
  .menu({
192
- // custom key handling for now
193
- input: $(),
194
205
  // disable ARIA support, the live region takes care of that
195
206
  role: null
196
207
  })
197
- .zIndex( this.element.zIndex() + 1 )
198
208
  .hide()
199
209
  .data( "ui-menu" );
200
210
 
@@ -229,7 +239,8 @@ $.widget( "ui.autocomplete", {
229
239
  }
230
240
  },
231
241
  menufocus: function( event, ui ) {
232
- // #7024 - Prevent accidental activation of menu items in Firefox
242
+ // support: Firefox
243
+ // Prevent accidental activation of menu items in Firefox (#7024 #9118)
233
244
  if ( this.isNewMenu ) {
234
245
  this.isNewMenu = false;
235
246
  if ( event.originalEvent && /^mouse/.test( event.originalEvent.type ) ) {
@@ -292,7 +303,7 @@ $.widget( "ui.autocomplete", {
292
303
  "aria-live": "polite"
293
304
  })
294
305
  .addClass( "ui-helper-hidden-accessible" )
295
- .insertAfter( this.element );
306
+ .insertBefore( this.element );
296
307
 
297
308
  // turning off autocomplete prevents the browser from remembering the
298
309
  // value when navigating through history, so we re-enable autocomplete
@@ -346,20 +357,6 @@ $.widget( "ui.autocomplete", {
346
357
  return element;
347
358
  },
348
359
 
349
- _isMultiLine: function() {
350
- // Textareas are always multi-line
351
- if ( this.element.is( "textarea" ) ) {
352
- return true;
353
- }
354
- // Inputs are always single-line, even if inside a contentEditable element
355
- // IE also treats inputs as contentEditable
356
- if ( this.element.is( "input" ) ) {
357
- return false;
358
- }
359
- // All other element types are determined by whether or not they're contentEditable
360
- return this.element.prop( "isContentEditable" );
361
- },
362
-
363
360
  _initSource: function() {
364
361
  var array, url,
365
362
  that = this;
@@ -497,10 +494,9 @@ $.widget( "ui.autocomplete", {
497
494
  },
498
495
 
499
496
  _suggest: function( items ) {
500
- var ul = this.menu.element
501
- .empty()
502
- .zIndex( this.element.zIndex() + 1 );
497
+ var ul = this.menu.element.empty();
503
498
  this._renderMenu( ul, items );
499
+ this.isNewMenu = true;
504
500
  this.menu.refresh();
505
501
 
506
502
  // size and position menu
@@ -2,7 +2,7 @@
2
2
  //= require jquery.ui.widget
3
3
 
4
4
  /*!
5
- * jQuery UI Button 1.10.0
5
+ * jQuery UI Button 1.10.3
6
6
  * http://jqueryui.com
7
7
  *
8
8
  * Copyright 2013 jQuery Foundation and other contributors
@@ -22,9 +22,9 @@ var lastActive, startXPos, startYPos, clickDragged,
22
22
  stateClasses = "ui-state-hover ui-state-active ",
23
23
  typeClasses = "ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only",
24
24
  formResetHandler = function() {
25
- var buttons = $( this ).find( ":ui-button" );
25
+ var form = $( this );
26
26
  setTimeout(function() {
27
- buttons.button( "refresh" );
27
+ form.find( ":ui-button" ).button( "refresh" );
28
28
  }, 1 );
29
29
  },
30
30
  radioGroup = function( radio ) {
@@ -46,7 +46,7 @@ var lastActive, startXPos, startYPos, clickDragged,
46
46
  };
47
47
 
48
48
  $.widget( "ui.button", {
49
- version: "1.10.0",
49
+ version: "1.10.3",
50
50
  defaultElement: "<button>",
51
51
  options: {
52
52
  disabled: null,
@@ -363,7 +363,7 @@ $.widget( "ui.button", {
363
363
  });
364
364
 
365
365
  $.widget( "ui.buttonset", {
366
- version: "1.10.0",
366
+ version: "1.10.3",
367
367
  options: {
368
368
  items: "button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(ui-button)"
369
369
  },
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * jQuery UI Core 1.10.0
2
+ * jQuery UI Core 1.10.3
3
3
  * http://jqueryui.com
4
4
  *
5
5
  * Copyright 2013 jQuery Foundation and other contributors
@@ -13,16 +13,11 @@
13
13
  var uuid = 0,
14
14
  runiqueId = /^ui-id-\d+$/;
15
15
 
16
- // prevent duplicate loading
17
- // this is only a problem because we proxy existing functions
18
- // and we don't want to double proxy them
16
+ // $.ui might exist from components with no dependencies, e.g., $.ui.position
19
17
  $.ui = $.ui || {};
20
- if ( $.ui.version ) {
21
- return;
22
- }
23
18
 
24
19
  $.extend( $.ui, {
25
- version: "1.10.0",
20
+ version: "1.10.3",
26
21
 
27
22
  keyCode: {
28
23
  BACKSPACE: 8,
@@ -52,20 +47,21 @@ $.extend( $.ui, {
52
47
 
53
48
  // plugins
54
49
  $.fn.extend({
55
- _focus: $.fn.focus,
56
- focus: function( delay, fn ) {
57
- return typeof delay === "number" ?
58
- this.each(function() {
59
- var elem = this;
60
- setTimeout(function() {
61
- $( elem ).focus();
62
- if ( fn ) {
63
- fn.call( elem );
64
- }
65
- }, delay );
66
- }) :
67
- this._focus.apply( this, arguments );
68
- },
50
+ focus: (function( orig ) {
51
+ return function( delay, fn ) {
52
+ return typeof delay === "number" ?
53
+ this.each(function() {
54
+ var elem = this;
55
+ setTimeout(function() {
56
+ $( elem ).focus();
57
+ if ( fn ) {
58
+ fn.call( elem );
59
+ }
60
+ }, delay );
61
+ }) :
62
+ orig.apply( this, arguments );
63
+ };
64
+ })( $.fn.focus ),
69
65
 
70
66
  scrollParent: function() {
71
67
  var scrollParent;
@@ -271,7 +267,7 @@ $.fn.extend({
271
267
  });
272
268
 
273
269
  $.extend( $.ui, {
274
- // $.ui.plugin is deprecated. Use the proxy pattern instead.
270
+ // $.ui.plugin is deprecated. Use $.widget() extensions instead.
275
271
  plugin: {
276
272
  add: function( module, option, set ) {
277
273
  var i,
@@ -2,10 +2,10 @@
2
2
  /* Written by Milian Wolff (mail@milianw.de). */
3
3
  jQuery(function($){
4
4
  $.datepicker.regional['de'] = {
5
- closeText: 'schließen',
6
- prevText: '&#x3C;zurück',
5
+ closeText: 'Schließen',
6
+ prevText: '&#x3C;Zurück',
7
7
  nextText: 'Vor&#x3E;',
8
- currentText: 'heute',
8
+ currentText: 'Heute',
9
9
  monthNames: ['Januar','Februar','März','April','Mai','Juni',
10
10
  'Juli','August','September','Oktober','November','Dezember'],
11
11
  monthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun',
@@ -6,11 +6,11 @@ jQuery(function($){
6
6
  prevText: '&#x3C;Predchádzajúci',
7
7
  nextText: 'Nasledujúci&#x3E;',
8
8
  currentText: 'Dnes',
9
- monthNames: ['Január','Február','Marec','Apríl','Máj','Jún',
10
- 'Júl','August','September','Október','November','December'],
9
+ monthNames: ['január','február','marec','apríl','máj','jún',
10
+ 'júl','august','september','október','november','december'],
11
11
  monthNamesShort: ['Jan','Feb','Mar','Apr','Máj','Jún',
12
12
  'Júl','Aug','Sep','Okt','Nov','Dec'],
13
- dayNames: ['Nedeľa','Pondelok','Utorok','Streda','Štvrtok','Piatok','Sobota'],
13
+ dayNames: ['nedeľa','pondelok','utorok','streda','štvrtok','piatok','sobota'],
14
14
  dayNamesShort: ['Ned','Pon','Uto','Str','Štv','Pia','Sob'],
15
15
  dayNamesMin: ['Ne','Po','Ut','St','Št','Pia','So'],
16
16
  weekHeader: 'Ty',
@@ -14,7 +14,7 @@ jQuery(function($){
14
14
  dayNamesShort: ['Ned','Pon','Uto','Sre','Čet','Pet','Sub'],
15
15
  dayNamesMin: ['Ne','Po','Ut','Sr','Če','Pe','Su'],
16
16
  weekHeader: 'Sed',
17
- dateFormat: 'dd/mm/yy',
17
+ dateFormat: 'dd.mm.yy',
18
18
  firstDay: 1,
19
19
  isRTL: false,
20
20
  showMonthAfterYear: false,
@@ -14,7 +14,7 @@ jQuery(function($){
14
14
  dayNamesShort: ['Нед','Пон','Уто','Сре','Чет','Пет','Суб'],
15
15
  dayNamesMin: ['Не','По','Ут','Ср','Че','Пе','Су'],
16
16
  weekHeader: 'Сед',
17
- dateFormat: 'dd/mm/yy',
17
+ dateFormat: 'dd.mm.yy',
18
18
  firstDay: 1,
19
19
  isRTL: false,
20
20
  showMonthAfterYear: false,
@@ -1,7 +1,7 @@
1
1
  //= require jquery.ui.core
2
2
 
3
3
  /*!
4
- * jQuery UI Datepicker 1.10.0
4
+ * jQuery UI Datepicker 1.10.3
5
5
  * http://jqueryui.com
6
6
  *
7
7
  * Copyright 2013 jQuery Foundation and other contributors
@@ -15,10 +15,9 @@
15
15
  */
16
16
  (function( $, undefined ) {
17
17
 
18
- $.extend($.ui, { datepicker: { version: "1.10.0" } });
18
+ $.extend($.ui, { datepicker: { version: "1.10.3" } });
19
19
 
20
20
  var PROP_NAME = "datepicker",
21
- dpuuid = new Date().getTime(),
22
21
  instActive;
23
22
 
24
23
  /* Date picker manager.
@@ -755,9 +754,10 @@ $.extend(Datepicker.prototype, {
755
754
  inst.dpDiv[showAnim || "show"](showAnim ? duration : null);
756
755
  }
757
756
 
758
- if (inst.input.is(":visible") && !inst.input.is(":disabled")) {
757
+ if ( $.datepicker._shouldFocusInput( inst ) ) {
759
758
  inst.input.focus();
760
759
  }
760
+
761
761
  $.datepicker._curInst = inst;
762
762
  }
763
763
  },
@@ -784,10 +784,7 @@ $.extend(Datepicker.prototype, {
784
784
  inst.dpDiv[(this._get(inst, "isRTL") ? "add" : "remove") +
785
785
  "Class"]("ui-datepicker-rtl");
786
786
 
787
- // #6694 - don't focus the input if it's already focused
788
- // this breaks the change event in IE
789
- if (inst === $.datepicker._curInst && $.datepicker._datepickerShowing && inst.input &&
790
- inst.input.is(":visible") && !inst.input.is(":disabled") && inst.input[0] !== document.activeElement) {
787
+ if (inst === $.datepicker._curInst && $.datepicker._datepickerShowing && $.datepicker._shouldFocusInput( inst ) ) {
791
788
  inst.input.focus();
792
789
  }
793
790
 
@@ -804,16 +801,11 @@ $.extend(Datepicker.prototype, {
804
801
  }
805
802
  },
806
803
 
807
- /* Retrieve the size of left and top borders for an element.
808
- * @param elem (jQuery object) the element of interest
809
- * @return (number[2]) the left and top borders
810
- */
811
- _getBorders: function(elem) {
812
- var convert = function(value) {
813
- return {thin: 1, medium: 2, thick: 3}[value] || value;
814
- };
815
- return [parseFloat(convert(elem.css("border-left-width"))),
816
- parseFloat(convert(elem.css("border-top-width")))];
804
+ // #6694 - don't focus the input if it's already focused
805
+ // this breaks the change event in IE
806
+ // Support: IE and jQuery <1.9
807
+ _shouldFocusInput: function( inst ) {
808
+ return inst.input && inst.input.is( ":visible" ) && !inst.input.is( ":disabled" ) && !inst.input.is( ":focus" );
817
809
  },
818
810
 
819
811
  /* Check positioning to remain on screen. */
@@ -1560,27 +1552,27 @@ $.extend(Datepicker.prototype, {
1560
1552
  inst.dpDiv.find("[data-handler]").map(function () {
1561
1553
  var handler = {
1562
1554
  prev: function () {
1563
- window["DP_jQuery_" + dpuuid].datepicker._adjustDate(id, -stepMonths, "M");
1555
+ $.datepicker._adjustDate(id, -stepMonths, "M");
1564
1556
  },
1565
1557
  next: function () {
1566
- window["DP_jQuery_" + dpuuid].datepicker._adjustDate(id, +stepMonths, "M");
1558
+ $.datepicker._adjustDate(id, +stepMonths, "M");
1567
1559
  },
1568
1560
  hide: function () {
1569
- window["DP_jQuery_" + dpuuid].datepicker._hideDatepicker();
1561
+ $.datepicker._hideDatepicker();
1570
1562
  },
1571
1563
  today: function () {
1572
- window["DP_jQuery_" + dpuuid].datepicker._gotoToday(id);
1564
+ $.datepicker._gotoToday(id);
1573
1565
  },
1574
1566
  selectDay: function () {
1575
- window["DP_jQuery_" + dpuuid].datepicker._selectDay(id, +this.getAttribute("data-month"), +this.getAttribute("data-year"), this);
1567
+ $.datepicker._selectDay(id, +this.getAttribute("data-month"), +this.getAttribute("data-year"), this);
1576
1568
  return false;
1577
1569
  },
1578
1570
  selectMonth: function () {
1579
- window["DP_jQuery_" + dpuuid].datepicker._selectMonthYear(id, this, "M");
1571
+ $.datepicker._selectMonthYear(id, this, "M");
1580
1572
  return false;
1581
1573
  },
1582
1574
  selectYear: function () {
1583
- window["DP_jQuery_" + dpuuid].datepicker._selectMonthYear(id, this, "Y");
1575
+ $.datepicker._selectMonthYear(id, this, "Y");
1584
1576
  return false;
1585
1577
  }
1586
1578
  };
@@ -1743,7 +1735,7 @@ $.extend(Datepicker.prototype, {
1743
1735
  (otherMonth && !showOtherMonths ? "" : " " + daySettings[1] + // highlight custom dates
1744
1736
  (printDate.getTime() === currentDate.getTime() ? " " + this._currentClass : "") + // highlight selected day
1745
1737
  (printDate.getTime() === today.getTime() ? " ui-datepicker-today" : "")) + "'" + // highlight today (if different)
1746
- ((!otherMonth || showOtherMonths) && daySettings[2] ? " title='" + daySettings[2] + "'" : "") + // cell title
1738
+ ((!otherMonth || showOtherMonths) && daySettings[2] ? " title='" + daySettings[2].replace(/'/g, "&#39;") + "'" : "") + // cell title
1747
1739
  (unselectable ? "" : " data-handler='selectDay' data-event='click' data-month='" + printDate.getMonth() + "' data-year='" + printDate.getFullYear() + "'") + ">" + // actions
1748
1740
  (otherMonth && !showOtherMonths ? "&#xa0;" : // display for other months
1749
1741
  (unselectable ? "<span class='ui-state-default'>" + printDate.getDate() + "</span>" : "<a class='ui-state-default" +
@@ -1920,8 +1912,14 @@ $.extend(Datepicker.prototype, {
1920
1912
  if (years){
1921
1913
  yearSplit = years.split(":");
1922
1914
  currentYear = new Date().getFullYear();
1923
- minYear = parseInt(yearSplit[0], 10) + currentYear;
1924
- maxYear = parseInt(yearSplit[1], 10) + currentYear;
1915
+ minYear = parseInt(yearSplit[0], 10);
1916
+ maxYear = parseInt(yearSplit[1], 10);
1917
+ if ( yearSplit[0].match(/[+\-].*/) ) {
1918
+ minYear += currentYear;
1919
+ }
1920
+ if ( yearSplit[1].match(/[+\-].*/) ) {
1921
+ maxYear += currentYear;
1922
+ }
1925
1923
  }
1926
1924
 
1927
1925
  return ((!minDate || date.getTime() >= minDate.getTime()) &&
@@ -2037,10 +2035,6 @@ $.fn.datepicker = function(options){
2037
2035
  $.datepicker = new Datepicker(); // singleton instance
2038
2036
  $.datepicker.initialized = false;
2039
2037
  $.datepicker.uuid = new Date().getTime();
2040
- $.datepicker.version = "1.10.0";
2041
-
2042
- // Workaround for #4055
2043
- // Add another global to avoid noConflict issues with inline event handlers
2044
- window["DP_jQuery_" + dpuuid] = $;
2038
+ $.datepicker.version = "1.10.3";
2045
2039
 
2046
2040
  })(jQuery);