src/eric7/WebBrowser/data/javascript/jquery-ui.js

Sun, 26 Feb 2023 12:44:03 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 26 Feb 2023 12:44:03 +0100
branch
mpy_network
changeset 9803
2ab3de60b51c
parent 9678
32ddecc54baf
permissions
-rw-r--r--

MicroPython
- fixed an issue checking, if the device data is available

9678
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1 /*! jQuery UI - v1.13.2 - 2022-07-14
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2 * http://jqueryui.com
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3 * Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js, jquery-patch.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4 * Copyright jQuery Foundation and other contributors; Licensed MIT */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6 ( function( factory ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7 "use strict";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9 if ( typeof define === "function" && define.amd ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11 // AMD. Register as an anonymous module.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12 define( [ "jquery" ], factory );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15 // Browser globals
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16 factory( jQuery );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18 } )( function( $ ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19 "use strict";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
20
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
21 $.ui = $.ui || {};
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
22
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
23 var version = $.ui.version = "1.13.2";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
24
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
25
1670
6fd889391d2c Added a Speed Dial to the web browser including the capability to select the first ten pages by pressing Meta+1 to Meta+0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 /*!
9678
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
27 * jQuery UI Widget 1.13.2
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
28 * http://jqueryui.com
1670
6fd889391d2c Added a Speed Dial to the web browser including the capability to select the first ten pages by pressing Meta+1 to Meta+0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 *
9678
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
30 * Copyright jQuery Foundation and other contributors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
31 * Released under the MIT license.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
32 * http://jquery.org/license
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
33 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
34
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
35 //>>label: Widget
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
36 //>>group: Core
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
37 //>>description: Provides a factory for creating stateful widgets with a common API.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
38 //>>docs: http://api.jqueryui.com/jQuery.widget/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
39 //>>demos: http://jqueryui.com/widget/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
40
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
41
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
42 var widgetUuid = 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
43 var widgetHasOwnProperty = Array.prototype.hasOwnProperty;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
44 var widgetSlice = Array.prototype.slice;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
45
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
46 $.cleanData = ( function( orig ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
47 return function( elems ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
48 var events, elem, i;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
49 for ( i = 0; ( elem = elems[ i ] ) != null; i++ ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
50
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
51 // Only trigger remove when necessary to save time
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
52 events = $._data( elem, "events" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
53 if ( events && events.remove ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
54 $( elem ).triggerHandler( "remove" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
55 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
56 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
57 orig( elems );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
58 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
59 } )( $.cleanData );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
60
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
61 $.widget = function( name, base, prototype ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
62 var existingConstructor, constructor, basePrototype;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
63
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
64 // ProxiedPrototype allows the provided prototype to remain unmodified
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
65 // so that it can be used as a mixin for multiple widgets (#8876)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
66 var proxiedPrototype = {};
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
67
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
68 var namespace = name.split( "." )[ 0 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
69 name = name.split( "." )[ 1 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
70 var fullName = namespace + "-" + name;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
71
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
72 if ( !prototype ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
73 prototype = base;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
74 base = $.Widget;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
75 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
76
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
77 if ( Array.isArray( prototype ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
78 prototype = $.extend.apply( null, [ {} ].concat( prototype ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
79 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
80
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
81 // Create selector for plugin
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
82 $.expr.pseudos[ fullName.toLowerCase() ] = function( elem ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
83 return !!$.data( elem, fullName );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
84 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
85
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
86 $[ namespace ] = $[ namespace ] || {};
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
87 existingConstructor = $[ namespace ][ name ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
88 constructor = $[ namespace ][ name ] = function( options, element ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
89
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
90 // Allow instantiation without "new" keyword
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
91 if ( !this || !this._createWidget ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
92 return new constructor( options, element );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
93 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
94
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
95 // Allow instantiation without initializing for simple inheritance
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
96 // must use "new" keyword (the code above always passes args)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
97 if ( arguments.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
98 this._createWidget( options, element );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
99 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
100 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
101
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
102 // Extend with the existing constructor to carry over any static properties
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
103 $.extend( constructor, existingConstructor, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
104 version: prototype.version,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
105
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
106 // Copy the object used to create the prototype in case we need to
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
107 // redefine the widget later
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
108 _proto: $.extend( {}, prototype ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
109
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
110 // Track widgets that inherit from this widget in case this widget is
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
111 // redefined after a widget inherits from it
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
112 _childConstructors: []
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
113 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
114
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
115 basePrototype = new base();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
116
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
117 // We need to make the options hash a property directly on the new instance
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
118 // otherwise we'll modify the options hash on the prototype that we're
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
119 // inheriting from
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
120 basePrototype.options = $.widget.extend( {}, basePrototype.options );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
121 $.each( prototype, function( prop, value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
122 if ( typeof value !== "function" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
123 proxiedPrototype[ prop ] = value;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
124 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
125 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
126 proxiedPrototype[ prop ] = ( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
127 function _super() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
128 return base.prototype[ prop ].apply( this, arguments );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
129 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
130
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
131 function _superApply( args ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
132 return base.prototype[ prop ].apply( this, args );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
133 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
134
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
135 return function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
136 var __super = this._super;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
137 var __superApply = this._superApply;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
138 var returnValue;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
139
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
140 this._super = _super;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
141 this._superApply = _superApply;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
142
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
143 returnValue = value.apply( this, arguments );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
144
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
145 this._super = __super;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
146 this._superApply = __superApply;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
147
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
148 return returnValue;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
149 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
150 } )();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
151 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
152 constructor.prototype = $.widget.extend( basePrototype, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
153
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
154 // TODO: remove support for widgetEventPrefix
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
155 // always use the name + a colon as the prefix, e.g., draggable:start
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
156 // don't prefix for widgets that aren't DOM-based
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
157 widgetEventPrefix: existingConstructor ? ( basePrototype.widgetEventPrefix || name ) : name
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
158 }, proxiedPrototype, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
159 constructor: constructor,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
160 namespace: namespace,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
161 widgetName: name,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
162 widgetFullName: fullName
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
163 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
164
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
165 // If this widget is being redefined then we need to find all widgets that
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
166 // are inheriting from it and redefine all of them so that they inherit from
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
167 // the new version of this widget. We're essentially trying to replace one
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
168 // level in the prototype chain.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
169 if ( existingConstructor ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
170 $.each( existingConstructor._childConstructors, function( i, child ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
171 var childPrototype = child.prototype;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
172
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
173 // Redefine the child widget using the same prototype that was
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
174 // originally used, but inherit from the new version of the base
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
175 $.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
176 child._proto );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
177 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
178
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
179 // Remove the list of existing child constructors from the old constructor
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
180 // so the old child constructors can be garbage collected
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
181 delete existingConstructor._childConstructors;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
182 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
183 base._childConstructors.push( constructor );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
184 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
185
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
186 $.widget.bridge( name, constructor );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
187
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
188 return constructor;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
189 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
190
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
191 $.widget.extend = function( target ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
192 var input = widgetSlice.call( arguments, 1 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
193 var inputIndex = 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
194 var inputLength = input.length;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
195 var key;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
196 var value;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
197
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
198 for ( ; inputIndex < inputLength; inputIndex++ ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
199 for ( key in input[ inputIndex ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
200 value = input[ inputIndex ][ key ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
201 if ( widgetHasOwnProperty.call( input[ inputIndex ], key ) && value !== undefined ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
202
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
203 // Clone objects
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
204 if ( $.isPlainObject( value ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
205 target[ key ] = $.isPlainObject( target[ key ] ) ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
206 $.widget.extend( {}, target[ key ], value ) :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
207
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
208 // Don't extend strings, arrays, etc. with objects
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
209 $.widget.extend( {}, value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
210
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
211 // Copy everything else by reference
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
212 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
213 target[ key ] = value;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
214 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
215 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
216 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
217 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
218 return target;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
219 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
220
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
221 $.widget.bridge = function( name, object ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
222 var fullName = object.prototype.widgetFullName || name;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
223 $.fn[ name ] = function( options ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
224 var isMethodCall = typeof options === "string";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
225 var args = widgetSlice.call( arguments, 1 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
226 var returnValue = this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
227
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
228 if ( isMethodCall ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
229
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
230 // If this is an empty collection, we need to have the instance method
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
231 // return undefined instead of the jQuery instance
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
232 if ( !this.length && options === "instance" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
233 returnValue = undefined;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
234 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
235 this.each( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
236 var methodValue;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
237 var instance = $.data( this, fullName );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
238
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
239 if ( options === "instance" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
240 returnValue = instance;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
241 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
242 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
243
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
244 if ( !instance ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
245 return $.error( "cannot call methods on " + name +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
246 " prior to initialization; " +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
247 "attempted to call method '" + options + "'" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
248 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
249
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
250 if ( typeof instance[ options ] !== "function" ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
251 options.charAt( 0 ) === "_" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
252 return $.error( "no such method '" + options + "' for " + name +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
253 " widget instance" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
254 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
255
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
256 methodValue = instance[ options ].apply( instance, args );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
257
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
258 if ( methodValue !== instance && methodValue !== undefined ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
259 returnValue = methodValue && methodValue.jquery ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
260 returnValue.pushStack( methodValue.get() ) :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
261 methodValue;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
262 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
263 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
264 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
265 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
266 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
267
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
268 // Allow multiple hashes to be passed on init
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
269 if ( args.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
270 options = $.widget.extend.apply( null, [ options ].concat( args ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
271 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
272
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
273 this.each( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
274 var instance = $.data( this, fullName );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
275 if ( instance ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
276 instance.option( options || {} );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
277 if ( instance._init ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
278 instance._init();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
279 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
280 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
281 $.data( this, fullName, new object( options, this ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
282 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
283 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
284 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
285
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
286 return returnValue;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
287 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
288 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
289
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
290 $.Widget = function( /* options, element */ ) {};
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
291 $.Widget._childConstructors = [];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
292
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
293 $.Widget.prototype = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
294 widgetName: "widget",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
295 widgetEventPrefix: "",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
296 defaultElement: "<div>",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
297
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
298 options: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
299 classes: {},
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
300 disabled: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
301
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
302 // Callbacks
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
303 create: null
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
304 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
305
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
306 _createWidget: function( options, element ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
307 element = $( element || this.defaultElement || this )[ 0 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
308 this.element = $( element );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
309 this.uuid = widgetUuid++;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
310 this.eventNamespace = "." + this.widgetName + this.uuid;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
311
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
312 this.bindings = $();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
313 this.hoverable = $();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
314 this.focusable = $();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
315 this.classesElementLookup = {};
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
316
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
317 if ( element !== this ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
318 $.data( element, this.widgetFullName, this );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
319 this._on( true, this.element, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
320 remove: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
321 if ( event.target === element ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
322 this.destroy();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
323 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
324 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
325 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
326 this.document = $( element.style ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
327
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
328 // Element within the document
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
329 element.ownerDocument :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
330
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
331 // Element is window or document
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
332 element.document || element );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
333 this.window = $( this.document[ 0 ].defaultView || this.document[ 0 ].parentWindow );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
334 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
335
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
336 this.options = $.widget.extend( {},
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
337 this.options,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
338 this._getCreateOptions(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
339 options );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
340
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
341 this._create();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
342
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
343 if ( this.options.disabled ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
344 this._setOptionDisabled( this.options.disabled );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
345 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
346
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
347 this._trigger( "create", null, this._getCreateEventData() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
348 this._init();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
349 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
350
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
351 _getCreateOptions: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
352 return {};
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
353 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
354
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
355 _getCreateEventData: $.noop,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
356
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
357 _create: $.noop,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
358
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
359 _init: $.noop,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
360
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
361 destroy: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
362 var that = this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
363
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
364 this._destroy();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
365 $.each( this.classesElementLookup, function( key, value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
366 that._removeClass( value, key );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
367 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
368
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
369 // We can probably remove the unbind calls in 2.0
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
370 // all event bindings should go through this._on()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
371 this.element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
372 .off( this.eventNamespace )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
373 .removeData( this.widgetFullName );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
374 this.widget()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
375 .off( this.eventNamespace )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
376 .removeAttr( "aria-disabled" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
377
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
378 // Clean up events and states
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
379 this.bindings.off( this.eventNamespace );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
380 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
381
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
382 _destroy: $.noop,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
383
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
384 widget: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
385 return this.element;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
386 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
387
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
388 option: function( key, value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
389 var options = key;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
390 var parts;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
391 var curOption;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
392 var i;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
393
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
394 if ( arguments.length === 0 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
395
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
396 // Don't return a reference to the internal hash
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
397 return $.widget.extend( {}, this.options );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
398 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
399
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
400 if ( typeof key === "string" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
401
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
402 // Handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
403 options = {};
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
404 parts = key.split( "." );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
405 key = parts.shift();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
406 if ( parts.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
407 curOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
408 for ( i = 0; i < parts.length - 1; i++ ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
409 curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
410 curOption = curOption[ parts[ i ] ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
411 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
412 key = parts.pop();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
413 if ( arguments.length === 1 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
414 return curOption[ key ] === undefined ? null : curOption[ key ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
415 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
416 curOption[ key ] = value;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
417 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
418 if ( arguments.length === 1 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
419 return this.options[ key ] === undefined ? null : this.options[ key ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
420 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
421 options[ key ] = value;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
422 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
423 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
424
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
425 this._setOptions( options );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
426
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
427 return this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
428 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
429
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
430 _setOptions: function( options ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
431 var key;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
432
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
433 for ( key in options ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
434 this._setOption( key, options[ key ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
435 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
436
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
437 return this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
438 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
439
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
440 _setOption: function( key, value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
441 if ( key === "classes" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
442 this._setOptionClasses( value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
443 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
444
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
445 this.options[ key ] = value;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
446
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
447 if ( key === "disabled" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
448 this._setOptionDisabled( value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
449 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
450
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
451 return this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
452 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
453
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
454 _setOptionClasses: function( value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
455 var classKey, elements, currentElements;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
456
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
457 for ( classKey in value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
458 currentElements = this.classesElementLookup[ classKey ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
459 if ( value[ classKey ] === this.options.classes[ classKey ] ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
460 !currentElements ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
461 !currentElements.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
462 continue;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
463 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
464
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
465 // We are doing this to create a new jQuery object because the _removeClass() call
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
466 // on the next line is going to destroy the reference to the current elements being
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
467 // tracked. We need to save a copy of this collection so that we can add the new classes
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
468 // below.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
469 elements = $( currentElements.get() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
470 this._removeClass( currentElements, classKey );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
471
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
472 // We don't use _addClass() here, because that uses this.options.classes
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
473 // for generating the string of classes. We want to use the value passed in from
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
474 // _setOption(), this is the new value of the classes option which was passed to
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
475 // _setOption(). We pass this value directly to _classes().
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
476 elements.addClass( this._classes( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
477 element: elements,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
478 keys: classKey,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
479 classes: value,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
480 add: true
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
481 } ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
482 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
483 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
484
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
485 _setOptionDisabled: function( value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
486 this._toggleClass( this.widget(), this.widgetFullName + "-disabled", null, !!value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
487
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
488 // If the widget is becoming disabled, then nothing is interactive
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
489 if ( value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
490 this._removeClass( this.hoverable, null, "ui-state-hover" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
491 this._removeClass( this.focusable, null, "ui-state-focus" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
492 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
493 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
494
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
495 enable: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
496 return this._setOptions( { disabled: false } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
497 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
498
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
499 disable: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
500 return this._setOptions( { disabled: true } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
501 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
502
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
503 _classes: function( options ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
504 var full = [];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
505 var that = this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
506
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
507 options = $.extend( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
508 element: this.element,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
509 classes: this.options.classes || {}
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
510 }, options );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
511
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
512 function bindRemoveEvent() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
513 var nodesToBind = [];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
514
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
515 options.element.each( function( _, element ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
516 var isTracked = $.map( that.classesElementLookup, function( elements ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
517 return elements;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
518 } )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
519 .some( function( elements ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
520 return elements.is( element );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
521 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
522
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
523 if ( !isTracked ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
524 nodesToBind.push( element );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
525 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
526 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
527
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
528 that._on( $( nodesToBind ), {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
529 remove: "_untrackClassesElement"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
530 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
531 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
532
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
533 function processClassString( classes, checkOption ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
534 var current, i;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
535 for ( i = 0; i < classes.length; i++ ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
536 current = that.classesElementLookup[ classes[ i ] ] || $();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
537 if ( options.add ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
538 bindRemoveEvent();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
539 current = $( $.uniqueSort( current.get().concat( options.element.get() ) ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
540 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
541 current = $( current.not( options.element ).get() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
542 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
543 that.classesElementLookup[ classes[ i ] ] = current;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
544 full.push( classes[ i ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
545 if ( checkOption && options.classes[ classes[ i ] ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
546 full.push( options.classes[ classes[ i ] ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
547 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
548 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
549 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
550
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
551 if ( options.keys ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
552 processClassString( options.keys.match( /\S+/g ) || [], true );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
553 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
554 if ( options.extra ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
555 processClassString( options.extra.match( /\S+/g ) || [] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
556 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
557
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
558 return full.join( " " );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
559 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
560
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
561 _untrackClassesElement: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
562 var that = this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
563 $.each( that.classesElementLookup, function( key, value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
564 if ( $.inArray( event.target, value ) !== -1 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
565 that.classesElementLookup[ key ] = $( value.not( event.target ).get() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
566 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
567 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
568
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
569 this._off( $( event.target ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
570 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
571
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
572 _removeClass: function( element, keys, extra ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
573 return this._toggleClass( element, keys, extra, false );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
574 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
575
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
576 _addClass: function( element, keys, extra ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
577 return this._toggleClass( element, keys, extra, true );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
578 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
579
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
580 _toggleClass: function( element, keys, extra, add ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
581 add = ( typeof add === "boolean" ) ? add : extra;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
582 var shift = ( typeof element === "string" || element === null ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
583 options = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
584 extra: shift ? keys : extra,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
585 keys: shift ? element : keys,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
586 element: shift ? this.element : element,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
587 add: add
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
588 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
589 options.element.toggleClass( this._classes( options ), add );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
590 return this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
591 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
592
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
593 _on: function( suppressDisabledCheck, element, handlers ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
594 var delegateElement;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
595 var instance = this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
596
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
597 // No suppressDisabledCheck flag, shuffle arguments
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
598 if ( typeof suppressDisabledCheck !== "boolean" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
599 handlers = element;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
600 element = suppressDisabledCheck;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
601 suppressDisabledCheck = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
602 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
603
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
604 // No element argument, shuffle and use this.element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
605 if ( !handlers ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
606 handlers = element;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
607 element = this.element;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
608 delegateElement = this.widget();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
609 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
610 element = delegateElement = $( element );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
611 this.bindings = this.bindings.add( element );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
612 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
613
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
614 $.each( handlers, function( event, handler ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
615 function handlerProxy() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
616
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
617 // Allow widgets to customize the disabled handling
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
618 // - disabled as an array instead of boolean
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
619 // - disabled class as method for disabling individual parts
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
620 if ( !suppressDisabledCheck &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
621 ( instance.options.disabled === true ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
622 $( this ).hasClass( "ui-state-disabled" ) ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
623 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
624 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
625 return ( typeof handler === "string" ? instance[ handler ] : handler )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
626 .apply( instance, arguments );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
627 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
628
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
629 // Copy the guid so direct unbinding works
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
630 if ( typeof handler !== "string" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
631 handlerProxy.guid = handler.guid =
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
632 handler.guid || handlerProxy.guid || $.guid++;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
633 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
634
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
635 var match = event.match( /^([\w:-]*)\s*(.*)$/ );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
636 var eventName = match[ 1 ] + instance.eventNamespace;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
637 var selector = match[ 2 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
638
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
639 if ( selector ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
640 delegateElement.on( eventName, selector, handlerProxy );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
641 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
642 element.on( eventName, handlerProxy );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
643 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
644 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
645 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
646
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
647 _off: function( element, eventName ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
648 eventName = ( eventName || "" ).split( " " ).join( this.eventNamespace + " " ) +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
649 this.eventNamespace;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
650 element.off( eventName );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
651
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
652 // Clear the stack to avoid memory leaks (#10056)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
653 this.bindings = $( this.bindings.not( element ).get() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
654 this.focusable = $( this.focusable.not( element ).get() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
655 this.hoverable = $( this.hoverable.not( element ).get() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
656 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
657
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
658 _delay: function( handler, delay ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
659 function handlerProxy() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
660 return ( typeof handler === "string" ? instance[ handler ] : handler )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
661 .apply( instance, arguments );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
662 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
663 var instance = this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
664 return setTimeout( handlerProxy, delay || 0 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
665 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
666
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
667 _hoverable: function( element ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
668 this.hoverable = this.hoverable.add( element );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
669 this._on( element, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
670 mouseenter: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
671 this._addClass( $( event.currentTarget ), null, "ui-state-hover" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
672 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
673 mouseleave: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
674 this._removeClass( $( event.currentTarget ), null, "ui-state-hover" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
675 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
676 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
677 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
678
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
679 _focusable: function( element ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
680 this.focusable = this.focusable.add( element );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
681 this._on( element, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
682 focusin: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
683 this._addClass( $( event.currentTarget ), null, "ui-state-focus" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
684 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
685 focusout: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
686 this._removeClass( $( event.currentTarget ), null, "ui-state-focus" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
687 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
688 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
689 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
690
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
691 _trigger: function( type, event, data ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
692 var prop, orig;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
693 var callback = this.options[ type ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
694
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
695 data = data || {};
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
696 event = $.Event( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
697 event.type = ( type === this.widgetEventPrefix ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
698 type :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
699 this.widgetEventPrefix + type ).toLowerCase();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
700
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
701 // The original event may come from any element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
702 // so we need to reset the target on the new event
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
703 event.target = this.element[ 0 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
704
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
705 // Copy original event properties over to the new event
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
706 orig = event.originalEvent;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
707 if ( orig ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
708 for ( prop in orig ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
709 if ( !( prop in event ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
710 event[ prop ] = orig[ prop ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
711 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
712 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
713 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
714
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
715 this.element.trigger( event, data );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
716 return !( typeof callback === "function" &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
717 callback.apply( this.element[ 0 ], [ event ].concat( data ) ) === false ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
718 event.isDefaultPrevented() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
719 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
720 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
721
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
722 $.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
723 $.Widget.prototype[ "_" + method ] = function( element, options, callback ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
724 if ( typeof options === "string" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
725 options = { effect: options };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
726 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
727
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
728 var hasOptions;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
729 var effectName = !options ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
730 method :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
731 options === true || typeof options === "number" ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
732 defaultEffect :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
733 options.effect || defaultEffect;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
734
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
735 options = options || {};
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
736 if ( typeof options === "number" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
737 options = { duration: options };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
738 } else if ( options === true ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
739 options = {};
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
740 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
741
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
742 hasOptions = !$.isEmptyObject( options );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
743 options.complete = callback;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
744
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
745 if ( options.delay ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
746 element.delay( options.delay );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
747 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
748
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
749 if ( hasOptions && $.effects && $.effects.effect[ effectName ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
750 element[ method ]( options );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
751 } else if ( effectName !== method && element[ effectName ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
752 element[ effectName ]( options.duration, options.easing, callback );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
753 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
754 element.queue( function( next ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
755 $( this )[ method ]();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
756 if ( callback ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
757 callback.call( element[ 0 ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
758 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
759 next();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
760 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
761 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
762 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
763 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
764
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
765 var widget = $.widget;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
766
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
767
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
768 /*!
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
769 * jQuery UI Position 1.13.2
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
770 * http://jqueryui.com
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
771 *
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
772 * Copyright jQuery Foundation and other contributors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
773 * Released under the MIT license.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
774 * http://jquery.org/license
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
775 *
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
776 * http://api.jqueryui.com/position/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
777 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
778
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
779 //>>label: Position
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
780 //>>group: Core
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
781 //>>description: Positions elements relative to other elements.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
782 //>>docs: http://api.jqueryui.com/position/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
783 //>>demos: http://jqueryui.com/position/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
784
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
785
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
786 ( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
787 var cachedScrollbarWidth,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
788 max = Math.max,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
789 abs = Math.abs,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
790 rhorizontal = /left|center|right/,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
791 rvertical = /top|center|bottom/,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
792 roffset = /[\+\-]\d+(\.[\d]+)?%?/,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
793 rposition = /^\w+/,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
794 rpercent = /%$/,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
795 _position = $.fn.position;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
796
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
797 function getOffsets( offsets, width, height ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
798 return [
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
799 parseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
800 parseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
801 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
802 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
803
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
804 function parseCss( element, property ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
805 return parseInt( $.css( element, property ), 10 ) || 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
806 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
807
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
808 function isWindow( obj ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
809 return obj != null && obj === obj.window;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
810 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
811
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
812 function getDimensions( elem ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
813 var raw = elem[ 0 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
814 if ( raw.nodeType === 9 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
815 return {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
816 width: elem.width(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
817 height: elem.height(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
818 offset: { top: 0, left: 0 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
819 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
820 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
821 if ( isWindow( raw ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
822 return {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
823 width: elem.width(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
824 height: elem.height(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
825 offset: { top: elem.scrollTop(), left: elem.scrollLeft() }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
826 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
827 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
828 if ( raw.preventDefault ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
829 return {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
830 width: 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
831 height: 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
832 offset: { top: raw.pageY, left: raw.pageX }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
833 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
834 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
835 return {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
836 width: elem.outerWidth(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
837 height: elem.outerHeight(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
838 offset: elem.offset()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
839 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
840 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
841
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
842 $.position = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
843 scrollbarWidth: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
844 if ( cachedScrollbarWidth !== undefined ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
845 return cachedScrollbarWidth;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
846 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
847 var w1, w2,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
848 div = $( "<div style=" +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
849 "'display:block;position:absolute;width:200px;height:200px;overflow:hidden;'>" +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
850 "<div style='height:300px;width:auto;'></div></div>" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
851 innerDiv = div.children()[ 0 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
852
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
853 $( "body" ).append( div );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
854 w1 = innerDiv.offsetWidth;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
855 div.css( "overflow", "scroll" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
856
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
857 w2 = innerDiv.offsetWidth;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
858
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
859 if ( w1 === w2 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
860 w2 = div[ 0 ].clientWidth;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
861 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
862
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
863 div.remove();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
864
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
865 return ( cachedScrollbarWidth = w1 - w2 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
866 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
867 getScrollInfo: function( within ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
868 var overflowX = within.isWindow || within.isDocument ? "" :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
869 within.element.css( "overflow-x" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
870 overflowY = within.isWindow || within.isDocument ? "" :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
871 within.element.css( "overflow-y" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
872 hasOverflowX = overflowX === "scroll" ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
873 ( overflowX === "auto" && within.width < within.element[ 0 ].scrollWidth ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
874 hasOverflowY = overflowY === "scroll" ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
875 ( overflowY === "auto" && within.height < within.element[ 0 ].scrollHeight );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
876 return {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
877 width: hasOverflowY ? $.position.scrollbarWidth() : 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
878 height: hasOverflowX ? $.position.scrollbarWidth() : 0
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
879 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
880 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
881 getWithinInfo: function( element ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
882 var withinElement = $( element || window ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
883 isElemWindow = isWindow( withinElement[ 0 ] ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
884 isDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
885 hasOffset = !isElemWindow && !isDocument;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
886 return {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
887 element: withinElement,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
888 isWindow: isElemWindow,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
889 isDocument: isDocument,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
890 offset: hasOffset ? $( element ).offset() : { left: 0, top: 0 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
891 scrollLeft: withinElement.scrollLeft(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
892 scrollTop: withinElement.scrollTop(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
893 width: withinElement.outerWidth(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
894 height: withinElement.outerHeight()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
895 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
896 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
897 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
898
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
899 $.fn.position = function( options ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
900 if ( !options || !options.of ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
901 return _position.apply( this, arguments );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
902 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
903
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
904 // Make a copy, we don't want to modify arguments
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
905 options = $.extend( {}, options );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
906
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
907 var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
908
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
909 // Make sure string options are treated as CSS selectors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
910 target = typeof options.of === "string" ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
911 $( document ).find( options.of ) :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
912 $( options.of ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
913
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
914 within = $.position.getWithinInfo( options.within ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
915 scrollInfo = $.position.getScrollInfo( within ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
916 collision = ( options.collision || "flip" ).split( " " ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
917 offsets = {};
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
918
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
919 dimensions = getDimensions( target );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
920 if ( target[ 0 ].preventDefault ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
921
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
922 // Force left top to allow flipping
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
923 options.at = "left top";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
924 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
925 targetWidth = dimensions.width;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
926 targetHeight = dimensions.height;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
927 targetOffset = dimensions.offset;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
928
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
929 // Clone to reuse original targetOffset later
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
930 basePosition = $.extend( {}, targetOffset );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
931
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
932 // Force my and at to have valid horizontal and vertical positions
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
933 // if a value is missing or invalid, it will be converted to center
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
934 $.each( [ "my", "at" ], function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
935 var pos = ( options[ this ] || "" ).split( " " ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
936 horizontalOffset,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
937 verticalOffset;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
938
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
939 if ( pos.length === 1 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
940 pos = rhorizontal.test( pos[ 0 ] ) ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
941 pos.concat( [ "center" ] ) :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
942 rvertical.test( pos[ 0 ] ) ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
943 [ "center" ].concat( pos ) :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
944 [ "center", "center" ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
945 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
946 pos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : "center";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
947 pos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : "center";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
948
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
949 // Calculate offsets
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
950 horizontalOffset = roffset.exec( pos[ 0 ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
951 verticalOffset = roffset.exec( pos[ 1 ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
952 offsets[ this ] = [
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
953 horizontalOffset ? horizontalOffset[ 0 ] : 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
954 verticalOffset ? verticalOffset[ 0 ] : 0
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
955 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
956
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
957 // Reduce to just the positions without the offsets
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
958 options[ this ] = [
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
959 rposition.exec( pos[ 0 ] )[ 0 ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
960 rposition.exec( pos[ 1 ] )[ 0 ]
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
961 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
962 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
963
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
964 // Normalize collision option
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
965 if ( collision.length === 1 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
966 collision[ 1 ] = collision[ 0 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
967 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
968
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
969 if ( options.at[ 0 ] === "right" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
970 basePosition.left += targetWidth;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
971 } else if ( options.at[ 0 ] === "center" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
972 basePosition.left += targetWidth / 2;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
973 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
974
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
975 if ( options.at[ 1 ] === "bottom" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
976 basePosition.top += targetHeight;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
977 } else if ( options.at[ 1 ] === "center" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
978 basePosition.top += targetHeight / 2;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
979 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
980
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
981 atOffset = getOffsets( offsets.at, targetWidth, targetHeight );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
982 basePosition.left += atOffset[ 0 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
983 basePosition.top += atOffset[ 1 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
984
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
985 return this.each( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
986 var collisionPosition, using,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
987 elem = $( this ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
988 elemWidth = elem.outerWidth(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
989 elemHeight = elem.outerHeight(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
990 marginLeft = parseCss( this, "marginLeft" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
991 marginTop = parseCss( this, "marginTop" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
992 collisionWidth = elemWidth + marginLeft + parseCss( this, "marginRight" ) +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
993 scrollInfo.width,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
994 collisionHeight = elemHeight + marginTop + parseCss( this, "marginBottom" ) +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
995 scrollInfo.height,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
996 position = $.extend( {}, basePosition ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
997 myOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
998
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
999 if ( options.my[ 0 ] === "right" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1000 position.left -= elemWidth;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1001 } else if ( options.my[ 0 ] === "center" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1002 position.left -= elemWidth / 2;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1003 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1004
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1005 if ( options.my[ 1 ] === "bottom" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1006 position.top -= elemHeight;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1007 } else if ( options.my[ 1 ] === "center" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1008 position.top -= elemHeight / 2;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1009 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1010
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1011 position.left += myOffset[ 0 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1012 position.top += myOffset[ 1 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1013
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1014 collisionPosition = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1015 marginLeft: marginLeft,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1016 marginTop: marginTop
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1017 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1018
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1019 $.each( [ "left", "top" ], function( i, dir ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1020 if ( $.ui.position[ collision[ i ] ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1021 $.ui.position[ collision[ i ] ][ dir ]( position, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1022 targetWidth: targetWidth,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1023 targetHeight: targetHeight,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1024 elemWidth: elemWidth,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1025 elemHeight: elemHeight,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1026 collisionPosition: collisionPosition,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1027 collisionWidth: collisionWidth,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1028 collisionHeight: collisionHeight,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1029 offset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1030 my: options.my,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1031 at: options.at,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1032 within: within,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1033 elem: elem
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1034 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1035 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1036 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1037
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1038 if ( options.using ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1039
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1040 // Adds feedback as second argument to using callback, if present
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1041 using = function( props ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1042 var left = targetOffset.left - position.left,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1043 right = left + targetWidth - elemWidth,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1044 top = targetOffset.top - position.top,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1045 bottom = top + targetHeight - elemHeight,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1046 feedback = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1047 target: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1048 element: target,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1049 left: targetOffset.left,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1050 top: targetOffset.top,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1051 width: targetWidth,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1052 height: targetHeight
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1053 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1054 element: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1055 element: elem,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1056 left: position.left,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1057 top: position.top,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1058 width: elemWidth,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1059 height: elemHeight
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1060 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1061 horizontal: right < 0 ? "left" : left > 0 ? "right" : "center",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1062 vertical: bottom < 0 ? "top" : top > 0 ? "bottom" : "middle"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1063 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1064 if ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1065 feedback.horizontal = "center";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1066 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1067 if ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1068 feedback.vertical = "middle";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1069 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1070 if ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1071 feedback.important = "horizontal";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1072 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1073 feedback.important = "vertical";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1074 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1075 options.using.call( this, props, feedback );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1076 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1077 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1078
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1079 elem.offset( $.extend( position, { using: using } ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1080 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1081 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1082
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1083 $.ui.position = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1084 fit: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1085 left: function( position, data ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1086 var within = data.within,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1087 withinOffset = within.isWindow ? within.scrollLeft : within.offset.left,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1088 outerWidth = within.width,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1089 collisionPosLeft = position.left - data.collisionPosition.marginLeft,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1090 overLeft = withinOffset - collisionPosLeft,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1091 overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1092 newOverRight;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1093
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1094 // Element is wider than within
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1095 if ( data.collisionWidth > outerWidth ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1096
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1097 // Element is initially over the left side of within
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1098 if ( overLeft > 0 && overRight <= 0 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1099 newOverRight = position.left + overLeft + data.collisionWidth - outerWidth -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1100 withinOffset;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1101 position.left += overLeft - newOverRight;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1102
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1103 // Element is initially over right side of within
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1104 } else if ( overRight > 0 && overLeft <= 0 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1105 position.left = withinOffset;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1106
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1107 // Element is initially over both left and right sides of within
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1108 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1109 if ( overLeft > overRight ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1110 position.left = withinOffset + outerWidth - data.collisionWidth;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1111 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1112 position.left = withinOffset;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1113 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1114 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1115
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1116 // Too far left -> align with left edge
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1117 } else if ( overLeft > 0 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1118 position.left += overLeft;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1119
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1120 // Too far right -> align with right edge
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1121 } else if ( overRight > 0 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1122 position.left -= overRight;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1123
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1124 // Adjust based on position and margin
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1125 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1126 position.left = max( position.left - collisionPosLeft, position.left );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1127 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1128 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1129 top: function( position, data ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1130 var within = data.within,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1131 withinOffset = within.isWindow ? within.scrollTop : within.offset.top,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1132 outerHeight = data.within.height,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1133 collisionPosTop = position.top - data.collisionPosition.marginTop,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1134 overTop = withinOffset - collisionPosTop,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1135 overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1136 newOverBottom;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1137
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1138 // Element is taller than within
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1139 if ( data.collisionHeight > outerHeight ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1140
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1141 // Element is initially over the top of within
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1142 if ( overTop > 0 && overBottom <= 0 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1143 newOverBottom = position.top + overTop + data.collisionHeight - outerHeight -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1144 withinOffset;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1145 position.top += overTop - newOverBottom;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1146
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1147 // Element is initially over bottom of within
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1148 } else if ( overBottom > 0 && overTop <= 0 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1149 position.top = withinOffset;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1150
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1151 // Element is initially over both top and bottom of within
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1152 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1153 if ( overTop > overBottom ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1154 position.top = withinOffset + outerHeight - data.collisionHeight;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1155 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1156 position.top = withinOffset;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1157 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1158 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1159
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1160 // Too far up -> align with top
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1161 } else if ( overTop > 0 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1162 position.top += overTop;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1163
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1164 // Too far down -> align with bottom edge
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1165 } else if ( overBottom > 0 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1166 position.top -= overBottom;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1167
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1168 // Adjust based on position and margin
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1169 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1170 position.top = max( position.top - collisionPosTop, position.top );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1171 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1172 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1173 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1174 flip: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1175 left: function( position, data ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1176 var within = data.within,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1177 withinOffset = within.offset.left + within.scrollLeft,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1178 outerWidth = within.width,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1179 offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1180 collisionPosLeft = position.left - data.collisionPosition.marginLeft,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1181 overLeft = collisionPosLeft - offsetLeft,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1182 overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1183 myOffset = data.my[ 0 ] === "left" ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1184 -data.elemWidth :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1185 data.my[ 0 ] === "right" ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1186 data.elemWidth :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1187 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1188 atOffset = data.at[ 0 ] === "left" ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1189 data.targetWidth :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1190 data.at[ 0 ] === "right" ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1191 -data.targetWidth :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1192 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1193 offset = -2 * data.offset[ 0 ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1194 newOverRight,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1195 newOverLeft;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1196
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1197 if ( overLeft < 0 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1198 newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1199 outerWidth - withinOffset;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1200 if ( newOverRight < 0 || newOverRight < abs( overLeft ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1201 position.left += myOffset + atOffset + offset;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1202 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1203 } else if ( overRight > 0 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1204 newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1205 atOffset + offset - offsetLeft;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1206 if ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1207 position.left += myOffset + atOffset + offset;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1208 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1209 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1210 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1211 top: function( position, data ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1212 var within = data.within,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1213 withinOffset = within.offset.top + within.scrollTop,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1214 outerHeight = within.height,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1215 offsetTop = within.isWindow ? within.scrollTop : within.offset.top,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1216 collisionPosTop = position.top - data.collisionPosition.marginTop,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1217 overTop = collisionPosTop - offsetTop,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1218 overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1219 top = data.my[ 1 ] === "top",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1220 myOffset = top ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1221 -data.elemHeight :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1222 data.my[ 1 ] === "bottom" ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1223 data.elemHeight :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1224 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1225 atOffset = data.at[ 1 ] === "top" ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1226 data.targetHeight :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1227 data.at[ 1 ] === "bottom" ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1228 -data.targetHeight :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1229 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1230 offset = -2 * data.offset[ 1 ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1231 newOverTop,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1232 newOverBottom;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1233 if ( overTop < 0 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1234 newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1235 outerHeight - withinOffset;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1236 if ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1237 position.top += myOffset + atOffset + offset;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1238 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1239 } else if ( overBottom > 0 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1240 newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1241 offset - offsetTop;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1242 if ( newOverTop > 0 || abs( newOverTop ) < overBottom ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1243 position.top += myOffset + atOffset + offset;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1244 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1245 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1246 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1247 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1248 flipfit: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1249 left: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1250 $.ui.position.flip.left.apply( this, arguments );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1251 $.ui.position.fit.left.apply( this, arguments );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1252 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1253 top: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1254 $.ui.position.flip.top.apply( this, arguments );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1255 $.ui.position.fit.top.apply( this, arguments );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1256 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1257 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1258 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1259
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1260 } )();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1261
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1262 var position = $.ui.position;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1263
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1264
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1265 /*!
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1266 * jQuery UI :data 1.13.2
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1267 * http://jqueryui.com
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1268 *
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1269 * Copyright jQuery Foundation and other contributors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1270 * Released under the MIT license.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1271 * http://jquery.org/license
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1272 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1273
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1274 //>>label: :data Selector
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1275 //>>group: Core
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1276 //>>description: Selects elements which have data stored under the specified key.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1277 //>>docs: http://api.jqueryui.com/data-selector/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1278
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1279
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1280 var data = $.extend( $.expr.pseudos, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1281 data: $.expr.createPseudo ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1282 $.expr.createPseudo( function( dataName ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1283 return function( elem ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1284 return !!$.data( elem, dataName );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1285 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1286 } ) :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1287
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1288 // Support: jQuery <1.8
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1289 function( elem, i, match ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1290 return !!$.data( elem, match[ 3 ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1291 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1292 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1293
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1294 /*!
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1295 * jQuery UI Disable Selection 1.13.2
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1296 * http://jqueryui.com
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1297 *
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1298 * Copyright jQuery Foundation and other contributors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1299 * Released under the MIT license.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1300 * http://jquery.org/license
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1301 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1302
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1303 //>>label: disableSelection
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1304 //>>group: Core
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1305 //>>description: Disable selection of text content within the set of matched elements.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1306 //>>docs: http://api.jqueryui.com/disableSelection/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1307
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1308 // This file is deprecated
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1309
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1310 var disableSelection = $.fn.extend( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1311 disableSelection: ( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1312 var eventType = "onselectstart" in document.createElement( "div" ) ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1313 "selectstart" :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1314 "mousedown";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1315
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1316 return function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1317 return this.on( eventType + ".ui-disableSelection", function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1318 event.preventDefault();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1319 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1320 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1321 } )(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1322
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1323 enableSelection: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1324 return this.off( ".ui-disableSelection" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1325 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1326 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1327
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1328
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1329
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1330 // Create a local jQuery because jQuery Color relies on it and the
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1331 // global may not exist with AMD and a custom build (#10199).
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1332 // This module is a noop if used as a regular AMD module.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1333 // eslint-disable-next-line no-unused-vars
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1334 var jQuery = $;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1335
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1336
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1337 /*!
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1338 * jQuery Color Animations v2.2.0
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1339 * https://github.com/jquery/jquery-color
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1340 *
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1341 * Copyright OpenJS Foundation and other contributors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1342 * Released under the MIT license.
1670
6fd889391d2c Added a Speed Dial to the web browser including the capability to select the first ten pages by pressing Meta+1 to Meta+0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1343 * http://jquery.org/license
6fd889391d2c Added a Speed Dial to the web browser including the capability to select the first ten pages by pressing Meta+1 to Meta+0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1344 *
9678
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1345 * Date: Sun May 10 09:02:36 2020 +0200
1670
6fd889391d2c Added a Speed Dial to the web browser including the capability to select the first ten pages by pressing Meta+1 to Meta+0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1346 */
9678
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1347
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1348
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1349
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1350 var stepHooks = "backgroundColor borderBottomColor borderLeftColor borderRightColor " +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1351 "borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1352
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1353 class2type = {},
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1354 toString = class2type.toString,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1355
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1356 // plusequals test for += 100 -= 100
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1357 rplusequals = /^([\-+])=\s*(\d+\.?\d*)/,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1358
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1359 // a set of RE's that can match strings and generate color tuples.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1360 stringParsers = [ {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1361 re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1362 parse: function( execResult ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1363 return [
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1364 execResult[ 1 ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1365 execResult[ 2 ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1366 execResult[ 3 ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1367 execResult[ 4 ]
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1368 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1369 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1370 }, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1371 re: /rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1372 parse: function( execResult ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1373 return [
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1374 execResult[ 1 ] * 2.55,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1375 execResult[ 2 ] * 2.55,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1376 execResult[ 3 ] * 2.55,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1377 execResult[ 4 ]
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1378 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1379 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1380 }, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1381
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1382 // this regex ignores A-F because it's compared against an already lowercased string
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1383 re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})?/,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1384 parse: function( execResult ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1385 return [
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1386 parseInt( execResult[ 1 ], 16 ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1387 parseInt( execResult[ 2 ], 16 ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1388 parseInt( execResult[ 3 ], 16 ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1389 execResult[ 4 ] ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1390 ( parseInt( execResult[ 4 ], 16 ) / 255 ).toFixed( 2 ) :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1391 1
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1392 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1393 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1394 }, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1395
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1396 // this regex ignores A-F because it's compared against an already lowercased string
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1397 re: /#([a-f0-9])([a-f0-9])([a-f0-9])([a-f0-9])?/,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1398 parse: function( execResult ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1399 return [
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1400 parseInt( execResult[ 1 ] + execResult[ 1 ], 16 ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1401 parseInt( execResult[ 2 ] + execResult[ 2 ], 16 ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1402 parseInt( execResult[ 3 ] + execResult[ 3 ], 16 ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1403 execResult[ 4 ] ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1404 ( parseInt( execResult[ 4 ] + execResult[ 4 ], 16 ) / 255 )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1405 .toFixed( 2 ) :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1406 1
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1407 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1408 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1409 }, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1410 re: /hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1411 space: "hsla",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1412 parse: function( execResult ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1413 return [
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1414 execResult[ 1 ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1415 execResult[ 2 ] / 100,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1416 execResult[ 3 ] / 100,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1417 execResult[ 4 ]
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1418 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1419 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1420 } ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1421
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1422 // jQuery.Color( )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1423 color = jQuery.Color = function( color, green, blue, alpha ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1424 return new jQuery.Color.fn.parse( color, green, blue, alpha );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1425 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1426 spaces = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1427 rgba: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1428 props: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1429 red: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1430 idx: 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1431 type: "byte"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1432 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1433 green: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1434 idx: 1,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1435 type: "byte"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1436 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1437 blue: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1438 idx: 2,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1439 type: "byte"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1440 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1441 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1442 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1443
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1444 hsla: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1445 props: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1446 hue: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1447 idx: 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1448 type: "degrees"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1449 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1450 saturation: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1451 idx: 1,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1452 type: "percent"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1453 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1454 lightness: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1455 idx: 2,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1456 type: "percent"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1457 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1458 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1459 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1460 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1461 propTypes = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1462 "byte": {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1463 floor: true,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1464 max: 255
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1465 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1466 "percent": {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1467 max: 1
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1468 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1469 "degrees": {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1470 mod: 360,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1471 floor: true
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1472 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1473 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1474 support = color.support = {},
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1475
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1476 // element for support tests
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1477 supportElem = jQuery( "<p>" )[ 0 ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1478
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1479 // colors = jQuery.Color.names
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1480 colors,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1481
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1482 // local aliases of functions called often
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1483 each = jQuery.each;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1484
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1485 // determine rgba support immediately
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1486 supportElem.style.cssText = "background-color:rgba(1,1,1,.5)";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1487 support.rgba = supportElem.style.backgroundColor.indexOf( "rgba" ) > -1;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1488
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1489 // define cache name and alpha properties
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1490 // for rgba and hsla spaces
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1491 each( spaces, function( spaceName, space ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1492 space.cache = "_" + spaceName;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1493 space.props.alpha = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1494 idx: 3,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1495 type: "percent",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1496 def: 1
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1497 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1498 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1499
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1500 // Populate the class2type map
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1501 jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1502 function( _i, name ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1503 class2type[ "[object " + name + "]" ] = name.toLowerCase();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1504 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1505
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1506 function getType( obj ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1507 if ( obj == null ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1508 return obj + "";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1509 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1510
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1511 return typeof obj === "object" ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1512 class2type[ toString.call( obj ) ] || "object" :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1513 typeof obj;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1514 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1515
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1516 function clamp( value, prop, allowEmpty ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1517 var type = propTypes[ prop.type ] || {};
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1518
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1519 if ( value == null ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1520 return ( allowEmpty || !prop.def ) ? null : prop.def;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1521 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1522
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1523 // ~~ is an short way of doing floor for positive numbers
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1524 value = type.floor ? ~~value : parseFloat( value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1525
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1526 // IE will pass in empty strings as value for alpha,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1527 // which will hit this case
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1528 if ( isNaN( value ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1529 return prop.def;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1530 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1531
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1532 if ( type.mod ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1533
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1534 // we add mod before modding to make sure that negatives values
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1535 // get converted properly: -10 -> 350
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1536 return ( value + type.mod ) % type.mod;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1537 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1538
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1539 // for now all property types without mod have min and max
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1540 return Math.min( type.max, Math.max( 0, value ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1541 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1542
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1543 function stringParse( string ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1544 var inst = color(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1545 rgba = inst._rgba = [];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1546
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1547 string = string.toLowerCase();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1548
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1549 each( stringParsers, function( _i, parser ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1550 var parsed,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1551 match = parser.re.exec( string ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1552 values = match && parser.parse( match ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1553 spaceName = parser.space || "rgba";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1554
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1555 if ( values ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1556 parsed = inst[ spaceName ]( values );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1557
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1558 // if this was an rgba parse the assignment might happen twice
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1559 // oh well....
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1560 inst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1561 rgba = inst._rgba = parsed._rgba;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1562
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1563 // exit each( stringParsers ) here because we matched
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1564 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1565 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1566 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1567
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1568 // Found a stringParser that handled it
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1569 if ( rgba.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1570
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1571 // if this came from a parsed string, force "transparent" when alpha is 0
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1572 // chrome, (and maybe others) return "transparent" as rgba(0,0,0,0)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1573 if ( rgba.join() === "0,0,0,0" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1574 jQuery.extend( rgba, colors.transparent );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1575 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1576 return inst;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1577 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1578
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1579 // named colors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1580 return colors[ string ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1581 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1582
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1583 color.fn = jQuery.extend( color.prototype, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1584 parse: function( red, green, blue, alpha ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1585 if ( red === undefined ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1586 this._rgba = [ null, null, null, null ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1587 return this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1588 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1589 if ( red.jquery || red.nodeType ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1590 red = jQuery( red ).css( green );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1591 green = undefined;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1592 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1593
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1594 var inst = this,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1595 type = getType( red ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1596 rgba = this._rgba = [];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1597
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1598 // more than 1 argument specified - assume ( red, green, blue, alpha )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1599 if ( green !== undefined ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1600 red = [ red, green, blue, alpha ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1601 type = "array";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1602 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1603
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1604 if ( type === "string" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1605 return this.parse( stringParse( red ) || colors._default );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1606 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1607
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1608 if ( type === "array" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1609 each( spaces.rgba.props, function( _key, prop ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1610 rgba[ prop.idx ] = clamp( red[ prop.idx ], prop );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1611 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1612 return this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1613 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1614
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1615 if ( type === "object" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1616 if ( red instanceof color ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1617 each( spaces, function( _spaceName, space ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1618 if ( red[ space.cache ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1619 inst[ space.cache ] = red[ space.cache ].slice();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1620 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1621 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1622 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1623 each( spaces, function( _spaceName, space ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1624 var cache = space.cache;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1625 each( space.props, function( key, prop ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1626
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1627 // if the cache doesn't exist, and we know how to convert
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1628 if ( !inst[ cache ] && space.to ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1629
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1630 // if the value was null, we don't need to copy it
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1631 // if the key was alpha, we don't need to copy it either
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1632 if ( key === "alpha" || red[ key ] == null ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1633 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1634 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1635 inst[ cache ] = space.to( inst._rgba );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1636 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1637
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1638 // this is the only case where we allow nulls for ALL properties.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1639 // call clamp with alwaysAllowEmpty
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1640 inst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1641 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1642
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1643 // everything defined but alpha?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1644 if ( inst[ cache ] && jQuery.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1645
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1646 // use the default of 1
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1647 if ( inst[ cache ][ 3 ] == null ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1648 inst[ cache ][ 3 ] = 1;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1649 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1650
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1651 if ( space.from ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1652 inst._rgba = space.from( inst[ cache ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1653 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1654 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1655 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1656 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1657 return this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1658 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1659 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1660 is: function( compare ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1661 var is = color( compare ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1662 same = true,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1663 inst = this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1664
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1665 each( spaces, function( _, space ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1666 var localCache,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1667 isCache = is[ space.cache ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1668 if ( isCache ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1669 localCache = inst[ space.cache ] || space.to && space.to( inst._rgba ) || [];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1670 each( space.props, function( _, prop ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1671 if ( isCache[ prop.idx ] != null ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1672 same = ( isCache[ prop.idx ] === localCache[ prop.idx ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1673 return same;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1674 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1675 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1676 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1677 return same;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1678 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1679 return same;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1680 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1681 _space: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1682 var used = [],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1683 inst = this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1684 each( spaces, function( spaceName, space ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1685 if ( inst[ space.cache ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1686 used.push( spaceName );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1687 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1688 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1689 return used.pop();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1690 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1691 transition: function( other, distance ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1692 var end = color( other ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1693 spaceName = end._space(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1694 space = spaces[ spaceName ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1695 startColor = this.alpha() === 0 ? color( "transparent" ) : this,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1696 start = startColor[ space.cache ] || space.to( startColor._rgba ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1697 result = start.slice();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1698
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1699 end = end[ space.cache ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1700 each( space.props, function( _key, prop ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1701 var index = prop.idx,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1702 startValue = start[ index ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1703 endValue = end[ index ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1704 type = propTypes[ prop.type ] || {};
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1705
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1706 // if null, don't override start value
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1707 if ( endValue === null ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1708 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1709 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1710
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1711 // if null - use end
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1712 if ( startValue === null ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1713 result[ index ] = endValue;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1714 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1715 if ( type.mod ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1716 if ( endValue - startValue > type.mod / 2 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1717 startValue += type.mod;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1718 } else if ( startValue - endValue > type.mod / 2 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1719 startValue -= type.mod;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1720 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1721 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1722 result[ index ] = clamp( ( endValue - startValue ) * distance + startValue, prop );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1723 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1724 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1725 return this[ spaceName ]( result );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1726 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1727 blend: function( opaque ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1728
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1729 // if we are already opaque - return ourself
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1730 if ( this._rgba[ 3 ] === 1 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1731 return this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1732 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1733
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1734 var rgb = this._rgba.slice(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1735 a = rgb.pop(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1736 blend = color( opaque )._rgba;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1737
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1738 return color( jQuery.map( rgb, function( v, i ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1739 return ( 1 - a ) * blend[ i ] + a * v;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1740 } ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1741 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1742 toRgbaString: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1743 var prefix = "rgba(",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1744 rgba = jQuery.map( this._rgba, function( v, i ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1745 if ( v != null ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1746 return v;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1747 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1748 return i > 2 ? 1 : 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1749 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1750
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1751 if ( rgba[ 3 ] === 1 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1752 rgba.pop();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1753 prefix = "rgb(";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1754 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1755
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1756 return prefix + rgba.join() + ")";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1757 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1758 toHslaString: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1759 var prefix = "hsla(",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1760 hsla = jQuery.map( this.hsla(), function( v, i ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1761 if ( v == null ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1762 v = i > 2 ? 1 : 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1763 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1764
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1765 // catch 1 and 2
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1766 if ( i && i < 3 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1767 v = Math.round( v * 100 ) + "%";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1768 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1769 return v;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1770 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1771
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1772 if ( hsla[ 3 ] === 1 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1773 hsla.pop();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1774 prefix = "hsl(";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1775 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1776 return prefix + hsla.join() + ")";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1777 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1778 toHexString: function( includeAlpha ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1779 var rgba = this._rgba.slice(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1780 alpha = rgba.pop();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1781
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1782 if ( includeAlpha ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1783 rgba.push( ~~( alpha * 255 ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1784 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1785
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1786 return "#" + jQuery.map( rgba, function( v ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1787
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1788 // default to 0 when nulls exist
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1789 v = ( v || 0 ).toString( 16 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1790 return v.length === 1 ? "0" + v : v;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1791 } ).join( "" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1792 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1793 toString: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1794 return this._rgba[ 3 ] === 0 ? "transparent" : this.toRgbaString();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1795 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1796 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1797 color.fn.parse.prototype = color.fn;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1798
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1799 // hsla conversions adapted from:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1800 // https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1801
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1802 function hue2rgb( p, q, h ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1803 h = ( h + 1 ) % 1;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1804 if ( h * 6 < 1 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1805 return p + ( q - p ) * h * 6;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1806 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1807 if ( h * 2 < 1 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1808 return q;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1809 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1810 if ( h * 3 < 2 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1811 return p + ( q - p ) * ( ( 2 / 3 ) - h ) * 6;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1812 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1813 return p;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1814 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1815
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1816 spaces.hsla.to = function( rgba ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1817 if ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1818 return [ null, null, null, rgba[ 3 ] ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1819 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1820 var r = rgba[ 0 ] / 255,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1821 g = rgba[ 1 ] / 255,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1822 b = rgba[ 2 ] / 255,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1823 a = rgba[ 3 ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1824 max = Math.max( r, g, b ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1825 min = Math.min( r, g, b ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1826 diff = max - min,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1827 add = max + min,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1828 l = add * 0.5,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1829 h, s;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1830
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1831 if ( min === max ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1832 h = 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1833 } else if ( r === max ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1834 h = ( 60 * ( g - b ) / diff ) + 360;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1835 } else if ( g === max ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1836 h = ( 60 * ( b - r ) / diff ) + 120;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1837 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1838 h = ( 60 * ( r - g ) / diff ) + 240;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1839 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1840
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1841 // chroma (diff) == 0 means greyscale which, by definition, saturation = 0%
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1842 // otherwise, saturation is based on the ratio of chroma (diff) to lightness (add)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1843 if ( diff === 0 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1844 s = 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1845 } else if ( l <= 0.5 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1846 s = diff / add;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1847 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1848 s = diff / ( 2 - add );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1849 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1850 return [ Math.round( h ) % 360, s, l, a == null ? 1 : a ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1851 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1852
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1853 spaces.hsla.from = function( hsla ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1854 if ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1855 return [ null, null, null, hsla[ 3 ] ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1856 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1857 var h = hsla[ 0 ] / 360,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1858 s = hsla[ 1 ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1859 l = hsla[ 2 ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1860 a = hsla[ 3 ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1861 q = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1862 p = 2 * l - q;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1863
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1864 return [
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1865 Math.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1866 Math.round( hue2rgb( p, q, h ) * 255 ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1867 Math.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1868 a
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1869 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1870 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1871
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1872
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1873 each( spaces, function( spaceName, space ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1874 var props = space.props,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1875 cache = space.cache,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1876 to = space.to,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1877 from = space.from;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1878
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1879 // makes rgba() and hsla()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1880 color.fn[ spaceName ] = function( value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1881
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1882 // generate a cache for this space if it doesn't exist
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1883 if ( to && !this[ cache ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1884 this[ cache ] = to( this._rgba );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1885 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1886 if ( value === undefined ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1887 return this[ cache ].slice();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1888 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1889
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1890 var ret,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1891 type = getType( value ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1892 arr = ( type === "array" || type === "object" ) ? value : arguments,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1893 local = this[ cache ].slice();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1894
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1895 each( props, function( key, prop ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1896 var val = arr[ type === "object" ? key : prop.idx ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1897 if ( val == null ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1898 val = local[ prop.idx ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1899 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1900 local[ prop.idx ] = clamp( val, prop );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1901 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1902
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1903 if ( from ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1904 ret = color( from( local ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1905 ret[ cache ] = local;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1906 return ret;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1907 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1908 return color( local );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1909 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1910 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1911
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1912 // makes red() green() blue() alpha() hue() saturation() lightness()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1913 each( props, function( key, prop ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1914
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1915 // alpha is included in more than one space
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1916 if ( color.fn[ key ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1917 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1918 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1919 color.fn[ key ] = function( value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1920 var local, cur, match, fn,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1921 vtype = getType( value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1922
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1923 if ( key === "alpha" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1924 fn = this._hsla ? "hsla" : "rgba";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1925 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1926 fn = spaceName;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1927 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1928 local = this[ fn ]();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1929 cur = local[ prop.idx ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1930
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1931 if ( vtype === "undefined" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1932 return cur;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1933 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1934
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1935 if ( vtype === "function" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1936 value = value.call( this, cur );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1937 vtype = getType( value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1938 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1939 if ( value == null && prop.empty ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1940 return this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1941 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1942 if ( vtype === "string" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1943 match = rplusequals.exec( value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1944 if ( match ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1945 value = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === "+" ? 1 : -1 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1946 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1947 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1948 local[ prop.idx ] = value;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1949 return this[ fn ]( local );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1950 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1951 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1952 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1953
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1954 // add cssHook and .fx.step function for each named hook.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1955 // accept a space separated string of properties
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1956 color.hook = function( hook ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1957 var hooks = hook.split( " " );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1958 each( hooks, function( _i, hook ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1959 jQuery.cssHooks[ hook ] = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1960 set: function( elem, value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1961 var parsed, curElem,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1962 backgroundColor = "";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1963
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1964 if ( value !== "transparent" && ( getType( value ) !== "string" || ( parsed = stringParse( value ) ) ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1965 value = color( parsed || value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1966 if ( !support.rgba && value._rgba[ 3 ] !== 1 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1967 curElem = hook === "backgroundColor" ? elem.parentNode : elem;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1968 while (
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1969 ( backgroundColor === "" || backgroundColor === "transparent" ) &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1970 curElem && curElem.style
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1971 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1972 try {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1973 backgroundColor = jQuery.css( curElem, "backgroundColor" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1974 curElem = curElem.parentNode;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1975 } catch ( e ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1976 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1977 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1978
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1979 value = value.blend( backgroundColor && backgroundColor !== "transparent" ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1980 backgroundColor :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1981 "_default" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1982 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1983
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1984 value = value.toRgbaString();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1985 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1986 try {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1987 elem.style[ hook ] = value;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1988 } catch ( e ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1989
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1990 // wrapped to prevent IE from throwing errors on "invalid" values like 'auto' or 'inherit'
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1991 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1992 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1993 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1994 jQuery.fx.step[ hook ] = function( fx ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1995 if ( !fx.colorInit ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1996 fx.start = color( fx.elem, hook );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1997 fx.end = color( fx.end );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1998 fx.colorInit = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1999 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2000 jQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2001 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2002 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2003
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2004 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2005
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2006 color.hook( stepHooks );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2007
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2008 jQuery.cssHooks.borderColor = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2009 expand: function( value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2010 var expanded = {};
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2011
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2012 each( [ "Top", "Right", "Bottom", "Left" ], function( _i, part ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2013 expanded[ "border" + part + "Color" ] = value;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2014 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2015 return expanded;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2016 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2017 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2018
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2019 // Basic color names only.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2020 // Usage of any of the other color names requires adding yourself or including
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2021 // jquery.color.svg-names.js.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2022 colors = jQuery.Color.names = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2023
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2024 // 4.1. Basic color keywords
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2025 aqua: "#00ffff",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2026 black: "#000000",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2027 blue: "#0000ff",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2028 fuchsia: "#ff00ff",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2029 gray: "#808080",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2030 green: "#008000",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2031 lime: "#00ff00",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2032 maroon: "#800000",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2033 navy: "#000080",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2034 olive: "#808000",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2035 purple: "#800080",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2036 red: "#ff0000",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2037 silver: "#c0c0c0",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2038 teal: "#008080",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2039 white: "#ffffff",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2040 yellow: "#ffff00",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2041
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2042 // 4.2.3. "transparent" color keyword
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2043 transparent: [ null, null, null, 0 ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2044
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2045 _default: "#ffffff"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2046 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2047
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2048
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2049 /*!
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2050 * jQuery UI Effects 1.13.2
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2051 * http://jqueryui.com
1670
6fd889391d2c Added a Speed Dial to the web browser including the capability to select the first ten pages by pressing Meta+1 to Meta+0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2052 *
9678
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2053 * Copyright jQuery Foundation and other contributors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2054 * Released under the MIT license.
1670
6fd889391d2c Added a Speed Dial to the web browser including the capability to select the first ten pages by pressing Meta+1 to Meta+0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2055 * http://jquery.org/license
9678
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2056 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2057
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2058 //>>label: Effects Core
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2059 //>>group: Effects
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2060 /* eslint-disable max-len */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2061 //>>description: Extends the internal jQuery effects. Includes morphing and easing. Required by all other effects.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2062 /* eslint-enable max-len */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2063 //>>docs: http://api.jqueryui.com/category/effects-core/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2064 //>>demos: http://jqueryui.com/effect/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2065
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2066
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2067 var dataSpace = "ui-effects-",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2068 dataSpaceStyle = "ui-effects-style",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2069 dataSpaceAnimated = "ui-effects-animated";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2070
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2071 $.effects = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2072 effect: {}
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2073 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2074
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2075 /******************************************************************************/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2076 /****************************** CLASS ANIMATIONS ******************************/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2077 /******************************************************************************/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2078 ( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2079
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2080 var classAnimationActions = [ "add", "remove", "toggle" ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2081 shorthandStyles = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2082 border: 1,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2083 borderBottom: 1,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2084 borderColor: 1,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2085 borderLeft: 1,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2086 borderRight: 1,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2087 borderTop: 1,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2088 borderWidth: 1,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2089 margin: 1,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2090 padding: 1
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2091 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2092
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2093 $.each(
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2094 [ "borderLeftStyle", "borderRightStyle", "borderBottomStyle", "borderTopStyle" ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2095 function( _, prop ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2096 $.fx.step[ prop ] = function( fx ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2097 if ( fx.end !== "none" && !fx.setAttr || fx.pos === 1 && !fx.setAttr ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2098 jQuery.style( fx.elem, prop, fx.end );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2099 fx.setAttr = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2100 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2101 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2102 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2103 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2104
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2105 function camelCase( string ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2106 return string.replace( /-([\da-z])/gi, function( all, letter ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2107 return letter.toUpperCase();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2108 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2109 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2110
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2111 function getElementStyles( elem ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2112 var key, len,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2113 style = elem.ownerDocument.defaultView ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2114 elem.ownerDocument.defaultView.getComputedStyle( elem, null ) :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2115 elem.currentStyle,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2116 styles = {};
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2117
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2118 if ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2119 len = style.length;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2120 while ( len-- ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2121 key = style[ len ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2122 if ( typeof style[ key ] === "string" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2123 styles[ camelCase( key ) ] = style[ key ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2124 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2125 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2126
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2127 // Support: Opera, IE <9
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2128 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2129 for ( key in style ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2130 if ( typeof style[ key ] === "string" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2131 styles[ key ] = style[ key ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2132 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2133 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2134 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2135
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2136 return styles;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2137 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2138
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2139 function styleDifference( oldStyle, newStyle ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2140 var diff = {},
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2141 name, value;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2142
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2143 for ( name in newStyle ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2144 value = newStyle[ name ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2145 if ( oldStyle[ name ] !== value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2146 if ( !shorthandStyles[ name ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2147 if ( $.fx.step[ name ] || !isNaN( parseFloat( value ) ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2148 diff[ name ] = value;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2149 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2150 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2151 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2152 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2153
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2154 return diff;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2155 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2156
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2157 // Support: jQuery <1.8
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2158 if ( !$.fn.addBack ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2159 $.fn.addBack = function( selector ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2160 return this.add( selector == null ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2161 this.prevObject : this.prevObject.filter( selector )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2162 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2163 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2164 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2165
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2166 $.effects.animateClass = function( value, duration, easing, callback ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2167 var o = $.speed( duration, easing, callback );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2168
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2169 return this.queue( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2170 var animated = $( this ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2171 baseClass = animated.attr( "class" ) || "",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2172 applyClassChange,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2173 allAnimations = o.children ? animated.find( "*" ).addBack() : animated;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2174
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2175 // Map the animated objects to store the original styles.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2176 allAnimations = allAnimations.map( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2177 var el = $( this );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2178 return {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2179 el: el,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2180 start: getElementStyles( this )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2181 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2182 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2183
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2184 // Apply class change
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2185 applyClassChange = function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2186 $.each( classAnimationActions, function( i, action ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2187 if ( value[ action ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2188 animated[ action + "Class" ]( value[ action ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2189 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2190 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2191 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2192 applyClassChange();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2193
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2194 // Map all animated objects again - calculate new styles and diff
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2195 allAnimations = allAnimations.map( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2196 this.end = getElementStyles( this.el[ 0 ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2197 this.diff = styleDifference( this.start, this.end );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2198 return this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2199 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2200
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2201 // Apply original class
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2202 animated.attr( "class", baseClass );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2203
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2204 // Map all animated objects again - this time collecting a promise
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2205 allAnimations = allAnimations.map( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2206 var styleInfo = this,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2207 dfd = $.Deferred(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2208 opts = $.extend( {}, o, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2209 queue: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2210 complete: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2211 dfd.resolve( styleInfo );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2212 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2213 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2214
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2215 this.el.animate( this.diff, opts );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2216 return dfd.promise();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2217 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2218
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2219 // Once all animations have completed:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2220 $.when.apply( $, allAnimations.get() ).done( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2221
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2222 // Set the final class
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2223 applyClassChange();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2224
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2225 // For each animated element,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2226 // clear all css properties that were animated
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2227 $.each( arguments, function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2228 var el = this.el;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2229 $.each( this.diff, function( key ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2230 el.css( key, "" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2231 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2232 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2233
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2234 // This is guarnteed to be there if you use jQuery.speed()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2235 // it also handles dequeuing the next anim...
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2236 o.complete.call( animated[ 0 ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2237 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2238 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2239 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2240
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2241 $.fn.extend( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2242 addClass: ( function( orig ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2243 return function( classNames, speed, easing, callback ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2244 return speed ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2245 $.effects.animateClass.call( this,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2246 { add: classNames }, speed, easing, callback ) :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2247 orig.apply( this, arguments );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2248 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2249 } )( $.fn.addClass ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2250
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2251 removeClass: ( function( orig ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2252 return function( classNames, speed, easing, callback ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2253 return arguments.length > 1 ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2254 $.effects.animateClass.call( this,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2255 { remove: classNames }, speed, easing, callback ) :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2256 orig.apply( this, arguments );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2257 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2258 } )( $.fn.removeClass ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2259
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2260 toggleClass: ( function( orig ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2261 return function( classNames, force, speed, easing, callback ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2262 if ( typeof force === "boolean" || force === undefined ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2263 if ( !speed ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2264
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2265 // Without speed parameter
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2266 return orig.apply( this, arguments );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2267 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2268 return $.effects.animateClass.call( this,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2269 ( force ? { add: classNames } : { remove: classNames } ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2270 speed, easing, callback );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2271 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2272 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2273
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2274 // Without force parameter
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2275 return $.effects.animateClass.call( this,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2276 { toggle: classNames }, force, speed, easing );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2277 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2278 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2279 } )( $.fn.toggleClass ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2280
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2281 switchClass: function( remove, add, speed, easing, callback ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2282 return $.effects.animateClass.call( this, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2283 add: add,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2284 remove: remove
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2285 }, speed, easing, callback );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2286 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2287 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2288
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2289 } )();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2290
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2291 /******************************************************************************/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2292 /*********************************** EFFECTS **********************************/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2293 /******************************************************************************/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2294
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2295 ( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2296
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2297 if ( $.expr && $.expr.pseudos && $.expr.pseudos.animated ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2298 $.expr.pseudos.animated = ( function( orig ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2299 return function( elem ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2300 return !!$( elem ).data( dataSpaceAnimated ) || orig( elem );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2301 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2302 } )( $.expr.pseudos.animated );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2303 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2304
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2305 if ( $.uiBackCompat !== false ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2306 $.extend( $.effects, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2307
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2308 // Saves a set of properties in a data storage
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2309 save: function( element, set ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2310 var i = 0, length = set.length;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2311 for ( ; i < length; i++ ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2312 if ( set[ i ] !== null ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2313 element.data( dataSpace + set[ i ], element[ 0 ].style[ set[ i ] ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2314 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2315 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2316 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2317
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2318 // Restores a set of previously saved properties from a data storage
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2319 restore: function( element, set ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2320 var val, i = 0, length = set.length;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2321 for ( ; i < length; i++ ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2322 if ( set[ i ] !== null ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2323 val = element.data( dataSpace + set[ i ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2324 element.css( set[ i ], val );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2325 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2326 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2327 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2328
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2329 setMode: function( el, mode ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2330 if ( mode === "toggle" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2331 mode = el.is( ":hidden" ) ? "show" : "hide";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2332 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2333 return mode;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2334 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2335
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2336 // Wraps the element around a wrapper that copies position properties
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2337 createWrapper: function( element ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2338
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2339 // If the element is already wrapped, return it
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2340 if ( element.parent().is( ".ui-effects-wrapper" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2341 return element.parent();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2342 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2343
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2344 // Wrap the element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2345 var props = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2346 width: element.outerWidth( true ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2347 height: element.outerHeight( true ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2348 "float": element.css( "float" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2349 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2350 wrapper = $( "<div></div>" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2351 .addClass( "ui-effects-wrapper" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2352 .css( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2353 fontSize: "100%",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2354 background: "transparent",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2355 border: "none",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2356 margin: 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2357 padding: 0
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2358 } ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2359
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2360 // Store the size in case width/height are defined in % - Fixes #5245
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2361 size = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2362 width: element.width(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2363 height: element.height()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2364 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2365 active = document.activeElement;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2366
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2367 // Support: Firefox
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2368 // Firefox incorrectly exposes anonymous content
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2369 // https://bugzilla.mozilla.org/show_bug.cgi?id=561664
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2370 try {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2371 // eslint-disable-next-line no-unused-expressions
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2372 active.id;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2373 } catch ( e ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2374 active = document.body;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2375 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2376
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2377 element.wrap( wrapper );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2378
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2379 // Fixes #7595 - Elements lose focus when wrapped.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2380 if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2381 $( active ).trigger( "focus" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2382 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2383
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2384 // Hotfix for jQuery 1.4 since some change in wrap() seems to actually
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2385 // lose the reference to the wrapped element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2386 wrapper = element.parent();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2387
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2388 // Transfer positioning properties to the wrapper
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2389 if ( element.css( "position" ) === "static" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2390 wrapper.css( { position: "relative" } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2391 element.css( { position: "relative" } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2392 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2393 $.extend( props, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2394 position: element.css( "position" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2395 zIndex: element.css( "z-index" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2396 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2397 $.each( [ "top", "left", "bottom", "right" ], function( i, pos ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2398 props[ pos ] = element.css( pos );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2399 if ( isNaN( parseInt( props[ pos ], 10 ) ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2400 props[ pos ] = "auto";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2401 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2402 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2403 element.css( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2404 position: "relative",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2405 top: 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2406 left: 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2407 right: "auto",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2408 bottom: "auto"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2409 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2410 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2411 element.css( size );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2412
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2413 return wrapper.css( props ).show();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2414 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2415
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2416 removeWrapper: function( element ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2417 var active = document.activeElement;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2418
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2419 if ( element.parent().is( ".ui-effects-wrapper" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2420 element.parent().replaceWith( element );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2421
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2422 // Fixes #7595 - Elements lose focus when wrapped.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2423 if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2424 $( active ).trigger( "focus" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2425 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2426 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2427
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2428 return element;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2429 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2430 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2431 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2432
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2433 $.extend( $.effects, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2434 version: "1.13.2",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2435
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2436 define: function( name, mode, effect ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2437 if ( !effect ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2438 effect = mode;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2439 mode = "effect";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2440 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2441
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2442 $.effects.effect[ name ] = effect;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2443 $.effects.effect[ name ].mode = mode;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2444
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2445 return effect;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2446 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2447
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2448 scaledDimensions: function( element, percent, direction ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2449 if ( percent === 0 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2450 return {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2451 height: 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2452 width: 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2453 outerHeight: 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2454 outerWidth: 0
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2455 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2456 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2457
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2458 var x = direction !== "horizontal" ? ( ( percent || 100 ) / 100 ) : 1,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2459 y = direction !== "vertical" ? ( ( percent || 100 ) / 100 ) : 1;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2460
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2461 return {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2462 height: element.height() * y,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2463 width: element.width() * x,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2464 outerHeight: element.outerHeight() * y,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2465 outerWidth: element.outerWidth() * x
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2466 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2467
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2468 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2469
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2470 clipToBox: function( animation ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2471 return {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2472 width: animation.clip.right - animation.clip.left,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2473 height: animation.clip.bottom - animation.clip.top,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2474 left: animation.clip.left,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2475 top: animation.clip.top
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2476 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2477 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2478
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2479 // Injects recently queued functions to be first in line (after "inprogress")
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2480 unshift: function( element, queueLength, count ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2481 var queue = element.queue();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2482
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2483 if ( queueLength > 1 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2484 queue.splice.apply( queue,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2485 [ 1, 0 ].concat( queue.splice( queueLength, count ) ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2486 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2487 element.dequeue();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2488 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2489
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2490 saveStyle: function( element ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2491 element.data( dataSpaceStyle, element[ 0 ].style.cssText );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2492 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2493
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2494 restoreStyle: function( element ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2495 element[ 0 ].style.cssText = element.data( dataSpaceStyle ) || "";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2496 element.removeData( dataSpaceStyle );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2497 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2498
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2499 mode: function( element, mode ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2500 var hidden = element.is( ":hidden" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2501
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2502 if ( mode === "toggle" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2503 mode = hidden ? "show" : "hide";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2504 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2505 if ( hidden ? mode === "hide" : mode === "show" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2506 mode = "none";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2507 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2508 return mode;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2509 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2510
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2511 // Translates a [top,left] array into a baseline value
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2512 getBaseline: function( origin, original ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2513 var y, x;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2514
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2515 switch ( origin[ 0 ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2516 case "top":
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2517 y = 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2518 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2519 case "middle":
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2520 y = 0.5;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2521 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2522 case "bottom":
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2523 y = 1;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2524 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2525 default:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2526 y = origin[ 0 ] / original.height;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2527 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2528
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2529 switch ( origin[ 1 ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2530 case "left":
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2531 x = 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2532 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2533 case "center":
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2534 x = 0.5;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2535 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2536 case "right":
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2537 x = 1;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2538 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2539 default:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2540 x = origin[ 1 ] / original.width;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2541 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2542
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2543 return {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2544 x: x,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2545 y: y
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2546 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2547 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2548
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2549 // Creates a placeholder element so that the original element can be made absolute
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2550 createPlaceholder: function( element ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2551 var placeholder,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2552 cssPosition = element.css( "position" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2553 position = element.position();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2554
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2555 // Lock in margins first to account for form elements, which
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2556 // will change margin if you explicitly set height
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2557 // see: http://jsfiddle.net/JZSMt/3/ https://bugs.webkit.org/show_bug.cgi?id=107380
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2558 // Support: Safari
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2559 element.css( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2560 marginTop: element.css( "marginTop" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2561 marginBottom: element.css( "marginBottom" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2562 marginLeft: element.css( "marginLeft" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2563 marginRight: element.css( "marginRight" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2564 } )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2565 .outerWidth( element.outerWidth() )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2566 .outerHeight( element.outerHeight() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2567
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2568 if ( /^(static|relative)/.test( cssPosition ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2569 cssPosition = "absolute";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2570
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2571 placeholder = $( "<" + element[ 0 ].nodeName + ">" ).insertAfter( element ).css( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2572
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2573 // Convert inline to inline block to account for inline elements
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2574 // that turn to inline block based on content (like img)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2575 display: /^(inline|ruby)/.test( element.css( "display" ) ) ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2576 "inline-block" :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2577 "block",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2578 visibility: "hidden",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2579
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2580 // Margins need to be set to account for margin collapse
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2581 marginTop: element.css( "marginTop" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2582 marginBottom: element.css( "marginBottom" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2583 marginLeft: element.css( "marginLeft" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2584 marginRight: element.css( "marginRight" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2585 "float": element.css( "float" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2586 } )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2587 .outerWidth( element.outerWidth() )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2588 .outerHeight( element.outerHeight() )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2589 .addClass( "ui-effects-placeholder" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2590
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2591 element.data( dataSpace + "placeholder", placeholder );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2592 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2593
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2594 element.css( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2595 position: cssPosition,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2596 left: position.left,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2597 top: position.top
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2598 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2599
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2600 return placeholder;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2601 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2602
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2603 removePlaceholder: function( element ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2604 var dataKey = dataSpace + "placeholder",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2605 placeholder = element.data( dataKey );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2606
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2607 if ( placeholder ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2608 placeholder.remove();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2609 element.removeData( dataKey );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2610 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2611 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2612
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2613 // Removes a placeholder if it exists and restores
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2614 // properties that were modified during placeholder creation
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2615 cleanUp: function( element ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2616 $.effects.restoreStyle( element );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2617 $.effects.removePlaceholder( element );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2618 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2619
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2620 setTransition: function( element, list, factor, value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2621 value = value || {};
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2622 $.each( list, function( i, x ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2623 var unit = element.cssUnit( x );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2624 if ( unit[ 0 ] > 0 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2625 value[ x ] = unit[ 0 ] * factor + unit[ 1 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2626 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2627 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2628 return value;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2629 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2630 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2631
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2632 // Return an effect options object for the given parameters:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2633 function _normalizeArguments( effect, options, speed, callback ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2634
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2635 // Allow passing all options as the first parameter
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2636 if ( $.isPlainObject( effect ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2637 options = effect;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2638 effect = effect.effect;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2639 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2640
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2641 // Convert to an object
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2642 effect = { effect: effect };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2643
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2644 // Catch (effect, null, ...)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2645 if ( options == null ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2646 options = {};
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2647 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2648
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2649 // Catch (effect, callback)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2650 if ( typeof options === "function" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2651 callback = options;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2652 speed = null;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2653 options = {};
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2654 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2655
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2656 // Catch (effect, speed, ?)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2657 if ( typeof options === "number" || $.fx.speeds[ options ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2658 callback = speed;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2659 speed = options;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2660 options = {};
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2661 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2662
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2663 // Catch (effect, options, callback)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2664 if ( typeof speed === "function" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2665 callback = speed;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2666 speed = null;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2667 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2668
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2669 // Add options to effect
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2670 if ( options ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2671 $.extend( effect, options );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2672 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2673
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2674 speed = speed || options.duration;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2675 effect.duration = $.fx.off ? 0 :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2676 typeof speed === "number" ? speed :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2677 speed in $.fx.speeds ? $.fx.speeds[ speed ] :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2678 $.fx.speeds._default;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2679
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2680 effect.complete = callback || options.complete;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2681
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2682 return effect;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2683 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2684
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2685 function standardAnimationOption( option ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2686
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2687 // Valid standard speeds (nothing, number, named speed)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2688 if ( !option || typeof option === "number" || $.fx.speeds[ option ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2689 return true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2690 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2691
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2692 // Invalid strings - treat as "normal" speed
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2693 if ( typeof option === "string" && !$.effects.effect[ option ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2694 return true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2695 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2696
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2697 // Complete callback
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2698 if ( typeof option === "function" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2699 return true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2700 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2701
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2702 // Options hash (but not naming an effect)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2703 if ( typeof option === "object" && !option.effect ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2704 return true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2705 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2706
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2707 // Didn't match any standard API
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2708 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2709 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2710
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2711 $.fn.extend( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2712 effect: function( /* effect, options, speed, callback */ ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2713 var args = _normalizeArguments.apply( this, arguments ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2714 effectMethod = $.effects.effect[ args.effect ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2715 defaultMode = effectMethod.mode,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2716 queue = args.queue,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2717 queueName = queue || "fx",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2718 complete = args.complete,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2719 mode = args.mode,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2720 modes = [],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2721 prefilter = function( next ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2722 var el = $( this ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2723 normalizedMode = $.effects.mode( el, mode ) || defaultMode;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2724
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2725 // Sentinel for duck-punching the :animated pseudo-selector
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2726 el.data( dataSpaceAnimated, true );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2727
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2728 // Save effect mode for later use,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2729 // we can't just call $.effects.mode again later,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2730 // as the .show() below destroys the initial state
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2731 modes.push( normalizedMode );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2732
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2733 // See $.uiBackCompat inside of run() for removal of defaultMode in 1.14
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2734 if ( defaultMode && ( normalizedMode === "show" ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2735 ( normalizedMode === defaultMode && normalizedMode === "hide" ) ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2736 el.show();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2737 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2738
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2739 if ( !defaultMode || normalizedMode !== "none" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2740 $.effects.saveStyle( el );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2741 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2742
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2743 if ( typeof next === "function" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2744 next();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2745 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2746 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2747
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2748 if ( $.fx.off || !effectMethod ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2749
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2750 // Delegate to the original method (e.g., .show()) if possible
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2751 if ( mode ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2752 return this[ mode ]( args.duration, complete );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2753 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2754 return this.each( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2755 if ( complete ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2756 complete.call( this );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2757 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2758 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2759 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2760 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2761
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2762 function run( next ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2763 var elem = $( this );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2764
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2765 function cleanup() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2766 elem.removeData( dataSpaceAnimated );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2767
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2768 $.effects.cleanUp( elem );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2769
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2770 if ( args.mode === "hide" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2771 elem.hide();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2772 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2773
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2774 done();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2775 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2776
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2777 function done() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2778 if ( typeof complete === "function" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2779 complete.call( elem[ 0 ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2780 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2781
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2782 if ( typeof next === "function" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2783 next();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2784 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2785 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2786
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2787 // Override mode option on a per element basis,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2788 // as toggle can be either show or hide depending on element state
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2789 args.mode = modes.shift();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2790
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2791 if ( $.uiBackCompat !== false && !defaultMode ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2792 if ( elem.is( ":hidden" ) ? mode === "hide" : mode === "show" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2793
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2794 // Call the core method to track "olddisplay" properly
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2795 elem[ mode ]();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2796 done();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2797 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2798 effectMethod.call( elem[ 0 ], args, done );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2799 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2800 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2801 if ( args.mode === "none" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2802
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2803 // Call the core method to track "olddisplay" properly
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2804 elem[ mode ]();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2805 done();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2806 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2807 effectMethod.call( elem[ 0 ], args, cleanup );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2808 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2809 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2810 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2811
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2812 // Run prefilter on all elements first to ensure that
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2813 // any showing or hiding happens before placeholder creation,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2814 // which ensures that any layout changes are correctly captured.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2815 return queue === false ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2816 this.each( prefilter ).each( run ) :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2817 this.queue( queueName, prefilter ).queue( queueName, run );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2818 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2819
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2820 show: ( function( orig ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2821 return function( option ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2822 if ( standardAnimationOption( option ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2823 return orig.apply( this, arguments );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2824 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2825 var args = _normalizeArguments.apply( this, arguments );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2826 args.mode = "show";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2827 return this.effect.call( this, args );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2828 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2829 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2830 } )( $.fn.show ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2831
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2832 hide: ( function( orig ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2833 return function( option ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2834 if ( standardAnimationOption( option ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2835 return orig.apply( this, arguments );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2836 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2837 var args = _normalizeArguments.apply( this, arguments );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2838 args.mode = "hide";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2839 return this.effect.call( this, args );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2840 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2841 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2842 } )( $.fn.hide ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2843
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2844 toggle: ( function( orig ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2845 return function( option ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2846 if ( standardAnimationOption( option ) || typeof option === "boolean" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2847 return orig.apply( this, arguments );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2848 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2849 var args = _normalizeArguments.apply( this, arguments );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2850 args.mode = "toggle";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2851 return this.effect.call( this, args );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2852 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2853 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2854 } )( $.fn.toggle ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2855
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2856 cssUnit: function( key ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2857 var style = this.css( key ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2858 val = [];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2859
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2860 $.each( [ "em", "px", "%", "pt" ], function( i, unit ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2861 if ( style.indexOf( unit ) > 0 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2862 val = [ parseFloat( style ), unit ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2863 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2864 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2865 return val;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2866 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2867
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2868 cssClip: function( clipObj ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2869 if ( clipObj ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2870 return this.css( "clip", "rect(" + clipObj.top + "px " + clipObj.right + "px " +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2871 clipObj.bottom + "px " + clipObj.left + "px)" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2872 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2873 return parseClip( this.css( "clip" ), this );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2874 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2875
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2876 transfer: function( options, done ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2877 var element = $( this ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2878 target = $( options.to ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2879 targetFixed = target.css( "position" ) === "fixed",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2880 body = $( "body" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2881 fixTop = targetFixed ? body.scrollTop() : 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2882 fixLeft = targetFixed ? body.scrollLeft() : 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2883 endPosition = target.offset(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2884 animation = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2885 top: endPosition.top - fixTop,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2886 left: endPosition.left - fixLeft,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2887 height: target.innerHeight(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2888 width: target.innerWidth()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2889 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2890 startPosition = element.offset(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2891 transfer = $( "<div class='ui-effects-transfer'></div>" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2892
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2893 transfer
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2894 .appendTo( "body" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2895 .addClass( options.className )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2896 .css( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2897 top: startPosition.top - fixTop,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2898 left: startPosition.left - fixLeft,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2899 height: element.innerHeight(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2900 width: element.innerWidth(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2901 position: targetFixed ? "fixed" : "absolute"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2902 } )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2903 .animate( animation, options.duration, options.easing, function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2904 transfer.remove();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2905 if ( typeof done === "function" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2906 done();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2907 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2908 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2909 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2910 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2911
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2912 function parseClip( str, element ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2913 var outerWidth = element.outerWidth(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2914 outerHeight = element.outerHeight(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2915 clipRegex = /^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2916 values = clipRegex.exec( str ) || [ "", 0, outerWidth, outerHeight, 0 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2917
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2918 return {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2919 top: parseFloat( values[ 1 ] ) || 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2920 right: values[ 2 ] === "auto" ? outerWidth : parseFloat( values[ 2 ] ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2921 bottom: values[ 3 ] === "auto" ? outerHeight : parseFloat( values[ 3 ] ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2922 left: parseFloat( values[ 4 ] ) || 0
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2923 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2924 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2925
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2926 $.fx.step.clip = function( fx ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2927 if ( !fx.clipInit ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2928 fx.start = $( fx.elem ).cssClip();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2929 if ( typeof fx.end === "string" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2930 fx.end = parseClip( fx.end, fx.elem );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2931 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2932 fx.clipInit = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2933 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2934
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2935 $( fx.elem ).cssClip( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2936 top: fx.pos * ( fx.end.top - fx.start.top ) + fx.start.top,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2937 right: fx.pos * ( fx.end.right - fx.start.right ) + fx.start.right,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2938 bottom: fx.pos * ( fx.end.bottom - fx.start.bottom ) + fx.start.bottom,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2939 left: fx.pos * ( fx.end.left - fx.start.left ) + fx.start.left
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2940 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2941 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2942
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2943 } )();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2944
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2945 /******************************************************************************/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2946 /*********************************** EASING ***********************************/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2947 /******************************************************************************/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2948
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2949 ( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2950
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2951 // Based on easing equations from Robert Penner (http://www.robertpenner.com/easing)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2952
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2953 var baseEasings = {};
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2954
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2955 $.each( [ "Quad", "Cubic", "Quart", "Quint", "Expo" ], function( i, name ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2956 baseEasings[ name ] = function( p ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2957 return Math.pow( p, i + 2 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2958 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2959 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2960
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2961 $.extend( baseEasings, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2962 Sine: function( p ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2963 return 1 - Math.cos( p * Math.PI / 2 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2964 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2965 Circ: function( p ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2966 return 1 - Math.sqrt( 1 - p * p );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2967 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2968 Elastic: function( p ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2969 return p === 0 || p === 1 ? p :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2970 -Math.pow( 2, 8 * ( p - 1 ) ) * Math.sin( ( ( p - 1 ) * 80 - 7.5 ) * Math.PI / 15 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2971 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2972 Back: function( p ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2973 return p * p * ( 3 * p - 2 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2974 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2975 Bounce: function( p ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2976 var pow2,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2977 bounce = 4;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2978
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2979 while ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {}
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2980 return 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2981 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2982 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2983
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2984 $.each( baseEasings, function( name, easeIn ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2985 $.easing[ "easeIn" + name ] = easeIn;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2986 $.easing[ "easeOut" + name ] = function( p ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2987 return 1 - easeIn( 1 - p );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2988 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2989 $.easing[ "easeInOut" + name ] = function( p ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2990 return p < 0.5 ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2991 easeIn( p * 2 ) / 2 :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2992 1 - easeIn( p * -2 + 2 ) / 2;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2993 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2994 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2995
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2996 } )();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2997
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2998 var effect = $.effects;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
2999
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3000
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3001 /*!
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3002 * jQuery UI Effects Blind 1.13.2
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3003 * http://jqueryui.com
1670
6fd889391d2c Added a Speed Dial to the web browser including the capability to select the first ten pages by pressing Meta+1 to Meta+0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
3004 *
9678
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3005 * Copyright jQuery Foundation and other contributors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3006 * Released under the MIT license.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3007 * http://jquery.org/license
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3008 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3009
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3010 //>>label: Blind Effect
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3011 //>>group: Effects
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3012 //>>description: Blinds the element.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3013 //>>docs: http://api.jqueryui.com/blind-effect/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3014 //>>demos: http://jqueryui.com/effect/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3015
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3016
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3017 var effectsEffectBlind = $.effects.define( "blind", "hide", function( options, done ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3018 var map = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3019 up: [ "bottom", "top" ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3020 vertical: [ "bottom", "top" ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3021 down: [ "top", "bottom" ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3022 left: [ "right", "left" ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3023 horizontal: [ "right", "left" ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3024 right: [ "left", "right" ]
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3025 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3026 element = $( this ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3027 direction = options.direction || "up",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3028 start = element.cssClip(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3029 animate = { clip: $.extend( {}, start ) },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3030 placeholder = $.effects.createPlaceholder( element );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3031
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3032 animate.clip[ map[ direction ][ 0 ] ] = animate.clip[ map[ direction ][ 1 ] ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3033
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3034 if ( options.mode === "show" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3035 element.cssClip( animate.clip );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3036 if ( placeholder ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3037 placeholder.css( $.effects.clipToBox( animate ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3038 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3039
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3040 animate.clip = start;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3041 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3042
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3043 if ( placeholder ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3044 placeholder.animate( $.effects.clipToBox( animate ), options.duration, options.easing );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3045 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3046
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3047 element.animate( animate, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3048 queue: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3049 duration: options.duration,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3050 easing: options.easing,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3051 complete: done
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3052 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3053 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3054
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3055
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3056 /*!
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3057 * jQuery UI Effects Bounce 1.13.2
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3058 * http://jqueryui.com
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3059 *
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3060 * Copyright jQuery Foundation and other contributors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3061 * Released under the MIT license.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3062 * http://jquery.org/license
1670
6fd889391d2c Added a Speed Dial to the web browser including the capability to select the first ten pages by pressing Meta+1 to Meta+0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
3063 */
9678
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3064
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3065 //>>label: Bounce Effect
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3066 //>>group: Effects
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3067 //>>description: Bounces an element horizontally or vertically n times.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3068 //>>docs: http://api.jqueryui.com/bounce-effect/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3069 //>>demos: http://jqueryui.com/effect/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3070
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3071
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3072 var effectsEffectBounce = $.effects.define( "bounce", function( options, done ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3073 var upAnim, downAnim, refValue,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3074 element = $( this ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3075
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3076 // Defaults:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3077 mode = options.mode,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3078 hide = mode === "hide",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3079 show = mode === "show",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3080 direction = options.direction || "up",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3081 distance = options.distance,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3082 times = options.times || 5,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3083
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3084 // Number of internal animations
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3085 anims = times * 2 + ( show || hide ? 1 : 0 ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3086 speed = options.duration / anims,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3087 easing = options.easing,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3088
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3089 // Utility:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3090 ref = ( direction === "up" || direction === "down" ) ? "top" : "left",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3091 motion = ( direction === "up" || direction === "left" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3092 i = 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3093
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3094 queuelen = element.queue().length;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3095
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3096 $.effects.createPlaceholder( element );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3097
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3098 refValue = element.css( ref );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3099
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3100 // Default distance for the BIGGEST bounce is the outer Distance / 3
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3101 if ( !distance ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3102 distance = element[ ref === "top" ? "outerHeight" : "outerWidth" ]() / 3;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3103 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3104
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3105 if ( show ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3106 downAnim = { opacity: 1 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3107 downAnim[ ref ] = refValue;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3108
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3109 // If we are showing, force opacity 0 and set the initial position
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3110 // then do the "first" animation
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3111 element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3112 .css( "opacity", 0 )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3113 .css( ref, motion ? -distance * 2 : distance * 2 )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3114 .animate( downAnim, speed, easing );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3115 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3116
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3117 // Start at the smallest distance if we are hiding
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3118 if ( hide ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3119 distance = distance / Math.pow( 2, times - 1 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3120 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3121
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3122 downAnim = {};
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3123 downAnim[ ref ] = refValue;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3124
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3125 // Bounces up/down/left/right then back to 0 -- times * 2 animations happen here
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3126 for ( ; i < times; i++ ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3127 upAnim = {};
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3128 upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3129
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3130 element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3131 .animate( upAnim, speed, easing )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3132 .animate( downAnim, speed, easing );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3133
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3134 distance = hide ? distance * 2 : distance / 2;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3135 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3136
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3137 // Last Bounce when Hiding
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3138 if ( hide ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3139 upAnim = { opacity: 0 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3140 upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3141
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3142 element.animate( upAnim, speed, easing );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3143 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3144
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3145 element.queue( done );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3146
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3147 $.effects.unshift( element, queuelen, anims + 1 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3148 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3149
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3150
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3151 /*!
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3152 * jQuery UI Effects Clip 1.13.2
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3153 * http://jqueryui.com
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3154 *
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3155 * Copyright jQuery Foundation and other contributors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3156 * Released under the MIT license.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3157 * http://jquery.org/license
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3158 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3159
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3160 //>>label: Clip Effect
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3161 //>>group: Effects
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3162 //>>description: Clips the element on and off like an old TV.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3163 //>>docs: http://api.jqueryui.com/clip-effect/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3164 //>>demos: http://jqueryui.com/effect/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3165
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3166
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3167 var effectsEffectClip = $.effects.define( "clip", "hide", function( options, done ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3168 var start,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3169 animate = {},
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3170 element = $( this ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3171 direction = options.direction || "vertical",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3172 both = direction === "both",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3173 horizontal = both || direction === "horizontal",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3174 vertical = both || direction === "vertical";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3175
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3176 start = element.cssClip();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3177 animate.clip = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3178 top: vertical ? ( start.bottom - start.top ) / 2 : start.top,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3179 right: horizontal ? ( start.right - start.left ) / 2 : start.right,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3180 bottom: vertical ? ( start.bottom - start.top ) / 2 : start.bottom,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3181 left: horizontal ? ( start.right - start.left ) / 2 : start.left
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3182 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3183
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3184 $.effects.createPlaceholder( element );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3185
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3186 if ( options.mode === "show" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3187 element.cssClip( animate.clip );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3188 animate.clip = start;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3189 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3190
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3191 element.animate( animate, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3192 queue: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3193 duration: options.duration,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3194 easing: options.easing,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3195 complete: done
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3196 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3197
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3198 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3199
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3200
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3201 /*!
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3202 * jQuery UI Effects Drop 1.13.2
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3203 * http://jqueryui.com
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3204 *
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3205 * Copyright jQuery Foundation and other contributors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3206 * Released under the MIT license.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3207 * http://jquery.org/license
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3208 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3209
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3210 //>>label: Drop Effect
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3211 //>>group: Effects
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3212 //>>description: Moves an element in one direction and hides it at the same time.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3213 //>>docs: http://api.jqueryui.com/drop-effect/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3214 //>>demos: http://jqueryui.com/effect/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3215
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3216
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3217 var effectsEffectDrop = $.effects.define( "drop", "hide", function( options, done ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3218
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3219 var distance,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3220 element = $( this ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3221 mode = options.mode,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3222 show = mode === "show",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3223 direction = options.direction || "left",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3224 ref = ( direction === "up" || direction === "down" ) ? "top" : "left",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3225 motion = ( direction === "up" || direction === "left" ) ? "-=" : "+=",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3226 oppositeMotion = ( motion === "+=" ) ? "-=" : "+=",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3227 animation = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3228 opacity: 0
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3229 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3230
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3231 $.effects.createPlaceholder( element );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3232
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3233 distance = options.distance ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3234 element[ ref === "top" ? "outerHeight" : "outerWidth" ]( true ) / 2;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3235
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3236 animation[ ref ] = motion + distance;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3237
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3238 if ( show ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3239 element.css( animation );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3240
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3241 animation[ ref ] = oppositeMotion + distance;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3242 animation.opacity = 1;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3243 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3244
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3245 // Animate
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3246 element.animate( animation, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3247 queue: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3248 duration: options.duration,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3249 easing: options.easing,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3250 complete: done
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3251 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3252 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3253
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3254
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3255 /*!
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3256 * jQuery UI Effects Explode 1.13.2
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3257 * http://jqueryui.com
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3258 *
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3259 * Copyright jQuery Foundation and other contributors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3260 * Released under the MIT license.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3261 * http://jquery.org/license
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3262 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3263
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3264 //>>label: Explode Effect
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3265 //>>group: Effects
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3266 /* eslint-disable max-len */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3267 //>>description: Explodes an element in all directions into n pieces. Implodes an element to its original wholeness.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3268 /* eslint-enable max-len */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3269 //>>docs: http://api.jqueryui.com/explode-effect/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3270 //>>demos: http://jqueryui.com/effect/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3271
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3272
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3273 var effectsEffectExplode = $.effects.define( "explode", "hide", function( options, done ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3274
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3275 var i, j, left, top, mx, my,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3276 rows = options.pieces ? Math.round( Math.sqrt( options.pieces ) ) : 3,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3277 cells = rows,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3278 element = $( this ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3279 mode = options.mode,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3280 show = mode === "show",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3281
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3282 // Show and then visibility:hidden the element before calculating offset
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3283 offset = element.show().css( "visibility", "hidden" ).offset(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3284
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3285 // Width and height of a piece
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3286 width = Math.ceil( element.outerWidth() / cells ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3287 height = Math.ceil( element.outerHeight() / rows ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3288 pieces = [];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3289
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3290 // Children animate complete:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3291 function childComplete() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3292 pieces.push( this );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3293 if ( pieces.length === rows * cells ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3294 animComplete();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3295 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3296 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3297
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3298 // Clone the element for each row and cell.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3299 for ( i = 0; i < rows; i++ ) { // ===>
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3300 top = offset.top + i * height;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3301 my = i - ( rows - 1 ) / 2;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3302
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3303 for ( j = 0; j < cells; j++ ) { // |||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3304 left = offset.left + j * width;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3305 mx = j - ( cells - 1 ) / 2;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3306
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3307 // Create a clone of the now hidden main element that will be absolute positioned
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3308 // within a wrapper div off the -left and -top equal to size of our pieces
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3309 element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3310 .clone()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3311 .appendTo( "body" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3312 .wrap( "<div></div>" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3313 .css( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3314 position: "absolute",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3315 visibility: "visible",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3316 left: -j * width,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3317 top: -i * height
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3318 } )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3319
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3320 // Select the wrapper - make it overflow: hidden and absolute positioned based on
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3321 // where the original was located +left and +top equal to the size of pieces
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3322 .parent()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3323 .addClass( "ui-effects-explode" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3324 .css( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3325 position: "absolute",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3326 overflow: "hidden",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3327 width: width,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3328 height: height,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3329 left: left + ( show ? mx * width : 0 ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3330 top: top + ( show ? my * height : 0 ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3331 opacity: show ? 0 : 1
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3332 } )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3333 .animate( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3334 left: left + ( show ? 0 : mx * width ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3335 top: top + ( show ? 0 : my * height ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3336 opacity: show ? 1 : 0
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3337 }, options.duration || 500, options.easing, childComplete );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3338 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3339 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3340
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3341 function animComplete() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3342 element.css( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3343 visibility: "visible"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3344 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3345 $( pieces ).remove();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3346 done();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3347 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3348 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3349
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3350
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3351 /*!
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3352 * jQuery UI Effects Fade 1.13.2
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3353 * http://jqueryui.com
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3354 *
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3355 * Copyright jQuery Foundation and other contributors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3356 * Released under the MIT license.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3357 * http://jquery.org/license
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3358 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3359
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3360 //>>label: Fade Effect
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3361 //>>group: Effects
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3362 //>>description: Fades the element.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3363 //>>docs: http://api.jqueryui.com/fade-effect/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3364 //>>demos: http://jqueryui.com/effect/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3365
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3366
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3367 var effectsEffectFade = $.effects.define( "fade", "toggle", function( options, done ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3368 var show = options.mode === "show";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3369
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3370 $( this )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3371 .css( "opacity", show ? 0 : 1 )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3372 .animate( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3373 opacity: show ? 1 : 0
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3374 }, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3375 queue: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3376 duration: options.duration,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3377 easing: options.easing,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3378 complete: done
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3379 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3380 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3381
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3382
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3383 /*!
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3384 * jQuery UI Effects Fold 1.13.2
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3385 * http://jqueryui.com
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3386 *
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3387 * Copyright jQuery Foundation and other contributors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3388 * Released under the MIT license.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3389 * http://jquery.org/license
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3390 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3391
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3392 //>>label: Fold Effect
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3393 //>>group: Effects
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3394 //>>description: Folds an element first horizontally and then vertically.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3395 //>>docs: http://api.jqueryui.com/fold-effect/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3396 //>>demos: http://jqueryui.com/effect/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3397
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3398
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3399 var effectsEffectFold = $.effects.define( "fold", "hide", function( options, done ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3400
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3401 // Create element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3402 var element = $( this ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3403 mode = options.mode,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3404 show = mode === "show",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3405 hide = mode === "hide",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3406 size = options.size || 15,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3407 percent = /([0-9]+)%/.exec( size ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3408 horizFirst = !!options.horizFirst,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3409 ref = horizFirst ? [ "right", "bottom" ] : [ "bottom", "right" ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3410 duration = options.duration / 2,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3411
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3412 placeholder = $.effects.createPlaceholder( element ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3413
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3414 start = element.cssClip(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3415 animation1 = { clip: $.extend( {}, start ) },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3416 animation2 = { clip: $.extend( {}, start ) },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3417
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3418 distance = [ start[ ref[ 0 ] ], start[ ref[ 1 ] ] ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3419
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3420 queuelen = element.queue().length;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3421
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3422 if ( percent ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3423 size = parseInt( percent[ 1 ], 10 ) / 100 * distance[ hide ? 0 : 1 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3424 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3425 animation1.clip[ ref[ 0 ] ] = size;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3426 animation2.clip[ ref[ 0 ] ] = size;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3427 animation2.clip[ ref[ 1 ] ] = 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3428
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3429 if ( show ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3430 element.cssClip( animation2.clip );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3431 if ( placeholder ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3432 placeholder.css( $.effects.clipToBox( animation2 ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3433 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3434
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3435 animation2.clip = start;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3436 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3437
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3438 // Animate
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3439 element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3440 .queue( function( next ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3441 if ( placeholder ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3442 placeholder
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3443 .animate( $.effects.clipToBox( animation1 ), duration, options.easing )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3444 .animate( $.effects.clipToBox( animation2 ), duration, options.easing );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3445 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3446
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3447 next();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3448 } )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3449 .animate( animation1, duration, options.easing )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3450 .animate( animation2, duration, options.easing )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3451 .queue( done );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3452
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3453 $.effects.unshift( element, queuelen, 4 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3454 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3455
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3456
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3457 /*!
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3458 * jQuery UI Effects Highlight 1.13.2
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3459 * http://jqueryui.com
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3460 *
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3461 * Copyright jQuery Foundation and other contributors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3462 * Released under the MIT license.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3463 * http://jquery.org/license
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3464 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3465
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3466 //>>label: Highlight Effect
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3467 //>>group: Effects
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3468 //>>description: Highlights the background of an element in a defined color for a custom duration.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3469 //>>docs: http://api.jqueryui.com/highlight-effect/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3470 //>>demos: http://jqueryui.com/effect/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3471
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3472
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3473 var effectsEffectHighlight = $.effects.define( "highlight", "show", function( options, done ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3474 var element = $( this ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3475 animation = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3476 backgroundColor: element.css( "backgroundColor" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3477 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3478
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3479 if ( options.mode === "hide" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3480 animation.opacity = 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3481 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3482
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3483 $.effects.saveStyle( element );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3484
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3485 element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3486 .css( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3487 backgroundImage: "none",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3488 backgroundColor: options.color || "#ffff99"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3489 } )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3490 .animate( animation, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3491 queue: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3492 duration: options.duration,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3493 easing: options.easing,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3494 complete: done
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3495 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3496 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3497
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3498
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3499 /*!
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3500 * jQuery UI Effects Size 1.13.2
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3501 * http://jqueryui.com
1670
6fd889391d2c Added a Speed Dial to the web browser including the capability to select the first ten pages by pressing Meta+1 to Meta+0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
3502 *
9678
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3503 * Copyright jQuery Foundation and other contributors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3504 * Released under the MIT license.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3505 * http://jquery.org/license
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3506 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3507
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3508 //>>label: Size Effect
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3509 //>>group: Effects
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3510 //>>description: Resize an element to a specified width and height.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3511 //>>docs: http://api.jqueryui.com/size-effect/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3512 //>>demos: http://jqueryui.com/effect/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3513
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3514
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3515 var effectsEffectSize = $.effects.define( "size", function( options, done ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3516
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3517 // Create element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3518 var baseline, factor, temp,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3519 element = $( this ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3520
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3521 // Copy for children
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3522 cProps = [ "fontSize" ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3523 vProps = [ "borderTopWidth", "borderBottomWidth", "paddingTop", "paddingBottom" ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3524 hProps = [ "borderLeftWidth", "borderRightWidth", "paddingLeft", "paddingRight" ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3525
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3526 // Set options
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3527 mode = options.mode,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3528 restore = mode !== "effect",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3529 scale = options.scale || "both",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3530 origin = options.origin || [ "middle", "center" ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3531 position = element.css( "position" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3532 pos = element.position(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3533 original = $.effects.scaledDimensions( element ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3534 from = options.from || original,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3535 to = options.to || $.effects.scaledDimensions( element, 0 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3536
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3537 $.effects.createPlaceholder( element );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3538
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3539 if ( mode === "show" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3540 temp = from;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3541 from = to;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3542 to = temp;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3543 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3544
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3545 // Set scaling factor
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3546 factor = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3547 from: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3548 y: from.height / original.height,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3549 x: from.width / original.width
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3550 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3551 to: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3552 y: to.height / original.height,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3553 x: to.width / original.width
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3554 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3555 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3556
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3557 // Scale the css box
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3558 if ( scale === "box" || scale === "both" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3559
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3560 // Vertical props scaling
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3561 if ( factor.from.y !== factor.to.y ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3562 from = $.effects.setTransition( element, vProps, factor.from.y, from );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3563 to = $.effects.setTransition( element, vProps, factor.to.y, to );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3564 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3565
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3566 // Horizontal props scaling
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3567 if ( factor.from.x !== factor.to.x ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3568 from = $.effects.setTransition( element, hProps, factor.from.x, from );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3569 to = $.effects.setTransition( element, hProps, factor.to.x, to );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3570 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3571 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3572
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3573 // Scale the content
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3574 if ( scale === "content" || scale === "both" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3575
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3576 // Vertical props scaling
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3577 if ( factor.from.y !== factor.to.y ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3578 from = $.effects.setTransition( element, cProps, factor.from.y, from );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3579 to = $.effects.setTransition( element, cProps, factor.to.y, to );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3580 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3581 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3582
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3583 // Adjust the position properties based on the provided origin points
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3584 if ( origin ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3585 baseline = $.effects.getBaseline( origin, original );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3586 from.top = ( original.outerHeight - from.outerHeight ) * baseline.y + pos.top;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3587 from.left = ( original.outerWidth - from.outerWidth ) * baseline.x + pos.left;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3588 to.top = ( original.outerHeight - to.outerHeight ) * baseline.y + pos.top;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3589 to.left = ( original.outerWidth - to.outerWidth ) * baseline.x + pos.left;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3590 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3591 delete from.outerHeight;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3592 delete from.outerWidth;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3593 element.css( from );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3594
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3595 // Animate the children if desired
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3596 if ( scale === "content" || scale === "both" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3597
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3598 vProps = vProps.concat( [ "marginTop", "marginBottom" ] ).concat( cProps );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3599 hProps = hProps.concat( [ "marginLeft", "marginRight" ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3600
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3601 // Only animate children with width attributes specified
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3602 // TODO: is this right? should we include anything with css width specified as well
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3603 element.find( "*[width]" ).each( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3604 var child = $( this ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3605 childOriginal = $.effects.scaledDimensions( child ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3606 childFrom = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3607 height: childOriginal.height * factor.from.y,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3608 width: childOriginal.width * factor.from.x,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3609 outerHeight: childOriginal.outerHeight * factor.from.y,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3610 outerWidth: childOriginal.outerWidth * factor.from.x
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3611 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3612 childTo = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3613 height: childOriginal.height * factor.to.y,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3614 width: childOriginal.width * factor.to.x,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3615 outerHeight: childOriginal.height * factor.to.y,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3616 outerWidth: childOriginal.width * factor.to.x
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3617 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3618
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3619 // Vertical props scaling
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3620 if ( factor.from.y !== factor.to.y ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3621 childFrom = $.effects.setTransition( child, vProps, factor.from.y, childFrom );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3622 childTo = $.effects.setTransition( child, vProps, factor.to.y, childTo );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3623 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3624
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3625 // Horizontal props scaling
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3626 if ( factor.from.x !== factor.to.x ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3627 childFrom = $.effects.setTransition( child, hProps, factor.from.x, childFrom );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3628 childTo = $.effects.setTransition( child, hProps, factor.to.x, childTo );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3629 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3630
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3631 if ( restore ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3632 $.effects.saveStyle( child );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3633 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3634
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3635 // Animate children
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3636 child.css( childFrom );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3637 child.animate( childTo, options.duration, options.easing, function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3638
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3639 // Restore children
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3640 if ( restore ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3641 $.effects.restoreStyle( child );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3642 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3643 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3644 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3645 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3646
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3647 // Animate
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3648 element.animate( to, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3649 queue: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3650 duration: options.duration,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3651 easing: options.easing,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3652 complete: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3653
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3654 var offset = element.offset();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3655
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3656 if ( to.opacity === 0 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3657 element.css( "opacity", from.opacity );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3658 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3659
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3660 if ( !restore ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3661 element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3662 .css( "position", position === "static" ? "relative" : position )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3663 .offset( offset );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3664
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3665 // Need to save style here so that automatic style restoration
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3666 // doesn't restore to the original styles from before the animation.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3667 $.effects.saveStyle( element );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3668 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3669
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3670 done();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3671 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3672 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3673
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3674 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3675
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3676
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3677 /*!
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3678 * jQuery UI Effects Scale 1.13.2
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3679 * http://jqueryui.com
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3680 *
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3681 * Copyright jQuery Foundation and other contributors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3682 * Released under the MIT license.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3683 * http://jquery.org/license
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3684 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3685
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3686 //>>label: Scale Effect
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3687 //>>group: Effects
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3688 //>>description: Grows or shrinks an element and its content.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3689 //>>docs: http://api.jqueryui.com/scale-effect/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3690 //>>demos: http://jqueryui.com/effect/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3691
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3692
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3693 var effectsEffectScale = $.effects.define( "scale", function( options, done ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3694
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3695 // Create element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3696 var el = $( this ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3697 mode = options.mode,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3698 percent = parseInt( options.percent, 10 ) ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3699 ( parseInt( options.percent, 10 ) === 0 ? 0 : ( mode !== "effect" ? 0 : 100 ) ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3700
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3701 newOptions = $.extend( true, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3702 from: $.effects.scaledDimensions( el ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3703 to: $.effects.scaledDimensions( el, percent, options.direction || "both" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3704 origin: options.origin || [ "middle", "center" ]
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3705 }, options );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3706
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3707 // Fade option to support puff
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3708 if ( options.fade ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3709 newOptions.from.opacity = 1;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3710 newOptions.to.opacity = 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3711 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3712
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3713 $.effects.effect.size.call( this, newOptions, done );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3714 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3715
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3716
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3717 /*!
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3718 * jQuery UI Effects Puff 1.13.2
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3719 * http://jqueryui.com
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3720 *
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3721 * Copyright jQuery Foundation and other contributors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3722 * Released under the MIT license.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3723 * http://jquery.org/license
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3724 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3725
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3726 //>>label: Puff Effect
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3727 //>>group: Effects
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3728 //>>description: Creates a puff effect by scaling the element up and hiding it at the same time.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3729 //>>docs: http://api.jqueryui.com/puff-effect/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3730 //>>demos: http://jqueryui.com/effect/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3731
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3732
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3733 var effectsEffectPuff = $.effects.define( "puff", "hide", function( options, done ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3734 var newOptions = $.extend( true, {}, options, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3735 fade: true,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3736 percent: parseInt( options.percent, 10 ) || 150
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3737 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3738
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3739 $.effects.effect.scale.call( this, newOptions, done );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3740 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3741
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3742
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3743 /*!
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3744 * jQuery UI Effects Pulsate 1.13.2
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3745 * http://jqueryui.com
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3746 *
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3747 * Copyright jQuery Foundation and other contributors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3748 * Released under the MIT license.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3749 * http://jquery.org/license
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3750 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3751
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3752 //>>label: Pulsate Effect
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3753 //>>group: Effects
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3754 //>>description: Pulsates an element n times by changing the opacity to zero and back.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3755 //>>docs: http://api.jqueryui.com/pulsate-effect/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3756 //>>demos: http://jqueryui.com/effect/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3757
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3758
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3759 var effectsEffectPulsate = $.effects.define( "pulsate", "show", function( options, done ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3760 var element = $( this ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3761 mode = options.mode,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3762 show = mode === "show",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3763 hide = mode === "hide",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3764 showhide = show || hide,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3765
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3766 // Showing or hiding leaves off the "last" animation
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3767 anims = ( ( options.times || 5 ) * 2 ) + ( showhide ? 1 : 0 ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3768 duration = options.duration / anims,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3769 animateTo = 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3770 i = 1,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3771 queuelen = element.queue().length;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3772
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3773 if ( show || !element.is( ":visible" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3774 element.css( "opacity", 0 ).show();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3775 animateTo = 1;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3776 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3777
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3778 // Anims - 1 opacity "toggles"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3779 for ( ; i < anims; i++ ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3780 element.animate( { opacity: animateTo }, duration, options.easing );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3781 animateTo = 1 - animateTo;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3782 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3783
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3784 element.animate( { opacity: animateTo }, duration, options.easing );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3785
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3786 element.queue( done );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3787
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3788 $.effects.unshift( element, queuelen, anims + 1 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3789 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3790
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3791
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3792 /*!
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3793 * jQuery UI Effects Shake 1.13.2
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3794 * http://jqueryui.com
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3795 *
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3796 * Copyright jQuery Foundation and other contributors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3797 * Released under the MIT license.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3798 * http://jquery.org/license
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3799 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3800
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3801 //>>label: Shake Effect
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3802 //>>group: Effects
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3803 //>>description: Shakes an element horizontally or vertically n times.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3804 //>>docs: http://api.jqueryui.com/shake-effect/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3805 //>>demos: http://jqueryui.com/effect/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3806
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3807
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3808 var effectsEffectShake = $.effects.define( "shake", function( options, done ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3809
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3810 var i = 1,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3811 element = $( this ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3812 direction = options.direction || "left",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3813 distance = options.distance || 20,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3814 times = options.times || 3,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3815 anims = times * 2 + 1,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3816 speed = Math.round( options.duration / anims ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3817 ref = ( direction === "up" || direction === "down" ) ? "top" : "left",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3818 positiveMotion = ( direction === "up" || direction === "left" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3819 animation = {},
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3820 animation1 = {},
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3821 animation2 = {},
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3822
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3823 queuelen = element.queue().length;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3824
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3825 $.effects.createPlaceholder( element );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3826
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3827 // Animation
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3828 animation[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3829 animation1[ ref ] = ( positiveMotion ? "+=" : "-=" ) + distance * 2;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3830 animation2[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance * 2;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3831
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3832 // Animate
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3833 element.animate( animation, speed, options.easing );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3834
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3835 // Shakes
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3836 for ( ; i < times; i++ ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3837 element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3838 .animate( animation1, speed, options.easing )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3839 .animate( animation2, speed, options.easing );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3840 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3841
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3842 element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3843 .animate( animation1, speed, options.easing )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3844 .animate( animation, speed / 2, options.easing )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3845 .queue( done );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3846
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3847 $.effects.unshift( element, queuelen, anims + 1 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3848 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3849
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3850
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3851 /*!
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3852 * jQuery UI Effects Slide 1.13.2
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3853 * http://jqueryui.com
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3854 *
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3855 * Copyright jQuery Foundation and other contributors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3856 * Released under the MIT license.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3857 * http://jquery.org/license
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3858 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3859
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3860 //>>label: Slide Effect
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3861 //>>group: Effects
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3862 //>>description: Slides an element in and out of the viewport.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3863 //>>docs: http://api.jqueryui.com/slide-effect/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3864 //>>demos: http://jqueryui.com/effect/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3865
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3866
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3867 var effectsEffectSlide = $.effects.define( "slide", "show", function( options, done ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3868 var startClip, startRef,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3869 element = $( this ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3870 map = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3871 up: [ "bottom", "top" ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3872 down: [ "top", "bottom" ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3873 left: [ "right", "left" ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3874 right: [ "left", "right" ]
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3875 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3876 mode = options.mode,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3877 direction = options.direction || "left",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3878 ref = ( direction === "up" || direction === "down" ) ? "top" : "left",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3879 positiveMotion = ( direction === "up" || direction === "left" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3880 distance = options.distance ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3881 element[ ref === "top" ? "outerHeight" : "outerWidth" ]( true ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3882 animation = {};
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3883
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3884 $.effects.createPlaceholder( element );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3885
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3886 startClip = element.cssClip();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3887 startRef = element.position()[ ref ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3888
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3889 // Define hide animation
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3890 animation[ ref ] = ( positiveMotion ? -1 : 1 ) * distance + startRef;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3891 animation.clip = element.cssClip();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3892 animation.clip[ map[ direction ][ 1 ] ] = animation.clip[ map[ direction ][ 0 ] ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3893
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3894 // Reverse the animation if we're showing
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3895 if ( mode === "show" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3896 element.cssClip( animation.clip );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3897 element.css( ref, animation[ ref ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3898 animation.clip = startClip;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3899 animation[ ref ] = startRef;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3900 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3901
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3902 // Actually animate
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3903 element.animate( animation, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3904 queue: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3905 duration: options.duration,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3906 easing: options.easing,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3907 complete: done
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3908 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3909 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3910
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3911
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3912 /*!
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3913 * jQuery UI Effects Transfer 1.13.2
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3914 * http://jqueryui.com
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3915 *
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3916 * Copyright jQuery Foundation and other contributors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3917 * Released under the MIT license.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3918 * http://jquery.org/license
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3919 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3920
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3921 //>>label: Transfer Effect
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3922 //>>group: Effects
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3923 //>>description: Displays a transfer effect from one element to another.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3924 //>>docs: http://api.jqueryui.com/transfer-effect/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3925 //>>demos: http://jqueryui.com/effect/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3926
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3927
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3928 var effect;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3929 if ( $.uiBackCompat !== false ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3930 effect = $.effects.define( "transfer", function( options, done ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3931 $( this ).transfer( options, done );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3932 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3933 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3934 var effectsEffectTransfer = effect;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3935
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3936
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3937 /*!
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3938 * jQuery UI Focusable 1.13.2
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3939 * http://jqueryui.com
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3940 *
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3941 * Copyright jQuery Foundation and other contributors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3942 * Released under the MIT license.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3943 * http://jquery.org/license
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3944 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3945
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3946 //>>label: :focusable Selector
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3947 //>>group: Core
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3948 //>>description: Selects elements which can be focused.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3949 //>>docs: http://api.jqueryui.com/focusable-selector/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3950
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3951
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3952 // Selectors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3953 $.ui.focusable = function( element, hasTabindex ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3954 var map, mapName, img, focusableIfVisible, fieldset,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3955 nodeName = element.nodeName.toLowerCase();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3956
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3957 if ( "area" === nodeName ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3958 map = element.parentNode;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3959 mapName = map.name;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3960 if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3961 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3962 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3963 img = $( "img[usemap='#" + mapName + "']" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3964 return img.length > 0 && img.is( ":visible" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3965 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3966
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3967 if ( /^(input|select|textarea|button|object)$/.test( nodeName ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3968 focusableIfVisible = !element.disabled;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3969
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3970 if ( focusableIfVisible ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3971
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3972 // Form controls within a disabled fieldset are disabled.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3973 // However, controls within the fieldset's legend do not get disabled.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3974 // Since controls generally aren't placed inside legends, we skip
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3975 // this portion of the check.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3976 fieldset = $( element ).closest( "fieldset" )[ 0 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3977 if ( fieldset ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3978 focusableIfVisible = !fieldset.disabled;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3979 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3980 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3981 } else if ( "a" === nodeName ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3982 focusableIfVisible = element.href || hasTabindex;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3983 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3984 focusableIfVisible = hasTabindex;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3985 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3986
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3987 return focusableIfVisible && $( element ).is( ":visible" ) && visible( $( element ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3988 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3989
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3990 // Support: IE 8 only
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3991 // IE 8 doesn't resolve inherit to visible/hidden for computed values
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3992 function visible( element ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3993 var visibility = element.css( "visibility" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3994 while ( visibility === "inherit" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3995 element = element.parent();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3996 visibility = element.css( "visibility" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3997 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3998 return visibility === "visible";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
3999 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4000
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4001 $.extend( $.expr.pseudos, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4002 focusable: function( element ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4003 return $.ui.focusable( element, $.attr( element, "tabindex" ) != null );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4004 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4005 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4006
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4007 var focusable = $.ui.focusable;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4008
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4009
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4010
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4011 // Support: IE8 Only
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4012 // IE8 does not support the form attribute and when it is supplied. It overwrites the form prop
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4013 // with a string, so we need to find the proper form.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4014 var form = $.fn._form = function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4015 return typeof this[ 0 ].form === "string" ? this.closest( "form" ) : $( this[ 0 ].form );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4016 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4017
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4018
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4019 /*!
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4020 * jQuery UI Form Reset Mixin 1.13.2
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4021 * http://jqueryui.com
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4022 *
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4023 * Copyright jQuery Foundation and other contributors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4024 * Released under the MIT license.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4025 * http://jquery.org/license
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4026 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4027
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4028 //>>label: Form Reset Mixin
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4029 //>>group: Core
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4030 //>>description: Refresh input widgets when their form is reset
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4031 //>>docs: http://api.jqueryui.com/form-reset-mixin/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4032
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4033
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4034 var formResetMixin = $.ui.formResetMixin = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4035 _formResetHandler: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4036 var form = $( this );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4037
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4038 // Wait for the form reset to actually happen before refreshing
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4039 setTimeout( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4040 var instances = form.data( "ui-form-reset-instances" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4041 $.each( instances, function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4042 this.refresh();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4043 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4044 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4045 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4046
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4047 _bindFormResetHandler: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4048 this.form = this.element._form();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4049 if ( !this.form.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4050 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4051 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4052
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4053 var instances = this.form.data( "ui-form-reset-instances" ) || [];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4054 if ( !instances.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4055
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4056 // We don't use _on() here because we use a single event handler per form
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4057 this.form.on( "reset.ui-form-reset", this._formResetHandler );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4058 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4059 instances.push( this );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4060 this.form.data( "ui-form-reset-instances", instances );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4061 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4062
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4063 _unbindFormResetHandler: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4064 if ( !this.form.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4065 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4066 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4067
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4068 var instances = this.form.data( "ui-form-reset-instances" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4069 instances.splice( $.inArray( this, instances ), 1 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4070 if ( instances.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4071 this.form.data( "ui-form-reset-instances", instances );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4072 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4073 this.form
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4074 .removeData( "ui-form-reset-instances" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4075 .off( "reset.ui-form-reset" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4076 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4077 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4078 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4079
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4080
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4081 /*!
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4082 * jQuery UI Support for jQuery core 1.8.x and newer 1.13.2
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4083 * http://jqueryui.com
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4084 *
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4085 * Copyright jQuery Foundation and other contributors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4086 * Released under the MIT license.
1670
6fd889391d2c Added a Speed Dial to the web browser including the capability to select the first ten pages by pressing Meta+1 to Meta+0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4087 * http://jquery.org/license
6fd889391d2c Added a Speed Dial to the web browser including the capability to select the first ten pages by pressing Meta+1 to Meta+0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4088 *
9678
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4089 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4090
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4091 //>>label: jQuery 1.8+ Support
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4092 //>>group: Core
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4093 //>>description: Support version 1.8.x and newer of jQuery core
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4094
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4095
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4096 // Support: jQuery 1.9.x or older
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4097 // $.expr[ ":" ] is deprecated.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4098 if ( !$.expr.pseudos ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4099 $.expr.pseudos = $.expr[ ":" ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4100 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4101
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4102 // Support: jQuery 1.11.x or older
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4103 // $.unique has been renamed to $.uniqueSort
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4104 if ( !$.uniqueSort ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4105 $.uniqueSort = $.unique;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4106 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4107
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4108 // Support: jQuery 2.2.x or older.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4109 // This method has been defined in jQuery 3.0.0.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4110 // Code from https://github.com/jquery/jquery/blob/e539bac79e666bba95bba86d690b4e609dca2286/src/selector/escapeSelector.js
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4111 if ( !$.escapeSelector ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4112
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4113 // CSS string/identifier serialization
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4114 // https://drafts.csswg.org/cssom/#common-serializing-idioms
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4115 var rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4116
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4117 var fcssescape = function( ch, asCodePoint ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4118 if ( asCodePoint ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4119
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4120 // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4121 if ( ch === "\0" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4122 return "\uFFFD";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4123 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4124
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4125 // Control characters and (dependent upon position) numbers get escaped as code points
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4126 return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4127 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4128
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4129 // Other potentially-special ASCII characters get backslash-escaped
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4130 return "\\" + ch;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4131 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4132
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4133 $.escapeSelector = function( sel ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4134 return ( sel + "" ).replace( rcssescape, fcssescape );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4135 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4136 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4137
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4138 // Support: jQuery 3.4.x or older
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4139 // These methods have been defined in jQuery 3.5.0.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4140 if ( !$.fn.even || !$.fn.odd ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4141 $.fn.extend( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4142 even: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4143 return this.filter( function( i ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4144 return i % 2 === 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4145 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4146 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4147 odd: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4148 return this.filter( function( i ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4149 return i % 2 === 1;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4150 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4151 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4152 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4153 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4154
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4155 ;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4156 /*!
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4157 * jQuery UI Keycode 1.13.2
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4158 * http://jqueryui.com
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4159 *
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4160 * Copyright jQuery Foundation and other contributors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4161 * Released under the MIT license.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4162 * http://jquery.org/license
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4163 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4164
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4165 //>>label: Keycode
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4166 //>>group: Core
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4167 //>>description: Provide keycodes as keynames
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4168 //>>docs: http://api.jqueryui.com/jQuery.ui.keyCode/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4169
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4170
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4171 var keycode = $.ui.keyCode = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4172 BACKSPACE: 8,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4173 COMMA: 188,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4174 DELETE: 46,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4175 DOWN: 40,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4176 END: 35,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4177 ENTER: 13,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4178 ESCAPE: 27,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4179 HOME: 36,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4180 LEFT: 37,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4181 PAGE_DOWN: 34,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4182 PAGE_UP: 33,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4183 PERIOD: 190,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4184 RIGHT: 39,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4185 SPACE: 32,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4186 TAB: 9,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4187 UP: 38
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4188 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4189
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4190
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4191 /*!
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4192 * jQuery UI Labels 1.13.2
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4193 * http://jqueryui.com
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4194 *
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4195 * Copyright jQuery Foundation and other contributors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4196 * Released under the MIT license.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4197 * http://jquery.org/license
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4198 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4199
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4200 //>>label: labels
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4201 //>>group: Core
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4202 //>>description: Find all the labels associated with a given input
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4203 //>>docs: http://api.jqueryui.com/labels/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4204
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4205
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4206 var labels = $.fn.labels = function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4207 var ancestor, selector, id, labels, ancestors;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4208
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4209 if ( !this.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4210 return this.pushStack( [] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4211 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4212
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4213 // Check control.labels first
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4214 if ( this[ 0 ].labels && this[ 0 ].labels.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4215 return this.pushStack( this[ 0 ].labels );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4216 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4217
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4218 // Support: IE <= 11, FF <= 37, Android <= 2.3 only
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4219 // Above browsers do not support control.labels. Everything below is to support them
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4220 // as well as document fragments. control.labels does not work on document fragments
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4221 labels = this.eq( 0 ).parents( "label" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4222
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4223 // Look for the label based on the id
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4224 id = this.attr( "id" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4225 if ( id ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4226
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4227 // We don't search against the document in case the element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4228 // is disconnected from the DOM
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4229 ancestor = this.eq( 0 ).parents().last();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4230
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4231 // Get a full set of top level ancestors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4232 ancestors = ancestor.add( ancestor.length ? ancestor.siblings() : this.siblings() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4233
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4234 // Create a selector for the label based on the id
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4235 selector = "label[for='" + $.escapeSelector( id ) + "']";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4236
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4237 labels = labels.add( ancestors.find( selector ).addBack( selector ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4238
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4239 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4240
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4241 // Return whatever we have found for labels
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4242 return this.pushStack( labels );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4243 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4244
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4245
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4246 /*!
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4247 * jQuery UI Scroll Parent 1.13.2
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4248 * http://jqueryui.com
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4249 *
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4250 * Copyright jQuery Foundation and other contributors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4251 * Released under the MIT license.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4252 * http://jquery.org/license
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4253 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4254
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4255 //>>label: scrollParent
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4256 //>>group: Core
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4257 //>>description: Get the closest ancestor element that is scrollable.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4258 //>>docs: http://api.jqueryui.com/scrollParent/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4259
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4260
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4261 var scrollParent = $.fn.scrollParent = function( includeHidden ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4262 var position = this.css( "position" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4263 excludeStaticParent = position === "absolute",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4264 overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4265 scrollParent = this.parents().filter( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4266 var parent = $( this );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4267 if ( excludeStaticParent && parent.css( "position" ) === "static" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4268 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4269 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4270 return overflowRegex.test( parent.css( "overflow" ) + parent.css( "overflow-y" ) +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4271 parent.css( "overflow-x" ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4272 } ).eq( 0 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4273
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4274 return position === "fixed" || !scrollParent.length ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4275 $( this[ 0 ].ownerDocument || document ) :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4276 scrollParent;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4277 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4278
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4279
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4280 /*!
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4281 * jQuery UI Tabbable 1.13.2
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4282 * http://jqueryui.com
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4283 *
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4284 * Copyright jQuery Foundation and other contributors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4285 * Released under the MIT license.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4286 * http://jquery.org/license
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4287 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4288
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4289 //>>label: :tabbable Selector
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4290 //>>group: Core
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4291 //>>description: Selects elements which can be tabbed to.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4292 //>>docs: http://api.jqueryui.com/tabbable-selector/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4293
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4294
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4295 var tabbable = $.extend( $.expr.pseudos, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4296 tabbable: function( element ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4297 var tabIndex = $.attr( element, "tabindex" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4298 hasTabindex = tabIndex != null;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4299 return ( !hasTabindex || tabIndex >= 0 ) && $.ui.focusable( element, hasTabindex );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4300 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4301 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4302
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4303
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4304 /*!
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4305 * jQuery UI Unique ID 1.13.2
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4306 * http://jqueryui.com
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4307 *
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4308 * Copyright jQuery Foundation and other contributors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4309 * Released under the MIT license.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4310 * http://jquery.org/license
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4311 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4312
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4313 //>>label: uniqueId
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4314 //>>group: Core
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4315 //>>description: Functions to generate and remove uniqueId's
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4316 //>>docs: http://api.jqueryui.com/uniqueId/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4317
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4318
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4319 var uniqueId = $.fn.extend( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4320 uniqueId: ( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4321 var uuid = 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4322
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4323 return function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4324 return this.each( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4325 if ( !this.id ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4326 this.id = "ui-id-" + ( ++uuid );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4327 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4328 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4329 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4330 } )(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4331
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4332 removeUniqueId: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4333 return this.each( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4334 if ( /^ui-id-\d+$/.test( this.id ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4335 $( this ).removeAttr( "id" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4336 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4337 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4338 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4339 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4340
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4341
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4342 /*!
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4343 * jQuery UI Accordion 1.13.2
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4344 * http://jqueryui.com
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4345 *
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4346 * Copyright jQuery Foundation and other contributors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4347 * Released under the MIT license.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4348 * http://jquery.org/license
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4349 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4350
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4351 //>>label: Accordion
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4352 //>>group: Widgets
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4353 /* eslint-disable max-len */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4354 //>>description: Displays collapsible content panels for presenting information in a limited amount of space.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4355 /* eslint-enable max-len */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4356 //>>docs: http://api.jqueryui.com/accordion/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4357 //>>demos: http://jqueryui.com/accordion/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4358 //>>css.structure: ../../themes/base/core.css
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4359 //>>css.structure: ../../themes/base/accordion.css
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4360 //>>css.theme: ../../themes/base/theme.css
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4361
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4362
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4363 var widgetsAccordion = $.widget( "ui.accordion", {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4364 version: "1.13.2",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4365 options: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4366 active: 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4367 animate: {},
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4368 classes: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4369 "ui-accordion-header": "ui-corner-top",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4370 "ui-accordion-header-collapsed": "ui-corner-all",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4371 "ui-accordion-content": "ui-corner-bottom"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4372 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4373 collapsible: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4374 event: "click",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4375 header: function( elem ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4376 return elem.find( "> li > :first-child" ).add( elem.find( "> :not(li)" ).even() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4377 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4378 heightStyle: "auto",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4379 icons: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4380 activeHeader: "ui-icon-triangle-1-s",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4381 header: "ui-icon-triangle-1-e"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4382 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4383
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4384 // Callbacks
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4385 activate: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4386 beforeActivate: null
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4387 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4388
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4389 hideProps: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4390 borderTopWidth: "hide",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4391 borderBottomWidth: "hide",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4392 paddingTop: "hide",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4393 paddingBottom: "hide",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4394 height: "hide"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4395 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4396
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4397 showProps: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4398 borderTopWidth: "show",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4399 borderBottomWidth: "show",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4400 paddingTop: "show",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4401 paddingBottom: "show",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4402 height: "show"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4403 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4404
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4405 _create: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4406 var options = this.options;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4407
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4408 this.prevShow = this.prevHide = $();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4409 this._addClass( "ui-accordion", "ui-widget ui-helper-reset" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4410 this.element.attr( "role", "tablist" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4411
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4412 // Don't allow collapsible: false and active: false / null
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4413 if ( !options.collapsible && ( options.active === false || options.active == null ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4414 options.active = 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4415 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4416
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4417 this._processPanels();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4418
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4419 // handle negative values
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4420 if ( options.active < 0 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4421 options.active += this.headers.length;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4422 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4423 this._refresh();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4424 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4425
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4426 _getCreateEventData: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4427 return {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4428 header: this.active,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4429 panel: !this.active.length ? $() : this.active.next()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4430 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4431 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4432
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4433 _createIcons: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4434 var icon, children,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4435 icons = this.options.icons;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4436
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4437 if ( icons ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4438 icon = $( "<span>" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4439 this._addClass( icon, "ui-accordion-header-icon", "ui-icon " + icons.header );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4440 icon.prependTo( this.headers );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4441 children = this.active.children( ".ui-accordion-header-icon" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4442 this._removeClass( children, icons.header )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4443 ._addClass( children, null, icons.activeHeader )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4444 ._addClass( this.headers, "ui-accordion-icons" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4445 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4446 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4447
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4448 _destroyIcons: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4449 this._removeClass( this.headers, "ui-accordion-icons" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4450 this.headers.children( ".ui-accordion-header-icon" ).remove();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4451 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4452
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4453 _destroy: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4454 var contents;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4455
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4456 // Clean up main element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4457 this.element.removeAttr( "role" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4458
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4459 // Clean up headers
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4460 this.headers
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4461 .removeAttr( "role aria-expanded aria-selected aria-controls tabIndex" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4462 .removeUniqueId();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4463
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4464 this._destroyIcons();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4465
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4466 // Clean up content panels
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4467 contents = this.headers.next()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4468 .css( "display", "" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4469 .removeAttr( "role aria-hidden aria-labelledby" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4470 .removeUniqueId();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4471
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4472 if ( this.options.heightStyle !== "content" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4473 contents.css( "height", "" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4474 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4475 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4476
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4477 _setOption: function( key, value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4478 if ( key === "active" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4479
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4480 // _activate() will handle invalid values and update this.options
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4481 this._activate( value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4482 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4483 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4484
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4485 if ( key === "event" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4486 if ( this.options.event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4487 this._off( this.headers, this.options.event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4488 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4489 this._setupEvents( value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4490 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4491
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4492 this._super( key, value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4493
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4494 // Setting collapsible: false while collapsed; open first panel
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4495 if ( key === "collapsible" && !value && this.options.active === false ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4496 this._activate( 0 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4497 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4498
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4499 if ( key === "icons" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4500 this._destroyIcons();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4501 if ( value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4502 this._createIcons();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4503 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4504 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4505 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4506
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4507 _setOptionDisabled: function( value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4508 this._super( value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4509
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4510 this.element.attr( "aria-disabled", value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4511
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4512 // Support: IE8 Only
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4513 // #5332 / #6059 - opacity doesn't cascade to positioned elements in IE
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4514 // so we need to add the disabled class to the headers and panels
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4515 this._toggleClass( null, "ui-state-disabled", !!value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4516 this._toggleClass( this.headers.add( this.headers.next() ), null, "ui-state-disabled",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4517 !!value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4518 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4519
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4520 _keydown: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4521 if ( event.altKey || event.ctrlKey ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4522 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4523 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4524
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4525 var keyCode = $.ui.keyCode,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4526 length = this.headers.length,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4527 currentIndex = this.headers.index( event.target ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4528 toFocus = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4529
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4530 switch ( event.keyCode ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4531 case keyCode.RIGHT:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4532 case keyCode.DOWN:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4533 toFocus = this.headers[ ( currentIndex + 1 ) % length ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4534 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4535 case keyCode.LEFT:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4536 case keyCode.UP:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4537 toFocus = this.headers[ ( currentIndex - 1 + length ) % length ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4538 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4539 case keyCode.SPACE:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4540 case keyCode.ENTER:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4541 this._eventHandler( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4542 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4543 case keyCode.HOME:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4544 toFocus = this.headers[ 0 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4545 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4546 case keyCode.END:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4547 toFocus = this.headers[ length - 1 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4548 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4549 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4550
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4551 if ( toFocus ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4552 $( event.target ).attr( "tabIndex", -1 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4553 $( toFocus ).attr( "tabIndex", 0 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4554 $( toFocus ).trigger( "focus" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4555 event.preventDefault();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4556 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4557 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4558
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4559 _panelKeyDown: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4560 if ( event.keyCode === $.ui.keyCode.UP && event.ctrlKey ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4561 $( event.currentTarget ).prev().trigger( "focus" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4562 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4563 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4564
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4565 refresh: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4566 var options = this.options;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4567 this._processPanels();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4568
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4569 // Was collapsed or no panel
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4570 if ( ( options.active === false && options.collapsible === true ) ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4571 !this.headers.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4572 options.active = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4573 this.active = $();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4574
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4575 // active false only when collapsible is true
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4576 } else if ( options.active === false ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4577 this._activate( 0 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4578
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4579 // was active, but active panel is gone
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4580 } else if ( this.active.length && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4581
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4582 // all remaining panel are disabled
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4583 if ( this.headers.length === this.headers.find( ".ui-state-disabled" ).length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4584 options.active = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4585 this.active = $();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4586
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4587 // activate previous panel
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4588 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4589 this._activate( Math.max( 0, options.active - 1 ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4590 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4591
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4592 // was active, active panel still exists
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4593 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4594
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4595 // make sure active index is correct
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4596 options.active = this.headers.index( this.active );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4597 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4598
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4599 this._destroyIcons();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4600
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4601 this._refresh();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4602 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4603
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4604 _processPanels: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4605 var prevHeaders = this.headers,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4606 prevPanels = this.panels;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4607
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4608 if ( typeof this.options.header === "function" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4609 this.headers = this.options.header( this.element );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4610 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4611 this.headers = this.element.find( this.options.header );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4612 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4613 this._addClass( this.headers, "ui-accordion-header ui-accordion-header-collapsed",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4614 "ui-state-default" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4615
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4616 this.panels = this.headers.next().filter( ":not(.ui-accordion-content-active)" ).hide();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4617 this._addClass( this.panels, "ui-accordion-content", "ui-helper-reset ui-widget-content" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4618
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4619 // Avoid memory leaks (#10056)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4620 if ( prevPanels ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4621 this._off( prevHeaders.not( this.headers ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4622 this._off( prevPanels.not( this.panels ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4623 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4624 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4625
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4626 _refresh: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4627 var maxHeight,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4628 options = this.options,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4629 heightStyle = options.heightStyle,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4630 parent = this.element.parent();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4631
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4632 this.active = this._findActive( options.active );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4633 this._addClass( this.active, "ui-accordion-header-active", "ui-state-active" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4634 ._removeClass( this.active, "ui-accordion-header-collapsed" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4635 this._addClass( this.active.next(), "ui-accordion-content-active" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4636 this.active.next().show();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4637
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4638 this.headers
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4639 .attr( "role", "tab" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4640 .each( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4641 var header = $( this ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4642 headerId = header.uniqueId().attr( "id" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4643 panel = header.next(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4644 panelId = panel.uniqueId().attr( "id" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4645 header.attr( "aria-controls", panelId );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4646 panel.attr( "aria-labelledby", headerId );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4647 } )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4648 .next()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4649 .attr( "role", "tabpanel" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4650
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4651 this.headers
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4652 .not( this.active )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4653 .attr( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4654 "aria-selected": "false",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4655 "aria-expanded": "false",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4656 tabIndex: -1
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4657 } )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4658 .next()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4659 .attr( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4660 "aria-hidden": "true"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4661 } )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4662 .hide();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4663
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4664 // Make sure at least one header is in the tab order
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4665 if ( !this.active.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4666 this.headers.eq( 0 ).attr( "tabIndex", 0 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4667 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4668 this.active.attr( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4669 "aria-selected": "true",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4670 "aria-expanded": "true",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4671 tabIndex: 0
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4672 } )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4673 .next()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4674 .attr( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4675 "aria-hidden": "false"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4676 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4677 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4678
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4679 this._createIcons();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4680
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4681 this._setupEvents( options.event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4682
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4683 if ( heightStyle === "fill" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4684 maxHeight = parent.height();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4685 this.element.siblings( ":visible" ).each( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4686 var elem = $( this ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4687 position = elem.css( "position" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4688
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4689 if ( position === "absolute" || position === "fixed" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4690 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4691 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4692 maxHeight -= elem.outerHeight( true );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4693 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4694
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4695 this.headers.each( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4696 maxHeight -= $( this ).outerHeight( true );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4697 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4698
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4699 this.headers.next()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4700 .each( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4701 $( this ).height( Math.max( 0, maxHeight -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4702 $( this ).innerHeight() + $( this ).height() ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4703 } )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4704 .css( "overflow", "auto" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4705 } else if ( heightStyle === "auto" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4706 maxHeight = 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4707 this.headers.next()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4708 .each( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4709 var isVisible = $( this ).is( ":visible" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4710 if ( !isVisible ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4711 $( this ).show();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4712 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4713 maxHeight = Math.max( maxHeight, $( this ).css( "height", "" ).height() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4714 if ( !isVisible ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4715 $( this ).hide();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4716 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4717 } )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4718 .height( maxHeight );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4719 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4720 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4721
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4722 _activate: function( index ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4723 var active = this._findActive( index )[ 0 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4724
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4725 // Trying to activate the already active panel
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4726 if ( active === this.active[ 0 ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4727 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4728 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4729
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4730 // Trying to collapse, simulate a click on the currently active header
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4731 active = active || this.active[ 0 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4732
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4733 this._eventHandler( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4734 target: active,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4735 currentTarget: active,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4736 preventDefault: $.noop
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4737 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4738 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4739
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4740 _findActive: function( selector ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4741 return typeof selector === "number" ? this.headers.eq( selector ) : $();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4742 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4743
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4744 _setupEvents: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4745 var events = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4746 keydown: "_keydown"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4747 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4748 if ( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4749 $.each( event.split( " " ), function( index, eventName ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4750 events[ eventName ] = "_eventHandler";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4751 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4752 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4753
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4754 this._off( this.headers.add( this.headers.next() ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4755 this._on( this.headers, events );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4756 this._on( this.headers.next(), { keydown: "_panelKeyDown" } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4757 this._hoverable( this.headers );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4758 this._focusable( this.headers );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4759 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4760
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4761 _eventHandler: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4762 var activeChildren, clickedChildren,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4763 options = this.options,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4764 active = this.active,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4765 clicked = $( event.currentTarget ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4766 clickedIsActive = clicked[ 0 ] === active[ 0 ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4767 collapsing = clickedIsActive && options.collapsible,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4768 toShow = collapsing ? $() : clicked.next(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4769 toHide = active.next(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4770 eventData = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4771 oldHeader: active,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4772 oldPanel: toHide,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4773 newHeader: collapsing ? $() : clicked,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4774 newPanel: toShow
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4775 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4776
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4777 event.preventDefault();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4778
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4779 if (
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4780
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4781 // click on active header, but not collapsible
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4782 ( clickedIsActive && !options.collapsible ) ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4783
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4784 // allow canceling activation
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4785 ( this._trigger( "beforeActivate", event, eventData ) === false ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4786 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4787 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4788
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4789 options.active = collapsing ? false : this.headers.index( clicked );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4790
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4791 // When the call to ._toggle() comes after the class changes
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4792 // it causes a very odd bug in IE 8 (see #6720)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4793 this.active = clickedIsActive ? $() : clicked;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4794 this._toggle( eventData );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4795
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4796 // Switch classes
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4797 // corner classes on the previously active header stay after the animation
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4798 this._removeClass( active, "ui-accordion-header-active", "ui-state-active" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4799 if ( options.icons ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4800 activeChildren = active.children( ".ui-accordion-header-icon" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4801 this._removeClass( activeChildren, null, options.icons.activeHeader )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4802 ._addClass( activeChildren, null, options.icons.header );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4803 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4804
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4805 if ( !clickedIsActive ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4806 this._removeClass( clicked, "ui-accordion-header-collapsed" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4807 ._addClass( clicked, "ui-accordion-header-active", "ui-state-active" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4808 if ( options.icons ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4809 clickedChildren = clicked.children( ".ui-accordion-header-icon" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4810 this._removeClass( clickedChildren, null, options.icons.header )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4811 ._addClass( clickedChildren, null, options.icons.activeHeader );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4812 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4813
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4814 this._addClass( clicked.next(), "ui-accordion-content-active" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4815 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4816 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4817
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4818 _toggle: function( data ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4819 var toShow = data.newPanel,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4820 toHide = this.prevShow.length ? this.prevShow : data.oldPanel;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4821
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4822 // Handle activating a panel during the animation for another activation
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4823 this.prevShow.add( this.prevHide ).stop( true, true );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4824 this.prevShow = toShow;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4825 this.prevHide = toHide;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4826
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4827 if ( this.options.animate ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4828 this._animate( toShow, toHide, data );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4829 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4830 toHide.hide();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4831 toShow.show();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4832 this._toggleComplete( data );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4833 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4834
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4835 toHide.attr( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4836 "aria-hidden": "true"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4837 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4838 toHide.prev().attr( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4839 "aria-selected": "false",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4840 "aria-expanded": "false"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4841 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4842
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4843 // if we're switching panels, remove the old header from the tab order
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4844 // if we're opening from collapsed state, remove the previous header from the tab order
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4845 // if we're collapsing, then keep the collapsing header in the tab order
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4846 if ( toShow.length && toHide.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4847 toHide.prev().attr( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4848 "tabIndex": -1,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4849 "aria-expanded": "false"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4850 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4851 } else if ( toShow.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4852 this.headers.filter( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4853 return parseInt( $( this ).attr( "tabIndex" ), 10 ) === 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4854 } )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4855 .attr( "tabIndex", -1 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4856 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4857
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4858 toShow
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4859 .attr( "aria-hidden", "false" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4860 .prev()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4861 .attr( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4862 "aria-selected": "true",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4863 "aria-expanded": "true",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4864 tabIndex: 0
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4865 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4866 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4867
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4868 _animate: function( toShow, toHide, data ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4869 var total, easing, duration,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4870 that = this,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4871 adjust = 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4872 boxSizing = toShow.css( "box-sizing" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4873 down = toShow.length &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4874 ( !toHide.length || ( toShow.index() < toHide.index() ) ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4875 animate = this.options.animate || {},
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4876 options = down && animate.down || animate,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4877 complete = function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4878 that._toggleComplete( data );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4879 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4880
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4881 if ( typeof options === "number" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4882 duration = options;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4883 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4884 if ( typeof options === "string" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4885 easing = options;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4886 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4887
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4888 // fall back from options to animation in case of partial down settings
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4889 easing = easing || options.easing || animate.easing;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4890 duration = duration || options.duration || animate.duration;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4891
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4892 if ( !toHide.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4893 return toShow.animate( this.showProps, duration, easing, complete );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4894 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4895 if ( !toShow.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4896 return toHide.animate( this.hideProps, duration, easing, complete );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4897 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4898
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4899 total = toShow.show().outerHeight();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4900 toHide.animate( this.hideProps, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4901 duration: duration,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4902 easing: easing,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4903 step: function( now, fx ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4904 fx.now = Math.round( now );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4905 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4906 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4907 toShow
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4908 .hide()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4909 .animate( this.showProps, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4910 duration: duration,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4911 easing: easing,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4912 complete: complete,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4913 step: function( now, fx ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4914 fx.now = Math.round( now );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4915 if ( fx.prop !== "height" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4916 if ( boxSizing === "content-box" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4917 adjust += fx.now;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4918 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4919 } else if ( that.options.heightStyle !== "content" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4920 fx.now = Math.round( total - toHide.outerHeight() - adjust );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4921 adjust = 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4922 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4923 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4924 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4925 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4926
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4927 _toggleComplete: function( data ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4928 var toHide = data.oldPanel,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4929 prev = toHide.prev();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4930
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4931 this._removeClass( toHide, "ui-accordion-content-active" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4932 this._removeClass( prev, "ui-accordion-header-active" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4933 ._addClass( prev, "ui-accordion-header-collapsed" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4934
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4935 // Work around for rendering bug in IE (#5421)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4936 if ( toHide.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4937 toHide.parent()[ 0 ].className = toHide.parent()[ 0 ].className;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4938 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4939 this._trigger( "activate", null, data );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4940 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4941 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4942
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4943
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4944
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4945 var safeActiveElement = $.ui.safeActiveElement = function( document ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4946 var activeElement;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4947
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4948 // Support: IE 9 only
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4949 // IE9 throws an "Unspecified error" accessing document.activeElement from an <iframe>
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4950 try {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4951 activeElement = document.activeElement;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4952 } catch ( error ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4953 activeElement = document.body;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4954 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4955
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4956 // Support: IE 9 - 11 only
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4957 // IE may return null instead of an element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4958 // Interestingly, this only seems to occur when NOT in an iframe
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4959 if ( !activeElement ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4960 activeElement = document.body;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4961 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4962
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4963 // Support: IE 11 only
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4964 // IE11 returns a seemingly empty object in some cases when accessing
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4965 // document.activeElement from an <iframe>
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4966 if ( !activeElement.nodeName ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4967 activeElement = document.body;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4968 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4969
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4970 return activeElement;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4971 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4972
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4973
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4974 /*!
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4975 * jQuery UI Menu 1.13.2
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4976 * http://jqueryui.com
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4977 *
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4978 * Copyright jQuery Foundation and other contributors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4979 * Released under the MIT license.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4980 * http://jquery.org/license
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4981 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4982
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4983 //>>label: Menu
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4984 //>>group: Widgets
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4985 //>>description: Creates nestable menus.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4986 //>>docs: http://api.jqueryui.com/menu/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4987 //>>demos: http://jqueryui.com/menu/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4988 //>>css.structure: ../../themes/base/core.css
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4989 //>>css.structure: ../../themes/base/menu.css
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4990 //>>css.theme: ../../themes/base/theme.css
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4991
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4992
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4993 var widgetsMenu = $.widget( "ui.menu", {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4994 version: "1.13.2",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4995 defaultElement: "<ul>",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4996 delay: 300,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4997 options: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4998 icons: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
4999 submenu: "ui-icon-caret-1-e"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5000 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5001 items: "> *",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5002 menus: "ul",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5003 position: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5004 my: "left top",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5005 at: "right top"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5006 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5007 role: "menu",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5008
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5009 // Callbacks
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5010 blur: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5011 focus: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5012 select: null
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5013 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5014
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5015 _create: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5016 this.activeMenu = this.element;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5017
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5018 // Flag used to prevent firing of the click handler
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5019 // as the event bubbles up through nested menus
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5020 this.mouseHandled = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5021 this.lastMousePosition = { x: null, y: null };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5022 this.element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5023 .uniqueId()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5024 .attr( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5025 role: this.options.role,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5026 tabIndex: 0
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5027 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5028
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5029 this._addClass( "ui-menu", "ui-widget ui-widget-content" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5030 this._on( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5031
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5032 // Prevent focus from sticking to links inside menu after clicking
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5033 // them (focus should always stay on UL during navigation).
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5034 "mousedown .ui-menu-item": function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5035 event.preventDefault();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5036
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5037 this._activateItem( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5038 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5039 "click .ui-menu-item": function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5040 var target = $( event.target );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5041 var active = $( $.ui.safeActiveElement( this.document[ 0 ] ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5042 if ( !this.mouseHandled && target.not( ".ui-state-disabled" ).length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5043 this.select( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5044
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5045 // Only set the mouseHandled flag if the event will bubble, see #9469.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5046 if ( !event.isPropagationStopped() ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5047 this.mouseHandled = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5048 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5049
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5050 // Open submenu on click
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5051 if ( target.has( ".ui-menu" ).length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5052 this.expand( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5053 } else if ( !this.element.is( ":focus" ) &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5054 active.closest( ".ui-menu" ).length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5055
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5056 // Redirect focus to the menu
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5057 this.element.trigger( "focus", [ true ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5058
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5059 // If the active item is on the top level, let it stay active.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5060 // Otherwise, blur the active item since it is no longer visible.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5061 if ( this.active && this.active.parents( ".ui-menu" ).length === 1 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5062 clearTimeout( this.timer );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5063 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5064 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5065 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5066 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5067 "mouseenter .ui-menu-item": "_activateItem",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5068 "mousemove .ui-menu-item": "_activateItem",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5069 mouseleave: "collapseAll",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5070 "mouseleave .ui-menu": "collapseAll",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5071 focus: function( event, keepActiveItem ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5072
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5073 // If there's already an active item, keep it active
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5074 // If not, activate the first item
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5075 var item = this.active || this._menuItems().first();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5076
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5077 if ( !keepActiveItem ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5078 this.focus( event, item );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5079 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5080 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5081 blur: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5082 this._delay( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5083 var notContained = !$.contains(
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5084 this.element[ 0 ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5085 $.ui.safeActiveElement( this.document[ 0 ] )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5086 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5087 if ( notContained ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5088 this.collapseAll( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5089 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5090 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5091 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5092 keydown: "_keydown"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5093 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5094
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5095 this.refresh();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5096
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5097 // Clicks outside of a menu collapse any open menus
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5098 this._on( this.document, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5099 click: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5100 if ( this._closeOnDocumentClick( event ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5101 this.collapseAll( event, true );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5102 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5103
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5104 // Reset the mouseHandled flag
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5105 this.mouseHandled = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5106 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5107 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5108 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5109
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5110 _activateItem: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5111
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5112 // Ignore mouse events while typeahead is active, see #10458.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5113 // Prevents focusing the wrong item when typeahead causes a scroll while the mouse
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5114 // is over an item in the menu
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5115 if ( this.previousFilter ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5116 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5117 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5118
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5119 // If the mouse didn't actually move, but the page was scrolled, ignore the event (#9356)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5120 if ( event.clientX === this.lastMousePosition.x &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5121 event.clientY === this.lastMousePosition.y ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5122 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5123 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5124
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5125 this.lastMousePosition = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5126 x: event.clientX,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5127 y: event.clientY
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5128 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5129
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5130 var actualTarget = $( event.target ).closest( ".ui-menu-item" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5131 target = $( event.currentTarget );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5132
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5133 // Ignore bubbled events on parent items, see #11641
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5134 if ( actualTarget[ 0 ] !== target[ 0 ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5135 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5136 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5137
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5138 // If the item is already active, there's nothing to do
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5139 if ( target.is( ".ui-state-active" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5140 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5141 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5142
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5143 // Remove ui-state-active class from siblings of the newly focused menu item
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5144 // to avoid a jump caused by adjacent elements both having a class with a border
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5145 this._removeClass( target.siblings().children( ".ui-state-active" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5146 null, "ui-state-active" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5147 this.focus( event, target );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5148 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5149
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5150 _destroy: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5151 var items = this.element.find( ".ui-menu-item" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5152 .removeAttr( "role aria-disabled" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5153 submenus = items.children( ".ui-menu-item-wrapper" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5154 .removeUniqueId()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5155 .removeAttr( "tabIndex role aria-haspopup" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5156
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5157 // Destroy (sub)menus
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5158 this.element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5159 .removeAttr( "aria-activedescendant" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5160 .find( ".ui-menu" ).addBack()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5161 .removeAttr( "role aria-labelledby aria-expanded aria-hidden aria-disabled " +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5162 "tabIndex" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5163 .removeUniqueId()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5164 .show();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5165
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5166 submenus.children().each( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5167 var elem = $( this );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5168 if ( elem.data( "ui-menu-submenu-caret" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5169 elem.remove();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5170 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5171 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5172 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5173
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5174 _keydown: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5175 var match, prev, character, skip,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5176 preventDefault = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5177
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5178 switch ( event.keyCode ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5179 case $.ui.keyCode.PAGE_UP:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5180 this.previousPage( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5181 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5182 case $.ui.keyCode.PAGE_DOWN:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5183 this.nextPage( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5184 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5185 case $.ui.keyCode.HOME:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5186 this._move( "first", "first", event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5187 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5188 case $.ui.keyCode.END:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5189 this._move( "last", "last", event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5190 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5191 case $.ui.keyCode.UP:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5192 this.previous( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5193 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5194 case $.ui.keyCode.DOWN:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5195 this.next( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5196 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5197 case $.ui.keyCode.LEFT:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5198 this.collapse( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5199 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5200 case $.ui.keyCode.RIGHT:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5201 if ( this.active && !this.active.is( ".ui-state-disabled" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5202 this.expand( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5203 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5204 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5205 case $.ui.keyCode.ENTER:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5206 case $.ui.keyCode.SPACE:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5207 this._activate( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5208 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5209 case $.ui.keyCode.ESCAPE:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5210 this.collapse( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5211 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5212 default:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5213 preventDefault = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5214 prev = this.previousFilter || "";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5215 skip = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5216
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5217 // Support number pad values
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5218 character = event.keyCode >= 96 && event.keyCode <= 105 ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5219 ( event.keyCode - 96 ).toString() : String.fromCharCode( event.keyCode );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5220
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5221 clearTimeout( this.filterTimer );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5222
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5223 if ( character === prev ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5224 skip = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5225 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5226 character = prev + character;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5227 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5228
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5229 match = this._filterMenuItems( character );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5230 match = skip && match.index( this.active.next() ) !== -1 ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5231 this.active.nextAll( ".ui-menu-item" ) :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5232 match;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5233
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5234 // If no matches on the current filter, reset to the last character pressed
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5235 // to move down the menu to the first item that starts with that character
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5236 if ( !match.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5237 character = String.fromCharCode( event.keyCode );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5238 match = this._filterMenuItems( character );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5239 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5240
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5241 if ( match.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5242 this.focus( event, match );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5243 this.previousFilter = character;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5244 this.filterTimer = this._delay( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5245 delete this.previousFilter;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5246 }, 1000 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5247 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5248 delete this.previousFilter;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5249 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5250 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5251
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5252 if ( preventDefault ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5253 event.preventDefault();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5254 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5255 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5256
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5257 _activate: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5258 if ( this.active && !this.active.is( ".ui-state-disabled" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5259 if ( this.active.children( "[aria-haspopup='true']" ).length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5260 this.expand( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5261 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5262 this.select( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5263 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5264 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5265 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5266
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5267 refresh: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5268 var menus, items, newSubmenus, newItems, newWrappers,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5269 that = this,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5270 icon = this.options.icons.submenu,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5271 submenus = this.element.find( this.options.menus );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5272
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5273 this._toggleClass( "ui-menu-icons", null, !!this.element.find( ".ui-icon" ).length );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5274
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5275 // Initialize nested menus
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5276 newSubmenus = submenus.filter( ":not(.ui-menu)" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5277 .hide()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5278 .attr( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5279 role: this.options.role,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5280 "aria-hidden": "true",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5281 "aria-expanded": "false"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5282 } )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5283 .each( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5284 var menu = $( this ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5285 item = menu.prev(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5286 submenuCaret = $( "<span>" ).data( "ui-menu-submenu-caret", true );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5287
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5288 that._addClass( submenuCaret, "ui-menu-icon", "ui-icon " + icon );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5289 item
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5290 .attr( "aria-haspopup", "true" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5291 .prepend( submenuCaret );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5292 menu.attr( "aria-labelledby", item.attr( "id" ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5293 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5294
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5295 this._addClass( newSubmenus, "ui-menu", "ui-widget ui-widget-content ui-front" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5296
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5297 menus = submenus.add( this.element );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5298 items = menus.find( this.options.items );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5299
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5300 // Initialize menu-items containing spaces and/or dashes only as dividers
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5301 items.not( ".ui-menu-item" ).each( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5302 var item = $( this );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5303 if ( that._isDivider( item ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5304 that._addClass( item, "ui-menu-divider", "ui-widget-content" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5305 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5306 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5307
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5308 // Don't refresh list items that are already adapted
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5309 newItems = items.not( ".ui-menu-item, .ui-menu-divider" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5310 newWrappers = newItems.children()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5311 .not( ".ui-menu" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5312 .uniqueId()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5313 .attr( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5314 tabIndex: -1,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5315 role: this._itemRole()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5316 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5317 this._addClass( newItems, "ui-menu-item" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5318 ._addClass( newWrappers, "ui-menu-item-wrapper" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5319
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5320 // Add aria-disabled attribute to any disabled menu item
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5321 items.filter( ".ui-state-disabled" ).attr( "aria-disabled", "true" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5322
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5323 // If the active item has been removed, blur the menu
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5324 if ( this.active && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5325 this.blur();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5326 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5327 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5328
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5329 _itemRole: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5330 return {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5331 menu: "menuitem",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5332 listbox: "option"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5333 }[ this.options.role ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5334 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5335
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5336 _setOption: function( key, value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5337 if ( key === "icons" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5338 var icons = this.element.find( ".ui-menu-icon" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5339 this._removeClass( icons, null, this.options.icons.submenu )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5340 ._addClass( icons, null, value.submenu );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5341 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5342 this._super( key, value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5343 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5344
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5345 _setOptionDisabled: function( value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5346 this._super( value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5347
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5348 this.element.attr( "aria-disabled", String( value ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5349 this._toggleClass( null, "ui-state-disabled", !!value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5350 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5351
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5352 focus: function( event, item ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5353 var nested, focused, activeParent;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5354 this.blur( event, event && event.type === "focus" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5355
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5356 this._scrollIntoView( item );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5357
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5358 this.active = item.first();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5359
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5360 focused = this.active.children( ".ui-menu-item-wrapper" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5361 this._addClass( focused, null, "ui-state-active" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5362
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5363 // Only update aria-activedescendant if there's a role
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5364 // otherwise we assume focus is managed elsewhere
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5365 if ( this.options.role ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5366 this.element.attr( "aria-activedescendant", focused.attr( "id" ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5367 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5368
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5369 // Highlight active parent menu item, if any
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5370 activeParent = this.active
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5371 .parent()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5372 .closest( ".ui-menu-item" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5373 .children( ".ui-menu-item-wrapper" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5374 this._addClass( activeParent, null, "ui-state-active" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5375
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5376 if ( event && event.type === "keydown" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5377 this._close();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5378 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5379 this.timer = this._delay( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5380 this._close();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5381 }, this.delay );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5382 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5383
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5384 nested = item.children( ".ui-menu" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5385 if ( nested.length && event && ( /^mouse/.test( event.type ) ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5386 this._startOpening( nested );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5387 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5388 this.activeMenu = item.parent();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5389
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5390 this._trigger( "focus", event, { item: item } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5391 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5392
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5393 _scrollIntoView: function( item ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5394 var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5395 if ( this._hasScroll() ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5396 borderTop = parseFloat( $.css( this.activeMenu[ 0 ], "borderTopWidth" ) ) || 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5397 paddingTop = parseFloat( $.css( this.activeMenu[ 0 ], "paddingTop" ) ) || 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5398 offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5399 scroll = this.activeMenu.scrollTop();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5400 elementHeight = this.activeMenu.height();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5401 itemHeight = item.outerHeight();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5402
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5403 if ( offset < 0 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5404 this.activeMenu.scrollTop( scroll + offset );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5405 } else if ( offset + itemHeight > elementHeight ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5406 this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5407 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5408 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5409 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5410
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5411 blur: function( event, fromFocus ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5412 if ( !fromFocus ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5413 clearTimeout( this.timer );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5414 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5415
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5416 if ( !this.active ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5417 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5418 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5419
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5420 this._removeClass( this.active.children( ".ui-menu-item-wrapper" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5421 null, "ui-state-active" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5422
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5423 this._trigger( "blur", event, { item: this.active } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5424 this.active = null;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5425 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5426
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5427 _startOpening: function( submenu ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5428 clearTimeout( this.timer );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5429
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5430 // Don't open if already open fixes a Firefox bug that caused a .5 pixel
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5431 // shift in the submenu position when mousing over the caret icon
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5432 if ( submenu.attr( "aria-hidden" ) !== "true" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5433 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5434 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5435
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5436 this.timer = this._delay( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5437 this._close();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5438 this._open( submenu );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5439 }, this.delay );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5440 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5441
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5442 _open: function( submenu ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5443 var position = $.extend( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5444 of: this.active
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5445 }, this.options.position );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5446
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5447 clearTimeout( this.timer );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5448 this.element.find( ".ui-menu" ).not( submenu.parents( ".ui-menu" ) )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5449 .hide()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5450 .attr( "aria-hidden", "true" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5451
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5452 submenu
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5453 .show()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5454 .removeAttr( "aria-hidden" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5455 .attr( "aria-expanded", "true" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5456 .position( position );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5457 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5458
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5459 collapseAll: function( event, all ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5460 clearTimeout( this.timer );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5461 this.timer = this._delay( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5462
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5463 // If we were passed an event, look for the submenu that contains the event
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5464 var currentMenu = all ? this.element :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5465 $( event && event.target ).closest( this.element.find( ".ui-menu" ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5466
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5467 // If we found no valid submenu ancestor, use the main menu to close all
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5468 // sub menus anyway
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5469 if ( !currentMenu.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5470 currentMenu = this.element;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5471 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5472
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5473 this._close( currentMenu );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5474
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5475 this.blur( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5476
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5477 // Work around active item staying active after menu is blurred
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5478 this._removeClass( currentMenu.find( ".ui-state-active" ), null, "ui-state-active" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5479
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5480 this.activeMenu = currentMenu;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5481 }, all ? 0 : this.delay );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5482 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5483
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5484 // With no arguments, closes the currently active menu - if nothing is active
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5485 // it closes all menus. If passed an argument, it will search for menus BELOW
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5486 _close: function( startMenu ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5487 if ( !startMenu ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5488 startMenu = this.active ? this.active.parent() : this.element;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5489 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5490
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5491 startMenu.find( ".ui-menu" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5492 .hide()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5493 .attr( "aria-hidden", "true" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5494 .attr( "aria-expanded", "false" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5495 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5496
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5497 _closeOnDocumentClick: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5498 return !$( event.target ).closest( ".ui-menu" ).length;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5499 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5500
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5501 _isDivider: function( item ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5502
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5503 // Match hyphen, em dash, en dash
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5504 return !/[^\-\u2014\u2013\s]/.test( item.text() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5505 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5506
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5507 collapse: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5508 var newItem = this.active &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5509 this.active.parent().closest( ".ui-menu-item", this.element );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5510 if ( newItem && newItem.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5511 this._close();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5512 this.focus( event, newItem );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5513 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5514 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5515
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5516 expand: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5517 var newItem = this.active && this._menuItems( this.active.children( ".ui-menu" ) ).first();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5518
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5519 if ( newItem && newItem.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5520 this._open( newItem.parent() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5521
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5522 // Delay so Firefox will not hide activedescendant change in expanding submenu from AT
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5523 this._delay( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5524 this.focus( event, newItem );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5525 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5526 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5527 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5528
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5529 next: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5530 this._move( "next", "first", event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5531 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5532
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5533 previous: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5534 this._move( "prev", "last", event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5535 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5536
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5537 isFirstItem: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5538 return this.active && !this.active.prevAll( ".ui-menu-item" ).length;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5539 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5540
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5541 isLastItem: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5542 return this.active && !this.active.nextAll( ".ui-menu-item" ).length;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5543 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5544
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5545 _menuItems: function( menu ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5546 return ( menu || this.element )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5547 .find( this.options.items )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5548 .filter( ".ui-menu-item" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5549 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5550
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5551 _move: function( direction, filter, event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5552 var next;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5553 if ( this.active ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5554 if ( direction === "first" || direction === "last" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5555 next = this.active
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5556 [ direction === "first" ? "prevAll" : "nextAll" ]( ".ui-menu-item" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5557 .last();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5558 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5559 next = this.active
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5560 [ direction + "All" ]( ".ui-menu-item" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5561 .first();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5562 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5563 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5564 if ( !next || !next.length || !this.active ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5565 next = this._menuItems( this.activeMenu )[ filter ]();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5566 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5567
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5568 this.focus( event, next );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5569 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5570
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5571 nextPage: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5572 var item, base, height;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5573
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5574 if ( !this.active ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5575 this.next( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5576 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5577 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5578 if ( this.isLastItem() ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5579 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5580 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5581 if ( this._hasScroll() ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5582 base = this.active.offset().top;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5583 height = this.element.innerHeight();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5584
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5585 // jQuery 3.2 doesn't include scrollbars in innerHeight, add it back.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5586 if ( $.fn.jquery.indexOf( "3.2." ) === 0 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5587 height += this.element[ 0 ].offsetHeight - this.element.outerHeight();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5588 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5589
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5590 this.active.nextAll( ".ui-menu-item" ).each( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5591 item = $( this );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5592 return item.offset().top - base - height < 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5593 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5594
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5595 this.focus( event, item );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5596 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5597 this.focus( event, this._menuItems( this.activeMenu )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5598 [ !this.active ? "first" : "last" ]() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5599 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5600 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5601
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5602 previousPage: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5603 var item, base, height;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5604 if ( !this.active ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5605 this.next( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5606 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5607 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5608 if ( this.isFirstItem() ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5609 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5610 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5611 if ( this._hasScroll() ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5612 base = this.active.offset().top;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5613 height = this.element.innerHeight();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5614
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5615 // jQuery 3.2 doesn't include scrollbars in innerHeight, add it back.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5616 if ( $.fn.jquery.indexOf( "3.2." ) === 0 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5617 height += this.element[ 0 ].offsetHeight - this.element.outerHeight();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5618 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5619
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5620 this.active.prevAll( ".ui-menu-item" ).each( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5621 item = $( this );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5622 return item.offset().top - base + height > 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5623 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5624
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5625 this.focus( event, item );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5626 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5627 this.focus( event, this._menuItems( this.activeMenu ).first() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5628 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5629 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5630
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5631 _hasScroll: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5632 return this.element.outerHeight() < this.element.prop( "scrollHeight" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5633 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5634
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5635 select: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5636
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5637 // TODO: It should never be possible to not have an active item at this
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5638 // point, but the tests don't trigger mouseenter before click.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5639 this.active = this.active || $( event.target ).closest( ".ui-menu-item" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5640 var ui = { item: this.active };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5641 if ( !this.active.has( ".ui-menu" ).length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5642 this.collapseAll( event, true );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5643 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5644 this._trigger( "select", event, ui );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5645 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5646
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5647 _filterMenuItems: function( character ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5648 var escapedCharacter = character.replace( /[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5649 regex = new RegExp( "^" + escapedCharacter, "i" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5650
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5651 return this.activeMenu
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5652 .find( this.options.items )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5653
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5654 // Only match on items, not dividers or other content (#10571)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5655 .filter( ".ui-menu-item" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5656 .filter( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5657 return regex.test(
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5658 String.prototype.trim.call(
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5659 $( this ).children( ".ui-menu-item-wrapper" ).text() ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5660 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5661 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5662 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5663
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5664
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5665 /*!
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5666 * jQuery UI Autocomplete 1.13.2
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5667 * http://jqueryui.com
1670
6fd889391d2c Added a Speed Dial to the web browser including the capability to select the first ten pages by pressing Meta+1 to Meta+0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5668 *
9678
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5669 * Copyright jQuery Foundation and other contributors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5670 * Released under the MIT license.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5671 * http://jquery.org/license
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5672 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5673
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5674 //>>label: Autocomplete
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5675 //>>group: Widgets
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5676 //>>description: Lists suggested words as the user is typing.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5677 //>>docs: http://api.jqueryui.com/autocomplete/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5678 //>>demos: http://jqueryui.com/autocomplete/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5679 //>>css.structure: ../../themes/base/core.css
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5680 //>>css.structure: ../../themes/base/autocomplete.css
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5681 //>>css.theme: ../../themes/base/theme.css
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5682
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5683
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5684 $.widget( "ui.autocomplete", {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5685 version: "1.13.2",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5686 defaultElement: "<input>",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5687 options: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5688 appendTo: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5689 autoFocus: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5690 delay: 300,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5691 minLength: 1,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5692 position: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5693 my: "left top",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5694 at: "left bottom",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5695 collision: "none"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5696 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5697 source: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5698
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5699 // Callbacks
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5700 change: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5701 close: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5702 focus: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5703 open: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5704 response: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5705 search: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5706 select: null
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5707 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5708
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5709 requestIndex: 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5710 pending: 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5711 liveRegionTimer: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5712
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5713 _create: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5714
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5715 // Some browsers only repeat keydown events, not keypress events,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5716 // so we use the suppressKeyPress flag to determine if we've already
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5717 // handled the keydown event. #7269
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5718 // Unfortunately the code for & in keypress is the same as the up arrow,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5719 // so we use the suppressKeyPressRepeat flag to avoid handling keypress
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5720 // events when we know the keydown event was used to modify the
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5721 // search term. #7799
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5722 var suppressKeyPress, suppressKeyPressRepeat, suppressInput,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5723 nodeName = this.element[ 0 ].nodeName.toLowerCase(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5724 isTextarea = nodeName === "textarea",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5725 isInput = nodeName === "input";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5726
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5727 // Textareas are always multi-line
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5728 // Inputs are always single-line, even if inside a contentEditable element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5729 // IE also treats inputs as contentEditable
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5730 // All other element types are determined by whether or not they're contentEditable
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5731 this.isMultiLine = isTextarea || !isInput && this._isContentEditable( this.element );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5732
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5733 this.valueMethod = this.element[ isTextarea || isInput ? "val" : "text" ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5734 this.isNewMenu = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5735
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5736 this._addClass( "ui-autocomplete-input" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5737 this.element.attr( "autocomplete", "off" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5738
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5739 this._on( this.element, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5740 keydown: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5741 if ( this.element.prop( "readOnly" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5742 suppressKeyPress = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5743 suppressInput = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5744 suppressKeyPressRepeat = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5745 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5746 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5747
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5748 suppressKeyPress = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5749 suppressInput = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5750 suppressKeyPressRepeat = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5751 var keyCode = $.ui.keyCode;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5752 switch ( event.keyCode ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5753 case keyCode.PAGE_UP:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5754 suppressKeyPress = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5755 this._move( "previousPage", event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5756 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5757 case keyCode.PAGE_DOWN:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5758 suppressKeyPress = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5759 this._move( "nextPage", event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5760 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5761 case keyCode.UP:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5762 suppressKeyPress = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5763 this._keyEvent( "previous", event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5764 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5765 case keyCode.DOWN:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5766 suppressKeyPress = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5767 this._keyEvent( "next", event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5768 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5769 case keyCode.ENTER:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5770
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5771 // when menu is open and has focus
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5772 if ( this.menu.active ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5773
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5774 // #6055 - Opera still allows the keypress to occur
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5775 // which causes forms to submit
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5776 suppressKeyPress = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5777 event.preventDefault();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5778 this.menu.select( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5779 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5780 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5781 case keyCode.TAB:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5782 if ( this.menu.active ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5783 this.menu.select( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5784 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5785 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5786 case keyCode.ESCAPE:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5787 if ( this.menu.element.is( ":visible" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5788 if ( !this.isMultiLine ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5789 this._value( this.term );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5790 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5791 this.close( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5792
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5793 // Different browsers have different default behavior for escape
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5794 // Single press can mean undo or clear
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5795 // Double press in IE means clear the whole form
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5796 event.preventDefault();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5797 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5798 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5799 default:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5800 suppressKeyPressRepeat = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5801
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5802 // search timeout should be triggered before the input value is changed
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5803 this._searchTimeout( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5804 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5805 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5806 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5807 keypress: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5808 if ( suppressKeyPress ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5809 suppressKeyPress = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5810 if ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5811 event.preventDefault();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5812 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5813 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5814 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5815 if ( suppressKeyPressRepeat ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5816 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5817 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5818
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5819 // Replicate some key handlers to allow them to repeat in Firefox and Opera
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5820 var keyCode = $.ui.keyCode;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5821 switch ( event.keyCode ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5822 case keyCode.PAGE_UP:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5823 this._move( "previousPage", event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5824 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5825 case keyCode.PAGE_DOWN:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5826 this._move( "nextPage", event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5827 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5828 case keyCode.UP:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5829 this._keyEvent( "previous", event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5830 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5831 case keyCode.DOWN:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5832 this._keyEvent( "next", event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5833 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5834 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5835 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5836 input: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5837 if ( suppressInput ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5838 suppressInput = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5839 event.preventDefault();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5840 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5841 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5842 this._searchTimeout( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5843 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5844 focus: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5845 this.selectedItem = null;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5846 this.previous = this._value();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5847 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5848 blur: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5849 clearTimeout( this.searching );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5850 this.close( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5851 this._change( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5852 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5853 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5854
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5855 this._initSource();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5856 this.menu = $( "<ul>" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5857 .appendTo( this._appendTo() )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5858 .menu( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5859
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5860 // disable ARIA support, the live region takes care of that
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5861 role: null
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5862 } )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5863 .hide()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5864
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5865 // Support: IE 11 only, Edge <= 14
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5866 // For other browsers, we preventDefault() on the mousedown event
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5867 // to keep the dropdown from taking focus from the input. This doesn't
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5868 // work for IE/Edge, causing problems with selection and scrolling (#9638)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5869 // Happily, IE and Edge support an "unselectable" attribute that
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5870 // prevents an element from receiving focus, exactly what we want here.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5871 .attr( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5872 "unselectable": "on"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5873 } )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5874 .menu( "instance" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5875
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5876 this._addClass( this.menu.element, "ui-autocomplete", "ui-front" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5877 this._on( this.menu.element, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5878 mousedown: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5879
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5880 // Prevent moving focus out of the text field
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5881 event.preventDefault();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5882 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5883 menufocus: function( event, ui ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5884 var label, item;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5885
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5886 // support: Firefox
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5887 // Prevent accidental activation of menu items in Firefox (#7024 #9118)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5888 if ( this.isNewMenu ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5889 this.isNewMenu = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5890 if ( event.originalEvent && /^mouse/.test( event.originalEvent.type ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5891 this.menu.blur();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5892
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5893 this.document.one( "mousemove", function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5894 $( event.target ).trigger( event.originalEvent );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5895 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5896
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5897 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5898 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5899 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5900
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5901 item = ui.item.data( "ui-autocomplete-item" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5902 if ( false !== this._trigger( "focus", event, { item: item } ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5903
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5904 // use value to match what will end up in the input, if it was a key event
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5905 if ( event.originalEvent && /^key/.test( event.originalEvent.type ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5906 this._value( item.value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5907 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5908 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5909
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5910 // Announce the value in the liveRegion
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5911 label = ui.item.attr( "aria-label" ) || item.value;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5912 if ( label && String.prototype.trim.call( label ).length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5913 clearTimeout( this.liveRegionTimer );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5914 this.liveRegionTimer = this._delay( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5915 this.liveRegion.html( $( "<div>" ).text( label ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5916 }, 100 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5917 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5918 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5919 menuselect: function( event, ui ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5920 var item = ui.item.data( "ui-autocomplete-item" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5921 previous = this.previous;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5922
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5923 // Only trigger when focus was lost (click on menu)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5924 if ( this.element[ 0 ] !== $.ui.safeActiveElement( this.document[ 0 ] ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5925 this.element.trigger( "focus" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5926 this.previous = previous;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5927
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5928 // #6109 - IE triggers two focus events and the second
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5929 // is asynchronous, so we need to reset the previous
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5930 // term synchronously and asynchronously :-(
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5931 this._delay( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5932 this.previous = previous;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5933 this.selectedItem = item;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5934 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5935 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5936
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5937 if ( false !== this._trigger( "select", event, { item: item } ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5938 this._value( item.value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5939 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5940
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5941 // reset the term after the select event
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5942 // this allows custom select handling to work properly
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5943 this.term = this._value();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5944
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5945 this.close( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5946 this.selectedItem = item;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5947 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5948 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5949
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5950 this.liveRegion = $( "<div>", {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5951 role: "status",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5952 "aria-live": "assertive",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5953 "aria-relevant": "additions"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5954 } )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5955 .appendTo( this.document[ 0 ].body );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5956
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5957 this._addClass( this.liveRegion, null, "ui-helper-hidden-accessible" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5958
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5959 // Turning off autocomplete prevents the browser from remembering the
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5960 // value when navigating through history, so we re-enable autocomplete
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5961 // if the page is unloaded before the widget is destroyed. #7790
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5962 this._on( this.window, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5963 beforeunload: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5964 this.element.removeAttr( "autocomplete" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5965 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5966 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5967 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5968
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5969 _destroy: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5970 clearTimeout( this.searching );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5971 this.element.removeAttr( "autocomplete" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5972 this.menu.element.remove();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5973 this.liveRegion.remove();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5974 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5975
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5976 _setOption: function( key, value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5977 this._super( key, value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5978 if ( key === "source" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5979 this._initSource();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5980 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5981 if ( key === "appendTo" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5982 this.menu.element.appendTo( this._appendTo() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5983 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5984 if ( key === "disabled" && value && this.xhr ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5985 this.xhr.abort();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5986 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5987 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5988
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5989 _isEventTargetInWidget: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5990 var menuElement = this.menu.element[ 0 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5991
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5992 return event.target === this.element[ 0 ] ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5993 event.target === menuElement ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5994 $.contains( menuElement, event.target );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5995 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5996
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5997 _closeOnClickOutside: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5998 if ( !this._isEventTargetInWidget( event ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
5999 this.close();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6000 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6001 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6002
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6003 _appendTo: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6004 var element = this.options.appendTo;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6005
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6006 if ( element ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6007 element = element.jquery || element.nodeType ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6008 $( element ) :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6009 this.document.find( element ).eq( 0 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6010 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6011
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6012 if ( !element || !element[ 0 ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6013 element = this.element.closest( ".ui-front, dialog" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6014 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6015
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6016 if ( !element.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6017 element = this.document[ 0 ].body;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6018 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6019
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6020 return element;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6021 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6022
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6023 _initSource: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6024 var array, url,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6025 that = this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6026 if ( Array.isArray( this.options.source ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6027 array = this.options.source;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6028 this.source = function( request, response ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6029 response( $.ui.autocomplete.filter( array, request.term ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6030 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6031 } else if ( typeof this.options.source === "string" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6032 url = this.options.source;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6033 this.source = function( request, response ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6034 if ( that.xhr ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6035 that.xhr.abort();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6036 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6037 that.xhr = $.ajax( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6038 url: url,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6039 data: request,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6040 dataType: "json",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6041 success: function( data ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6042 response( data );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6043 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6044 error: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6045 response( [] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6046 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6047 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6048 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6049 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6050 this.source = this.options.source;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6051 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6052 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6053
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6054 _searchTimeout: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6055 clearTimeout( this.searching );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6056 this.searching = this._delay( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6057
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6058 // Search if the value has changed, or if the user retypes the same value (see #7434)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6059 var equalValues = this.term === this._value(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6060 menuVisible = this.menu.element.is( ":visible" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6061 modifierKey = event.altKey || event.ctrlKey || event.metaKey || event.shiftKey;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6062
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6063 if ( !equalValues || ( equalValues && !menuVisible && !modifierKey ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6064 this.selectedItem = null;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6065 this.search( null, event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6066 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6067 }, this.options.delay );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6068 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6069
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6070 search: function( value, event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6071 value = value != null ? value : this._value();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6072
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6073 // Always save the actual value, not the one passed as an argument
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6074 this.term = this._value();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6075
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6076 if ( value.length < this.options.minLength ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6077 return this.close( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6078 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6079
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6080 if ( this._trigger( "search", event ) === false ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6081 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6082 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6083
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6084 return this._search( value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6085 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6086
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6087 _search: function( value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6088 this.pending++;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6089 this._addClass( "ui-autocomplete-loading" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6090 this.cancelSearch = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6091
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6092 this.source( { term: value }, this._response() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6093 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6094
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6095 _response: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6096 var index = ++this.requestIndex;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6097
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6098 return function( content ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6099 if ( index === this.requestIndex ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6100 this.__response( content );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6101 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6102
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6103 this.pending--;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6104 if ( !this.pending ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6105 this._removeClass( "ui-autocomplete-loading" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6106 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6107 }.bind( this );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6108 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6109
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6110 __response: function( content ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6111 if ( content ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6112 content = this._normalize( content );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6113 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6114 this._trigger( "response", null, { content: content } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6115 if ( !this.options.disabled && content && content.length && !this.cancelSearch ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6116 this._suggest( content );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6117 this._trigger( "open" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6118 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6119
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6120 // use ._close() instead of .close() so we don't cancel future searches
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6121 this._close();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6122 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6123 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6124
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6125 close: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6126 this.cancelSearch = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6127 this._close( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6128 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6129
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6130 _close: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6131
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6132 // Remove the handler that closes the menu on outside clicks
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6133 this._off( this.document, "mousedown" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6134
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6135 if ( this.menu.element.is( ":visible" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6136 this.menu.element.hide();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6137 this.menu.blur();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6138 this.isNewMenu = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6139 this._trigger( "close", event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6140 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6141 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6142
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6143 _change: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6144 if ( this.previous !== this._value() ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6145 this._trigger( "change", event, { item: this.selectedItem } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6146 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6147 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6148
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6149 _normalize: function( items ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6150
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6151 // assume all items have the right format when the first item is complete
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6152 if ( items.length && items[ 0 ].label && items[ 0 ].value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6153 return items;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6154 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6155 return $.map( items, function( item ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6156 if ( typeof item === "string" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6157 return {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6158 label: item,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6159 value: item
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6160 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6161 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6162 return $.extend( {}, item, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6163 label: item.label || item.value,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6164 value: item.value || item.label
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6165 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6166 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6167 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6168
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6169 _suggest: function( items ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6170 var ul = this.menu.element.empty();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6171 this._renderMenu( ul, items );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6172 this.isNewMenu = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6173 this.menu.refresh();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6174
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6175 // Size and position menu
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6176 ul.show();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6177 this._resizeMenu();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6178 ul.position( $.extend( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6179 of: this.element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6180 }, this.options.position ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6181
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6182 if ( this.options.autoFocus ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6183 this.menu.next();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6184 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6185
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6186 // Listen for interactions outside of the widget (#6642)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6187 this._on( this.document, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6188 mousedown: "_closeOnClickOutside"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6189 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6190 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6191
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6192 _resizeMenu: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6193 var ul = this.menu.element;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6194 ul.outerWidth( Math.max(
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6195
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6196 // Firefox wraps long text (possibly a rounding bug)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6197 // so we add 1px to avoid the wrapping (#7513)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6198 ul.width( "" ).outerWidth() + 1,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6199 this.element.outerWidth()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6200 ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6201 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6202
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6203 _renderMenu: function( ul, items ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6204 var that = this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6205 $.each( items, function( index, item ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6206 that._renderItemData( ul, item );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6207 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6208 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6209
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6210 _renderItemData: function( ul, item ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6211 return this._renderItem( ul, item ).data( "ui-autocomplete-item", item );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6212 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6213
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6214 _renderItem: function( ul, item ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6215 return $( "<li>" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6216 .append( $( "<div>" ).text( item.label ) )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6217 .appendTo( ul );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6218 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6219
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6220 _move: function( direction, event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6221 if ( !this.menu.element.is( ":visible" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6222 this.search( null, event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6223 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6224 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6225 if ( this.menu.isFirstItem() && /^previous/.test( direction ) ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6226 this.menu.isLastItem() && /^next/.test( direction ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6227
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6228 if ( !this.isMultiLine ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6229 this._value( this.term );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6230 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6231
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6232 this.menu.blur();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6233 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6234 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6235 this.menu[ direction ]( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6236 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6237
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6238 widget: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6239 return this.menu.element;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6240 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6241
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6242 _value: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6243 return this.valueMethod.apply( this.element, arguments );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6244 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6245
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6246 _keyEvent: function( keyEvent, event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6247 if ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6248 this._move( keyEvent, event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6249
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6250 // Prevents moving cursor to beginning/end of the text field in some browsers
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6251 event.preventDefault();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6252 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6253 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6254
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6255 // Support: Chrome <=50
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6256 // We should be able to just use this.element.prop( "isContentEditable" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6257 // but hidden elements always report false in Chrome.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6258 // https://code.google.com/p/chromium/issues/detail?id=313082
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6259 _isContentEditable: function( element ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6260 if ( !element.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6261 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6262 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6263
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6264 var editable = element.prop( "contentEditable" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6265
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6266 if ( editable === "inherit" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6267 return this._isContentEditable( element.parent() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6268 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6269
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6270 return editable === "true";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6271 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6272 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6273
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6274 $.extend( $.ui.autocomplete, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6275 escapeRegex: function( value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6276 return value.replace( /[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6277 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6278 filter: function( array, term ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6279 var matcher = new RegExp( $.ui.autocomplete.escapeRegex( term ), "i" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6280 return $.grep( array, function( value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6281 return matcher.test( value.label || value.value || value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6282 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6283 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6284 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6285
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6286 // Live region extension, adding a `messages` option
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6287 // NOTE: This is an experimental API. We are still investigating
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6288 // a full solution for string manipulation and internationalization.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6289 $.widget( "ui.autocomplete", $.ui.autocomplete, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6290 options: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6291 messages: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6292 noResults: "No search results.",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6293 results: function( amount ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6294 return amount + ( amount > 1 ? " results are" : " result is" ) +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6295 " available, use up and down arrow keys to navigate.";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6296 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6297 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6298 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6299
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6300 __response: function( content ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6301 var message;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6302 this._superApply( arguments );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6303 if ( this.options.disabled || this.cancelSearch ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6304 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6305 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6306 if ( content && content.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6307 message = this.options.messages.results( content.length );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6308 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6309 message = this.options.messages.noResults;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6310 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6311 clearTimeout( this.liveRegionTimer );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6312 this.liveRegionTimer = this._delay( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6313 this.liveRegion.html( $( "<div>" ).text( message ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6314 }, 100 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6315 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6316 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6317
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6318 var widgetsAutocomplete = $.ui.autocomplete;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6319
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6320
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6321 /*!
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6322 * jQuery UI Controlgroup 1.13.2
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6323 * http://jqueryui.com
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6324 *
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6325 * Copyright jQuery Foundation and other contributors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6326 * Released under the MIT license.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6327 * http://jquery.org/license
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6328 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6329
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6330 //>>label: Controlgroup
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6331 //>>group: Widgets
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6332 //>>description: Visually groups form control widgets
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6333 //>>docs: http://api.jqueryui.com/controlgroup/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6334 //>>demos: http://jqueryui.com/controlgroup/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6335 //>>css.structure: ../../themes/base/core.css
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6336 //>>css.structure: ../../themes/base/controlgroup.css
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6337 //>>css.theme: ../../themes/base/theme.css
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6338
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6339
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6340 var controlgroupCornerRegex = /ui-corner-([a-z]){2,6}/g;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6341
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6342 var widgetsControlgroup = $.widget( "ui.controlgroup", {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6343 version: "1.13.2",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6344 defaultElement: "<div>",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6345 options: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6346 direction: "horizontal",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6347 disabled: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6348 onlyVisible: true,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6349 items: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6350 "button": "input[type=button], input[type=submit], input[type=reset], button, a",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6351 "controlgroupLabel": ".ui-controlgroup-label",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6352 "checkboxradio": "input[type='checkbox'], input[type='radio']",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6353 "selectmenu": "select",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6354 "spinner": ".ui-spinner-input"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6355 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6356 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6357
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6358 _create: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6359 this._enhance();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6360 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6361
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6362 // To support the enhanced option in jQuery Mobile, we isolate DOM manipulation
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6363 _enhance: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6364 this.element.attr( "role", "toolbar" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6365 this.refresh();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6366 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6367
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6368 _destroy: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6369 this._callChildMethod( "destroy" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6370 this.childWidgets.removeData( "ui-controlgroup-data" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6371 this.element.removeAttr( "role" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6372 if ( this.options.items.controlgroupLabel ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6373 this.element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6374 .find( this.options.items.controlgroupLabel )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6375 .find( ".ui-controlgroup-label-contents" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6376 .contents().unwrap();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6377 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6378 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6379
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6380 _initWidgets: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6381 var that = this,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6382 childWidgets = [];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6383
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6384 // First we iterate over each of the items options
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6385 $.each( this.options.items, function( widget, selector ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6386 var labels;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6387 var options = {};
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6388
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6389 // Make sure the widget has a selector set
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6390 if ( !selector ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6391 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6392 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6393
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6394 if ( widget === "controlgroupLabel" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6395 labels = that.element.find( selector );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6396 labels.each( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6397 var element = $( this );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6398
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6399 if ( element.children( ".ui-controlgroup-label-contents" ).length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6400 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6401 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6402 element.contents()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6403 .wrapAll( "<span class='ui-controlgroup-label-contents'></span>" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6404 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6405 that._addClass( labels, null, "ui-widget ui-widget-content ui-state-default" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6406 childWidgets = childWidgets.concat( labels.get() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6407 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6408 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6409
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6410 // Make sure the widget actually exists
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6411 if ( !$.fn[ widget ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6412 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6413 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6414
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6415 // We assume everything is in the middle to start because we can't determine
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6416 // first / last elements until all enhancments are done.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6417 if ( that[ "_" + widget + "Options" ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6418 options = that[ "_" + widget + "Options" ]( "middle" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6419 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6420 options = { classes: {} };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6421 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6422
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6423 // Find instances of this widget inside controlgroup and init them
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6424 that.element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6425 .find( selector )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6426 .each( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6427 var element = $( this );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6428 var instance = element[ widget ]( "instance" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6429
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6430 // We need to clone the default options for this type of widget to avoid
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6431 // polluting the variable options which has a wider scope than a single widget.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6432 var instanceOptions = $.widget.extend( {}, options );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6433
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6434 // If the button is the child of a spinner ignore it
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6435 // TODO: Find a more generic solution
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6436 if ( widget === "button" && element.parent( ".ui-spinner" ).length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6437 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6438 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6439
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6440 // Create the widget if it doesn't exist
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6441 if ( !instance ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6442 instance = element[ widget ]()[ widget ]( "instance" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6443 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6444 if ( instance ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6445 instanceOptions.classes =
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6446 that._resolveClassesValues( instanceOptions.classes, instance );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6447 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6448 element[ widget ]( instanceOptions );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6449
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6450 // Store an instance of the controlgroup to be able to reference
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6451 // from the outermost element for changing options and refresh
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6452 var widgetElement = element[ widget ]( "widget" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6453 $.data( widgetElement[ 0 ], "ui-controlgroup-data",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6454 instance ? instance : element[ widget ]( "instance" ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6455
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6456 childWidgets.push( widgetElement[ 0 ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6457 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6458 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6459
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6460 this.childWidgets = $( $.uniqueSort( childWidgets ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6461 this._addClass( this.childWidgets, "ui-controlgroup-item" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6462 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6463
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6464 _callChildMethod: function( method ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6465 this.childWidgets.each( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6466 var element = $( this ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6467 data = element.data( "ui-controlgroup-data" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6468 if ( data && data[ method ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6469 data[ method ]();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6470 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6471 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6472 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6473
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6474 _updateCornerClass: function( element, position ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6475 var remove = "ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6476 var add = this._buildSimpleOptions( position, "label" ).classes.label;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6477
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6478 this._removeClass( element, null, remove );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6479 this._addClass( element, null, add );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6480 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6481
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6482 _buildSimpleOptions: function( position, key ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6483 var direction = this.options.direction === "vertical";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6484 var result = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6485 classes: {}
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6486 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6487 result.classes[ key ] = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6488 "middle": "",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6489 "first": "ui-corner-" + ( direction ? "top" : "left" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6490 "last": "ui-corner-" + ( direction ? "bottom" : "right" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6491 "only": "ui-corner-all"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6492 }[ position ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6493
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6494 return result;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6495 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6496
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6497 _spinnerOptions: function( position ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6498 var options = this._buildSimpleOptions( position, "ui-spinner" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6499
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6500 options.classes[ "ui-spinner-up" ] = "";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6501 options.classes[ "ui-spinner-down" ] = "";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6502
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6503 return options;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6504 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6505
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6506 _buttonOptions: function( position ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6507 return this._buildSimpleOptions( position, "ui-button" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6508 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6509
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6510 _checkboxradioOptions: function( position ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6511 return this._buildSimpleOptions( position, "ui-checkboxradio-label" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6512 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6513
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6514 _selectmenuOptions: function( position ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6515 var direction = this.options.direction === "vertical";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6516 return {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6517 width: direction ? "auto" : false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6518 classes: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6519 middle: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6520 "ui-selectmenu-button-open": "",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6521 "ui-selectmenu-button-closed": ""
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6522 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6523 first: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6524 "ui-selectmenu-button-open": "ui-corner-" + ( direction ? "top" : "tl" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6525 "ui-selectmenu-button-closed": "ui-corner-" + ( direction ? "top" : "left" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6526 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6527 last: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6528 "ui-selectmenu-button-open": direction ? "" : "ui-corner-tr",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6529 "ui-selectmenu-button-closed": "ui-corner-" + ( direction ? "bottom" : "right" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6530 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6531 only: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6532 "ui-selectmenu-button-open": "ui-corner-top",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6533 "ui-selectmenu-button-closed": "ui-corner-all"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6534 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6535
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6536 }[ position ]
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6537 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6538 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6539
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6540 _resolveClassesValues: function( classes, instance ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6541 var result = {};
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6542 $.each( classes, function( key ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6543 var current = instance.options.classes[ key ] || "";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6544 current = String.prototype.trim.call( current.replace( controlgroupCornerRegex, "" ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6545 result[ key ] = ( current + " " + classes[ key ] ).replace( /\s+/g, " " );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6546 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6547 return result;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6548 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6549
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6550 _setOption: function( key, value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6551 if ( key === "direction" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6552 this._removeClass( "ui-controlgroup-" + this.options.direction );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6553 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6554
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6555 this._super( key, value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6556 if ( key === "disabled" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6557 this._callChildMethod( value ? "disable" : "enable" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6558 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6559 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6560
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6561 this.refresh();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6562 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6563
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6564 refresh: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6565 var children,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6566 that = this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6567
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6568 this._addClass( "ui-controlgroup ui-controlgroup-" + this.options.direction );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6569
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6570 if ( this.options.direction === "horizontal" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6571 this._addClass( null, "ui-helper-clearfix" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6572 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6573 this._initWidgets();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6574
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6575 children = this.childWidgets;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6576
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6577 // We filter here because we need to track all childWidgets not just the visible ones
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6578 if ( this.options.onlyVisible ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6579 children = children.filter( ":visible" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6580 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6581
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6582 if ( children.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6583
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6584 // We do this last because we need to make sure all enhancment is done
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6585 // before determining first and last
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6586 $.each( [ "first", "last" ], function( index, value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6587 var instance = children[ value ]().data( "ui-controlgroup-data" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6588
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6589 if ( instance && that[ "_" + instance.widgetName + "Options" ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6590 var options = that[ "_" + instance.widgetName + "Options" ](
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6591 children.length === 1 ? "only" : value
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6592 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6593 options.classes = that._resolveClassesValues( options.classes, instance );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6594 instance.element[ instance.widgetName ]( options );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6595 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6596 that._updateCornerClass( children[ value ](), value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6597 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6598 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6599
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6600 // Finally call the refresh method on each of the child widgets.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6601 this._callChildMethod( "refresh" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6602 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6603 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6604 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6605
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6606 /*!
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6607 * jQuery UI Checkboxradio 1.13.2
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6608 * http://jqueryui.com
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6609 *
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6610 * Copyright jQuery Foundation and other contributors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6611 * Released under the MIT license.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6612 * http://jquery.org/license
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6613 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6614
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6615 //>>label: Checkboxradio
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6616 //>>group: Widgets
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6617 //>>description: Enhances a form with multiple themeable checkboxes or radio buttons.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6618 //>>docs: http://api.jqueryui.com/checkboxradio/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6619 //>>demos: http://jqueryui.com/checkboxradio/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6620 //>>css.structure: ../../themes/base/core.css
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6621 //>>css.structure: ../../themes/base/button.css
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6622 //>>css.structure: ../../themes/base/checkboxradio.css
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6623 //>>css.theme: ../../themes/base/theme.css
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6624
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6625
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6626 $.widget( "ui.checkboxradio", [ $.ui.formResetMixin, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6627 version: "1.13.2",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6628 options: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6629 disabled: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6630 label: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6631 icon: true,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6632 classes: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6633 "ui-checkboxradio-label": "ui-corner-all",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6634 "ui-checkboxradio-icon": "ui-corner-all"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6635 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6636 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6637
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6638 _getCreateOptions: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6639 var disabled, labels, labelContents;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6640 var options = this._super() || {};
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6641
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6642 // We read the type here, because it makes more sense to throw a element type error first,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6643 // rather then the error for lack of a label. Often if its the wrong type, it
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6644 // won't have a label (e.g. calling on a div, btn, etc)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6645 this._readType();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6646
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6647 labels = this.element.labels();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6648
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6649 // If there are multiple labels, use the last one
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6650 this.label = $( labels[ labels.length - 1 ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6651 if ( !this.label.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6652 $.error( "No label found for checkboxradio widget" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6653 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6654
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6655 this.originalLabel = "";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6656
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6657 // We need to get the label text but this may also need to make sure it does not contain the
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6658 // input itself.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6659 // The label contents could be text, html, or a mix. We wrap all elements
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6660 // and read the wrapper's `innerHTML` to get a string representation of
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6661 // the label, without the input as part of it.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6662 labelContents = this.label.contents().not( this.element[ 0 ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6663
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6664 if ( labelContents.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6665 this.originalLabel += labelContents
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6666 .clone()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6667 .wrapAll( "<div></div>" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6668 .parent()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6669 .html();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6670 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6671
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6672 // Set the label option if we found label text
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6673 if ( this.originalLabel ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6674 options.label = this.originalLabel;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6675 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6676
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6677 disabled = this.element[ 0 ].disabled;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6678 if ( disabled != null ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6679 options.disabled = disabled;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6680 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6681 return options;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6682 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6683
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6684 _create: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6685 var checked = this.element[ 0 ].checked;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6686
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6687 this._bindFormResetHandler();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6688
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6689 if ( this.options.disabled == null ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6690 this.options.disabled = this.element[ 0 ].disabled;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6691 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6692
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6693 this._setOption( "disabled", this.options.disabled );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6694 this._addClass( "ui-checkboxradio", "ui-helper-hidden-accessible" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6695 this._addClass( this.label, "ui-checkboxradio-label", "ui-button ui-widget" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6696
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6697 if ( this.type === "radio" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6698 this._addClass( this.label, "ui-checkboxradio-radio-label" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6699 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6700
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6701 if ( this.options.label && this.options.label !== this.originalLabel ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6702 this._updateLabel();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6703 } else if ( this.originalLabel ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6704 this.options.label = this.originalLabel;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6705 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6706
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6707 this._enhance();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6708
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6709 if ( checked ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6710 this._addClass( this.label, "ui-checkboxradio-checked", "ui-state-active" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6711 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6712
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6713 this._on( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6714 change: "_toggleClasses",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6715 focus: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6716 this._addClass( this.label, null, "ui-state-focus ui-visual-focus" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6717 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6718 blur: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6719 this._removeClass( this.label, null, "ui-state-focus ui-visual-focus" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6720 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6721 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6722 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6723
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6724 _readType: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6725 var nodeName = this.element[ 0 ].nodeName.toLowerCase();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6726 this.type = this.element[ 0 ].type;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6727 if ( nodeName !== "input" || !/radio|checkbox/.test( this.type ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6728 $.error( "Can't create checkboxradio on element.nodeName=" + nodeName +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6729 " and element.type=" + this.type );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6730 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6731 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6732
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6733 // Support jQuery Mobile enhanced option
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6734 _enhance: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6735 this._updateIcon( this.element[ 0 ].checked );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6736 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6737
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6738 widget: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6739 return this.label;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6740 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6741
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6742 _getRadioGroup: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6743 var group;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6744 var name = this.element[ 0 ].name;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6745 var nameSelector = "input[name='" + $.escapeSelector( name ) + "']";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6746
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6747 if ( !name ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6748 return $( [] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6749 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6750
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6751 if ( this.form.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6752 group = $( this.form[ 0 ].elements ).filter( nameSelector );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6753 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6754
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6755 // Not inside a form, check all inputs that also are not inside a form
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6756 group = $( nameSelector ).filter( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6757 return $( this )._form().length === 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6758 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6759 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6760
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6761 return group.not( this.element );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6762 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6763
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6764 _toggleClasses: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6765 var checked = this.element[ 0 ].checked;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6766 this._toggleClass( this.label, "ui-checkboxradio-checked", "ui-state-active", checked );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6767
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6768 if ( this.options.icon && this.type === "checkbox" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6769 this._toggleClass( this.icon, null, "ui-icon-check ui-state-checked", checked )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6770 ._toggleClass( this.icon, null, "ui-icon-blank", !checked );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6771 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6772
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6773 if ( this.type === "radio" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6774 this._getRadioGroup()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6775 .each( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6776 var instance = $( this ).checkboxradio( "instance" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6777
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6778 if ( instance ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6779 instance._removeClass( instance.label,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6780 "ui-checkboxradio-checked", "ui-state-active" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6781 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6782 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6783 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6784 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6785
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6786 _destroy: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6787 this._unbindFormResetHandler();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6788
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6789 if ( this.icon ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6790 this.icon.remove();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6791 this.iconSpace.remove();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6792 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6793 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6794
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6795 _setOption: function( key, value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6796
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6797 // We don't allow the value to be set to nothing
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6798 if ( key === "label" && !value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6799 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6800 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6801
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6802 this._super( key, value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6803
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6804 if ( key === "disabled" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6805 this._toggleClass( this.label, null, "ui-state-disabled", value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6806 this.element[ 0 ].disabled = value;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6807
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6808 // Don't refresh when setting disabled
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6809 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6810 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6811 this.refresh();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6812 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6813
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6814 _updateIcon: function( checked ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6815 var toAdd = "ui-icon ui-icon-background ";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6816
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6817 if ( this.options.icon ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6818 if ( !this.icon ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6819 this.icon = $( "<span>" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6820 this.iconSpace = $( "<span> </span>" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6821 this._addClass( this.iconSpace, "ui-checkboxradio-icon-space" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6822 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6823
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6824 if ( this.type === "checkbox" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6825 toAdd += checked ? "ui-icon-check ui-state-checked" : "ui-icon-blank";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6826 this._removeClass( this.icon, null, checked ? "ui-icon-blank" : "ui-icon-check" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6827 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6828 toAdd += "ui-icon-blank";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6829 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6830 this._addClass( this.icon, "ui-checkboxradio-icon", toAdd );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6831 if ( !checked ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6832 this._removeClass( this.icon, null, "ui-icon-check ui-state-checked" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6833 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6834 this.icon.prependTo( this.label ).after( this.iconSpace );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6835 } else if ( this.icon !== undefined ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6836 this.icon.remove();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6837 this.iconSpace.remove();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6838 delete this.icon;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6839 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6840 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6841
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6842 _updateLabel: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6843
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6844 // Remove the contents of the label ( minus the icon, icon space, and input )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6845 var contents = this.label.contents().not( this.element[ 0 ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6846 if ( this.icon ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6847 contents = contents.not( this.icon[ 0 ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6848 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6849 if ( this.iconSpace ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6850 contents = contents.not( this.iconSpace[ 0 ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6851 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6852 contents.remove();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6853
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6854 this.label.append( this.options.label );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6855 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6856
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6857 refresh: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6858 var checked = this.element[ 0 ].checked,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6859 isDisabled = this.element[ 0 ].disabled;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6860
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6861 this._updateIcon( checked );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6862 this._toggleClass( this.label, "ui-checkboxradio-checked", "ui-state-active", checked );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6863 if ( this.options.label !== null ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6864 this._updateLabel();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6865 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6866
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6867 if ( isDisabled !== this.options.disabled ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6868 this._setOptions( { "disabled": isDisabled } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6869 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6870 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6871
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6872 } ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6873
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6874 var widgetsCheckboxradio = $.ui.checkboxradio;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6875
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6876
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6877 /*!
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6878 * jQuery UI Button 1.13.2
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6879 * http://jqueryui.com
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6880 *
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6881 * Copyright jQuery Foundation and other contributors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6882 * Released under the MIT license.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6883 * http://jquery.org/license
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6884 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6885
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6886 //>>label: Button
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6887 //>>group: Widgets
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6888 //>>description: Enhances a form with themeable buttons.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6889 //>>docs: http://api.jqueryui.com/button/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6890 //>>demos: http://jqueryui.com/button/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6891 //>>css.structure: ../../themes/base/core.css
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6892 //>>css.structure: ../../themes/base/button.css
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6893 //>>css.theme: ../../themes/base/theme.css
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6894
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6895
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6896 $.widget( "ui.button", {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6897 version: "1.13.2",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6898 defaultElement: "<button>",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6899 options: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6900 classes: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6901 "ui-button": "ui-corner-all"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6902 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6903 disabled: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6904 icon: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6905 iconPosition: "beginning",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6906 label: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6907 showLabel: true
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6908 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6909
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6910 _getCreateOptions: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6911 var disabled,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6912
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6913 // This is to support cases like in jQuery Mobile where the base widget does have
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6914 // an implementation of _getCreateOptions
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6915 options = this._super() || {};
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6916
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6917 this.isInput = this.element.is( "input" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6918
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6919 disabled = this.element[ 0 ].disabled;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6920 if ( disabled != null ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6921 options.disabled = disabled;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6922 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6923
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6924 this.originalLabel = this.isInput ? this.element.val() : this.element.html();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6925 if ( this.originalLabel ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6926 options.label = this.originalLabel;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6927 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6928
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6929 return options;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6930 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6931
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6932 _create: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6933 if ( !this.option.showLabel & !this.options.icon ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6934 this.options.showLabel = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6935 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6936
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6937 // We have to check the option again here even though we did in _getCreateOptions,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6938 // because null may have been passed on init which would override what was set in
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6939 // _getCreateOptions
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6940 if ( this.options.disabled == null ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6941 this.options.disabled = this.element[ 0 ].disabled || false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6942 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6943
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6944 this.hasTitle = !!this.element.attr( "title" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6945
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6946 // Check to see if the label needs to be set or if its already correct
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6947 if ( this.options.label && this.options.label !== this.originalLabel ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6948 if ( this.isInput ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6949 this.element.val( this.options.label );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6950 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6951 this.element.html( this.options.label );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6952 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6953 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6954 this._addClass( "ui-button", "ui-widget" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6955 this._setOption( "disabled", this.options.disabled );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6956 this._enhance();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6957
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6958 if ( this.element.is( "a" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6959 this._on( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6960 "keyup": function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6961 if ( event.keyCode === $.ui.keyCode.SPACE ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6962 event.preventDefault();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6963
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6964 // Support: PhantomJS <= 1.9, IE 8 Only
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6965 // If a native click is available use it so we actually cause navigation
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6966 // otherwise just trigger a click event
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6967 if ( this.element[ 0 ].click ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6968 this.element[ 0 ].click();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6969 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6970 this.element.trigger( "click" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6971 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6972 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6973 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6974 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6975 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6976 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6977
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6978 _enhance: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6979 if ( !this.element.is( "button" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6980 this.element.attr( "role", "button" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6981 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6982
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6983 if ( this.options.icon ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6984 this._updateIcon( "icon", this.options.icon );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6985 this._updateTooltip();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6986 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6987 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6988
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6989 _updateTooltip: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6990 this.title = this.element.attr( "title" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6991
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6992 if ( !this.options.showLabel && !this.title ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6993 this.element.attr( "title", this.options.label );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6994 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6995 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6996
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6997 _updateIcon: function( option, value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6998 var icon = option !== "iconPosition",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
6999 position = icon ? this.options.iconPosition : value,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7000 displayBlock = position === "top" || position === "bottom";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7001
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7002 // Create icon
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7003 if ( !this.icon ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7004 this.icon = $( "<span>" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7005
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7006 this._addClass( this.icon, "ui-button-icon", "ui-icon" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7007
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7008 if ( !this.options.showLabel ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7009 this._addClass( "ui-button-icon-only" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7010 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7011 } else if ( icon ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7012
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7013 // If we are updating the icon remove the old icon class
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7014 this._removeClass( this.icon, null, this.options.icon );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7015 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7016
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7017 // If we are updating the icon add the new icon class
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7018 if ( icon ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7019 this._addClass( this.icon, null, value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7020 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7021
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7022 this._attachIcon( position );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7023
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7024 // If the icon is on top or bottom we need to add the ui-widget-icon-block class and remove
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7025 // the iconSpace if there is one.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7026 if ( displayBlock ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7027 this._addClass( this.icon, null, "ui-widget-icon-block" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7028 if ( this.iconSpace ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7029 this.iconSpace.remove();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7030 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7031 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7032
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7033 // Position is beginning or end so remove the ui-widget-icon-block class and add the
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7034 // space if it does not exist
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7035 if ( !this.iconSpace ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7036 this.iconSpace = $( "<span> </span>" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7037 this._addClass( this.iconSpace, "ui-button-icon-space" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7038 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7039 this._removeClass( this.icon, null, "ui-wiget-icon-block" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7040 this._attachIconSpace( position );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7041 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7042 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7043
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7044 _destroy: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7045 this.element.removeAttr( "role" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7046
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7047 if ( this.icon ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7048 this.icon.remove();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7049 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7050 if ( this.iconSpace ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7051 this.iconSpace.remove();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7052 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7053 if ( !this.hasTitle ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7054 this.element.removeAttr( "title" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7055 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7056 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7057
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7058 _attachIconSpace: function( iconPosition ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7059 this.icon[ /^(?:end|bottom)/.test( iconPosition ) ? "before" : "after" ]( this.iconSpace );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7060 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7061
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7062 _attachIcon: function( iconPosition ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7063 this.element[ /^(?:end|bottom)/.test( iconPosition ) ? "append" : "prepend" ]( this.icon );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7064 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7065
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7066 _setOptions: function( options ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7067 var newShowLabel = options.showLabel === undefined ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7068 this.options.showLabel :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7069 options.showLabel,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7070 newIcon = options.icon === undefined ? this.options.icon : options.icon;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7071
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7072 if ( !newShowLabel && !newIcon ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7073 options.showLabel = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7074 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7075 this._super( options );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7076 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7077
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7078 _setOption: function( key, value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7079 if ( key === "icon" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7080 if ( value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7081 this._updateIcon( key, value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7082 } else if ( this.icon ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7083 this.icon.remove();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7084 if ( this.iconSpace ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7085 this.iconSpace.remove();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7086 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7087 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7088 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7089
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7090 if ( key === "iconPosition" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7091 this._updateIcon( key, value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7092 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7093
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7094 // Make sure we can't end up with a button that has neither text nor icon
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7095 if ( key === "showLabel" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7096 this._toggleClass( "ui-button-icon-only", null, !value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7097 this._updateTooltip();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7098 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7099
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7100 if ( key === "label" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7101 if ( this.isInput ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7102 this.element.val( value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7103 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7104
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7105 // If there is an icon, append it, else nothing then append the value
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7106 // this avoids removal of the icon when setting label text
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7107 this.element.html( value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7108 if ( this.icon ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7109 this._attachIcon( this.options.iconPosition );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7110 this._attachIconSpace( this.options.iconPosition );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7111 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7112 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7113 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7114
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7115 this._super( key, value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7116
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7117 if ( key === "disabled" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7118 this._toggleClass( null, "ui-state-disabled", value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7119 this.element[ 0 ].disabled = value;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7120 if ( value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7121 this.element.trigger( "blur" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7122 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7123 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7124 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7125
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7126 refresh: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7127
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7128 // Make sure to only check disabled if its an element that supports this otherwise
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7129 // check for the disabled class to determine state
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7130 var isDisabled = this.element.is( "input, button" ) ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7131 this.element[ 0 ].disabled : this.element.hasClass( "ui-button-disabled" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7132
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7133 if ( isDisabled !== this.options.disabled ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7134 this._setOptions( { disabled: isDisabled } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7135 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7136
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7137 this._updateTooltip();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7138 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7139 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7140
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7141 // DEPRECATED
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7142 if ( $.uiBackCompat !== false ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7143
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7144 // Text and Icons options
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7145 $.widget( "ui.button", $.ui.button, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7146 options: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7147 text: true,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7148 icons: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7149 primary: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7150 secondary: null
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7151 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7152 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7153
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7154 _create: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7155 if ( this.options.showLabel && !this.options.text ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7156 this.options.showLabel = this.options.text;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7157 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7158 if ( !this.options.showLabel && this.options.text ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7159 this.options.text = this.options.showLabel;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7160 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7161 if ( !this.options.icon && ( this.options.icons.primary ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7162 this.options.icons.secondary ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7163 if ( this.options.icons.primary ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7164 this.options.icon = this.options.icons.primary;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7165 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7166 this.options.icon = this.options.icons.secondary;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7167 this.options.iconPosition = "end";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7168 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7169 } else if ( this.options.icon ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7170 this.options.icons.primary = this.options.icon;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7171 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7172 this._super();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7173 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7174
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7175 _setOption: function( key, value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7176 if ( key === "text" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7177 this._super( "showLabel", value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7178 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7179 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7180 if ( key === "showLabel" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7181 this.options.text = value;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7182 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7183 if ( key === "icon" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7184 this.options.icons.primary = value;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7185 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7186 if ( key === "icons" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7187 if ( value.primary ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7188 this._super( "icon", value.primary );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7189 this._super( "iconPosition", "beginning" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7190 } else if ( value.secondary ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7191 this._super( "icon", value.secondary );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7192 this._super( "iconPosition", "end" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7193 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7194 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7195 this._superApply( arguments );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7196 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7197 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7198
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7199 $.fn.button = ( function( orig ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7200 return function( options ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7201 var isMethodCall = typeof options === "string";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7202 var args = Array.prototype.slice.call( arguments, 1 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7203 var returnValue = this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7204
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7205 if ( isMethodCall ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7206
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7207 // If this is an empty collection, we need to have the instance method
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7208 // return undefined instead of the jQuery instance
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7209 if ( !this.length && options === "instance" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7210 returnValue = undefined;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7211 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7212 this.each( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7213 var methodValue;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7214 var type = $( this ).attr( "type" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7215 var name = type !== "checkbox" && type !== "radio" ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7216 "button" :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7217 "checkboxradio";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7218 var instance = $.data( this, "ui-" + name );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7219
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7220 if ( options === "instance" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7221 returnValue = instance;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7222 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7223 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7224
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7225 if ( !instance ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7226 return $.error( "cannot call methods on button" +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7227 " prior to initialization; " +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7228 "attempted to call method '" + options + "'" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7229 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7230
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7231 if ( typeof instance[ options ] !== "function" ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7232 options.charAt( 0 ) === "_" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7233 return $.error( "no such method '" + options + "' for button" +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7234 " widget instance" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7235 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7236
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7237 methodValue = instance[ options ].apply( instance, args );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7238
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7239 if ( methodValue !== instance && methodValue !== undefined ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7240 returnValue = methodValue && methodValue.jquery ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7241 returnValue.pushStack( methodValue.get() ) :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7242 methodValue;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7243 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7244 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7245 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7246 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7247 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7248
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7249 // Allow multiple hashes to be passed on init
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7250 if ( args.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7251 options = $.widget.extend.apply( null, [ options ].concat( args ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7252 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7253
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7254 this.each( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7255 var type = $( this ).attr( "type" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7256 var name = type !== "checkbox" && type !== "radio" ? "button" : "checkboxradio";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7257 var instance = $.data( this, "ui-" + name );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7258
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7259 if ( instance ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7260 instance.option( options || {} );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7261 if ( instance._init ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7262 instance._init();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7263 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7264 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7265 if ( name === "button" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7266 orig.call( $( this ), options );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7267 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7268 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7269
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7270 $( this ).checkboxradio( $.extend( { icon: false }, options ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7271 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7272 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7273 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7274
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7275 return returnValue;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7276 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7277 } )( $.fn.button );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7278
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7279 $.fn.buttonset = function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7280 if ( !$.ui.controlgroup ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7281 $.error( "Controlgroup widget missing" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7282 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7283 if ( arguments[ 0 ] === "option" && arguments[ 1 ] === "items" && arguments[ 2 ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7284 return this.controlgroup.apply( this,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7285 [ arguments[ 0 ], "items.button", arguments[ 2 ] ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7286 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7287 if ( arguments[ 0 ] === "option" && arguments[ 1 ] === "items" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7288 return this.controlgroup.apply( this, [ arguments[ 0 ], "items.button" ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7289 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7290 if ( typeof arguments[ 0 ] === "object" && arguments[ 0 ].items ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7291 arguments[ 0 ].items = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7292 button: arguments[ 0 ].items
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7293 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7294 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7295 return this.controlgroup.apply( this, arguments );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7296 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7297 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7298
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7299 var widgetsButton = $.ui.button;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7300
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7301
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7302 /* eslint-disable max-len, camelcase */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7303 /*!
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7304 * jQuery UI Datepicker 1.13.2
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7305 * http://jqueryui.com
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7306 *
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7307 * Copyright jQuery Foundation and other contributors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7308 * Released under the MIT license.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7309 * http://jquery.org/license
1670
6fd889391d2c Added a Speed Dial to the web browser including the capability to select the first ten pages by pressing Meta+1 to Meta+0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7310 */
9678
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7311
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7312 //>>label: Datepicker
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7313 //>>group: Widgets
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7314 //>>description: Displays a calendar from an input or inline for selecting dates.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7315 //>>docs: http://api.jqueryui.com/datepicker/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7316 //>>demos: http://jqueryui.com/datepicker/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7317 //>>css.structure: ../../themes/base/core.css
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7318 //>>css.structure: ../../themes/base/datepicker.css
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7319 //>>css.theme: ../../themes/base/theme.css
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7320
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7321
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7322 $.extend( $.ui, { datepicker: { version: "1.13.2" } } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7323
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7324 var datepicker_instActive;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7325
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7326 function datepicker_getZindex( elem ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7327 var position, value;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7328 while ( elem.length && elem[ 0 ] !== document ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7329
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7330 // Ignore z-index if position is set to a value where z-index is ignored by the browser
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7331 // This makes behavior of this function consistent across browsers
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7332 // WebKit always returns auto if the element is positioned
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7333 position = elem.css( "position" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7334 if ( position === "absolute" || position === "relative" || position === "fixed" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7335
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7336 // IE returns 0 when zIndex is not specified
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7337 // other browsers return a string
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7338 // we ignore the case of nested elements with an explicit value of 0
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7339 // <div style="z-index: -10;"><div style="z-index: 0;"></div></div>
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7340 value = parseInt( elem.css( "zIndex" ), 10 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7341 if ( !isNaN( value ) && value !== 0 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7342 return value;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7343 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7344 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7345 elem = elem.parent();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7346 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7347
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7348 return 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7349 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7350
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7351 /* Date picker manager.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7352 Use the singleton instance of this class, $.datepicker, to interact with the date picker.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7353 Settings for (groups of) date pickers are maintained in an instance object,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7354 allowing multiple different settings on the same page. */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7355
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7356 function Datepicker() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7357 this._curInst = null; // The current instance in use
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7358 this._keyEvent = false; // If the last event was a key event
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7359 this._disabledInputs = []; // List of date picker inputs that have been disabled
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7360 this._datepickerShowing = false; // True if the popup picker is showing , false if not
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7361 this._inDialog = false; // True if showing within a "dialog", false if not
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7362 this._mainDivId = "ui-datepicker-div"; // The ID of the main datepicker division
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7363 this._inlineClass = "ui-datepicker-inline"; // The name of the inline marker class
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7364 this._appendClass = "ui-datepicker-append"; // The name of the append marker class
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7365 this._triggerClass = "ui-datepicker-trigger"; // The name of the trigger marker class
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7366 this._dialogClass = "ui-datepicker-dialog"; // The name of the dialog marker class
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7367 this._disableClass = "ui-datepicker-disabled"; // The name of the disabled covering marker class
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7368 this._unselectableClass = "ui-datepicker-unselectable"; // The name of the unselectable cell marker class
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7369 this._currentClass = "ui-datepicker-current-day"; // The name of the current day marker class
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7370 this._dayOverClass = "ui-datepicker-days-cell-over"; // The name of the day hover marker class
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7371 this.regional = []; // Available regional settings, indexed by language code
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7372 this.regional[ "" ] = { // Default regional settings
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7373 closeText: "Done", // Display text for close link
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7374 prevText: "Prev", // Display text for previous month link
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7375 nextText: "Next", // Display text for next month link
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7376 currentText: "Today", // Display text for current month link
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7377 monthNames: [ "January", "February", "March", "April", "May", "June",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7378 "July", "August", "September", "October", "November", "December" ], // Names of months for drop-down and formatting
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7379 monthNamesShort: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ], // For formatting
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7380 dayNames: [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ], // For formatting
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7381 dayNamesShort: [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ], // For formatting
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7382 dayNamesMin: [ "Su", "Mo", "Tu", "We", "Th", "Fr", "Sa" ], // Column headings for days starting at Sunday
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7383 weekHeader: "Wk", // Column header for week of the year
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7384 dateFormat: "mm/dd/yy", // See format options on parseDate
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7385 firstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ...
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7386 isRTL: false, // True if right-to-left language, false if left-to-right
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7387 showMonthAfterYear: false, // True if the year select precedes month, false for month then year
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7388 yearSuffix: "", // Additional text to append to the year in the month headers,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7389 selectMonthLabel: "Select month", // Invisible label for month selector
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7390 selectYearLabel: "Select year" // Invisible label for year selector
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7391 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7392 this._defaults = { // Global defaults for all the date picker instances
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7393 showOn: "focus", // "focus" for popup on focus,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7394 // "button" for trigger button, or "both" for either
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7395 showAnim: "fadeIn", // Name of jQuery animation for popup
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7396 showOptions: {}, // Options for enhanced animations
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7397 defaultDate: null, // Used when field is blank: actual date,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7398 // +/-number for offset from today, null for today
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7399 appendText: "", // Display text following the input box, e.g. showing the format
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7400 buttonText: "...", // Text for trigger button
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7401 buttonImage: "", // URL for trigger button image
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7402 buttonImageOnly: false, // True if the image appears alone, false if it appears on a button
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7403 hideIfNoPrevNext: false, // True to hide next/previous month links
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7404 // if not applicable, false to just disable them
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7405 navigationAsDateFormat: false, // True if date formatting applied to prev/today/next links
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7406 gotoCurrent: false, // True if today link goes back to current selection instead
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7407 changeMonth: false, // True if month can be selected directly, false if only prev/next
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7408 changeYear: false, // True if year can be selected directly, false if only prev/next
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7409 yearRange: "c-10:c+10", // Range of years to display in drop-down,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7410 // either relative to today's year (-nn:+nn), relative to currently displayed year
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7411 // (c-nn:c+nn), absolute (nnnn:nnnn), or a combination of the above (nnnn:-n)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7412 showOtherMonths: false, // True to show dates in other months, false to leave blank
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7413 selectOtherMonths: false, // True to allow selection of dates in other months, false for unselectable
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7414 showWeek: false, // True to show week of the year, false to not show it
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7415 calculateWeek: this.iso8601Week, // How to calculate the week of the year,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7416 // takes a Date and returns the number of the week for it
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7417 shortYearCutoff: "+10", // Short year values < this are in the current century,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7418 // > this are in the previous century,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7419 // string value starting with "+" for current year + value
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7420 minDate: null, // The earliest selectable date, or null for no limit
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7421 maxDate: null, // The latest selectable date, or null for no limit
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7422 duration: "fast", // Duration of display/closure
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7423 beforeShowDay: null, // Function that takes a date and returns an array with
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7424 // [0] = true if selectable, false if not, [1] = custom CSS class name(s) or "",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7425 // [2] = cell title (optional), e.g. $.datepicker.noWeekends
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7426 beforeShow: null, // Function that takes an input field and
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7427 // returns a set of custom settings for the date picker
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7428 onSelect: null, // Define a callback function when a date is selected
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7429 onChangeMonthYear: null, // Define a callback function when the month or year is changed
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7430 onClose: null, // Define a callback function when the datepicker is closed
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7431 onUpdateDatepicker: null, // Define a callback function when the datepicker is updated
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7432 numberOfMonths: 1, // Number of months to show at a time
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7433 showCurrentAtPos: 0, // The position in multipe months at which to show the current month (starting at 0)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7434 stepMonths: 1, // Number of months to step back/forward
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7435 stepBigMonths: 12, // Number of months to step back/forward for the big links
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7436 altField: "", // Selector for an alternate field to store selected dates into
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7437 altFormat: "", // The date format to use for the alternate field
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7438 constrainInput: true, // The input is constrained by the current date format
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7439 showButtonPanel: false, // True to show button panel, false to not show it
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7440 autoSize: false, // True to size the input for the date format, false to leave as is
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7441 disabled: false // The initial disabled state
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7442 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7443 $.extend( this._defaults, this.regional[ "" ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7444 this.regional.en = $.extend( true, {}, this.regional[ "" ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7445 this.regional[ "en-US" ] = $.extend( true, {}, this.regional.en );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7446 this.dpDiv = datepicker_bindHover( $( "<div id='" + this._mainDivId + "' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>" ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7447 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7448
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7449 $.extend( Datepicker.prototype, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7450
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7451 /* Class name added to elements to indicate already configured with a date picker. */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7452 markerClassName: "hasDatepicker",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7453
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7454 //Keep track of the maximum number of rows displayed (see #7043)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7455 maxRows: 4,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7456
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7457 // TODO rename to "widget" when switching to widget factory
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7458 _widgetDatepicker: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7459 return this.dpDiv;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7460 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7461
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7462 /* Override the default settings for all instances of the date picker.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7463 * @param settings object - the new settings to use as defaults (anonymous object)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7464 * @return the manager object
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7465 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7466 setDefaults: function( settings ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7467 datepicker_extendRemove( this._defaults, settings || {} );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7468 return this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7469 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7470
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7471 /* Attach the date picker to a jQuery selection.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7472 * @param target element - the target input field or division or span
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7473 * @param settings object - the new settings to use for this date picker instance (anonymous)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7474 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7475 _attachDatepicker: function( target, settings ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7476 var nodeName, inline, inst;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7477 nodeName = target.nodeName.toLowerCase();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7478 inline = ( nodeName === "div" || nodeName === "span" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7479 if ( !target.id ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7480 this.uuid += 1;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7481 target.id = "dp" + this.uuid;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7482 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7483 inst = this._newInst( $( target ), inline );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7484 inst.settings = $.extend( {}, settings || {} );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7485 if ( nodeName === "input" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7486 this._connectDatepicker( target, inst );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7487 } else if ( inline ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7488 this._inlineDatepicker( target, inst );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7489 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7490 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7491
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7492 /* Create a new instance object. */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7493 _newInst: function( target, inline ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7494 var id = target[ 0 ].id.replace( /([^A-Za-z0-9_\-])/g, "\\\\$1" ); // escape jQuery meta chars
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7495 return { id: id, input: target, // associated target
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7496 selectedDay: 0, selectedMonth: 0, selectedYear: 0, // current selection
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7497 drawMonth: 0, drawYear: 0, // month being drawn
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7498 inline: inline, // is datepicker inline or not
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7499 dpDiv: ( !inline ? this.dpDiv : // presentation div
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7500 datepicker_bindHover( $( "<div class='" + this._inlineClass + " ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>" ) ) ) };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7501 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7502
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7503 /* Attach the date picker to an input field. */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7504 _connectDatepicker: function( target, inst ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7505 var input = $( target );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7506 inst.append = $( [] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7507 inst.trigger = $( [] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7508 if ( input.hasClass( this.markerClassName ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7509 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7510 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7511 this._attachments( input, inst );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7512 input.addClass( this.markerClassName ).on( "keydown", this._doKeyDown ).
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7513 on( "keypress", this._doKeyPress ).on( "keyup", this._doKeyUp );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7514 this._autoSize( inst );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7515 $.data( target, "datepicker", inst );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7516
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7517 //If disabled option is true, disable the datepicker once it has been attached to the input (see ticket #5665)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7518 if ( inst.settings.disabled ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7519 this._disableDatepicker( target );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7520 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7521 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7522
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7523 /* Make attachments based on settings. */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7524 _attachments: function( input, inst ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7525 var showOn, buttonText, buttonImage,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7526 appendText = this._get( inst, "appendText" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7527 isRTL = this._get( inst, "isRTL" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7528
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7529 if ( inst.append ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7530 inst.append.remove();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7531 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7532 if ( appendText ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7533 inst.append = $( "<span>" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7534 .addClass( this._appendClass )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7535 .text( appendText );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7536 input[ isRTL ? "before" : "after" ]( inst.append );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7537 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7538
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7539 input.off( "focus", this._showDatepicker );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7540
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7541 if ( inst.trigger ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7542 inst.trigger.remove();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7543 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7544
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7545 showOn = this._get( inst, "showOn" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7546 if ( showOn === "focus" || showOn === "both" ) { // pop-up date picker when in the marked field
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7547 input.on( "focus", this._showDatepicker );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7548 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7549 if ( showOn === "button" || showOn === "both" ) { // pop-up date picker when button clicked
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7550 buttonText = this._get( inst, "buttonText" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7551 buttonImage = this._get( inst, "buttonImage" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7552
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7553 if ( this._get( inst, "buttonImageOnly" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7554 inst.trigger = $( "<img>" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7555 .addClass( this._triggerClass )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7556 .attr( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7557 src: buttonImage,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7558 alt: buttonText,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7559 title: buttonText
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7560 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7561 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7562 inst.trigger = $( "<button type='button'>" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7563 .addClass( this._triggerClass );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7564 if ( buttonImage ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7565 inst.trigger.html(
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7566 $( "<img>" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7567 .attr( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7568 src: buttonImage,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7569 alt: buttonText,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7570 title: buttonText
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7571 } )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7572 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7573 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7574 inst.trigger.text( buttonText );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7575 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7576 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7577
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7578 input[ isRTL ? "before" : "after" ]( inst.trigger );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7579 inst.trigger.on( "click", function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7580 if ( $.datepicker._datepickerShowing && $.datepicker._lastInput === input[ 0 ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7581 $.datepicker._hideDatepicker();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7582 } else if ( $.datepicker._datepickerShowing && $.datepicker._lastInput !== input[ 0 ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7583 $.datepicker._hideDatepicker();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7584 $.datepicker._showDatepicker( input[ 0 ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7585 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7586 $.datepicker._showDatepicker( input[ 0 ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7587 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7588 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7589 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7590 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7591 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7592
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7593 /* Apply the maximum length for the date format. */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7594 _autoSize: function( inst ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7595 if ( this._get( inst, "autoSize" ) && !inst.inline ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7596 var findMax, max, maxI, i,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7597 date = new Date( 2009, 12 - 1, 20 ), // Ensure double digits
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7598 dateFormat = this._get( inst, "dateFormat" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7599
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7600 if ( dateFormat.match( /[DM]/ ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7601 findMax = function( names ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7602 max = 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7603 maxI = 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7604 for ( i = 0; i < names.length; i++ ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7605 if ( names[ i ].length > max ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7606 max = names[ i ].length;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7607 maxI = i;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7608 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7609 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7610 return maxI;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7611 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7612 date.setMonth( findMax( this._get( inst, ( dateFormat.match( /MM/ ) ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7613 "monthNames" : "monthNamesShort" ) ) ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7614 date.setDate( findMax( this._get( inst, ( dateFormat.match( /DD/ ) ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7615 "dayNames" : "dayNamesShort" ) ) ) + 20 - date.getDay() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7616 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7617 inst.input.attr( "size", this._formatDate( inst, date ).length );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7618 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7619 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7620
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7621 /* Attach an inline date picker to a div. */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7622 _inlineDatepicker: function( target, inst ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7623 var divSpan = $( target );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7624 if ( divSpan.hasClass( this.markerClassName ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7625 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7626 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7627 divSpan.addClass( this.markerClassName ).append( inst.dpDiv );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7628 $.data( target, "datepicker", inst );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7629 this._setDate( inst, this._getDefaultDate( inst ), true );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7630 this._updateDatepicker( inst );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7631 this._updateAlternate( inst );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7632
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7633 //If disabled option is true, disable the datepicker before showing it (see ticket #5665)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7634 if ( inst.settings.disabled ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7635 this._disableDatepicker( target );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7636 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7637
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7638 // Set display:block in place of inst.dpDiv.show() which won't work on disconnected elements
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7639 // http://bugs.jqueryui.com/ticket/7552 - A Datepicker created on a detached div has zero height
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7640 inst.dpDiv.css( "display", "block" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7641 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7642
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7643 /* Pop-up the date picker in a "dialog" box.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7644 * @param input element - ignored
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7645 * @param date string or Date - the initial date to display
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7646 * @param onSelect function - the function to call when a date is selected
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7647 * @param settings object - update the dialog date picker instance's settings (anonymous object)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7648 * @param pos int[2] - coordinates for the dialog's position within the screen or
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7649 * event - with x/y coordinates or
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7650 * leave empty for default (screen centre)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7651 * @return the manager object
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7652 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7653 _dialogDatepicker: function( input, date, onSelect, settings, pos ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7654 var id, browserWidth, browserHeight, scrollX, scrollY,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7655 inst = this._dialogInst; // internal instance
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7656
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7657 if ( !inst ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7658 this.uuid += 1;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7659 id = "dp" + this.uuid;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7660 this._dialogInput = $( "<input type='text' id='" + id +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7661 "' style='position: absolute; top: -100px; width: 0px;'/>" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7662 this._dialogInput.on( "keydown", this._doKeyDown );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7663 $( "body" ).append( this._dialogInput );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7664 inst = this._dialogInst = this._newInst( this._dialogInput, false );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7665 inst.settings = {};
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7666 $.data( this._dialogInput[ 0 ], "datepicker", inst );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7667 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7668 datepicker_extendRemove( inst.settings, settings || {} );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7669 date = ( date && date.constructor === Date ? this._formatDate( inst, date ) : date );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7670 this._dialogInput.val( date );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7671
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7672 this._pos = ( pos ? ( pos.length ? pos : [ pos.pageX, pos.pageY ] ) : null );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7673 if ( !this._pos ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7674 browserWidth = document.documentElement.clientWidth;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7675 browserHeight = document.documentElement.clientHeight;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7676 scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7677 scrollY = document.documentElement.scrollTop || document.body.scrollTop;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7678 this._pos = // should use actual width/height below
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7679 [ ( browserWidth / 2 ) - 100 + scrollX, ( browserHeight / 2 ) - 150 + scrollY ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7680 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7681
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7682 // Move input on screen for focus, but hidden behind dialog
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7683 this._dialogInput.css( "left", ( this._pos[ 0 ] + 20 ) + "px" ).css( "top", this._pos[ 1 ] + "px" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7684 inst.settings.onSelect = onSelect;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7685 this._inDialog = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7686 this.dpDiv.addClass( this._dialogClass );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7687 this._showDatepicker( this._dialogInput[ 0 ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7688 if ( $.blockUI ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7689 $.blockUI( this.dpDiv );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7690 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7691 $.data( this._dialogInput[ 0 ], "datepicker", inst );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7692 return this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7693 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7694
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7695 /* Detach a datepicker from its control.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7696 * @param target element - the target input field or division or span
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7697 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7698 _destroyDatepicker: function( target ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7699 var nodeName,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7700 $target = $( target ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7701 inst = $.data( target, "datepicker" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7702
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7703 if ( !$target.hasClass( this.markerClassName ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7704 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7705 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7706
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7707 nodeName = target.nodeName.toLowerCase();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7708 $.removeData( target, "datepicker" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7709 if ( nodeName === "input" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7710 inst.append.remove();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7711 inst.trigger.remove();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7712 $target.removeClass( this.markerClassName ).
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7713 off( "focus", this._showDatepicker ).
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7714 off( "keydown", this._doKeyDown ).
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7715 off( "keypress", this._doKeyPress ).
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7716 off( "keyup", this._doKeyUp );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7717 } else if ( nodeName === "div" || nodeName === "span" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7718 $target.removeClass( this.markerClassName ).empty();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7719 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7720
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7721 if ( datepicker_instActive === inst ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7722 datepicker_instActive = null;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7723 this._curInst = null;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7724 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7725 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7726
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7727 /* Enable the date picker to a jQuery selection.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7728 * @param target element - the target input field or division or span
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7729 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7730 _enableDatepicker: function( target ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7731 var nodeName, inline,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7732 $target = $( target ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7733 inst = $.data( target, "datepicker" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7734
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7735 if ( !$target.hasClass( this.markerClassName ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7736 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7737 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7738
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7739 nodeName = target.nodeName.toLowerCase();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7740 if ( nodeName === "input" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7741 target.disabled = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7742 inst.trigger.filter( "button" ).
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7743 each( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7744 this.disabled = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7745 } ).end().
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7746 filter( "img" ).css( { opacity: "1.0", cursor: "" } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7747 } else if ( nodeName === "div" || nodeName === "span" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7748 inline = $target.children( "." + this._inlineClass );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7749 inline.children().removeClass( "ui-state-disabled" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7750 inline.find( "select.ui-datepicker-month, select.ui-datepicker-year" ).
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7751 prop( "disabled", false );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7752 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7753 this._disabledInputs = $.map( this._disabledInputs,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7754
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7755 // Delete entry
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7756 function( value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7757 return ( value === target ? null : value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7758 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7759 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7760
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7761 /* Disable the date picker to a jQuery selection.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7762 * @param target element - the target input field or division or span
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7763 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7764 _disableDatepicker: function( target ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7765 var nodeName, inline,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7766 $target = $( target ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7767 inst = $.data( target, "datepicker" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7768
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7769 if ( !$target.hasClass( this.markerClassName ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7770 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7771 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7772
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7773 nodeName = target.nodeName.toLowerCase();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7774 if ( nodeName === "input" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7775 target.disabled = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7776 inst.trigger.filter( "button" ).
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7777 each( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7778 this.disabled = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7779 } ).end().
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7780 filter( "img" ).css( { opacity: "0.5", cursor: "default" } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7781 } else if ( nodeName === "div" || nodeName === "span" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7782 inline = $target.children( "." + this._inlineClass );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7783 inline.children().addClass( "ui-state-disabled" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7784 inline.find( "select.ui-datepicker-month, select.ui-datepicker-year" ).
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7785 prop( "disabled", true );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7786 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7787 this._disabledInputs = $.map( this._disabledInputs,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7788
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7789 // Delete entry
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7790 function( value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7791 return ( value === target ? null : value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7792 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7793 this._disabledInputs[ this._disabledInputs.length ] = target;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7794 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7795
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7796 /* Is the first field in a jQuery collection disabled as a datepicker?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7797 * @param target element - the target input field or division or span
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7798 * @return boolean - true if disabled, false if enabled
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7799 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7800 _isDisabledDatepicker: function( target ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7801 if ( !target ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7802 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7803 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7804 for ( var i = 0; i < this._disabledInputs.length; i++ ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7805 if ( this._disabledInputs[ i ] === target ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7806 return true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7807 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7808 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7809 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7810 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7811
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7812 /* Retrieve the instance data for the target control.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7813 * @param target element - the target input field or division or span
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7814 * @return object - the associated instance data
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7815 * @throws error if a jQuery problem getting data
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7816 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7817 _getInst: function( target ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7818 try {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7819 return $.data( target, "datepicker" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7820 } catch ( err ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7821 throw "Missing instance data for this datepicker";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7822 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7823 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7824
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7825 /* Update or retrieve the settings for a date picker attached to an input field or division.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7826 * @param target element - the target input field or division or span
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7827 * @param name object - the new settings to update or
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7828 * string - the name of the setting to change or retrieve,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7829 * when retrieving also "all" for all instance settings or
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7830 * "defaults" for all global defaults
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7831 * @param value any - the new value for the setting
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7832 * (omit if above is an object or to retrieve a value)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7833 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7834 _optionDatepicker: function( target, name, value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7835 var settings, date, minDate, maxDate,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7836 inst = this._getInst( target );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7837
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7838 if ( arguments.length === 2 && typeof name === "string" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7839 return ( name === "defaults" ? $.extend( {}, $.datepicker._defaults ) :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7840 ( inst ? ( name === "all" ? $.extend( {}, inst.settings ) :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7841 this._get( inst, name ) ) : null ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7842 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7843
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7844 settings = name || {};
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7845 if ( typeof name === "string" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7846 settings = {};
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7847 settings[ name ] = value;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7848 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7849
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7850 if ( inst ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7851 if ( this._curInst === inst ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7852 this._hideDatepicker();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7853 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7854
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7855 date = this._getDateDatepicker( target, true );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7856 minDate = this._getMinMaxDate( inst, "min" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7857 maxDate = this._getMinMaxDate( inst, "max" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7858 datepicker_extendRemove( inst.settings, settings );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7859
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7860 // reformat the old minDate/maxDate values if dateFormat changes and a new minDate/maxDate isn't provided
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7861 if ( minDate !== null && settings.dateFormat !== undefined && settings.minDate === undefined ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7862 inst.settings.minDate = this._formatDate( inst, minDate );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7863 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7864 if ( maxDate !== null && settings.dateFormat !== undefined && settings.maxDate === undefined ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7865 inst.settings.maxDate = this._formatDate( inst, maxDate );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7866 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7867 if ( "disabled" in settings ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7868 if ( settings.disabled ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7869 this._disableDatepicker( target );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7870 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7871 this._enableDatepicker( target );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7872 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7873 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7874 this._attachments( $( target ), inst );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7875 this._autoSize( inst );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7876 this._setDate( inst, date );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7877 this._updateAlternate( inst );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7878 this._updateDatepicker( inst );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7879 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7880 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7881
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7882 // Change method deprecated
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7883 _changeDatepicker: function( target, name, value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7884 this._optionDatepicker( target, name, value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7885 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7886
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7887 /* Redraw the date picker attached to an input field or division.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7888 * @param target element - the target input field or division or span
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7889 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7890 _refreshDatepicker: function( target ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7891 var inst = this._getInst( target );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7892 if ( inst ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7893 this._updateDatepicker( inst );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7894 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7895 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7896
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7897 /* Set the dates for a jQuery selection.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7898 * @param target element - the target input field or division or span
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7899 * @param date Date - the new date
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7900 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7901 _setDateDatepicker: function( target, date ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7902 var inst = this._getInst( target );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7903 if ( inst ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7904 this._setDate( inst, date );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7905 this._updateDatepicker( inst );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7906 this._updateAlternate( inst );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7907 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7908 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7909
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7910 /* Get the date(s) for the first entry in a jQuery selection.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7911 * @param target element - the target input field or division or span
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7912 * @param noDefault boolean - true if no default date is to be used
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7913 * @return Date - the current date
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7914 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7915 _getDateDatepicker: function( target, noDefault ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7916 var inst = this._getInst( target );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7917 if ( inst && !inst.inline ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7918 this._setDateFromField( inst, noDefault );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7919 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7920 return ( inst ? this._getDate( inst ) : null );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7921 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7922
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7923 /* Handle keystrokes. */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7924 _doKeyDown: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7925 var onSelect, dateStr, sel,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7926 inst = $.datepicker._getInst( event.target ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7927 handled = true,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7928 isRTL = inst.dpDiv.is( ".ui-datepicker-rtl" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7929
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7930 inst._keyEvent = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7931 if ( $.datepicker._datepickerShowing ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7932 switch ( event.keyCode ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7933 case 9: $.datepicker._hideDatepicker();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7934 handled = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7935 break; // hide on tab out
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7936 case 13: sel = $( "td." + $.datepicker._dayOverClass + ":not(." +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7937 $.datepicker._currentClass + ")", inst.dpDiv );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7938 if ( sel[ 0 ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7939 $.datepicker._selectDay( event.target, inst.selectedMonth, inst.selectedYear, sel[ 0 ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7940 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7941
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7942 onSelect = $.datepicker._get( inst, "onSelect" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7943 if ( onSelect ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7944 dateStr = $.datepicker._formatDate( inst );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7945
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7946 // Trigger custom callback
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7947 onSelect.apply( ( inst.input ? inst.input[ 0 ] : null ), [ dateStr, inst ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7948 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7949 $.datepicker._hideDatepicker();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7950 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7951
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7952 return false; // don't submit the form
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7953 case 27: $.datepicker._hideDatepicker();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7954 break; // hide on escape
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7955 case 33: $.datepicker._adjustDate( event.target, ( event.ctrlKey ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7956 -$.datepicker._get( inst, "stepBigMonths" ) :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7957 -$.datepicker._get( inst, "stepMonths" ) ), "M" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7958 break; // previous month/year on page up/+ ctrl
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7959 case 34: $.datepicker._adjustDate( event.target, ( event.ctrlKey ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7960 +$.datepicker._get( inst, "stepBigMonths" ) :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7961 +$.datepicker._get( inst, "stepMonths" ) ), "M" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7962 break; // next month/year on page down/+ ctrl
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7963 case 35: if ( event.ctrlKey || event.metaKey ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7964 $.datepicker._clearDate( event.target );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7965 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7966 handled = event.ctrlKey || event.metaKey;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7967 break; // clear on ctrl or command +end
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7968 case 36: if ( event.ctrlKey || event.metaKey ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7969 $.datepicker._gotoToday( event.target );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7970 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7971 handled = event.ctrlKey || event.metaKey;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7972 break; // current on ctrl or command +home
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7973 case 37: if ( event.ctrlKey || event.metaKey ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7974 $.datepicker._adjustDate( event.target, ( isRTL ? +1 : -1 ), "D" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7975 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7976 handled = event.ctrlKey || event.metaKey;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7977
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7978 // -1 day on ctrl or command +left
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7979 if ( event.originalEvent.altKey ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7980 $.datepicker._adjustDate( event.target, ( event.ctrlKey ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7981 -$.datepicker._get( inst, "stepBigMonths" ) :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7982 -$.datepicker._get( inst, "stepMonths" ) ), "M" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7983 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7984
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7985 // next month/year on alt +left on Mac
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7986 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7987 case 38: if ( event.ctrlKey || event.metaKey ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7988 $.datepicker._adjustDate( event.target, -7, "D" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7989 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7990 handled = event.ctrlKey || event.metaKey;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7991 break; // -1 week on ctrl or command +up
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7992 case 39: if ( event.ctrlKey || event.metaKey ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7993 $.datepicker._adjustDate( event.target, ( isRTL ? -1 : +1 ), "D" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7994 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7995 handled = event.ctrlKey || event.metaKey;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7996
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7997 // +1 day on ctrl or command +right
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7998 if ( event.originalEvent.altKey ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
7999 $.datepicker._adjustDate( event.target, ( event.ctrlKey ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8000 +$.datepicker._get( inst, "stepBigMonths" ) :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8001 +$.datepicker._get( inst, "stepMonths" ) ), "M" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8002 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8003
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8004 // next month/year on alt +right
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8005 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8006 case 40: if ( event.ctrlKey || event.metaKey ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8007 $.datepicker._adjustDate( event.target, +7, "D" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8008 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8009 handled = event.ctrlKey || event.metaKey;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8010 break; // +1 week on ctrl or command +down
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8011 default: handled = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8012 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8013 } else if ( event.keyCode === 36 && event.ctrlKey ) { // display the date picker on ctrl+home
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8014 $.datepicker._showDatepicker( this );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8015 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8016 handled = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8017 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8018
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8019 if ( handled ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8020 event.preventDefault();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8021 event.stopPropagation();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8022 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8023 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8024
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8025 /* Filter entered characters - based on date format. */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8026 _doKeyPress: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8027 var chars, chr,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8028 inst = $.datepicker._getInst( event.target );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8029
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8030 if ( $.datepicker._get( inst, "constrainInput" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8031 chars = $.datepicker._possibleChars( $.datepicker._get( inst, "dateFormat" ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8032 chr = String.fromCharCode( event.charCode == null ? event.keyCode : event.charCode );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8033 return event.ctrlKey || event.metaKey || ( chr < " " || !chars || chars.indexOf( chr ) > -1 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8034 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8035 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8036
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8037 /* Synchronise manual entry and field/alternate field. */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8038 _doKeyUp: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8039 var date,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8040 inst = $.datepicker._getInst( event.target );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8041
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8042 if ( inst.input.val() !== inst.lastVal ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8043 try {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8044 date = $.datepicker.parseDate( $.datepicker._get( inst, "dateFormat" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8045 ( inst.input ? inst.input.val() : null ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8046 $.datepicker._getFormatConfig( inst ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8047
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8048 if ( date ) { // only if valid
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8049 $.datepicker._setDateFromField( inst );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8050 $.datepicker._updateAlternate( inst );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8051 $.datepicker._updateDatepicker( inst );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8052 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8053 } catch ( err ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8054 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8055 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8056 return true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8057 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8058
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8059 /* Pop-up the date picker for a given input field.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8060 * If false returned from beforeShow event handler do not show.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8061 * @param input element - the input field attached to the date picker or
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8062 * event - if triggered by focus
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8063 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8064 _showDatepicker: function( input ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8065 input = input.target || input;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8066 if ( input.nodeName.toLowerCase() !== "input" ) { // find from button/image trigger
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8067 input = $( "input", input.parentNode )[ 0 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8068 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8069
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8070 if ( $.datepicker._isDisabledDatepicker( input ) || $.datepicker._lastInput === input ) { // already here
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8071 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8072 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8073
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8074 var inst, beforeShow, beforeShowSettings, isFixed,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8075 offset, showAnim, duration;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8076
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8077 inst = $.datepicker._getInst( input );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8078 if ( $.datepicker._curInst && $.datepicker._curInst !== inst ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8079 $.datepicker._curInst.dpDiv.stop( true, true );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8080 if ( inst && $.datepicker._datepickerShowing ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8081 $.datepicker._hideDatepicker( $.datepicker._curInst.input[ 0 ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8082 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8083 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8084
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8085 beforeShow = $.datepicker._get( inst, "beforeShow" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8086 beforeShowSettings = beforeShow ? beforeShow.apply( input, [ input, inst ] ) : {};
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8087 if ( beforeShowSettings === false ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8088 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8089 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8090 datepicker_extendRemove( inst.settings, beforeShowSettings );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8091
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8092 inst.lastVal = null;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8093 $.datepicker._lastInput = input;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8094 $.datepicker._setDateFromField( inst );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8095
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8096 if ( $.datepicker._inDialog ) { // hide cursor
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8097 input.value = "";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8098 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8099 if ( !$.datepicker._pos ) { // position below input
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8100 $.datepicker._pos = $.datepicker._findPos( input );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8101 $.datepicker._pos[ 1 ] += input.offsetHeight; // add the height
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8102 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8103
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8104 isFixed = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8105 $( input ).parents().each( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8106 isFixed |= $( this ).css( "position" ) === "fixed";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8107 return !isFixed;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8108 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8109
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8110 offset = { left: $.datepicker._pos[ 0 ], top: $.datepicker._pos[ 1 ] };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8111 $.datepicker._pos = null;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8112
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8113 //to avoid flashes on Firefox
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8114 inst.dpDiv.empty();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8115
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8116 // determine sizing offscreen
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8117 inst.dpDiv.css( { position: "absolute", display: "block", top: "-1000px" } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8118 $.datepicker._updateDatepicker( inst );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8119
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8120 // fix width for dynamic number of date pickers
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8121 // and adjust position before showing
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8122 offset = $.datepicker._checkOffset( inst, offset, isFixed );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8123 inst.dpDiv.css( { position: ( $.datepicker._inDialog && $.blockUI ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8124 "static" : ( isFixed ? "fixed" : "absolute" ) ), display: "none",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8125 left: offset.left + "px", top: offset.top + "px" } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8126
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8127 if ( !inst.inline ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8128 showAnim = $.datepicker._get( inst, "showAnim" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8129 duration = $.datepicker._get( inst, "duration" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8130 inst.dpDiv.css( "z-index", datepicker_getZindex( $( input ) ) + 1 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8131 $.datepicker._datepickerShowing = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8132
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8133 if ( $.effects && $.effects.effect[ showAnim ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8134 inst.dpDiv.show( showAnim, $.datepicker._get( inst, "showOptions" ), duration );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8135 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8136 inst.dpDiv[ showAnim || "show" ]( showAnim ? duration : null );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8137 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8138
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8139 if ( $.datepicker._shouldFocusInput( inst ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8140 inst.input.trigger( "focus" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8141 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8142
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8143 $.datepicker._curInst = inst;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8144 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8145 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8146
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8147 /* Generate the date picker content. */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8148 _updateDatepicker: function( inst ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8149 this.maxRows = 4; //Reset the max number of rows being displayed (see #7043)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8150 datepicker_instActive = inst; // for delegate hover events
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8151 inst.dpDiv.empty().append( this._generateHTML( inst ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8152 this._attachHandlers( inst );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8153
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8154 var origyearshtml,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8155 numMonths = this._getNumberOfMonths( inst ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8156 cols = numMonths[ 1 ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8157 width = 17,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8158 activeCell = inst.dpDiv.find( "." + this._dayOverClass + " a" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8159 onUpdateDatepicker = $.datepicker._get( inst, "onUpdateDatepicker" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8160
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8161 if ( activeCell.length > 0 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8162 datepicker_handleMouseover.apply( activeCell.get( 0 ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8163 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8164
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8165 inst.dpDiv.removeClass( "ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4" ).width( "" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8166 if ( cols > 1 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8167 inst.dpDiv.addClass( "ui-datepicker-multi-" + cols ).css( "width", ( width * cols ) + "em" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8168 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8169 inst.dpDiv[ ( numMonths[ 0 ] !== 1 || numMonths[ 1 ] !== 1 ? "add" : "remove" ) +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8170 "Class" ]( "ui-datepicker-multi" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8171 inst.dpDiv[ ( this._get( inst, "isRTL" ) ? "add" : "remove" ) +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8172 "Class" ]( "ui-datepicker-rtl" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8173
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8174 if ( inst === $.datepicker._curInst && $.datepicker._datepickerShowing && $.datepicker._shouldFocusInput( inst ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8175 inst.input.trigger( "focus" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8176 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8177
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8178 // Deffered render of the years select (to avoid flashes on Firefox)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8179 if ( inst.yearshtml ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8180 origyearshtml = inst.yearshtml;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8181 setTimeout( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8182
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8183 //assure that inst.yearshtml didn't change.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8184 if ( origyearshtml === inst.yearshtml && inst.yearshtml ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8185 inst.dpDiv.find( "select.ui-datepicker-year" ).first().replaceWith( inst.yearshtml );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8186 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8187 origyearshtml = inst.yearshtml = null;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8188 }, 0 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8189 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8190
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8191 if ( onUpdateDatepicker ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8192 onUpdateDatepicker.apply( ( inst.input ? inst.input[ 0 ] : null ), [ inst ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8193 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8194 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8195
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8196 // #6694 - don't focus the input if it's already focused
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8197 // this breaks the change event in IE
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8198 // Support: IE and jQuery <1.9
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8199 _shouldFocusInput: function( inst ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8200 return inst.input && inst.input.is( ":visible" ) && !inst.input.is( ":disabled" ) && !inst.input.is( ":focus" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8201 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8202
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8203 /* Check positioning to remain on screen. */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8204 _checkOffset: function( inst, offset, isFixed ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8205 var dpWidth = inst.dpDiv.outerWidth(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8206 dpHeight = inst.dpDiv.outerHeight(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8207 inputWidth = inst.input ? inst.input.outerWidth() : 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8208 inputHeight = inst.input ? inst.input.outerHeight() : 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8209 viewWidth = document.documentElement.clientWidth + ( isFixed ? 0 : $( document ).scrollLeft() ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8210 viewHeight = document.documentElement.clientHeight + ( isFixed ? 0 : $( document ).scrollTop() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8211
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8212 offset.left -= ( this._get( inst, "isRTL" ) ? ( dpWidth - inputWidth ) : 0 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8213 offset.left -= ( isFixed && offset.left === inst.input.offset().left ) ? $( document ).scrollLeft() : 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8214 offset.top -= ( isFixed && offset.top === ( inst.input.offset().top + inputHeight ) ) ? $( document ).scrollTop() : 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8215
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8216 // Now check if datepicker is showing outside window viewport - move to a better place if so.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8217 offset.left -= Math.min( offset.left, ( offset.left + dpWidth > viewWidth && viewWidth > dpWidth ) ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8218 Math.abs( offset.left + dpWidth - viewWidth ) : 0 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8219 offset.top -= Math.min( offset.top, ( offset.top + dpHeight > viewHeight && viewHeight > dpHeight ) ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8220 Math.abs( dpHeight + inputHeight ) : 0 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8221
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8222 return offset;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8223 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8224
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8225 /* Find an object's position on the screen. */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8226 _findPos: function( obj ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8227 var position,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8228 inst = this._getInst( obj ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8229 isRTL = this._get( inst, "isRTL" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8230
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8231 while ( obj && ( obj.type === "hidden" || obj.nodeType !== 1 || $.expr.pseudos.hidden( obj ) ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8232 obj = obj[ isRTL ? "previousSibling" : "nextSibling" ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8233 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8234
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8235 position = $( obj ).offset();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8236 return [ position.left, position.top ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8237 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8238
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8239 /* Hide the date picker from view.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8240 * @param input element - the input field attached to the date picker
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8241 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8242 _hideDatepicker: function( input ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8243 var showAnim, duration, postProcess, onClose,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8244 inst = this._curInst;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8245
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8246 if ( !inst || ( input && inst !== $.data( input, "datepicker" ) ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8247 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8248 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8249
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8250 if ( this._datepickerShowing ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8251 showAnim = this._get( inst, "showAnim" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8252 duration = this._get( inst, "duration" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8253 postProcess = function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8254 $.datepicker._tidyDialog( inst );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8255 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8256
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8257 // DEPRECATED: after BC for 1.8.x $.effects[ showAnim ] is not needed
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8258 if ( $.effects && ( $.effects.effect[ showAnim ] || $.effects[ showAnim ] ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8259 inst.dpDiv.hide( showAnim, $.datepicker._get( inst, "showOptions" ), duration, postProcess );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8260 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8261 inst.dpDiv[ ( showAnim === "slideDown" ? "slideUp" :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8262 ( showAnim === "fadeIn" ? "fadeOut" : "hide" ) ) ]( ( showAnim ? duration : null ), postProcess );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8263 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8264
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8265 if ( !showAnim ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8266 postProcess();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8267 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8268 this._datepickerShowing = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8269
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8270 onClose = this._get( inst, "onClose" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8271 if ( onClose ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8272 onClose.apply( ( inst.input ? inst.input[ 0 ] : null ), [ ( inst.input ? inst.input.val() : "" ), inst ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8273 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8274
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8275 this._lastInput = null;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8276 if ( this._inDialog ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8277 this._dialogInput.css( { position: "absolute", left: "0", top: "-100px" } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8278 if ( $.blockUI ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8279 $.unblockUI();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8280 $( "body" ).append( this.dpDiv );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8281 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8282 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8283 this._inDialog = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8284 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8285 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8286
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8287 /* Tidy up after a dialog display. */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8288 _tidyDialog: function( inst ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8289 inst.dpDiv.removeClass( this._dialogClass ).off( ".ui-datepicker-calendar" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8290 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8291
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8292 /* Close date picker if clicked elsewhere. */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8293 _checkExternalClick: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8294 if ( !$.datepicker._curInst ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8295 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8296 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8297
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8298 var $target = $( event.target ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8299 inst = $.datepicker._getInst( $target[ 0 ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8300
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8301 if ( ( ( $target[ 0 ].id !== $.datepicker._mainDivId &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8302 $target.parents( "#" + $.datepicker._mainDivId ).length === 0 &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8303 !$target.hasClass( $.datepicker.markerClassName ) &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8304 !$target.closest( "." + $.datepicker._triggerClass ).length &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8305 $.datepicker._datepickerShowing && !( $.datepicker._inDialog && $.blockUI ) ) ) ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8306 ( $target.hasClass( $.datepicker.markerClassName ) && $.datepicker._curInst !== inst ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8307 $.datepicker._hideDatepicker();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8308 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8309 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8310
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8311 /* Adjust one of the date sub-fields. */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8312 _adjustDate: function( id, offset, period ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8313 var target = $( id ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8314 inst = this._getInst( target[ 0 ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8315
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8316 if ( this._isDisabledDatepicker( target[ 0 ] ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8317 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8318 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8319 this._adjustInstDate( inst, offset, period );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8320 this._updateDatepicker( inst );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8321 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8322
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8323 /* Action for current link. */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8324 _gotoToday: function( id ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8325 var date,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8326 target = $( id ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8327 inst = this._getInst( target[ 0 ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8328
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8329 if ( this._get( inst, "gotoCurrent" ) && inst.currentDay ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8330 inst.selectedDay = inst.currentDay;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8331 inst.drawMonth = inst.selectedMonth = inst.currentMonth;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8332 inst.drawYear = inst.selectedYear = inst.currentYear;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8333 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8334 date = new Date();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8335 inst.selectedDay = date.getDate();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8336 inst.drawMonth = inst.selectedMonth = date.getMonth();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8337 inst.drawYear = inst.selectedYear = date.getFullYear();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8338 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8339 this._notifyChange( inst );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8340 this._adjustDate( target );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8341 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8342
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8343 /* Action for selecting a new month/year. */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8344 _selectMonthYear: function( id, select, period ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8345 var target = $( id ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8346 inst = this._getInst( target[ 0 ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8347
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8348 inst[ "selected" + ( period === "M" ? "Month" : "Year" ) ] =
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8349 inst[ "draw" + ( period === "M" ? "Month" : "Year" ) ] =
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8350 parseInt( select.options[ select.selectedIndex ].value, 10 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8351
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8352 this._notifyChange( inst );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8353 this._adjustDate( target );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8354 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8355
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8356 /* Action for selecting a day. */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8357 _selectDay: function( id, month, year, td ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8358 var inst,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8359 target = $( id );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8360
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8361 if ( $( td ).hasClass( this._unselectableClass ) || this._isDisabledDatepicker( target[ 0 ] ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8362 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8363 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8364
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8365 inst = this._getInst( target[ 0 ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8366 inst.selectedDay = inst.currentDay = parseInt( $( "a", td ).attr( "data-date" ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8367 inst.selectedMonth = inst.currentMonth = month;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8368 inst.selectedYear = inst.currentYear = year;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8369 this._selectDate( id, this._formatDate( inst,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8370 inst.currentDay, inst.currentMonth, inst.currentYear ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8371 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8372
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8373 /* Erase the input field and hide the date picker. */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8374 _clearDate: function( id ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8375 var target = $( id );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8376 this._selectDate( target, "" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8377 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8378
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8379 /* Update the input field with the selected date. */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8380 _selectDate: function( id, dateStr ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8381 var onSelect,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8382 target = $( id ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8383 inst = this._getInst( target[ 0 ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8384
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8385 dateStr = ( dateStr != null ? dateStr : this._formatDate( inst ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8386 if ( inst.input ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8387 inst.input.val( dateStr );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8388 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8389 this._updateAlternate( inst );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8390
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8391 onSelect = this._get( inst, "onSelect" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8392 if ( onSelect ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8393 onSelect.apply( ( inst.input ? inst.input[ 0 ] : null ), [ dateStr, inst ] ); // trigger custom callback
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8394 } else if ( inst.input ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8395 inst.input.trigger( "change" ); // fire the change event
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8396 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8397
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8398 if ( inst.inline ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8399 this._updateDatepicker( inst );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8400 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8401 this._hideDatepicker();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8402 this._lastInput = inst.input[ 0 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8403 if ( typeof( inst.input[ 0 ] ) !== "object" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8404 inst.input.trigger( "focus" ); // restore focus
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8405 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8406 this._lastInput = null;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8407 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8408 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8409
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8410 /* Update any alternate field to synchronise with the main field. */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8411 _updateAlternate: function( inst ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8412 var altFormat, date, dateStr,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8413 altField = this._get( inst, "altField" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8414
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8415 if ( altField ) { // update alternate field too
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8416 altFormat = this._get( inst, "altFormat" ) || this._get( inst, "dateFormat" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8417 date = this._getDate( inst );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8418 dateStr = this.formatDate( altFormat, date, this._getFormatConfig( inst ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8419 $( document ).find( altField ).val( dateStr );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8420 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8421 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8422
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8423 /* Set as beforeShowDay function to prevent selection of weekends.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8424 * @param date Date - the date to customise
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8425 * @return [boolean, string] - is this date selectable?, what is its CSS class?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8426 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8427 noWeekends: function( date ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8428 var day = date.getDay();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8429 return [ ( day > 0 && day < 6 ), "" ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8430 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8431
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8432 /* Set as calculateWeek to determine the week of the year based on the ISO 8601 definition.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8433 * @param date Date - the date to get the week for
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8434 * @return number - the number of the week within the year that contains this date
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8435 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8436 iso8601Week: function( date ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8437 var time,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8438 checkDate = new Date( date.getTime() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8439
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8440 // Find Thursday of this week starting on Monday
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8441 checkDate.setDate( checkDate.getDate() + 4 - ( checkDate.getDay() || 7 ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8442
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8443 time = checkDate.getTime();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8444 checkDate.setMonth( 0 ); // Compare with Jan 1
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8445 checkDate.setDate( 1 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8446 return Math.floor( Math.round( ( time - checkDate ) / 86400000 ) / 7 ) + 1;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8447 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8448
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8449 /* Parse a string value into a date object.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8450 * See formatDate below for the possible formats.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8451 *
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8452 * @param format string - the expected format of the date
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8453 * @param value string - the date in the above format
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8454 * @param settings Object - attributes include:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8455 * shortYearCutoff number - the cutoff year for determining the century (optional)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8456 * dayNamesShort string[7] - abbreviated names of the days from Sunday (optional)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8457 * dayNames string[7] - names of the days from Sunday (optional)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8458 * monthNamesShort string[12] - abbreviated names of the months (optional)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8459 * monthNames string[12] - names of the months (optional)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8460 * @return Date - the extracted date value or null if value is blank
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8461 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8462 parseDate: function( format, value, settings ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8463 if ( format == null || value == null ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8464 throw "Invalid arguments";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8465 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8466
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8467 value = ( typeof value === "object" ? value.toString() : value + "" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8468 if ( value === "" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8469 return null;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8470 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8471
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8472 var iFormat, dim, extra,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8473 iValue = 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8474 shortYearCutoffTemp = ( settings ? settings.shortYearCutoff : null ) || this._defaults.shortYearCutoff,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8475 shortYearCutoff = ( typeof shortYearCutoffTemp !== "string" ? shortYearCutoffTemp :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8476 new Date().getFullYear() % 100 + parseInt( shortYearCutoffTemp, 10 ) ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8477 dayNamesShort = ( settings ? settings.dayNamesShort : null ) || this._defaults.dayNamesShort,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8478 dayNames = ( settings ? settings.dayNames : null ) || this._defaults.dayNames,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8479 monthNamesShort = ( settings ? settings.monthNamesShort : null ) || this._defaults.monthNamesShort,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8480 monthNames = ( settings ? settings.monthNames : null ) || this._defaults.monthNames,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8481 year = -1,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8482 month = -1,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8483 day = -1,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8484 doy = -1,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8485 literal = false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8486 date,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8487
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8488 // Check whether a format character is doubled
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8489 lookAhead = function( match ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8490 var matches = ( iFormat + 1 < format.length && format.charAt( iFormat + 1 ) === match );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8491 if ( matches ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8492 iFormat++;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8493 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8494 return matches;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8495 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8496
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8497 // Extract a number from the string value
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8498 getNumber = function( match ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8499 var isDoubled = lookAhead( match ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8500 size = ( match === "@" ? 14 : ( match === "!" ? 20 :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8501 ( match === "y" && isDoubled ? 4 : ( match === "o" ? 3 : 2 ) ) ) ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8502 minSize = ( match === "y" ? size : 1 ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8503 digits = new RegExp( "^\\d{" + minSize + "," + size + "}" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8504 num = value.substring( iValue ).match( digits );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8505 if ( !num ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8506 throw "Missing number at position " + iValue;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8507 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8508 iValue += num[ 0 ].length;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8509 return parseInt( num[ 0 ], 10 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8510 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8511
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8512 // Extract a name from the string value and convert to an index
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8513 getName = function( match, shortNames, longNames ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8514 var index = -1,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8515 names = $.map( lookAhead( match ) ? longNames : shortNames, function( v, k ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8516 return [ [ k, v ] ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8517 } ).sort( function( a, b ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8518 return -( a[ 1 ].length - b[ 1 ].length );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8519 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8520
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8521 $.each( names, function( i, pair ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8522 var name = pair[ 1 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8523 if ( value.substr( iValue, name.length ).toLowerCase() === name.toLowerCase() ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8524 index = pair[ 0 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8525 iValue += name.length;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8526 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8527 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8528 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8529 if ( index !== -1 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8530 return index + 1;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8531 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8532 throw "Unknown name at position " + iValue;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8533 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8534 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8535
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8536 // Confirm that a literal character matches the string value
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8537 checkLiteral = function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8538 if ( value.charAt( iValue ) !== format.charAt( iFormat ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8539 throw "Unexpected literal at position " + iValue;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8540 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8541 iValue++;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8542 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8543
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8544 for ( iFormat = 0; iFormat < format.length; iFormat++ ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8545 if ( literal ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8546 if ( format.charAt( iFormat ) === "'" && !lookAhead( "'" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8547 literal = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8548 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8549 checkLiteral();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8550 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8551 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8552 switch ( format.charAt( iFormat ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8553 case "d":
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8554 day = getNumber( "d" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8555 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8556 case "D":
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8557 getName( "D", dayNamesShort, dayNames );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8558 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8559 case "o":
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8560 doy = getNumber( "o" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8561 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8562 case "m":
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8563 month = getNumber( "m" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8564 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8565 case "M":
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8566 month = getName( "M", monthNamesShort, monthNames );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8567 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8568 case "y":
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8569 year = getNumber( "y" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8570 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8571 case "@":
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8572 date = new Date( getNumber( "@" ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8573 year = date.getFullYear();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8574 month = date.getMonth() + 1;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8575 day = date.getDate();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8576 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8577 case "!":
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8578 date = new Date( ( getNumber( "!" ) - this._ticksTo1970 ) / 10000 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8579 year = date.getFullYear();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8580 month = date.getMonth() + 1;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8581 day = date.getDate();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8582 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8583 case "'":
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8584 if ( lookAhead( "'" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8585 checkLiteral();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8586 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8587 literal = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8588 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8589 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8590 default:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8591 checkLiteral();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8592 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8593 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8594 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8595
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8596 if ( iValue < value.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8597 extra = value.substr( iValue );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8598 if ( !/^\s+/.test( extra ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8599 throw "Extra/unparsed characters found in date: " + extra;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8600 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8601 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8602
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8603 if ( year === -1 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8604 year = new Date().getFullYear();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8605 } else if ( year < 100 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8606 year += new Date().getFullYear() - new Date().getFullYear() % 100 +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8607 ( year <= shortYearCutoff ? 0 : -100 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8608 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8609
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8610 if ( doy > -1 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8611 month = 1;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8612 day = doy;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8613 do {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8614 dim = this._getDaysInMonth( year, month - 1 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8615 if ( day <= dim ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8616 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8617 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8618 month++;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8619 day -= dim;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8620 } while ( true );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8621 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8622
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8623 date = this._daylightSavingAdjust( new Date( year, month - 1, day ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8624 if ( date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8625 throw "Invalid date"; // E.g. 31/02/00
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8626 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8627 return date;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8628 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8629
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8630 /* Standard date formats. */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8631 ATOM: "yy-mm-dd", // RFC 3339 (ISO 8601)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8632 COOKIE: "D, dd M yy",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8633 ISO_8601: "yy-mm-dd",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8634 RFC_822: "D, d M y",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8635 RFC_850: "DD, dd-M-y",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8636 RFC_1036: "D, d M y",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8637 RFC_1123: "D, d M yy",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8638 RFC_2822: "D, d M yy",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8639 RSS: "D, d M y", // RFC 822
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8640 TICKS: "!",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8641 TIMESTAMP: "@",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8642 W3C: "yy-mm-dd", // ISO 8601
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8643
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8644 _ticksTo1970: ( ( ( 1970 - 1 ) * 365 + Math.floor( 1970 / 4 ) - Math.floor( 1970 / 100 ) +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8645 Math.floor( 1970 / 400 ) ) * 24 * 60 * 60 * 10000000 ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8646
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8647 /* Format a date object into a string value.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8648 * The format can be combinations of the following:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8649 * d - day of month (no leading zero)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8650 * dd - day of month (two digit)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8651 * o - day of year (no leading zeros)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8652 * oo - day of year (three digit)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8653 * D - day name short
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8654 * DD - day name long
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8655 * m - month of year (no leading zero)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8656 * mm - month of year (two digit)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8657 * M - month name short
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8658 * MM - month name long
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8659 * y - year (two digit)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8660 * yy - year (four digit)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8661 * @ - Unix timestamp (ms since 01/01/1970)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8662 * ! - Windows ticks (100ns since 01/01/0001)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8663 * "..." - literal text
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8664 * '' - single quote
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8665 *
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8666 * @param format string - the desired format of the date
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8667 * @param date Date - the date value to format
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8668 * @param settings Object - attributes include:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8669 * dayNamesShort string[7] - abbreviated names of the days from Sunday (optional)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8670 * dayNames string[7] - names of the days from Sunday (optional)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8671 * monthNamesShort string[12] - abbreviated names of the months (optional)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8672 * monthNames string[12] - names of the months (optional)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8673 * @return string - the date in the above format
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8674 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8675 formatDate: function( format, date, settings ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8676 if ( !date ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8677 return "";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8678 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8679
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8680 var iFormat,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8681 dayNamesShort = ( settings ? settings.dayNamesShort : null ) || this._defaults.dayNamesShort,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8682 dayNames = ( settings ? settings.dayNames : null ) || this._defaults.dayNames,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8683 monthNamesShort = ( settings ? settings.monthNamesShort : null ) || this._defaults.monthNamesShort,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8684 monthNames = ( settings ? settings.monthNames : null ) || this._defaults.monthNames,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8685
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8686 // Check whether a format character is doubled
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8687 lookAhead = function( match ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8688 var matches = ( iFormat + 1 < format.length && format.charAt( iFormat + 1 ) === match );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8689 if ( matches ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8690 iFormat++;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8691 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8692 return matches;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8693 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8694
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8695 // Format a number, with leading zero if necessary
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8696 formatNumber = function( match, value, len ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8697 var num = "" + value;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8698 if ( lookAhead( match ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8699 while ( num.length < len ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8700 num = "0" + num;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8701 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8702 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8703 return num;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8704 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8705
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8706 // Format a name, short or long as requested
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8707 formatName = function( match, value, shortNames, longNames ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8708 return ( lookAhead( match ) ? longNames[ value ] : shortNames[ value ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8709 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8710 output = "",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8711 literal = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8712
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8713 if ( date ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8714 for ( iFormat = 0; iFormat < format.length; iFormat++ ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8715 if ( literal ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8716 if ( format.charAt( iFormat ) === "'" && !lookAhead( "'" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8717 literal = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8718 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8719 output += format.charAt( iFormat );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8720 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8721 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8722 switch ( format.charAt( iFormat ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8723 case "d":
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8724 output += formatNumber( "d", date.getDate(), 2 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8725 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8726 case "D":
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8727 output += formatName( "D", date.getDay(), dayNamesShort, dayNames );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8728 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8729 case "o":
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8730 output += formatNumber( "o",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8731 Math.round( ( new Date( date.getFullYear(), date.getMonth(), date.getDate() ).getTime() - new Date( date.getFullYear(), 0, 0 ).getTime() ) / 86400000 ), 3 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8732 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8733 case "m":
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8734 output += formatNumber( "m", date.getMonth() + 1, 2 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8735 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8736 case "M":
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8737 output += formatName( "M", date.getMonth(), monthNamesShort, monthNames );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8738 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8739 case "y":
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8740 output += ( lookAhead( "y" ) ? date.getFullYear() :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8741 ( date.getFullYear() % 100 < 10 ? "0" : "" ) + date.getFullYear() % 100 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8742 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8743 case "@":
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8744 output += date.getTime();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8745 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8746 case "!":
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8747 output += date.getTime() * 10000 + this._ticksTo1970;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8748 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8749 case "'":
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8750 if ( lookAhead( "'" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8751 output += "'";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8752 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8753 literal = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8754 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8755 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8756 default:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8757 output += format.charAt( iFormat );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8758 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8759 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8760 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8761 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8762 return output;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8763 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8764
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8765 /* Extract all possible characters from the date format. */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8766 _possibleChars: function( format ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8767 var iFormat,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8768 chars = "",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8769 literal = false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8770
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8771 // Check whether a format character is doubled
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8772 lookAhead = function( match ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8773 var matches = ( iFormat + 1 < format.length && format.charAt( iFormat + 1 ) === match );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8774 if ( matches ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8775 iFormat++;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8776 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8777 return matches;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8778 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8779
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8780 for ( iFormat = 0; iFormat < format.length; iFormat++ ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8781 if ( literal ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8782 if ( format.charAt( iFormat ) === "'" && !lookAhead( "'" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8783 literal = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8784 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8785 chars += format.charAt( iFormat );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8786 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8787 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8788 switch ( format.charAt( iFormat ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8789 case "d": case "m": case "y": case "@":
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8790 chars += "0123456789";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8791 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8792 case "D": case "M":
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8793 return null; // Accept anything
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8794 case "'":
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8795 if ( lookAhead( "'" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8796 chars += "'";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8797 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8798 literal = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8799 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8800 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8801 default:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8802 chars += format.charAt( iFormat );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8803 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8804 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8805 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8806 return chars;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8807 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8808
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8809 /* Get a setting value, defaulting if necessary. */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8810 _get: function( inst, name ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8811 return inst.settings[ name ] !== undefined ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8812 inst.settings[ name ] : this._defaults[ name ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8813 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8814
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8815 /* Parse existing date and initialise date picker. */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8816 _setDateFromField: function( inst, noDefault ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8817 if ( inst.input.val() === inst.lastVal ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8818 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8819 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8820
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8821 var dateFormat = this._get( inst, "dateFormat" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8822 dates = inst.lastVal = inst.input ? inst.input.val() : null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8823 defaultDate = this._getDefaultDate( inst ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8824 date = defaultDate,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8825 settings = this._getFormatConfig( inst );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8826
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8827 try {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8828 date = this.parseDate( dateFormat, dates, settings ) || defaultDate;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8829 } catch ( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8830 dates = ( noDefault ? "" : dates );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8831 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8832 inst.selectedDay = date.getDate();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8833 inst.drawMonth = inst.selectedMonth = date.getMonth();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8834 inst.drawYear = inst.selectedYear = date.getFullYear();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8835 inst.currentDay = ( dates ? date.getDate() : 0 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8836 inst.currentMonth = ( dates ? date.getMonth() : 0 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8837 inst.currentYear = ( dates ? date.getFullYear() : 0 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8838 this._adjustInstDate( inst );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8839 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8840
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8841 /* Retrieve the default date shown on opening. */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8842 _getDefaultDate: function( inst ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8843 return this._restrictMinMax( inst,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8844 this._determineDate( inst, this._get( inst, "defaultDate" ), new Date() ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8845 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8846
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8847 /* A date may be specified as an exact value or a relative one. */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8848 _determineDate: function( inst, date, defaultDate ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8849 var offsetNumeric = function( offset ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8850 var date = new Date();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8851 date.setDate( date.getDate() + offset );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8852 return date;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8853 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8854 offsetString = function( offset ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8855 try {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8856 return $.datepicker.parseDate( $.datepicker._get( inst, "dateFormat" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8857 offset, $.datepicker._getFormatConfig( inst ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8858 } catch ( e ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8859
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8860 // Ignore
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8861 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8862
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8863 var date = ( offset.toLowerCase().match( /^c/ ) ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8864 $.datepicker._getDate( inst ) : null ) || new Date(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8865 year = date.getFullYear(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8866 month = date.getMonth(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8867 day = date.getDate(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8868 pattern = /([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8869 matches = pattern.exec( offset );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8870
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8871 while ( matches ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8872 switch ( matches[ 2 ] || "d" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8873 case "d" : case "D" :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8874 day += parseInt( matches[ 1 ], 10 ); break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8875 case "w" : case "W" :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8876 day += parseInt( matches[ 1 ], 10 ) * 7; break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8877 case "m" : case "M" :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8878 month += parseInt( matches[ 1 ], 10 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8879 day = Math.min( day, $.datepicker._getDaysInMonth( year, month ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8880 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8881 case "y": case "Y" :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8882 year += parseInt( matches[ 1 ], 10 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8883 day = Math.min( day, $.datepicker._getDaysInMonth( year, month ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8884 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8885 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8886 matches = pattern.exec( offset );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8887 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8888 return new Date( year, month, day );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8889 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8890 newDate = ( date == null || date === "" ? defaultDate : ( typeof date === "string" ? offsetString( date ) :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8891 ( typeof date === "number" ? ( isNaN( date ) ? defaultDate : offsetNumeric( date ) ) : new Date( date.getTime() ) ) ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8892
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8893 newDate = ( newDate && newDate.toString() === "Invalid Date" ? defaultDate : newDate );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8894 if ( newDate ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8895 newDate.setHours( 0 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8896 newDate.setMinutes( 0 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8897 newDate.setSeconds( 0 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8898 newDate.setMilliseconds( 0 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8899 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8900 return this._daylightSavingAdjust( newDate );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8901 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8902
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8903 /* Handle switch to/from daylight saving.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8904 * Hours may be non-zero on daylight saving cut-over:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8905 * > 12 when midnight changeover, but then cannot generate
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8906 * midnight datetime, so jump to 1AM, otherwise reset.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8907 * @param date (Date) the date to check
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8908 * @return (Date) the corrected date
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8909 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8910 _daylightSavingAdjust: function( date ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8911 if ( !date ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8912 return null;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8913 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8914 date.setHours( date.getHours() > 12 ? date.getHours() + 2 : 0 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8915 return date;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8916 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8917
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8918 /* Set the date(s) directly. */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8919 _setDate: function( inst, date, noChange ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8920 var clear = !date,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8921 origMonth = inst.selectedMonth,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8922 origYear = inst.selectedYear,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8923 newDate = this._restrictMinMax( inst, this._determineDate( inst, date, new Date() ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8924
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8925 inst.selectedDay = inst.currentDay = newDate.getDate();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8926 inst.drawMonth = inst.selectedMonth = inst.currentMonth = newDate.getMonth();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8927 inst.drawYear = inst.selectedYear = inst.currentYear = newDate.getFullYear();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8928 if ( ( origMonth !== inst.selectedMonth || origYear !== inst.selectedYear ) && !noChange ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8929 this._notifyChange( inst );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8930 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8931 this._adjustInstDate( inst );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8932 if ( inst.input ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8933 inst.input.val( clear ? "" : this._formatDate( inst ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8934 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8935 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8936
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8937 /* Retrieve the date(s) directly. */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8938 _getDate: function( inst ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8939 var startDate = ( !inst.currentYear || ( inst.input && inst.input.val() === "" ) ? null :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8940 this._daylightSavingAdjust( new Date(
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8941 inst.currentYear, inst.currentMonth, inst.currentDay ) ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8942 return startDate;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8943 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8944
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8945 /* Attach the onxxx handlers. These are declared statically so
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8946 * they work with static code transformers like Caja.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8947 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8948 _attachHandlers: function( inst ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8949 var stepMonths = this._get( inst, "stepMonths" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8950 id = "#" + inst.id.replace( /\\\\/g, "\\" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8951 inst.dpDiv.find( "[data-handler]" ).map( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8952 var handler = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8953 prev: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8954 $.datepicker._adjustDate( id, -stepMonths, "M" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8955 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8956 next: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8957 $.datepicker._adjustDate( id, +stepMonths, "M" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8958 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8959 hide: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8960 $.datepicker._hideDatepicker();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8961 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8962 today: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8963 $.datepicker._gotoToday( id );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8964 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8965 selectDay: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8966 $.datepicker._selectDay( id, +this.getAttribute( "data-month" ), +this.getAttribute( "data-year" ), this );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8967 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8968 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8969 selectMonth: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8970 $.datepicker._selectMonthYear( id, this, "M" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8971 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8972 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8973 selectYear: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8974 $.datepicker._selectMonthYear( id, this, "Y" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8975 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8976 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8977 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8978 $( this ).on( this.getAttribute( "data-event" ), handler[ this.getAttribute( "data-handler" ) ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8979 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8980 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8981
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8982 /* Generate the HTML for the current state of the date picker. */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8983 _generateHTML: function( inst ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8984 var maxDraw, prevText, prev, nextText, next, currentText, gotoDate,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8985 controls, buttonPanel, firstDay, showWeek, dayNames, dayNamesMin,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8986 monthNames, monthNamesShort, beforeShowDay, showOtherMonths,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8987 selectOtherMonths, defaultDate, html, dow, row, group, col, selectedDate,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8988 cornerClass, calender, thead, day, daysInMonth, leadDays, curRows, numRows,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8989 printDate, dRow, tbody, daySettings, otherMonth, unselectable,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8990 tempDate = new Date(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8991 today = this._daylightSavingAdjust(
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8992 new Date( tempDate.getFullYear(), tempDate.getMonth(), tempDate.getDate() ) ), // clear time
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8993 isRTL = this._get( inst, "isRTL" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8994 showButtonPanel = this._get( inst, "showButtonPanel" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8995 hideIfNoPrevNext = this._get( inst, "hideIfNoPrevNext" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8996 navigationAsDateFormat = this._get( inst, "navigationAsDateFormat" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8997 numMonths = this._getNumberOfMonths( inst ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8998 showCurrentAtPos = this._get( inst, "showCurrentAtPos" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
8999 stepMonths = this._get( inst, "stepMonths" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9000 isMultiMonth = ( numMonths[ 0 ] !== 1 || numMonths[ 1 ] !== 1 ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9001 currentDate = this._daylightSavingAdjust( ( !inst.currentDay ? new Date( 9999, 9, 9 ) :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9002 new Date( inst.currentYear, inst.currentMonth, inst.currentDay ) ) ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9003 minDate = this._getMinMaxDate( inst, "min" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9004 maxDate = this._getMinMaxDate( inst, "max" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9005 drawMonth = inst.drawMonth - showCurrentAtPos,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9006 drawYear = inst.drawYear;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9007
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9008 if ( drawMonth < 0 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9009 drawMonth += 12;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9010 drawYear--;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9011 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9012 if ( maxDate ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9013 maxDraw = this._daylightSavingAdjust( new Date( maxDate.getFullYear(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9014 maxDate.getMonth() - ( numMonths[ 0 ] * numMonths[ 1 ] ) + 1, maxDate.getDate() ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9015 maxDraw = ( minDate && maxDraw < minDate ? minDate : maxDraw );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9016 while ( this._daylightSavingAdjust( new Date( drawYear, drawMonth, 1 ) ) > maxDraw ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9017 drawMonth--;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9018 if ( drawMonth < 0 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9019 drawMonth = 11;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9020 drawYear--;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9021 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9022 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9023 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9024 inst.drawMonth = drawMonth;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9025 inst.drawYear = drawYear;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9026
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9027 prevText = this._get( inst, "prevText" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9028 prevText = ( !navigationAsDateFormat ? prevText : this.formatDate( prevText,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9029 this._daylightSavingAdjust( new Date( drawYear, drawMonth - stepMonths, 1 ) ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9030 this._getFormatConfig( inst ) ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9031
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9032 if ( this._canAdjustMonth( inst, -1, drawYear, drawMonth ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9033 prev = $( "<a>" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9034 .attr( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9035 "class": "ui-datepicker-prev ui-corner-all",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9036 "data-handler": "prev",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9037 "data-event": "click",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9038 title: prevText
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9039 } )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9040 .append(
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9041 $( "<span>" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9042 .addClass( "ui-icon ui-icon-circle-triangle-" +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9043 ( isRTL ? "e" : "w" ) )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9044 .text( prevText )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9045 )[ 0 ].outerHTML;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9046 } else if ( hideIfNoPrevNext ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9047 prev = "";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9048 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9049 prev = $( "<a>" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9050 .attr( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9051 "class": "ui-datepicker-prev ui-corner-all ui-state-disabled",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9052 title: prevText
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9053 } )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9054 .append(
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9055 $( "<span>" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9056 .addClass( "ui-icon ui-icon-circle-triangle-" +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9057 ( isRTL ? "e" : "w" ) )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9058 .text( prevText )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9059 )[ 0 ].outerHTML;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9060 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9061
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9062 nextText = this._get( inst, "nextText" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9063 nextText = ( !navigationAsDateFormat ? nextText : this.formatDate( nextText,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9064 this._daylightSavingAdjust( new Date( drawYear, drawMonth + stepMonths, 1 ) ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9065 this._getFormatConfig( inst ) ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9066
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9067 if ( this._canAdjustMonth( inst, +1, drawYear, drawMonth ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9068 next = $( "<a>" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9069 .attr( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9070 "class": "ui-datepicker-next ui-corner-all",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9071 "data-handler": "next",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9072 "data-event": "click",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9073 title: nextText
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9074 } )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9075 .append(
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9076 $( "<span>" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9077 .addClass( "ui-icon ui-icon-circle-triangle-" +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9078 ( isRTL ? "w" : "e" ) )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9079 .text( nextText )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9080 )[ 0 ].outerHTML;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9081 } else if ( hideIfNoPrevNext ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9082 next = "";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9083 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9084 next = $( "<a>" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9085 .attr( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9086 "class": "ui-datepicker-next ui-corner-all ui-state-disabled",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9087 title: nextText
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9088 } )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9089 .append(
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9090 $( "<span>" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9091 .attr( "class", "ui-icon ui-icon-circle-triangle-" +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9092 ( isRTL ? "w" : "e" ) )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9093 .text( nextText )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9094 )[ 0 ].outerHTML;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9095 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9096
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9097 currentText = this._get( inst, "currentText" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9098 gotoDate = ( this._get( inst, "gotoCurrent" ) && inst.currentDay ? currentDate : today );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9099 currentText = ( !navigationAsDateFormat ? currentText :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9100 this.formatDate( currentText, gotoDate, this._getFormatConfig( inst ) ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9101
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9102 controls = "";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9103 if ( !inst.inline ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9104 controls = $( "<button>" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9105 .attr( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9106 type: "button",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9107 "class": "ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9108 "data-handler": "hide",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9109 "data-event": "click"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9110 } )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9111 .text( this._get( inst, "closeText" ) )[ 0 ].outerHTML;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9112 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9113
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9114 buttonPanel = "";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9115 if ( showButtonPanel ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9116 buttonPanel = $( "<div class='ui-datepicker-buttonpane ui-widget-content'>" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9117 .append( isRTL ? controls : "" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9118 .append( this._isInRange( inst, gotoDate ) ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9119 $( "<button>" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9120 .attr( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9121 type: "button",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9122 "class": "ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9123 "data-handler": "today",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9124 "data-event": "click"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9125 } )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9126 .text( currentText ) :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9127 "" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9128 .append( isRTL ? "" : controls )[ 0 ].outerHTML;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9129 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9130
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9131 firstDay = parseInt( this._get( inst, "firstDay" ), 10 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9132 firstDay = ( isNaN( firstDay ) ? 0 : firstDay );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9133
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9134 showWeek = this._get( inst, "showWeek" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9135 dayNames = this._get( inst, "dayNames" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9136 dayNamesMin = this._get( inst, "dayNamesMin" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9137 monthNames = this._get( inst, "monthNames" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9138 monthNamesShort = this._get( inst, "monthNamesShort" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9139 beforeShowDay = this._get( inst, "beforeShowDay" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9140 showOtherMonths = this._get( inst, "showOtherMonths" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9141 selectOtherMonths = this._get( inst, "selectOtherMonths" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9142 defaultDate = this._getDefaultDate( inst );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9143 html = "";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9144
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9145 for ( row = 0; row < numMonths[ 0 ]; row++ ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9146 group = "";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9147 this.maxRows = 4;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9148 for ( col = 0; col < numMonths[ 1 ]; col++ ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9149 selectedDate = this._daylightSavingAdjust( new Date( drawYear, drawMonth, inst.selectedDay ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9150 cornerClass = " ui-corner-all";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9151 calender = "";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9152 if ( isMultiMonth ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9153 calender += "<div class='ui-datepicker-group";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9154 if ( numMonths[ 1 ] > 1 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9155 switch ( col ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9156 case 0: calender += " ui-datepicker-group-first";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9157 cornerClass = " ui-corner-" + ( isRTL ? "right" : "left" ); break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9158 case numMonths[ 1 ] - 1: calender += " ui-datepicker-group-last";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9159 cornerClass = " ui-corner-" + ( isRTL ? "left" : "right" ); break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9160 default: calender += " ui-datepicker-group-middle"; cornerClass = ""; break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9161 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9162 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9163 calender += "'>";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9164 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9165 calender += "<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix" + cornerClass + "'>" +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9166 ( /all|left/.test( cornerClass ) && row === 0 ? ( isRTL ? next : prev ) : "" ) +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9167 ( /all|right/.test( cornerClass ) && row === 0 ? ( isRTL ? prev : next ) : "" ) +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9168 this._generateMonthYearHeader( inst, drawMonth, drawYear, minDate, maxDate,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9169 row > 0 || col > 0, monthNames, monthNamesShort ) + // draw month headers
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9170 "</div><table class='ui-datepicker-calendar'><thead>" +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9171 "<tr>";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9172 thead = ( showWeek ? "<th class='ui-datepicker-week-col'>" + this._get( inst, "weekHeader" ) + "</th>" : "" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9173 for ( dow = 0; dow < 7; dow++ ) { // days of the week
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9174 day = ( dow + firstDay ) % 7;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9175 thead += "<th scope='col'" + ( ( dow + firstDay + 6 ) % 7 >= 5 ? " class='ui-datepicker-week-end'" : "" ) + ">" +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9176 "<span title='" + dayNames[ day ] + "'>" + dayNamesMin[ day ] + "</span></th>";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9177 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9178 calender += thead + "</tr></thead><tbody>";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9179 daysInMonth = this._getDaysInMonth( drawYear, drawMonth );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9180 if ( drawYear === inst.selectedYear && drawMonth === inst.selectedMonth ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9181 inst.selectedDay = Math.min( inst.selectedDay, daysInMonth );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9182 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9183 leadDays = ( this._getFirstDayOfMonth( drawYear, drawMonth ) - firstDay + 7 ) % 7;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9184 curRows = Math.ceil( ( leadDays + daysInMonth ) / 7 ); // calculate the number of rows to generate
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9185 numRows = ( isMultiMonth ? this.maxRows > curRows ? this.maxRows : curRows : curRows ); //If multiple months, use the higher number of rows (see #7043)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9186 this.maxRows = numRows;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9187 printDate = this._daylightSavingAdjust( new Date( drawYear, drawMonth, 1 - leadDays ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9188 for ( dRow = 0; dRow < numRows; dRow++ ) { // create date picker rows
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9189 calender += "<tr>";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9190 tbody = ( !showWeek ? "" : "<td class='ui-datepicker-week-col'>" +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9191 this._get( inst, "calculateWeek" )( printDate ) + "</td>" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9192 for ( dow = 0; dow < 7; dow++ ) { // create date picker days
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9193 daySettings = ( beforeShowDay ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9194 beforeShowDay.apply( ( inst.input ? inst.input[ 0 ] : null ), [ printDate ] ) : [ true, "" ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9195 otherMonth = ( printDate.getMonth() !== drawMonth );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9196 unselectable = ( otherMonth && !selectOtherMonths ) || !daySettings[ 0 ] ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9197 ( minDate && printDate < minDate ) || ( maxDate && printDate > maxDate );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9198 tbody += "<td class='" +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9199 ( ( dow + firstDay + 6 ) % 7 >= 5 ? " ui-datepicker-week-end" : "" ) + // highlight weekends
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9200 ( otherMonth ? " ui-datepicker-other-month" : "" ) + // highlight days from other months
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9201 ( ( printDate.getTime() === selectedDate.getTime() && drawMonth === inst.selectedMonth && inst._keyEvent ) || // user pressed key
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9202 ( defaultDate.getTime() === printDate.getTime() && defaultDate.getTime() === selectedDate.getTime() ) ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9203
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9204 // or defaultDate is current printedDate and defaultDate is selectedDate
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9205 " " + this._dayOverClass : "" ) + // highlight selected day
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9206 ( unselectable ? " " + this._unselectableClass + " ui-state-disabled" : "" ) + // highlight unselectable days
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9207 ( otherMonth && !showOtherMonths ? "" : " " + daySettings[ 1 ] + // highlight custom dates
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9208 ( printDate.getTime() === currentDate.getTime() ? " " + this._currentClass : "" ) + // highlight selected day
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9209 ( printDate.getTime() === today.getTime() ? " ui-datepicker-today" : "" ) ) + "'" + // highlight today (if different)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9210 ( ( !otherMonth || showOtherMonths ) && daySettings[ 2 ] ? " title='" + daySettings[ 2 ].replace( /'/g, "&#39;" ) + "'" : "" ) + // cell title
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9211 ( unselectable ? "" : " data-handler='selectDay' data-event='click' data-month='" + printDate.getMonth() + "' data-year='" + printDate.getFullYear() + "'" ) + ">" + // actions
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9212 ( otherMonth && !showOtherMonths ? "&#xa0;" : // display for other months
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9213 ( unselectable ? "<span class='ui-state-default'>" + printDate.getDate() + "</span>" : "<a class='ui-state-default" +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9214 ( printDate.getTime() === today.getTime() ? " ui-state-highlight" : "" ) +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9215 ( printDate.getTime() === currentDate.getTime() ? " ui-state-active" : "" ) + // highlight selected day
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9216 ( otherMonth ? " ui-priority-secondary" : "" ) + // distinguish dates from other months
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9217 "' href='#' aria-current='" + ( printDate.getTime() === currentDate.getTime() ? "true" : "false" ) + // mark date as selected for screen reader
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9218 "' data-date='" + printDate.getDate() + // store date as data
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9219 "'>" + printDate.getDate() + "</a>" ) ) + "</td>"; // display selectable date
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9220 printDate.setDate( printDate.getDate() + 1 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9221 printDate = this._daylightSavingAdjust( printDate );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9222 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9223 calender += tbody + "</tr>";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9224 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9225 drawMonth++;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9226 if ( drawMonth > 11 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9227 drawMonth = 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9228 drawYear++;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9229 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9230 calender += "</tbody></table>" + ( isMultiMonth ? "</div>" +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9231 ( ( numMonths[ 0 ] > 0 && col === numMonths[ 1 ] - 1 ) ? "<div class='ui-datepicker-row-break'></div>" : "" ) : "" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9232 group += calender;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9233 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9234 html += group;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9235 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9236 html += buttonPanel;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9237 inst._keyEvent = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9238 return html;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9239 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9240
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9241 /* Generate the month and year header. */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9242 _generateMonthYearHeader: function( inst, drawMonth, drawYear, minDate, maxDate,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9243 secondary, monthNames, monthNamesShort ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9244
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9245 var inMinYear, inMaxYear, month, years, thisYear, determineYear, year, endYear,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9246 changeMonth = this._get( inst, "changeMonth" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9247 changeYear = this._get( inst, "changeYear" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9248 showMonthAfterYear = this._get( inst, "showMonthAfterYear" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9249 selectMonthLabel = this._get( inst, "selectMonthLabel" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9250 selectYearLabel = this._get( inst, "selectYearLabel" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9251 html = "<div class='ui-datepicker-title'>",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9252 monthHtml = "";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9253
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9254 // Month selection
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9255 if ( secondary || !changeMonth ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9256 monthHtml += "<span class='ui-datepicker-month'>" + monthNames[ drawMonth ] + "</span>";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9257 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9258 inMinYear = ( minDate && minDate.getFullYear() === drawYear );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9259 inMaxYear = ( maxDate && maxDate.getFullYear() === drawYear );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9260 monthHtml += "<select class='ui-datepicker-month' aria-label='" + selectMonthLabel + "' data-handler='selectMonth' data-event='change'>";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9261 for ( month = 0; month < 12; month++ ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9262 if ( ( !inMinYear || month >= minDate.getMonth() ) && ( !inMaxYear || month <= maxDate.getMonth() ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9263 monthHtml += "<option value='" + month + "'" +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9264 ( month === drawMonth ? " selected='selected'" : "" ) +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9265 ">" + monthNamesShort[ month ] + "</option>";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9266 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9267 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9268 monthHtml += "</select>";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9269 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9270
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9271 if ( !showMonthAfterYear ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9272 html += monthHtml + ( secondary || !( changeMonth && changeYear ) ? "&#xa0;" : "" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9273 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9274
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9275 // Year selection
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9276 if ( !inst.yearshtml ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9277 inst.yearshtml = "";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9278 if ( secondary || !changeYear ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9279 html += "<span class='ui-datepicker-year'>" + drawYear + "</span>";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9280 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9281
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9282 // determine range of years to display
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9283 years = this._get( inst, "yearRange" ).split( ":" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9284 thisYear = new Date().getFullYear();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9285 determineYear = function( value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9286 var year = ( value.match( /c[+\-].*/ ) ? drawYear + parseInt( value.substring( 1 ), 10 ) :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9287 ( value.match( /[+\-].*/ ) ? thisYear + parseInt( value, 10 ) :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9288 parseInt( value, 10 ) ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9289 return ( isNaN( year ) ? thisYear : year );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9290 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9291 year = determineYear( years[ 0 ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9292 endYear = Math.max( year, determineYear( years[ 1 ] || "" ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9293 year = ( minDate ? Math.max( year, minDate.getFullYear() ) : year );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9294 endYear = ( maxDate ? Math.min( endYear, maxDate.getFullYear() ) : endYear );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9295 inst.yearshtml += "<select class='ui-datepicker-year' aria-label='" + selectYearLabel + "' data-handler='selectYear' data-event='change'>";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9296 for ( ; year <= endYear; year++ ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9297 inst.yearshtml += "<option value='" + year + "'" +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9298 ( year === drawYear ? " selected='selected'" : "" ) +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9299 ">" + year + "</option>";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9300 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9301 inst.yearshtml += "</select>";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9302
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9303 html += inst.yearshtml;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9304 inst.yearshtml = null;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9305 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9306 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9307
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9308 html += this._get( inst, "yearSuffix" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9309 if ( showMonthAfterYear ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9310 html += ( secondary || !( changeMonth && changeYear ) ? "&#xa0;" : "" ) + monthHtml;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9311 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9312 html += "</div>"; // Close datepicker_header
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9313 return html;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9314 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9315
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9316 /* Adjust one of the date sub-fields. */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9317 _adjustInstDate: function( inst, offset, period ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9318 var year = inst.selectedYear + ( period === "Y" ? offset : 0 ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9319 month = inst.selectedMonth + ( period === "M" ? offset : 0 ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9320 day = Math.min( inst.selectedDay, this._getDaysInMonth( year, month ) ) + ( period === "D" ? offset : 0 ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9321 date = this._restrictMinMax( inst, this._daylightSavingAdjust( new Date( year, month, day ) ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9322
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9323 inst.selectedDay = date.getDate();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9324 inst.drawMonth = inst.selectedMonth = date.getMonth();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9325 inst.drawYear = inst.selectedYear = date.getFullYear();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9326 if ( period === "M" || period === "Y" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9327 this._notifyChange( inst );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9328 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9329 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9330
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9331 /* Ensure a date is within any min/max bounds. */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9332 _restrictMinMax: function( inst, date ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9333 var minDate = this._getMinMaxDate( inst, "min" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9334 maxDate = this._getMinMaxDate( inst, "max" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9335 newDate = ( minDate && date < minDate ? minDate : date );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9336 return ( maxDate && newDate > maxDate ? maxDate : newDate );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9337 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9338
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9339 /* Notify change of month/year. */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9340 _notifyChange: function( inst ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9341 var onChange = this._get( inst, "onChangeMonthYear" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9342 if ( onChange ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9343 onChange.apply( ( inst.input ? inst.input[ 0 ] : null ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9344 [ inst.selectedYear, inst.selectedMonth + 1, inst ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9345 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9346 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9347
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9348 /* Determine the number of months to show. */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9349 _getNumberOfMonths: function( inst ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9350 var numMonths = this._get( inst, "numberOfMonths" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9351 return ( numMonths == null ? [ 1, 1 ] : ( typeof numMonths === "number" ? [ 1, numMonths ] : numMonths ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9352 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9353
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9354 /* Determine the current maximum date - ensure no time components are set. */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9355 _getMinMaxDate: function( inst, minMax ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9356 return this._determineDate( inst, this._get( inst, minMax + "Date" ), null );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9357 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9358
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9359 /* Find the number of days in a given month. */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9360 _getDaysInMonth: function( year, month ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9361 return 32 - this._daylightSavingAdjust( new Date( year, month, 32 ) ).getDate();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9362 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9363
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9364 /* Find the day of the week of the first of a month. */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9365 _getFirstDayOfMonth: function( year, month ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9366 return new Date( year, month, 1 ).getDay();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9367 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9368
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9369 /* Determines if we should allow a "next/prev" month display change. */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9370 _canAdjustMonth: function( inst, offset, curYear, curMonth ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9371 var numMonths = this._getNumberOfMonths( inst ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9372 date = this._daylightSavingAdjust( new Date( curYear,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9373 curMonth + ( offset < 0 ? offset : numMonths[ 0 ] * numMonths[ 1 ] ), 1 ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9374
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9375 if ( offset < 0 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9376 date.setDate( this._getDaysInMonth( date.getFullYear(), date.getMonth() ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9377 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9378 return this._isInRange( inst, date );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9379 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9380
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9381 /* Is the given date in the accepted range? */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9382 _isInRange: function( inst, date ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9383 var yearSplit, currentYear,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9384 minDate = this._getMinMaxDate( inst, "min" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9385 maxDate = this._getMinMaxDate( inst, "max" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9386 minYear = null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9387 maxYear = null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9388 years = this._get( inst, "yearRange" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9389 if ( years ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9390 yearSplit = years.split( ":" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9391 currentYear = new Date().getFullYear();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9392 minYear = parseInt( yearSplit[ 0 ], 10 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9393 maxYear = parseInt( yearSplit[ 1 ], 10 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9394 if ( yearSplit[ 0 ].match( /[+\-].*/ ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9395 minYear += currentYear;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9396 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9397 if ( yearSplit[ 1 ].match( /[+\-].*/ ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9398 maxYear += currentYear;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9399 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9400 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9401
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9402 return ( ( !minDate || date.getTime() >= minDate.getTime() ) &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9403 ( !maxDate || date.getTime() <= maxDate.getTime() ) &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9404 ( !minYear || date.getFullYear() >= minYear ) &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9405 ( !maxYear || date.getFullYear() <= maxYear ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9406 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9407
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9408 /* Provide the configuration settings for formatting/parsing. */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9409 _getFormatConfig: function( inst ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9410 var shortYearCutoff = this._get( inst, "shortYearCutoff" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9411 shortYearCutoff = ( typeof shortYearCutoff !== "string" ? shortYearCutoff :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9412 new Date().getFullYear() % 100 + parseInt( shortYearCutoff, 10 ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9413 return { shortYearCutoff: shortYearCutoff,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9414 dayNamesShort: this._get( inst, "dayNamesShort" ), dayNames: this._get( inst, "dayNames" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9415 monthNamesShort: this._get( inst, "monthNamesShort" ), monthNames: this._get( inst, "monthNames" ) };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9416 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9417
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9418 /* Format the given date for display. */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9419 _formatDate: function( inst, day, month, year ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9420 if ( !day ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9421 inst.currentDay = inst.selectedDay;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9422 inst.currentMonth = inst.selectedMonth;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9423 inst.currentYear = inst.selectedYear;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9424 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9425 var date = ( day ? ( typeof day === "object" ? day :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9426 this._daylightSavingAdjust( new Date( year, month, day ) ) ) :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9427 this._daylightSavingAdjust( new Date( inst.currentYear, inst.currentMonth, inst.currentDay ) ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9428 return this.formatDate( this._get( inst, "dateFormat" ), date, this._getFormatConfig( inst ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9429 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9430 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9431
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9432 /*
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9433 * Bind hover events for datepicker elements.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9434 * Done via delegate so the binding only occurs once in the lifetime of the parent div.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9435 * Global datepicker_instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9436 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9437 function datepicker_bindHover( dpDiv ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9438 var selector = "button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9439 return dpDiv.on( "mouseout", selector, function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9440 $( this ).removeClass( "ui-state-hover" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9441 if ( this.className.indexOf( "ui-datepicker-prev" ) !== -1 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9442 $( this ).removeClass( "ui-datepicker-prev-hover" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9443 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9444 if ( this.className.indexOf( "ui-datepicker-next" ) !== -1 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9445 $( this ).removeClass( "ui-datepicker-next-hover" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9446 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9447 } )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9448 .on( "mouseover", selector, datepicker_handleMouseover );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9449 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9450
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9451 function datepicker_handleMouseover() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9452 if ( !$.datepicker._isDisabledDatepicker( datepicker_instActive.inline ? datepicker_instActive.dpDiv.parent()[ 0 ] : datepicker_instActive.input[ 0 ] ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9453 $( this ).parents( ".ui-datepicker-calendar" ).find( "a" ).removeClass( "ui-state-hover" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9454 $( this ).addClass( "ui-state-hover" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9455 if ( this.className.indexOf( "ui-datepicker-prev" ) !== -1 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9456 $( this ).addClass( "ui-datepicker-prev-hover" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9457 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9458 if ( this.className.indexOf( "ui-datepicker-next" ) !== -1 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9459 $( this ).addClass( "ui-datepicker-next-hover" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9460 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9461 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9462 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9463
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9464 /* jQuery extend now ignores nulls! */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9465 function datepicker_extendRemove( target, props ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9466 $.extend( target, props );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9467 for ( var name in props ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9468 if ( props[ name ] == null ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9469 target[ name ] = props[ name ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9470 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9471 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9472 return target;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9473 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9474
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9475 /* Invoke the datepicker functionality.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9476 @param options string - a command, optionally followed by additional parameters or
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9477 Object - settings for attaching new datepicker functionality
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9478 @return jQuery object */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9479 $.fn.datepicker = function( options ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9480
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9481 /* Verify an empty collection wasn't passed - Fixes #6976 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9482 if ( !this.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9483 return this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9484 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9485
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9486 /* Initialise the date picker. */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9487 if ( !$.datepicker.initialized ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9488 $( document ).on( "mousedown", $.datepicker._checkExternalClick );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9489 $.datepicker.initialized = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9490 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9491
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9492 /* Append datepicker main container to body if not exist. */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9493 if ( $( "#" + $.datepicker._mainDivId ).length === 0 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9494 $( "body" ).append( $.datepicker.dpDiv );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9495 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9496
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9497 var otherArgs = Array.prototype.slice.call( arguments, 1 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9498 if ( typeof options === "string" && ( options === "isDisabled" || options === "getDate" || options === "widget" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9499 return $.datepicker[ "_" + options + "Datepicker" ].
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9500 apply( $.datepicker, [ this[ 0 ] ].concat( otherArgs ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9501 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9502 if ( options === "option" && arguments.length === 2 && typeof arguments[ 1 ] === "string" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9503 return $.datepicker[ "_" + options + "Datepicker" ].
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9504 apply( $.datepicker, [ this[ 0 ] ].concat( otherArgs ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9505 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9506 return this.each( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9507 if ( typeof options === "string" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9508 $.datepicker[ "_" + options + "Datepicker" ]
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9509 .apply( $.datepicker, [ this ].concat( otherArgs ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9510 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9511 $.datepicker._attachDatepicker( this, options );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9512 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9513 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9514 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9515
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9516 $.datepicker = new Datepicker(); // singleton instance
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9517 $.datepicker.initialized = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9518 $.datepicker.uuid = new Date().getTime();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9519 $.datepicker.version = "1.13.2";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9520
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9521 var widgetsDatepicker = $.datepicker;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9522
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9523
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9524
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9525 // This file is deprecated
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9526 var ie = $.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9527
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9528 /*!
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9529 * jQuery UI Mouse 1.13.2
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9530 * http://jqueryui.com
1670
6fd889391d2c Added a Speed Dial to the web browser including the capability to select the first ten pages by pressing Meta+1 to Meta+0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9531 *
9678
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9532 * Copyright jQuery Foundation and other contributors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9533 * Released under the MIT license.
1670
6fd889391d2c Added a Speed Dial to the web browser including the capability to select the first ten pages by pressing Meta+1 to Meta+0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9534 * http://jquery.org/license
9678
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9535 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9536
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9537 //>>label: Mouse
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9538 //>>group: Widgets
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9539 //>>description: Abstracts mouse-based interactions to assist in creating certain widgets.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9540 //>>docs: http://api.jqueryui.com/mouse/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9541
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9542
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9543 var mouseHandled = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9544 $( document ).on( "mouseup", function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9545 mouseHandled = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9546 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9547
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9548 var widgetsMouse = $.widget( "ui.mouse", {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9549 version: "1.13.2",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9550 options: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9551 cancel: "input, textarea, button, select, option",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9552 distance: 1,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9553 delay: 0
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9554 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9555 _mouseInit: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9556 var that = this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9557
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9558 this.element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9559 .on( "mousedown." + this.widgetName, function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9560 return that._mouseDown( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9561 } )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9562 .on( "click." + this.widgetName, function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9563 if ( true === $.data( event.target, that.widgetName + ".preventClickEvent" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9564 $.removeData( event.target, that.widgetName + ".preventClickEvent" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9565 event.stopImmediatePropagation();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9566 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9567 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9568 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9569
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9570 this.started = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9571 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9572
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9573 // TODO: make sure destroying one instance of mouse doesn't mess with
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9574 // other instances of mouse
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9575 _mouseDestroy: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9576 this.element.off( "." + this.widgetName );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9577 if ( this._mouseMoveDelegate ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9578 this.document
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9579 .off( "mousemove." + this.widgetName, this._mouseMoveDelegate )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9580 .off( "mouseup." + this.widgetName, this._mouseUpDelegate );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9581 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9582 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9583
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9584 _mouseDown: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9585
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9586 // don't let more than one widget handle mouseStart
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9587 if ( mouseHandled ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9588 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9589 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9590
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9591 this._mouseMoved = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9592
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9593 // We may have missed mouseup (out of window)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9594 if ( this._mouseStarted ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9595 this._mouseUp( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9596 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9597
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9598 this._mouseDownEvent = event;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9599
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9600 var that = this,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9601 btnIsLeft = ( event.which === 1 ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9602
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9603 // event.target.nodeName works around a bug in IE 8 with
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9604 // disabled inputs (#7620)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9605 elIsCancel = ( typeof this.options.cancel === "string" && event.target.nodeName ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9606 $( event.target ).closest( this.options.cancel ).length : false );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9607 if ( !btnIsLeft || elIsCancel || !this._mouseCapture( event ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9608 return true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9609 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9610
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9611 this.mouseDelayMet = !this.options.delay;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9612 if ( !this.mouseDelayMet ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9613 this._mouseDelayTimer = setTimeout( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9614 that.mouseDelayMet = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9615 }, this.options.delay );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9616 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9617
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9618 if ( this._mouseDistanceMet( event ) && this._mouseDelayMet( event ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9619 this._mouseStarted = ( this._mouseStart( event ) !== false );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9620 if ( !this._mouseStarted ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9621 event.preventDefault();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9622 return true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9623 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9624 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9625
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9626 // Click event may never have fired (Gecko & Opera)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9627 if ( true === $.data( event.target, this.widgetName + ".preventClickEvent" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9628 $.removeData( event.target, this.widgetName + ".preventClickEvent" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9629 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9630
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9631 // These delegates are required to keep context
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9632 this._mouseMoveDelegate = function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9633 return that._mouseMove( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9634 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9635 this._mouseUpDelegate = function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9636 return that._mouseUp( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9637 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9638
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9639 this.document
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9640 .on( "mousemove." + this.widgetName, this._mouseMoveDelegate )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9641 .on( "mouseup." + this.widgetName, this._mouseUpDelegate );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9642
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9643 event.preventDefault();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9644
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9645 mouseHandled = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9646 return true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9647 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9648
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9649 _mouseMove: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9650
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9651 // Only check for mouseups outside the document if you've moved inside the document
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9652 // at least once. This prevents the firing of mouseup in the case of IE<9, which will
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9653 // fire a mousemove event if content is placed under the cursor. See #7778
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9654 // Support: IE <9
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9655 if ( this._mouseMoved ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9656
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9657 // IE mouseup check - mouseup happened when mouse was out of window
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9658 if ( $.ui.ie && ( !document.documentMode || document.documentMode < 9 ) &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9659 !event.button ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9660 return this._mouseUp( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9661
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9662 // Iframe mouseup check - mouseup occurred in another document
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9663 } else if ( !event.which ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9664
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9665 // Support: Safari <=8 - 9
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9666 // Safari sets which to 0 if you press any of the following keys
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9667 // during a drag (#14461)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9668 if ( event.originalEvent.altKey || event.originalEvent.ctrlKey ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9669 event.originalEvent.metaKey || event.originalEvent.shiftKey ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9670 this.ignoreMissingWhich = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9671 } else if ( !this.ignoreMissingWhich ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9672 return this._mouseUp( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9673 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9674 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9675 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9676
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9677 if ( event.which || event.button ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9678 this._mouseMoved = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9679 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9680
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9681 if ( this._mouseStarted ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9682 this._mouseDrag( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9683 return event.preventDefault();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9684 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9685
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9686 if ( this._mouseDistanceMet( event ) && this._mouseDelayMet( event ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9687 this._mouseStarted =
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9688 ( this._mouseStart( this._mouseDownEvent, event ) !== false );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9689 if ( this._mouseStarted ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9690 this._mouseDrag( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9691 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9692 this._mouseUp( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9693 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9694 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9695
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9696 return !this._mouseStarted;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9697 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9698
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9699 _mouseUp: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9700 this.document
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9701 .off( "mousemove." + this.widgetName, this._mouseMoveDelegate )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9702 .off( "mouseup." + this.widgetName, this._mouseUpDelegate );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9703
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9704 if ( this._mouseStarted ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9705 this._mouseStarted = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9706
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9707 if ( event.target === this._mouseDownEvent.target ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9708 $.data( event.target, this.widgetName + ".preventClickEvent", true );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9709 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9710
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9711 this._mouseStop( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9712 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9713
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9714 if ( this._mouseDelayTimer ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9715 clearTimeout( this._mouseDelayTimer );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9716 delete this._mouseDelayTimer;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9717 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9718
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9719 this.ignoreMissingWhich = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9720 mouseHandled = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9721 event.preventDefault();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9722 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9723
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9724 _mouseDistanceMet: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9725 return ( Math.max(
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9726 Math.abs( this._mouseDownEvent.pageX - event.pageX ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9727 Math.abs( this._mouseDownEvent.pageY - event.pageY )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9728 ) >= this.options.distance
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9729 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9730 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9731
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9732 _mouseDelayMet: function( /* event */ ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9733 return this.mouseDelayMet;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9734 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9735
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9736 // These are placeholder methods, to be overriden by extending plugin
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9737 _mouseStart: function( /* event */ ) {},
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9738 _mouseDrag: function( /* event */ ) {},
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9739 _mouseStop: function( /* event */ ) {},
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9740 _mouseCapture: function( /* event */ ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9741 return true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9742 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9743 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9744
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9745
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9746
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9747 // $.ui.plugin is deprecated. Use $.widget() extensions instead.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9748 var plugin = $.ui.plugin = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9749 add: function( module, option, set ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9750 var i,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9751 proto = $.ui[ module ].prototype;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9752 for ( i in set ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9753 proto.plugins[ i ] = proto.plugins[ i ] || [];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9754 proto.plugins[ i ].push( [ option, set[ i ] ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9755 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9756 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9757 call: function( instance, name, args, allowDisconnected ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9758 var i,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9759 set = instance.plugins[ name ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9760
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9761 if ( !set ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9762 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9763 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9764
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9765 if ( !allowDisconnected && ( !instance.element[ 0 ].parentNode ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9766 instance.element[ 0 ].parentNode.nodeType === 11 ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9767 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9768 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9769
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9770 for ( i = 0; i < set.length; i++ ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9771 if ( instance.options[ set[ i ][ 0 ] ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9772 set[ i ][ 1 ].apply( instance.element, args );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9773 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9774 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9775 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9776 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9777
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9778
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9779
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9780 var safeBlur = $.ui.safeBlur = function( element ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9781
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9782 // Support: IE9 - 10 only
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9783 // If the <body> is blurred, IE will switch windows, see #9420
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9784 if ( element && element.nodeName.toLowerCase() !== "body" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9785 $( element ).trigger( "blur" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9786 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9787 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9788
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9789
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9790 /*!
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9791 * jQuery UI Draggable 1.13.2
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9792 * http://jqueryui.com
1670
6fd889391d2c Added a Speed Dial to the web browser including the capability to select the first ten pages by pressing Meta+1 to Meta+0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9793 *
9678
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9794 * Copyright jQuery Foundation and other contributors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9795 * Released under the MIT license.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9796 * http://jquery.org/license
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9797 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9798
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9799 //>>label: Draggable
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9800 //>>group: Interactions
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9801 //>>description: Enables dragging functionality for any element.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9802 //>>docs: http://api.jqueryui.com/draggable/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9803 //>>demos: http://jqueryui.com/draggable/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9804 //>>css.structure: ../../themes/base/draggable.css
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9805
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9806
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9807 $.widget( "ui.draggable", $.ui.mouse, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9808 version: "1.13.2",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9809 widgetEventPrefix: "drag",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9810 options: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9811 addClasses: true,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9812 appendTo: "parent",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9813 axis: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9814 connectToSortable: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9815 containment: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9816 cursor: "auto",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9817 cursorAt: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9818 grid: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9819 handle: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9820 helper: "original",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9821 iframeFix: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9822 opacity: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9823 refreshPositions: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9824 revert: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9825 revertDuration: 500,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9826 scope: "default",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9827 scroll: true,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9828 scrollSensitivity: 20,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9829 scrollSpeed: 20,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9830 snap: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9831 snapMode: "both",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9832 snapTolerance: 20,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9833 stack: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9834 zIndex: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9835
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9836 // Callbacks
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9837 drag: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9838 start: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9839 stop: null
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9840 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9841 _create: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9842
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9843 if ( this.options.helper === "original" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9844 this._setPositionRelative();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9845 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9846 if ( this.options.addClasses ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9847 this._addClass( "ui-draggable" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9848 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9849 this._setHandleClassName();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9850
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9851 this._mouseInit();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9852 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9853
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9854 _setOption: function( key, value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9855 this._super( key, value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9856 if ( key === "handle" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9857 this._removeHandleClassName();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9858 this._setHandleClassName();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9859 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9860 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9861
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9862 _destroy: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9863 if ( ( this.helper || this.element ).is( ".ui-draggable-dragging" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9864 this.destroyOnClear = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9865 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9866 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9867 this._removeHandleClassName();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9868 this._mouseDestroy();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9869 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9870
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9871 _mouseCapture: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9872 var o = this.options;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9873
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9874 // Among others, prevent a drag on a resizable-handle
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9875 if ( this.helper || o.disabled ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9876 $( event.target ).closest( ".ui-resizable-handle" ).length > 0 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9877 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9878 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9879
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9880 //Quit if we're not on a valid handle
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9881 this.handle = this._getHandle( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9882 if ( !this.handle ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9883 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9884 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9885
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9886 this._blurActiveElement( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9887
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9888 this._blockFrames( o.iframeFix === true ? "iframe" : o.iframeFix );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9889
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9890 return true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9891
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9892 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9893
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9894 _blockFrames: function( selector ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9895 this.iframeBlocks = this.document.find( selector ).map( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9896 var iframe = $( this );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9897
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9898 return $( "<div>" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9899 .css( "position", "absolute" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9900 .appendTo( iframe.parent() )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9901 .outerWidth( iframe.outerWidth() )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9902 .outerHeight( iframe.outerHeight() )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9903 .offset( iframe.offset() )[ 0 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9904 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9905 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9906
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9907 _unblockFrames: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9908 if ( this.iframeBlocks ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9909 this.iframeBlocks.remove();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9910 delete this.iframeBlocks;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9911 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9912 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9913
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9914 _blurActiveElement: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9915 var activeElement = $.ui.safeActiveElement( this.document[ 0 ] ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9916 target = $( event.target );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9917
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9918 // Don't blur if the event occurred on an element that is within
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9919 // the currently focused element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9920 // See #10527, #12472
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9921 if ( target.closest( activeElement ).length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9922 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9923 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9924
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9925 // Blur any element that currently has focus, see #4261
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9926 $.ui.safeBlur( activeElement );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9927 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9928
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9929 _mouseStart: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9930
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9931 var o = this.options;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9932
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9933 //Create and append the visible helper
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9934 this.helper = this._createHelper( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9935
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9936 this._addClass( this.helper, "ui-draggable-dragging" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9937
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9938 //Cache the helper size
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9939 this._cacheHelperProportions();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9940
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9941 //If ddmanager is used for droppables, set the global draggable
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9942 if ( $.ui.ddmanager ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9943 $.ui.ddmanager.current = this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9944 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9945
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9946 /*
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9947 * - Position generation -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9948 * This block generates everything position related - it's the core of draggables.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9949 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9950
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9951 //Cache the margins of the original element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9952 this._cacheMargins();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9953
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9954 //Store the helper's css position
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9955 this.cssPosition = this.helper.css( "position" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9956 this.scrollParent = this.helper.scrollParent( true );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9957 this.offsetParent = this.helper.offsetParent();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9958 this.hasFixedAncestor = this.helper.parents().filter( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9959 return $( this ).css( "position" ) === "fixed";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9960 } ).length > 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9961
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9962 //The element's absolute position on the page minus margins
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9963 this.positionAbs = this.element.offset();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9964 this._refreshOffsets( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9965
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9966 //Generate the original position
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9967 this.originalPosition = this.position = this._generatePosition( event, false );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9968 this.originalPageX = event.pageX;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9969 this.originalPageY = event.pageY;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9970
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9971 //Adjust the mouse offset relative to the helper if "cursorAt" is supplied
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9972 if ( o.cursorAt ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9973 this._adjustOffsetFromHelper( o.cursorAt );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9974 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9975
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9976 //Set a containment if given in the options
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9977 this._setContainment();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9978
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9979 //Trigger event + callbacks
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9980 if ( this._trigger( "start", event ) === false ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9981 this._clear();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9982 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9983 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9984
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9985 //Recache the helper size
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9986 this._cacheHelperProportions();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9987
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9988 //Prepare the droppable offsets
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9989 if ( $.ui.ddmanager && !o.dropBehaviour ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9990 $.ui.ddmanager.prepareOffsets( this, event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9991 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9992
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9993 // Execute the drag once - this causes the helper not to be visible before getting its
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9994 // correct position
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9995 this._mouseDrag( event, true );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9996
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9997 // If the ddmanager is used for droppables, inform the manager that dragging has started
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9998 // (see #5003)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
9999 if ( $.ui.ddmanager ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10000 $.ui.ddmanager.dragStart( this, event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10001 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10002
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10003 return true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10004 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10005
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10006 _refreshOffsets: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10007 this.offset = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10008 top: this.positionAbs.top - this.margins.top,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10009 left: this.positionAbs.left - this.margins.left,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10010 scroll: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10011 parent: this._getParentOffset(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10012 relative: this._getRelativeOffset()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10013 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10014
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10015 this.offset.click = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10016 left: event.pageX - this.offset.left,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10017 top: event.pageY - this.offset.top
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10018 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10019 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10020
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10021 _mouseDrag: function( event, noPropagation ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10022
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10023 // reset any necessary cached properties (see #5009)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10024 if ( this.hasFixedAncestor ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10025 this.offset.parent = this._getParentOffset();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10026 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10027
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10028 //Compute the helpers position
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10029 this.position = this._generatePosition( event, true );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10030 this.positionAbs = this._convertPositionTo( "absolute" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10031
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10032 //Call plugins and callbacks and use the resulting position if something is returned
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10033 if ( !noPropagation ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10034 var ui = this._uiHash();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10035 if ( this._trigger( "drag", event, ui ) === false ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10036 this._mouseUp( new $.Event( "mouseup", event ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10037 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10038 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10039 this.position = ui.position;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10040 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10041
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10042 this.helper[ 0 ].style.left = this.position.left + "px";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10043 this.helper[ 0 ].style.top = this.position.top + "px";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10044
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10045 if ( $.ui.ddmanager ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10046 $.ui.ddmanager.drag( this, event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10047 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10048
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10049 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10050 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10051
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10052 _mouseStop: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10053
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10054 //If we are using droppables, inform the manager about the drop
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10055 var that = this,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10056 dropped = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10057 if ( $.ui.ddmanager && !this.options.dropBehaviour ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10058 dropped = $.ui.ddmanager.drop( this, event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10059 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10060
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10061 //if a drop comes from outside (a sortable)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10062 if ( this.dropped ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10063 dropped = this.dropped;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10064 this.dropped = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10065 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10066
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10067 if ( ( this.options.revert === "invalid" && !dropped ) ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10068 ( this.options.revert === "valid" && dropped ) ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10069 this.options.revert === true || ( typeof this.options.revert === "function" &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10070 this.options.revert.call( this.element, dropped ) )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10071 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10072 $( this.helper ).animate(
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10073 this.originalPosition,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10074 parseInt( this.options.revertDuration, 10 ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10075 function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10076 if ( that._trigger( "stop", event ) !== false ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10077 that._clear();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10078 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10079 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10080 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10081 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10082 if ( this._trigger( "stop", event ) !== false ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10083 this._clear();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10084 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10085 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10086
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10087 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10088 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10089
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10090 _mouseUp: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10091 this._unblockFrames();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10092
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10093 // If the ddmanager is used for droppables, inform the manager that dragging has stopped
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10094 // (see #5003)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10095 if ( $.ui.ddmanager ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10096 $.ui.ddmanager.dragStop( this, event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10097 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10098
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10099 // Only need to focus if the event occurred on the draggable itself, see #10527
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10100 if ( this.handleElement.is( event.target ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10101
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10102 // The interaction is over; whether or not the click resulted in a drag,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10103 // focus the element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10104 this.element.trigger( "focus" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10105 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10106
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10107 return $.ui.mouse.prototype._mouseUp.call( this, event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10108 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10109
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10110 cancel: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10111
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10112 if ( this.helper.is( ".ui-draggable-dragging" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10113 this._mouseUp( new $.Event( "mouseup", { target: this.element[ 0 ] } ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10114 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10115 this._clear();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10116 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10117
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10118 return this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10119
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10120 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10121
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10122 _getHandle: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10123 return this.options.handle ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10124 !!$( event.target ).closest( this.element.find( this.options.handle ) ).length :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10125 true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10126 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10127
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10128 _setHandleClassName: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10129 this.handleElement = this.options.handle ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10130 this.element.find( this.options.handle ) : this.element;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10131 this._addClass( this.handleElement, "ui-draggable-handle" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10132 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10133
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10134 _removeHandleClassName: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10135 this._removeClass( this.handleElement, "ui-draggable-handle" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10136 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10137
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10138 _createHelper: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10139
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10140 var o = this.options,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10141 helperIsFunction = typeof o.helper === "function",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10142 helper = helperIsFunction ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10143 $( o.helper.apply( this.element[ 0 ], [ event ] ) ) :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10144 ( o.helper === "clone" ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10145 this.element.clone().removeAttr( "id" ) :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10146 this.element );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10147
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10148 if ( !helper.parents( "body" ).length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10149 helper.appendTo( ( o.appendTo === "parent" ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10150 this.element[ 0 ].parentNode :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10151 o.appendTo ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10152 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10153
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10154 // Http://bugs.jqueryui.com/ticket/9446
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10155 // a helper function can return the original element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10156 // which wouldn't have been set to relative in _create
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10157 if ( helperIsFunction && helper[ 0 ] === this.element[ 0 ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10158 this._setPositionRelative();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10159 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10160
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10161 if ( helper[ 0 ] !== this.element[ 0 ] &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10162 !( /(fixed|absolute)/ ).test( helper.css( "position" ) ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10163 helper.css( "position", "absolute" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10164 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10165
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10166 return helper;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10167
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10168 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10169
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10170 _setPositionRelative: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10171 if ( !( /^(?:r|a|f)/ ).test( this.element.css( "position" ) ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10172 this.element[ 0 ].style.position = "relative";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10173 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10174 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10175
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10176 _adjustOffsetFromHelper: function( obj ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10177 if ( typeof obj === "string" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10178 obj = obj.split( " " );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10179 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10180 if ( Array.isArray( obj ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10181 obj = { left: +obj[ 0 ], top: +obj[ 1 ] || 0 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10182 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10183 if ( "left" in obj ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10184 this.offset.click.left = obj.left + this.margins.left;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10185 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10186 if ( "right" in obj ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10187 this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10188 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10189 if ( "top" in obj ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10190 this.offset.click.top = obj.top + this.margins.top;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10191 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10192 if ( "bottom" in obj ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10193 this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10194 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10195 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10196
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10197 _isRootNode: function( element ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10198 return ( /(html|body)/i ).test( element.tagName ) || element === this.document[ 0 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10199 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10200
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10201 _getParentOffset: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10202
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10203 //Get the offsetParent and cache its position
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10204 var po = this.offsetParent.offset(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10205 document = this.document[ 0 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10206
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10207 // This is a special case where we need to modify a offset calculated on start, since the
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10208 // following happened:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10209 // 1. The position of the helper is absolute, so it's position is calculated based on the
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10210 // next positioned parent
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10211 // 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10212 // the document, which means that the scroll is included in the initial calculation of the
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10213 // offset of the parent, and never recalculated upon drag
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10214 if ( this.cssPosition === "absolute" && this.scrollParent[ 0 ] !== document &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10215 $.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10216 po.left += this.scrollParent.scrollLeft();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10217 po.top += this.scrollParent.scrollTop();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10218 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10219
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10220 if ( this._isRootNode( this.offsetParent[ 0 ] ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10221 po = { top: 0, left: 0 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10222 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10223
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10224 return {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10225 top: po.top + ( parseInt( this.offsetParent.css( "borderTopWidth" ), 10 ) || 0 ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10226 left: po.left + ( parseInt( this.offsetParent.css( "borderLeftWidth" ), 10 ) || 0 )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10227 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10228
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10229 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10230
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10231 _getRelativeOffset: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10232 if ( this.cssPosition !== "relative" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10233 return { top: 0, left: 0 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10234 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10235
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10236 var p = this.element.position(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10237 scrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10238
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10239 return {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10240 top: p.top - ( parseInt( this.helper.css( "top" ), 10 ) || 0 ) +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10241 ( !scrollIsRootNode ? this.scrollParent.scrollTop() : 0 ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10242 left: p.left - ( parseInt( this.helper.css( "left" ), 10 ) || 0 ) +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10243 ( !scrollIsRootNode ? this.scrollParent.scrollLeft() : 0 )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10244 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10245
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10246 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10247
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10248 _cacheMargins: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10249 this.margins = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10250 left: ( parseInt( this.element.css( "marginLeft" ), 10 ) || 0 ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10251 top: ( parseInt( this.element.css( "marginTop" ), 10 ) || 0 ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10252 right: ( parseInt( this.element.css( "marginRight" ), 10 ) || 0 ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10253 bottom: ( parseInt( this.element.css( "marginBottom" ), 10 ) || 0 )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10254 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10255 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10256
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10257 _cacheHelperProportions: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10258 this.helperProportions = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10259 width: this.helper.outerWidth(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10260 height: this.helper.outerHeight()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10261 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10262 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10263
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10264 _setContainment: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10265
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10266 var isUserScrollable, c, ce,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10267 o = this.options,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10268 document = this.document[ 0 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10269
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10270 this.relativeContainer = null;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10271
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10272 if ( !o.containment ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10273 this.containment = null;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10274 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10275 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10276
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10277 if ( o.containment === "window" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10278 this.containment = [
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10279 $( window ).scrollLeft() - this.offset.relative.left - this.offset.parent.left,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10280 $( window ).scrollTop() - this.offset.relative.top - this.offset.parent.top,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10281 $( window ).scrollLeft() + $( window ).width() -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10282 this.helperProportions.width - this.margins.left,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10283 $( window ).scrollTop() +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10284 ( $( window ).height() || document.body.parentNode.scrollHeight ) -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10285 this.helperProportions.height - this.margins.top
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10286 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10287 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10288 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10289
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10290 if ( o.containment === "document" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10291 this.containment = [
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10292 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10293 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10294 $( document ).width() - this.helperProportions.width - this.margins.left,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10295 ( $( document ).height() || document.body.parentNode.scrollHeight ) -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10296 this.helperProportions.height - this.margins.top
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10297 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10298 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10299 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10300
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10301 if ( o.containment.constructor === Array ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10302 this.containment = o.containment;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10303 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10304 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10305
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10306 if ( o.containment === "parent" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10307 o.containment = this.helper[ 0 ].parentNode;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10308 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10309
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10310 c = $( o.containment );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10311 ce = c[ 0 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10312
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10313 if ( !ce ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10314 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10315 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10316
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10317 isUserScrollable = /(scroll|auto)/.test( c.css( "overflow" ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10318
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10319 this.containment = [
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10320 ( parseInt( c.css( "borderLeftWidth" ), 10 ) || 0 ) +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10321 ( parseInt( c.css( "paddingLeft" ), 10 ) || 0 ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10322 ( parseInt( c.css( "borderTopWidth" ), 10 ) || 0 ) +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10323 ( parseInt( c.css( "paddingTop" ), 10 ) || 0 ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10324 ( isUserScrollable ? Math.max( ce.scrollWidth, ce.offsetWidth ) : ce.offsetWidth ) -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10325 ( parseInt( c.css( "borderRightWidth" ), 10 ) || 0 ) -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10326 ( parseInt( c.css( "paddingRight" ), 10 ) || 0 ) -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10327 this.helperProportions.width -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10328 this.margins.left -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10329 this.margins.right,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10330 ( isUserScrollable ? Math.max( ce.scrollHeight, ce.offsetHeight ) : ce.offsetHeight ) -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10331 ( parseInt( c.css( "borderBottomWidth" ), 10 ) || 0 ) -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10332 ( parseInt( c.css( "paddingBottom" ), 10 ) || 0 ) -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10333 this.helperProportions.height -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10334 this.margins.top -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10335 this.margins.bottom
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10336 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10337 this.relativeContainer = c;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10338 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10339
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10340 _convertPositionTo: function( d, pos ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10341
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10342 if ( !pos ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10343 pos = this.position;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10344 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10345
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10346 var mod = d === "absolute" ? 1 : -1,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10347 scrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10348
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10349 return {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10350 top: (
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10351
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10352 // The absolute mouse position
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10353 pos.top +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10354
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10355 // Only for relative positioned nodes: Relative offset from element to offset parent
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10356 this.offset.relative.top * mod +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10357
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10358 // The offsetParent's offset without borders (offset + border)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10359 this.offset.parent.top * mod -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10360 ( ( this.cssPosition === "fixed" ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10361 -this.offset.scroll.top :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10362 ( scrollIsRootNode ? 0 : this.offset.scroll.top ) ) * mod )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10363 ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10364 left: (
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10365
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10366 // The absolute mouse position
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10367 pos.left +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10368
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10369 // Only for relative positioned nodes: Relative offset from element to offset parent
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10370 this.offset.relative.left * mod +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10371
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10372 // The offsetParent's offset without borders (offset + border)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10373 this.offset.parent.left * mod -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10374 ( ( this.cssPosition === "fixed" ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10375 -this.offset.scroll.left :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10376 ( scrollIsRootNode ? 0 : this.offset.scroll.left ) ) * mod )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10377 )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10378 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10379
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10380 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10381
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10382 _generatePosition: function( event, constrainPosition ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10383
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10384 var containment, co, top, left,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10385 o = this.options,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10386 scrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10387 pageX = event.pageX,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10388 pageY = event.pageY;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10389
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10390 // Cache the scroll
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10391 if ( !scrollIsRootNode || !this.offset.scroll ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10392 this.offset.scroll = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10393 top: this.scrollParent.scrollTop(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10394 left: this.scrollParent.scrollLeft()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10395 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10396 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10397
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10398 /*
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10399 * - Position constraining -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10400 * Constrain the position to a mix of grid, containment.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10401 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10402
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10403 // If we are not dragging yet, we won't check for options
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10404 if ( constrainPosition ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10405 if ( this.containment ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10406 if ( this.relativeContainer ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10407 co = this.relativeContainer.offset();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10408 containment = [
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10409 this.containment[ 0 ] + co.left,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10410 this.containment[ 1 ] + co.top,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10411 this.containment[ 2 ] + co.left,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10412 this.containment[ 3 ] + co.top
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10413 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10414 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10415 containment = this.containment;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10416 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10417
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10418 if ( event.pageX - this.offset.click.left < containment[ 0 ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10419 pageX = containment[ 0 ] + this.offset.click.left;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10420 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10421 if ( event.pageY - this.offset.click.top < containment[ 1 ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10422 pageY = containment[ 1 ] + this.offset.click.top;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10423 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10424 if ( event.pageX - this.offset.click.left > containment[ 2 ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10425 pageX = containment[ 2 ] + this.offset.click.left;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10426 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10427 if ( event.pageY - this.offset.click.top > containment[ 3 ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10428 pageY = containment[ 3 ] + this.offset.click.top;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10429 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10430 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10431
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10432 if ( o.grid ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10433
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10434 //Check for grid elements set to 0 to prevent divide by 0 error causing invalid
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10435 // argument errors in IE (see ticket #6950)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10436 top = o.grid[ 1 ] ? this.originalPageY + Math.round( ( pageY -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10437 this.originalPageY ) / o.grid[ 1 ] ) * o.grid[ 1 ] : this.originalPageY;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10438 pageY = containment ? ( ( top - this.offset.click.top >= containment[ 1 ] ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10439 top - this.offset.click.top > containment[ 3 ] ) ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10440 top :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10441 ( ( top - this.offset.click.top >= containment[ 1 ] ) ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10442 top - o.grid[ 1 ] : top + o.grid[ 1 ] ) ) : top;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10443
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10444 left = o.grid[ 0 ] ? this.originalPageX +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10445 Math.round( ( pageX - this.originalPageX ) / o.grid[ 0 ] ) * o.grid[ 0 ] :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10446 this.originalPageX;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10447 pageX = containment ? ( ( left - this.offset.click.left >= containment[ 0 ] ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10448 left - this.offset.click.left > containment[ 2 ] ) ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10449 left :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10450 ( ( left - this.offset.click.left >= containment[ 0 ] ) ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10451 left - o.grid[ 0 ] : left + o.grid[ 0 ] ) ) : left;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10452 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10453
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10454 if ( o.axis === "y" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10455 pageX = this.originalPageX;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10456 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10457
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10458 if ( o.axis === "x" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10459 pageY = this.originalPageY;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10460 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10461 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10462
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10463 return {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10464 top: (
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10465
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10466 // The absolute mouse position
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10467 pageY -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10468
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10469 // Click offset (relative to the element)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10470 this.offset.click.top -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10471
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10472 // Only for relative positioned nodes: Relative offset from element to offset parent
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10473 this.offset.relative.top -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10474
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10475 // The offsetParent's offset without borders (offset + border)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10476 this.offset.parent.top +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10477 ( this.cssPosition === "fixed" ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10478 -this.offset.scroll.top :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10479 ( scrollIsRootNode ? 0 : this.offset.scroll.top ) )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10480 ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10481 left: (
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10482
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10483 // The absolute mouse position
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10484 pageX -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10485
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10486 // Click offset (relative to the element)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10487 this.offset.click.left -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10488
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10489 // Only for relative positioned nodes: Relative offset from element to offset parent
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10490 this.offset.relative.left -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10491
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10492 // The offsetParent's offset without borders (offset + border)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10493 this.offset.parent.left +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10494 ( this.cssPosition === "fixed" ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10495 -this.offset.scroll.left :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10496 ( scrollIsRootNode ? 0 : this.offset.scroll.left ) )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10497 )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10498 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10499
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10500 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10501
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10502 _clear: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10503 this._removeClass( this.helper, "ui-draggable-dragging" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10504 if ( this.helper[ 0 ] !== this.element[ 0 ] && !this.cancelHelperRemoval ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10505 this.helper.remove();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10506 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10507 this.helper = null;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10508 this.cancelHelperRemoval = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10509 if ( this.destroyOnClear ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10510 this.destroy();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10511 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10512 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10513
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10514 // From now on bulk stuff - mainly helpers
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10515
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10516 _trigger: function( type, event, ui ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10517 ui = ui || this._uiHash();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10518 $.ui.plugin.call( this, type, [ event, ui, this ], true );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10519
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10520 // Absolute position and offset (see #6884 ) have to be recalculated after plugins
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10521 if ( /^(drag|start|stop)/.test( type ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10522 this.positionAbs = this._convertPositionTo( "absolute" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10523 ui.offset = this.positionAbs;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10524 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10525 return $.Widget.prototype._trigger.call( this, type, event, ui );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10526 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10527
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10528 plugins: {},
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10529
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10530 _uiHash: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10531 return {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10532 helper: this.helper,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10533 position: this.position,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10534 originalPosition: this.originalPosition,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10535 offset: this.positionAbs
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10536 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10537 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10538
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10539 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10540
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10541 $.ui.plugin.add( "draggable", "connectToSortable", {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10542 start: function( event, ui, draggable ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10543 var uiSortable = $.extend( {}, ui, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10544 item: draggable.element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10545 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10546
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10547 draggable.sortables = [];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10548 $( draggable.options.connectToSortable ).each( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10549 var sortable = $( this ).sortable( "instance" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10550
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10551 if ( sortable && !sortable.options.disabled ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10552 draggable.sortables.push( sortable );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10553
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10554 // RefreshPositions is called at drag start to refresh the containerCache
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10555 // which is used in drag. This ensures it's initialized and synchronized
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10556 // with any changes that might have happened on the page since initialization.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10557 sortable.refreshPositions();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10558 sortable._trigger( "activate", event, uiSortable );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10559 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10560 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10561 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10562 stop: function( event, ui, draggable ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10563 var uiSortable = $.extend( {}, ui, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10564 item: draggable.element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10565 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10566
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10567 draggable.cancelHelperRemoval = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10568
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10569 $.each( draggable.sortables, function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10570 var sortable = this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10571
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10572 if ( sortable.isOver ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10573 sortable.isOver = 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10574
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10575 // Allow this sortable to handle removing the helper
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10576 draggable.cancelHelperRemoval = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10577 sortable.cancelHelperRemoval = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10578
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10579 // Use _storedCSS To restore properties in the sortable,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10580 // as this also handles revert (#9675) since the draggable
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10581 // may have modified them in unexpected ways (#8809)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10582 sortable._storedCSS = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10583 position: sortable.placeholder.css( "position" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10584 top: sortable.placeholder.css( "top" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10585 left: sortable.placeholder.css( "left" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10586 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10587
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10588 sortable._mouseStop( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10589
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10590 // Once drag has ended, the sortable should return to using
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10591 // its original helper, not the shared helper from draggable
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10592 sortable.options.helper = sortable.options._helper;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10593 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10594
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10595 // Prevent this Sortable from removing the helper.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10596 // However, don't set the draggable to remove the helper
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10597 // either as another connected Sortable may yet handle the removal.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10598 sortable.cancelHelperRemoval = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10599
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10600 sortable._trigger( "deactivate", event, uiSortable );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10601 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10602 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10603 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10604 drag: function( event, ui, draggable ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10605 $.each( draggable.sortables, function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10606 var innermostIntersecting = false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10607 sortable = this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10608
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10609 // Copy over variables that sortable's _intersectsWith uses
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10610 sortable.positionAbs = draggable.positionAbs;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10611 sortable.helperProportions = draggable.helperProportions;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10612 sortable.offset.click = draggable.offset.click;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10613
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10614 if ( sortable._intersectsWith( sortable.containerCache ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10615 innermostIntersecting = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10616
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10617 $.each( draggable.sortables, function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10618
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10619 // Copy over variables that sortable's _intersectsWith uses
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10620 this.positionAbs = draggable.positionAbs;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10621 this.helperProportions = draggable.helperProportions;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10622 this.offset.click = draggable.offset.click;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10623
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10624 if ( this !== sortable &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10625 this._intersectsWith( this.containerCache ) &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10626 $.contains( sortable.element[ 0 ], this.element[ 0 ] ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10627 innermostIntersecting = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10628 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10629
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10630 return innermostIntersecting;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10631 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10632 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10633
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10634 if ( innermostIntersecting ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10635
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10636 // If it intersects, we use a little isOver variable and set it once,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10637 // so that the move-in stuff gets fired only once.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10638 if ( !sortable.isOver ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10639 sortable.isOver = 1;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10640
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10641 // Store draggable's parent in case we need to reappend to it later.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10642 draggable._parent = ui.helper.parent();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10643
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10644 sortable.currentItem = ui.helper
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10645 .appendTo( sortable.element )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10646 .data( "ui-sortable-item", true );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10647
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10648 // Store helper option to later restore it
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10649 sortable.options._helper = sortable.options.helper;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10650
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10651 sortable.options.helper = function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10652 return ui.helper[ 0 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10653 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10654
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10655 // Fire the start events of the sortable with our passed browser event,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10656 // and our own helper (so it doesn't create a new one)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10657 event.target = sortable.currentItem[ 0 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10658 sortable._mouseCapture( event, true );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10659 sortable._mouseStart( event, true, true );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10660
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10661 // Because the browser event is way off the new appended portlet,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10662 // modify necessary variables to reflect the changes
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10663 sortable.offset.click.top = draggable.offset.click.top;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10664 sortable.offset.click.left = draggable.offset.click.left;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10665 sortable.offset.parent.left -= draggable.offset.parent.left -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10666 sortable.offset.parent.left;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10667 sortable.offset.parent.top -= draggable.offset.parent.top -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10668 sortable.offset.parent.top;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10669
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10670 draggable._trigger( "toSortable", event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10671
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10672 // Inform draggable that the helper is in a valid drop zone,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10673 // used solely in the revert option to handle "valid/invalid".
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10674 draggable.dropped = sortable.element;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10675
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10676 // Need to refreshPositions of all sortables in the case that
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10677 // adding to one sortable changes the location of the other sortables (#9675)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10678 $.each( draggable.sortables, function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10679 this.refreshPositions();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10680 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10681
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10682 // Hack so receive/update callbacks work (mostly)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10683 draggable.currentItem = draggable.element;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10684 sortable.fromOutside = draggable;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10685 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10686
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10687 if ( sortable.currentItem ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10688 sortable._mouseDrag( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10689
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10690 // Copy the sortable's position because the draggable's can potentially reflect
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10691 // a relative position, while sortable is always absolute, which the dragged
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10692 // element has now become. (#8809)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10693 ui.position = sortable.position;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10694 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10695 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10696
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10697 // If it doesn't intersect with the sortable, and it intersected before,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10698 // we fake the drag stop of the sortable, but make sure it doesn't remove
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10699 // the helper by using cancelHelperRemoval.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10700 if ( sortable.isOver ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10701
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10702 sortable.isOver = 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10703 sortable.cancelHelperRemoval = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10704
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10705 // Calling sortable's mouseStop would trigger a revert,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10706 // so revert must be temporarily false until after mouseStop is called.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10707 sortable.options._revert = sortable.options.revert;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10708 sortable.options.revert = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10709
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10710 sortable._trigger( "out", event, sortable._uiHash( sortable ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10711 sortable._mouseStop( event, true );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10712
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10713 // Restore sortable behaviors that were modfied
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10714 // when the draggable entered the sortable area (#9481)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10715 sortable.options.revert = sortable.options._revert;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10716 sortable.options.helper = sortable.options._helper;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10717
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10718 if ( sortable.placeholder ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10719 sortable.placeholder.remove();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10720 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10721
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10722 // Restore and recalculate the draggable's offset considering the sortable
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10723 // may have modified them in unexpected ways. (#8809, #10669)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10724 ui.helper.appendTo( draggable._parent );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10725 draggable._refreshOffsets( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10726 ui.position = draggable._generatePosition( event, true );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10727
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10728 draggable._trigger( "fromSortable", event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10729
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10730 // Inform draggable that the helper is no longer in a valid drop zone
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10731 draggable.dropped = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10732
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10733 // Need to refreshPositions of all sortables just in case removing
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10734 // from one sortable changes the location of other sortables (#9675)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10735 $.each( draggable.sortables, function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10736 this.refreshPositions();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10737 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10738 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10739 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10740 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10741 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10742 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10743
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10744 $.ui.plugin.add( "draggable", "cursor", {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10745 start: function( event, ui, instance ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10746 var t = $( "body" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10747 o = instance.options;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10748
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10749 if ( t.css( "cursor" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10750 o._cursor = t.css( "cursor" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10751 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10752 t.css( "cursor", o.cursor );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10753 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10754 stop: function( event, ui, instance ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10755 var o = instance.options;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10756 if ( o._cursor ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10757 $( "body" ).css( "cursor", o._cursor );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10758 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10759 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10760 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10761
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10762 $.ui.plugin.add( "draggable", "opacity", {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10763 start: function( event, ui, instance ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10764 var t = $( ui.helper ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10765 o = instance.options;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10766 if ( t.css( "opacity" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10767 o._opacity = t.css( "opacity" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10768 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10769 t.css( "opacity", o.opacity );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10770 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10771 stop: function( event, ui, instance ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10772 var o = instance.options;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10773 if ( o._opacity ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10774 $( ui.helper ).css( "opacity", o._opacity );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10775 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10776 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10777 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10778
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10779 $.ui.plugin.add( "draggable", "scroll", {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10780 start: function( event, ui, i ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10781 if ( !i.scrollParentNotHidden ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10782 i.scrollParentNotHidden = i.helper.scrollParent( false );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10783 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10784
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10785 if ( i.scrollParentNotHidden[ 0 ] !== i.document[ 0 ] &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10786 i.scrollParentNotHidden[ 0 ].tagName !== "HTML" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10787 i.overflowOffset = i.scrollParentNotHidden.offset();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10788 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10789 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10790 drag: function( event, ui, i ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10791
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10792 var o = i.options,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10793 scrolled = false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10794 scrollParent = i.scrollParentNotHidden[ 0 ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10795 document = i.document[ 0 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10796
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10797 if ( scrollParent !== document && scrollParent.tagName !== "HTML" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10798 if ( !o.axis || o.axis !== "x" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10799 if ( ( i.overflowOffset.top + scrollParent.offsetHeight ) - event.pageY <
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10800 o.scrollSensitivity ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10801 scrollParent.scrollTop = scrolled = scrollParent.scrollTop + o.scrollSpeed;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10802 } else if ( event.pageY - i.overflowOffset.top < o.scrollSensitivity ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10803 scrollParent.scrollTop = scrolled = scrollParent.scrollTop - o.scrollSpeed;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10804 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10805 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10806
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10807 if ( !o.axis || o.axis !== "y" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10808 if ( ( i.overflowOffset.left + scrollParent.offsetWidth ) - event.pageX <
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10809 o.scrollSensitivity ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10810 scrollParent.scrollLeft = scrolled = scrollParent.scrollLeft + o.scrollSpeed;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10811 } else if ( event.pageX - i.overflowOffset.left < o.scrollSensitivity ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10812 scrollParent.scrollLeft = scrolled = scrollParent.scrollLeft - o.scrollSpeed;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10813 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10814 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10815
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10816 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10817
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10818 if ( !o.axis || o.axis !== "x" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10819 if ( event.pageY - $( document ).scrollTop() < o.scrollSensitivity ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10820 scrolled = $( document ).scrollTop( $( document ).scrollTop() - o.scrollSpeed );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10821 } else if ( $( window ).height() - ( event.pageY - $( document ).scrollTop() ) <
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10822 o.scrollSensitivity ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10823 scrolled = $( document ).scrollTop( $( document ).scrollTop() + o.scrollSpeed );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10824 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10825 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10826
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10827 if ( !o.axis || o.axis !== "y" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10828 if ( event.pageX - $( document ).scrollLeft() < o.scrollSensitivity ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10829 scrolled = $( document ).scrollLeft(
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10830 $( document ).scrollLeft() - o.scrollSpeed
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10831 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10832 } else if ( $( window ).width() - ( event.pageX - $( document ).scrollLeft() ) <
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10833 o.scrollSensitivity ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10834 scrolled = $( document ).scrollLeft(
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10835 $( document ).scrollLeft() + o.scrollSpeed
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10836 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10837 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10838 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10839
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10840 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10841
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10842 if ( scrolled !== false && $.ui.ddmanager && !o.dropBehaviour ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10843 $.ui.ddmanager.prepareOffsets( i, event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10844 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10845
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10846 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10847 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10848
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10849 $.ui.plugin.add( "draggable", "snap", {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10850 start: function( event, ui, i ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10851
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10852 var o = i.options;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10853
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10854 i.snapElements = [];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10855
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10856 $( o.snap.constructor !== String ? ( o.snap.items || ":data(ui-draggable)" ) : o.snap )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10857 .each( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10858 var $t = $( this ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10859 $o = $t.offset();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10860 if ( this !== i.element[ 0 ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10861 i.snapElements.push( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10862 item: this,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10863 width: $t.outerWidth(), height: $t.outerHeight(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10864 top: $o.top, left: $o.left
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10865 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10866 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10867 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10868
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10869 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10870 drag: function( event, ui, inst ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10871
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10872 var ts, bs, ls, rs, l, r, t, b, i, first,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10873 o = inst.options,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10874 d = o.snapTolerance,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10875 x1 = ui.offset.left, x2 = x1 + inst.helperProportions.width,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10876 y1 = ui.offset.top, y2 = y1 + inst.helperProportions.height;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10877
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10878 for ( i = inst.snapElements.length - 1; i >= 0; i-- ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10879
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10880 l = inst.snapElements[ i ].left - inst.margins.left;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10881 r = l + inst.snapElements[ i ].width;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10882 t = inst.snapElements[ i ].top - inst.margins.top;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10883 b = t + inst.snapElements[ i ].height;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10884
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10885 if ( x2 < l - d || x1 > r + d || y2 < t - d || y1 > b + d ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10886 !$.contains( inst.snapElements[ i ].item.ownerDocument,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10887 inst.snapElements[ i ].item ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10888 if ( inst.snapElements[ i ].snapping ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10889 if ( inst.options.snap.release ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10890 inst.options.snap.release.call(
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10891 inst.element,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10892 event,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10893 $.extend( inst._uiHash(), { snapItem: inst.snapElements[ i ].item } )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10894 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10895 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10896 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10897 inst.snapElements[ i ].snapping = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10898 continue;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10899 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10900
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10901 if ( o.snapMode !== "inner" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10902 ts = Math.abs( t - y2 ) <= d;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10903 bs = Math.abs( b - y1 ) <= d;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10904 ls = Math.abs( l - x2 ) <= d;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10905 rs = Math.abs( r - x1 ) <= d;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10906 if ( ts ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10907 ui.position.top = inst._convertPositionTo( "relative", {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10908 top: t - inst.helperProportions.height,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10909 left: 0
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10910 } ).top;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10911 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10912 if ( bs ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10913 ui.position.top = inst._convertPositionTo( "relative", {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10914 top: b,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10915 left: 0
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10916 } ).top;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10917 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10918 if ( ls ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10919 ui.position.left = inst._convertPositionTo( "relative", {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10920 top: 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10921 left: l - inst.helperProportions.width
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10922 } ).left;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10923 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10924 if ( rs ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10925 ui.position.left = inst._convertPositionTo( "relative", {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10926 top: 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10927 left: r
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10928 } ).left;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10929 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10930 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10931
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10932 first = ( ts || bs || ls || rs );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10933
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10934 if ( o.snapMode !== "outer" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10935 ts = Math.abs( t - y1 ) <= d;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10936 bs = Math.abs( b - y2 ) <= d;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10937 ls = Math.abs( l - x1 ) <= d;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10938 rs = Math.abs( r - x2 ) <= d;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10939 if ( ts ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10940 ui.position.top = inst._convertPositionTo( "relative", {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10941 top: t,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10942 left: 0
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10943 } ).top;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10944 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10945 if ( bs ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10946 ui.position.top = inst._convertPositionTo( "relative", {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10947 top: b - inst.helperProportions.height,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10948 left: 0
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10949 } ).top;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10950 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10951 if ( ls ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10952 ui.position.left = inst._convertPositionTo( "relative", {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10953 top: 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10954 left: l
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10955 } ).left;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10956 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10957 if ( rs ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10958 ui.position.left = inst._convertPositionTo( "relative", {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10959 top: 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10960 left: r - inst.helperProportions.width
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10961 } ).left;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10962 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10963 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10964
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10965 if ( !inst.snapElements[ i ].snapping && ( ts || bs || ls || rs || first ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10966 if ( inst.options.snap.snap ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10967 inst.options.snap.snap.call(
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10968 inst.element,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10969 event,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10970 $.extend( inst._uiHash(), {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10971 snapItem: inst.snapElements[ i ].item
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10972 } ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10973 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10974 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10975 inst.snapElements[ i ].snapping = ( ts || bs || ls || rs || first );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10976
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10977 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10978
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10979 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10980 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10981
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10982 $.ui.plugin.add( "draggable", "stack", {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10983 start: function( event, ui, instance ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10984 var min,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10985 o = instance.options,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10986 group = $.makeArray( $( o.stack ) ).sort( function( a, b ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10987 return ( parseInt( $( a ).css( "zIndex" ), 10 ) || 0 ) -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10988 ( parseInt( $( b ).css( "zIndex" ), 10 ) || 0 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10989 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10990
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10991 if ( !group.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10992 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10993 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10994
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10995 min = parseInt( $( group[ 0 ] ).css( "zIndex" ), 10 ) || 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10996 $( group ).each( function( i ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10997 $( this ).css( "zIndex", min + i );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10998 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
10999 this.css( "zIndex", ( min + group.length ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11000 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11001 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11002
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11003 $.ui.plugin.add( "draggable", "zIndex", {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11004 start: function( event, ui, instance ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11005 var t = $( ui.helper ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11006 o = instance.options;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11007
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11008 if ( t.css( "zIndex" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11009 o._zIndex = t.css( "zIndex" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11010 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11011 t.css( "zIndex", o.zIndex );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11012 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11013 stop: function( event, ui, instance ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11014 var o = instance.options;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11015
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11016 if ( o._zIndex ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11017 $( ui.helper ).css( "zIndex", o._zIndex );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11018 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11019 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11020 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11021
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11022 var widgetsDraggable = $.ui.draggable;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11023
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11024
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11025 /*!
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11026 * jQuery UI Resizable 1.13.2
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11027 * http://jqueryui.com
1670
6fd889391d2c Added a Speed Dial to the web browser including the capability to select the first ten pages by pressing Meta+1 to Meta+0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11028 *
9678
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11029 * Copyright jQuery Foundation and other contributors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11030 * Released under the MIT license.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11031 * http://jquery.org/license
1670
6fd889391d2c Added a Speed Dial to the web browser including the capability to select the first ten pages by pressing Meta+1 to Meta+0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11032 */
9678
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11033
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11034 //>>label: Resizable
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11035 //>>group: Interactions
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11036 //>>description: Enables resize functionality for any element.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11037 //>>docs: http://api.jqueryui.com/resizable/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11038 //>>demos: http://jqueryui.com/resizable/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11039 //>>css.structure: ../../themes/base/core.css
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11040 //>>css.structure: ../../themes/base/resizable.css
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11041 //>>css.theme: ../../themes/base/theme.css
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11042
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11043
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11044 $.widget( "ui.resizable", $.ui.mouse, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11045 version: "1.13.2",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11046 widgetEventPrefix: "resize",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11047 options: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11048 alsoResize: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11049 animate: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11050 animateDuration: "slow",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11051 animateEasing: "swing",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11052 aspectRatio: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11053 autoHide: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11054 classes: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11055 "ui-resizable-se": "ui-icon ui-icon-gripsmall-diagonal-se"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11056 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11057 containment: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11058 ghost: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11059 grid: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11060 handles: "e,s,se",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11061 helper: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11062 maxHeight: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11063 maxWidth: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11064 minHeight: 10,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11065 minWidth: 10,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11066
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11067 // See #7960
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11068 zIndex: 90,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11069
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11070 // Callbacks
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11071 resize: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11072 start: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11073 stop: null
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11074 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11075
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11076 _num: function( value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11077 return parseFloat( value ) || 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11078 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11079
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11080 _isNumber: function( value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11081 return !isNaN( parseFloat( value ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11082 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11083
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11084 _hasScroll: function( el, a ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11085
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11086 if ( $( el ).css( "overflow" ) === "hidden" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11087 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11088 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11089
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11090 var scroll = ( a && a === "left" ) ? "scrollLeft" : "scrollTop",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11091 has = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11092
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11093 if ( el[ scroll ] > 0 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11094 return true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11095 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11096
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11097 // TODO: determine which cases actually cause this to happen
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11098 // if the element doesn't have the scroll set, see if it's possible to
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11099 // set the scroll
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11100 try {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11101 el[ scroll ] = 1;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11102 has = ( el[ scroll ] > 0 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11103 el[ scroll ] = 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11104 } catch ( e ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11105
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11106 // `el` might be a string, then setting `scroll` will throw
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11107 // an error in strict mode; ignore it.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11108 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11109 return has;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11110 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11111
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11112 _create: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11113
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11114 var margins,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11115 o = this.options,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11116 that = this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11117 this._addClass( "ui-resizable" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11118
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11119 $.extend( this, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11120 _aspectRatio: !!( o.aspectRatio ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11121 aspectRatio: o.aspectRatio,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11122 originalElement: this.element,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11123 _proportionallyResizeElements: [],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11124 _helper: o.helper || o.ghost || o.animate ? o.helper || "ui-resizable-helper" : null
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11125 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11126
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11127 // Wrap the element if it cannot hold child nodes
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11128 if ( this.element[ 0 ].nodeName.match( /^(canvas|textarea|input|select|button|img)$/i ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11129
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11130 this.element.wrap(
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11131 $( "<div class='ui-wrapper'></div>" ).css( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11132 overflow: "hidden",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11133 position: this.element.css( "position" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11134 width: this.element.outerWidth(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11135 height: this.element.outerHeight(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11136 top: this.element.css( "top" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11137 left: this.element.css( "left" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11138 } )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11139 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11140
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11141 this.element = this.element.parent().data(
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11142 "ui-resizable", this.element.resizable( "instance" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11143 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11144
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11145 this.elementIsWrapper = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11146
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11147 margins = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11148 marginTop: this.originalElement.css( "marginTop" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11149 marginRight: this.originalElement.css( "marginRight" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11150 marginBottom: this.originalElement.css( "marginBottom" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11151 marginLeft: this.originalElement.css( "marginLeft" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11152 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11153
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11154 this.element.css( margins );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11155 this.originalElement.css( "margin", 0 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11156
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11157 // support: Safari
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11158 // Prevent Safari textarea resize
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11159 this.originalResizeStyle = this.originalElement.css( "resize" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11160 this.originalElement.css( "resize", "none" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11161
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11162 this._proportionallyResizeElements.push( this.originalElement.css( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11163 position: "static",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11164 zoom: 1,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11165 display: "block"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11166 } ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11167
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11168 // Support: IE9
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11169 // avoid IE jump (hard set the margin)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11170 this.originalElement.css( margins );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11171
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11172 this._proportionallyResize();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11173 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11174
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11175 this._setupHandles();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11176
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11177 if ( o.autoHide ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11178 $( this.element )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11179 .on( "mouseenter", function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11180 if ( o.disabled ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11181 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11182 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11183 that._removeClass( "ui-resizable-autohide" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11184 that._handles.show();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11185 } )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11186 .on( "mouseleave", function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11187 if ( o.disabled ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11188 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11189 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11190 if ( !that.resizing ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11191 that._addClass( "ui-resizable-autohide" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11192 that._handles.hide();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11193 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11194 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11195 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11196
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11197 this._mouseInit();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11198 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11199
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11200 _destroy: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11201
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11202 this._mouseDestroy();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11203 this._addedHandles.remove();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11204
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11205 var wrapper,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11206 _destroy = function( exp ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11207 $( exp )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11208 .removeData( "resizable" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11209 .removeData( "ui-resizable" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11210 .off( ".resizable" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11211 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11212
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11213 // TODO: Unwrap at same DOM position
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11214 if ( this.elementIsWrapper ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11215 _destroy( this.element );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11216 wrapper = this.element;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11217 this.originalElement.css( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11218 position: wrapper.css( "position" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11219 width: wrapper.outerWidth(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11220 height: wrapper.outerHeight(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11221 top: wrapper.css( "top" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11222 left: wrapper.css( "left" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11223 } ).insertAfter( wrapper );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11224 wrapper.remove();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11225 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11226
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11227 this.originalElement.css( "resize", this.originalResizeStyle );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11228 _destroy( this.originalElement );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11229
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11230 return this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11231 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11232
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11233 _setOption: function( key, value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11234 this._super( key, value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11235
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11236 switch ( key ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11237 case "handles":
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11238 this._removeHandles();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11239 this._setupHandles();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11240 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11241 case "aspectRatio":
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11242 this._aspectRatio = !!value;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11243 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11244 default:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11245 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11246 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11247 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11248
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11249 _setupHandles: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11250 var o = this.options, handle, i, n, hname, axis, that = this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11251 this.handles = o.handles ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11252 ( !$( ".ui-resizable-handle", this.element ).length ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11253 "e,s,se" : {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11254 n: ".ui-resizable-n",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11255 e: ".ui-resizable-e",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11256 s: ".ui-resizable-s",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11257 w: ".ui-resizable-w",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11258 se: ".ui-resizable-se",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11259 sw: ".ui-resizable-sw",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11260 ne: ".ui-resizable-ne",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11261 nw: ".ui-resizable-nw"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11262 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11263
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11264 this._handles = $();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11265 this._addedHandles = $();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11266 if ( this.handles.constructor === String ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11267
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11268 if ( this.handles === "all" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11269 this.handles = "n,e,s,w,se,sw,ne,nw";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11270 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11271
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11272 n = this.handles.split( "," );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11273 this.handles = {};
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11274
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11275 for ( i = 0; i < n.length; i++ ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11276
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11277 handle = String.prototype.trim.call( n[ i ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11278 hname = "ui-resizable-" + handle;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11279 axis = $( "<div>" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11280 this._addClass( axis, "ui-resizable-handle " + hname );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11281
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11282 axis.css( { zIndex: o.zIndex } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11283
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11284 this.handles[ handle ] = ".ui-resizable-" + handle;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11285 if ( !this.element.children( this.handles[ handle ] ).length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11286 this.element.append( axis );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11287 this._addedHandles = this._addedHandles.add( axis );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11288 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11289 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11290
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11291 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11292
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11293 this._renderAxis = function( target ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11294
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11295 var i, axis, padPos, padWrapper;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11296
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11297 target = target || this.element;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11298
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11299 for ( i in this.handles ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11300
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11301 if ( this.handles[ i ].constructor === String ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11302 this.handles[ i ] = this.element.children( this.handles[ i ] ).first().show();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11303 } else if ( this.handles[ i ].jquery || this.handles[ i ].nodeType ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11304 this.handles[ i ] = $( this.handles[ i ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11305 this._on( this.handles[ i ], { "mousedown": that._mouseDown } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11306 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11307
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11308 if ( this.elementIsWrapper &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11309 this.originalElement[ 0 ]
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11310 .nodeName
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11311 .match( /^(textarea|input|select|button)$/i ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11312 axis = $( this.handles[ i ], this.element );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11313
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11314 padWrapper = /sw|ne|nw|se|n|s/.test( i ) ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11315 axis.outerHeight() :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11316 axis.outerWidth();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11317
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11318 padPos = [ "padding",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11319 /ne|nw|n/.test( i ) ? "Top" :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11320 /se|sw|s/.test( i ) ? "Bottom" :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11321 /^e$/.test( i ) ? "Right" : "Left" ].join( "" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11322
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11323 target.css( padPos, padWrapper );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11324
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11325 this._proportionallyResize();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11326 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11327
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11328 this._handles = this._handles.add( this.handles[ i ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11329 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11330 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11331
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11332 // TODO: make renderAxis a prototype function
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11333 this._renderAxis( this.element );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11334
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11335 this._handles = this._handles.add( this.element.find( ".ui-resizable-handle" ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11336 this._handles.disableSelection();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11337
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11338 this._handles.on( "mouseover", function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11339 if ( !that.resizing ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11340 if ( this.className ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11341 axis = this.className.match( /ui-resizable-(se|sw|ne|nw|n|e|s|w)/i );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11342 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11343 that.axis = axis && axis[ 1 ] ? axis[ 1 ] : "se";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11344 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11345 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11346
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11347 if ( o.autoHide ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11348 this._handles.hide();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11349 this._addClass( "ui-resizable-autohide" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11350 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11351 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11352
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11353 _removeHandles: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11354 this._addedHandles.remove();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11355 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11356
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11357 _mouseCapture: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11358 var i, handle,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11359 capture = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11360
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11361 for ( i in this.handles ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11362 handle = $( this.handles[ i ] )[ 0 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11363 if ( handle === event.target || $.contains( handle, event.target ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11364 capture = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11365 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11366 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11367
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11368 return !this.options.disabled && capture;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11369 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11370
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11371 _mouseStart: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11372
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11373 var curleft, curtop, cursor,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11374 o = this.options,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11375 el = this.element;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11376
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11377 this.resizing = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11378
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11379 this._renderProxy();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11380
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11381 curleft = this._num( this.helper.css( "left" ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11382 curtop = this._num( this.helper.css( "top" ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11383
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11384 if ( o.containment ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11385 curleft += $( o.containment ).scrollLeft() || 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11386 curtop += $( o.containment ).scrollTop() || 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11387 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11388
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11389 this.offset = this.helper.offset();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11390 this.position = { left: curleft, top: curtop };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11391
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11392 this.size = this._helper ? {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11393 width: this.helper.width(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11394 height: this.helper.height()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11395 } : {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11396 width: el.width(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11397 height: el.height()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11398 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11399
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11400 this.originalSize = this._helper ? {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11401 width: el.outerWidth(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11402 height: el.outerHeight()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11403 } : {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11404 width: el.width(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11405 height: el.height()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11406 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11407
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11408 this.sizeDiff = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11409 width: el.outerWidth() - el.width(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11410 height: el.outerHeight() - el.height()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11411 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11412
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11413 this.originalPosition = { left: curleft, top: curtop };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11414 this.originalMousePosition = { left: event.pageX, top: event.pageY };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11415
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11416 this.aspectRatio = ( typeof o.aspectRatio === "number" ) ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11417 o.aspectRatio :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11418 ( ( this.originalSize.width / this.originalSize.height ) || 1 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11419
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11420 cursor = $( ".ui-resizable-" + this.axis ).css( "cursor" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11421 $( "body" ).css( "cursor", cursor === "auto" ? this.axis + "-resize" : cursor );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11422
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11423 this._addClass( "ui-resizable-resizing" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11424 this._propagate( "start", event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11425 return true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11426 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11427
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11428 _mouseDrag: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11429
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11430 var data, props,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11431 smp = this.originalMousePosition,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11432 a = this.axis,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11433 dx = ( event.pageX - smp.left ) || 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11434 dy = ( event.pageY - smp.top ) || 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11435 trigger = this._change[ a ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11436
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11437 this._updatePrevProperties();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11438
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11439 if ( !trigger ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11440 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11441 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11442
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11443 data = trigger.apply( this, [ event, dx, dy ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11444
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11445 this._updateVirtualBoundaries( event.shiftKey );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11446 if ( this._aspectRatio || event.shiftKey ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11447 data = this._updateRatio( data, event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11448 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11449
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11450 data = this._respectSize( data, event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11451
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11452 this._updateCache( data );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11453
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11454 this._propagate( "resize", event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11455
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11456 props = this._applyChanges();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11457
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11458 if ( !this._helper && this._proportionallyResizeElements.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11459 this._proportionallyResize();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11460 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11461
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11462 if ( !$.isEmptyObject( props ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11463 this._updatePrevProperties();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11464 this._trigger( "resize", event, this.ui() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11465 this._applyChanges();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11466 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11467
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11468 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11469 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11470
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11471 _mouseStop: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11472
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11473 this.resizing = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11474 var pr, ista, soffseth, soffsetw, s, left, top,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11475 o = this.options, that = this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11476
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11477 if ( this._helper ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11478
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11479 pr = this._proportionallyResizeElements;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11480 ista = pr.length && ( /textarea/i ).test( pr[ 0 ].nodeName );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11481 soffseth = ista && this._hasScroll( pr[ 0 ], "left" ) ? 0 : that.sizeDiff.height;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11482 soffsetw = ista ? 0 : that.sizeDiff.width;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11483
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11484 s = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11485 width: ( that.helper.width() - soffsetw ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11486 height: ( that.helper.height() - soffseth )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11487 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11488 left = ( parseFloat( that.element.css( "left" ) ) +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11489 ( that.position.left - that.originalPosition.left ) ) || null;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11490 top = ( parseFloat( that.element.css( "top" ) ) +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11491 ( that.position.top - that.originalPosition.top ) ) || null;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11492
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11493 if ( !o.animate ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11494 this.element.css( $.extend( s, { top: top, left: left } ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11495 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11496
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11497 that.helper.height( that.size.height );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11498 that.helper.width( that.size.width );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11499
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11500 if ( this._helper && !o.animate ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11501 this._proportionallyResize();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11502 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11503 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11504
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11505 $( "body" ).css( "cursor", "auto" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11506
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11507 this._removeClass( "ui-resizable-resizing" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11508
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11509 this._propagate( "stop", event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11510
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11511 if ( this._helper ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11512 this.helper.remove();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11513 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11514
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11515 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11516
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11517 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11518
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11519 _updatePrevProperties: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11520 this.prevPosition = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11521 top: this.position.top,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11522 left: this.position.left
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11523 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11524 this.prevSize = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11525 width: this.size.width,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11526 height: this.size.height
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11527 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11528 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11529
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11530 _applyChanges: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11531 var props = {};
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11532
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11533 if ( this.position.top !== this.prevPosition.top ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11534 props.top = this.position.top + "px";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11535 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11536 if ( this.position.left !== this.prevPosition.left ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11537 props.left = this.position.left + "px";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11538 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11539 if ( this.size.width !== this.prevSize.width ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11540 props.width = this.size.width + "px";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11541 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11542 if ( this.size.height !== this.prevSize.height ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11543 props.height = this.size.height + "px";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11544 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11545
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11546 this.helper.css( props );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11547
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11548 return props;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11549 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11550
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11551 _updateVirtualBoundaries: function( forceAspectRatio ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11552 var pMinWidth, pMaxWidth, pMinHeight, pMaxHeight, b,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11553 o = this.options;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11554
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11555 b = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11556 minWidth: this._isNumber( o.minWidth ) ? o.minWidth : 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11557 maxWidth: this._isNumber( o.maxWidth ) ? o.maxWidth : Infinity,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11558 minHeight: this._isNumber( o.minHeight ) ? o.minHeight : 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11559 maxHeight: this._isNumber( o.maxHeight ) ? o.maxHeight : Infinity
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11560 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11561
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11562 if ( this._aspectRatio || forceAspectRatio ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11563 pMinWidth = b.minHeight * this.aspectRatio;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11564 pMinHeight = b.minWidth / this.aspectRatio;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11565 pMaxWidth = b.maxHeight * this.aspectRatio;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11566 pMaxHeight = b.maxWidth / this.aspectRatio;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11567
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11568 if ( pMinWidth > b.minWidth ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11569 b.minWidth = pMinWidth;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11570 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11571 if ( pMinHeight > b.minHeight ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11572 b.minHeight = pMinHeight;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11573 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11574 if ( pMaxWidth < b.maxWidth ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11575 b.maxWidth = pMaxWidth;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11576 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11577 if ( pMaxHeight < b.maxHeight ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11578 b.maxHeight = pMaxHeight;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11579 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11580 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11581 this._vBoundaries = b;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11582 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11583
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11584 _updateCache: function( data ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11585 this.offset = this.helper.offset();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11586 if ( this._isNumber( data.left ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11587 this.position.left = data.left;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11588 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11589 if ( this._isNumber( data.top ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11590 this.position.top = data.top;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11591 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11592 if ( this._isNumber( data.height ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11593 this.size.height = data.height;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11594 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11595 if ( this._isNumber( data.width ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11596 this.size.width = data.width;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11597 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11598 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11599
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11600 _updateRatio: function( data ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11601
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11602 var cpos = this.position,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11603 csize = this.size,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11604 a = this.axis;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11605
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11606 if ( this._isNumber( data.height ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11607 data.width = ( data.height * this.aspectRatio );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11608 } else if ( this._isNumber( data.width ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11609 data.height = ( data.width / this.aspectRatio );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11610 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11611
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11612 if ( a === "sw" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11613 data.left = cpos.left + ( csize.width - data.width );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11614 data.top = null;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11615 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11616 if ( a === "nw" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11617 data.top = cpos.top + ( csize.height - data.height );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11618 data.left = cpos.left + ( csize.width - data.width );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11619 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11620
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11621 return data;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11622 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11623
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11624 _respectSize: function( data ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11625
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11626 var o = this._vBoundaries,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11627 a = this.axis,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11628 ismaxw = this._isNumber( data.width ) && o.maxWidth && ( o.maxWidth < data.width ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11629 ismaxh = this._isNumber( data.height ) && o.maxHeight && ( o.maxHeight < data.height ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11630 isminw = this._isNumber( data.width ) && o.minWidth && ( o.minWidth > data.width ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11631 isminh = this._isNumber( data.height ) && o.minHeight && ( o.minHeight > data.height ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11632 dw = this.originalPosition.left + this.originalSize.width,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11633 dh = this.originalPosition.top + this.originalSize.height,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11634 cw = /sw|nw|w/.test( a ), ch = /nw|ne|n/.test( a );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11635 if ( isminw ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11636 data.width = o.minWidth;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11637 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11638 if ( isminh ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11639 data.height = o.minHeight;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11640 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11641 if ( ismaxw ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11642 data.width = o.maxWidth;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11643 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11644 if ( ismaxh ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11645 data.height = o.maxHeight;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11646 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11647
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11648 if ( isminw && cw ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11649 data.left = dw - o.minWidth;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11650 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11651 if ( ismaxw && cw ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11652 data.left = dw - o.maxWidth;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11653 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11654 if ( isminh && ch ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11655 data.top = dh - o.minHeight;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11656 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11657 if ( ismaxh && ch ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11658 data.top = dh - o.maxHeight;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11659 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11660
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11661 // Fixing jump error on top/left - bug #2330
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11662 if ( !data.width && !data.height && !data.left && data.top ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11663 data.top = null;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11664 } else if ( !data.width && !data.height && !data.top && data.left ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11665 data.left = null;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11666 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11667
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11668 return data;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11669 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11670
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11671 _getPaddingPlusBorderDimensions: function( element ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11672 var i = 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11673 widths = [],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11674 borders = [
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11675 element.css( "borderTopWidth" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11676 element.css( "borderRightWidth" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11677 element.css( "borderBottomWidth" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11678 element.css( "borderLeftWidth" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11679 ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11680 paddings = [
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11681 element.css( "paddingTop" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11682 element.css( "paddingRight" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11683 element.css( "paddingBottom" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11684 element.css( "paddingLeft" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11685 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11686
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11687 for ( ; i < 4; i++ ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11688 widths[ i ] = ( parseFloat( borders[ i ] ) || 0 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11689 widths[ i ] += ( parseFloat( paddings[ i ] ) || 0 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11690 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11691
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11692 return {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11693 height: widths[ 0 ] + widths[ 2 ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11694 width: widths[ 1 ] + widths[ 3 ]
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11695 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11696 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11697
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11698 _proportionallyResize: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11699
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11700 if ( !this._proportionallyResizeElements.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11701 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11702 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11703
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11704 var prel,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11705 i = 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11706 element = this.helper || this.element;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11707
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11708 for ( ; i < this._proportionallyResizeElements.length; i++ ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11709
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11710 prel = this._proportionallyResizeElements[ i ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11711
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11712 // TODO: Seems like a bug to cache this.outerDimensions
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11713 // considering that we are in a loop.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11714 if ( !this.outerDimensions ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11715 this.outerDimensions = this._getPaddingPlusBorderDimensions( prel );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11716 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11717
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11718 prel.css( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11719 height: ( element.height() - this.outerDimensions.height ) || 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11720 width: ( element.width() - this.outerDimensions.width ) || 0
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11721 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11722
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11723 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11724
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11725 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11726
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11727 _renderProxy: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11728
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11729 var el = this.element, o = this.options;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11730 this.elementOffset = el.offset();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11731
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11732 if ( this._helper ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11733
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11734 this.helper = this.helper || $( "<div></div>" ).css( { overflow: "hidden" } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11735
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11736 this._addClass( this.helper, this._helper );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11737 this.helper.css( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11738 width: this.element.outerWidth(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11739 height: this.element.outerHeight(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11740 position: "absolute",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11741 left: this.elementOffset.left + "px",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11742 top: this.elementOffset.top + "px",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11743 zIndex: ++o.zIndex //TODO: Don't modify option
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11744 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11745
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11746 this.helper
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11747 .appendTo( "body" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11748 .disableSelection();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11749
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11750 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11751 this.helper = this.element;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11752 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11753
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11754 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11755
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11756 _change: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11757 e: function( event, dx ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11758 return { width: this.originalSize.width + dx };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11759 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11760 w: function( event, dx ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11761 var cs = this.originalSize, sp = this.originalPosition;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11762 return { left: sp.left + dx, width: cs.width - dx };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11763 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11764 n: function( event, dx, dy ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11765 var cs = this.originalSize, sp = this.originalPosition;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11766 return { top: sp.top + dy, height: cs.height - dy };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11767 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11768 s: function( event, dx, dy ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11769 return { height: this.originalSize.height + dy };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11770 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11771 se: function( event, dx, dy ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11772 return $.extend( this._change.s.apply( this, arguments ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11773 this._change.e.apply( this, [ event, dx, dy ] ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11774 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11775 sw: function( event, dx, dy ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11776 return $.extend( this._change.s.apply( this, arguments ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11777 this._change.w.apply( this, [ event, dx, dy ] ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11778 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11779 ne: function( event, dx, dy ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11780 return $.extend( this._change.n.apply( this, arguments ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11781 this._change.e.apply( this, [ event, dx, dy ] ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11782 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11783 nw: function( event, dx, dy ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11784 return $.extend( this._change.n.apply( this, arguments ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11785 this._change.w.apply( this, [ event, dx, dy ] ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11786 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11787 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11788
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11789 _propagate: function( n, event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11790 $.ui.plugin.call( this, n, [ event, this.ui() ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11791 if ( n !== "resize" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11792 this._trigger( n, event, this.ui() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11793 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11794 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11795
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11796 plugins: {},
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11797
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11798 ui: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11799 return {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11800 originalElement: this.originalElement,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11801 element: this.element,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11802 helper: this.helper,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11803 position: this.position,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11804 size: this.size,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11805 originalSize: this.originalSize,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11806 originalPosition: this.originalPosition
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11807 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11808 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11809
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11810 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11811
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11812 /*
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11813 * Resizable Extensions
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11814 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11815
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11816 $.ui.plugin.add( "resizable", "animate", {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11817
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11818 stop: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11819 var that = $( this ).resizable( "instance" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11820 o = that.options,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11821 pr = that._proportionallyResizeElements,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11822 ista = pr.length && ( /textarea/i ).test( pr[ 0 ].nodeName ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11823 soffseth = ista && that._hasScroll( pr[ 0 ], "left" ) ? 0 : that.sizeDiff.height,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11824 soffsetw = ista ? 0 : that.sizeDiff.width,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11825 style = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11826 width: ( that.size.width - soffsetw ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11827 height: ( that.size.height - soffseth )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11828 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11829 left = ( parseFloat( that.element.css( "left" ) ) +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11830 ( that.position.left - that.originalPosition.left ) ) || null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11831 top = ( parseFloat( that.element.css( "top" ) ) +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11832 ( that.position.top - that.originalPosition.top ) ) || null;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11833
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11834 that.element.animate(
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11835 $.extend( style, top && left ? { top: top, left: left } : {} ), {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11836 duration: o.animateDuration,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11837 easing: o.animateEasing,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11838 step: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11839
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11840 var data = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11841 width: parseFloat( that.element.css( "width" ) ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11842 height: parseFloat( that.element.css( "height" ) ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11843 top: parseFloat( that.element.css( "top" ) ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11844 left: parseFloat( that.element.css( "left" ) )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11845 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11846
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11847 if ( pr && pr.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11848 $( pr[ 0 ] ).css( { width: data.width, height: data.height } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11849 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11850
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11851 // Propagating resize, and updating values for each animation step
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11852 that._updateCache( data );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11853 that._propagate( "resize", event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11854
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11855 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11856 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11857 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11858 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11859
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11860 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11861
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11862 $.ui.plugin.add( "resizable", "containment", {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11863
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11864 start: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11865 var element, p, co, ch, cw, width, height,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11866 that = $( this ).resizable( "instance" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11867 o = that.options,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11868 el = that.element,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11869 oc = o.containment,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11870 ce = ( oc instanceof $ ) ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11871 oc.get( 0 ) :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11872 ( /parent/.test( oc ) ) ? el.parent().get( 0 ) : oc;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11873
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11874 if ( !ce ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11875 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11876 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11877
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11878 that.containerElement = $( ce );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11879
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11880 if ( /document/.test( oc ) || oc === document ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11881 that.containerOffset = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11882 left: 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11883 top: 0
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11884 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11885 that.containerPosition = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11886 left: 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11887 top: 0
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11888 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11889
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11890 that.parentData = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11891 element: $( document ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11892 left: 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11893 top: 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11894 width: $( document ).width(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11895 height: $( document ).height() || document.body.parentNode.scrollHeight
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11896 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11897 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11898 element = $( ce );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11899 p = [];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11900 $( [ "Top", "Right", "Left", "Bottom" ] ).each( function( i, name ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11901 p[ i ] = that._num( element.css( "padding" + name ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11902 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11903
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11904 that.containerOffset = element.offset();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11905 that.containerPosition = element.position();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11906 that.containerSize = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11907 height: ( element.innerHeight() - p[ 3 ] ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11908 width: ( element.innerWidth() - p[ 1 ] )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11909 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11910
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11911 co = that.containerOffset;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11912 ch = that.containerSize.height;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11913 cw = that.containerSize.width;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11914 width = ( that._hasScroll( ce, "left" ) ? ce.scrollWidth : cw );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11915 height = ( that._hasScroll( ce ) ? ce.scrollHeight : ch );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11916
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11917 that.parentData = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11918 element: ce,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11919 left: co.left,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11920 top: co.top,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11921 width: width,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11922 height: height
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11923 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11924 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11925 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11926
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11927 resize: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11928 var woset, hoset, isParent, isOffsetRelative,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11929 that = $( this ).resizable( "instance" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11930 o = that.options,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11931 co = that.containerOffset,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11932 cp = that.position,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11933 pRatio = that._aspectRatio || event.shiftKey,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11934 cop = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11935 top: 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11936 left: 0
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11937 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11938 ce = that.containerElement,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11939 continueResize = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11940
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11941 if ( ce[ 0 ] !== document && ( /static/ ).test( ce.css( "position" ) ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11942 cop = co;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11943 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11944
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11945 if ( cp.left < ( that._helper ? co.left : 0 ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11946 that.size.width = that.size.width +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11947 ( that._helper ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11948 ( that.position.left - co.left ) :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11949 ( that.position.left - cop.left ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11950
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11951 if ( pRatio ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11952 that.size.height = that.size.width / that.aspectRatio;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11953 continueResize = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11954 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11955 that.position.left = o.helper ? co.left : 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11956 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11957
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11958 if ( cp.top < ( that._helper ? co.top : 0 ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11959 that.size.height = that.size.height +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11960 ( that._helper ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11961 ( that.position.top - co.top ) :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11962 that.position.top );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11963
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11964 if ( pRatio ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11965 that.size.width = that.size.height * that.aspectRatio;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11966 continueResize = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11967 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11968 that.position.top = that._helper ? co.top : 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11969 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11970
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11971 isParent = that.containerElement.get( 0 ) === that.element.parent().get( 0 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11972 isOffsetRelative = /relative|absolute/.test( that.containerElement.css( "position" ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11973
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11974 if ( isParent && isOffsetRelative ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11975 that.offset.left = that.parentData.left + that.position.left;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11976 that.offset.top = that.parentData.top + that.position.top;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11977 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11978 that.offset.left = that.element.offset().left;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11979 that.offset.top = that.element.offset().top;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11980 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11981
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11982 woset = Math.abs( that.sizeDiff.width +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11983 ( that._helper ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11984 that.offset.left - cop.left :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11985 ( that.offset.left - co.left ) ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11986
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11987 hoset = Math.abs( that.sizeDiff.height +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11988 ( that._helper ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11989 that.offset.top - cop.top :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11990 ( that.offset.top - co.top ) ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11991
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11992 if ( woset + that.size.width >= that.parentData.width ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11993 that.size.width = that.parentData.width - woset;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11994 if ( pRatio ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11995 that.size.height = that.size.width / that.aspectRatio;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11996 continueResize = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11997 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11998 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
11999
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12000 if ( hoset + that.size.height >= that.parentData.height ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12001 that.size.height = that.parentData.height - hoset;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12002 if ( pRatio ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12003 that.size.width = that.size.height * that.aspectRatio;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12004 continueResize = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12005 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12006 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12007
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12008 if ( !continueResize ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12009 that.position.left = that.prevPosition.left;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12010 that.position.top = that.prevPosition.top;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12011 that.size.width = that.prevSize.width;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12012 that.size.height = that.prevSize.height;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12013 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12014 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12015
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12016 stop: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12017 var that = $( this ).resizable( "instance" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12018 o = that.options,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12019 co = that.containerOffset,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12020 cop = that.containerPosition,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12021 ce = that.containerElement,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12022 helper = $( that.helper ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12023 ho = helper.offset(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12024 w = helper.outerWidth() - that.sizeDiff.width,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12025 h = helper.outerHeight() - that.sizeDiff.height;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12026
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12027 if ( that._helper && !o.animate && ( /relative/ ).test( ce.css( "position" ) ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12028 $( this ).css( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12029 left: ho.left - cop.left - co.left,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12030 width: w,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12031 height: h
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12032 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12033 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12034
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12035 if ( that._helper && !o.animate && ( /static/ ).test( ce.css( "position" ) ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12036 $( this ).css( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12037 left: ho.left - cop.left - co.left,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12038 width: w,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12039 height: h
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12040 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12041 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12042 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12043 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12044
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12045 $.ui.plugin.add( "resizable", "alsoResize", {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12046
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12047 start: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12048 var that = $( this ).resizable( "instance" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12049 o = that.options;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12050
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12051 $( o.alsoResize ).each( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12052 var el = $( this );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12053 el.data( "ui-resizable-alsoresize", {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12054 width: parseFloat( el.width() ), height: parseFloat( el.height() ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12055 left: parseFloat( el.css( "left" ) ), top: parseFloat( el.css( "top" ) )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12056 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12057 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12058 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12059
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12060 resize: function( event, ui ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12061 var that = $( this ).resizable( "instance" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12062 o = that.options,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12063 os = that.originalSize,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12064 op = that.originalPosition,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12065 delta = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12066 height: ( that.size.height - os.height ) || 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12067 width: ( that.size.width - os.width ) || 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12068 top: ( that.position.top - op.top ) || 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12069 left: ( that.position.left - op.left ) || 0
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12070 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12071
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12072 $( o.alsoResize ).each( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12073 var el = $( this ), start = $( this ).data( "ui-resizable-alsoresize" ), style = {},
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12074 css = el.parents( ui.originalElement[ 0 ] ).length ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12075 [ "width", "height" ] :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12076 [ "width", "height", "top", "left" ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12077
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12078 $.each( css, function( i, prop ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12079 var sum = ( start[ prop ] || 0 ) + ( delta[ prop ] || 0 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12080 if ( sum && sum >= 0 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12081 style[ prop ] = sum || null;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12082 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12083 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12084
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12085 el.css( style );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12086 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12087 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12088
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12089 stop: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12090 $( this ).removeData( "ui-resizable-alsoresize" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12091 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12092 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12093
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12094 $.ui.plugin.add( "resizable", "ghost", {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12095
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12096 start: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12097
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12098 var that = $( this ).resizable( "instance" ), cs = that.size;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12099
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12100 that.ghost = that.originalElement.clone();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12101 that.ghost.css( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12102 opacity: 0.25,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12103 display: "block",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12104 position: "relative",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12105 height: cs.height,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12106 width: cs.width,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12107 margin: 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12108 left: 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12109 top: 0
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12110 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12111
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12112 that._addClass( that.ghost, "ui-resizable-ghost" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12113
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12114 // DEPRECATED
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12115 // TODO: remove after 1.12
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12116 if ( $.uiBackCompat !== false && typeof that.options.ghost === "string" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12117
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12118 // Ghost option
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12119 that.ghost.addClass( this.options.ghost );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12120 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12121
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12122 that.ghost.appendTo( that.helper );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12123
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12124 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12125
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12126 resize: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12127 var that = $( this ).resizable( "instance" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12128 if ( that.ghost ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12129 that.ghost.css( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12130 position: "relative",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12131 height: that.size.height,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12132 width: that.size.width
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12133 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12134 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12135 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12136
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12137 stop: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12138 var that = $( this ).resizable( "instance" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12139 if ( that.ghost && that.helper ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12140 that.helper.get( 0 ).removeChild( that.ghost.get( 0 ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12141 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12142 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12143
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12144 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12145
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12146 $.ui.plugin.add( "resizable", "grid", {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12147
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12148 resize: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12149 var outerDimensions,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12150 that = $( this ).resizable( "instance" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12151 o = that.options,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12152 cs = that.size,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12153 os = that.originalSize,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12154 op = that.originalPosition,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12155 a = that.axis,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12156 grid = typeof o.grid === "number" ? [ o.grid, o.grid ] : o.grid,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12157 gridX = ( grid[ 0 ] || 1 ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12158 gridY = ( grid[ 1 ] || 1 ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12159 ox = Math.round( ( cs.width - os.width ) / gridX ) * gridX,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12160 oy = Math.round( ( cs.height - os.height ) / gridY ) * gridY,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12161 newWidth = os.width + ox,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12162 newHeight = os.height + oy,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12163 isMaxWidth = o.maxWidth && ( o.maxWidth < newWidth ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12164 isMaxHeight = o.maxHeight && ( o.maxHeight < newHeight ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12165 isMinWidth = o.minWidth && ( o.minWidth > newWidth ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12166 isMinHeight = o.minHeight && ( o.minHeight > newHeight );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12167
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12168 o.grid = grid;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12169
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12170 if ( isMinWidth ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12171 newWidth += gridX;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12172 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12173 if ( isMinHeight ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12174 newHeight += gridY;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12175 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12176 if ( isMaxWidth ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12177 newWidth -= gridX;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12178 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12179 if ( isMaxHeight ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12180 newHeight -= gridY;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12181 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12182
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12183 if ( /^(se|s|e)$/.test( a ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12184 that.size.width = newWidth;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12185 that.size.height = newHeight;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12186 } else if ( /^(ne)$/.test( a ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12187 that.size.width = newWidth;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12188 that.size.height = newHeight;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12189 that.position.top = op.top - oy;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12190 } else if ( /^(sw)$/.test( a ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12191 that.size.width = newWidth;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12192 that.size.height = newHeight;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12193 that.position.left = op.left - ox;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12194 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12195 if ( newHeight - gridY <= 0 || newWidth - gridX <= 0 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12196 outerDimensions = that._getPaddingPlusBorderDimensions( this );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12197 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12198
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12199 if ( newHeight - gridY > 0 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12200 that.size.height = newHeight;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12201 that.position.top = op.top - oy;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12202 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12203 newHeight = gridY - outerDimensions.height;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12204 that.size.height = newHeight;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12205 that.position.top = op.top + os.height - newHeight;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12206 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12207 if ( newWidth - gridX > 0 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12208 that.size.width = newWidth;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12209 that.position.left = op.left - ox;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12210 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12211 newWidth = gridX - outerDimensions.width;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12212 that.size.width = newWidth;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12213 that.position.left = op.left + os.width - newWidth;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12214 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12215 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12216 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12217
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12218 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12219
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12220 var widgetsResizable = $.ui.resizable;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12221
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12222
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12223 /*!
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12224 * jQuery UI Dialog 1.13.2
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12225 * http://jqueryui.com
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12226 *
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12227 * Copyright jQuery Foundation and other contributors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12228 * Released under the MIT license.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12229 * http://jquery.org/license
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12230 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12231
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12232 //>>label: Dialog
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12233 //>>group: Widgets
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12234 //>>description: Displays customizable dialog windows.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12235 //>>docs: http://api.jqueryui.com/dialog/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12236 //>>demos: http://jqueryui.com/dialog/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12237 //>>css.structure: ../../themes/base/core.css
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12238 //>>css.structure: ../../themes/base/dialog.css
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12239 //>>css.theme: ../../themes/base/theme.css
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12240
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12241
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12242 $.widget( "ui.dialog", {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12243 version: "1.13.2",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12244 options: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12245 appendTo: "body",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12246 autoOpen: true,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12247 buttons: [],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12248 classes: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12249 "ui-dialog": "ui-corner-all",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12250 "ui-dialog-titlebar": "ui-corner-all"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12251 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12252 closeOnEscape: true,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12253 closeText: "Close",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12254 draggable: true,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12255 hide: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12256 height: "auto",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12257 maxHeight: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12258 maxWidth: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12259 minHeight: 150,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12260 minWidth: 150,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12261 modal: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12262 position: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12263 my: "center",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12264 at: "center",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12265 of: window,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12266 collision: "fit",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12267
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12268 // Ensure the titlebar is always visible
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12269 using: function( pos ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12270 var topOffset = $( this ).css( pos ).offset().top;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12271 if ( topOffset < 0 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12272 $( this ).css( "top", pos.top - topOffset );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12273 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12274 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12275 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12276 resizable: true,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12277 show: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12278 title: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12279 width: 300,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12280
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12281 // Callbacks
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12282 beforeClose: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12283 close: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12284 drag: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12285 dragStart: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12286 dragStop: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12287 focus: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12288 open: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12289 resize: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12290 resizeStart: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12291 resizeStop: null
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12292 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12293
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12294 sizeRelatedOptions: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12295 buttons: true,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12296 height: true,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12297 maxHeight: true,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12298 maxWidth: true,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12299 minHeight: true,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12300 minWidth: true,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12301 width: true
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12302 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12303
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12304 resizableRelatedOptions: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12305 maxHeight: true,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12306 maxWidth: true,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12307 minHeight: true,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12308 minWidth: true
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12309 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12310
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12311 _create: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12312 this.originalCss = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12313 display: this.element[ 0 ].style.display,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12314 width: this.element[ 0 ].style.width,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12315 minHeight: this.element[ 0 ].style.minHeight,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12316 maxHeight: this.element[ 0 ].style.maxHeight,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12317 height: this.element[ 0 ].style.height
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12318 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12319 this.originalPosition = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12320 parent: this.element.parent(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12321 index: this.element.parent().children().index( this.element )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12322 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12323 this.originalTitle = this.element.attr( "title" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12324 if ( this.options.title == null && this.originalTitle != null ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12325 this.options.title = this.originalTitle;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12326 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12327
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12328 // Dialogs can't be disabled
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12329 if ( this.options.disabled ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12330 this.options.disabled = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12331 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12332
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12333 this._createWrapper();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12334
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12335 this.element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12336 .show()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12337 .removeAttr( "title" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12338 .appendTo( this.uiDialog );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12339
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12340 this._addClass( "ui-dialog-content", "ui-widget-content" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12341
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12342 this._createTitlebar();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12343 this._createButtonPane();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12344
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12345 if ( this.options.draggable && $.fn.draggable ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12346 this._makeDraggable();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12347 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12348 if ( this.options.resizable && $.fn.resizable ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12349 this._makeResizable();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12350 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12351
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12352 this._isOpen = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12353
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12354 this._trackFocus();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12355 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12356
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12357 _init: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12358 if ( this.options.autoOpen ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12359 this.open();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12360 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12361 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12362
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12363 _appendTo: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12364 var element = this.options.appendTo;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12365 if ( element && ( element.jquery || element.nodeType ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12366 return $( element );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12367 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12368 return this.document.find( element || "body" ).eq( 0 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12369 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12370
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12371 _destroy: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12372 var next,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12373 originalPosition = this.originalPosition;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12374
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12375 this._untrackInstance();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12376 this._destroyOverlay();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12377
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12378 this.element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12379 .removeUniqueId()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12380 .css( this.originalCss )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12381
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12382 // Without detaching first, the following becomes really slow
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12383 .detach();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12384
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12385 this.uiDialog.remove();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12386
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12387 if ( this.originalTitle ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12388 this.element.attr( "title", this.originalTitle );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12389 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12390
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12391 next = originalPosition.parent.children().eq( originalPosition.index );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12392
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12393 // Don't try to place the dialog next to itself (#8613)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12394 if ( next.length && next[ 0 ] !== this.element[ 0 ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12395 next.before( this.element );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12396 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12397 originalPosition.parent.append( this.element );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12398 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12399 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12400
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12401 widget: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12402 return this.uiDialog;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12403 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12404
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12405 disable: $.noop,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12406 enable: $.noop,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12407
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12408 close: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12409 var that = this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12410
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12411 if ( !this._isOpen || this._trigger( "beforeClose", event ) === false ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12412 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12413 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12414
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12415 this._isOpen = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12416 this._focusedElement = null;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12417 this._destroyOverlay();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12418 this._untrackInstance();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12419
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12420 if ( !this.opener.filter( ":focusable" ).trigger( "focus" ).length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12421
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12422 // Hiding a focused element doesn't trigger blur in WebKit
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12423 // so in case we have nothing to focus on, explicitly blur the active element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12424 // https://bugs.webkit.org/show_bug.cgi?id=47182
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12425 $.ui.safeBlur( $.ui.safeActiveElement( this.document[ 0 ] ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12426 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12427
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12428 this._hide( this.uiDialog, this.options.hide, function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12429 that._trigger( "close", event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12430 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12431 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12432
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12433 isOpen: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12434 return this._isOpen;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12435 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12436
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12437 moveToTop: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12438 this._moveToTop();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12439 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12440
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12441 _moveToTop: function( event, silent ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12442 var moved = false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12443 zIndices = this.uiDialog.siblings( ".ui-front:visible" ).map( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12444 return +$( this ).css( "z-index" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12445 } ).get(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12446 zIndexMax = Math.max.apply( null, zIndices );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12447
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12448 if ( zIndexMax >= +this.uiDialog.css( "z-index" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12449 this.uiDialog.css( "z-index", zIndexMax + 1 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12450 moved = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12451 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12452
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12453 if ( moved && !silent ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12454 this._trigger( "focus", event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12455 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12456 return moved;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12457 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12458
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12459 open: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12460 var that = this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12461 if ( this._isOpen ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12462 if ( this._moveToTop() ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12463 this._focusTabbable();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12464 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12465 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12466 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12467
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12468 this._isOpen = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12469 this.opener = $( $.ui.safeActiveElement( this.document[ 0 ] ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12470
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12471 this._size();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12472 this._position();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12473 this._createOverlay();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12474 this._moveToTop( null, true );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12475
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12476 // Ensure the overlay is moved to the top with the dialog, but only when
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12477 // opening. The overlay shouldn't move after the dialog is open so that
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12478 // modeless dialogs opened after the modal dialog stack properly.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12479 if ( this.overlay ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12480 this.overlay.css( "z-index", this.uiDialog.css( "z-index" ) - 1 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12481 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12482
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12483 this._show( this.uiDialog, this.options.show, function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12484 that._focusTabbable();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12485 that._trigger( "focus" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12486 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12487
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12488 // Track the dialog immediately upon opening in case a focus event
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12489 // somehow occurs outside of the dialog before an element inside the
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12490 // dialog is focused (#10152)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12491 this._makeFocusTarget();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12492
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12493 this._trigger( "open" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12494 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12495
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12496 _focusTabbable: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12497
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12498 // Set focus to the first match:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12499 // 1. An element that was focused previously
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12500 // 2. First element inside the dialog matching [autofocus]
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12501 // 3. Tabbable element inside the content element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12502 // 4. Tabbable element inside the buttonpane
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12503 // 5. The close button
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12504 // 6. The dialog itself
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12505 var hasFocus = this._focusedElement;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12506 if ( !hasFocus ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12507 hasFocus = this.element.find( "[autofocus]" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12508 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12509 if ( !hasFocus.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12510 hasFocus = this.element.find( ":tabbable" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12511 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12512 if ( !hasFocus.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12513 hasFocus = this.uiDialogButtonPane.find( ":tabbable" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12514 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12515 if ( !hasFocus.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12516 hasFocus = this.uiDialogTitlebarClose.filter( ":tabbable" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12517 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12518 if ( !hasFocus.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12519 hasFocus = this.uiDialog;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12520 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12521 hasFocus.eq( 0 ).trigger( "focus" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12522 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12523
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12524 _restoreTabbableFocus: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12525 var activeElement = $.ui.safeActiveElement( this.document[ 0 ] ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12526 isActive = this.uiDialog[ 0 ] === activeElement ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12527 $.contains( this.uiDialog[ 0 ], activeElement );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12528 if ( !isActive ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12529 this._focusTabbable();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12530 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12531 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12532
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12533 _keepFocus: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12534 event.preventDefault();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12535 this._restoreTabbableFocus();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12536
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12537 // support: IE
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12538 // IE <= 8 doesn't prevent moving focus even with event.preventDefault()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12539 // so we check again later
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12540 this._delay( this._restoreTabbableFocus );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12541 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12542
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12543 _createWrapper: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12544 this.uiDialog = $( "<div>" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12545 .hide()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12546 .attr( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12547
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12548 // Setting tabIndex makes the div focusable
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12549 tabIndex: -1,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12550 role: "dialog"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12551 } )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12552 .appendTo( this._appendTo() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12553
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12554 this._addClass( this.uiDialog, "ui-dialog", "ui-widget ui-widget-content ui-front" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12555 this._on( this.uiDialog, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12556 keydown: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12557 if ( this.options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12558 event.keyCode === $.ui.keyCode.ESCAPE ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12559 event.preventDefault();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12560 this.close( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12561 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12562 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12563
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12564 // Prevent tabbing out of dialogs
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12565 if ( event.keyCode !== $.ui.keyCode.TAB || event.isDefaultPrevented() ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12566 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12567 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12568 var tabbables = this.uiDialog.find( ":tabbable" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12569 first = tabbables.first(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12570 last = tabbables.last();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12571
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12572 if ( ( event.target === last[ 0 ] || event.target === this.uiDialog[ 0 ] ) &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12573 !event.shiftKey ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12574 this._delay( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12575 first.trigger( "focus" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12576 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12577 event.preventDefault();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12578 } else if ( ( event.target === first[ 0 ] ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12579 event.target === this.uiDialog[ 0 ] ) && event.shiftKey ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12580 this._delay( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12581 last.trigger( "focus" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12582 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12583 event.preventDefault();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12584 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12585 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12586 mousedown: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12587 if ( this._moveToTop( event ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12588 this._focusTabbable();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12589 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12590 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12591 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12592
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12593 // We assume that any existing aria-describedby attribute means
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12594 // that the dialog content is marked up properly
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12595 // otherwise we brute force the content as the description
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12596 if ( !this.element.find( "[aria-describedby]" ).length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12597 this.uiDialog.attr( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12598 "aria-describedby": this.element.uniqueId().attr( "id" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12599 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12600 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12601 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12602
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12603 _createTitlebar: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12604 var uiDialogTitle;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12605
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12606 this.uiDialogTitlebar = $( "<div>" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12607 this._addClass( this.uiDialogTitlebar,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12608 "ui-dialog-titlebar", "ui-widget-header ui-helper-clearfix" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12609 this._on( this.uiDialogTitlebar, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12610 mousedown: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12611
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12612 // Don't prevent click on close button (#8838)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12613 // Focusing a dialog that is partially scrolled out of view
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12614 // causes the browser to scroll it into view, preventing the click event
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12615 if ( !$( event.target ).closest( ".ui-dialog-titlebar-close" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12616
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12617 // Dialog isn't getting focus when dragging (#8063)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12618 this.uiDialog.trigger( "focus" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12619 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12620 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12621 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12622
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12623 // Support: IE
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12624 // Use type="button" to prevent enter keypresses in textboxes from closing the
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12625 // dialog in IE (#9312)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12626 this.uiDialogTitlebarClose = $( "<button type='button'></button>" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12627 .button( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12628 label: $( "<a>" ).text( this.options.closeText ).html(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12629 icon: "ui-icon-closethick",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12630 showLabel: false
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12631 } )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12632 .appendTo( this.uiDialogTitlebar );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12633
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12634 this._addClass( this.uiDialogTitlebarClose, "ui-dialog-titlebar-close" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12635 this._on( this.uiDialogTitlebarClose, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12636 click: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12637 event.preventDefault();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12638 this.close( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12639 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12640 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12641
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12642 uiDialogTitle = $( "<span>" ).uniqueId().prependTo( this.uiDialogTitlebar );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12643 this._addClass( uiDialogTitle, "ui-dialog-title" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12644 this._title( uiDialogTitle );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12645
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12646 this.uiDialogTitlebar.prependTo( this.uiDialog );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12647
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12648 this.uiDialog.attr( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12649 "aria-labelledby": uiDialogTitle.attr( "id" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12650 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12651 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12652
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12653 _title: function( title ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12654 if ( this.options.title ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12655 title.text( this.options.title );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12656 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12657 title.html( "&#160;" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12658 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12659 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12660
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12661 _createButtonPane: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12662 this.uiDialogButtonPane = $( "<div>" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12663 this._addClass( this.uiDialogButtonPane, "ui-dialog-buttonpane",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12664 "ui-widget-content ui-helper-clearfix" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12665
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12666 this.uiButtonSet = $( "<div>" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12667 .appendTo( this.uiDialogButtonPane );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12668 this._addClass( this.uiButtonSet, "ui-dialog-buttonset" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12669
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12670 this._createButtons();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12671 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12672
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12673 _createButtons: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12674 var that = this,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12675 buttons = this.options.buttons;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12676
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12677 // If we already have a button pane, remove it
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12678 this.uiDialogButtonPane.remove();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12679 this.uiButtonSet.empty();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12680
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12681 if ( $.isEmptyObject( buttons ) || ( Array.isArray( buttons ) && !buttons.length ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12682 this._removeClass( this.uiDialog, "ui-dialog-buttons" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12683 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12684 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12685
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12686 $.each( buttons, function( name, props ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12687 var click, buttonOptions;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12688 props = typeof props === "function" ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12689 { click: props, text: name } :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12690 props;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12691
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12692 // Default to a non-submitting button
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12693 props = $.extend( { type: "button" }, props );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12694
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12695 // Change the context for the click callback to be the main element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12696 click = props.click;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12697 buttonOptions = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12698 icon: props.icon,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12699 iconPosition: props.iconPosition,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12700 showLabel: props.showLabel,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12701
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12702 // Deprecated options
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12703 icons: props.icons,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12704 text: props.text
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12705 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12706
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12707 delete props.click;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12708 delete props.icon;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12709 delete props.iconPosition;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12710 delete props.showLabel;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12711
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12712 // Deprecated options
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12713 delete props.icons;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12714 if ( typeof props.text === "boolean" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12715 delete props.text;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12716 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12717
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12718 $( "<button></button>", props )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12719 .button( buttonOptions )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12720 .appendTo( that.uiButtonSet )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12721 .on( "click", function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12722 click.apply( that.element[ 0 ], arguments );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12723 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12724 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12725 this._addClass( this.uiDialog, "ui-dialog-buttons" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12726 this.uiDialogButtonPane.appendTo( this.uiDialog );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12727 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12728
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12729 _makeDraggable: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12730 var that = this,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12731 options = this.options;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12732
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12733 function filteredUi( ui ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12734 return {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12735 position: ui.position,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12736 offset: ui.offset
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12737 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12738 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12739
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12740 this.uiDialog.draggable( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12741 cancel: ".ui-dialog-content, .ui-dialog-titlebar-close",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12742 handle: ".ui-dialog-titlebar",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12743 containment: "document",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12744 start: function( event, ui ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12745 that._addClass( $( this ), "ui-dialog-dragging" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12746 that._blockFrames();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12747 that._trigger( "dragStart", event, filteredUi( ui ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12748 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12749 drag: function( event, ui ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12750 that._trigger( "drag", event, filteredUi( ui ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12751 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12752 stop: function( event, ui ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12753 var left = ui.offset.left - that.document.scrollLeft(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12754 top = ui.offset.top - that.document.scrollTop();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12755
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12756 options.position = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12757 my: "left top",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12758 at: "left" + ( left >= 0 ? "+" : "" ) + left + " " +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12759 "top" + ( top >= 0 ? "+" : "" ) + top,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12760 of: that.window
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12761 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12762 that._removeClass( $( this ), "ui-dialog-dragging" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12763 that._unblockFrames();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12764 that._trigger( "dragStop", event, filteredUi( ui ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12765 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12766 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12767 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12768
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12769 _makeResizable: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12770 var that = this,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12771 options = this.options,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12772 handles = options.resizable,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12773
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12774 // .ui-resizable has position: relative defined in the stylesheet
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12775 // but dialogs have to use absolute or fixed positioning
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12776 position = this.uiDialog.css( "position" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12777 resizeHandles = typeof handles === "string" ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12778 handles :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12779 "n,e,s,w,se,sw,ne,nw";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12780
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12781 function filteredUi( ui ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12782 return {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12783 originalPosition: ui.originalPosition,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12784 originalSize: ui.originalSize,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12785 position: ui.position,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12786 size: ui.size
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12787 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12788 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12789
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12790 this.uiDialog.resizable( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12791 cancel: ".ui-dialog-content",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12792 containment: "document",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12793 alsoResize: this.element,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12794 maxWidth: options.maxWidth,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12795 maxHeight: options.maxHeight,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12796 minWidth: options.minWidth,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12797 minHeight: this._minHeight(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12798 handles: resizeHandles,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12799 start: function( event, ui ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12800 that._addClass( $( this ), "ui-dialog-resizing" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12801 that._blockFrames();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12802 that._trigger( "resizeStart", event, filteredUi( ui ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12803 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12804 resize: function( event, ui ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12805 that._trigger( "resize", event, filteredUi( ui ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12806 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12807 stop: function( event, ui ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12808 var offset = that.uiDialog.offset(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12809 left = offset.left - that.document.scrollLeft(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12810 top = offset.top - that.document.scrollTop();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12811
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12812 options.height = that.uiDialog.height();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12813 options.width = that.uiDialog.width();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12814 options.position = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12815 my: "left top",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12816 at: "left" + ( left >= 0 ? "+" : "" ) + left + " " +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12817 "top" + ( top >= 0 ? "+" : "" ) + top,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12818 of: that.window
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12819 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12820 that._removeClass( $( this ), "ui-dialog-resizing" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12821 that._unblockFrames();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12822 that._trigger( "resizeStop", event, filteredUi( ui ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12823 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12824 } )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12825 .css( "position", position );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12826 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12827
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12828 _trackFocus: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12829 this._on( this.widget(), {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12830 focusin: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12831 this._makeFocusTarget();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12832 this._focusedElement = $( event.target );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12833 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12834 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12835 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12836
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12837 _makeFocusTarget: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12838 this._untrackInstance();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12839 this._trackingInstances().unshift( this );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12840 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12841
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12842 _untrackInstance: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12843 var instances = this._trackingInstances(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12844 exists = $.inArray( this, instances );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12845 if ( exists !== -1 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12846 instances.splice( exists, 1 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12847 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12848 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12849
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12850 _trackingInstances: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12851 var instances = this.document.data( "ui-dialog-instances" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12852 if ( !instances ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12853 instances = [];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12854 this.document.data( "ui-dialog-instances", instances );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12855 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12856 return instances;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12857 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12858
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12859 _minHeight: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12860 var options = this.options;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12861
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12862 return options.height === "auto" ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12863 options.minHeight :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12864 Math.min( options.minHeight, options.height );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12865 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12866
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12867 _position: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12868
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12869 // Need to show the dialog to get the actual offset in the position plugin
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12870 var isVisible = this.uiDialog.is( ":visible" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12871 if ( !isVisible ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12872 this.uiDialog.show();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12873 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12874 this.uiDialog.position( this.options.position );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12875 if ( !isVisible ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12876 this.uiDialog.hide();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12877 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12878 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12879
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12880 _setOptions: function( options ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12881 var that = this,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12882 resize = false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12883 resizableOptions = {};
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12884
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12885 $.each( options, function( key, value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12886 that._setOption( key, value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12887
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12888 if ( key in that.sizeRelatedOptions ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12889 resize = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12890 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12891 if ( key in that.resizableRelatedOptions ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12892 resizableOptions[ key ] = value;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12893 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12894 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12895
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12896 if ( resize ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12897 this._size();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12898 this._position();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12899 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12900 if ( this.uiDialog.is( ":data(ui-resizable)" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12901 this.uiDialog.resizable( "option", resizableOptions );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12902 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12903 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12904
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12905 _setOption: function( key, value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12906 var isDraggable, isResizable,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12907 uiDialog = this.uiDialog;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12908
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12909 if ( key === "disabled" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12910 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12911 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12912
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12913 this._super( key, value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12914
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12915 if ( key === "appendTo" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12916 this.uiDialog.appendTo( this._appendTo() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12917 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12918
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12919 if ( key === "buttons" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12920 this._createButtons();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12921 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12922
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12923 if ( key === "closeText" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12924 this.uiDialogTitlebarClose.button( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12925
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12926 // Ensure that we always pass a string
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12927 label: $( "<a>" ).text( "" + this.options.closeText ).html()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12928 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12929 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12930
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12931 if ( key === "draggable" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12932 isDraggable = uiDialog.is( ":data(ui-draggable)" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12933 if ( isDraggable && !value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12934 uiDialog.draggable( "destroy" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12935 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12936
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12937 if ( !isDraggable && value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12938 this._makeDraggable();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12939 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12940 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12941
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12942 if ( key === "position" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12943 this._position();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12944 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12945
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12946 if ( key === "resizable" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12947
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12948 // currently resizable, becoming non-resizable
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12949 isResizable = uiDialog.is( ":data(ui-resizable)" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12950 if ( isResizable && !value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12951 uiDialog.resizable( "destroy" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12952 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12953
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12954 // Currently resizable, changing handles
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12955 if ( isResizable && typeof value === "string" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12956 uiDialog.resizable( "option", "handles", value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12957 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12958
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12959 // Currently non-resizable, becoming resizable
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12960 if ( !isResizable && value !== false ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12961 this._makeResizable();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12962 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12963 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12964
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12965 if ( key === "title" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12966 this._title( this.uiDialogTitlebar.find( ".ui-dialog-title" ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12967 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12968 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12969
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12970 _size: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12971
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12972 // If the user has resized the dialog, the .ui-dialog and .ui-dialog-content
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12973 // divs will both have width and height set, so we need to reset them
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12974 var nonContentHeight, minContentHeight, maxContentHeight,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12975 options = this.options;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12976
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12977 // Reset content sizing
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12978 this.element.show().css( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12979 width: "auto",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12980 minHeight: 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12981 maxHeight: "none",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12982 height: 0
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12983 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12984
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12985 if ( options.minWidth > options.width ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12986 options.width = options.minWidth;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12987 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12988
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12989 // Reset wrapper sizing
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12990 // determine the height of all the non-content elements
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12991 nonContentHeight = this.uiDialog.css( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12992 height: "auto",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12993 width: options.width
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12994 } )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12995 .outerHeight();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12996 minContentHeight = Math.max( 0, options.minHeight - nonContentHeight );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12997 maxContentHeight = typeof options.maxHeight === "number" ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12998 Math.max( 0, options.maxHeight - nonContentHeight ) :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
12999 "none";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13000
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13001 if ( options.height === "auto" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13002 this.element.css( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13003 minHeight: minContentHeight,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13004 maxHeight: maxContentHeight,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13005 height: "auto"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13006 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13007 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13008 this.element.height( Math.max( 0, options.height - nonContentHeight ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13009 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13010
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13011 if ( this.uiDialog.is( ":data(ui-resizable)" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13012 this.uiDialog.resizable( "option", "minHeight", this._minHeight() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13013 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13014 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13015
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13016 _blockFrames: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13017 this.iframeBlocks = this.document.find( "iframe" ).map( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13018 var iframe = $( this );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13019
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13020 return $( "<div>" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13021 .css( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13022 position: "absolute",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13023 width: iframe.outerWidth(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13024 height: iframe.outerHeight()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13025 } )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13026 .appendTo( iframe.parent() )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13027 .offset( iframe.offset() )[ 0 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13028 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13029 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13030
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13031 _unblockFrames: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13032 if ( this.iframeBlocks ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13033 this.iframeBlocks.remove();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13034 delete this.iframeBlocks;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13035 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13036 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13037
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13038 _allowInteraction: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13039 if ( $( event.target ).closest( ".ui-dialog" ).length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13040 return true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13041 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13042
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13043 // TODO: Remove hack when datepicker implements
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13044 // the .ui-front logic (#8989)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13045 return !!$( event.target ).closest( ".ui-datepicker" ).length;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13046 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13047
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13048 _createOverlay: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13049 if ( !this.options.modal ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13050 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13051 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13052
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13053 var jqMinor = $.fn.jquery.substring( 0, 4 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13054
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13055 // We use a delay in case the overlay is created from an
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13056 // event that we're going to be cancelling (#2804)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13057 var isOpening = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13058 this._delay( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13059 isOpening = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13060 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13061
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13062 if ( !this.document.data( "ui-dialog-overlays" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13063
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13064 // Prevent use of anchors and inputs
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13065 // This doesn't use `_on()` because it is a shared event handler
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13066 // across all open modal dialogs.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13067 this.document.on( "focusin.ui-dialog", function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13068 if ( isOpening ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13069 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13070 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13071
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13072 var instance = this._trackingInstances()[ 0 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13073 if ( !instance._allowInteraction( event ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13074 event.preventDefault();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13075 instance._focusTabbable();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13076
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13077 // Support: jQuery >=3.4 <3.6 only
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13078 // Focus re-triggering in jQuery 3.4/3.5 makes the original element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13079 // have its focus event propagated last, breaking the re-targeting.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13080 // Trigger focus in a delay in addition if needed to avoid the issue
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13081 // See https://github.com/jquery/jquery/issues/4382
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13082 if ( jqMinor === "3.4." || jqMinor === "3.5." ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13083 instance._delay( instance._restoreTabbableFocus );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13084 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13085 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13086 }.bind( this ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13087 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13088
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13089 this.overlay = $( "<div>" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13090 .appendTo( this._appendTo() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13091
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13092 this._addClass( this.overlay, null, "ui-widget-overlay ui-front" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13093 this._on( this.overlay, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13094 mousedown: "_keepFocus"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13095 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13096 this.document.data( "ui-dialog-overlays",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13097 ( this.document.data( "ui-dialog-overlays" ) || 0 ) + 1 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13098 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13099
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13100 _destroyOverlay: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13101 if ( !this.options.modal ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13102 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13103 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13104
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13105 if ( this.overlay ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13106 var overlays = this.document.data( "ui-dialog-overlays" ) - 1;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13107
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13108 if ( !overlays ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13109 this.document.off( "focusin.ui-dialog" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13110 this.document.removeData( "ui-dialog-overlays" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13111 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13112 this.document.data( "ui-dialog-overlays", overlays );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13113 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13114
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13115 this.overlay.remove();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13116 this.overlay = null;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13117 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13118 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13119 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13120
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13121 // DEPRECATED
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13122 // TODO: switch return back to widget declaration at top of file when this is removed
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13123 if ( $.uiBackCompat !== false ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13124
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13125 // Backcompat for dialogClass option
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13126 $.widget( "ui.dialog", $.ui.dialog, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13127 options: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13128 dialogClass: ""
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13129 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13130 _createWrapper: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13131 this._super();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13132 this.uiDialog.addClass( this.options.dialogClass );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13133 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13134 _setOption: function( key, value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13135 if ( key === "dialogClass" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13136 this.uiDialog
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13137 .removeClass( this.options.dialogClass )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13138 .addClass( value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13139 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13140 this._superApply( arguments );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13141 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13142 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13143 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13144
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13145 var widgetsDialog = $.ui.dialog;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13146
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13147
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13148 /*!
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13149 * jQuery UI Droppable 1.13.2
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13150 * http://jqueryui.com
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13151 *
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13152 * Copyright jQuery Foundation and other contributors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13153 * Released under the MIT license.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13154 * http://jquery.org/license
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13155 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13156
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13157 //>>label: Droppable
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13158 //>>group: Interactions
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13159 //>>description: Enables drop targets for draggable elements.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13160 //>>docs: http://api.jqueryui.com/droppable/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13161 //>>demos: http://jqueryui.com/droppable/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13162
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13163
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13164 $.widget( "ui.droppable", {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13165 version: "1.13.2",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13166 widgetEventPrefix: "drop",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13167 options: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13168 accept: "*",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13169 addClasses: true,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13170 greedy: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13171 scope: "default",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13172 tolerance: "intersect",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13173
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13174 // Callbacks
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13175 activate: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13176 deactivate: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13177 drop: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13178 out: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13179 over: null
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13180 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13181 _create: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13182
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13183 var proportions,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13184 o = this.options,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13185 accept = o.accept;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13186
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13187 this.isover = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13188 this.isout = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13189
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13190 this.accept = typeof accept === "function" ? accept : function( d ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13191 return d.is( accept );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13192 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13193
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13194 this.proportions = function( /* valueToWrite */ ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13195 if ( arguments.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13196
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13197 // Store the droppable's proportions
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13198 proportions = arguments[ 0 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13199 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13200
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13201 // Retrieve or derive the droppable's proportions
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13202 return proportions ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13203 proportions :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13204 proportions = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13205 width: this.element[ 0 ].offsetWidth,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13206 height: this.element[ 0 ].offsetHeight
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13207 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13208 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13209 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13210
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13211 this._addToManager( o.scope );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13212
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13213 if ( o.addClasses ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13214 this._addClass( "ui-droppable" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13215 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13216
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13217 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13218
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13219 _addToManager: function( scope ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13220
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13221 // Add the reference and positions to the manager
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13222 $.ui.ddmanager.droppables[ scope ] = $.ui.ddmanager.droppables[ scope ] || [];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13223 $.ui.ddmanager.droppables[ scope ].push( this );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13224 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13225
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13226 _splice: function( drop ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13227 var i = 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13228 for ( ; i < drop.length; i++ ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13229 if ( drop[ i ] === this ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13230 drop.splice( i, 1 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13231 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13232 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13233 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13234
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13235 _destroy: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13236 var drop = $.ui.ddmanager.droppables[ this.options.scope ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13237
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13238 this._splice( drop );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13239 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13240
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13241 _setOption: function( key, value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13242
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13243 if ( key === "accept" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13244 this.accept = typeof value === "function" ? value : function( d ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13245 return d.is( value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13246 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13247 } else if ( key === "scope" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13248 var drop = $.ui.ddmanager.droppables[ this.options.scope ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13249
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13250 this._splice( drop );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13251 this._addToManager( value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13252 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13253
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13254 this._super( key, value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13255 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13256
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13257 _activate: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13258 var draggable = $.ui.ddmanager.current;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13259
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13260 this._addActiveClass();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13261 if ( draggable ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13262 this._trigger( "activate", event, this.ui( draggable ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13263 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13264 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13265
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13266 _deactivate: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13267 var draggable = $.ui.ddmanager.current;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13268
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13269 this._removeActiveClass();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13270 if ( draggable ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13271 this._trigger( "deactivate", event, this.ui( draggable ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13272 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13273 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13274
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13275 _over: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13276
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13277 var draggable = $.ui.ddmanager.current;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13278
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13279 // Bail if draggable and droppable are same element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13280 if ( !draggable || ( draggable.currentItem ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13281 draggable.element )[ 0 ] === this.element[ 0 ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13282 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13283 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13284
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13285 if ( this.accept.call( this.element[ 0 ], ( draggable.currentItem ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13286 draggable.element ) ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13287 this._addHoverClass();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13288 this._trigger( "over", event, this.ui( draggable ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13289 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13290
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13291 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13292
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13293 _out: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13294
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13295 var draggable = $.ui.ddmanager.current;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13296
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13297 // Bail if draggable and droppable are same element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13298 if ( !draggable || ( draggable.currentItem ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13299 draggable.element )[ 0 ] === this.element[ 0 ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13300 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13301 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13302
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13303 if ( this.accept.call( this.element[ 0 ], ( draggable.currentItem ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13304 draggable.element ) ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13305 this._removeHoverClass();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13306 this._trigger( "out", event, this.ui( draggable ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13307 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13308
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13309 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13310
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13311 _drop: function( event, custom ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13312
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13313 var draggable = custom || $.ui.ddmanager.current,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13314 childrenIntersection = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13315
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13316 // Bail if draggable and droppable are same element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13317 if ( !draggable || ( draggable.currentItem ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13318 draggable.element )[ 0 ] === this.element[ 0 ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13319 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13320 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13321
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13322 this.element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13323 .find( ":data(ui-droppable)" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13324 .not( ".ui-draggable-dragging" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13325 .each( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13326 var inst = $( this ).droppable( "instance" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13327 if (
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13328 inst.options.greedy &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13329 !inst.options.disabled &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13330 inst.options.scope === draggable.options.scope &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13331 inst.accept.call(
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13332 inst.element[ 0 ], ( draggable.currentItem || draggable.element )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13333 ) &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13334 $.ui.intersect(
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13335 draggable,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13336 $.extend( inst, { offset: inst.element.offset() } ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13337 inst.options.tolerance, event
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13338 )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13339 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13340 childrenIntersection = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13341 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13342 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13343 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13344 if ( childrenIntersection ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13345 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13346 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13347
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13348 if ( this.accept.call( this.element[ 0 ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13349 ( draggable.currentItem || draggable.element ) ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13350 this._removeActiveClass();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13351 this._removeHoverClass();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13352
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13353 this._trigger( "drop", event, this.ui( draggable ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13354 return this.element;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13355 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13356
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13357 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13358
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13359 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13360
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13361 ui: function( c ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13362 return {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13363 draggable: ( c.currentItem || c.element ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13364 helper: c.helper,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13365 position: c.position,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13366 offset: c.positionAbs
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13367 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13368 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13369
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13370 // Extension points just to make backcompat sane and avoid duplicating logic
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13371 // TODO: Remove in 1.14 along with call to it below
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13372 _addHoverClass: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13373 this._addClass( "ui-droppable-hover" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13374 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13375
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13376 _removeHoverClass: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13377 this._removeClass( "ui-droppable-hover" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13378 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13379
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13380 _addActiveClass: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13381 this._addClass( "ui-droppable-active" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13382 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13383
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13384 _removeActiveClass: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13385 this._removeClass( "ui-droppable-active" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13386 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13387 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13388
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13389 $.ui.intersect = ( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13390 function isOverAxis( x, reference, size ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13391 return ( x >= reference ) && ( x < ( reference + size ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13392 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13393
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13394 return function( draggable, droppable, toleranceMode, event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13395
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13396 if ( !droppable.offset ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13397 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13398 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13399
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13400 var x1 = ( draggable.positionAbs ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13401 draggable.position.absolute ).left + draggable.margins.left,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13402 y1 = ( draggable.positionAbs ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13403 draggable.position.absolute ).top + draggable.margins.top,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13404 x2 = x1 + draggable.helperProportions.width,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13405 y2 = y1 + draggable.helperProportions.height,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13406 l = droppable.offset.left,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13407 t = droppable.offset.top,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13408 r = l + droppable.proportions().width,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13409 b = t + droppable.proportions().height;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13410
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13411 switch ( toleranceMode ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13412 case "fit":
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13413 return ( l <= x1 && x2 <= r && t <= y1 && y2 <= b );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13414 case "intersect":
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13415 return ( l < x1 + ( draggable.helperProportions.width / 2 ) && // Right Half
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13416 x2 - ( draggable.helperProportions.width / 2 ) < r && // Left Half
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13417 t < y1 + ( draggable.helperProportions.height / 2 ) && // Bottom Half
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13418 y2 - ( draggable.helperProportions.height / 2 ) < b ); // Top Half
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13419 case "pointer":
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13420 return isOverAxis( event.pageY, t, droppable.proportions().height ) &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13421 isOverAxis( event.pageX, l, droppable.proportions().width );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13422 case "touch":
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13423 return (
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13424 ( y1 >= t && y1 <= b ) || // Top edge touching
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13425 ( y2 >= t && y2 <= b ) || // Bottom edge touching
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13426 ( y1 < t && y2 > b ) // Surrounded vertically
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13427 ) && (
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13428 ( x1 >= l && x1 <= r ) || // Left edge touching
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13429 ( x2 >= l && x2 <= r ) || // Right edge touching
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13430 ( x1 < l && x2 > r ) // Surrounded horizontally
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13431 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13432 default:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13433 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13434 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13435 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13436 } )();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13437
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13438 /*
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13439 This manager tracks offsets of draggables and droppables
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13440 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13441 $.ui.ddmanager = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13442 current: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13443 droppables: { "default": [] },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13444 prepareOffsets: function( t, event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13445
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13446 var i, j,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13447 m = $.ui.ddmanager.droppables[ t.options.scope ] || [],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13448 type = event ? event.type : null, // workaround for #2317
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13449 list = ( t.currentItem || t.element ).find( ":data(ui-droppable)" ).addBack();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13450
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13451 droppablesLoop: for ( i = 0; i < m.length; i++ ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13452
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13453 // No disabled and non-accepted
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13454 if ( m[ i ].options.disabled || ( t && !m[ i ].accept.call( m[ i ].element[ 0 ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13455 ( t.currentItem || t.element ) ) ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13456 continue;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13457 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13458
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13459 // Filter out elements in the current dragged item
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13460 for ( j = 0; j < list.length; j++ ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13461 if ( list[ j ] === m[ i ].element[ 0 ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13462 m[ i ].proportions().height = 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13463 continue droppablesLoop;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13464 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13465 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13466
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13467 m[ i ].visible = m[ i ].element.css( "display" ) !== "none";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13468 if ( !m[ i ].visible ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13469 continue;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13470 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13471
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13472 // Activate the droppable if used directly from draggables
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13473 if ( type === "mousedown" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13474 m[ i ]._activate.call( m[ i ], event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13475 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13476
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13477 m[ i ].offset = m[ i ].element.offset();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13478 m[ i ].proportions( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13479 width: m[ i ].element[ 0 ].offsetWidth,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13480 height: m[ i ].element[ 0 ].offsetHeight
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13481 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13482
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13483 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13484
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13485 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13486 drop: function( draggable, event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13487
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13488 var dropped = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13489
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13490 // Create a copy of the droppables in case the list changes during the drop (#9116)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13491 $.each( ( $.ui.ddmanager.droppables[ draggable.options.scope ] || [] ).slice(), function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13492
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13493 if ( !this.options ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13494 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13495 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13496 if ( !this.options.disabled && this.visible &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13497 $.ui.intersect( draggable, this, this.options.tolerance, event ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13498 dropped = this._drop.call( this, event ) || dropped;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13499 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13500
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13501 if ( !this.options.disabled && this.visible && this.accept.call( this.element[ 0 ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13502 ( draggable.currentItem || draggable.element ) ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13503 this.isout = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13504 this.isover = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13505 this._deactivate.call( this, event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13506 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13507
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13508 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13509 return dropped;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13510
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13511 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13512 dragStart: function( draggable, event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13513
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13514 // Listen for scrolling so that if the dragging causes scrolling the position of the
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13515 // droppables can be recalculated (see #5003)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13516 draggable.element.parentsUntil( "body" ).on( "scroll.droppable", function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13517 if ( !draggable.options.refreshPositions ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13518 $.ui.ddmanager.prepareOffsets( draggable, event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13519 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13520 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13521 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13522 drag: function( draggable, event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13523
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13524 // If you have a highly dynamic page, you might try this option. It renders positions
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13525 // every time you move the mouse.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13526 if ( draggable.options.refreshPositions ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13527 $.ui.ddmanager.prepareOffsets( draggable, event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13528 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13529
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13530 // Run through all droppables and check their positions based on specific tolerance options
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13531 $.each( $.ui.ddmanager.droppables[ draggable.options.scope ] || [], function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13532
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13533 if ( this.options.disabled || this.greedyChild || !this.visible ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13534 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13535 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13536
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13537 var parentInstance, scope, parent,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13538 intersects = $.ui.intersect( draggable, this, this.options.tolerance, event ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13539 c = !intersects && this.isover ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13540 "isout" :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13541 ( intersects && !this.isover ? "isover" : null );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13542 if ( !c ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13543 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13544 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13545
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13546 if ( this.options.greedy ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13547
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13548 // find droppable parents with same scope
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13549 scope = this.options.scope;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13550 parent = this.element.parents( ":data(ui-droppable)" ).filter( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13551 return $( this ).droppable( "instance" ).options.scope === scope;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13552 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13553
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13554 if ( parent.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13555 parentInstance = $( parent[ 0 ] ).droppable( "instance" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13556 parentInstance.greedyChild = ( c === "isover" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13557 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13558 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13559
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13560 // We just moved into a greedy child
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13561 if ( parentInstance && c === "isover" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13562 parentInstance.isover = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13563 parentInstance.isout = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13564 parentInstance._out.call( parentInstance, event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13565 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13566
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13567 this[ c ] = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13568 this[ c === "isout" ? "isover" : "isout" ] = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13569 this[ c === "isover" ? "_over" : "_out" ].call( this, event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13570
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13571 // We just moved out of a greedy child
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13572 if ( parentInstance && c === "isout" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13573 parentInstance.isout = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13574 parentInstance.isover = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13575 parentInstance._over.call( parentInstance, event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13576 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13577 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13578
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13579 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13580 dragStop: function( draggable, event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13581 draggable.element.parentsUntil( "body" ).off( "scroll.droppable" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13582
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13583 // Call prepareOffsets one final time since IE does not fire return scroll events when
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13584 // overflow was caused by drag (see #5003)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13585 if ( !draggable.options.refreshPositions ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13586 $.ui.ddmanager.prepareOffsets( draggable, event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13587 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13588 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13589 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13590
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13591 // DEPRECATED
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13592 // TODO: switch return back to widget declaration at top of file when this is removed
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13593 if ( $.uiBackCompat !== false ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13594
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13595 // Backcompat for activeClass and hoverClass options
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13596 $.widget( "ui.droppable", $.ui.droppable, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13597 options: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13598 hoverClass: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13599 activeClass: false
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13600 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13601 _addActiveClass: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13602 this._super();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13603 if ( this.options.activeClass ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13604 this.element.addClass( this.options.activeClass );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13605 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13606 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13607 _removeActiveClass: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13608 this._super();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13609 if ( this.options.activeClass ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13610 this.element.removeClass( this.options.activeClass );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13611 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13612 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13613 _addHoverClass: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13614 this._super();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13615 if ( this.options.hoverClass ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13616 this.element.addClass( this.options.hoverClass );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13617 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13618 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13619 _removeHoverClass: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13620 this._super();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13621 if ( this.options.hoverClass ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13622 this.element.removeClass( this.options.hoverClass );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13623 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13624 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13625 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13626 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13627
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13628 var widgetsDroppable = $.ui.droppable;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13629
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13630
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13631 /*!
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13632 * jQuery UI Progressbar 1.13.2
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13633 * http://jqueryui.com
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13634 *
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13635 * Copyright jQuery Foundation and other contributors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13636 * Released under the MIT license.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13637 * http://jquery.org/license
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13638 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13639
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13640 //>>label: Progressbar
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13641 //>>group: Widgets
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13642 /* eslint-disable max-len */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13643 //>>description: Displays a status indicator for loading state, standard percentage, and other progress indicators.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13644 /* eslint-enable max-len */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13645 //>>docs: http://api.jqueryui.com/progressbar/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13646 //>>demos: http://jqueryui.com/progressbar/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13647 //>>css.structure: ../../themes/base/core.css
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13648 //>>css.structure: ../../themes/base/progressbar.css
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13649 //>>css.theme: ../../themes/base/theme.css
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13650
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13651
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13652 var widgetsProgressbar = $.widget( "ui.progressbar", {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13653 version: "1.13.2",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13654 options: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13655 classes: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13656 "ui-progressbar": "ui-corner-all",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13657 "ui-progressbar-value": "ui-corner-left",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13658 "ui-progressbar-complete": "ui-corner-right"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13659 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13660 max: 100,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13661 value: 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13662
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13663 change: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13664 complete: null
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13665 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13666
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13667 min: 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13668
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13669 _create: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13670
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13671 // Constrain initial value
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13672 this.oldValue = this.options.value = this._constrainedValue();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13673
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13674 this.element.attr( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13675
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13676 // Only set static values; aria-valuenow and aria-valuemax are
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13677 // set inside _refreshValue()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13678 role: "progressbar",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13679 "aria-valuemin": this.min
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13680 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13681 this._addClass( "ui-progressbar", "ui-widget ui-widget-content" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13682
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13683 this.valueDiv = $( "<div>" ).appendTo( this.element );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13684 this._addClass( this.valueDiv, "ui-progressbar-value", "ui-widget-header" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13685 this._refreshValue();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13686 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13687
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13688 _destroy: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13689 this.element.removeAttr( "role aria-valuemin aria-valuemax aria-valuenow" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13690
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13691 this.valueDiv.remove();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13692 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13693
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13694 value: function( newValue ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13695 if ( newValue === undefined ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13696 return this.options.value;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13697 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13698
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13699 this.options.value = this._constrainedValue( newValue );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13700 this._refreshValue();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13701 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13702
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13703 _constrainedValue: function( newValue ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13704 if ( newValue === undefined ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13705 newValue = this.options.value;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13706 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13707
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13708 this.indeterminate = newValue === false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13709
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13710 // Sanitize value
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13711 if ( typeof newValue !== "number" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13712 newValue = 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13713 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13714
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13715 return this.indeterminate ? false :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13716 Math.min( this.options.max, Math.max( this.min, newValue ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13717 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13718
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13719 _setOptions: function( options ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13720
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13721 // Ensure "value" option is set after other values (like max)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13722 var value = options.value;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13723 delete options.value;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13724
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13725 this._super( options );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13726
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13727 this.options.value = this._constrainedValue( value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13728 this._refreshValue();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13729 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13730
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13731 _setOption: function( key, value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13732 if ( key === "max" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13733
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13734 // Don't allow a max less than min
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13735 value = Math.max( this.min, value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13736 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13737 this._super( key, value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13738 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13739
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13740 _setOptionDisabled: function( value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13741 this._super( value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13742
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13743 this.element.attr( "aria-disabled", value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13744 this._toggleClass( null, "ui-state-disabled", !!value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13745 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13746
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13747 _percentage: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13748 return this.indeterminate ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13749 100 :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13750 100 * ( this.options.value - this.min ) / ( this.options.max - this.min );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13751 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13752
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13753 _refreshValue: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13754 var value = this.options.value,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13755 percentage = this._percentage();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13756
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13757 this.valueDiv
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13758 .toggle( this.indeterminate || value > this.min )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13759 .width( percentage.toFixed( 0 ) + "%" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13760
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13761 this
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13762 ._toggleClass( this.valueDiv, "ui-progressbar-complete", null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13763 value === this.options.max )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13764 ._toggleClass( "ui-progressbar-indeterminate", null, this.indeterminate );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13765
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13766 if ( this.indeterminate ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13767 this.element.removeAttr( "aria-valuenow" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13768 if ( !this.overlayDiv ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13769 this.overlayDiv = $( "<div>" ).appendTo( this.valueDiv );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13770 this._addClass( this.overlayDiv, "ui-progressbar-overlay" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13771 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13772 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13773 this.element.attr( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13774 "aria-valuemax": this.options.max,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13775 "aria-valuenow": value
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13776 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13777 if ( this.overlayDiv ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13778 this.overlayDiv.remove();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13779 this.overlayDiv = null;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13780 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13781 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13782
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13783 if ( this.oldValue !== value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13784 this.oldValue = value;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13785 this._trigger( "change" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13786 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13787 if ( value === this.options.max ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13788 this._trigger( "complete" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13789 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13790 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13791 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13792
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13793
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13794 /*!
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13795 * jQuery UI Selectable 1.13.2
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13796 * http://jqueryui.com
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13797 *
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13798 * Copyright jQuery Foundation and other contributors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13799 * Released under the MIT license.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13800 * http://jquery.org/license
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13801 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13802
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13803 //>>label: Selectable
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13804 //>>group: Interactions
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13805 //>>description: Allows groups of elements to be selected with the mouse.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13806 //>>docs: http://api.jqueryui.com/selectable/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13807 //>>demos: http://jqueryui.com/selectable/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13808 //>>css.structure: ../../themes/base/selectable.css
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13809
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13810
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13811 var widgetsSelectable = $.widget( "ui.selectable", $.ui.mouse, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13812 version: "1.13.2",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13813 options: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13814 appendTo: "body",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13815 autoRefresh: true,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13816 distance: 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13817 filter: "*",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13818 tolerance: "touch",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13819
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13820 // Callbacks
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13821 selected: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13822 selecting: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13823 start: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13824 stop: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13825 unselected: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13826 unselecting: null
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13827 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13828 _create: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13829 var that = this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13830
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13831 this._addClass( "ui-selectable" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13832
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13833 this.dragged = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13834
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13835 // Cache selectee children based on filter
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13836 this.refresh = function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13837 that.elementPos = $( that.element[ 0 ] ).offset();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13838 that.selectees = $( that.options.filter, that.element[ 0 ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13839 that._addClass( that.selectees, "ui-selectee" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13840 that.selectees.each( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13841 var $this = $( this ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13842 selecteeOffset = $this.offset(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13843 pos = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13844 left: selecteeOffset.left - that.elementPos.left,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13845 top: selecteeOffset.top - that.elementPos.top
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13846 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13847 $.data( this, "selectable-item", {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13848 element: this,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13849 $element: $this,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13850 left: pos.left,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13851 top: pos.top,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13852 right: pos.left + $this.outerWidth(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13853 bottom: pos.top + $this.outerHeight(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13854 startselected: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13855 selected: $this.hasClass( "ui-selected" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13856 selecting: $this.hasClass( "ui-selecting" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13857 unselecting: $this.hasClass( "ui-unselecting" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13858 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13859 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13860 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13861 this.refresh();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13862
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13863 this._mouseInit();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13864
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13865 this.helper = $( "<div>" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13866 this._addClass( this.helper, "ui-selectable-helper" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13867 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13868
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13869 _destroy: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13870 this.selectees.removeData( "selectable-item" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13871 this._mouseDestroy();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13872 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13873
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13874 _mouseStart: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13875 var that = this,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13876 options = this.options;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13877
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13878 this.opos = [ event.pageX, event.pageY ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13879 this.elementPos = $( this.element[ 0 ] ).offset();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13880
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13881 if ( this.options.disabled ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13882 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13883 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13884
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13885 this.selectees = $( options.filter, this.element[ 0 ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13886
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13887 this._trigger( "start", event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13888
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13889 $( options.appendTo ).append( this.helper );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13890
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13891 // position helper (lasso)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13892 this.helper.css( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13893 "left": event.pageX,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13894 "top": event.pageY,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13895 "width": 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13896 "height": 0
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13897 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13898
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13899 if ( options.autoRefresh ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13900 this.refresh();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13901 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13902
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13903 this.selectees.filter( ".ui-selected" ).each( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13904 var selectee = $.data( this, "selectable-item" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13905 selectee.startselected = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13906 if ( !event.metaKey && !event.ctrlKey ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13907 that._removeClass( selectee.$element, "ui-selected" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13908 selectee.selected = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13909 that._addClass( selectee.$element, "ui-unselecting" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13910 selectee.unselecting = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13911
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13912 // selectable UNSELECTING callback
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13913 that._trigger( "unselecting", event, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13914 unselecting: selectee.element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13915 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13916 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13917 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13918
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13919 $( event.target ).parents().addBack().each( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13920 var doSelect,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13921 selectee = $.data( this, "selectable-item" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13922 if ( selectee ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13923 doSelect = ( !event.metaKey && !event.ctrlKey ) ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13924 !selectee.$element.hasClass( "ui-selected" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13925 that._removeClass( selectee.$element, doSelect ? "ui-unselecting" : "ui-selected" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13926 ._addClass( selectee.$element, doSelect ? "ui-selecting" : "ui-unselecting" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13927 selectee.unselecting = !doSelect;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13928 selectee.selecting = doSelect;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13929 selectee.selected = doSelect;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13930
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13931 // selectable (UN)SELECTING callback
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13932 if ( doSelect ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13933 that._trigger( "selecting", event, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13934 selecting: selectee.element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13935 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13936 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13937 that._trigger( "unselecting", event, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13938 unselecting: selectee.element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13939 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13940 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13941 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13942 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13943 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13944
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13945 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13946
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13947 _mouseDrag: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13948
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13949 this.dragged = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13950
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13951 if ( this.options.disabled ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13952 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13953 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13954
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13955 var tmp,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13956 that = this,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13957 options = this.options,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13958 x1 = this.opos[ 0 ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13959 y1 = this.opos[ 1 ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13960 x2 = event.pageX,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13961 y2 = event.pageY;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13962
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13963 if ( x1 > x2 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13964 tmp = x2; x2 = x1; x1 = tmp;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13965 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13966 if ( y1 > y2 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13967 tmp = y2; y2 = y1; y1 = tmp;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13968 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13969 this.helper.css( { left: x1, top: y1, width: x2 - x1, height: y2 - y1 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13970
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13971 this.selectees.each( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13972 var selectee = $.data( this, "selectable-item" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13973 hit = false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13974 offset = {};
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13975
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13976 //prevent helper from being selected if appendTo: selectable
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13977 if ( !selectee || selectee.element === that.element[ 0 ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13978 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13979 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13980
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13981 offset.left = selectee.left + that.elementPos.left;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13982 offset.right = selectee.right + that.elementPos.left;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13983 offset.top = selectee.top + that.elementPos.top;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13984 offset.bottom = selectee.bottom + that.elementPos.top;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13985
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13986 if ( options.tolerance === "touch" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13987 hit = ( !( offset.left > x2 || offset.right < x1 || offset.top > y2 ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13988 offset.bottom < y1 ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13989 } else if ( options.tolerance === "fit" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13990 hit = ( offset.left > x1 && offset.right < x2 && offset.top > y1 &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13991 offset.bottom < y2 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13992 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13993
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13994 if ( hit ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13995
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13996 // SELECT
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13997 if ( selectee.selected ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13998 that._removeClass( selectee.$element, "ui-selected" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
13999 selectee.selected = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14000 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14001 if ( selectee.unselecting ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14002 that._removeClass( selectee.$element, "ui-unselecting" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14003 selectee.unselecting = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14004 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14005 if ( !selectee.selecting ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14006 that._addClass( selectee.$element, "ui-selecting" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14007 selectee.selecting = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14008
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14009 // selectable SELECTING callback
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14010 that._trigger( "selecting", event, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14011 selecting: selectee.element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14012 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14013 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14014 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14015
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14016 // UNSELECT
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14017 if ( selectee.selecting ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14018 if ( ( event.metaKey || event.ctrlKey ) && selectee.startselected ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14019 that._removeClass( selectee.$element, "ui-selecting" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14020 selectee.selecting = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14021 that._addClass( selectee.$element, "ui-selected" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14022 selectee.selected = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14023 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14024 that._removeClass( selectee.$element, "ui-selecting" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14025 selectee.selecting = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14026 if ( selectee.startselected ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14027 that._addClass( selectee.$element, "ui-unselecting" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14028 selectee.unselecting = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14029 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14030
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14031 // selectable UNSELECTING callback
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14032 that._trigger( "unselecting", event, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14033 unselecting: selectee.element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14034 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14035 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14036 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14037 if ( selectee.selected ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14038 if ( !event.metaKey && !event.ctrlKey && !selectee.startselected ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14039 that._removeClass( selectee.$element, "ui-selected" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14040 selectee.selected = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14041
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14042 that._addClass( selectee.$element, "ui-unselecting" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14043 selectee.unselecting = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14044
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14045 // selectable UNSELECTING callback
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14046 that._trigger( "unselecting", event, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14047 unselecting: selectee.element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14048 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14049 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14050 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14051 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14052 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14053
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14054 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14055 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14056
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14057 _mouseStop: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14058 var that = this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14059
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14060 this.dragged = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14061
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14062 $( ".ui-unselecting", this.element[ 0 ] ).each( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14063 var selectee = $.data( this, "selectable-item" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14064 that._removeClass( selectee.$element, "ui-unselecting" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14065 selectee.unselecting = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14066 selectee.startselected = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14067 that._trigger( "unselected", event, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14068 unselected: selectee.element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14069 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14070 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14071 $( ".ui-selecting", this.element[ 0 ] ).each( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14072 var selectee = $.data( this, "selectable-item" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14073 that._removeClass( selectee.$element, "ui-selecting" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14074 ._addClass( selectee.$element, "ui-selected" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14075 selectee.selecting = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14076 selectee.selected = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14077 selectee.startselected = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14078 that._trigger( "selected", event, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14079 selected: selectee.element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14080 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14081 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14082 this._trigger( "stop", event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14083
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14084 this.helper.remove();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14085
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14086 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14087 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14088
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14089 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14090
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14091
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14092 /*!
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14093 * jQuery UI Selectmenu 1.13.2
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14094 * http://jqueryui.com
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14095 *
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14096 * Copyright jQuery Foundation and other contributors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14097 * Released under the MIT license.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14098 * http://jquery.org/license
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14099 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14100
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14101 //>>label: Selectmenu
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14102 //>>group: Widgets
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14103 /* eslint-disable max-len */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14104 //>>description: Duplicates and extends the functionality of a native HTML select element, allowing it to be customizable in behavior and appearance far beyond the limitations of a native select.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14105 /* eslint-enable max-len */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14106 //>>docs: http://api.jqueryui.com/selectmenu/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14107 //>>demos: http://jqueryui.com/selectmenu/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14108 //>>css.structure: ../../themes/base/core.css
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14109 //>>css.structure: ../../themes/base/selectmenu.css, ../../themes/base/button.css
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14110 //>>css.theme: ../../themes/base/theme.css
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14111
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14112
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14113 var widgetsSelectmenu = $.widget( "ui.selectmenu", [ $.ui.formResetMixin, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14114 version: "1.13.2",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14115 defaultElement: "<select>",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14116 options: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14117 appendTo: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14118 classes: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14119 "ui-selectmenu-button-open": "ui-corner-top",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14120 "ui-selectmenu-button-closed": "ui-corner-all"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14121 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14122 disabled: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14123 icons: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14124 button: "ui-icon-triangle-1-s"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14125 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14126 position: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14127 my: "left top",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14128 at: "left bottom",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14129 collision: "none"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14130 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14131 width: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14132
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14133 // Callbacks
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14134 change: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14135 close: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14136 focus: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14137 open: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14138 select: null
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14139 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14140
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14141 _create: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14142 var selectmenuId = this.element.uniqueId().attr( "id" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14143 this.ids = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14144 element: selectmenuId,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14145 button: selectmenuId + "-button",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14146 menu: selectmenuId + "-menu"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14147 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14148
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14149 this._drawButton();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14150 this._drawMenu();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14151 this._bindFormResetHandler();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14152
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14153 this._rendered = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14154 this.menuItems = $();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14155 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14156
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14157 _drawButton: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14158 var icon,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14159 that = this,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14160 item = this._parseOption(
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14161 this.element.find( "option:selected" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14162 this.element[ 0 ].selectedIndex
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14163 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14164
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14165 // Associate existing label with the new button
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14166 this.labels = this.element.labels().attr( "for", this.ids.button );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14167 this._on( this.labels, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14168 click: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14169 this.button.trigger( "focus" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14170 event.preventDefault();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14171 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14172 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14173
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14174 // Hide original select element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14175 this.element.hide();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14176
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14177 // Create button
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14178 this.button = $( "<span>", {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14179 tabindex: this.options.disabled ? -1 : 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14180 id: this.ids.button,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14181 role: "combobox",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14182 "aria-expanded": "false",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14183 "aria-autocomplete": "list",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14184 "aria-owns": this.ids.menu,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14185 "aria-haspopup": "true",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14186 title: this.element.attr( "title" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14187 } )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14188 .insertAfter( this.element );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14189
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14190 this._addClass( this.button, "ui-selectmenu-button ui-selectmenu-button-closed",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14191 "ui-button ui-widget" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14192
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14193 icon = $( "<span>" ).appendTo( this.button );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14194 this._addClass( icon, "ui-selectmenu-icon", "ui-icon " + this.options.icons.button );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14195 this.buttonItem = this._renderButtonItem( item )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14196 .appendTo( this.button );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14197
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14198 if ( this.options.width !== false ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14199 this._resizeButton();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14200 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14201
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14202 this._on( this.button, this._buttonEvents );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14203 this.button.one( "focusin", function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14204
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14205 // Delay rendering the menu items until the button receives focus.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14206 // The menu may have already been rendered via a programmatic open.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14207 if ( !that._rendered ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14208 that._refreshMenu();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14209 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14210 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14211 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14212
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14213 _drawMenu: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14214 var that = this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14215
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14216 // Create menu
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14217 this.menu = $( "<ul>", {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14218 "aria-hidden": "true",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14219 "aria-labelledby": this.ids.button,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14220 id: this.ids.menu
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14221 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14222
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14223 // Wrap menu
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14224 this.menuWrap = $( "<div>" ).append( this.menu );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14225 this._addClass( this.menuWrap, "ui-selectmenu-menu", "ui-front" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14226 this.menuWrap.appendTo( this._appendTo() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14227
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14228 // Initialize menu widget
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14229 this.menuInstance = this.menu
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14230 .menu( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14231 classes: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14232 "ui-menu": "ui-corner-bottom"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14233 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14234 role: "listbox",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14235 select: function( event, ui ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14236 event.preventDefault();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14237
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14238 // Support: IE8
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14239 // If the item was selected via a click, the text selection
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14240 // will be destroyed in IE
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14241 that._setSelection();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14242
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14243 that._select( ui.item.data( "ui-selectmenu-item" ), event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14244 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14245 focus: function( event, ui ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14246 var item = ui.item.data( "ui-selectmenu-item" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14247
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14248 // Prevent inital focus from firing and check if its a newly focused item
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14249 if ( that.focusIndex != null && item.index !== that.focusIndex ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14250 that._trigger( "focus", event, { item: item } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14251 if ( !that.isOpen ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14252 that._select( item, event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14253 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14254 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14255 that.focusIndex = item.index;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14256
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14257 that.button.attr( "aria-activedescendant",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14258 that.menuItems.eq( item.index ).attr( "id" ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14259 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14260 } )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14261 .menu( "instance" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14262
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14263 // Don't close the menu on mouseleave
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14264 this.menuInstance._off( this.menu, "mouseleave" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14265
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14266 // Cancel the menu's collapseAll on document click
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14267 this.menuInstance._closeOnDocumentClick = function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14268 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14269 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14270
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14271 // Selects often contain empty items, but never contain dividers
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14272 this.menuInstance._isDivider = function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14273 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14274 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14275 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14276
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14277 refresh: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14278 this._refreshMenu();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14279 this.buttonItem.replaceWith(
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14280 this.buttonItem = this._renderButtonItem(
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14281
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14282 // Fall back to an empty object in case there are no options
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14283 this._getSelectedItem().data( "ui-selectmenu-item" ) || {}
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14284 )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14285 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14286 if ( this.options.width === null ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14287 this._resizeButton();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14288 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14289 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14290
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14291 _refreshMenu: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14292 var item,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14293 options = this.element.find( "option" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14294
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14295 this.menu.empty();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14296
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14297 this._parseOptions( options );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14298 this._renderMenu( this.menu, this.items );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14299
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14300 this.menuInstance.refresh();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14301 this.menuItems = this.menu.find( "li" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14302 .not( ".ui-selectmenu-optgroup" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14303 .find( ".ui-menu-item-wrapper" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14304
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14305 this._rendered = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14306
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14307 if ( !options.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14308 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14309 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14310
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14311 item = this._getSelectedItem();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14312
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14313 // Update the menu to have the correct item focused
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14314 this.menuInstance.focus( null, item );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14315 this._setAria( item.data( "ui-selectmenu-item" ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14316
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14317 // Set disabled state
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14318 this._setOption( "disabled", this.element.prop( "disabled" ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14319 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14320
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14321 open: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14322 if ( this.options.disabled ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14323 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14324 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14325
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14326 // If this is the first time the menu is being opened, render the items
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14327 if ( !this._rendered ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14328 this._refreshMenu();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14329 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14330
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14331 // Menu clears focus on close, reset focus to selected item
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14332 this._removeClass( this.menu.find( ".ui-state-active" ), null, "ui-state-active" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14333 this.menuInstance.focus( null, this._getSelectedItem() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14334 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14335
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14336 // If there are no options, don't open the menu
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14337 if ( !this.menuItems.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14338 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14339 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14340
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14341 this.isOpen = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14342 this._toggleAttr();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14343 this._resizeMenu();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14344 this._position();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14345
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14346 this._on( this.document, this._documentClick );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14347
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14348 this._trigger( "open", event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14349 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14350
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14351 _position: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14352 this.menuWrap.position( $.extend( { of: this.button }, this.options.position ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14353 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14354
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14355 close: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14356 if ( !this.isOpen ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14357 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14358 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14359
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14360 this.isOpen = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14361 this._toggleAttr();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14362
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14363 this.range = null;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14364 this._off( this.document );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14365
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14366 this._trigger( "close", event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14367 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14368
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14369 widget: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14370 return this.button;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14371 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14372
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14373 menuWidget: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14374 return this.menu;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14375 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14376
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14377 _renderButtonItem: function( item ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14378 var buttonItem = $( "<span>" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14379
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14380 this._setText( buttonItem, item.label );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14381 this._addClass( buttonItem, "ui-selectmenu-text" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14382
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14383 return buttonItem;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14384 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14385
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14386 _renderMenu: function( ul, items ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14387 var that = this,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14388 currentOptgroup = "";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14389
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14390 $.each( items, function( index, item ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14391 var li;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14392
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14393 if ( item.optgroup !== currentOptgroup ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14394 li = $( "<li>", {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14395 text: item.optgroup
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14396 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14397 that._addClass( li, "ui-selectmenu-optgroup", "ui-menu-divider" +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14398 ( item.element.parent( "optgroup" ).prop( "disabled" ) ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14399 " ui-state-disabled" :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14400 "" ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14401
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14402 li.appendTo( ul );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14403
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14404 currentOptgroup = item.optgroup;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14405 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14406
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14407 that._renderItemData( ul, item );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14408 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14409 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14410
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14411 _renderItemData: function( ul, item ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14412 return this._renderItem( ul, item ).data( "ui-selectmenu-item", item );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14413 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14414
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14415 _renderItem: function( ul, item ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14416 var li = $( "<li>" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14417 wrapper = $( "<div>", {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14418 title: item.element.attr( "title" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14419 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14420
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14421 if ( item.disabled ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14422 this._addClass( li, null, "ui-state-disabled" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14423 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14424 this._setText( wrapper, item.label );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14425
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14426 return li.append( wrapper ).appendTo( ul );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14427 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14428
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14429 _setText: function( element, value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14430 if ( value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14431 element.text( value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14432 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14433 element.html( "&#160;" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14434 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14435 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14436
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14437 _move: function( direction, event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14438 var item, next,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14439 filter = ".ui-menu-item";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14440
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14441 if ( this.isOpen ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14442 item = this.menuItems.eq( this.focusIndex ).parent( "li" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14443 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14444 item = this.menuItems.eq( this.element[ 0 ].selectedIndex ).parent( "li" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14445 filter += ":not(.ui-state-disabled)";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14446 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14447
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14448 if ( direction === "first" || direction === "last" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14449 next = item[ direction === "first" ? "prevAll" : "nextAll" ]( filter ).eq( -1 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14450 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14451 next = item[ direction + "All" ]( filter ).eq( 0 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14452 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14453
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14454 if ( next.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14455 this.menuInstance.focus( event, next );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14456 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14457 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14458
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14459 _getSelectedItem: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14460 return this.menuItems.eq( this.element[ 0 ].selectedIndex ).parent( "li" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14461 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14462
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14463 _toggle: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14464 this[ this.isOpen ? "close" : "open" ]( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14465 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14466
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14467 _setSelection: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14468 var selection;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14469
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14470 if ( !this.range ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14471 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14472 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14473
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14474 if ( window.getSelection ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14475 selection = window.getSelection();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14476 selection.removeAllRanges();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14477 selection.addRange( this.range );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14478
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14479 // Support: IE8
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14480 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14481 this.range.select();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14482 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14483
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14484 // Support: IE
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14485 // Setting the text selection kills the button focus in IE, but
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14486 // restoring the focus doesn't kill the selection.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14487 this.button.trigger( "focus" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14488 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14489
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14490 _documentClick: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14491 mousedown: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14492 if ( !this.isOpen ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14493 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14494 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14495
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14496 if ( !$( event.target ).closest( ".ui-selectmenu-menu, #" +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14497 $.escapeSelector( this.ids.button ) ).length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14498 this.close( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14499 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14500 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14501 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14502
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14503 _buttonEvents: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14504
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14505 // Prevent text selection from being reset when interacting with the selectmenu (#10144)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14506 mousedown: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14507 var selection;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14508
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14509 if ( window.getSelection ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14510 selection = window.getSelection();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14511 if ( selection.rangeCount ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14512 this.range = selection.getRangeAt( 0 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14513 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14514
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14515 // Support: IE8
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14516 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14517 this.range = document.selection.createRange();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14518 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14519 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14520
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14521 click: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14522 this._setSelection();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14523 this._toggle( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14524 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14525
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14526 keydown: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14527 var preventDefault = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14528 switch ( event.keyCode ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14529 case $.ui.keyCode.TAB:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14530 case $.ui.keyCode.ESCAPE:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14531 this.close( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14532 preventDefault = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14533 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14534 case $.ui.keyCode.ENTER:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14535 if ( this.isOpen ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14536 this._selectFocusedItem( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14537 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14538 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14539 case $.ui.keyCode.UP:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14540 if ( event.altKey ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14541 this._toggle( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14542 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14543 this._move( "prev", event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14544 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14545 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14546 case $.ui.keyCode.DOWN:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14547 if ( event.altKey ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14548 this._toggle( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14549 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14550 this._move( "next", event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14551 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14552 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14553 case $.ui.keyCode.SPACE:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14554 if ( this.isOpen ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14555 this._selectFocusedItem( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14556 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14557 this._toggle( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14558 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14559 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14560 case $.ui.keyCode.LEFT:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14561 this._move( "prev", event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14562 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14563 case $.ui.keyCode.RIGHT:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14564 this._move( "next", event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14565 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14566 case $.ui.keyCode.HOME:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14567 case $.ui.keyCode.PAGE_UP:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14568 this._move( "first", event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14569 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14570 case $.ui.keyCode.END:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14571 case $.ui.keyCode.PAGE_DOWN:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14572 this._move( "last", event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14573 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14574 default:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14575 this.menu.trigger( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14576 preventDefault = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14577 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14578
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14579 if ( preventDefault ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14580 event.preventDefault();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14581 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14582 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14583 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14584
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14585 _selectFocusedItem: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14586 var item = this.menuItems.eq( this.focusIndex ).parent( "li" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14587 if ( !item.hasClass( "ui-state-disabled" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14588 this._select( item.data( "ui-selectmenu-item" ), event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14589 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14590 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14591
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14592 _select: function( item, event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14593 var oldIndex = this.element[ 0 ].selectedIndex;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14594
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14595 // Change native select element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14596 this.element[ 0 ].selectedIndex = item.index;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14597 this.buttonItem.replaceWith( this.buttonItem = this._renderButtonItem( item ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14598 this._setAria( item );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14599 this._trigger( "select", event, { item: item } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14600
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14601 if ( item.index !== oldIndex ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14602 this._trigger( "change", event, { item: item } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14603 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14604
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14605 this.close( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14606 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14607
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14608 _setAria: function( item ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14609 var id = this.menuItems.eq( item.index ).attr( "id" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14610
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14611 this.button.attr( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14612 "aria-labelledby": id,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14613 "aria-activedescendant": id
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14614 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14615 this.menu.attr( "aria-activedescendant", id );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14616 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14617
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14618 _setOption: function( key, value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14619 if ( key === "icons" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14620 var icon = this.button.find( "span.ui-icon" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14621 this._removeClass( icon, null, this.options.icons.button )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14622 ._addClass( icon, null, value.button );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14623 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14624
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14625 this._super( key, value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14626
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14627 if ( key === "appendTo" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14628 this.menuWrap.appendTo( this._appendTo() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14629 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14630
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14631 if ( key === "width" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14632 this._resizeButton();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14633 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14634 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14635
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14636 _setOptionDisabled: function( value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14637 this._super( value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14638
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14639 this.menuInstance.option( "disabled", value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14640 this.button.attr( "aria-disabled", value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14641 this._toggleClass( this.button, null, "ui-state-disabled", value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14642
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14643 this.element.prop( "disabled", value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14644 if ( value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14645 this.button.attr( "tabindex", -1 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14646 this.close();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14647 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14648 this.button.attr( "tabindex", 0 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14649 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14650 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14651
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14652 _appendTo: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14653 var element = this.options.appendTo;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14654
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14655 if ( element ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14656 element = element.jquery || element.nodeType ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14657 $( element ) :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14658 this.document.find( element ).eq( 0 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14659 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14660
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14661 if ( !element || !element[ 0 ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14662 element = this.element.closest( ".ui-front, dialog" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14663 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14664
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14665 if ( !element.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14666 element = this.document[ 0 ].body;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14667 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14668
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14669 return element;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14670 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14671
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14672 _toggleAttr: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14673 this.button.attr( "aria-expanded", this.isOpen );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14674
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14675 // We can't use two _toggleClass() calls here, because we need to make sure
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14676 // we always remove classes first and add them second, otherwise if both classes have the
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14677 // same theme class, it will be removed after we add it.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14678 this._removeClass( this.button, "ui-selectmenu-button-" +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14679 ( this.isOpen ? "closed" : "open" ) )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14680 ._addClass( this.button, "ui-selectmenu-button-" +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14681 ( this.isOpen ? "open" : "closed" ) )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14682 ._toggleClass( this.menuWrap, "ui-selectmenu-open", null, this.isOpen );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14683
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14684 this.menu.attr( "aria-hidden", !this.isOpen );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14685 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14686
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14687 _resizeButton: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14688 var width = this.options.width;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14689
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14690 // For `width: false`, just remove inline style and stop
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14691 if ( width === false ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14692 this.button.css( "width", "" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14693 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14694 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14695
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14696 // For `width: null`, match the width of the original element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14697 if ( width === null ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14698 width = this.element.show().outerWidth();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14699 this.element.hide();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14700 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14701
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14702 this.button.outerWidth( width );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14703 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14704
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14705 _resizeMenu: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14706 this.menu.outerWidth( Math.max(
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14707 this.button.outerWidth(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14708
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14709 // Support: IE10
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14710 // IE10 wraps long text (possibly a rounding bug)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14711 // so we add 1px to avoid the wrapping
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14712 this.menu.width( "" ).outerWidth() + 1
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14713 ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14714 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14715
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14716 _getCreateOptions: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14717 var options = this._super();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14718
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14719 options.disabled = this.element.prop( "disabled" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14720
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14721 return options;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14722 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14723
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14724 _parseOptions: function( options ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14725 var that = this,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14726 data = [];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14727 options.each( function( index, item ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14728 if ( item.hidden ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14729 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14730 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14731
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14732 data.push( that._parseOption( $( item ), index ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14733 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14734 this.items = data;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14735 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14736
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14737 _parseOption: function( option, index ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14738 var optgroup = option.parent( "optgroup" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14739
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14740 return {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14741 element: option,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14742 index: index,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14743 value: option.val(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14744 label: option.text(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14745 optgroup: optgroup.attr( "label" ) || "",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14746 disabled: optgroup.prop( "disabled" ) || option.prop( "disabled" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14747 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14748 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14749
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14750 _destroy: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14751 this._unbindFormResetHandler();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14752 this.menuWrap.remove();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14753 this.button.remove();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14754 this.element.show();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14755 this.element.removeUniqueId();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14756 this.labels.attr( "for", this.ids.element );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14757 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14758 } ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14759
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14760
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14761 /*!
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14762 * jQuery UI Slider 1.13.2
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14763 * http://jqueryui.com
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14764 *
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14765 * Copyright jQuery Foundation and other contributors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14766 * Released under the MIT license.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14767 * http://jquery.org/license
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14768 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14769
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14770 //>>label: Slider
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14771 //>>group: Widgets
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14772 //>>description: Displays a flexible slider with ranges and accessibility via keyboard.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14773 //>>docs: http://api.jqueryui.com/slider/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14774 //>>demos: http://jqueryui.com/slider/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14775 //>>css.structure: ../../themes/base/core.css
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14776 //>>css.structure: ../../themes/base/slider.css
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14777 //>>css.theme: ../../themes/base/theme.css
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14778
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14779
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14780 var widgetsSlider = $.widget( "ui.slider", $.ui.mouse, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14781 version: "1.13.2",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14782 widgetEventPrefix: "slide",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14783
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14784 options: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14785 animate: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14786 classes: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14787 "ui-slider": "ui-corner-all",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14788 "ui-slider-handle": "ui-corner-all",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14789
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14790 // Note: ui-widget-header isn't the most fittingly semantic framework class for this
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14791 // element, but worked best visually with a variety of themes
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14792 "ui-slider-range": "ui-corner-all ui-widget-header"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14793 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14794 distance: 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14795 max: 100,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14796 min: 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14797 orientation: "horizontal",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14798 range: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14799 step: 1,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14800 value: 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14801 values: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14802
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14803 // Callbacks
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14804 change: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14805 slide: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14806 start: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14807 stop: null
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14808 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14809
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14810 // Number of pages in a slider
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14811 // (how many times can you page up/down to go through the whole range)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14812 numPages: 5,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14813
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14814 _create: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14815 this._keySliding = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14816 this._mouseSliding = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14817 this._animateOff = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14818 this._handleIndex = null;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14819 this._detectOrientation();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14820 this._mouseInit();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14821 this._calculateNewMax();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14822
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14823 this._addClass( "ui-slider ui-slider-" + this.orientation,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14824 "ui-widget ui-widget-content" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14825
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14826 this._refresh();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14827
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14828 this._animateOff = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14829 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14830
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14831 _refresh: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14832 this._createRange();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14833 this._createHandles();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14834 this._setupEvents();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14835 this._refreshValue();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14836 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14837
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14838 _createHandles: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14839 var i, handleCount,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14840 options = this.options,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14841 existingHandles = this.element.find( ".ui-slider-handle" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14842 handle = "<span tabindex='0'></span>",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14843 handles = [];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14844
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14845 handleCount = ( options.values && options.values.length ) || 1;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14846
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14847 if ( existingHandles.length > handleCount ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14848 existingHandles.slice( handleCount ).remove();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14849 existingHandles = existingHandles.slice( 0, handleCount );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14850 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14851
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14852 for ( i = existingHandles.length; i < handleCount; i++ ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14853 handles.push( handle );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14854 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14855
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14856 this.handles = existingHandles.add( $( handles.join( "" ) ).appendTo( this.element ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14857
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14858 this._addClass( this.handles, "ui-slider-handle", "ui-state-default" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14859
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14860 this.handle = this.handles.eq( 0 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14861
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14862 this.handles.each( function( i ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14863 $( this )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14864 .data( "ui-slider-handle-index", i )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14865 .attr( "tabIndex", 0 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14866 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14867 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14868
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14869 _createRange: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14870 var options = this.options;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14871
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14872 if ( options.range ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14873 if ( options.range === true ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14874 if ( !options.values ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14875 options.values = [ this._valueMin(), this._valueMin() ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14876 } else if ( options.values.length && options.values.length !== 2 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14877 options.values = [ options.values[ 0 ], options.values[ 0 ] ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14878 } else if ( Array.isArray( options.values ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14879 options.values = options.values.slice( 0 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14880 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14881 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14882
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14883 if ( !this.range || !this.range.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14884 this.range = $( "<div>" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14885 .appendTo( this.element );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14886
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14887 this._addClass( this.range, "ui-slider-range" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14888 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14889 this._removeClass( this.range, "ui-slider-range-min ui-slider-range-max" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14890
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14891 // Handle range switching from true to min/max
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14892 this.range.css( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14893 "left": "",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14894 "bottom": ""
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14895 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14896 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14897 if ( options.range === "min" || options.range === "max" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14898 this._addClass( this.range, "ui-slider-range-" + options.range );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14899 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14900 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14901 if ( this.range ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14902 this.range.remove();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14903 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14904 this.range = null;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14905 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14906 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14907
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14908 _setupEvents: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14909 this._off( this.handles );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14910 this._on( this.handles, this._handleEvents );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14911 this._hoverable( this.handles );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14912 this._focusable( this.handles );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14913 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14914
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14915 _destroy: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14916 this.handles.remove();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14917 if ( this.range ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14918 this.range.remove();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14919 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14920
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14921 this._mouseDestroy();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14922 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14923
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14924 _mouseCapture: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14925 var position, normValue, distance, closestHandle, index, allowed, offset, mouseOverHandle,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14926 that = this,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14927 o = this.options;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14928
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14929 if ( o.disabled ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14930 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14931 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14932
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14933 this.elementSize = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14934 width: this.element.outerWidth(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14935 height: this.element.outerHeight()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14936 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14937 this.elementOffset = this.element.offset();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14938
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14939 position = { x: event.pageX, y: event.pageY };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14940 normValue = this._normValueFromMouse( position );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14941 distance = this._valueMax() - this._valueMin() + 1;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14942 this.handles.each( function( i ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14943 var thisDistance = Math.abs( normValue - that.values( i ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14944 if ( ( distance > thisDistance ) ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14945 ( distance === thisDistance &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14946 ( i === that._lastChangedValue || that.values( i ) === o.min ) ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14947 distance = thisDistance;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14948 closestHandle = $( this );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14949 index = i;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14950 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14951 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14952
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14953 allowed = this._start( event, index );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14954 if ( allowed === false ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14955 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14956 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14957 this._mouseSliding = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14958
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14959 this._handleIndex = index;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14960
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14961 this._addClass( closestHandle, null, "ui-state-active" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14962 closestHandle.trigger( "focus" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14963
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14964 offset = closestHandle.offset();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14965 mouseOverHandle = !$( event.target ).parents().addBack().is( ".ui-slider-handle" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14966 this._clickOffset = mouseOverHandle ? { left: 0, top: 0 } : {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14967 left: event.pageX - offset.left - ( closestHandle.width() / 2 ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14968 top: event.pageY - offset.top -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14969 ( closestHandle.height() / 2 ) -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14970 ( parseInt( closestHandle.css( "borderTopWidth" ), 10 ) || 0 ) -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14971 ( parseInt( closestHandle.css( "borderBottomWidth" ), 10 ) || 0 ) +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14972 ( parseInt( closestHandle.css( "marginTop" ), 10 ) || 0 )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14973 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14974
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14975 if ( !this.handles.hasClass( "ui-state-hover" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14976 this._slide( event, index, normValue );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14977 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14978 this._animateOff = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14979 return true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14980 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14981
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14982 _mouseStart: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14983 return true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14984 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14985
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14986 _mouseDrag: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14987 var position = { x: event.pageX, y: event.pageY },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14988 normValue = this._normValueFromMouse( position );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14989
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14990 this._slide( event, this._handleIndex, normValue );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14991
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14992 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14993 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14994
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14995 _mouseStop: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14996 this._removeClass( this.handles, null, "ui-state-active" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14997 this._mouseSliding = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14998
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
14999 this._stop( event, this._handleIndex );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15000 this._change( event, this._handleIndex );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15001
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15002 this._handleIndex = null;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15003 this._clickOffset = null;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15004 this._animateOff = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15005
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15006 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15007 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15008
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15009 _detectOrientation: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15010 this.orientation = ( this.options.orientation === "vertical" ) ? "vertical" : "horizontal";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15011 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15012
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15013 _normValueFromMouse: function( position ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15014 var pixelTotal,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15015 pixelMouse,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15016 percentMouse,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15017 valueTotal,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15018 valueMouse;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15019
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15020 if ( this.orientation === "horizontal" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15021 pixelTotal = this.elementSize.width;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15022 pixelMouse = position.x - this.elementOffset.left -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15023 ( this._clickOffset ? this._clickOffset.left : 0 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15024 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15025 pixelTotal = this.elementSize.height;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15026 pixelMouse = position.y - this.elementOffset.top -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15027 ( this._clickOffset ? this._clickOffset.top : 0 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15028 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15029
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15030 percentMouse = ( pixelMouse / pixelTotal );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15031 if ( percentMouse > 1 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15032 percentMouse = 1;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15033 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15034 if ( percentMouse < 0 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15035 percentMouse = 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15036 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15037 if ( this.orientation === "vertical" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15038 percentMouse = 1 - percentMouse;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15039 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15040
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15041 valueTotal = this._valueMax() - this._valueMin();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15042 valueMouse = this._valueMin() + percentMouse * valueTotal;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15043
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15044 return this._trimAlignValue( valueMouse );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15045 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15046
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15047 _uiHash: function( index, value, values ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15048 var uiHash = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15049 handle: this.handles[ index ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15050 handleIndex: index,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15051 value: value !== undefined ? value : this.value()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15052 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15053
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15054 if ( this._hasMultipleValues() ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15055 uiHash.value = value !== undefined ? value : this.values( index );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15056 uiHash.values = values || this.values();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15057 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15058
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15059 return uiHash;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15060 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15061
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15062 _hasMultipleValues: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15063 return this.options.values && this.options.values.length;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15064 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15065
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15066 _start: function( event, index ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15067 return this._trigger( "start", event, this._uiHash( index ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15068 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15069
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15070 _slide: function( event, index, newVal ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15071 var allowed, otherVal,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15072 currentValue = this.value(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15073 newValues = this.values();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15074
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15075 if ( this._hasMultipleValues() ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15076 otherVal = this.values( index ? 0 : 1 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15077 currentValue = this.values( index );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15078
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15079 if ( this.options.values.length === 2 && this.options.range === true ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15080 newVal = index === 0 ? Math.min( otherVal, newVal ) : Math.max( otherVal, newVal );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15081 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15082
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15083 newValues[ index ] = newVal;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15084 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15085
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15086 if ( newVal === currentValue ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15087 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15088 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15089
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15090 allowed = this._trigger( "slide", event, this._uiHash( index, newVal, newValues ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15091
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15092 // A slide can be canceled by returning false from the slide callback
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15093 if ( allowed === false ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15094 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15095 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15096
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15097 if ( this._hasMultipleValues() ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15098 this.values( index, newVal );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15099 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15100 this.value( newVal );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15101 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15102 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15103
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15104 _stop: function( event, index ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15105 this._trigger( "stop", event, this._uiHash( index ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15106 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15107
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15108 _change: function( event, index ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15109 if ( !this._keySliding && !this._mouseSliding ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15110
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15111 //store the last changed value index for reference when handles overlap
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15112 this._lastChangedValue = index;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15113 this._trigger( "change", event, this._uiHash( index ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15114 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15115 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15116
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15117 value: function( newValue ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15118 if ( arguments.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15119 this.options.value = this._trimAlignValue( newValue );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15120 this._refreshValue();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15121 this._change( null, 0 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15122 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15123 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15124
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15125 return this._value();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15126 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15127
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15128 values: function( index, newValue ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15129 var vals,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15130 newValues,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15131 i;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15132
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15133 if ( arguments.length > 1 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15134 this.options.values[ index ] = this._trimAlignValue( newValue );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15135 this._refreshValue();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15136 this._change( null, index );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15137 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15138 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15139
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15140 if ( arguments.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15141 if ( Array.isArray( arguments[ 0 ] ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15142 vals = this.options.values;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15143 newValues = arguments[ 0 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15144 for ( i = 0; i < vals.length; i += 1 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15145 vals[ i ] = this._trimAlignValue( newValues[ i ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15146 this._change( null, i );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15147 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15148 this._refreshValue();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15149 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15150 if ( this._hasMultipleValues() ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15151 return this._values( index );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15152 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15153 return this.value();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15154 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15155 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15156 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15157 return this._values();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15158 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15159 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15160
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15161 _setOption: function( key, value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15162 var i,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15163 valsLength = 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15164
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15165 if ( key === "range" && this.options.range === true ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15166 if ( value === "min" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15167 this.options.value = this._values( 0 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15168 this.options.values = null;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15169 } else if ( value === "max" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15170 this.options.value = this._values( this.options.values.length - 1 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15171 this.options.values = null;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15172 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15173 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15174
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15175 if ( Array.isArray( this.options.values ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15176 valsLength = this.options.values.length;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15177 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15178
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15179 this._super( key, value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15180
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15181 switch ( key ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15182 case "orientation":
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15183 this._detectOrientation();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15184 this._removeClass( "ui-slider-horizontal ui-slider-vertical" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15185 ._addClass( "ui-slider-" + this.orientation );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15186 this._refreshValue();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15187 if ( this.options.range ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15188 this._refreshRange( value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15189 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15190
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15191 // Reset positioning from previous orientation
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15192 this.handles.css( value === "horizontal" ? "bottom" : "left", "" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15193 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15194 case "value":
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15195 this._animateOff = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15196 this._refreshValue();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15197 this._change( null, 0 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15198 this._animateOff = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15199 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15200 case "values":
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15201 this._animateOff = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15202 this._refreshValue();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15203
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15204 // Start from the last handle to prevent unreachable handles (#9046)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15205 for ( i = valsLength - 1; i >= 0; i-- ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15206 this._change( null, i );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15207 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15208 this._animateOff = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15209 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15210 case "step":
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15211 case "min":
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15212 case "max":
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15213 this._animateOff = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15214 this._calculateNewMax();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15215 this._refreshValue();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15216 this._animateOff = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15217 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15218 case "range":
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15219 this._animateOff = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15220 this._refresh();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15221 this._animateOff = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15222 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15223 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15224 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15225
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15226 _setOptionDisabled: function( value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15227 this._super( value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15228
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15229 this._toggleClass( null, "ui-state-disabled", !!value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15230 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15231
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15232 //internal value getter
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15233 // _value() returns value trimmed by min and max, aligned by step
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15234 _value: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15235 var val = this.options.value;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15236 val = this._trimAlignValue( val );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15237
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15238 return val;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15239 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15240
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15241 //internal values getter
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15242 // _values() returns array of values trimmed by min and max, aligned by step
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15243 // _values( index ) returns single value trimmed by min and max, aligned by step
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15244 _values: function( index ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15245 var val,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15246 vals,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15247 i;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15248
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15249 if ( arguments.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15250 val = this.options.values[ index ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15251 val = this._trimAlignValue( val );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15252
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15253 return val;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15254 } else if ( this._hasMultipleValues() ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15255
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15256 // .slice() creates a copy of the array
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15257 // this copy gets trimmed by min and max and then returned
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15258 vals = this.options.values.slice();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15259 for ( i = 0; i < vals.length; i += 1 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15260 vals[ i ] = this._trimAlignValue( vals[ i ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15261 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15262
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15263 return vals;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15264 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15265 return [];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15266 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15267 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15268
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15269 // Returns the step-aligned value that val is closest to, between (inclusive) min and max
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15270 _trimAlignValue: function( val ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15271 if ( val <= this._valueMin() ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15272 return this._valueMin();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15273 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15274 if ( val >= this._valueMax() ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15275 return this._valueMax();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15276 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15277 var step = ( this.options.step > 0 ) ? this.options.step : 1,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15278 valModStep = ( val - this._valueMin() ) % step,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15279 alignValue = val - valModStep;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15280
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15281 if ( Math.abs( valModStep ) * 2 >= step ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15282 alignValue += ( valModStep > 0 ) ? step : ( -step );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15283 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15284
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15285 // Since JavaScript has problems with large floats, round
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15286 // the final value to 5 digits after the decimal point (see #4124)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15287 return parseFloat( alignValue.toFixed( 5 ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15288 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15289
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15290 _calculateNewMax: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15291 var max = this.options.max,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15292 min = this._valueMin(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15293 step = this.options.step,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15294 aboveMin = Math.round( ( max - min ) / step ) * step;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15295 max = aboveMin + min;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15296 if ( max > this.options.max ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15297
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15298 //If max is not divisible by step, rounding off may increase its value
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15299 max -= step;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15300 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15301 this.max = parseFloat( max.toFixed( this._precision() ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15302 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15303
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15304 _precision: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15305 var precision = this._precisionOf( this.options.step );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15306 if ( this.options.min !== null ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15307 precision = Math.max( precision, this._precisionOf( this.options.min ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15308 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15309 return precision;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15310 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15311
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15312 _precisionOf: function( num ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15313 var str = num.toString(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15314 decimal = str.indexOf( "." );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15315 return decimal === -1 ? 0 : str.length - decimal - 1;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15316 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15317
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15318 _valueMin: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15319 return this.options.min;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15320 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15321
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15322 _valueMax: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15323 return this.max;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15324 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15325
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15326 _refreshRange: function( orientation ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15327 if ( orientation === "vertical" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15328 this.range.css( { "width": "", "left": "" } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15329 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15330 if ( orientation === "horizontal" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15331 this.range.css( { "height": "", "bottom": "" } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15332 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15333 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15334
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15335 _refreshValue: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15336 var lastValPercent, valPercent, value, valueMin, valueMax,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15337 oRange = this.options.range,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15338 o = this.options,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15339 that = this,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15340 animate = ( !this._animateOff ) ? o.animate : false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15341 _set = {};
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15342
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15343 if ( this._hasMultipleValues() ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15344 this.handles.each( function( i ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15345 valPercent = ( that.values( i ) - that._valueMin() ) / ( that._valueMax() -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15346 that._valueMin() ) * 100;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15347 _set[ that.orientation === "horizontal" ? "left" : "bottom" ] = valPercent + "%";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15348 $( this ).stop( 1, 1 )[ animate ? "animate" : "css" ]( _set, o.animate );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15349 if ( that.options.range === true ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15350 if ( that.orientation === "horizontal" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15351 if ( i === 0 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15352 that.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15353 left: valPercent + "%"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15354 }, o.animate );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15355 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15356 if ( i === 1 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15357 that.range[ animate ? "animate" : "css" ]( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15358 width: ( valPercent - lastValPercent ) + "%"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15359 }, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15360 queue: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15361 duration: o.animate
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15362 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15363 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15364 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15365 if ( i === 0 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15366 that.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15367 bottom: ( valPercent ) + "%"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15368 }, o.animate );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15369 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15370 if ( i === 1 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15371 that.range[ animate ? "animate" : "css" ]( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15372 height: ( valPercent - lastValPercent ) + "%"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15373 }, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15374 queue: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15375 duration: o.animate
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15376 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15377 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15378 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15379 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15380 lastValPercent = valPercent;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15381 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15382 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15383 value = this.value();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15384 valueMin = this._valueMin();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15385 valueMax = this._valueMax();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15386 valPercent = ( valueMax !== valueMin ) ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15387 ( value - valueMin ) / ( valueMax - valueMin ) * 100 :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15388 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15389 _set[ this.orientation === "horizontal" ? "left" : "bottom" ] = valPercent + "%";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15390 this.handle.stop( 1, 1 )[ animate ? "animate" : "css" ]( _set, o.animate );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15391
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15392 if ( oRange === "min" && this.orientation === "horizontal" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15393 this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15394 width: valPercent + "%"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15395 }, o.animate );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15396 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15397 if ( oRange === "max" && this.orientation === "horizontal" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15398 this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15399 width: ( 100 - valPercent ) + "%"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15400 }, o.animate );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15401 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15402 if ( oRange === "min" && this.orientation === "vertical" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15403 this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15404 height: valPercent + "%"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15405 }, o.animate );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15406 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15407 if ( oRange === "max" && this.orientation === "vertical" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15408 this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15409 height: ( 100 - valPercent ) + "%"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15410 }, o.animate );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15411 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15412 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15413 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15414
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15415 _handleEvents: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15416 keydown: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15417 var allowed, curVal, newVal, step,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15418 index = $( event.target ).data( "ui-slider-handle-index" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15419
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15420 switch ( event.keyCode ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15421 case $.ui.keyCode.HOME:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15422 case $.ui.keyCode.END:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15423 case $.ui.keyCode.PAGE_UP:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15424 case $.ui.keyCode.PAGE_DOWN:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15425 case $.ui.keyCode.UP:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15426 case $.ui.keyCode.RIGHT:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15427 case $.ui.keyCode.DOWN:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15428 case $.ui.keyCode.LEFT:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15429 event.preventDefault();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15430 if ( !this._keySliding ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15431 this._keySliding = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15432 this._addClass( $( event.target ), null, "ui-state-active" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15433 allowed = this._start( event, index );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15434 if ( allowed === false ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15435 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15436 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15437 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15438 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15439 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15440
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15441 step = this.options.step;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15442 if ( this._hasMultipleValues() ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15443 curVal = newVal = this.values( index );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15444 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15445 curVal = newVal = this.value();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15446 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15447
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15448 switch ( event.keyCode ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15449 case $.ui.keyCode.HOME:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15450 newVal = this._valueMin();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15451 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15452 case $.ui.keyCode.END:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15453 newVal = this._valueMax();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15454 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15455 case $.ui.keyCode.PAGE_UP:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15456 newVal = this._trimAlignValue(
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15457 curVal + ( ( this._valueMax() - this._valueMin() ) / this.numPages )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15458 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15459 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15460 case $.ui.keyCode.PAGE_DOWN:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15461 newVal = this._trimAlignValue(
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15462 curVal - ( ( this._valueMax() - this._valueMin() ) / this.numPages ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15463 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15464 case $.ui.keyCode.UP:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15465 case $.ui.keyCode.RIGHT:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15466 if ( curVal === this._valueMax() ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15467 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15468 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15469 newVal = this._trimAlignValue( curVal + step );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15470 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15471 case $.ui.keyCode.DOWN:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15472 case $.ui.keyCode.LEFT:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15473 if ( curVal === this._valueMin() ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15474 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15475 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15476 newVal = this._trimAlignValue( curVal - step );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15477 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15478 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15479
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15480 this._slide( event, index, newVal );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15481 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15482 keyup: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15483 var index = $( event.target ).data( "ui-slider-handle-index" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15484
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15485 if ( this._keySliding ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15486 this._keySliding = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15487 this._stop( event, index );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15488 this._change( event, index );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15489 this._removeClass( $( event.target ), null, "ui-state-active" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15490 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15491 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15492 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15493 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15494
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15495
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15496 /*!
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15497 * jQuery UI Sortable 1.13.2
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15498 * http://jqueryui.com
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15499 *
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15500 * Copyright jQuery Foundation and other contributors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15501 * Released under the MIT license.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15502 * http://jquery.org/license
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15503 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15504
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15505 //>>label: Sortable
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15506 //>>group: Interactions
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15507 //>>description: Enables items in a list to be sorted using the mouse.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15508 //>>docs: http://api.jqueryui.com/sortable/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15509 //>>demos: http://jqueryui.com/sortable/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15510 //>>css.structure: ../../themes/base/sortable.css
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15511
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15512
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15513 var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15514 version: "1.13.2",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15515 widgetEventPrefix: "sort",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15516 ready: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15517 options: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15518 appendTo: "parent",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15519 axis: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15520 connectWith: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15521 containment: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15522 cursor: "auto",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15523 cursorAt: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15524 dropOnEmpty: true,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15525 forcePlaceholderSize: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15526 forceHelperSize: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15527 grid: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15528 handle: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15529 helper: "original",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15530 items: "> *",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15531 opacity: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15532 placeholder: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15533 revert: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15534 scroll: true,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15535 scrollSensitivity: 20,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15536 scrollSpeed: 20,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15537 scope: "default",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15538 tolerance: "intersect",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15539 zIndex: 1000,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15540
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15541 // Callbacks
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15542 activate: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15543 beforeStop: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15544 change: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15545 deactivate: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15546 out: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15547 over: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15548 receive: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15549 remove: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15550 sort: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15551 start: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15552 stop: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15553 update: null
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15554 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15555
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15556 _isOverAxis: function( x, reference, size ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15557 return ( x >= reference ) && ( x < ( reference + size ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15558 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15559
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15560 _isFloating: function( item ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15561 return ( /left|right/ ).test( item.css( "float" ) ) ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15562 ( /inline|table-cell/ ).test( item.css( "display" ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15563 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15564
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15565 _create: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15566 this.containerCache = {};
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15567 this._addClass( "ui-sortable" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15568
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15569 //Get the items
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15570 this.refresh();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15571
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15572 //Let's determine the parent's offset
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15573 this.offset = this.element.offset();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15574
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15575 //Initialize mouse events for interaction
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15576 this._mouseInit();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15577
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15578 this._setHandleClassName();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15579
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15580 //We're ready to go
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15581 this.ready = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15582
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15583 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15584
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15585 _setOption: function( key, value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15586 this._super( key, value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15587
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15588 if ( key === "handle" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15589 this._setHandleClassName();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15590 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15591 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15592
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15593 _setHandleClassName: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15594 var that = this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15595 this._removeClass( this.element.find( ".ui-sortable-handle" ), "ui-sortable-handle" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15596 $.each( this.items, function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15597 that._addClass(
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15598 this.instance.options.handle ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15599 this.item.find( this.instance.options.handle ) :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15600 this.item,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15601 "ui-sortable-handle"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15602 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15603 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15604 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15605
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15606 _destroy: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15607 this._mouseDestroy();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15608
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15609 for ( var i = this.items.length - 1; i >= 0; i-- ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15610 this.items[ i ].item.removeData( this.widgetName + "-item" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15611 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15612
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15613 return this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15614 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15615
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15616 _mouseCapture: function( event, overrideHandle ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15617 var currentItem = null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15618 validHandle = false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15619 that = this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15620
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15621 if ( this.reverting ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15622 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15623 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15624
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15625 if ( this.options.disabled || this.options.type === "static" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15626 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15627 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15628
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15629 //We have to refresh the items data once first
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15630 this._refreshItems( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15631
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15632 //Find out if the clicked node (or one of its parents) is a actual item in this.items
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15633 $( event.target ).parents().each( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15634 if ( $.data( this, that.widgetName + "-item" ) === that ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15635 currentItem = $( this );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15636 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15637 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15638 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15639 if ( $.data( event.target, that.widgetName + "-item" ) === that ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15640 currentItem = $( event.target );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15641 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15642
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15643 if ( !currentItem ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15644 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15645 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15646 if ( this.options.handle && !overrideHandle ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15647 $( this.options.handle, currentItem ).find( "*" ).addBack().each( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15648 if ( this === event.target ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15649 validHandle = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15650 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15651 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15652 if ( !validHandle ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15653 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15654 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15655 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15656
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15657 this.currentItem = currentItem;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15658 this._removeCurrentsFromItems();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15659 return true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15660
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15661 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15662
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15663 _mouseStart: function( event, overrideHandle, noActivation ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15664
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15665 var i, body,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15666 o = this.options;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15667
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15668 this.currentContainer = this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15669
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15670 //We only need to call refreshPositions, because the refreshItems call has been moved to
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15671 // mouseCapture
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15672 this.refreshPositions();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15673
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15674 //Prepare the dragged items parent
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15675 this.appendTo = $( o.appendTo !== "parent" ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15676 o.appendTo :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15677 this.currentItem.parent() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15678
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15679 //Create and append the visible helper
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15680 this.helper = this._createHelper( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15681
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15682 //Cache the helper size
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15683 this._cacheHelperProportions();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15684
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15685 /*
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15686 * - Position generation -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15687 * This block generates everything position related - it's the core of draggables.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15688 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15689
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15690 //Cache the margins of the original element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15691 this._cacheMargins();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15692
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15693 //The element's absolute position on the page minus margins
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15694 this.offset = this.currentItem.offset();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15695 this.offset = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15696 top: this.offset.top - this.margins.top,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15697 left: this.offset.left - this.margins.left
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15698 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15699
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15700 $.extend( this.offset, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15701 click: { //Where the click happened, relative to the element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15702 left: event.pageX - this.offset.left,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15703 top: event.pageY - this.offset.top
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15704 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15705
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15706 // This is a relative to absolute position minus the actual position calculation -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15707 // only used for relative positioned helper
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15708 relative: this._getRelativeOffset()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15709 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15710
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15711 // After we get the helper offset, but before we get the parent offset we can
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15712 // change the helper's position to absolute
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15713 // TODO: Still need to figure out a way to make relative sorting possible
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15714 this.helper.css( "position", "absolute" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15715 this.cssPosition = this.helper.css( "position" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15716
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15717 //Adjust the mouse offset relative to the helper if "cursorAt" is supplied
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15718 if ( o.cursorAt ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15719 this._adjustOffsetFromHelper( o.cursorAt );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15720 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15721
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15722 //Cache the former DOM position
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15723 this.domPosition = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15724 prev: this.currentItem.prev()[ 0 ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15725 parent: this.currentItem.parent()[ 0 ]
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15726 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15727
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15728 // If the helper is not the original, hide the original so it's not playing any role during
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15729 // the drag, won't cause anything bad this way
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15730 if ( this.helper[ 0 ] !== this.currentItem[ 0 ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15731 this.currentItem.hide();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15732 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15733
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15734 //Create the placeholder
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15735 this._createPlaceholder();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15736
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15737 //Get the next scrolling parent
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15738 this.scrollParent = this.placeholder.scrollParent();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15739
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15740 $.extend( this.offset, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15741 parent: this._getParentOffset()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15742 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15743
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15744 //Set a containment if given in the options
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15745 if ( o.containment ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15746 this._setContainment();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15747 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15748
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15749 if ( o.cursor && o.cursor !== "auto" ) { // cursor option
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15750 body = this.document.find( "body" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15751
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15752 // Support: IE
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15753 this.storedCursor = body.css( "cursor" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15754 body.css( "cursor", o.cursor );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15755
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15756 this.storedStylesheet =
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15757 $( "<style>*{ cursor: " + o.cursor + " !important; }</style>" ).appendTo( body );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15758 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15759
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15760 // We need to make sure to grab the zIndex before setting the
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15761 // opacity, because setting the opacity to anything lower than 1
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15762 // causes the zIndex to change from "auto" to 0.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15763 if ( o.zIndex ) { // zIndex option
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15764 if ( this.helper.css( "zIndex" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15765 this._storedZIndex = this.helper.css( "zIndex" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15766 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15767 this.helper.css( "zIndex", o.zIndex );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15768 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15769
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15770 if ( o.opacity ) { // opacity option
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15771 if ( this.helper.css( "opacity" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15772 this._storedOpacity = this.helper.css( "opacity" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15773 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15774 this.helper.css( "opacity", o.opacity );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15775 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15776
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15777 //Prepare scrolling
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15778 if ( this.scrollParent[ 0 ] !== this.document[ 0 ] &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15779 this.scrollParent[ 0 ].tagName !== "HTML" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15780 this.overflowOffset = this.scrollParent.offset();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15781 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15782
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15783 //Call callbacks
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15784 this._trigger( "start", event, this._uiHash() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15785
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15786 //Recache the helper size
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15787 if ( !this._preserveHelperProportions ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15788 this._cacheHelperProportions();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15789 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15790
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15791 //Post "activate" events to possible containers
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15792 if ( !noActivation ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15793 for ( i = this.containers.length - 1; i >= 0; i-- ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15794 this.containers[ i ]._trigger( "activate", event, this._uiHash( this ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15795 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15796 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15797
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15798 //Prepare possible droppables
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15799 if ( $.ui.ddmanager ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15800 $.ui.ddmanager.current = this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15801 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15802
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15803 if ( $.ui.ddmanager && !o.dropBehaviour ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15804 $.ui.ddmanager.prepareOffsets( this, event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15805 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15806
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15807 this.dragging = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15808
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15809 this._addClass( this.helper, "ui-sortable-helper" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15810
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15811 //Move the helper, if needed
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15812 if ( !this.helper.parent().is( this.appendTo ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15813 this.helper.detach().appendTo( this.appendTo );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15814
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15815 //Update position
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15816 this.offset.parent = this._getParentOffset();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15817 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15818
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15819 //Generate the original position
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15820 this.position = this.originalPosition = this._generatePosition( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15821 this.originalPageX = event.pageX;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15822 this.originalPageY = event.pageY;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15823 this.lastPositionAbs = this.positionAbs = this._convertPositionTo( "absolute" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15824
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15825 this._mouseDrag( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15826
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15827 return true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15828
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15829 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15830
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15831 _scroll: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15832 var o = this.options,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15833 scrolled = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15834
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15835 if ( this.scrollParent[ 0 ] !== this.document[ 0 ] &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15836 this.scrollParent[ 0 ].tagName !== "HTML" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15837
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15838 if ( ( this.overflowOffset.top + this.scrollParent[ 0 ].offsetHeight ) -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15839 event.pageY < o.scrollSensitivity ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15840 this.scrollParent[ 0 ].scrollTop =
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15841 scrolled = this.scrollParent[ 0 ].scrollTop + o.scrollSpeed;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15842 } else if ( event.pageY - this.overflowOffset.top < o.scrollSensitivity ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15843 this.scrollParent[ 0 ].scrollTop =
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15844 scrolled = this.scrollParent[ 0 ].scrollTop - o.scrollSpeed;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15845 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15846
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15847 if ( ( this.overflowOffset.left + this.scrollParent[ 0 ].offsetWidth ) -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15848 event.pageX < o.scrollSensitivity ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15849 this.scrollParent[ 0 ].scrollLeft = scrolled =
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15850 this.scrollParent[ 0 ].scrollLeft + o.scrollSpeed;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15851 } else if ( event.pageX - this.overflowOffset.left < o.scrollSensitivity ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15852 this.scrollParent[ 0 ].scrollLeft = scrolled =
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15853 this.scrollParent[ 0 ].scrollLeft - o.scrollSpeed;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15854 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15855
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15856 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15857
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15858 if ( event.pageY - this.document.scrollTop() < o.scrollSensitivity ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15859 scrolled = this.document.scrollTop( this.document.scrollTop() - o.scrollSpeed );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15860 } else if ( this.window.height() - ( event.pageY - this.document.scrollTop() ) <
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15861 o.scrollSensitivity ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15862 scrolled = this.document.scrollTop( this.document.scrollTop() + o.scrollSpeed );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15863 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15864
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15865 if ( event.pageX - this.document.scrollLeft() < o.scrollSensitivity ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15866 scrolled = this.document.scrollLeft(
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15867 this.document.scrollLeft() - o.scrollSpeed
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15868 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15869 } else if ( this.window.width() - ( event.pageX - this.document.scrollLeft() ) <
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15870 o.scrollSensitivity ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15871 scrolled = this.document.scrollLeft(
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15872 this.document.scrollLeft() + o.scrollSpeed
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15873 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15874 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15875
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15876 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15877
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15878 return scrolled;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15879 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15880
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15881 _mouseDrag: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15882 var i, item, itemElement, intersection,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15883 o = this.options;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15884
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15885 //Compute the helpers position
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15886 this.position = this._generatePosition( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15887 this.positionAbs = this._convertPositionTo( "absolute" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15888
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15889 //Set the helper position
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15890 if ( !this.options.axis || this.options.axis !== "y" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15891 this.helper[ 0 ].style.left = this.position.left + "px";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15892 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15893 if ( !this.options.axis || this.options.axis !== "x" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15894 this.helper[ 0 ].style.top = this.position.top + "px";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15895 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15896
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15897 //Do scrolling
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15898 if ( o.scroll ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15899 if ( this._scroll( event ) !== false ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15900
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15901 //Update item positions used in position checks
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15902 this._refreshItemPositions( true );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15903
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15904 if ( $.ui.ddmanager && !o.dropBehaviour ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15905 $.ui.ddmanager.prepareOffsets( this, event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15906 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15907 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15908 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15909
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15910 this.dragDirection = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15911 vertical: this._getDragVerticalDirection(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15912 horizontal: this._getDragHorizontalDirection()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15913 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15914
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15915 //Rearrange
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15916 for ( i = this.items.length - 1; i >= 0; i-- ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15917
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15918 //Cache variables and intersection, continue if no intersection
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15919 item = this.items[ i ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15920 itemElement = item.item[ 0 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15921 intersection = this._intersectsWithPointer( item );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15922 if ( !intersection ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15923 continue;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15924 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15925
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15926 // Only put the placeholder inside the current Container, skip all
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15927 // items from other containers. This works because when moving
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15928 // an item from one container to another the
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15929 // currentContainer is switched before the placeholder is moved.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15930 //
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15931 // Without this, moving items in "sub-sortables" can cause
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15932 // the placeholder to jitter between the outer and inner container.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15933 if ( item.instance !== this.currentContainer ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15934 continue;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15935 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15936
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15937 // Cannot intersect with itself
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15938 // no useless actions that have been done before
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15939 // no action if the item moved is the parent of the item checked
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15940 if ( itemElement !== this.currentItem[ 0 ] &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15941 this.placeholder[ intersection === 1 ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15942 "next" : "prev" ]()[ 0 ] !== itemElement &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15943 !$.contains( this.placeholder[ 0 ], itemElement ) &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15944 ( this.options.type === "semi-dynamic" ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15945 !$.contains( this.element[ 0 ], itemElement ) :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15946 true
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15947 )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15948 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15949
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15950 this.direction = intersection === 1 ? "down" : "up";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15951
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15952 if ( this.options.tolerance === "pointer" ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15953 this._intersectsWithSides( item ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15954 this._rearrange( event, item );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15955 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15956 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15957 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15958
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15959 this._trigger( "change", event, this._uiHash() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15960 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15961 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15962 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15963
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15964 //Post events to containers
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15965 this._contactContainers( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15966
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15967 //Interconnect with droppables
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15968 if ( $.ui.ddmanager ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15969 $.ui.ddmanager.drag( this, event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15970 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15971
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15972 //Call callbacks
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15973 this._trigger( "sort", event, this._uiHash() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15974
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15975 this.lastPositionAbs = this.positionAbs;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15976 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15977
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15978 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15979
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15980 _mouseStop: function( event, noPropagation ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15981
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15982 if ( !event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15983 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15984 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15985
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15986 //If we are using droppables, inform the manager about the drop
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15987 if ( $.ui.ddmanager && !this.options.dropBehaviour ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15988 $.ui.ddmanager.drop( this, event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15989 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15990
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15991 if ( this.options.revert ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15992 var that = this,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15993 cur = this.placeholder.offset(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15994 axis = this.options.axis,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15995 animation = {};
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15996
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15997 if ( !axis || axis === "x" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15998 animation.left = cur.left - this.offset.parent.left - this.margins.left +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15999 ( this.offsetParent[ 0 ] === this.document[ 0 ].body ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16000 0 :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16001 this.offsetParent[ 0 ].scrollLeft
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16002 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16003 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16004 if ( !axis || axis === "y" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16005 animation.top = cur.top - this.offset.parent.top - this.margins.top +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16006 ( this.offsetParent[ 0 ] === this.document[ 0 ].body ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16007 0 :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16008 this.offsetParent[ 0 ].scrollTop
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16009 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16010 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16011 this.reverting = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16012 $( this.helper ).animate(
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16013 animation,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16014 parseInt( this.options.revert, 10 ) || 500,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16015 function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16016 that._clear( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16017 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16018 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16019 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16020 this._clear( event, noPropagation );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16021 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16022
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16023 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16024
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16025 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16026
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16027 cancel: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16028
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16029 if ( this.dragging ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16030
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16031 this._mouseUp( new $.Event( "mouseup", { target: null } ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16032
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16033 if ( this.options.helper === "original" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16034 this.currentItem.css( this._storedCSS );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16035 this._removeClass( this.currentItem, "ui-sortable-helper" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16036 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16037 this.currentItem.show();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16038 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16039
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16040 //Post deactivating events to containers
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16041 for ( var i = this.containers.length - 1; i >= 0; i-- ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16042 this.containers[ i ]._trigger( "deactivate", null, this._uiHash( this ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16043 if ( this.containers[ i ].containerCache.over ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16044 this.containers[ i ]._trigger( "out", null, this._uiHash( this ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16045 this.containers[ i ].containerCache.over = 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16046 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16047 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16048
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16049 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16050
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16051 if ( this.placeholder ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16052
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16053 //$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16054 // it unbinds ALL events from the original node!
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16055 if ( this.placeholder[ 0 ].parentNode ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16056 this.placeholder[ 0 ].parentNode.removeChild( this.placeholder[ 0 ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16057 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16058 if ( this.options.helper !== "original" && this.helper &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16059 this.helper[ 0 ].parentNode ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16060 this.helper.remove();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16061 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16062
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16063 $.extend( this, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16064 helper: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16065 dragging: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16066 reverting: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16067 _noFinalSort: null
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16068 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16069
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16070 if ( this.domPosition.prev ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16071 $( this.domPosition.prev ).after( this.currentItem );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16072 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16073 $( this.domPosition.parent ).prepend( this.currentItem );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16074 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16075 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16076
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16077 return this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16078
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16079 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16080
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16081 serialize: function( o ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16082
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16083 var items = this._getItemsAsjQuery( o && o.connected ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16084 str = [];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16085 o = o || {};
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16086
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16087 $( items ).each( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16088 var res = ( $( o.item || this ).attr( o.attribute || "id" ) || "" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16089 .match( o.expression || ( /(.+)[\-=_](.+)/ ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16090 if ( res ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16091 str.push(
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16092 ( o.key || res[ 1 ] + "[]" ) +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16093 "=" + ( o.key && o.expression ? res[ 1 ] : res[ 2 ] ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16094 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16095 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16096
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16097 if ( !str.length && o.key ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16098 str.push( o.key + "=" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16099 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16100
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16101 return str.join( "&" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16102
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16103 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16104
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16105 toArray: function( o ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16106
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16107 var items = this._getItemsAsjQuery( o && o.connected ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16108 ret = [];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16109
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16110 o = o || {};
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16111
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16112 items.each( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16113 ret.push( $( o.item || this ).attr( o.attribute || "id" ) || "" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16114 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16115 return ret;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16116
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16117 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16118
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16119 /* Be careful with the following core functions */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16120 _intersectsWith: function( item ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16121
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16122 var x1 = this.positionAbs.left,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16123 x2 = x1 + this.helperProportions.width,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16124 y1 = this.positionAbs.top,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16125 y2 = y1 + this.helperProportions.height,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16126 l = item.left,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16127 r = l + item.width,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16128 t = item.top,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16129 b = t + item.height,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16130 dyClick = this.offset.click.top,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16131 dxClick = this.offset.click.left,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16132 isOverElementHeight = ( this.options.axis === "x" ) || ( ( y1 + dyClick ) > t &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16133 ( y1 + dyClick ) < b ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16134 isOverElementWidth = ( this.options.axis === "y" ) || ( ( x1 + dxClick ) > l &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16135 ( x1 + dxClick ) < r ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16136 isOverElement = isOverElementHeight && isOverElementWidth;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16137
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16138 if ( this.options.tolerance === "pointer" ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16139 this.options.forcePointerForContainers ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16140 ( this.options.tolerance !== "pointer" &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16141 this.helperProportions[ this.floating ? "width" : "height" ] >
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16142 item[ this.floating ? "width" : "height" ] )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16143 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16144 return isOverElement;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16145 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16146
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16147 return ( l < x1 + ( this.helperProportions.width / 2 ) && // Right Half
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16148 x2 - ( this.helperProportions.width / 2 ) < r && // Left Half
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16149 t < y1 + ( this.helperProportions.height / 2 ) && // Bottom Half
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16150 y2 - ( this.helperProportions.height / 2 ) < b ); // Top Half
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16151
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16152 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16153 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16154
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16155 _intersectsWithPointer: function( item ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16156 var verticalDirection, horizontalDirection,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16157 isOverElementHeight = ( this.options.axis === "x" ) ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16158 this._isOverAxis(
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16159 this.positionAbs.top + this.offset.click.top, item.top, item.height ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16160 isOverElementWidth = ( this.options.axis === "y" ) ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16161 this._isOverAxis(
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16162 this.positionAbs.left + this.offset.click.left, item.left, item.width ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16163 isOverElement = isOverElementHeight && isOverElementWidth;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16164
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16165 if ( !isOverElement ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16166 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16167 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16168
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16169 verticalDirection = this.dragDirection.vertical;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16170 horizontalDirection = this.dragDirection.horizontal;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16171
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16172 return this.floating ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16173 ( ( horizontalDirection === "right" || verticalDirection === "down" ) ? 2 : 1 ) :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16174 ( verticalDirection && ( verticalDirection === "down" ? 2 : 1 ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16175
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16176 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16177
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16178 _intersectsWithSides: function( item ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16179
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16180 var isOverBottomHalf = this._isOverAxis( this.positionAbs.top +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16181 this.offset.click.top, item.top + ( item.height / 2 ), item.height ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16182 isOverRightHalf = this._isOverAxis( this.positionAbs.left +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16183 this.offset.click.left, item.left + ( item.width / 2 ), item.width ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16184 verticalDirection = this.dragDirection.vertical,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16185 horizontalDirection = this.dragDirection.horizontal;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16186
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16187 if ( this.floating && horizontalDirection ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16188 return ( ( horizontalDirection === "right" && isOverRightHalf ) ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16189 ( horizontalDirection === "left" && !isOverRightHalf ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16190 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16191 return verticalDirection && ( ( verticalDirection === "down" && isOverBottomHalf ) ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16192 ( verticalDirection === "up" && !isOverBottomHalf ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16193 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16194
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16195 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16196
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16197 _getDragVerticalDirection: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16198 var delta = this.positionAbs.top - this.lastPositionAbs.top;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16199 return delta !== 0 && ( delta > 0 ? "down" : "up" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16200 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16201
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16202 _getDragHorizontalDirection: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16203 var delta = this.positionAbs.left - this.lastPositionAbs.left;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16204 return delta !== 0 && ( delta > 0 ? "right" : "left" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16205 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16206
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16207 refresh: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16208 this._refreshItems( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16209 this._setHandleClassName();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16210 this.refreshPositions();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16211 return this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16212 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16213
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16214 _connectWith: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16215 var options = this.options;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16216 return options.connectWith.constructor === String ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16217 [ options.connectWith ] :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16218 options.connectWith;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16219 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16220
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16221 _getItemsAsjQuery: function( connected ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16222
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16223 var i, j, cur, inst,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16224 items = [],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16225 queries = [],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16226 connectWith = this._connectWith();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16227
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16228 if ( connectWith && connected ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16229 for ( i = connectWith.length - 1; i >= 0; i-- ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16230 cur = $( connectWith[ i ], this.document[ 0 ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16231 for ( j = cur.length - 1; j >= 0; j-- ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16232 inst = $.data( cur[ j ], this.widgetFullName );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16233 if ( inst && inst !== this && !inst.options.disabled ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16234 queries.push( [ typeof inst.options.items === "function" ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16235 inst.options.items.call( inst.element ) :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16236 $( inst.options.items, inst.element )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16237 .not( ".ui-sortable-helper" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16238 .not( ".ui-sortable-placeholder" ), inst ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16239 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16240 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16241 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16242 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16243
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16244 queries.push( [ typeof this.options.items === "function" ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16245 this.options.items
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16246 .call( this.element, null, { options: this.options, item: this.currentItem } ) :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16247 $( this.options.items, this.element )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16248 .not( ".ui-sortable-helper" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16249 .not( ".ui-sortable-placeholder" ), this ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16250
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16251 function addItems() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16252 items.push( this );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16253 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16254 for ( i = queries.length - 1; i >= 0; i-- ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16255 queries[ i ][ 0 ].each( addItems );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16256 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16257
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16258 return $( items );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16259
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16260 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16261
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16262 _removeCurrentsFromItems: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16263
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16264 var list = this.currentItem.find( ":data(" + this.widgetName + "-item)" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16265
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16266 this.items = $.grep( this.items, function( item ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16267 for ( var j = 0; j < list.length; j++ ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16268 if ( list[ j ] === item.item[ 0 ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16269 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16270 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16271 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16272 return true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16273 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16274
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16275 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16276
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16277 _refreshItems: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16278
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16279 this.items = [];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16280 this.containers = [ this ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16281
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16282 var i, j, cur, inst, targetData, _queries, item, queriesLength,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16283 items = this.items,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16284 queries = [ [ typeof this.options.items === "function" ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16285 this.options.items.call( this.element[ 0 ], event, { item: this.currentItem } ) :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16286 $( this.options.items, this.element ), this ] ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16287 connectWith = this._connectWith();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16288
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16289 //Shouldn't be run the first time through due to massive slow-down
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16290 if ( connectWith && this.ready ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16291 for ( i = connectWith.length - 1; i >= 0; i-- ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16292 cur = $( connectWith[ i ], this.document[ 0 ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16293 for ( j = cur.length - 1; j >= 0; j-- ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16294 inst = $.data( cur[ j ], this.widgetFullName );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16295 if ( inst && inst !== this && !inst.options.disabled ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16296 queries.push( [ typeof inst.options.items === "function" ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16297 inst.options.items
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16298 .call( inst.element[ 0 ], event, { item: this.currentItem } ) :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16299 $( inst.options.items, inst.element ), inst ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16300 this.containers.push( inst );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16301 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16302 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16303 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16304 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16305
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16306 for ( i = queries.length - 1; i >= 0; i-- ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16307 targetData = queries[ i ][ 1 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16308 _queries = queries[ i ][ 0 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16309
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16310 for ( j = 0, queriesLength = _queries.length; j < queriesLength; j++ ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16311 item = $( _queries[ j ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16312
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16313 // Data for target checking (mouse manager)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16314 item.data( this.widgetName + "-item", targetData );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16315
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16316 items.push( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16317 item: item,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16318 instance: targetData,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16319 width: 0, height: 0,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16320 left: 0, top: 0
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16321 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16322 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16323 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16324
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16325 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16326
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16327 _refreshItemPositions: function( fast ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16328 var i, item, t, p;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16329
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16330 for ( i = this.items.length - 1; i >= 0; i-- ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16331 item = this.items[ i ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16332
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16333 //We ignore calculating positions of all connected containers when we're not over them
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16334 if ( this.currentContainer && item.instance !== this.currentContainer &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16335 item.item[ 0 ] !== this.currentItem[ 0 ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16336 continue;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16337 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16338
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16339 t = this.options.toleranceElement ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16340 $( this.options.toleranceElement, item.item ) :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16341 item.item;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16342
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16343 if ( !fast ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16344 item.width = t.outerWidth();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16345 item.height = t.outerHeight();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16346 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16347
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16348 p = t.offset();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16349 item.left = p.left;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16350 item.top = p.top;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16351 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16352 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16353
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16354 refreshPositions: function( fast ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16355
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16356 // Determine whether items are being displayed horizontally
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16357 this.floating = this.items.length ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16358 this.options.axis === "x" || this._isFloating( this.items[ 0 ].item ) :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16359 false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16360
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16361 // This has to be redone because due to the item being moved out/into the offsetParent,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16362 // the offsetParent's position will change
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16363 if ( this.offsetParent && this.helper ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16364 this.offset.parent = this._getParentOffset();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16365 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16366
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16367 this._refreshItemPositions( fast );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16368
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16369 var i, p;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16370
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16371 if ( this.options.custom && this.options.custom.refreshContainers ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16372 this.options.custom.refreshContainers.call( this );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16373 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16374 for ( i = this.containers.length - 1; i >= 0; i-- ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16375 p = this.containers[ i ].element.offset();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16376 this.containers[ i ].containerCache.left = p.left;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16377 this.containers[ i ].containerCache.top = p.top;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16378 this.containers[ i ].containerCache.width =
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16379 this.containers[ i ].element.outerWidth();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16380 this.containers[ i ].containerCache.height =
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16381 this.containers[ i ].element.outerHeight();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16382 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16383 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16384
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16385 return this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16386 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16387
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16388 _createPlaceholder: function( that ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16389 that = that || this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16390 var className, nodeName,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16391 o = that.options;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16392
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16393 if ( !o.placeholder || o.placeholder.constructor === String ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16394 className = o.placeholder;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16395 nodeName = that.currentItem[ 0 ].nodeName.toLowerCase();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16396 o.placeholder = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16397 element: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16398
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16399 var element = $( "<" + nodeName + ">", that.document[ 0 ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16400
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16401 that._addClass( element, "ui-sortable-placeholder",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16402 className || that.currentItem[ 0 ].className )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16403 ._removeClass( element, "ui-sortable-helper" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16404
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16405 if ( nodeName === "tbody" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16406 that._createTrPlaceholder(
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16407 that.currentItem.find( "tr" ).eq( 0 ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16408 $( "<tr>", that.document[ 0 ] ).appendTo( element )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16409 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16410 } else if ( nodeName === "tr" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16411 that._createTrPlaceholder( that.currentItem, element );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16412 } else if ( nodeName === "img" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16413 element.attr( "src", that.currentItem.attr( "src" ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16414 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16415
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16416 if ( !className ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16417 element.css( "visibility", "hidden" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16418 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16419
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16420 return element;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16421 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16422 update: function( container, p ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16423
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16424 // 1. If a className is set as 'placeholder option, we don't force sizes -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16425 // the class is responsible for that
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16426 // 2. The option 'forcePlaceholderSize can be enabled to force it even if a
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16427 // class name is specified
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16428 if ( className && !o.forcePlaceholderSize ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16429 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16430 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16431
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16432 // If the element doesn't have a actual height or width by itself (without
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16433 // styles coming from a stylesheet), it receives the inline height and width
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16434 // from the dragged item. Or, if it's a tbody or tr, it's going to have a height
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16435 // anyway since we're populating them with <td>s above, but they're unlikely to
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16436 // be the correct height on their own if the row heights are dynamic, so we'll
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16437 // always assign the height of the dragged item given forcePlaceholderSize
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16438 // is true.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16439 if ( !p.height() || ( o.forcePlaceholderSize &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16440 ( nodeName === "tbody" || nodeName === "tr" ) ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16441 p.height(
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16442 that.currentItem.innerHeight() -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16443 parseInt( that.currentItem.css( "paddingTop" ) || 0, 10 ) -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16444 parseInt( that.currentItem.css( "paddingBottom" ) || 0, 10 ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16445 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16446 if ( !p.width() ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16447 p.width(
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16448 that.currentItem.innerWidth() -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16449 parseInt( that.currentItem.css( "paddingLeft" ) || 0, 10 ) -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16450 parseInt( that.currentItem.css( "paddingRight" ) || 0, 10 ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16451 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16452 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16453 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16454 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16455
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16456 //Create the placeholder
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16457 that.placeholder = $( o.placeholder.element.call( that.element, that.currentItem ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16458
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16459 //Append it after the actual current item
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16460 that.currentItem.after( that.placeholder );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16461
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16462 //Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16463 o.placeholder.update( that, that.placeholder );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16464
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16465 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16466
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16467 _createTrPlaceholder: function( sourceTr, targetTr ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16468 var that = this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16469
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16470 sourceTr.children().each( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16471 $( "<td>&#160;</td>", that.document[ 0 ] )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16472 .attr( "colspan", $( this ).attr( "colspan" ) || 1 )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16473 .appendTo( targetTr );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16474 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16475 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16476
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16477 _contactContainers: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16478 var i, j, dist, itemWithLeastDistance, posProperty, sizeProperty, cur, nearBottom,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16479 floating, axis,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16480 innermostContainer = null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16481 innermostIndex = null;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16482
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16483 // Get innermost container that intersects with item
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16484 for ( i = this.containers.length - 1; i >= 0; i-- ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16485
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16486 // Never consider a container that's located within the item itself
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16487 if ( $.contains( this.currentItem[ 0 ], this.containers[ i ].element[ 0 ] ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16488 continue;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16489 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16490
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16491 if ( this._intersectsWith( this.containers[ i ].containerCache ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16492
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16493 // If we've already found a container and it's more "inner" than this, then continue
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16494 if ( innermostContainer &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16495 $.contains(
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16496 this.containers[ i ].element[ 0 ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16497 innermostContainer.element[ 0 ] ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16498 continue;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16499 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16500
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16501 innermostContainer = this.containers[ i ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16502 innermostIndex = i;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16503
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16504 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16505
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16506 // container doesn't intersect. trigger "out" event if necessary
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16507 if ( this.containers[ i ].containerCache.over ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16508 this.containers[ i ]._trigger( "out", event, this._uiHash( this ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16509 this.containers[ i ].containerCache.over = 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16510 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16511 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16512
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16513 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16514
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16515 // If no intersecting containers found, return
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16516 if ( !innermostContainer ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16517 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16518 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16519
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16520 // Move the item into the container if it's not there already
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16521 if ( this.containers.length === 1 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16522 if ( !this.containers[ innermostIndex ].containerCache.over ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16523 this.containers[ innermostIndex ]._trigger( "over", event, this._uiHash( this ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16524 this.containers[ innermostIndex ].containerCache.over = 1;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16525 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16526 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16527
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16528 // When entering a new container, we will find the item with the least distance and
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16529 // append our item near it
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16530 dist = 10000;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16531 itemWithLeastDistance = null;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16532 floating = innermostContainer.floating || this._isFloating( this.currentItem );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16533 posProperty = floating ? "left" : "top";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16534 sizeProperty = floating ? "width" : "height";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16535 axis = floating ? "pageX" : "pageY";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16536
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16537 for ( j = this.items.length - 1; j >= 0; j-- ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16538 if ( !$.contains(
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16539 this.containers[ innermostIndex ].element[ 0 ], this.items[ j ].item[ 0 ] )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16540 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16541 continue;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16542 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16543 if ( this.items[ j ].item[ 0 ] === this.currentItem[ 0 ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16544 continue;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16545 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16546
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16547 cur = this.items[ j ].item.offset()[ posProperty ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16548 nearBottom = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16549 if ( event[ axis ] - cur > this.items[ j ][ sizeProperty ] / 2 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16550 nearBottom = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16551 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16552
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16553 if ( Math.abs( event[ axis ] - cur ) < dist ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16554 dist = Math.abs( event[ axis ] - cur );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16555 itemWithLeastDistance = this.items[ j ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16556 this.direction = nearBottom ? "up" : "down";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16557 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16558 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16559
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16560 //Check if dropOnEmpty is enabled
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16561 if ( !itemWithLeastDistance && !this.options.dropOnEmpty ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16562 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16563 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16564
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16565 if ( this.currentContainer === this.containers[ innermostIndex ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16566 if ( !this.currentContainer.containerCache.over ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16567 this.containers[ innermostIndex ]._trigger( "over", event, this._uiHash() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16568 this.currentContainer.containerCache.over = 1;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16569 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16570 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16571 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16572
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16573 if ( itemWithLeastDistance ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16574 this._rearrange( event, itemWithLeastDistance, null, true );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16575 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16576 this._rearrange( event, null, this.containers[ innermostIndex ].element, true );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16577 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16578 this._trigger( "change", event, this._uiHash() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16579 this.containers[ innermostIndex ]._trigger( "change", event, this._uiHash( this ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16580 this.currentContainer = this.containers[ innermostIndex ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16581
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16582 //Update the placeholder
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16583 this.options.placeholder.update( this.currentContainer, this.placeholder );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16584
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16585 //Update scrollParent
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16586 this.scrollParent = this.placeholder.scrollParent();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16587
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16588 //Update overflowOffset
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16589 if ( this.scrollParent[ 0 ] !== this.document[ 0 ] &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16590 this.scrollParent[ 0 ].tagName !== "HTML" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16591 this.overflowOffset = this.scrollParent.offset();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16592 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16593
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16594 this.containers[ innermostIndex ]._trigger( "over", event, this._uiHash( this ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16595 this.containers[ innermostIndex ].containerCache.over = 1;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16596 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16597
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16598 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16599
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16600 _createHelper: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16601
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16602 var o = this.options,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16603 helper = typeof o.helper === "function" ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16604 $( o.helper.apply( this.element[ 0 ], [ event, this.currentItem ] ) ) :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16605 ( o.helper === "clone" ? this.currentItem.clone() : this.currentItem );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16606
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16607 //Add the helper to the DOM if that didn't happen already
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16608 if ( !helper.parents( "body" ).length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16609 this.appendTo[ 0 ].appendChild( helper[ 0 ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16610 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16611
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16612 if ( helper[ 0 ] === this.currentItem[ 0 ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16613 this._storedCSS = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16614 width: this.currentItem[ 0 ].style.width,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16615 height: this.currentItem[ 0 ].style.height,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16616 position: this.currentItem.css( "position" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16617 top: this.currentItem.css( "top" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16618 left: this.currentItem.css( "left" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16619 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16620 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16621
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16622 if ( !helper[ 0 ].style.width || o.forceHelperSize ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16623 helper.width( this.currentItem.width() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16624 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16625 if ( !helper[ 0 ].style.height || o.forceHelperSize ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16626 helper.height( this.currentItem.height() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16627 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16628
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16629 return helper;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16630
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16631 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16632
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16633 _adjustOffsetFromHelper: function( obj ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16634 if ( typeof obj === "string" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16635 obj = obj.split( " " );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16636 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16637 if ( Array.isArray( obj ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16638 obj = { left: +obj[ 0 ], top: +obj[ 1 ] || 0 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16639 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16640 if ( "left" in obj ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16641 this.offset.click.left = obj.left + this.margins.left;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16642 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16643 if ( "right" in obj ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16644 this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16645 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16646 if ( "top" in obj ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16647 this.offset.click.top = obj.top + this.margins.top;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16648 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16649 if ( "bottom" in obj ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16650 this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16651 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16652 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16653
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16654 _getParentOffset: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16655
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16656 //Get the offsetParent and cache its position
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16657 this.offsetParent = this.helper.offsetParent();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16658 var po = this.offsetParent.offset();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16659
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16660 // This is a special case where we need to modify a offset calculated on start, since the
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16661 // following happened:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16662 // 1. The position of the helper is absolute, so it's position is calculated based on the
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16663 // next positioned parent
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16664 // 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16665 // the document, which means that the scroll is included in the initial calculation of the
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16666 // offset of the parent, and never recalculated upon drag
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16667 if ( this.cssPosition === "absolute" && this.scrollParent[ 0 ] !== this.document[ 0 ] &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16668 $.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16669 po.left += this.scrollParent.scrollLeft();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16670 po.top += this.scrollParent.scrollTop();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16671 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16672
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16673 // This needs to be actually done for all browsers, since pageX/pageY includes this
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16674 // information with an ugly IE fix
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16675 if ( this.offsetParent[ 0 ] === this.document[ 0 ].body ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16676 ( this.offsetParent[ 0 ].tagName &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16677 this.offsetParent[ 0 ].tagName.toLowerCase() === "html" && $.ui.ie ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16678 po = { top: 0, left: 0 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16679 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16680
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16681 return {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16682 top: po.top + ( parseInt( this.offsetParent.css( "borderTopWidth" ), 10 ) || 0 ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16683 left: po.left + ( parseInt( this.offsetParent.css( "borderLeftWidth" ), 10 ) || 0 )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16684 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16685
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16686 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16687
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16688 _getRelativeOffset: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16689
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16690 if ( this.cssPosition === "relative" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16691 var p = this.currentItem.position();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16692 return {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16693 top: p.top - ( parseInt( this.helper.css( "top" ), 10 ) || 0 ) +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16694 this.scrollParent.scrollTop(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16695 left: p.left - ( parseInt( this.helper.css( "left" ), 10 ) || 0 ) +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16696 this.scrollParent.scrollLeft()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16697 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16698 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16699 return { top: 0, left: 0 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16700 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16701
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16702 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16703
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16704 _cacheMargins: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16705 this.margins = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16706 left: ( parseInt( this.currentItem.css( "marginLeft" ), 10 ) || 0 ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16707 top: ( parseInt( this.currentItem.css( "marginTop" ), 10 ) || 0 )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16708 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16709 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16710
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16711 _cacheHelperProportions: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16712 this.helperProportions = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16713 width: this.helper.outerWidth(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16714 height: this.helper.outerHeight()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16715 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16716 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16717
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16718 _setContainment: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16719
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16720 var ce, co, over,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16721 o = this.options;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16722 if ( o.containment === "parent" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16723 o.containment = this.helper[ 0 ].parentNode;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16724 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16725 if ( o.containment === "document" || o.containment === "window" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16726 this.containment = [
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16727 0 - this.offset.relative.left - this.offset.parent.left,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16728 0 - this.offset.relative.top - this.offset.parent.top,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16729 o.containment === "document" ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16730 this.document.width() :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16731 this.window.width() - this.helperProportions.width - this.margins.left,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16732 ( o.containment === "document" ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16733 ( this.document.height() || document.body.parentNode.scrollHeight ) :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16734 this.window.height() || this.document[ 0 ].body.parentNode.scrollHeight
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16735 ) - this.helperProportions.height - this.margins.top
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16736 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16737 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16738
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16739 if ( !( /^(document|window|parent)$/ ).test( o.containment ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16740 ce = $( o.containment )[ 0 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16741 co = $( o.containment ).offset();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16742 over = ( $( ce ).css( "overflow" ) !== "hidden" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16743
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16744 this.containment = [
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16745 co.left + ( parseInt( $( ce ).css( "borderLeftWidth" ), 10 ) || 0 ) +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16746 ( parseInt( $( ce ).css( "paddingLeft" ), 10 ) || 0 ) - this.margins.left,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16747 co.top + ( parseInt( $( ce ).css( "borderTopWidth" ), 10 ) || 0 ) +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16748 ( parseInt( $( ce ).css( "paddingTop" ), 10 ) || 0 ) - this.margins.top,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16749 co.left + ( over ? Math.max( ce.scrollWidth, ce.offsetWidth ) : ce.offsetWidth ) -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16750 ( parseInt( $( ce ).css( "borderLeftWidth" ), 10 ) || 0 ) -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16751 ( parseInt( $( ce ).css( "paddingRight" ), 10 ) || 0 ) -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16752 this.helperProportions.width - this.margins.left,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16753 co.top + ( over ? Math.max( ce.scrollHeight, ce.offsetHeight ) : ce.offsetHeight ) -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16754 ( parseInt( $( ce ).css( "borderTopWidth" ), 10 ) || 0 ) -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16755 ( parseInt( $( ce ).css( "paddingBottom" ), 10 ) || 0 ) -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16756 this.helperProportions.height - this.margins.top
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16757 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16758 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16759
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16760 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16761
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16762 _convertPositionTo: function( d, pos ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16763
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16764 if ( !pos ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16765 pos = this.position;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16766 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16767 var mod = d === "absolute" ? 1 : -1,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16768 scroll = this.cssPosition === "absolute" &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16769 !( this.scrollParent[ 0 ] !== this.document[ 0 ] &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16770 $.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16771 this.offsetParent :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16772 this.scrollParent,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16773 scrollIsRootNode = ( /(html|body)/i ).test( scroll[ 0 ].tagName );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16774
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16775 return {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16776 top: (
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16777
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16778 // The absolute mouse position
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16779 pos.top +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16780
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16781 // Only for relative positioned nodes: Relative offset from element to offset parent
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16782 this.offset.relative.top * mod +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16783
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16784 // The offsetParent's offset without borders (offset + border)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16785 this.offset.parent.top * mod -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16786 ( ( this.cssPosition === "fixed" ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16787 -this.scrollParent.scrollTop() :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16788 ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16789 ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16790 left: (
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16791
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16792 // The absolute mouse position
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16793 pos.left +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16794
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16795 // Only for relative positioned nodes: Relative offset from element to offset parent
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16796 this.offset.relative.left * mod +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16797
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16798 // The offsetParent's offset without borders (offset + border)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16799 this.offset.parent.left * mod -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16800 ( ( this.cssPosition === "fixed" ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16801 -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16802 scroll.scrollLeft() ) * mod )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16803 )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16804 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16805
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16806 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16807
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16808 _generatePosition: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16809
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16810 var top, left,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16811 o = this.options,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16812 pageX = event.pageX,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16813 pageY = event.pageY,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16814 scroll = this.cssPosition === "absolute" &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16815 !( this.scrollParent[ 0 ] !== this.document[ 0 ] &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16816 $.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16817 this.offsetParent :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16818 this.scrollParent,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16819 scrollIsRootNode = ( /(html|body)/i ).test( scroll[ 0 ].tagName );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16820
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16821 // This is another very weird special case that only happens for relative elements:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16822 // 1. If the css position is relative
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16823 // 2. and the scroll parent is the document or similar to the offset parent
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16824 // we have to refresh the relative offset during the scroll so there are no jumps
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16825 if ( this.cssPosition === "relative" && !( this.scrollParent[ 0 ] !== this.document[ 0 ] &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16826 this.scrollParent[ 0 ] !== this.offsetParent[ 0 ] ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16827 this.offset.relative = this._getRelativeOffset();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16828 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16829
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16830 /*
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16831 * - Position constraining -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16832 * Constrain the position to a mix of grid, containment.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16833 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16834
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16835 if ( this.originalPosition ) { //If we are not dragging yet, we won't check for options
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16836
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16837 if ( this.containment ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16838 if ( event.pageX - this.offset.click.left < this.containment[ 0 ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16839 pageX = this.containment[ 0 ] + this.offset.click.left;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16840 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16841 if ( event.pageY - this.offset.click.top < this.containment[ 1 ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16842 pageY = this.containment[ 1 ] + this.offset.click.top;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16843 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16844 if ( event.pageX - this.offset.click.left > this.containment[ 2 ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16845 pageX = this.containment[ 2 ] + this.offset.click.left;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16846 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16847 if ( event.pageY - this.offset.click.top > this.containment[ 3 ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16848 pageY = this.containment[ 3 ] + this.offset.click.top;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16849 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16850 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16851
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16852 if ( o.grid ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16853 top = this.originalPageY + Math.round( ( pageY - this.originalPageY ) /
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16854 o.grid[ 1 ] ) * o.grid[ 1 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16855 pageY = this.containment ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16856 ( ( top - this.offset.click.top >= this.containment[ 1 ] &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16857 top - this.offset.click.top <= this.containment[ 3 ] ) ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16858 top :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16859 ( ( top - this.offset.click.top >= this.containment[ 1 ] ) ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16860 top - o.grid[ 1 ] : top + o.grid[ 1 ] ) ) :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16861 top;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16862
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16863 left = this.originalPageX + Math.round( ( pageX - this.originalPageX ) /
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16864 o.grid[ 0 ] ) * o.grid[ 0 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16865 pageX = this.containment ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16866 ( ( left - this.offset.click.left >= this.containment[ 0 ] &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16867 left - this.offset.click.left <= this.containment[ 2 ] ) ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16868 left :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16869 ( ( left - this.offset.click.left >= this.containment[ 0 ] ) ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16870 left - o.grid[ 0 ] : left + o.grid[ 0 ] ) ) :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16871 left;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16872 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16873
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16874 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16875
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16876 return {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16877 top: (
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16878
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16879 // The absolute mouse position
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16880 pageY -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16881
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16882 // Click offset (relative to the element)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16883 this.offset.click.top -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16884
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16885 // Only for relative positioned nodes: Relative offset from element to offset parent
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16886 this.offset.relative.top -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16887
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16888 // The offsetParent's offset without borders (offset + border)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16889 this.offset.parent.top +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16890 ( ( this.cssPosition === "fixed" ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16891 -this.scrollParent.scrollTop() :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16892 ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16893 ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16894 left: (
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16895
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16896 // The absolute mouse position
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16897 pageX -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16898
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16899 // Click offset (relative to the element)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16900 this.offset.click.left -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16901
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16902 // Only for relative positioned nodes: Relative offset from element to offset parent
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16903 this.offset.relative.left -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16904
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16905 // The offsetParent's offset without borders (offset + border)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16906 this.offset.parent.left +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16907 ( ( this.cssPosition === "fixed" ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16908 -this.scrollParent.scrollLeft() :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16909 scrollIsRootNode ? 0 : scroll.scrollLeft() ) )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16910 )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16911 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16912
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16913 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16914
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16915 _rearrange: function( event, i, a, hardRefresh ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16916
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16917 if ( a ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16918 a[ 0 ].appendChild( this.placeholder[ 0 ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16919 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16920 i.item[ 0 ].parentNode.insertBefore( this.placeholder[ 0 ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16921 ( this.direction === "down" ? i.item[ 0 ] : i.item[ 0 ].nextSibling ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16922 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16923
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16924 //Various things done here to improve the performance:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16925 // 1. we create a setTimeout, that calls refreshPositions
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16926 // 2. on the instance, we have a counter variable, that get's higher after every append
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16927 // 3. on the local scope, we copy the counter variable, and check in the timeout,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16928 // if it's still the same
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16929 // 4. this lets only the last addition to the timeout stack through
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16930 this.counter = this.counter ? ++this.counter : 1;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16931 var counter = this.counter;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16932
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16933 this._delay( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16934 if ( counter === this.counter ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16935
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16936 //Precompute after each DOM insertion, NOT on mousemove
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16937 this.refreshPositions( !hardRefresh );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16938 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16939 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16940
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16941 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16942
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16943 _clear: function( event, noPropagation ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16944
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16945 this.reverting = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16946
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16947 // We delay all events that have to be triggered to after the point where the placeholder
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16948 // has been removed and everything else normalized again
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16949 var i,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16950 delayedTriggers = [];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16951
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16952 // We first have to update the dom position of the actual currentItem
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16953 // Note: don't do it if the current item is already removed (by a user), or it gets
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16954 // reappended (see #4088)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16955 if ( !this._noFinalSort && this.currentItem.parent().length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16956 this.placeholder.before( this.currentItem );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16957 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16958 this._noFinalSort = null;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16959
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16960 if ( this.helper[ 0 ] === this.currentItem[ 0 ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16961 for ( i in this._storedCSS ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16962 if ( this._storedCSS[ i ] === "auto" || this._storedCSS[ i ] === "static" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16963 this._storedCSS[ i ] = "";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16964 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16965 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16966 this.currentItem.css( this._storedCSS );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16967 this._removeClass( this.currentItem, "ui-sortable-helper" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16968 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16969 this.currentItem.show();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16970 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16971
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16972 if ( this.fromOutside && !noPropagation ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16973 delayedTriggers.push( function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16974 this._trigger( "receive", event, this._uiHash( this.fromOutside ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16975 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16976 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16977 if ( ( this.fromOutside ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16978 this.domPosition.prev !==
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16979 this.currentItem.prev().not( ".ui-sortable-helper" )[ 0 ] ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16980 this.domPosition.parent !== this.currentItem.parent()[ 0 ] ) && !noPropagation ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16981
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16982 // Trigger update callback if the DOM position has changed
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16983 delayedTriggers.push( function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16984 this._trigger( "update", event, this._uiHash() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16985 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16986 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16987
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16988 // Check if the items Container has Changed and trigger appropriate
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16989 // events.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16990 if ( this !== this.currentContainer ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16991 if ( !noPropagation ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16992 delayedTriggers.push( function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16993 this._trigger( "remove", event, this._uiHash() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16994 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16995 delayedTriggers.push( ( function( c ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16996 return function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16997 c._trigger( "receive", event, this._uiHash( this ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16998 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16999 } ).call( this, this.currentContainer ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17000 delayedTriggers.push( ( function( c ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17001 return function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17002 c._trigger( "update", event, this._uiHash( this ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17003 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17004 } ).call( this, this.currentContainer ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17005 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17006 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17007
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17008 //Post events to containers
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17009 function delayEvent( type, instance, container ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17010 return function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17011 container._trigger( type, event, instance._uiHash( instance ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17012 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17013 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17014 for ( i = this.containers.length - 1; i >= 0; i-- ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17015 if ( !noPropagation ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17016 delayedTriggers.push( delayEvent( "deactivate", this, this.containers[ i ] ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17017 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17018 if ( this.containers[ i ].containerCache.over ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17019 delayedTriggers.push( delayEvent( "out", this, this.containers[ i ] ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17020 this.containers[ i ].containerCache.over = 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17021 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17022 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17023
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17024 //Do what was originally in plugins
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17025 if ( this.storedCursor ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17026 this.document.find( "body" ).css( "cursor", this.storedCursor );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17027 this.storedStylesheet.remove();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17028 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17029 if ( this._storedOpacity ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17030 this.helper.css( "opacity", this._storedOpacity );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17031 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17032 if ( this._storedZIndex ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17033 this.helper.css( "zIndex", this._storedZIndex === "auto" ? "" : this._storedZIndex );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17034 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17035
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17036 this.dragging = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17037
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17038 if ( !noPropagation ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17039 this._trigger( "beforeStop", event, this._uiHash() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17040 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17041
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17042 //$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17043 // it unbinds ALL events from the original node!
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17044 this.placeholder[ 0 ].parentNode.removeChild( this.placeholder[ 0 ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17045
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17046 if ( !this.cancelHelperRemoval ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17047 if ( this.helper[ 0 ] !== this.currentItem[ 0 ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17048 this.helper.remove();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17049 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17050 this.helper = null;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17051 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17052
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17053 if ( !noPropagation ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17054 for ( i = 0; i < delayedTriggers.length; i++ ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17055
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17056 // Trigger all delayed events
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17057 delayedTriggers[ i ].call( this, event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17058 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17059 this._trigger( "stop", event, this._uiHash() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17060 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17061
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17062 this.fromOutside = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17063 return !this.cancelHelperRemoval;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17064
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17065 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17066
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17067 _trigger: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17068 if ( $.Widget.prototype._trigger.apply( this, arguments ) === false ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17069 this.cancel();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17070 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17071 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17072
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17073 _uiHash: function( _inst ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17074 var inst = _inst || this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17075 return {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17076 helper: inst.helper,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17077 placeholder: inst.placeholder || $( [] ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17078 position: inst.position,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17079 originalPosition: inst.originalPosition,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17080 offset: inst.positionAbs,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17081 item: inst.currentItem,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17082 sender: _inst ? _inst.element : null
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17083 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17084 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17085
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17086 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17087
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17088
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17089 /*!
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17090 * jQuery UI Spinner 1.13.2
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17091 * http://jqueryui.com
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17092 *
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17093 * Copyright jQuery Foundation and other contributors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17094 * Released under the MIT license.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17095 * http://jquery.org/license
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17096 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17097
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17098 //>>label: Spinner
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17099 //>>group: Widgets
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17100 //>>description: Displays buttons to easily input numbers via the keyboard or mouse.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17101 //>>docs: http://api.jqueryui.com/spinner/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17102 //>>demos: http://jqueryui.com/spinner/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17103 //>>css.structure: ../../themes/base/core.css
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17104 //>>css.structure: ../../themes/base/spinner.css
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17105 //>>css.theme: ../../themes/base/theme.css
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17106
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17107
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17108 function spinnerModifier( fn ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17109 return function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17110 var previous = this.element.val();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17111 fn.apply( this, arguments );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17112 this._refresh();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17113 if ( previous !== this.element.val() ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17114 this._trigger( "change" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17115 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17116 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17117 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17118
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17119 $.widget( "ui.spinner", {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17120 version: "1.13.2",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17121 defaultElement: "<input>",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17122 widgetEventPrefix: "spin",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17123 options: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17124 classes: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17125 "ui-spinner": "ui-corner-all",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17126 "ui-spinner-down": "ui-corner-br",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17127 "ui-spinner-up": "ui-corner-tr"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17128 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17129 culture: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17130 icons: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17131 down: "ui-icon-triangle-1-s",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17132 up: "ui-icon-triangle-1-n"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17133 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17134 incremental: true,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17135 max: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17136 min: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17137 numberFormat: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17138 page: 10,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17139 step: 1,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17140
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17141 change: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17142 spin: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17143 start: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17144 stop: null
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17145 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17146
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17147 _create: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17148
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17149 // handle string values that need to be parsed
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17150 this._setOption( "max", this.options.max );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17151 this._setOption( "min", this.options.min );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17152 this._setOption( "step", this.options.step );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17153
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17154 // Only format if there is a value, prevents the field from being marked
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17155 // as invalid in Firefox, see #9573.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17156 if ( this.value() !== "" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17157
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17158 // Format the value, but don't constrain.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17159 this._value( this.element.val(), true );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17160 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17161
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17162 this._draw();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17163 this._on( this._events );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17164 this._refresh();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17165
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17166 // Turning off autocomplete prevents the browser from remembering the
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17167 // value when navigating through history, so we re-enable autocomplete
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17168 // if the page is unloaded before the widget is destroyed. #7790
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17169 this._on( this.window, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17170 beforeunload: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17171 this.element.removeAttr( "autocomplete" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17172 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17173 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17174 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17175
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17176 _getCreateOptions: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17177 var options = this._super();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17178 var element = this.element;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17179
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17180 $.each( [ "min", "max", "step" ], function( i, option ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17181 var value = element.attr( option );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17182 if ( value != null && value.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17183 options[ option ] = value;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17184 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17185 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17186
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17187 return options;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17188 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17189
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17190 _events: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17191 keydown: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17192 if ( this._start( event ) && this._keydown( event ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17193 event.preventDefault();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17194 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17195 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17196 keyup: "_stop",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17197 focus: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17198 this.previous = this.element.val();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17199 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17200 blur: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17201 if ( this.cancelBlur ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17202 delete this.cancelBlur;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17203 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17204 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17205
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17206 this._stop();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17207 this._refresh();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17208 if ( this.previous !== this.element.val() ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17209 this._trigger( "change", event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17210 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17211 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17212 mousewheel: function( event, delta ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17213 var activeElement = $.ui.safeActiveElement( this.document[ 0 ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17214 var isActive = this.element[ 0 ] === activeElement;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17215
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17216 if ( !isActive || !delta ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17217 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17218 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17219
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17220 if ( !this.spinning && !this._start( event ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17221 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17222 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17223
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17224 this._spin( ( delta > 0 ? 1 : -1 ) * this.options.step, event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17225 clearTimeout( this.mousewheelTimer );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17226 this.mousewheelTimer = this._delay( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17227 if ( this.spinning ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17228 this._stop( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17229 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17230 }, 100 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17231 event.preventDefault();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17232 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17233 "mousedown .ui-spinner-button": function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17234 var previous;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17235
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17236 // We never want the buttons to have focus; whenever the user is
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17237 // interacting with the spinner, the focus should be on the input.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17238 // If the input is focused then this.previous is properly set from
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17239 // when the input first received focus. If the input is not focused
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17240 // then we need to set this.previous based on the value before spinning.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17241 previous = this.element[ 0 ] === $.ui.safeActiveElement( this.document[ 0 ] ) ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17242 this.previous : this.element.val();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17243 function checkFocus() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17244 var isActive = this.element[ 0 ] === $.ui.safeActiveElement( this.document[ 0 ] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17245 if ( !isActive ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17246 this.element.trigger( "focus" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17247 this.previous = previous;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17248
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17249 // support: IE
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17250 // IE sets focus asynchronously, so we need to check if focus
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17251 // moved off of the input because the user clicked on the button.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17252 this._delay( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17253 this.previous = previous;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17254 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17255 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17256 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17257
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17258 // Ensure focus is on (or stays on) the text field
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17259 event.preventDefault();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17260 checkFocus.call( this );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17261
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17262 // Support: IE
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17263 // IE doesn't prevent moving focus even with event.preventDefault()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17264 // so we set a flag to know when we should ignore the blur event
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17265 // and check (again) if focus moved off of the input.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17266 this.cancelBlur = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17267 this._delay( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17268 delete this.cancelBlur;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17269 checkFocus.call( this );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17270 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17271
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17272 if ( this._start( event ) === false ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17273 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17274 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17275
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17276 this._repeat( null, $( event.currentTarget )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17277 .hasClass( "ui-spinner-up" ) ? 1 : -1, event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17278 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17279 "mouseup .ui-spinner-button": "_stop",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17280 "mouseenter .ui-spinner-button": function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17281
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17282 // button will add ui-state-active if mouse was down while mouseleave and kept down
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17283 if ( !$( event.currentTarget ).hasClass( "ui-state-active" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17284 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17285 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17286
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17287 if ( this._start( event ) === false ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17288 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17289 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17290 this._repeat( null, $( event.currentTarget )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17291 .hasClass( "ui-spinner-up" ) ? 1 : -1, event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17292 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17293
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17294 // TODO: do we really want to consider this a stop?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17295 // shouldn't we just stop the repeater and wait until mouseup before
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17296 // we trigger the stop event?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17297 "mouseleave .ui-spinner-button": "_stop"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17298 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17299
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17300 // Support mobile enhanced option and make backcompat more sane
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17301 _enhance: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17302 this.uiSpinner = this.element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17303 .attr( "autocomplete", "off" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17304 .wrap( "<span>" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17305 .parent()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17306
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17307 // Add buttons
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17308 .append(
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17309 "<a></a><a></a>"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17310 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17311 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17312
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17313 _draw: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17314 this._enhance();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17315
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17316 this._addClass( this.uiSpinner, "ui-spinner", "ui-widget ui-widget-content" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17317 this._addClass( "ui-spinner-input" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17318
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17319 this.element.attr( "role", "spinbutton" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17320
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17321 // Button bindings
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17322 this.buttons = this.uiSpinner.children( "a" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17323 .attr( "tabIndex", -1 )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17324 .attr( "aria-hidden", true )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17325 .button( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17326 classes: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17327 "ui-button": ""
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17328 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17329 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17330
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17331 // TODO: Right now button does not support classes this is already updated in button PR
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17332 this._removeClass( this.buttons, "ui-corner-all" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17333
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17334 this._addClass( this.buttons.first(), "ui-spinner-button ui-spinner-up" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17335 this._addClass( this.buttons.last(), "ui-spinner-button ui-spinner-down" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17336 this.buttons.first().button( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17337 "icon": this.options.icons.up,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17338 "showLabel": false
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17339 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17340 this.buttons.last().button( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17341 "icon": this.options.icons.down,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17342 "showLabel": false
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17343 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17344
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17345 // IE 6 doesn't understand height: 50% for the buttons
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17346 // unless the wrapper has an explicit height
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17347 if ( this.buttons.height() > Math.ceil( this.uiSpinner.height() * 0.5 ) &&
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17348 this.uiSpinner.height() > 0 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17349 this.uiSpinner.height( this.uiSpinner.height() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17350 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17351 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17352
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17353 _keydown: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17354 var options = this.options,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17355 keyCode = $.ui.keyCode;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17356
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17357 switch ( event.keyCode ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17358 case keyCode.UP:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17359 this._repeat( null, 1, event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17360 return true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17361 case keyCode.DOWN:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17362 this._repeat( null, -1, event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17363 return true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17364 case keyCode.PAGE_UP:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17365 this._repeat( null, options.page, event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17366 return true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17367 case keyCode.PAGE_DOWN:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17368 this._repeat( null, -options.page, event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17369 return true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17370 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17371
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17372 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17373 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17374
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17375 _start: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17376 if ( !this.spinning && this._trigger( "start", event ) === false ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17377 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17378 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17379
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17380 if ( !this.counter ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17381 this.counter = 1;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17382 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17383 this.spinning = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17384 return true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17385 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17386
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17387 _repeat: function( i, steps, event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17388 i = i || 500;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17389
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17390 clearTimeout( this.timer );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17391 this.timer = this._delay( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17392 this._repeat( 40, steps, event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17393 }, i );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17394
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17395 this._spin( steps * this.options.step, event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17396 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17397
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17398 _spin: function( step, event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17399 var value = this.value() || 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17400
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17401 if ( !this.counter ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17402 this.counter = 1;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17403 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17404
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17405 value = this._adjustValue( value + step * this._increment( this.counter ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17406
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17407 if ( !this.spinning || this._trigger( "spin", event, { value: value } ) !== false ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17408 this._value( value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17409 this.counter++;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17410 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17411 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17412
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17413 _increment: function( i ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17414 var incremental = this.options.incremental;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17415
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17416 if ( incremental ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17417 return typeof incremental === "function" ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17418 incremental( i ) :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17419 Math.floor( i * i * i / 50000 - i * i / 500 + 17 * i / 200 + 1 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17420 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17421
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17422 return 1;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17423 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17424
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17425 _precision: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17426 var precision = this._precisionOf( this.options.step );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17427 if ( this.options.min !== null ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17428 precision = Math.max( precision, this._precisionOf( this.options.min ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17429 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17430 return precision;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17431 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17432
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17433 _precisionOf: function( num ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17434 var str = num.toString(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17435 decimal = str.indexOf( "." );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17436 return decimal === -1 ? 0 : str.length - decimal - 1;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17437 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17438
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17439 _adjustValue: function( value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17440 var base, aboveMin,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17441 options = this.options;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17442
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17443 // Make sure we're at a valid step
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17444 // - find out where we are relative to the base (min or 0)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17445 base = options.min !== null ? options.min : 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17446 aboveMin = value - base;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17447
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17448 // - round to the nearest step
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17449 aboveMin = Math.round( aboveMin / options.step ) * options.step;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17450
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17451 // - rounding is based on 0, so adjust back to our base
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17452 value = base + aboveMin;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17453
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17454 // Fix precision from bad JS floating point math
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17455 value = parseFloat( value.toFixed( this._precision() ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17456
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17457 // Clamp the value
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17458 if ( options.max !== null && value > options.max ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17459 return options.max;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17460 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17461 if ( options.min !== null && value < options.min ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17462 return options.min;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17463 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17464
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17465 return value;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17466 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17467
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17468 _stop: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17469 if ( !this.spinning ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17470 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17471 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17472
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17473 clearTimeout( this.timer );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17474 clearTimeout( this.mousewheelTimer );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17475 this.counter = 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17476 this.spinning = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17477 this._trigger( "stop", event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17478 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17479
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17480 _setOption: function( key, value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17481 var prevValue, first, last;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17482
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17483 if ( key === "culture" || key === "numberFormat" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17484 prevValue = this._parse( this.element.val() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17485 this.options[ key ] = value;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17486 this.element.val( this._format( prevValue ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17487 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17488 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17489
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17490 if ( key === "max" || key === "min" || key === "step" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17491 if ( typeof value === "string" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17492 value = this._parse( value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17493 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17494 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17495 if ( key === "icons" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17496 first = this.buttons.first().find( ".ui-icon" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17497 this._removeClass( first, null, this.options.icons.up );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17498 this._addClass( first, null, value.up );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17499 last = this.buttons.last().find( ".ui-icon" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17500 this._removeClass( last, null, this.options.icons.down );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17501 this._addClass( last, null, value.down );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17502 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17503
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17504 this._super( key, value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17505 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17506
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17507 _setOptionDisabled: function( value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17508 this._super( value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17509
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17510 this._toggleClass( this.uiSpinner, null, "ui-state-disabled", !!value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17511 this.element.prop( "disabled", !!value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17512 this.buttons.button( value ? "disable" : "enable" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17513 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17514
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17515 _setOptions: spinnerModifier( function( options ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17516 this._super( options );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17517 } ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17518
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17519 _parse: function( val ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17520 if ( typeof val === "string" && val !== "" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17521 val = window.Globalize && this.options.numberFormat ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17522 Globalize.parseFloat( val, 10, this.options.culture ) : +val;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17523 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17524 return val === "" || isNaN( val ) ? null : val;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17525 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17526
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17527 _format: function( value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17528 if ( value === "" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17529 return "";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17530 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17531 return window.Globalize && this.options.numberFormat ?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17532 Globalize.format( value, this.options.numberFormat, this.options.culture ) :
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17533 value;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17534 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17535
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17536 _refresh: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17537 this.element.attr( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17538 "aria-valuemin": this.options.min,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17539 "aria-valuemax": this.options.max,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17540
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17541 // TODO: what should we do with values that can't be parsed?
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17542 "aria-valuenow": this._parse( this.element.val() )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17543 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17544 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17545
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17546 isValid: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17547 var value = this.value();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17548
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17549 // Null is invalid
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17550 if ( value === null ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17551 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17552 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17553
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17554 // If value gets adjusted, it's invalid
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17555 return value === this._adjustValue( value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17556 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17557
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17558 // Update the value without triggering change
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17559 _value: function( value, allowAny ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17560 var parsed;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17561 if ( value !== "" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17562 parsed = this._parse( value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17563 if ( parsed !== null ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17564 if ( !allowAny ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17565 parsed = this._adjustValue( parsed );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17566 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17567 value = this._format( parsed );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17568 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17569 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17570 this.element.val( value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17571 this._refresh();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17572 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17573
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17574 _destroy: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17575 this.element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17576 .prop( "disabled", false )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17577 .removeAttr( "autocomplete role aria-valuemin aria-valuemax aria-valuenow" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17578
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17579 this.uiSpinner.replaceWith( this.element );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17580 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17581
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17582 stepUp: spinnerModifier( function( steps ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17583 this._stepUp( steps );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17584 } ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17585 _stepUp: function( steps ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17586 if ( this._start() ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17587 this._spin( ( steps || 1 ) * this.options.step );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17588 this._stop();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17589 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17590 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17591
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17592 stepDown: spinnerModifier( function( steps ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17593 this._stepDown( steps );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17594 } ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17595 _stepDown: function( steps ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17596 if ( this._start() ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17597 this._spin( ( steps || 1 ) * -this.options.step );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17598 this._stop();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17599 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17600 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17601
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17602 pageUp: spinnerModifier( function( pages ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17603 this._stepUp( ( pages || 1 ) * this.options.page );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17604 } ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17605
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17606 pageDown: spinnerModifier( function( pages ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17607 this._stepDown( ( pages || 1 ) * this.options.page );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17608 } ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17609
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17610 value: function( newVal ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17611 if ( !arguments.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17612 return this._parse( this.element.val() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17613 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17614 spinnerModifier( this._value ).call( this, newVal );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17615 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17616
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17617 widget: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17618 return this.uiSpinner;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17619 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17620 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17621
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17622 // DEPRECATED
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17623 // TODO: switch return back to widget declaration at top of file when this is removed
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17624 if ( $.uiBackCompat !== false ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17625
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17626 // Backcompat for spinner html extension points
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17627 $.widget( "ui.spinner", $.ui.spinner, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17628 _enhance: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17629 this.uiSpinner = this.element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17630 .attr( "autocomplete", "off" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17631 .wrap( this._uiSpinnerHtml() )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17632 .parent()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17633
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17634 // Add buttons
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17635 .append( this._buttonHtml() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17636 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17637 _uiSpinnerHtml: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17638 return "<span>";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17639 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17640
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17641 _buttonHtml: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17642 return "<a></a><a></a>";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17643 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17644 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17645 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17646
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17647 var widgetsSpinner = $.ui.spinner;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17648
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17649
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17650 /*!
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17651 * jQuery UI Tabs 1.13.2
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17652 * http://jqueryui.com
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17653 *
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17654 * Copyright jQuery Foundation and other contributors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17655 * Released under the MIT license.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17656 * http://jquery.org/license
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17657 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17658
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17659 //>>label: Tabs
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17660 //>>group: Widgets
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17661 //>>description: Transforms a set of container elements into a tab structure.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17662 //>>docs: http://api.jqueryui.com/tabs/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17663 //>>demos: http://jqueryui.com/tabs/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17664 //>>css.structure: ../../themes/base/core.css
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17665 //>>css.structure: ../../themes/base/tabs.css
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17666 //>>css.theme: ../../themes/base/theme.css
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17667
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17668
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17669 $.widget( "ui.tabs", {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17670 version: "1.13.2",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17671 delay: 300,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17672 options: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17673 active: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17674 classes: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17675 "ui-tabs": "ui-corner-all",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17676 "ui-tabs-nav": "ui-corner-all",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17677 "ui-tabs-panel": "ui-corner-bottom",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17678 "ui-tabs-tab": "ui-corner-top"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17679 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17680 collapsible: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17681 event: "click",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17682 heightStyle: "content",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17683 hide: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17684 show: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17685
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17686 // Callbacks
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17687 activate: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17688 beforeActivate: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17689 beforeLoad: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17690 load: null
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17691 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17692
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17693 _isLocal: ( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17694 var rhash = /#.*$/;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17695
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17696 return function( anchor ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17697 var anchorUrl, locationUrl;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17698
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17699 anchorUrl = anchor.href.replace( rhash, "" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17700 locationUrl = location.href.replace( rhash, "" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17701
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17702 // Decoding may throw an error if the URL isn't UTF-8 (#9518)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17703 try {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17704 anchorUrl = decodeURIComponent( anchorUrl );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17705 } catch ( error ) {}
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17706 try {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17707 locationUrl = decodeURIComponent( locationUrl );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17708 } catch ( error ) {}
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17709
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17710 return anchor.hash.length > 1 && anchorUrl === locationUrl;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17711 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17712 } )(),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17713
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17714 _create: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17715 var that = this,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17716 options = this.options;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17717
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17718 this.running = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17719
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17720 this._addClass( "ui-tabs", "ui-widget ui-widget-content" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17721 this._toggleClass( "ui-tabs-collapsible", null, options.collapsible );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17722
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17723 this._processTabs();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17724 options.active = this._initialActive();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17725
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17726 // Take disabling tabs via class attribute from HTML
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17727 // into account and update option properly.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17728 if ( Array.isArray( options.disabled ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17729 options.disabled = $.uniqueSort( options.disabled.concat(
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17730 $.map( this.tabs.filter( ".ui-state-disabled" ), function( li ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17731 return that.tabs.index( li );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17732 } )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17733 ) ).sort();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17734 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17735
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17736 // Check for length avoids error when initializing empty list
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17737 if ( this.options.active !== false && this.anchors.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17738 this.active = this._findActive( options.active );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17739 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17740 this.active = $();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17741 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17742
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17743 this._refresh();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17744
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17745 if ( this.active.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17746 this.load( options.active );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17747 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17748 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17749
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17750 _initialActive: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17751 var active = this.options.active,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17752 collapsible = this.options.collapsible,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17753 locationHash = location.hash.substring( 1 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17754
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17755 if ( active === null ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17756
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17757 // check the fragment identifier in the URL
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17758 if ( locationHash ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17759 this.tabs.each( function( i, tab ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17760 if ( $( tab ).attr( "aria-controls" ) === locationHash ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17761 active = i;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17762 return false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17763 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17764 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17765 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17766
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17767 // Check for a tab marked active via a class
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17768 if ( active === null ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17769 active = this.tabs.index( this.tabs.filter( ".ui-tabs-active" ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17770 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17771
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17772 // No active tab, set to false
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17773 if ( active === null || active === -1 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17774 active = this.tabs.length ? 0 : false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17775 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17776 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17777
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17778 // Handle numbers: negative, out of range
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17779 if ( active !== false ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17780 active = this.tabs.index( this.tabs.eq( active ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17781 if ( active === -1 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17782 active = collapsible ? false : 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17783 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17784 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17785
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17786 // Don't allow collapsible: false and active: false
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17787 if ( !collapsible && active === false && this.anchors.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17788 active = 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17789 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17790
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17791 return active;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17792 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17793
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17794 _getCreateEventData: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17795 return {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17796 tab: this.active,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17797 panel: !this.active.length ? $() : this._getPanelForTab( this.active )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17798 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17799 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17800
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17801 _tabKeydown: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17802 var focusedTab = $( $.ui.safeActiveElement( this.document[ 0 ] ) ).closest( "li" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17803 selectedIndex = this.tabs.index( focusedTab ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17804 goingForward = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17805
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17806 if ( this._handlePageNav( event ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17807 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17808 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17809
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17810 switch ( event.keyCode ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17811 case $.ui.keyCode.RIGHT:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17812 case $.ui.keyCode.DOWN:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17813 selectedIndex++;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17814 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17815 case $.ui.keyCode.UP:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17816 case $.ui.keyCode.LEFT:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17817 goingForward = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17818 selectedIndex--;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17819 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17820 case $.ui.keyCode.END:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17821 selectedIndex = this.anchors.length - 1;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17822 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17823 case $.ui.keyCode.HOME:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17824 selectedIndex = 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17825 break;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17826 case $.ui.keyCode.SPACE:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17827
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17828 // Activate only, no collapsing
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17829 event.preventDefault();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17830 clearTimeout( this.activating );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17831 this._activate( selectedIndex );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17832 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17833 case $.ui.keyCode.ENTER:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17834
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17835 // Toggle (cancel delayed activation, allow collapsing)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17836 event.preventDefault();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17837 clearTimeout( this.activating );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17838
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17839 // Determine if we should collapse or activate
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17840 this._activate( selectedIndex === this.options.active ? false : selectedIndex );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17841 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17842 default:
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17843 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17844 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17845
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17846 // Focus the appropriate tab, based on which key was pressed
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17847 event.preventDefault();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17848 clearTimeout( this.activating );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17849 selectedIndex = this._focusNextTab( selectedIndex, goingForward );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17850
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17851 // Navigating with control/command key will prevent automatic activation
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17852 if ( !event.ctrlKey && !event.metaKey ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17853
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17854 // Update aria-selected immediately so that AT think the tab is already selected.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17855 // Otherwise AT may confuse the user by stating that they need to activate the tab,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17856 // but the tab will already be activated by the time the announcement finishes.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17857 focusedTab.attr( "aria-selected", "false" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17858 this.tabs.eq( selectedIndex ).attr( "aria-selected", "true" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17859
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17860 this.activating = this._delay( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17861 this.option( "active", selectedIndex );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17862 }, this.delay );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17863 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17864 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17865
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17866 _panelKeydown: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17867 if ( this._handlePageNav( event ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17868 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17869 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17870
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17871 // Ctrl+up moves focus to the current tab
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17872 if ( event.ctrlKey && event.keyCode === $.ui.keyCode.UP ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17873 event.preventDefault();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17874 this.active.trigger( "focus" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17875 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17876 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17877
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17878 // Alt+page up/down moves focus to the previous/next tab (and activates)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17879 _handlePageNav: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17880 if ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_UP ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17881 this._activate( this._focusNextTab( this.options.active - 1, false ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17882 return true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17883 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17884 if ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_DOWN ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17885 this._activate( this._focusNextTab( this.options.active + 1, true ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17886 return true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17887 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17888 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17889
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17890 _findNextTab: function( index, goingForward ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17891 var lastTabIndex = this.tabs.length - 1;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17892
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17893 function constrain() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17894 if ( index > lastTabIndex ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17895 index = 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17896 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17897 if ( index < 0 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17898 index = lastTabIndex;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17899 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17900 return index;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17901 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17902
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17903 while ( $.inArray( constrain(), this.options.disabled ) !== -1 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17904 index = goingForward ? index + 1 : index - 1;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17905 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17906
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17907 return index;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17908 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17909
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17910 _focusNextTab: function( index, goingForward ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17911 index = this._findNextTab( index, goingForward );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17912 this.tabs.eq( index ).trigger( "focus" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17913 return index;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17914 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17915
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17916 _setOption: function( key, value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17917 if ( key === "active" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17918
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17919 // _activate() will handle invalid values and update this.options
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17920 this._activate( value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17921 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17922 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17923
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17924 this._super( key, value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17925
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17926 if ( key === "collapsible" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17927 this._toggleClass( "ui-tabs-collapsible", null, value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17928
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17929 // Setting collapsible: false while collapsed; open first panel
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17930 if ( !value && this.options.active === false ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17931 this._activate( 0 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17932 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17933 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17934
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17935 if ( key === "event" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17936 this._setupEvents( value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17937 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17938
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17939 if ( key === "heightStyle" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17940 this._setupHeightStyle( value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17941 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17942 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17943
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17944 _sanitizeSelector: function( hash ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17945 return hash ? hash.replace( /[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g, "\\$&" ) : "";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17946 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17947
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17948 refresh: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17949 var options = this.options,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17950 lis = this.tablist.children( ":has(a[href])" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17951
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17952 // Get disabled tabs from class attribute from HTML
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17953 // this will get converted to a boolean if needed in _refresh()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17954 options.disabled = $.map( lis.filter( ".ui-state-disabled" ), function( tab ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17955 return lis.index( tab );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17956 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17957
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17958 this._processTabs();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17959
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17960 // Was collapsed or no tabs
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17961 if ( options.active === false || !this.anchors.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17962 options.active = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17963 this.active = $();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17964
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17965 // was active, but active tab is gone
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17966 } else if ( this.active.length && !$.contains( this.tablist[ 0 ], this.active[ 0 ] ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17967
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17968 // all remaining tabs are disabled
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17969 if ( this.tabs.length === options.disabled.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17970 options.active = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17971 this.active = $();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17972
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17973 // activate previous tab
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17974 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17975 this._activate( this._findNextTab( Math.max( 0, options.active - 1 ), false ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17976 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17977
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17978 // was active, active tab still exists
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17979 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17980
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17981 // make sure active index is correct
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17982 options.active = this.tabs.index( this.active );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17983 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17984
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17985 this._refresh();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17986 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17987
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17988 _refresh: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17989 this._setOptionDisabled( this.options.disabled );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17990 this._setupEvents( this.options.event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17991 this._setupHeightStyle( this.options.heightStyle );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17992
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17993 this.tabs.not( this.active ).attr( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17994 "aria-selected": "false",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17995 "aria-expanded": "false",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17996 tabIndex: -1
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17997 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17998 this.panels.not( this._getPanelForTab( this.active ) )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17999 .hide()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18000 .attr( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18001 "aria-hidden": "true"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18002 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18003
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18004 // Make sure one tab is in the tab order
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18005 if ( !this.active.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18006 this.tabs.eq( 0 ).attr( "tabIndex", 0 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18007 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18008 this.active
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18009 .attr( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18010 "aria-selected": "true",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18011 "aria-expanded": "true",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18012 tabIndex: 0
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18013 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18014 this._addClass( this.active, "ui-tabs-active", "ui-state-active" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18015 this._getPanelForTab( this.active )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18016 .show()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18017 .attr( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18018 "aria-hidden": "false"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18019 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18020 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18021 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18022
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18023 _processTabs: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18024 var that = this,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18025 prevTabs = this.tabs,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18026 prevAnchors = this.anchors,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18027 prevPanels = this.panels;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18028
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18029 this.tablist = this._getList().attr( "role", "tablist" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18030 this._addClass( this.tablist, "ui-tabs-nav",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18031 "ui-helper-reset ui-helper-clearfix ui-widget-header" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18032
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18033 // Prevent users from focusing disabled tabs via click
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18034 this.tablist
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18035 .on( "mousedown" + this.eventNamespace, "> li", function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18036 if ( $( this ).is( ".ui-state-disabled" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18037 event.preventDefault();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18038 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18039 } )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18040
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18041 // Support: IE <9
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18042 // Preventing the default action in mousedown doesn't prevent IE
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18043 // from focusing the element, so if the anchor gets focused, blur.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18044 // We don't have to worry about focusing the previously focused
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18045 // element since clicking on a non-focusable element should focus
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18046 // the body anyway.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18047 .on( "focus" + this.eventNamespace, ".ui-tabs-anchor", function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18048 if ( $( this ).closest( "li" ).is( ".ui-state-disabled" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18049 this.blur();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18050 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18051 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18052
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18053 this.tabs = this.tablist.find( "> li:has(a[href])" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18054 .attr( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18055 role: "tab",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18056 tabIndex: -1
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18057 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18058 this._addClass( this.tabs, "ui-tabs-tab", "ui-state-default" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18059
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18060 this.anchors = this.tabs.map( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18061 return $( "a", this )[ 0 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18062 } )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18063 .attr( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18064 tabIndex: -1
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18065 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18066 this._addClass( this.anchors, "ui-tabs-anchor" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18067
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18068 this.panels = $();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18069
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18070 this.anchors.each( function( i, anchor ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18071 var selector, panel, panelId,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18072 anchorId = $( anchor ).uniqueId().attr( "id" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18073 tab = $( anchor ).closest( "li" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18074 originalAriaControls = tab.attr( "aria-controls" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18075
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18076 // Inline tab
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18077 if ( that._isLocal( anchor ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18078 selector = anchor.hash;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18079 panelId = selector.substring( 1 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18080 panel = that.element.find( that._sanitizeSelector( selector ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18081
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18082 // remote tab
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18083 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18084
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18085 // If the tab doesn't already have aria-controls,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18086 // generate an id by using a throw-away element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18087 panelId = tab.attr( "aria-controls" ) || $( {} ).uniqueId()[ 0 ].id;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18088 selector = "#" + panelId;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18089 panel = that.element.find( selector );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18090 if ( !panel.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18091 panel = that._createPanel( panelId );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18092 panel.insertAfter( that.panels[ i - 1 ] || that.tablist );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18093 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18094 panel.attr( "aria-live", "polite" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18095 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18096
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18097 if ( panel.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18098 that.panels = that.panels.add( panel );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18099 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18100 if ( originalAriaControls ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18101 tab.data( "ui-tabs-aria-controls", originalAriaControls );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18102 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18103 tab.attr( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18104 "aria-controls": panelId,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18105 "aria-labelledby": anchorId
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18106 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18107 panel.attr( "aria-labelledby", anchorId );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18108 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18109
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18110 this.panels.attr( "role", "tabpanel" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18111 this._addClass( this.panels, "ui-tabs-panel", "ui-widget-content" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18112
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18113 // Avoid memory leaks (#10056)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18114 if ( prevTabs ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18115 this._off( prevTabs.not( this.tabs ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18116 this._off( prevAnchors.not( this.anchors ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18117 this._off( prevPanels.not( this.panels ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18118 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18119 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18120
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18121 // Allow overriding how to find the list for rare usage scenarios (#7715)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18122 _getList: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18123 return this.tablist || this.element.find( "ol, ul" ).eq( 0 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18124 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18125
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18126 _createPanel: function( id ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18127 return $( "<div>" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18128 .attr( "id", id )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18129 .data( "ui-tabs-destroy", true );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18130 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18131
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18132 _setOptionDisabled: function( disabled ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18133 var currentItem, li, i;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18134
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18135 if ( Array.isArray( disabled ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18136 if ( !disabled.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18137 disabled = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18138 } else if ( disabled.length === this.anchors.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18139 disabled = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18140 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18141 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18142
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18143 // Disable tabs
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18144 for ( i = 0; ( li = this.tabs[ i ] ); i++ ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18145 currentItem = $( li );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18146 if ( disabled === true || $.inArray( i, disabled ) !== -1 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18147 currentItem.attr( "aria-disabled", "true" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18148 this._addClass( currentItem, null, "ui-state-disabled" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18149 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18150 currentItem.removeAttr( "aria-disabled" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18151 this._removeClass( currentItem, null, "ui-state-disabled" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18152 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18153 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18154
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18155 this.options.disabled = disabled;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18156
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18157 this._toggleClass( this.widget(), this.widgetFullName + "-disabled", null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18158 disabled === true );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18159 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18160
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18161 _setupEvents: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18162 var events = {};
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18163 if ( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18164 $.each( event.split( " " ), function( index, eventName ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18165 events[ eventName ] = "_eventHandler";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18166 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18167 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18168
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18169 this._off( this.anchors.add( this.tabs ).add( this.panels ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18170
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18171 // Always prevent the default action, even when disabled
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18172 this._on( true, this.anchors, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18173 click: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18174 event.preventDefault();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18175 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18176 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18177 this._on( this.anchors, events );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18178 this._on( this.tabs, { keydown: "_tabKeydown" } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18179 this._on( this.panels, { keydown: "_panelKeydown" } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18180
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18181 this._focusable( this.tabs );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18182 this._hoverable( this.tabs );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18183 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18184
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18185 _setupHeightStyle: function( heightStyle ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18186 var maxHeight,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18187 parent = this.element.parent();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18188
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18189 if ( heightStyle === "fill" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18190 maxHeight = parent.height();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18191 maxHeight -= this.element.outerHeight() - this.element.height();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18192
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18193 this.element.siblings( ":visible" ).each( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18194 var elem = $( this ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18195 position = elem.css( "position" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18196
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18197 if ( position === "absolute" || position === "fixed" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18198 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18199 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18200 maxHeight -= elem.outerHeight( true );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18201 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18202
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18203 this.element.children().not( this.panels ).each( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18204 maxHeight -= $( this ).outerHeight( true );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18205 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18206
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18207 this.panels.each( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18208 $( this ).height( Math.max( 0, maxHeight -
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18209 $( this ).innerHeight() + $( this ).height() ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18210 } )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18211 .css( "overflow", "auto" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18212 } else if ( heightStyle === "auto" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18213 maxHeight = 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18214 this.panels.each( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18215 maxHeight = Math.max( maxHeight, $( this ).height( "" ).height() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18216 } ).height( maxHeight );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18217 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18218 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18219
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18220 _eventHandler: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18221 var options = this.options,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18222 active = this.active,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18223 anchor = $( event.currentTarget ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18224 tab = anchor.closest( "li" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18225 clickedIsActive = tab[ 0 ] === active[ 0 ],
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18226 collapsing = clickedIsActive && options.collapsible,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18227 toShow = collapsing ? $() : this._getPanelForTab( tab ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18228 toHide = !active.length ? $() : this._getPanelForTab( active ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18229 eventData = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18230 oldTab: active,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18231 oldPanel: toHide,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18232 newTab: collapsing ? $() : tab,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18233 newPanel: toShow
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18234 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18235
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18236 event.preventDefault();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18237
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18238 if ( tab.hasClass( "ui-state-disabled" ) ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18239
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18240 // tab is already loading
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18241 tab.hasClass( "ui-tabs-loading" ) ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18242
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18243 // can't switch durning an animation
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18244 this.running ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18245
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18246 // click on active header, but not collapsible
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18247 ( clickedIsActive && !options.collapsible ) ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18248
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18249 // allow canceling activation
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18250 ( this._trigger( "beforeActivate", event, eventData ) === false ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18251 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18252 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18253
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18254 options.active = collapsing ? false : this.tabs.index( tab );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18255
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18256 this.active = clickedIsActive ? $() : tab;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18257 if ( this.xhr ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18258 this.xhr.abort();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18259 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18260
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18261 if ( !toHide.length && !toShow.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18262 $.error( "jQuery UI Tabs: Mismatching fragment identifier." );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18263 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18264
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18265 if ( toShow.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18266 this.load( this.tabs.index( tab ), event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18267 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18268 this._toggle( event, eventData );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18269 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18270
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18271 // Handles show/hide for selecting tabs
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18272 _toggle: function( event, eventData ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18273 var that = this,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18274 toShow = eventData.newPanel,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18275 toHide = eventData.oldPanel;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18276
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18277 this.running = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18278
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18279 function complete() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18280 that.running = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18281 that._trigger( "activate", event, eventData );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18282 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18283
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18284 function show() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18285 that._addClass( eventData.newTab.closest( "li" ), "ui-tabs-active", "ui-state-active" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18286
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18287 if ( toShow.length && that.options.show ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18288 that._show( toShow, that.options.show, complete );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18289 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18290 toShow.show();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18291 complete();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18292 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18293 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18294
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18295 // Start out by hiding, then showing, then completing
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18296 if ( toHide.length && this.options.hide ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18297 this._hide( toHide, this.options.hide, function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18298 that._removeClass( eventData.oldTab.closest( "li" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18299 "ui-tabs-active", "ui-state-active" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18300 show();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18301 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18302 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18303 this._removeClass( eventData.oldTab.closest( "li" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18304 "ui-tabs-active", "ui-state-active" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18305 toHide.hide();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18306 show();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18307 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18308
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18309 toHide.attr( "aria-hidden", "true" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18310 eventData.oldTab.attr( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18311 "aria-selected": "false",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18312 "aria-expanded": "false"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18313 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18314
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18315 // If we're switching tabs, remove the old tab from the tab order.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18316 // If we're opening from collapsed state, remove the previous tab from the tab order.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18317 // If we're collapsing, then keep the collapsing tab in the tab order.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18318 if ( toShow.length && toHide.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18319 eventData.oldTab.attr( "tabIndex", -1 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18320 } else if ( toShow.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18321 this.tabs.filter( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18322 return $( this ).attr( "tabIndex" ) === 0;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18323 } )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18324 .attr( "tabIndex", -1 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18325 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18326
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18327 toShow.attr( "aria-hidden", "false" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18328 eventData.newTab.attr( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18329 "aria-selected": "true",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18330 "aria-expanded": "true",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18331 tabIndex: 0
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18332 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18333 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18334
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18335 _activate: function( index ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18336 var anchor,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18337 active = this._findActive( index );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18338
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18339 // Trying to activate the already active panel
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18340 if ( active[ 0 ] === this.active[ 0 ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18341 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18342 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18343
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18344 // Trying to collapse, simulate a click on the current active header
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18345 if ( !active.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18346 active = this.active;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18347 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18348
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18349 anchor = active.find( ".ui-tabs-anchor" )[ 0 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18350 this._eventHandler( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18351 target: anchor,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18352 currentTarget: anchor,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18353 preventDefault: $.noop
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18354 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18355 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18356
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18357 _findActive: function( index ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18358 return index === false ? $() : this.tabs.eq( index );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18359 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18360
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18361 _getIndex: function( index ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18362
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18363 // meta-function to give users option to provide a href string instead of a numerical index.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18364 if ( typeof index === "string" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18365 index = this.anchors.index( this.anchors.filter( "[href$='" +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18366 $.escapeSelector( index ) + "']" ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18367 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18368
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18369 return index;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18370 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18371
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18372 _destroy: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18373 if ( this.xhr ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18374 this.xhr.abort();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18375 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18376
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18377 this.tablist
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18378 .removeAttr( "role" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18379 .off( this.eventNamespace );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18380
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18381 this.anchors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18382 .removeAttr( "role tabIndex" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18383 .removeUniqueId();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18384
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18385 this.tabs.add( this.panels ).each( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18386 if ( $.data( this, "ui-tabs-destroy" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18387 $( this ).remove();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18388 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18389 $( this ).removeAttr( "role tabIndex " +
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18390 "aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18391 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18392 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18393
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18394 this.tabs.each( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18395 var li = $( this ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18396 prev = li.data( "ui-tabs-aria-controls" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18397 if ( prev ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18398 li
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18399 .attr( "aria-controls", prev )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18400 .removeData( "ui-tabs-aria-controls" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18401 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18402 li.removeAttr( "aria-controls" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18403 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18404 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18405
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18406 this.panels.show();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18407
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18408 if ( this.options.heightStyle !== "content" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18409 this.panels.css( "height", "" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18410 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18411 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18412
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18413 enable: function( index ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18414 var disabled = this.options.disabled;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18415 if ( disabled === false ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18416 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18417 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18418
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18419 if ( index === undefined ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18420 disabled = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18421 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18422 index = this._getIndex( index );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18423 if ( Array.isArray( disabled ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18424 disabled = $.map( disabled, function( num ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18425 return num !== index ? num : null;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18426 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18427 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18428 disabled = $.map( this.tabs, function( li, num ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18429 return num !== index ? num : null;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18430 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18431 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18432 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18433 this._setOptionDisabled( disabled );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18434 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18435
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18436 disable: function( index ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18437 var disabled = this.options.disabled;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18438 if ( disabled === true ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18439 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18440 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18441
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18442 if ( index === undefined ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18443 disabled = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18444 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18445 index = this._getIndex( index );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18446 if ( $.inArray( index, disabled ) !== -1 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18447 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18448 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18449 if ( Array.isArray( disabled ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18450 disabled = $.merge( [ index ], disabled ).sort();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18451 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18452 disabled = [ index ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18453 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18454 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18455 this._setOptionDisabled( disabled );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18456 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18457
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18458 load: function( index, event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18459 index = this._getIndex( index );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18460 var that = this,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18461 tab = this.tabs.eq( index ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18462 anchor = tab.find( ".ui-tabs-anchor" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18463 panel = this._getPanelForTab( tab ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18464 eventData = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18465 tab: tab,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18466 panel: panel
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18467 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18468 complete = function( jqXHR, status ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18469 if ( status === "abort" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18470 that.panels.stop( false, true );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18471 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18472
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18473 that._removeClass( tab, "ui-tabs-loading" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18474 panel.removeAttr( "aria-busy" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18475
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18476 if ( jqXHR === that.xhr ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18477 delete that.xhr;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18478 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18479 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18480
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18481 // Not remote
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18482 if ( this._isLocal( anchor[ 0 ] ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18483 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18484 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18485
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18486 this.xhr = $.ajax( this._ajaxSettings( anchor, event, eventData ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18487
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18488 // Support: jQuery <1.8
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18489 // jQuery <1.8 returns false if the request is canceled in beforeSend,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18490 // but as of 1.8, $.ajax() always returns a jqXHR object.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18491 if ( this.xhr && this.xhr.statusText !== "canceled" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18492 this._addClass( tab, "ui-tabs-loading" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18493 panel.attr( "aria-busy", "true" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18494
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18495 this.xhr
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18496 .done( function( response, status, jqXHR ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18497
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18498 // support: jQuery <1.8
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18499 // http://bugs.jquery.com/ticket/11778
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18500 setTimeout( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18501 panel.html( response );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18502 that._trigger( "load", event, eventData );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18503
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18504 complete( jqXHR, status );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18505 }, 1 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18506 } )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18507 .fail( function( jqXHR, status ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18508
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18509 // support: jQuery <1.8
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18510 // http://bugs.jquery.com/ticket/11778
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18511 setTimeout( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18512 complete( jqXHR, status );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18513 }, 1 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18514 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18515 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18516 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18517
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18518 _ajaxSettings: function( anchor, event, eventData ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18519 var that = this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18520 return {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18521
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18522 // Support: IE <11 only
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18523 // Strip any hash that exists to prevent errors with the Ajax request
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18524 url: anchor.attr( "href" ).replace( /#.*$/, "" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18525 beforeSend: function( jqXHR, settings ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18526 return that._trigger( "beforeLoad", event,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18527 $.extend( { jqXHR: jqXHR, ajaxSettings: settings }, eventData ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18528 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18529 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18530 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18531
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18532 _getPanelForTab: function( tab ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18533 var id = $( tab ).attr( "aria-controls" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18534 return this.element.find( this._sanitizeSelector( "#" + id ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18535 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18536 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18537
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18538 // DEPRECATED
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18539 // TODO: Switch return back to widget declaration at top of file when this is removed
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18540 if ( $.uiBackCompat !== false ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18541
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18542 // Backcompat for ui-tab class (now ui-tabs-tab)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18543 $.widget( "ui.tabs", $.ui.tabs, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18544 _processTabs: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18545 this._superApply( arguments );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18546 this._addClass( this.tabs, "ui-tab" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18547 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18548 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18549 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18550
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18551 var widgetsTabs = $.ui.tabs;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18552
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18553
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18554 /*!
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18555 * jQuery UI Tooltip 1.13.2
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18556 * http://jqueryui.com
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18557 *
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18558 * Copyright jQuery Foundation and other contributors
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18559 * Released under the MIT license.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18560 * http://jquery.org/license
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18561 */
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18562
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18563 //>>label: Tooltip
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18564 //>>group: Widgets
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18565 //>>description: Shows additional information for any element on hover or focus.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18566 //>>docs: http://api.jqueryui.com/tooltip/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18567 //>>demos: http://jqueryui.com/tooltip/
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18568 //>>css.structure: ../../themes/base/core.css
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18569 //>>css.structure: ../../themes/base/tooltip.css
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18570 //>>css.theme: ../../themes/base/theme.css
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18571
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18572
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18573 $.widget( "ui.tooltip", {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18574 version: "1.13.2",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18575 options: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18576 classes: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18577 "ui-tooltip": "ui-corner-all ui-widget-shadow"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18578 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18579 content: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18580 var title = $( this ).attr( "title" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18581
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18582 // Escape title, since we're going from an attribute to raw HTML
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18583 return $( "<a>" ).text( title ).html();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18584 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18585 hide: true,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18586
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18587 // Disabled elements have inconsistent behavior across browsers (#8661)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18588 items: "[title]:not([disabled])",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18589 position: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18590 my: "left top+15",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18591 at: "left bottom",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18592 collision: "flipfit flip"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18593 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18594 show: true,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18595 track: false,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18596
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18597 // Callbacks
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18598 close: null,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18599 open: null
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18600 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18601
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18602 _addDescribedBy: function( elem, id ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18603 var describedby = ( elem.attr( "aria-describedby" ) || "" ).split( /\s+/ );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18604 describedby.push( id );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18605 elem
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18606 .data( "ui-tooltip-id", id )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18607 .attr( "aria-describedby", String.prototype.trim.call( describedby.join( " " ) ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18608 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18609
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18610 _removeDescribedBy: function( elem ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18611 var id = elem.data( "ui-tooltip-id" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18612 describedby = ( elem.attr( "aria-describedby" ) || "" ).split( /\s+/ ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18613 index = $.inArray( id, describedby );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18614
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18615 if ( index !== -1 ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18616 describedby.splice( index, 1 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18617 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18618
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18619 elem.removeData( "ui-tooltip-id" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18620 describedby = String.prototype.trim.call( describedby.join( " " ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18621 if ( describedby ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18622 elem.attr( "aria-describedby", describedby );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18623 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18624 elem.removeAttr( "aria-describedby" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18625 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18626 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18627
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18628 _create: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18629 this._on( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18630 mouseover: "open",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18631 focusin: "open"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18632 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18633
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18634 // IDs of generated tooltips, needed for destroy
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18635 this.tooltips = {};
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18636
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18637 // IDs of parent tooltips where we removed the title attribute
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18638 this.parents = {};
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18639
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18640 // Append the aria-live region so tooltips announce correctly
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18641 this.liveRegion = $( "<div>" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18642 .attr( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18643 role: "log",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18644 "aria-live": "assertive",
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18645 "aria-relevant": "additions"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18646 } )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18647 .appendTo( this.document[ 0 ].body );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18648 this._addClass( this.liveRegion, null, "ui-helper-hidden-accessible" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18649
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18650 this.disabledTitles = $( [] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18651 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18652
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18653 _setOption: function( key, value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18654 var that = this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18655
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18656 this._super( key, value );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18657
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18658 if ( key === "content" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18659 $.each( this.tooltips, function( id, tooltipData ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18660 that._updateContent( tooltipData.element );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18661 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18662 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18663 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18664
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18665 _setOptionDisabled: function( value ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18666 this[ value ? "_disable" : "_enable" ]();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18667 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18668
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18669 _disable: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18670 var that = this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18671
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18672 // Close open tooltips
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18673 $.each( this.tooltips, function( id, tooltipData ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18674 var event = $.Event( "blur" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18675 event.target = event.currentTarget = tooltipData.element[ 0 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18676 that.close( event, true );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18677 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18678
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18679 // Remove title attributes to prevent native tooltips
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18680 this.disabledTitles = this.disabledTitles.add(
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18681 this.element.find( this.options.items ).addBack()
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18682 .filter( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18683 var element = $( this );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18684 if ( element.is( "[title]" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18685 return element
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18686 .data( "ui-tooltip-title", element.attr( "title" ) )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18687 .removeAttr( "title" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18688 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18689 } )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18690 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18691 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18692
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18693 _enable: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18694
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18695 // restore title attributes
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18696 this.disabledTitles.each( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18697 var element = $( this );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18698 if ( element.data( "ui-tooltip-title" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18699 element.attr( "title", element.data( "ui-tooltip-title" ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18700 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18701 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18702 this.disabledTitles = $( [] );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18703 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18704
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18705 open: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18706 var that = this,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18707 target = $( event ? event.target : this.element )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18708
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18709 // we need closest here due to mouseover bubbling,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18710 // but always pointing at the same event target
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18711 .closest( this.options.items );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18712
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18713 // No element to show a tooltip for or the tooltip is already open
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18714 if ( !target.length || target.data( "ui-tooltip-id" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18715 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18716 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18717
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18718 if ( target.attr( "title" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18719 target.data( "ui-tooltip-title", target.attr( "title" ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18720 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18721
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18722 target.data( "ui-tooltip-open", true );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18723
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18724 // Kill parent tooltips, custom or native, for hover
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18725 if ( event && event.type === "mouseover" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18726 target.parents().each( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18727 var parent = $( this ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18728 blurEvent;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18729 if ( parent.data( "ui-tooltip-open" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18730 blurEvent = $.Event( "blur" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18731 blurEvent.target = blurEvent.currentTarget = this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18732 that.close( blurEvent, true );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18733 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18734 if ( parent.attr( "title" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18735 parent.uniqueId();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18736 that.parents[ this.id ] = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18737 element: this,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18738 title: parent.attr( "title" )
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18739 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18740 parent.attr( "title", "" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18741 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18742 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18743 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18744
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18745 this._registerCloseHandlers( event, target );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18746 this._updateContent( target, event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18747 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18748
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18749 _updateContent: function( target, event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18750 var content,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18751 contentOption = this.options.content,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18752 that = this,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18753 eventType = event ? event.type : null;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18754
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18755 if ( typeof contentOption === "string" || contentOption.nodeType ||
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18756 contentOption.jquery ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18757 return this._open( event, target, contentOption );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18758 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18759
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18760 content = contentOption.call( target[ 0 ], function( response ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18761
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18762 // IE may instantly serve a cached response for ajax requests
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18763 // delay this call to _open so the other call to _open runs first
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18764 that._delay( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18765
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18766 // Ignore async response if tooltip was closed already
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18767 if ( !target.data( "ui-tooltip-open" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18768 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18769 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18770
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18771 // JQuery creates a special event for focusin when it doesn't
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18772 // exist natively. To improve performance, the native event
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18773 // object is reused and the type is changed. Therefore, we can't
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18774 // rely on the type being correct after the event finished
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18775 // bubbling, so we set it back to the previous value. (#8740)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18776 if ( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18777 event.type = eventType;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18778 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18779 this._open( event, target, response );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18780 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18781 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18782 if ( content ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18783 this._open( event, target, content );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18784 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18785 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18786
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18787 _open: function( event, target, content ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18788 var tooltipData, tooltip, delayedShow, a11yContent,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18789 positionOption = $.extend( {}, this.options.position );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18790
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18791 if ( !content ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18792 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18793 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18794
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18795 // Content can be updated multiple times. If the tooltip already
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18796 // exists, then just update the content and bail.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18797 tooltipData = this._find( target );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18798 if ( tooltipData ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18799 tooltipData.tooltip.find( ".ui-tooltip-content" ).html( content );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18800 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18801 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18802
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18803 // If we have a title, clear it to prevent the native tooltip
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18804 // we have to check first to avoid defining a title if none exists
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18805 // (we don't want to cause an element to start matching [title])
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18806 //
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18807 // We use removeAttr only for key events, to allow IE to export the correct
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18808 // accessible attributes. For mouse events, set to empty string to avoid
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18809 // native tooltip showing up (happens only when removing inside mouseover).
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18810 if ( target.is( "[title]" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18811 if ( event && event.type === "mouseover" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18812 target.attr( "title", "" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18813 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18814 target.removeAttr( "title" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18815 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18816 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18817
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18818 tooltipData = this._tooltip( target );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18819 tooltip = tooltipData.tooltip;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18820 this._addDescribedBy( target, tooltip.attr( "id" ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18821 tooltip.find( ".ui-tooltip-content" ).html( content );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18822
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18823 // Support: Voiceover on OS X, JAWS on IE <= 9
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18824 // JAWS announces deletions even when aria-relevant="additions"
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18825 // Voiceover will sometimes re-read the entire log region's contents from the beginning
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18826 this.liveRegion.children().hide();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18827 a11yContent = $( "<div>" ).html( tooltip.find( ".ui-tooltip-content" ).html() );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18828 a11yContent.removeAttr( "name" ).find( "[name]" ).removeAttr( "name" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18829 a11yContent.removeAttr( "id" ).find( "[id]" ).removeAttr( "id" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18830 a11yContent.appendTo( this.liveRegion );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18831
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18832 function position( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18833 positionOption.of = event;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18834 if ( tooltip.is( ":hidden" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18835 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18836 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18837 tooltip.position( positionOption );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18838 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18839 if ( this.options.track && event && /^mouse/.test( event.type ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18840 this._on( this.document, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18841 mousemove: position
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18842 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18843
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18844 // trigger once to override element-relative positioning
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18845 position( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18846 } else {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18847 tooltip.position( $.extend( {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18848 of: target
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18849 }, this.options.position ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18850 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18851
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18852 tooltip.hide();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18853
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18854 this._show( tooltip, this.options.show );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18855
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18856 // Handle tracking tooltips that are shown with a delay (#8644). As soon
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18857 // as the tooltip is visible, position the tooltip using the most recent
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18858 // event.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18859 // Adds the check to add the timers only when both delay and track options are set (#14682)
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18860 if ( this.options.track && this.options.show && this.options.show.delay ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18861 delayedShow = this.delayedShow = setInterval( function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18862 if ( tooltip.is( ":visible" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18863 position( positionOption.of );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18864 clearInterval( delayedShow );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18865 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18866 }, 13 );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18867 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18868
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18869 this._trigger( "open", event, { tooltip: tooltip } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18870 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18871
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18872 _registerCloseHandlers: function( event, target ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18873 var events = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18874 keyup: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18875 if ( event.keyCode === $.ui.keyCode.ESCAPE ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18876 var fakeEvent = $.Event( event );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18877 fakeEvent.currentTarget = target[ 0 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18878 this.close( fakeEvent, true );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18879 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18880 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18881 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18882
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18883 // Only bind remove handler for delegated targets. Non-delegated
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18884 // tooltips will handle this in destroy.
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18885 if ( target[ 0 ] !== this.element[ 0 ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18886 events.remove = function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18887 var targetElement = this._find( target );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18888 if ( targetElement ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18889 this._removeTooltip( targetElement.tooltip );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18890 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18891 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18892 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18893
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18894 if ( !event || event.type === "mouseover" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18895 events.mouseleave = "close";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18896 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18897 if ( !event || event.type === "focusin" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18898 events.focusout = "close";
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18899 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18900 this._on( true, target, events );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18901 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18902
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18903 close: function( event ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18904 var tooltip,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18905 that = this,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18906 target = $( event ? event.currentTarget : this.element ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18907 tooltipData = this._find( target );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18908
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18909 // The tooltip may already be closed
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18910 if ( !tooltipData ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18911
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18912 // We set ui-tooltip-open immediately upon open (in open()), but only set the
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18913 // additional data once there's actually content to show (in _open()). So even if the
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18914 // tooltip doesn't have full data, we always remove ui-tooltip-open in case we're in
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18915 // the period between open() and _open().
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18916 target.removeData( "ui-tooltip-open" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18917 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18918 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18919
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18920 tooltip = tooltipData.tooltip;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18921
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18922 // Disabling closes the tooltip, so we need to track when we're closing
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18923 // to avoid an infinite loop in case the tooltip becomes disabled on close
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18924 if ( tooltipData.closing ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18925 return;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18926 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18927
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18928 // Clear the interval for delayed tracking tooltips
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18929 clearInterval( this.delayedShow );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18930
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18931 // Only set title if we had one before (see comment in _open())
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18932 // If the title attribute has changed since open(), don't restore
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18933 if ( target.data( "ui-tooltip-title" ) && !target.attr( "title" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18934 target.attr( "title", target.data( "ui-tooltip-title" ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18935 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18936
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18937 this._removeDescribedBy( target );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18938
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18939 tooltipData.hiding = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18940 tooltip.stop( true );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18941 this._hide( tooltip, this.options.hide, function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18942 that._removeTooltip( $( this ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18943 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18944
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18945 target.removeData( "ui-tooltip-open" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18946 this._off( target, "mouseleave focusout keyup" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18947
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18948 // Remove 'remove' binding only on delegated targets
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18949 if ( target[ 0 ] !== this.element[ 0 ] ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18950 this._off( target, "remove" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18951 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18952 this._off( this.document, "mousemove" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18953
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18954 if ( event && event.type === "mouseleave" ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18955 $.each( this.parents, function( id, parent ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18956 $( parent.element ).attr( "title", parent.title );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18957 delete that.parents[ id ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18958 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18959 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18960
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18961 tooltipData.closing = true;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18962 this._trigger( "close", event, { tooltip: tooltip } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18963 if ( !tooltipData.hiding ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18964 tooltipData.closing = false;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18965 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18966 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18967
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18968 _tooltip: function( element ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18969 var tooltip = $( "<div>" ).attr( "role", "tooltip" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18970 content = $( "<div>" ).appendTo( tooltip ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18971 id = tooltip.uniqueId().attr( "id" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18972
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18973 this._addClass( content, "ui-tooltip-content" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18974 this._addClass( tooltip, "ui-tooltip", "ui-widget ui-widget-content" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18975
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18976 tooltip.appendTo( this._appendTo( element ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18977
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18978 return this.tooltips[ id ] = {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18979 element: element,
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18980 tooltip: tooltip
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18981 };
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18982 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18983
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18984 _find: function( target ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18985 var id = target.data( "ui-tooltip-id" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18986 return id ? this.tooltips[ id ] : null;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18987 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18988
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18989 _removeTooltip: function( tooltip ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18990
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18991 // Clear the interval for delayed tracking tooltips
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18992 clearInterval( this.delayedShow );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18993
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18994 tooltip.remove();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18995 delete this.tooltips[ tooltip.attr( "id" ) ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18996 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18997
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18998 _appendTo: function( target ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18999 var element = target.closest( ".ui-front, dialog" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19000
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19001 if ( !element.length ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19002 element = this.document[ 0 ].body;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19003 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19004
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19005 return element;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19006 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19007
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19008 _destroy: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19009 var that = this;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19010
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19011 // Close open tooltips
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19012 $.each( this.tooltips, function( id, tooltipData ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19013
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19014 // Delegate to close method to handle common cleanup
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19015 var event = $.Event( "blur" ),
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19016 element = tooltipData.element;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19017 event.target = event.currentTarget = element[ 0 ];
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19018 that.close( event, true );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19019
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19020 // Remove immediately; destroying an open tooltip doesn't use the
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19021 // hide animation
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19022 $( "#" + id ).remove();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19023
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19024 // Restore the title
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19025 if ( element.data( "ui-tooltip-title" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19026
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19027 // If the title attribute has changed since open(), don't restore
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19028 if ( !element.attr( "title" ) ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19029 element.attr( "title", element.data( "ui-tooltip-title" ) );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19030 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19031 element.removeData( "ui-tooltip-title" );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19032 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19033 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19034 this.liveRegion.remove();
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19035 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19036 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19037
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19038 // DEPRECATED
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19039 // TODO: Switch return back to widget declaration at top of file when this is removed
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19040 if ( $.uiBackCompat !== false ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19041
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19042 // Backcompat for tooltipClass option
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19043 $.widget( "ui.tooltip", $.ui.tooltip, {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19044 options: {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19045 tooltipClass: null
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19046 },
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19047 _tooltip: function() {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19048 var tooltipData = this._superApply( arguments );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19049 if ( this.options.tooltipClass ) {
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19050 tooltipData.tooltip.addClass( this.options.tooltipClass );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19051 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19052 return tooltipData;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19053 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19054 } );
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19055 }
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19056
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19057 var widgetsTooltip = $.ui.tooltip;
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19058
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19059
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19060
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19061
32ddecc54baf Web Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19062 } );

eric ide

mercurial