Project

General

Profile

1
/*!
2
 * jQuery UI 1.8.6
3
 *
4
 * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
5
 * Dual licensed under the MIT or GPL Version 2 licenses.
6
 * http://jquery.org/license
7
 *
8
 * http://docs.jquery.com/UI
9
 */
10
(function( $, undefined ) {
11

    
12
// prevent duplicate loading
13
// this is only a problem because we proxy existing functions
14
// and we don't want to double proxy them
15
$.ui = $.ui || {};
16
if ( $.ui.version ) {
17
	return;
18
}
19

    
20
$.extend( $.ui, {
21
	version: "1.8.6",
22

    
23
	keyCode: {
24
		ALT: 18,
25
		BACKSPACE: 8,
26
		CAPS_LOCK: 20,
27
		COMMA: 188,
28
		COMMAND: 91,
29
		COMMAND_LEFT: 91, // COMMAND
30
		COMMAND_RIGHT: 93,
31
		CONTROL: 17,
32
		DELETE: 46,
33
		DOWN: 40,
34
		END: 35,
35
		ENTER: 13,
36
		ESCAPE: 27,
37
		HOME: 36,
38
		INSERT: 45,
39
		LEFT: 37,
40
		MENU: 93, // COMMAND_RIGHT
41
		NUMPAD_ADD: 107,
42
		NUMPAD_DECIMAL: 110,
43
		NUMPAD_DIVIDE: 111,
44
		NUMPAD_ENTER: 108,
45
		NUMPAD_MULTIPLY: 106,
46
		NUMPAD_SUBTRACT: 109,
47
		PAGE_DOWN: 34,
48
		PAGE_UP: 33,
49
		PERIOD: 190,
50
		RIGHT: 39,
51
		SHIFT: 16,
52
		SPACE: 32,
53
		TAB: 9,
54
		UP: 38,
55
		WINDOWS: 91 // COMMAND
56
	}
57
});
58

    
59
// plugins
60
$.fn.extend({
61
	_focus: $.fn.focus,
62
	focus: function( delay, fn ) {
63
		return typeof delay === "number" ?
64
			this.each(function() {
65
				var elem = this;
66
				setTimeout(function() {
67
					$( elem ).focus();
68
					if ( fn ) {
69
						fn.call( elem );
70
					}
71
				}, delay );
72
			}) :
73
			this._focus.apply( this, arguments );
74
	},
75

    
76
	scrollParent: function() {
77
		var scrollParent;
78
		if (($.browser.msie && (/(static|relative)/).test(this.css('position'))) || (/absolute/).test(this.css('position'))) {
79
			scrollParent = this.parents().filter(function() {
80
				return (/(relative|absolute|fixed)/).test($.curCSS(this,'position',1)) && (/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1));
81
			}).eq(0);
82
		} else {
83
			scrollParent = this.parents().filter(function() {
84
				return (/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1));
85
			}).eq(0);
86
		}
87

    
88
		return (/fixed/).test(this.css('position')) || !scrollParent.length ? $(document) : scrollParent;
89
	},
90

    
91
	zIndex: function( zIndex ) {
92
		if ( zIndex !== undefined ) {
93
			return this.css( "zIndex", zIndex );
94
		}
95

    
96
		if ( this.length ) {
97
			var elem = $( this[ 0 ] ), position, value;
98
			while ( elem.length && elem[ 0 ] !== document ) {
99
				// Ignore z-index if position is set to a value where z-index is ignored by the browser
100
				// This makes behavior of this function consistent across browsers
101
				// WebKit always returns auto if the element is positioned
102
				position = elem.css( "position" );
103
				if ( position === "absolute" || position === "relative" || position === "fixed" ) {
104
					// IE returns 0 when zIndex is not specified
105
					// other browsers return a string
106
					// we ignore the case of nested elements with an explicit value of 0
107
					// <div style="z-index: -10;"><div style="z-index: 0;"></div></div>
108
					value = parseInt( elem.css( "zIndex" ), 10 );
109
					if ( !isNaN( value ) && value !== 0 ) {
110
						return value;
111
					}
112
				}
113
				elem = elem.parent();
114
			}
115
		}
116

    
117
		return 0;
118
	},
119

    
120
	disableSelection: function() {
121
		return this.bind( ( $.support.selectstart ? "selectstart" : "mousedown" ) +
122
			".ui-disableSelection", function( event ) {
123
				event.preventDefault();
124
			});
125
	},
126

    
127
	enableSelection: function() {
128
		return this.unbind( ".ui-disableSelection" );
129
	}
130
});
131

    
132
$.each( [ "Width", "Height" ], function( i, name ) {
133
	var side = name === "Width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ],
134
		type = name.toLowerCase(),
135
		orig = {
136
			innerWidth: $.fn.innerWidth,
137
			innerHeight: $.fn.innerHeight,
138
			outerWidth: $.fn.outerWidth,
139
			outerHeight: $.fn.outerHeight
140
		};
141

    
142
	function reduce( elem, size, border, margin ) {
143
		$.each( side, function() {
144
			size -= parseFloat( $.curCSS( elem, "padding" + this, true) ) || 0;
145
			if ( border ) {
146
				size -= parseFloat( $.curCSS( elem, "border" + this + "Width", true) ) || 0;
147
			}
148
			if ( margin ) {
149
				size -= parseFloat( $.curCSS( elem, "margin" + this, true) ) || 0;
150
			}
151
		});
152
		return size;
153
	}
154

    
155
	$.fn[ "inner" + name ] = function( size ) {
156
		if ( size === undefined ) {
157
			return orig[ "inner" + name ].call( this );
158
		}
159

    
160
		return this.each(function() {
161
			$( this ).css( type, reduce( this, size ) + "px" );
162
		});
163
	};
164

    
165
	$.fn[ "outer" + name] = function( size, margin ) {
166
		if ( typeof size !== "number" ) {
167
			return orig[ "outer" + name ].call( this, size );
168
		}
169

    
170
		return this.each(function() {
171
			$( this).css( type, reduce( this, size, true, margin ) + "px" );
172
		});
173
	};
174
});
175

    
176
// selectors
177
function visible( element ) {
178
	return !$( element ).parents().andSelf().filter(function() {
179
		return $.curCSS( this, "visibility" ) === "hidden" ||
180
			$.expr.filters.hidden( this );
181
	}).length;
182
}
183

    
184
$.extend( $.expr[ ":" ], {
185
	data: function( elem, i, match ) {
186
		return !!$.data( elem, match[ 3 ] );
187
	},
188

    
189
	focusable: function( element ) {
190
		var nodeName = element.nodeName.toLowerCase(),
191
			tabIndex = $.attr( element, "tabindex" );
192
		if ( "area" === nodeName ) {
193
			var map = element.parentNode,
194
				mapName = map.name,
195
				img;
196
			if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) {
197
				return false;
198
			}
199
			img = $( "img[usemap=#" + mapName + "]" )[0];
200
			return !!img && visible( img );
201
		}
202
		return ( /input|select|textarea|button|object/.test( nodeName )
203
			? !element.disabled
204
			: "a" == nodeName
205
				? element.href || !isNaN( tabIndex )
206
				: !isNaN( tabIndex ))
207
			// the element and all of its ancestors must be visible
208
			&& visible( element );
209
	},
210

    
211
	tabbable: function( element ) {
212
		var tabIndex = $.attr( element, "tabindex" );
213
		return ( isNaN( tabIndex ) || tabIndex >= 0 ) && $( element ).is( ":focusable" );
214
	}
215
});
216

    
217
// support
218
$(function() {
219
	var body = document.body,
220
		div = body.appendChild( div = document.createElement( "div" ) );
221

    
222
	$.extend( div.style, {
223
		minHeight: "100px",
224
		height: "auto",
225
		padding: 0,
226
		borderWidth: 0
227
	});
228

    
229
	$.support.minHeight = div.offsetHeight === 100;
230
	$.support.selectstart = "onselectstart" in div;
231

    
232
	// set display to none to avoid a layout bug in IE
233
	// http://dev.jquery.com/ticket/4014
234
	body.removeChild( div ).style.display = "none";
235
});
236

    
237

    
238

    
239

    
240

    
241
// deprecated
242
$.extend( $.ui, {
243
	// $.ui.plugin is deprecated.  Use the proxy pattern instead.
244
	plugin: {
245
		add: function( module, option, set ) {
246
			var proto = $.ui[ module ].prototype;
247
			for ( var i in set ) {
248
				proto.plugins[ i ] = proto.plugins[ i ] || [];
249
				proto.plugins[ i ].push( [ option, set[ i ] ] );
250
			}
251
		},
252
		call: function( instance, name, args ) {
253
			var set = instance.plugins[ name ];
254
			if ( !set || !instance.element[ 0 ].parentNode ) {
255
				return;
256
			}
257
	
258
			for ( var i = 0; i < set.length; i++ ) {
259
				if ( instance.options[ set[ i ][ 0 ] ] ) {
260
					set[ i ][ 1 ].apply( instance.element, args );
261
				}
262
			}
263
		}
264
	},
265
	
266
	// will be deprecated when we switch to jQuery 1.4 - use jQuery.contains()
267
	contains: function( a, b ) {
268
		return document.compareDocumentPosition ?
269
			a.compareDocumentPosition( b ) & 16 :
270
			a !== b && a.contains( b );
271
	},
272
	
273
	// only used by resizable
274
	hasScroll: function( el, a ) {
275
	
276
		//If overflow is hidden, the element might have extra content, but the user wants to hide it
277
		if ( $( el ).css( "overflow" ) === "hidden") {
278
			return false;
279
		}
280
	
281
		var scroll = ( a && a === "left" ) ? "scrollLeft" : "scrollTop",
282
			has = false;
283
	
284
		if ( el[ scroll ] > 0 ) {
285
			return true;
286
		}
287
	
288
		// TODO: determine which cases actually cause this to happen
289
		// if the element doesn't have the scroll set, see if it's possible to
290
		// set the scroll
291
		el[ scroll ] = 1;
292
		has = ( el[ scroll ] > 0 );
293
		el[ scroll ] = 0;
294
		return has;
295
	},
296
	
297
	// these are odd functions, fix the API or move into individual plugins
298
	isOverAxis: function( x, reference, size ) {
299
		//Determines when x coordinate is over "b" element axis
300
		return ( x > reference ) && ( x < ( reference + size ) );
301
	},
302
	isOver: function( y, x, top, left, height, width ) {
303
		//Determines when x, y coordinates is over "b" element
304
		return $.ui.isOverAxis( y, top, height ) && $.ui.isOverAxis( x, left, width );
305
	}
306
});
307

    
308
})( jQuery );
(19-19/32)