- * Show all matched elements using a graceful animation.
8
- * The height, width, and opacity of each of the matched elements
9
- * are changed dynamically according to the specified speed.
10
- *
11
- * @example $("p").show("slow");
12
- *
13
- * @name show
14
- * @type jQuery
15
- * @param Object speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
16
- * @cat Effects/Animations
17
- */
18
-
19
- /**
20
- * Show all matched elements using a graceful animation and firing a callback
21
- * function after completion.
22
- * The height, width, and opacity of each of the matched elements
23
- * are changed dynamically according to the specified speed.
24
- *
25
- * @example $("p").show("slow",function(){
26
- * alert("Animation Done.");
27
- * });
28
- *
29
- * @name show
30
- * @type jQuery
31
- * @param Object speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
32
- * @param Function callback A function to be executed whenever the animation completes.
33
- * @cat Effects/Animations
34
- */
35
- show: function(speed,callback){
36
- return speed ? this.animate({
37
- height: "show", width: "show", opacity: "show"
38
- }, speed, callback) : this._show();
39
- },
40
-
41
- // Overwrite the old hide method
42
- _hide: jQuery.fn.hide,
43
-
44
- /**
45
- * Hide all matched elements using a graceful animation.
46
- * The height, width, and opacity of each of the matched elements
47
- * are changed dynamically according to the specified speed.
48
- *
49
- * @example $("p").hide("slow");
50
- *
51
- * @name hide
52
- * @type jQuery
53
- * @param Object speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
54
- * @cat Effects/Animations
55
- */
56
-
57
- /**
58
- * Hide all matched elements using a graceful animation and firing a callback
59
- * function after completion.
60
- * The height, width, and opacity of each of the matched elements
61
- * are changed dynamically according to the specified speed.
62
- *
63
- * @example $("p").hide("slow",function(){
64
- * alert("Animation Done.");
65
- * });
66
- *
67
- * @name hide
68
- * @type jQuery
69
- * @param Object speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
70
- * @param Function callback A function to be executed whenever the animation completes.
71
- * @cat Effects/Animations
72
- */
73
- hide: function(speed,callback){
74
- return speed ? this.animate({
75
- height: "hide", width: "hide", opacity: "hide"
76
- }, speed, callback) : this._hide();
77
- },
78
-
79
- /**
80
- * Reveal all matched elements by adjusting their height.
81
- * Only the height is adjusted for this animation, causing all matched
82
- * elements to be revealed in a "sliding" manner.
83
- *
84
- * @example $("p").slideDown("slow");
85
- *
86
- * @name slideDown
87
- * @type jQuery
88
- * @param Object speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
89
- * @cat Effects/Animations
90
- */
91
-
92
- /**
93
- * Reveal all matched elements by adjusting their height and firing a callback
94
- * function after completion.
95
- * Only the height is adjusted for this animation, causing all matched
96
- * elements to be revealed in a "sliding" manner.
97
- *
98
- * @example $("p").slideDown("slow",function(){
99
- * alert("Animation Done.");
100
- * });
101
- *
102
- * @name slideDown
103
- * @type jQuery
104
- * @param Object speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
105
- * @param Function callback A function to be executed whenever the animation completes.
- * Hide all matched elements by adjusting their height.
114
- * Only the height is adjusted for this animation, causing all matched
115
- * elements to be hidden in a "sliding" manner.
116
- *
117
- * @example $("p").slideUp("slow");
118
- *
119
- * @name slideUp
120
- * @type jQuery
121
- * @param Object speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
122
- * @cat Effects/Animations
123
- */
124
-
125
- /**
126
- * Hide all matched elements by adjusting their height and firing a callback
127
- * function after completion.
128
- * Only the height is adjusted for this animation, causing all matched
129
- * elements to be hidden in a "sliding" manner.
130
- *
131
- * @example $("p").slideUp("slow",function(){
132
- * alert("Animation Done.");
133
- * });
134
- *
135
- * @name slideUp
136
- * @type jQuery
137
- * @param Object speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
138
- * @param Function callback A function to be executed whenever the animation completes.
- * Toggle the visibility of all matched elements by adjusting their height.
147
- * Only the height is adjusted for this animation, causing all matched
148
- * elements to be hidden in a "sliding" manner.
149
- *
150
- * @example $("p").slideToggle("slow");
151
- *
152
- * @name slideToggle
153
- * @type jQuery
154
- * @param Object speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
155
- * @cat Effects/Animations
156
- */
157
-
158
- /**
159
- * Toggle the visibility of all matched elements by adjusting their height
160
- * and firing a callback function after completion.
161
- * Only the height is adjusted for this animation, causing all matched
- * @param Object speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
171
- * @param Function callback A function to be executed whenever the animation completes.
172
- * @cat Effects/Animations
173
- */
174
- slideToggle: function(speed,callback){
175
- return this.each(function(){
176
- var state = jQuery(this).is(":hidden") ? "show" : "hide";
- * Fade in all matched elements by adjusting their opacity.
183
- * Only the opacity is adjusted for this animation, meaning that
184
- * all of the matched elements should already have some form of height
185
- * and width associated with them.
186
- *
187
- * @example $("p").fadeIn("slow");
188
- *
189
- * @name fadeIn
190
- * @type jQuery
191
- * @param Object speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
192
- * @cat Effects/Animations
193
- */
194
-
195
- /**
196
- * Fade in all matched elements by adjusting their opacity and firing a
197
- * callback function after completion.
198
- * Only the opacity is adjusted for this animation, meaning that
199
- * all of the matched elements should already have some form of height
200
- * and width associated with them.
201
- *
202
- * @example $("p").fadeIn("slow",function(){
203
- * alert("Animation Done.");
204
- * });
205
- *
206
- * @name fadeIn
207
- * @type jQuery
208
- * @param Object speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
209
- * @param Function callback A function to be executed whenever the animation completes.
- * Fade out all matched elements by adjusting their opacity.
218
- * Only the opacity is adjusted for this animation, meaning that
219
- * all of the matched elements should already have some form of height
220
- * and width associated with them.
221
- *
222
- * @example $("p").fadeOut("slow");
223
- *
224
- * @name fadeOut
225
- * @type jQuery
226
- * @param Object speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
227
- * @cat Effects/Animations
228
- */
229
-
230
- /**
231
- * Fade out all matched elements by adjusting their opacity and firing a
232
- * callback function after completion.
233
- * Only the opacity is adjusted for this animation, meaning that
234
- * all of the matched elements should already have some form of height
235
- * and width associated with them.
236
- *
237
- * @example $("p").fadeOut("slow",function(){
238
- * alert("Animation Done.");
239
- * });
240
- *
241
- * @name fadeOut
242
- * @type jQuery
243
- * @param Object speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
244
- * @param Function callback A function to be executed whenever the animation completes.
- * Fade the opacity of all matched elements to a specified opacity.
253
- * Only the opacity is adjusted for this animation, meaning that
254
- * all of the matched elements should already have some form of height
255
- * and width associated with them.
256
- *
257
- * @example $("p").fadeTo("slow", 0.5);
258
- *
259
- * @name fadeTo
260
- * @type jQuery
261
- * @param Object speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
262
- * @param Number opacity The opacity to fade to (a number from 0 to 1).
263
- * @cat Effects/Animations
264
- */
265
-
266
- /**
267
- * Fade the opacity of all matched elements to a specified opacity and
268
- * firing a callback function after completion.
269
- * Only the opacity is adjusted for this animation, meaning that
270
- * all of the matched elements should already have some form of height
- * @param Object speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
280
- * @param Number opacity The opacity to fade to (a number from 0 to 1).
281
- * @param Function callback A function to be executed whenever the animation completes.
- * A function for making your own, custom, animations. The key aspect of
290
- * this function is the object of style properties that will be animated,
291
- * and to what end. Each key within the object represents a style property
292
- * that will also be animated (for example: "height", "top", or "opacity").
293
- *
294
- * The value associated with the key represents to what end the property
295
- * will be animated. If a number is provided as the value, then the style
296
- * property will be transitioned from its current state to that new number.
297
- * Oterwise if the string "hide", "show", or "toggle" is provided, a default
298
- * animation will be constructed for that property.
299
- *
300
- * @example $("p").animate({
301
- * height: 'toggle', opacity: 'toggle'
302
- * }, "slow");
303
- *
304
- * @example $("p").animate({
305
- * left: 50, opacity: 'show'
306
- * }, 500);
307
- *
308
- * @name animate
309
- * @type jQuery
310
- * @param Hash params A set of style attributes that you wish to animate, and to what end.
311
- * @param Object speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
312
- * @param Function callback A function to be executed whenever the animation completes.
313
- * @cat Effects/Animations
314
- */
315
- animate: function(prop,speed,callback) {
316
- return this.queue(function(){
317
-
318
- this.curAnim = prop;
319
-
320
- for ( var p in prop ) {
321
- var e = new jQuery.fx( this, jQuery.speed(speed,callback), p );
322
- if ( prop[p].constructor == Number )
323
- e.custom( e.cur(), prop[p] );
324
- else
325
- e[ prop[p] ]( prop );
326
- }
327
-
328
- });
329
- },
330
-
331
- /**
332
- *
333
- * @private
334
- */
335
- queue: function(type,fn){
336
- if ( !fn ) {
337
- fn = type;
338
- type = "fx";
339
- }
340
-
341
- return this.each(function(){
342
- if ( !this.queue )
343
- this.queue = {};
344
-
345
- if ( !this.queue[type] )
346
- this.queue[type] = [];
347
-
348
- this.queue[type].push( fn );
349
-
350
- if ( this.queue[type].length == 1 )
351
- fn.apply(this);
352
- });
353
- }
354
-
355
-});
356
-
357
-jQuery.extend({
358
-
359
- setAuto: function(e,p) {
360
- if ( e.notAuto ) return;
361
-
362
- if ( p == "height" && e.scrollHeight != parseInt(jQuery.curCSS(e,p)) ) return;
363
- if ( p == "width" && e.scrollWidth != parseInt(jQuery.curCSS(e,p)) ) return;
364
-
365
- // Remember the original height
366
- var a = e.style[p];
367
-
368
- // Figure out the size of the height right now
369
- var o = jQuery.curCSS(e,p,1);
370
-
371
- if ( p == "height" && e.scrollHeight != o ||
372
- p == "width" && e.scrollWidth != o ) return;
373
-
374
- // Set the height to auto
375
- e.style[p] = e.currentStyle ? "" : "auto";
376
-
377
- // See what the size of "auto" is
378
- var n = jQuery.curCSS(e,p,1);
379
-
380
- // Revert back to the original size
381
- if ( o != n && n != "auto" ) {
382
- e.style[p] = a;
383
- e.notAuto = true;
384
- }
385
- },
386
-
387
- speed: function(s,o) {
388
- o = o || {};
389
-
390
- if ( o.constructor == Function )
391
- o = { complete: o };
392
-
393
- var ss = { slow: 600, fast: 200 };
394
- o.duration = (s && s.constructor == Number ? s : ss[s]) || 400;
395
-
396
- // Queueing
397
- o.oldComplete = o.complete;
398
- o.complete = function(){
399
- jQuery.dequeue(this, "fx");
400
- if ( o.oldComplete && o.oldComplete.constructor == Function )
401
- o.oldComplete.apply( this );
402
- };
403
-
404
- return o;
405
- },
406
-
407
- queue: {},
408
-
409
- dequeue: function(elem,type){
410
- type = type || "fx";
411
-
412
- if ( elem.queue && elem.queue[type] ) {
413
- // Remove self
414
- elem.queue[type].shift();
415
-
416
- // Get next function
417
- var f = elem.queue[type][0];
418
-
419
- if ( f ) f.apply( elem );
420
- }
421
- },
422
-
423
- /*
424
- * I originally wrote fx() as a clone of moo.fx and in the process
425
- * of making it small in size the code became illegible to sane
426
- * people. You've been warned.
427
- */
428
-
429
- fx: function( elem, options, prop ){
430
-
431
- var z = this;
432
-
433
- // The users options
434
- z.o = {
435
- duration: options.duration || 400,
436
- complete: options.complete,
437
- step: options.step
438
- };
439
-
440
- // The element
441
- z.el = elem;
442
-
443
- // The styles
444
- var y = z.el.style;
445
-
446
- // Simple function for setting a style value
447
- z.a = function(){
448
- if ( options.step )
449
- options.step.apply( elem, [ z.now ] );
450
-
451
- if ( prop == "opacity" )
452
- jQuery.attr(y, "opacity", z.now); // Let attr handle opacity
453
- else if ( parseInt(z.now) ) // My hate for IE will never die
454
- y[prop] = parseInt(z.now) + "px";
455
-
456
- y.display = "block";
457
- };
458
-
459
- // Figure out the maximum number to run to
460
- z.max = function(){
461
- return parseFloat( jQuery.css(z.el,prop) );
462
- };
463
-
464
- // Get the current size
465
- z.cur = function(){
466
- var r = parseFloat( jQuery.curCSS(z.el, prop) );
467
- return r && r > -10000 ? r : z.max();
468
- };
469
-
470
- // Start an animation from one number to another
471
- z.custom = function(from,to){
472
- z.startTime = (new Date()).getTime();
473
- z.now = from;
474
- z.a();
475
-
476
- z.timer = setInterval(function(){
477
- z.step(from, to);
478
- }, 13);
479
- };
480
-
481
- // Simple 'show' function
482
- z.show = function( p ){
483
- if ( !z.el.orig ) z.el.orig = {};
484
-
485
- // Remember where we started, so that we can go back to it later
486
- z.el.orig[prop] = this.cur();
487
-
488
- // Begin the animation
489
- if (prop == "opacity")
490
- z.custom(z.el.orig[prop], 1);
491
- else
492
- z.custom(0, z.el.orig[prop]);
493
-
494
- // Stupid IE, look what you made me do
495
- if ( prop != "opacity" )
496
- y[prop] = "1px";
497
- };
498
-
499
- // Simple 'hide' function
500
- z.hide = function(){
501
- if ( !z.el.orig ) z.el.orig = {};
502
-
503
- // Remember where we started, so that we can go back to it later
+ * Show all matched elements using a graceful animation.
8
+ * The height, width, and opacity of each of the matched elements
9
+ * are changed dynamically according to the specified speed.
10
+ *
11
+ * @example $("p").show("slow");
12
+ *
13
+ * @name show
14
+ * @type jQuery
15
+ * @param Object speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
16
+ * @cat Effects/Animations
17
+ */
18
+
19
+ /**
20
+ * Show all matched elements using a graceful animation and firing a callback
21
+ * function after completion.
22
+ * The height, width, and opacity of each of the matched elements
23
+ * are changed dynamically according to the specified speed.
24
+ *
25
+ * @example $("p").show("slow",function(){
26
+ * alert("Animation Done.");
27
+ * });
28
+ *
29
+ * @name show
30
+ * @type jQuery
31
+ * @param Object speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
32
+ * @param Function callback A function to be executed whenever the animation completes.
33
+ * @cat Effects/Animations
34
+ */
35
+ show: function(speed,callback){
36
+ return speed ? this.animate({
37
+ height: "show", width: "show", opacity: "show"
38
+ }, speed, callback) : this._show();
39
+ },
40
+
41
+ // Overwrite the old hide method
42
+ _hide: jQuery.fn.hide,
43
+
44
+ /**
45
+ * Hide all matched elements using a graceful animation.
46
+ * The height, width, and opacity of each of the matched elements
47
+ * are changed dynamically according to the specified speed.
48
+ *
49
+ * @example $("p").hide("slow");
50
+ *
51
+ * @name hide
52
+ * @type jQuery
53
+ * @param Object speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
54
+ * @cat Effects/Animations
55
+ */
56
+
57
+ /**
58
+ * Hide all matched elements using a graceful animation and firing a callback
59
+ * function after completion.
60
+ * The height, width, and opacity of each of the matched elements
61
+ * are changed dynamically according to the specified speed.
62
+ *
63
+ * @example $("p").hide("slow",function(){
64
+ * alert("Animation Done.");
65
+ * });
66
+ *
67
+ * @name hide
68
+ * @type jQuery
69
+ * @param Object speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
70
+ * @param Function callback A function to be executed whenever the animation completes.
71
+ * @cat Effects/Animations
72
+ */
73
+ hide: function(speed,callback){
74
+ return speed ? this.animate({
75
+ height: "hide", width: "hide", opacity: "hide"
76
+ }, speed, callback) : this._hide();
77
+ },
78
+
79
+ /**
80
+ * Reveal all matched elements by adjusting their height.
81
+ * Only the height is adjusted for this animation, causing all matched
82
+ * elements to be revealed in a "sliding" manner.
83
+ *
84
+ * @example $("p").slideDown("slow");
85
+ *
86
+ * @name slideDown
87
+ * @type jQuery
88
+ * @param Object speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
89
+ * @cat Effects/Animations
90
+ */
91
+
92
+ /**
93
+ * Reveal all matched elements by adjusting their height and firing a callback
94
+ * function after completion.
95
+ * Only the height is adjusted for this animation, causing all matched
96
+ * elements to be revealed in a "sliding" manner.
97
+ *
98
+ * @example $("p").slideDown("slow",function(){
99
+ * alert("Animation Done.");
100
+ * });
101
+ *
102
+ * @name slideDown
103
+ * @type jQuery
104
+ * @param Object speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
105
+ * @param Function callback A function to be executed whenever the animation completes.
+ * Hide all matched elements by adjusting their height.
114
+ * Only the height is adjusted for this animation, causing all matched
115
+ * elements to be hidden in a "sliding" manner.
116
+ *
117
+ * @example $("p").slideUp("slow");
118
+ *
119
+ * @name slideUp
120
+ * @type jQuery
121
+ * @param Object speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
122
+ * @cat Effects/Animations
123
+ */
124
+
125
+ /**
126
+ * Hide all matched elements by adjusting their height and firing a callback
127
+ * function after completion.
128
+ * Only the height is adjusted for this animation, causing all matched
129
+ * elements to be hidden in a "sliding" manner.
130
+ *
131
+ * @example $("p").slideUp("slow",function(){
132
+ * alert("Animation Done.");
133
+ * });
134
+ *
135
+ * @name slideUp
136
+ * @type jQuery
137
+ * @param Object speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
138
+ * @param Function callback A function to be executed whenever the animation completes.
+ * Toggle the visibility of all matched elements by adjusting their height.
147
+ * Only the height is adjusted for this animation, causing all matched
148
+ * elements to be hidden in a "sliding" manner.
149
+ *
150
+ * @example $("p").slideToggle("slow");
151
+ *
152
+ * @name slideToggle
153
+ * @type jQuery
154
+ * @param Object speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
155
+ * @cat Effects/Animations
156
+ */
157
+
158
+ /**
159
+ * Toggle the visibility of all matched elements by adjusting their height
160
+ * and firing a callback function after completion.
161
+ * Only the height is adjusted for this animation, causing all matched
+ * @param Object speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
171
+ * @param Function callback A function to be executed whenever the animation completes.
172
+ * @cat Effects/Animations
173
+ */
174
+ slideToggle: function(speed,callback){
175
+ return this.each(function(){
176
+ var state = jQuery(this).is(":hidden") ? "show" : "hide";
+ * Fade in all matched elements by adjusting their opacity.
183
+ * Only the opacity is adjusted for this animation, meaning that
184
+ * all of the matched elements should already have some form of height
185
+ * and width associated with them.
186
+ *
187
+ * @example $("p").fadeIn("slow");
188
+ *
189
+ * @name fadeIn
190
+ * @type jQuery
191
+ * @param Object speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
192
+ * @cat Effects/Animations
193
+ */
194
+
195
+ /**
196
+ * Fade in all matched elements by adjusting their opacity and firing a
197
+ * callback function after completion.
198
+ * Only the opacity is adjusted for this animation, meaning that
199
+ * all of the matched elements should already have some form of height
200
+ * and width associated with them.
201
+ *
202
+ * @example $("p").fadeIn("slow",function(){
203
+ * alert("Animation Done.");
204
+ * });
205
+ *
206
+ * @name fadeIn
207
+ * @type jQuery
208
+ * @param Object speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
209
+ * @param Function callback A function to be executed whenever the animation completes.
+ * Fade out all matched elements by adjusting their opacity.
218
+ * Only the opacity is adjusted for this animation, meaning that
219
+ * all of the matched elements should already have some form of height
220
+ * and width associated with them.
221
+ *
222
+ * @example $("p").fadeOut("slow");
223
+ *
224
+ * @name fadeOut
225
+ * @type jQuery
226
+ * @param Object speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
227
+ * @cat Effects/Animations
228
+ */
229
+
230
+ /**
231
+ * Fade out all matched elements by adjusting their opacity and firing a
232
+ * callback function after completion.
233
+ * Only the opacity is adjusted for this animation, meaning that
234
+ * all of the matched elements should already have some form of height
235
+ * and width associated with them.
236
+ *
237
+ * @example $("p").fadeOut("slow",function(){
238
+ * alert("Animation Done.");
239
+ * });
240
+ *
241
+ * @name fadeOut
242
+ * @type jQuery
243
+ * @param Object speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
244
+ * @param Function callback A function to be executed whenever the animation completes.
+ * Fade the opacity of all matched elements to a specified opacity.
253
+ * Only the opacity is adjusted for this animation, meaning that
254
+ * all of the matched elements should already have some form of height
255
+ * and width associated with them.
256
+ *
257
+ * @example $("p").fadeTo("slow", 0.5);
258
+ *
259
+ * @name fadeTo
260
+ * @type jQuery
261
+ * @param Object speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
262
+ * @param Number opacity The opacity to fade to (a number from 0 to 1).
263
+ * @cat Effects/Animations
264
+ */
265
+
266
+ /**
267
+ * Fade the opacity of all matched elements to a specified opacity and
268
+ * firing a callback function after completion.
269
+ * Only the opacity is adjusted for this animation, meaning that
270
+ * all of the matched elements should already have some form of height
+ * @param Object speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
280
+ * @param Number opacity The opacity to fade to (a number from 0 to 1).
281
+ * @param Function callback A function to be executed whenever the animation completes.
+ * A function for making your own, custom, animations. The key aspect of
290
+ * this function is the object of style properties that will be animated,
291
+ * and to what end. Each key within the object represents a style property
292
+ * that will also be animated (for example: "height", "top", or "opacity").
293
+ *
294
+ * The value associated with the key represents to what end the property
295
+ * will be animated. If a number is provided as the value, then the style
296
+ * property will be transitioned from its current state to that new number.
297
+ * Oterwise if the string "hide", "show", or "toggle" is provided, a default
298
+ * animation will be constructed for that property.
299
+ *
300
+ * @example $("p").animate({
301
+ * height: 'toggle', opacity: 'toggle'
302
+ * }, "slow");
303
+ *
304
+ * @example $("p").animate({
305
+ * left: 50, opacity: 'show'
306
+ * }, 500);
307
+ *
308
+ * @name animate
309
+ * @type jQuery
310
+ * @param Hash params A set of style attributes that you wish to animate, and to what end.
311
+ * @param Object speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
312
+ * @param Function callback A function to be executed whenever the animation completes.
313
+ * @cat Effects/Animations
314
+ */
315
+ animate: function(prop,speed,callback) {
316
+ return this.queue(function(){
317
+
318
+ this.curAnim = prop;
319
+
320
+ for ( var p in prop ) {
321
+ var e = new jQuery.fx( this, jQuery.speed(speed,callback), p );
322
+ if ( prop[p].constructor == Number )
323
+ e.custom( e.cur(), prop[p] );
324
+ else
325
+ e[ prop[p] ]( prop );
326
+ }
327
+
328
+ });
329
+ },
330
+
331
+ /**
332
+ *
333
+ * @private
334
+ */
335
+ queue: function(type,fn){
336
+ if ( !fn ) {
337
+ fn = type;
338
+ type = "fx";
339
+ }
340
+
341
+ return this.each(function(){
342
+ if ( !this.queue )
343
+ this.queue = {};
344
+
345
+ if ( !this.queue[type] )
346
+ this.queue[type] = [];
347
+
348
+ this.queue[type].push( fn );
349
+
350
+ if ( this.queue[type].length == 1 )
351
+ fn.apply(this);
352
+ });
353
+ }
354
+
355
+});
356
+
357
+jQuery.extend({
358
+
359
+ setAuto: function(e,p) {
360
+ if ( e.notAuto ) return;
361
+
362
+ if ( p == "height" && e.scrollHeight != parseInt(jQuery.curCSS(e,p)) ) return;
363
+ if ( p == "width" && e.scrollWidth != parseInt(jQuery.curCSS(e,p)) ) return;
364
+
365
+ // Remember the original height
366
+ var a = e.style[p];
367
+
368
+ // Figure out the size of the height right now
369
+ var o = jQuery.curCSS(e,p,1);
370
+
371
+ if ( p == "height" && e.scrollHeight != o ||
372
+ p == "width" && e.scrollWidth != o ) return;
373
+
374
+ // Set the height to auto
375
+ e.style[p] = e.currentStyle ? "" : "auto";
376
+
377
+ // See what the size of "auto" is
378
+ var n = jQuery.curCSS(e,p,1);
379
+
380
+ // Revert back to the original size
381
+ if ( o != n && n != "auto" ) {
382
+ e.style[p] = a;
383
+ e.notAuto = true;
384
+ }
385
+ },
386
+
387
+ speed: function(s,o) {
388
+ o = o || {};
389
+
390
+ if ( o.constructor == Function )
391
+ o = { complete: o };
392
+
393
+ var ss = { slow: 600, fast: 200 };
394
+ o.duration = (s && s.constructor == Number ? s : ss[s]) || 400;
395
+
396
+ // Queueing
397
+ o.oldComplete = o.complete;
398
+ o.complete = function(){
399
+ jQuery.dequeue(this, "fx");
400
+ if ( o.oldComplete && o.oldComplete.constructor == Function )
401
+ o.oldComplete.apply( this );
402
+ };
403
+
404
+ return o;
405
+ },
406
+
407
+ queue: {},
408
+
409
+ dequeue: function(elem,type){
410
+ type = type || "fx";
411
+
412
+ if ( elem.queue && elem.queue[type] ) {
413
+ // Remove self
414
+ elem.queue[type].shift();
415
+
416
+ // Get next function
417
+ var f = elem.queue[type][0];
418
+
419
+ if ( f ) f.apply( elem );
420
+ }
421
+ },
422
+
423
+ /*
424
+ * I originally wrote fx() as a clone of moo.fx and in the process
425
+ * of making it small in size the code became illegible to sane
426
+ * people. You've been warned.
427
+ */
428
+
429
+ fx: function( elem, options, prop ){
430
+
431
+ var z = this;
432
+
433
+ // The users options
434
+ z.o = {
435
+ duration: options.duration || 400,
436
+ complete: options.complete,
437
+ step: options.step
438
+ };
439
+
440
+ // The element
441
+ z.el = elem;
442
+
443
+ // The styles
444
+ var y = z.el.style;
445
+
446
+ // Simple function for setting a style value
447
+ z.a = function(){
448
+ if ( options.step )
449
+ options.step.apply( elem, [ z.now ] );
450
+
451
+ if ( prop == "opacity" )
452
+ jQuery.attr(y, "opacity", z.now); // Let attr handle opacity
453
+ else if ( parseInt(z.now) ) // My hate for IE will never die
454
+ y[prop] = parseInt(z.now) + "px";
455
+
456
+ y.display = "block";
457
+ };
458
+
459
+ // Figure out the maximum number to run to
460
+ z.max = function(){
461
+ return parseFloat( jQuery.css(z.el,prop) );
462
+ };
463
+
464
+ // Get the current size
465
+ z.cur = function(){
466
+ var r = parseFloat( jQuery.curCSS(z.el, prop) );
467
+ return r && r > -10000 ? r : z.max();
468
+ };
469
+
470
+ // Start an animation from one number to another
471
+ z.custom = function(from,to){
472
+ z.startTime = (new Date()).getTime();
473
+ z.now = from;
474
+ z.a();
475
+
476
+ z.timer = setInterval(function(){
477
+ z.step(from, to);
478
+ }, 13);
479
+ };
480
+
481
+ // Simple 'show' function
482
+ z.show = function( p ){
483
+ if ( !z.el.orig ) z.el.orig = {};
484
+
485
+ // Remember where we started, so that we can go back to it later
486
+ z.el.orig[prop] = this.cur();
487
+
488
+ // Begin the animation
489
+ if (prop == "opacity")
490
+ z.custom(z.el.orig[prop], 1);
491
+ else
492
+ z.custom(0, z.el.orig[prop]);
493
+
494
+ // Stupid IE, look what you made me do
495
+ if ( prop != "opacity" )
496
+ y[prop] = "1px";
497
+ };
498
+
499
+ // Simple 'hide' function
500
+ z.hide = function(){
501
+ if ( !z.el.orig ) z.el.orig = {};
502
+
503
+ // Remember where we started, so that we can go back to it later
dbee06ddbee06ddbee06ddbee06ddbee06ddbee06d