jquery-ui-rails 4.0.2 → 4.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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);