1 |
torben |
2125 |
/*! |
2 |
|
|
* jQuery UI Core 1.10.3 |
3 |
|
|
* http://jqueryui.com |
4 |
|
|
* |
5 |
|
|
* Copyright 2013 jQuery Foundation and other contributors |
6 |
|
|
* Released under the MIT license. |
7 |
|
|
* http://jquery.org/license |
8 |
|
|
* |
9 |
|
|
* http://api.jqueryui.com/category/ui-core/ |
10 |
|
|
*/ |
11 |
|
|
(function( $, undefined ) { |
12 |
|
|
|
13 |
|
|
var uuid = 0, |
14 |
|
|
runiqueId = /^ui-id-\d+$/; |
15 |
|
|
|
16 |
|
|
// $.ui might exist from components with no dependencies, e.g., $.ui.position |
17 |
|
|
$.ui = $.ui || {}; |
18 |
|
|
|
19 |
|
|
$.extend( $.ui, { |
20 |
|
|
version: "1.10.3", |
21 |
|
|
|
22 |
|
|
keyCode: { |
23 |
|
|
BACKSPACE: 8, |
24 |
|
|
COMMA: 188, |
25 |
|
|
DELETE: 46, |
26 |
|
|
DOWN: 40, |
27 |
|
|
END: 35, |
28 |
|
|
ENTER: 13, |
29 |
|
|
ESCAPE: 27, |
30 |
|
|
HOME: 36, |
31 |
|
|
LEFT: 37, |
32 |
|
|
NUMPAD_ADD: 107, |
33 |
|
|
NUMPAD_DECIMAL: 110, |
34 |
|
|
NUMPAD_DIVIDE: 111, |
35 |
|
|
NUMPAD_ENTER: 108, |
36 |
|
|
NUMPAD_MULTIPLY: 106, |
37 |
|
|
NUMPAD_SUBTRACT: 109, |
38 |
|
|
PAGE_DOWN: 34, |
39 |
|
|
PAGE_UP: 33, |
40 |
|
|
PERIOD: 190, |
41 |
|
|
RIGHT: 39, |
42 |
|
|
SPACE: 32, |
43 |
|
|
TAB: 9, |
44 |
|
|
UP: 38 |
45 |
|
|
} |
46 |
|
|
}); |
47 |
|
|
|
48 |
|
|
// plugins |
49 |
|
|
$.fn.extend({ |
50 |
|
|
focus: (function( orig ) { |
51 |
|
|
return function( delay, fn ) { |
52 |
|
|
return typeof delay === "number" ? |
53 |
|
|
this.each(function() { |
54 |
|
|
var elem = this; |
55 |
|
|
setTimeout(function() { |
56 |
|
|
$( elem ).focus(); |
57 |
|
|
if ( fn ) { |
58 |
|
|
fn.call( elem ); |
59 |
|
|
} |
60 |
|
|
}, delay ); |
61 |
|
|
}) : |
62 |
|
|
orig.apply( this, arguments ); |
63 |
|
|
}; |
64 |
|
|
})( $.fn.focus ), |
65 |
|
|
|
66 |
|
|
scrollParent: function() { |
67 |
|
|
var scrollParent; |
68 |
|
|
if (($.ui.ie && (/(static|relative)/).test(this.css("position"))) || (/absolute/).test(this.css("position"))) { |
69 |
|
|
scrollParent = this.parents().filter(function() { |
70 |
|
|
return (/(relative|absolute|fixed)/).test($.css(this,"position")) && (/(auto|scroll)/).test($.css(this,"overflow")+$.css(this,"overflow-y")+$.css(this,"overflow-x")); |
71 |
|
|
}).eq(0); |
72 |
|
|
} else { |
73 |
|
|
scrollParent = this.parents().filter(function() { |
74 |
|
|
return (/(auto|scroll)/).test($.css(this,"overflow")+$.css(this,"overflow-y")+$.css(this,"overflow-x")); |
75 |
|
|
}).eq(0); |
76 |
|
|
} |
77 |
|
|
|
78 |
|
|
return (/fixed/).test(this.css("position")) || !scrollParent.length ? $(document) : scrollParent; |
79 |
|
|
}, |
80 |
|
|
|
81 |
|
|
zIndex: function( zIndex ) { |
82 |
|
|
if ( zIndex !== undefined ) { |
83 |
|
|
return this.css( "zIndex", zIndex ); |
84 |
|
|
} |
85 |
|
|
|
86 |
|
|
if ( this.length ) { |
87 |
|
|
var elem = $( this[ 0 ] ), position, value; |
88 |
|
|
while ( elem.length && elem[ 0 ] !== document ) { |
89 |
|
|
// Ignore z-index if position is set to a value where z-index is ignored by the browser |
90 |
|
|
// This makes behavior of this function consistent across browsers |
91 |
|
|
// WebKit always returns auto if the element is positioned |
92 |
|
|
position = elem.css( "position" ); |
93 |
|
|
if ( position === "absolute" || position === "relative" || position === "fixed" ) { |
94 |
|
|
// IE returns 0 when zIndex is not specified |
95 |
|
|
// other browsers return a string |
96 |
|
|
// we ignore the case of nested elements with an explicit value of 0 |
97 |
|
|
// <div style="z-index: -10;"><div style="z-index: 0;"></div></div> |
98 |
|
|
value = parseInt( elem.css( "zIndex" ), 10 ); |
99 |
|
|
if ( !isNaN( value ) && value !== 0 ) { |
100 |
|
|
return value; |
101 |
|
|
} |
102 |
|
|
} |
103 |
|
|
elem = elem.parent(); |
104 |
|
|
} |
105 |
|
|
} |
106 |
|
|
|
107 |
|
|
return 0; |
108 |
|
|
}, |
109 |
|
|
|
110 |
|
|
uniqueId: function() { |
111 |
|
|
return this.each(function() { |
112 |
|
|
if ( !this.id ) { |
113 |
|
|
this.id = "ui-id-" + (++uuid); |
114 |
|
|
} |
115 |
|
|
}); |
116 |
|
|
}, |
117 |
|
|
|
118 |
|
|
removeUniqueId: function() { |
119 |
|
|
return this.each(function() { |
120 |
|
|
if ( runiqueId.test( this.id ) ) { |
121 |
|
|
$( this ).removeAttr( "id" ); |
122 |
|
|
} |
123 |
|
|
}); |
124 |
|
|
} |
125 |
|
|
}); |
126 |
|
|
|
127 |
|
|
// selectors |
128 |
|
|
function focusable( element, isTabIndexNotNaN ) { |
129 |
|
|
var map, mapName, img, |
130 |
|
|
nodeName = element.nodeName.toLowerCase(); |
131 |
|
|
if ( "area" === nodeName ) { |
132 |
|
|
map = element.parentNode; |
133 |
|
|
mapName = map.name; |
134 |
|
|
if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) { |
135 |
|
|
return false; |
136 |
|
|
} |
137 |
|
|
img = $( "img[usemap=#" + mapName + "]" )[0]; |
138 |
|
|
return !!img && visible( img ); |
139 |
|
|
} |
140 |
|
|
return ( /input|select|textarea|button|object/.test( nodeName ) ? |
141 |
|
|
!element.disabled : |
142 |
|
|
"a" === nodeName ? |
143 |
|
|
element.href || isTabIndexNotNaN : |
144 |
|
|
isTabIndexNotNaN) && |
145 |
|
|
// the element and all of its ancestors must be visible |
146 |
|
|
visible( element ); |
147 |
|
|
} |
148 |
|
|
|
149 |
|
|
function visible( element ) { |
150 |
|
|
return $.expr.filters.visible( element ) && |
151 |
|
|
!$( element ).parents().addBack().filter(function() { |
152 |
|
|
return $.css( this, "visibility" ) === "hidden"; |
153 |
|
|
}).length; |
154 |
|
|
} |
155 |
|
|
|
156 |
|
|
$.extend( $.expr[ ":" ], { |
157 |
|
|
data: $.expr.createPseudo ? |
158 |
|
|
$.expr.createPseudo(function( dataName ) { |
159 |
|
|
return function( elem ) { |
160 |
|
|
return !!$.data( elem, dataName ); |
161 |
|
|
}; |
162 |
|
|
}) : |
163 |
|
|
// support: jQuery <1.8 |
164 |
|
|
function( elem, i, match ) { |
165 |
|
|
return !!$.data( elem, match[ 3 ] ); |
166 |
|
|
}, |
167 |
|
|
|
168 |
|
|
focusable: function( element ) { |
169 |
|
|
return focusable( element, !isNaN( $.attr( element, "tabindex" ) ) ); |
170 |
|
|
}, |
171 |
|
|
|
172 |
|
|
tabbable: function( element ) { |
173 |
|
|
var tabIndex = $.attr( element, "tabindex" ), |
174 |
|
|
isTabIndexNaN = isNaN( tabIndex ); |
175 |
|
|
return ( isTabIndexNaN || tabIndex >= 0 ) && focusable( element, !isTabIndexNaN ); |
176 |
|
|
} |
177 |
|
|
}); |
178 |
|
|
|
179 |
|
|
// support: jQuery <1.8 |
180 |
|
|
if ( !$( "<a>" ).outerWidth( 1 ).jquery ) { |
181 |
|
|
$.each( [ "Width", "Height" ], function( i, name ) { |
182 |
|
|
var side = name === "Width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ], |
183 |
|
|
type = name.toLowerCase(), |
184 |
|
|
orig = { |
185 |
|
|
innerWidth: $.fn.innerWidth, |
186 |
|
|
innerHeight: $.fn.innerHeight, |
187 |
|
|
outerWidth: $.fn.outerWidth, |
188 |
|
|
outerHeight: $.fn.outerHeight |
189 |
|
|
}; |
190 |
|
|
|
191 |
|
|
function reduce( elem, size, border, margin ) { |
192 |
|
|
$.each( side, function() { |
193 |
|
|
size -= parseFloat( $.css( elem, "padding" + this ) ) || 0; |
194 |
|
|
if ( border ) { |
195 |
|
|
size -= parseFloat( $.css( elem, "border" + this + "Width" ) ) || 0; |
196 |
|
|
} |
197 |
|
|
if ( margin ) { |
198 |
|
|
size -= parseFloat( $.css( elem, "margin" + this ) ) || 0; |
199 |
|
|
} |
200 |
|
|
}); |
201 |
|
|
return size; |
202 |
|
|
} |
203 |
|
|
|
204 |
|
|
$.fn[ "inner" + name ] = function( size ) { |
205 |
|
|
if ( size === undefined ) { |
206 |
|
|
return orig[ "inner" + name ].call( this ); |
207 |
|
|
} |
208 |
|
|
|
209 |
|
|
return this.each(function() { |
210 |
|
|
$( this ).css( type, reduce( this, size ) + "px" ); |
211 |
|
|
}); |
212 |
|
|
}; |
213 |
|
|
|
214 |
|
|
$.fn[ "outer" + name] = function( size, margin ) { |
215 |
|
|
if ( typeof size !== "number" ) { |
216 |
|
|
return orig[ "outer" + name ].call( this, size ); |
217 |
|
|
} |
218 |
|
|
|
219 |
|
|
return this.each(function() { |
220 |
|
|
$( this).css( type, reduce( this, size, true, margin ) + "px" ); |
221 |
|
|
}); |
222 |
|
|
}; |
223 |
|
|
}); |
224 |
|
|
} |
225 |
|
|
|
226 |
|
|
// support: jQuery <1.8 |
227 |
|
|
if ( !$.fn.addBack ) { |
228 |
|
|
$.fn.addBack = function( selector ) { |
229 |
|
|
return this.add( selector == null ? |
230 |
|
|
this.prevObject : this.prevObject.filter( selector ) |
231 |
|
|
); |
232 |
|
|
}; |
233 |
|
|
} |
234 |
|
|
|
235 |
|
|
// support: jQuery 1.6.1, 1.6.2 (http://bugs.jquery.com/ticket/9413) |
236 |
|
|
if ( $( "<a>" ).data( "a-b", "a" ).removeData( "a-b" ).data( "a-b" ) ) { |
237 |
|
|
$.fn.removeData = (function( removeData ) { |
238 |
|
|
return function( key ) { |
239 |
|
|
if ( arguments.length ) { |
240 |
|
|
return removeData.call( this, $.camelCase( key ) ); |
241 |
|
|
} else { |
242 |
|
|
return removeData.call( this ); |
243 |
|
|
} |
244 |
|
|
}; |
245 |
|
|
})( $.fn.removeData ); |
246 |
|
|
} |
247 |
|
|
|
248 |
|
|
|
249 |
|
|
|
250 |
|
|
|
251 |
|
|
|
252 |
|
|
// deprecated |
253 |
|
|
$.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() ); |
254 |
|
|
|
255 |
|
|
$.support.selectstart = "onselectstart" in document.createElement( "div" ); |
256 |
|
|
$.fn.extend({ |
257 |
|
|
disableSelection: function() { |
258 |
|
|
return this.bind( ( $.support.selectstart ? "selectstart" : "mousedown" ) + |
259 |
|
|
".ui-disableSelection", function( event ) { |
260 |
|
|
event.preventDefault(); |
261 |
|
|
}); |
262 |
|
|
}, |
263 |
|
|
|
264 |
|
|
enableSelection: function() { |
265 |
|
|
return this.unbind( ".ui-disableSelection" ); |
266 |
|
|
} |
267 |
|
|
}); |
268 |
|
|
|
269 |
|
|
$.extend( $.ui, { |
270 |
|
|
// $.ui.plugin is deprecated. Use $.widget() extensions instead. |
271 |
|
|
plugin: { |
272 |
|
|
add: function( module, option, set ) { |
273 |
|
|
var i, |
274 |
|
|
proto = $.ui[ module ].prototype; |
275 |
|
|
for ( i in set ) { |
276 |
|
|
proto.plugins[ i ] = proto.plugins[ i ] || []; |
277 |
|
|
proto.plugins[ i ].push( [ option, set[ i ] ] ); |
278 |
|
|
} |
279 |
|
|
}, |
280 |
|
|
call: function( instance, name, args ) { |
281 |
|
|
var i, |
282 |
|
|
set = instance.plugins[ name ]; |
283 |
|
|
if ( !set || !instance.element[ 0 ].parentNode || instance.element[ 0 ].parentNode.nodeType === 11 ) { |
284 |
|
|
return; |
285 |
|
|
} |
286 |
|
|
|
287 |
|
|
for ( i = 0; i < set.length; i++ ) { |
288 |
|
|
if ( instance.options[ set[ i ][ 0 ] ] ) { |
289 |
|
|
set[ i ][ 1 ].apply( instance.element, args ); |
290 |
|
|
} |
291 |
|
|
} |
292 |
|
|
} |
293 |
|
|
}, |
294 |
|
|
|
295 |
|
|
// only used by resizable |
296 |
|
|
hasScroll: function( el, a ) { |
297 |
|
|
|
298 |
|
|
//If overflow is hidden, the element might have extra content, but the user wants to hide it |
299 |
|
|
if ( $( el ).css( "overflow" ) === "hidden") { |
300 |
|
|
return false; |
301 |
|
|
} |
302 |
|
|
|
303 |
|
|
var scroll = ( a && a === "left" ) ? "scrollLeft" : "scrollTop", |
304 |
|
|
has = false; |
305 |
|
|
|
306 |
|
|
if ( el[ scroll ] > 0 ) { |
307 |
|
|
return true; |
308 |
|
|
} |
309 |
|
|
|
310 |
|
|
// TODO: determine which cases actually cause this to happen |
311 |
|
|
// if the element doesn't have the scroll set, see if it's possible to |
312 |
|
|
// set the scroll |
313 |
|
|
el[ scroll ] = 1; |
314 |
|
|
has = ( el[ scroll ] > 0 ); |
315 |
|
|
el[ scroll ] = 0; |
316 |
|
|
return has; |
317 |
|
|
} |
318 |
|
|
}); |
319 |
|
|
|
320 |
|
|
})( jQuery ); |