r67903 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r67902‎ | r67903 | r67904 >
Date:16:02, 12 June 2010
Author:papyromancer
Status:deferred
Tags:
Comment:
removing improper commit of .svn folder
Modified paths:
  • /branches/MwEmbedStandAlone/tests/jslib/.svn/all-wcprops (deleted) (history)
  • /branches/MwEmbedStandAlone/tests/jslib/.svn/entries (deleted) (history)
  • /branches/MwEmbedStandAlone/tests/jslib/.svn/prop-base/expressInstall.swf.svn-base (deleted) (history)
  • /branches/MwEmbedStandAlone/tests/jslib/.svn/text-base/expressInstall.swf.svn-base (deleted) (history)
  • /branches/MwEmbedStandAlone/tests/jslib/.svn/text-base/jquery.js.svn-base (deleted) (history)
  • /branches/MwEmbedStandAlone/tests/jslib/.svn/text-base/swfobject.js.svn-base (deleted) (history)

Diff [purge]

Index: branches/MwEmbedStandAlone/tests/jslib/.svn/all-wcprops
@@ -1,23 +0,0 @@
2 -K 25
3 -svn:wc:ra_dav:version-url
4 -V 56
5 -/kalorg/!svn/ver/513/kdp/trunk/KDP_3/html-template/jslib
6 -END
7 -swfobject.js
8 -K 25
9 -svn:wc:ra_dav:version-url
10 -V 69
11 -/kalorg/!svn/ver/513/kdp/trunk/KDP_3/html-template/jslib/swfobject.js
12 -END
13 -jquery.js
14 -K 25
15 -svn:wc:ra_dav:version-url
16 -V 66
17 -/kalorg/!svn/ver/513/kdp/trunk/KDP_3/html-template/jslib/jquery.js
18 -END
19 -expressInstall.swf
20 -K 25
21 -svn:wc:ra_dav:version-url
22 -V 75
23 -/kalorg/!svn/ver/513/kdp/trunk/KDP_3/html-template/jslib/expressInstall.swf
24 -END
Index: branches/MwEmbedStandAlone/tests/jslib/.svn/entries
@@ -1,136 +0,0 @@
2 -10
3 -
4 -dir
5 -632
6 -http://www.kaltura.org/kalorg/kdp/trunk/KDP_3/html-template/jslib
7 -http://www.kaltura.org/kalorg
8 -
9 -
10 -
11 -2010-04-12T02:31:38.594595Z
12 -513
13 -kalturian
14 -
15 -
16 -
17 -
18 -
19 -
20 -
21 -
22 -
23 -
24 -
25 -
26 -
27 -
28 -b58a29cf-3064-46da-94c6-1c29cc75c8e5
29 -
30 -swfobject.js
31 -file
32 -
33 -
34 -
35 -
36 -2010-06-10T19:38:19.125053Z
37 -892a543f3abb54e8ec1ada55be3b0649
38 -2010-04-12T02:31:38.594595Z
39 -513
40 -kalturian
41 -
42 -
43 -
44 -
45 -
46 -
47 -
48 -
49 -
50 -
51 -
52 -
53 -
54 -
55 -
56 -
57 -
58 -
59 -
60 -
61 -
62 -10220
63 -
64 -menu
65 -dir
66 -
67 -syntax
68 -dir
69 -
70 -jquery.js
71 -file
72 -
73 -
74 -
75 -
76 -2010-06-10T19:38:19.128387Z
77 -2eb478f7885959c6c627422f425c0cf8
78 -2010-04-12T02:31:38.594595Z
79 -513
80 -kalturian
81 -
82 -
83 -
84 -
85 -
86 -
87 -
88 -
89 -
90 -
91 -
92 -
93 -
94 -
95 -
96 -
97 -
98 -
99 -
100 -
101 -
102 -160712
103 -
104 -expressInstall.swf
105 -file
106 -
107 -
108 -
109 -
110 -2010-06-10T19:38:19.128387Z
111 -7b65fbfaec8b2955090389af60646e8b
112 -2010-04-12T02:31:38.594595Z
113 -513
114 -kalturian
115 -has-props
116 -
117 -
118 -
119 -
120 -
121 -
122 -
123 -
124 -
125 -
126 -
127 -
128 -
129 -
130 -
131 -
132 -
133 -
134 -
135 -
136 -727
137 -
Index: branches/MwEmbedStandAlone/tests/jslib/.svn/prop-base/expressInstall.swf.svn-base
@@ -1,5 +0,0 @@
2 -K 13
3 -svn:mime-type
4 -V 24
5 -application/octet-stream
6 -END
Index: branches/MwEmbedStandAlone/tests/jslib/.svn/text-base/jquery.js.svn-base
@@ -1,6078 +0,0 @@
2 -/*!
3 - * jQuery JavaScript Library v1.4.1
4 - * http://jquery.com/
5 - *
6 - * Copyright 2010, John Resig
7 - * Dual licensed under the MIT or GPL Version 2 licenses.
8 - * http://jquery.org/license
9 - *
10 - * Includes Sizzle.js
11 - * http://sizzlejs.com/
12 - * Copyright 2010, The Dojo Foundation
13 - * Released under the MIT, BSD, and GPL Licenses.
14 - *
15 - * Date: Mon Jan 25 19:43:33 2010 -0500
16 - */
17 -(function( window, undefined ) {
18 -
19 -// Define a local copy of jQuery
20 -var jQuery = function( selector, context ) {
21 - // The jQuery object is actually just the init constructor 'enhanced'
22 - return new jQuery.fn.init( selector, context );
23 - },
24 -
25 - // Map over jQuery in case of overwrite
26 - _jQuery = window.jQuery,
27 -
28 - // Map over the $ in case of overwrite
29 - _$ = window.$,
30 -
31 - // Use the correct document accordingly with window argument (sandbox)
32 - document = window.document,
33 -
34 - // A central reference to the root jQuery(document)
35 - rootjQuery,
36 -
37 - // A simple way to check for HTML strings or ID strings
38 - // (both of which we optimize for)
39 - quickExpr = /^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,
40 -
41 - // Is it a simple selector
42 - isSimple = /^.[^:#\[\.,]*$/,
43 -
44 - // Check if a string has a non-whitespace character in it
45 - rnotwhite = /\S/,
46 -
47 - // Used for trimming whitespace
48 - rtrim = /^(\s|\u00A0)+|(\s|\u00A0)+$/g,
49 -
50 - // Match a standalone tag
51 - rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,
52 -
53 - // Keep a UserAgent string for use with jQuery.browser
54 - userAgent = navigator.userAgent,
55 -
56 - // For matching the engine and version of the browser
57 - browserMatch,
58 -
59 - // Has the ready events already been bound?
60 - readyBound = false,
61 -
62 - // The functions to execute on DOM ready
63 - readyList = [],
64 -
65 - // The ready event handler
66 - DOMContentLoaded,
67 -
68 - // Save a reference to some core methods
69 - toString = Object.prototype.toString,
70 - hasOwnProperty = Object.prototype.hasOwnProperty,
71 - push = Array.prototype.push,
72 - slice = Array.prototype.slice,
73 - indexOf = Array.prototype.indexOf;
74 -
75 -jQuery.fn = jQuery.prototype = {
76 - init: function( selector, context ) {
77 - var match, elem, ret, doc;
78 -
79 - // Handle $(""), $(null), or $(undefined)
80 - if ( !selector ) {
81 - return this;
82 - }
83 -
84 - // Handle $(DOMElement)
85 - if ( selector.nodeType ) {
86 - this.context = this[0] = selector;
87 - this.length = 1;
88 - return this;
89 - }
90 -
91 - // Handle HTML strings
92 - if ( typeof selector === "string" ) {
93 - // Are we dealing with HTML string or an ID?
94 - match = quickExpr.exec( selector );
95 -
96 - // Verify a match, and that no context was specified for #id
97 - if ( match && (match[1] || !context) ) {
98 -
99 - // HANDLE: $(html) -> $(array)
100 - if ( match[1] ) {
101 - doc = (context ? context.ownerDocument || context : document);
102 -
103 - // If a single string is passed in and it's a single tag
104 - // just do a createElement and skip the rest
105 - ret = rsingleTag.exec( selector );
106 -
107 - if ( ret ) {
108 - if ( jQuery.isPlainObject( context ) ) {
109 - selector = [ document.createElement( ret[1] ) ];
110 - jQuery.fn.attr.call( selector, context, true );
111 -
112 - } else {
113 - selector = [ doc.createElement( ret[1] ) ];
114 - }
115 -
116 - } else {
117 - ret = buildFragment( [ match[1] ], [ doc ] );
118 - selector = (ret.cacheable ? ret.fragment.cloneNode(true) : ret.fragment).childNodes;
119 - }
120 -
121 - // HANDLE: $("#id")
122 - } else {
123 - elem = document.getElementById( match[2] );
124 -
125 - if ( elem ) {
126 - // Handle the case where IE and Opera return items
127 - // by name instead of ID
128 - if ( elem.id !== match[2] ) {
129 - return rootjQuery.find( selector );
130 - }
131 -
132 - // Otherwise, we inject the element directly into the jQuery object
133 - this.length = 1;
134 - this[0] = elem;
135 - }
136 -
137 - this.context = document;
138 - this.selector = selector;
139 - return this;
140 - }
141 -
142 - // HANDLE: $("TAG")
143 - } else if ( !context && /^\w+$/.test( selector ) ) {
144 - this.selector = selector;
145 - this.context = document;
146 - selector = document.getElementsByTagName( selector );
147 -
148 - // HANDLE: $(expr, $(...))
149 - } else if ( !context || context.jquery ) {
150 - return (context || rootjQuery).find( selector );
151 -
152 - // HANDLE: $(expr, context)
153 - // (which is just equivalent to: $(context).find(expr)
154 - } else {
155 - return jQuery( context ).find( selector );
156 - }
157 -
158 - // HANDLE: $(function)
159 - // Shortcut for document ready
160 - } else if ( jQuery.isFunction( selector ) ) {
161 - return rootjQuery.ready( selector );
162 - }
163 -
164 - if (selector.selector !== undefined) {
165 - this.selector = selector.selector;
166 - this.context = selector.context;
167 - }
168 -
169 - return jQuery.isArray( selector ) ?
170 - this.setArray( selector ) :
171 - jQuery.makeArray( selector, this );
172 - },
173 -
174 - // Start with an empty selector
175 - selector: "",
176 -
177 - // The current version of jQuery being used
178 - jquery: "1.4.1",
179 -
180 - // The default length of a jQuery object is 0
181 - length: 0,
182 -
183 - // The number of elements contained in the matched element set
184 - size: function() {
185 - return this.length;
186 - },
187 -
188 - toArray: function() {
189 - return slice.call( this, 0 );
190 - },
191 -
192 - // Get the Nth element in the matched element set OR
193 - // Get the whole matched element set as a clean array
194 - get: function( num ) {
195 - return num == null ?
196 -
197 - // Return a 'clean' array
198 - this.toArray() :
199 -
200 - // Return just the object
201 - ( num < 0 ? this.slice(num)[ 0 ] : this[ num ] );
202 - },
203 -
204 - // Take an array of elements and push it onto the stack
205 - // (returning the new matched element set)
206 - pushStack: function( elems, name, selector ) {
207 - // Build a new jQuery matched element set
208 - var ret = jQuery( elems || null );
209 -
210 - // Add the old object onto the stack (as a reference)
211 - ret.prevObject = this;
212 -
213 - ret.context = this.context;
214 -
215 - if ( name === "find" ) {
216 - ret.selector = this.selector + (this.selector ? " " : "") + selector;
217 - } else if ( name ) {
218 - ret.selector = this.selector + "." + name + "(" + selector + ")";
219 - }
220 -
221 - // Return the newly-formed element set
222 - return ret;
223 - },
224 -
225 - // Force the current matched set of elements to become
226 - // the specified array of elements (destroying the stack in the process)
227 - // You should use pushStack() in order to do this, but maintain the stack
228 - setArray: function( elems ) {
229 - // Resetting the length to 0, then using the native Array push
230 - // is a super-fast way to populate an object with array-like properties
231 - this.length = 0;
232 - push.apply( this, elems );
233 -
234 - return this;
235 - },
236 -
237 - // Execute a callback for every element in the matched set.
238 - // (You can seed the arguments with an array of args, but this is
239 - // only used internally.)
240 - each: function( callback, args ) {
241 - return jQuery.each( this, callback, args );
242 - },
243 -
244 - ready: function( fn ) {
245 - // Attach the listeners
246 - jQuery.bindReady();
247 -
248 - // If the DOM is already ready
249 - if ( jQuery.isReady ) {
250 - // Execute the function immediately
251 - fn.call( document, jQuery );
252 -
253 - // Otherwise, remember the function for later
254 - } else if ( readyList ) {
255 - // Add the function to the wait list
256 - readyList.push( fn );
257 - }
258 -
259 - return this;
260 - },
261 -
262 - eq: function( i ) {
263 - return i === -1 ?
264 - this.slice( i ) :
265 - this.slice( i, +i + 1 );
266 - },
267 -
268 - first: function() {
269 - return this.eq( 0 );
270 - },
271 -
272 - last: function() {
273 - return this.eq( -1 );
274 - },
275 -
276 - slice: function() {
277 - return this.pushStack( slice.apply( this, arguments ),
278 - "slice", slice.call(arguments).join(",") );
279 - },
280 -
281 - map: function( callback ) {
282 - return this.pushStack( jQuery.map(this, function( elem, i ) {
283 - return callback.call( elem, i, elem );
284 - }));
285 - },
286 -
287 - end: function() {
288 - return this.prevObject || jQuery(null);
289 - },
290 -
291 - // For internal use only.
292 - // Behaves like an Array's method, not like a jQuery method.
293 - push: push,
294 - sort: [].sort,
295 - splice: [].splice
296 -};
297 -
298 -// Give the init function the jQuery prototype for later instantiation
299 -jQuery.fn.init.prototype = jQuery.fn;
300 -
301 -jQuery.extend = jQuery.fn.extend = function() {
302 - // copy reference to target object
303 - var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options, name, src, copy;
304 -
305 - // Handle a deep copy situation
306 - if ( typeof target === "boolean" ) {
307 - deep = target;
308 - target = arguments[1] || {};
309 - // skip the boolean and the target
310 - i = 2;
311 - }
312 -
313 - // Handle case when target is a string or something (possible in deep copy)
314 - if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
315 - target = {};
316 - }
317 -
318 - // extend jQuery itself if only one argument is passed
319 - if ( length === i ) {
320 - target = this;
321 - --i;
322 - }
323 -
324 - for ( ; i < length; i++ ) {
325 - // Only deal with non-null/undefined values
326 - if ( (options = arguments[ i ]) != null ) {
327 - // Extend the base object
328 - for ( name in options ) {
329 - src = target[ name ];
330 - copy = options[ name ];
331 -
332 - // Prevent never-ending loop
333 - if ( target === copy ) {
334 - continue;
335 - }
336 -
337 - // Recurse if we're merging object literal values or arrays
338 - if ( deep && copy && ( jQuery.isPlainObject(copy) || jQuery.isArray(copy) ) ) {
339 - var clone = src && ( jQuery.isPlainObject(src) || jQuery.isArray(src) ) ? src
340 - : jQuery.isArray(copy) ? [] : {};
341 -
342 - // Never move original objects, clone them
343 - target[ name ] = jQuery.extend( deep, clone, copy );
344 -
345 - // Don't bring in undefined values
346 - } else if ( copy !== undefined ) {
347 - target[ name ] = copy;
348 - }
349 - }
350 - }
351 - }
352 -
353 - // Return the modified object
354 - return target;
355 -};
356 -
357 -jQuery.extend({
358 - noConflict: function( deep ) {
359 - window.$ = _$;
360 -
361 - if ( deep ) {
362 - window.jQuery = _jQuery;
363 - }
364 -
365 - return jQuery;
366 - },
367 -
368 - // Is the DOM ready to be used? Set to true once it occurs.
369 - isReady: false,
370 -
371 - // Handle when the DOM is ready
372 - ready: function() {
373 - // Make sure that the DOM is not already loaded
374 - if ( !jQuery.isReady ) {
375 - // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
376 - if ( !document.body ) {
377 - return setTimeout( jQuery.ready, 13 );
378 - }
379 -
380 - // Remember that the DOM is ready
381 - jQuery.isReady = true;
382 -
383 - // If there are functions bound, to execute
384 - if ( readyList ) {
385 - // Execute all of them
386 - var fn, i = 0;
387 - while ( (fn = readyList[ i++ ]) ) {
388 - fn.call( document, jQuery );
389 - }
390 -
391 - // Reset the list of functions
392 - readyList = null;
393 - }
394 -
395 - // Trigger any bound ready events
396 - if ( jQuery.fn.triggerHandler ) {
397 - jQuery( document ).triggerHandler( "ready" );
398 - }
399 - }
400 - },
401 -
402 - bindReady: function() {
403 - if ( readyBound ) {
404 - return;
405 - }
406 -
407 - readyBound = true;
408 -
409 - // Catch cases where $(document).ready() is called after the
410 - // browser event has already occurred.
411 - if ( document.readyState === "complete" ) {
412 - return jQuery.ready();
413 - }
414 -
415 - // Mozilla, Opera and webkit nightlies currently support this event
416 - if ( document.addEventListener ) {
417 - // Use the handy event callback
418 - document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
419 -
420 - // A fallback to window.onload, that will always work
421 - window.addEventListener( "load", jQuery.ready, false );
422 -
423 - // If IE event model is used
424 - } else if ( document.attachEvent ) {
425 - // ensure firing before onload,
426 - // maybe late but safe also for iframes
427 - document.attachEvent("onreadystatechange", DOMContentLoaded);
428 -
429 - // A fallback to window.onload, that will always work
430 - window.attachEvent( "onload", jQuery.ready );
431 -
432 - // If IE and not a frame
433 - // continually check to see if the document is ready
434 - var toplevel = false;
435 -
436 - try {
437 - toplevel = window.frameElement == null;
438 - } catch(e) {}
439 -
440 - if ( document.documentElement.doScroll && toplevel ) {
441 - doScrollCheck();
442 - }
443 - }
444 - },
445 -
446 - // See test/unit/core.js for details concerning isFunction.
447 - // Since version 1.3, DOM methods and functions like alert
448 - // aren't supported. They return false on IE (#2968).
449 - isFunction: function( obj ) {
450 - return toString.call(obj) === "[object Function]";
451 - },
452 -
453 - isArray: function( obj ) {
454 - return toString.call(obj) === "[object Array]";
455 - },
456 -
457 - isPlainObject: function( obj ) {
458 - // Must be an Object.
459 - // Because of IE, we also have to check the presence of the constructor property.
460 - // Make sure that DOM nodes and window objects don't pass through, as well
461 - if ( !obj || toString.call(obj) !== "[object Object]" || obj.nodeType || obj.setInterval ) {
462 - return false;
463 - }
464 -
465 - // Not own constructor property must be Object
466 - if ( obj.constructor
467 - && !hasOwnProperty.call(obj, "constructor")
468 - && !hasOwnProperty.call(obj.constructor.prototype, "isPrototypeOf") ) {
469 - return false;
470 - }
471 -
472 - // Own properties are enumerated firstly, so to speed up,
473 - // if last one is own, then all properties are own.
474 -
475 - var key;
476 - for ( key in obj ) {}
477 -
478 - return key === undefined || hasOwnProperty.call( obj, key );
479 - },
480 -
481 - isEmptyObject: function( obj ) {
482 - for ( var name in obj ) {
483 - return false;
484 - }
485 - return true;
486 - },
487 -
488 - error: function( msg ) {
489 - throw msg;
490 - },
491 -
492 - parseJSON: function( data ) {
493 - if ( typeof data !== "string" || !data ) {
494 - return null;
495 - }
496 -
497 - // Make sure the incoming data is actual JSON
498 - // Logic borrowed from http://json.org/json2.js
499 - if ( /^[\],:{}\s]*$/.test(data.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@")
500 - .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]")
501 - .replace(/(?:^|:|,)(?:\s*\[)+/g, "")) ) {
502 -
503 - // Try to use the native JSON parser first
504 - return window.JSON && window.JSON.parse ?
505 - window.JSON.parse( data ) :
506 - (new Function("return " + data))();
507 -
508 - } else {
509 - jQuery.error( "Invalid JSON: " + data );
510 - }
511 - },
512 -
513 - noop: function() {},
514 -
515 - // Evalulates a script in a global context
516 - globalEval: function( data ) {
517 - if ( data && rnotwhite.test(data) ) {
518 - // Inspired by code by Andrea Giammarchi
519 - // http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html
520 - var head = document.getElementsByTagName("head")[0] || document.documentElement,
521 - script = document.createElement("script");
522 -
523 - script.type = "text/javascript";
524 -
525 - if ( jQuery.support.scriptEval ) {
526 - script.appendChild( document.createTextNode( data ) );
527 - } else {
528 - script.text = data;
529 - }
530 -
531 - // Use insertBefore instead of appendChild to circumvent an IE6 bug.
532 - // This arises when a base node is used (#2709).
533 - head.insertBefore( script, head.firstChild );
534 - head.removeChild( script );
535 - }
536 - },
537 -
538 - nodeName: function( elem, name ) {
539 - return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();
540 - },
541 -
542 - // args is for internal usage only
543 - each: function( object, callback, args ) {
544 - var name, i = 0,
545 - length = object.length,
546 - isObj = length === undefined || jQuery.isFunction(object);
547 -
548 - if ( args ) {
549 - if ( isObj ) {
550 - for ( name in object ) {
551 - if ( callback.apply( object[ name ], args ) === false ) {
552 - break;
553 - }
554 - }
555 - } else {
556 - for ( ; i < length; ) {
557 - if ( callback.apply( object[ i++ ], args ) === false ) {
558 - break;
559 - }
560 - }
561 - }
562 -
563 - // A special, fast, case for the most common use of each
564 - } else {
565 - if ( isObj ) {
566 - for ( name in object ) {
567 - if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
568 - break;
569 - }
570 - }
571 - } else {
572 - for ( var value = object[0];
573 - i < length && callback.call( value, i, value ) !== false; value = object[++i] ) {}
574 - }
575 - }
576 -
577 - return object;
578 - },
579 -
580 - trim: function( text ) {
581 - return (text || "").replace( rtrim, "" );
582 - },
583 -
584 - // results is for internal usage only
585 - makeArray: function( array, results ) {
586 - var ret = results || [];
587 -
588 - if ( array != null ) {
589 - // The window, strings (and functions) also have 'length'
590 - // The extra typeof function check is to prevent crashes
591 - // in Safari 2 (See: #3039)
592 - if ( array.length == null || typeof array === "string" || jQuery.isFunction(array) || (typeof array !== "function" && array.setInterval) ) {
593 - push.call( ret, array );
594 - } else {
595 - jQuery.merge( ret, array );
596 - }
597 - }
598 -
599 - return ret;
600 - },
601 -
602 - inArray: function( elem, array ) {
603 - if ( array.indexOf ) {
604 - return array.indexOf( elem );
605 - }
606 -
607 - for ( var i = 0, length = array.length; i < length; i++ ) {
608 - if ( array[ i ] === elem ) {
609 - return i;
610 - }
611 - }
612 -
613 - return -1;
614 - },
615 -
616 - merge: function( first, second ) {
617 - var i = first.length, j = 0;
618 -
619 - if ( typeof second.length === "number" ) {
620 - for ( var l = second.length; j < l; j++ ) {
621 - first[ i++ ] = second[ j ];
622 - }
623 - } else {
624 - while ( second[j] !== undefined ) {
625 - first[ i++ ] = second[ j++ ];
626 - }
627 - }
628 -
629 - first.length = i;
630 -
631 - return first;
632 - },
633 -
634 - grep: function( elems, callback, inv ) {
635 - var ret = [];
636 -
637 - // Go through the array, only saving the items
638 - // that pass the validator function
639 - for ( var i = 0, length = elems.length; i < length; i++ ) {
640 - if ( !inv !== !callback( elems[ i ], i ) ) {
641 - ret.push( elems[ i ] );
642 - }
643 - }
644 -
645 - return ret;
646 - },
647 -
648 - // arg is for internal usage only
649 - map: function( elems, callback, arg ) {
650 - var ret = [], value;
651 -
652 - // Go through the array, translating each of the items to their
653 - // new value (or values).
654 - for ( var i = 0, length = elems.length; i < length; i++ ) {
655 - value = callback( elems[ i ], i, arg );
656 -
657 - if ( value != null ) {
658 - ret[ ret.length ] = value;
659 - }
660 - }
661 -
662 - return ret.concat.apply( [], ret );
663 - },
664 -
665 - // A global GUID counter for objects
666 - guid: 1,
667 -
668 - proxy: function( fn, proxy, thisObject ) {
669 - if ( arguments.length === 2 ) {
670 - if ( typeof proxy === "string" ) {
671 - thisObject = fn;
672 - fn = thisObject[ proxy ];
673 - proxy = undefined;
674 -
675 - } else if ( proxy && !jQuery.isFunction( proxy ) ) {
676 - thisObject = proxy;
677 - proxy = undefined;
678 - }
679 - }
680 -
681 - if ( !proxy && fn ) {
682 - proxy = function() {
683 - return fn.apply( thisObject || this, arguments );
684 - };
685 - }
686 -
687 - // Set the guid of unique handler to the same of original handler, so it can be removed
688 - if ( fn ) {
689 - proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;
690 - }
691 -
692 - // So proxy can be declared as an argument
693 - return proxy;
694 - },
695 -
696 - // Use of jQuery.browser is frowned upon.
697 - // More details: http://docs.jquery.com/Utilities/jQuery.browser
698 - uaMatch: function( ua ) {
699 - ua = ua.toLowerCase();
700 -
701 - var match = /(webkit)[ \/]([\w.]+)/.exec( ua ) ||
702 - /(opera)(?:.*version)?[ \/]([\w.]+)/.exec( ua ) ||
703 - /(msie) ([\w.]+)/.exec( ua ) ||
704 - !/compatible/.test( ua ) && /(mozilla)(?:.*? rv:([\w.]+))?/.exec( ua ) ||
705 - [];
706 -
707 - return { browser: match[1] || "", version: match[2] || "0" };
708 - },
709 -
710 - browser: {}
711 -});
712 -
713 -browserMatch = jQuery.uaMatch( userAgent );
714 -if ( browserMatch.browser ) {
715 - jQuery.browser[ browserMatch.browser ] = true;
716 - jQuery.browser.version = browserMatch.version;
717 -}
718 -
719 -// Deprecated, use jQuery.browser.webkit instead
720 -if ( jQuery.browser.webkit ) {
721 - jQuery.browser.safari = true;
722 -}
723 -
724 -if ( indexOf ) {
725 - jQuery.inArray = function( elem, array ) {
726 - return indexOf.call( array, elem );
727 - };
728 -}
729 -
730 -// All jQuery objects should point back to these
731 -rootjQuery = jQuery(document);
732 -
733 -// Cleanup functions for the document ready method
734 -if ( document.addEventListener ) {
735 - DOMContentLoaded = function() {
736 - document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
737 - jQuery.ready();
738 - };
739 -
740 -} else if ( document.attachEvent ) {
741 - DOMContentLoaded = function() {
742 - // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
743 - if ( document.readyState === "complete" ) {
744 - document.detachEvent( "onreadystatechange", DOMContentLoaded );
745 - jQuery.ready();
746 - }
747 - };
748 -}
749 -
750 -// The DOM ready check for Internet Explorer
751 -function doScrollCheck() {
752 - if ( jQuery.isReady ) {
753 - return;
754 - }
755 -
756 - try {
757 - // If IE is used, use the trick by Diego Perini
758 - // http://javascript.nwbox.com/IEContentLoaded/
759 - document.documentElement.doScroll("left");
760 - } catch( error ) {
761 - setTimeout( doScrollCheck, 1 );
762 - return;
763 - }
764 -
765 - // and execute any waiting functions
766 - jQuery.ready();
767 -}
768 -
769 -function evalScript( i, elem ) {
770 - if ( elem.src ) {
771 - jQuery.ajax({
772 - url: elem.src,
773 - async: false,
774 - dataType: "script"
775 - });
776 - } else {
777 - jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" );
778 - }
779 -
780 - if ( elem.parentNode ) {
781 - elem.parentNode.removeChild( elem );
782 - }
783 -}
784 -
785 -// Mutifunctional method to get and set values to a collection
786 -// The value/s can be optionally by executed if its a function
787 -function access( elems, key, value, exec, fn, pass ) {
788 - var length = elems.length;
789 -
790 - // Setting many attributes
791 - if ( typeof key === "object" ) {
792 - for ( var k in key ) {
793 - access( elems, k, key[k], exec, fn, value );
794 - }
795 - return elems;
796 - }
797 -
798 - // Setting one attribute
799 - if ( value !== undefined ) {
800 - // Optionally, function values get executed if exec is true
801 - exec = !pass && exec && jQuery.isFunction(value);
802 -
803 - for ( var i = 0; i < length; i++ ) {
804 - fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
805 - }
806 -
807 - return elems;
808 - }
809 -
810 - // Getting an attribute
811 - return length ? fn( elems[0], key ) : null;
812 -}
813 -
814 -function now() {
815 - return (new Date).getTime();
816 -}
817 -(function() {
818 -
819 - jQuery.support = {};
820 -
821 - var root = document.documentElement,
822 - script = document.createElement("script"),
823 - div = document.createElement("div"),
824 - id = "script" + now();
825 -
826 - div.style.display = "none";
827 - div.innerHTML = " <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
828 -
829 - var all = div.getElementsByTagName("*"),
830 - a = div.getElementsByTagName("a")[0];
831 -
832 - // Can't get basic test support
833 - if ( !all || !all.length || !a ) {
834 - return;
835 - }
836 -
837 - jQuery.support = {
838 - // IE strips leading whitespace when .innerHTML is used
839 - leadingWhitespace: div.firstChild.nodeType === 3,
840 -
841 - // Make sure that tbody elements aren't automatically inserted
842 - // IE will insert them into empty tables
843 - tbody: !div.getElementsByTagName("tbody").length,
844 -
845 - // Make sure that link elements get serialized correctly by innerHTML
846 - // This requires a wrapper element in IE
847 - htmlSerialize: !!div.getElementsByTagName("link").length,
848 -
849 - // Get the style information from getAttribute
850 - // (IE uses .cssText insted)
851 - style: /red/.test( a.getAttribute("style") ),
852 -
853 - // Make sure that URLs aren't manipulated
854 - // (IE normalizes it by default)
855 - hrefNormalized: a.getAttribute("href") === "/a",
856 -
857 - // Make sure that element opacity exists
858 - // (IE uses filter instead)
859 - // Use a regex to work around a WebKit issue. See #5145
860 - opacity: /^0.55$/.test( a.style.opacity ),
861 -
862 - // Verify style float existence
863 - // (IE uses styleFloat instead of cssFloat)
864 - cssFloat: !!a.style.cssFloat,
865 -
866 - // Make sure that if no value is specified for a checkbox
867 - // that it defaults to "on".
868 - // (WebKit defaults to "" instead)
869 - checkOn: div.getElementsByTagName("input")[0].value === "on",
870 -
871 - // Make sure that a selected-by-default option has a working selected property.
872 - // (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
873 - optSelected: document.createElement("select").appendChild( document.createElement("option") ).selected,
874 -
875 - // Will be defined later
876 - checkClone: false,
877 - scriptEval: false,
878 - noCloneEvent: true,
879 - boxModel: null
880 - };
881 -
882 - script.type = "text/javascript";
883 - try {
884 - script.appendChild( document.createTextNode( "window." + id + "=1;" ) );
885 - } catch(e) {}
886 -
887 - root.insertBefore( script, root.firstChild );
888 -
889 - // Make sure that the execution of code works by injecting a script
890 - // tag with appendChild/createTextNode
891 - // (IE doesn't support this, fails, and uses .text instead)
892 - if ( window[ id ] ) {
893 - jQuery.support.scriptEval = true;
894 - delete window[ id ];
895 - }
896 -
897 - root.removeChild( script );
898 -
899 - if ( div.attachEvent && div.fireEvent ) {
900 - div.attachEvent("onclick", function click() {
901 - // Cloning a node shouldn't copy over any
902 - // bound event handlers (IE does this)
903 - jQuery.support.noCloneEvent = false;
904 - div.detachEvent("onclick", click);
905 - });
906 - div.cloneNode(true).fireEvent("onclick");
907 - }
908 -
909 - div = document.createElement("div");
910 - div.innerHTML = "<input type='radio' name='radiotest' checked='checked'/>";
911 -
912 - var fragment = document.createDocumentFragment();
913 - fragment.appendChild( div.firstChild );
914 -
915 - // WebKit doesn't clone checked state correctly in fragments
916 - jQuery.support.checkClone = fragment.cloneNode(true).cloneNode(true).lastChild.checked;
917 -
918 - // Figure out if the W3C box model works as expected
919 - // document.body must exist before we can do this
920 - jQuery(function() {
921 - var div = document.createElement("div");
922 - div.style.width = div.style.paddingLeft = "1px";
923 -
924 - document.body.appendChild( div );
925 - jQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;
926 - document.body.removeChild( div ).style.display = 'none';
927 - div = null;
928 - });
929 -
930 - // Technique from Juriy Zaytsev
931 - // http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/
932 - var eventSupported = function( eventName ) {
933 - var el = document.createElement("div");
934 - eventName = "on" + eventName;
935 -
936 - var isSupported = (eventName in el);
937 - if ( !isSupported ) {
938 - el.setAttribute(eventName, "return;");
939 - isSupported = typeof el[eventName] === "function";
940 - }
941 - el = null;
942 -
943 - return isSupported;
944 - };
945 -
946 - jQuery.support.submitBubbles = eventSupported("submit");
947 - jQuery.support.changeBubbles = eventSupported("change");
948 -
949 - // release memory in IE
950 - root = script = div = all = a = null;
951 -})();
952 -
953 -jQuery.props = {
954 - "for": "htmlFor",
955 - "class": "className",
956 - readonly: "readOnly",
957 - maxlength: "maxLength",
958 - cellspacing: "cellSpacing",
959 - rowspan: "rowSpan",
960 - colspan: "colSpan",
961 - tabindex: "tabIndex",
962 - usemap: "useMap",
963 - frameborder: "frameBorder"
964 -};
965 -var expando = "jQuery" + now(), uuid = 0, windowData = {};
966 -var emptyObject = {};
967 -
968 -jQuery.extend({
969 - cache: {},
970 -
971 - expando:expando,
972 -
973 - // The following elements throw uncatchable exceptions if you
974 - // attempt to add expando properties to them.
975 - noData: {
976 - "embed": true,
977 - "object": true,
978 - "applet": true
979 - },
980 -
981 - data: function( elem, name, data ) {
982 - if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {
983 - return;
984 - }
985 -
986 - elem = elem == window ?
987 - windowData :
988 - elem;
989 -
990 - var id = elem[ expando ], cache = jQuery.cache, thisCache;
991 -
992 - // Handle the case where there's no name immediately
993 - if ( !name && !id ) {
994 - return null;
995 - }
996 -
997 - // Compute a unique ID for the element
998 - if ( !id ) {
999 - id = ++uuid;
1000 - }
1001 -
1002 - // Avoid generating a new cache unless none exists and we
1003 - // want to manipulate it.
1004 - if ( typeof name === "object" ) {
1005 - elem[ expando ] = id;
1006 - thisCache = cache[ id ] = jQuery.extend(true, {}, name);
1007 - } else if ( cache[ id ] ) {
1008 - thisCache = cache[ id ];
1009 - } else if ( typeof data === "undefined" ) {
1010 - thisCache = emptyObject;
1011 - } else {
1012 - thisCache = cache[ id ] = {};
1013 - }
1014 -
1015 - // Prevent overriding the named cache with undefined values
1016 - if ( data !== undefined ) {
1017 - elem[ expando ] = id;
1018 - thisCache[ name ] = data;
1019 - }
1020 -
1021 - return typeof name === "string" ? thisCache[ name ] : thisCache;
1022 - },
1023 -
1024 - removeData: function( elem, name ) {
1025 - if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {
1026 - return;
1027 - }
1028 -
1029 - elem = elem == window ?
1030 - windowData :
1031 - elem;
1032 -
1033 - var id = elem[ expando ], cache = jQuery.cache, thisCache = cache[ id ];
1034 -
1035 - // If we want to remove a specific section of the element's data
1036 - if ( name ) {
1037 - if ( thisCache ) {
1038 - // Remove the section of cache data
1039 - delete thisCache[ name ];
1040 -
1041 - // If we've removed all the data, remove the element's cache
1042 - if ( jQuery.isEmptyObject(thisCache) ) {
1043 - jQuery.removeData( elem );
1044 - }
1045 - }
1046 -
1047 - // Otherwise, we want to remove all of the element's data
1048 - } else {
1049 - // Clean up the element expando
1050 - try {
1051 - delete elem[ expando ];
1052 - } catch( e ) {
1053 - // IE has trouble directly removing the expando
1054 - // but it's ok with using removeAttribute
1055 - if ( elem.removeAttribute ) {
1056 - elem.removeAttribute( expando );
1057 - }
1058 - }
1059 -
1060 - // Completely remove the data cache
1061 - delete cache[ id ];
1062 - }
1063 - }
1064 -});
1065 -
1066 -jQuery.fn.extend({
1067 - data: function( key, value ) {
1068 - if ( typeof key === "undefined" && this.length ) {
1069 - return jQuery.data( this[0] );
1070 -
1071 - } else if ( typeof key === "object" ) {
1072 - return this.each(function() {
1073 - jQuery.data( this, key );
1074 - });
1075 - }
1076 -
1077 - var parts = key.split(".");
1078 - parts[1] = parts[1] ? "." + parts[1] : "";
1079 -
1080 - if ( value === undefined ) {
1081 - var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);
1082 -
1083 - if ( data === undefined && this.length ) {
1084 - data = jQuery.data( this[0], key );
1085 - }
1086 - return data === undefined && parts[1] ?
1087 - this.data( parts[0] ) :
1088 - data;
1089 - } else {
1090 - return this.trigger("setData" + parts[1] + "!", [parts[0], value]).each(function() {
1091 - jQuery.data( this, key, value );
1092 - });
1093 - }
1094 - },
1095 -
1096 - removeData: function( key ) {
1097 - return this.each(function() {
1098 - jQuery.removeData( this, key );
1099 - });
1100 - }
1101 -});
1102 -jQuery.extend({
1103 - queue: function( elem, type, data ) {
1104 - if ( !elem ) {
1105 - return;
1106 - }
1107 -
1108 - type = (type || "fx") + "queue";
1109 - var q = jQuery.data( elem, type );
1110 -
1111 - // Speed up dequeue by getting out quickly if this is just a lookup
1112 - if ( !data ) {
1113 - return q || [];
1114 - }
1115 -
1116 - if ( !q || jQuery.isArray(data) ) {
1117 - q = jQuery.data( elem, type, jQuery.makeArray(data) );
1118 -
1119 - } else {
1120 - q.push( data );
1121 - }
1122 -
1123 - return q;
1124 - },
1125 -
1126 - dequeue: function( elem, type ) {
1127 - type = type || "fx";
1128 -
1129 - var queue = jQuery.queue( elem, type ), fn = queue.shift();
1130 -
1131 - // If the fx queue is dequeued, always remove the progress sentinel
1132 - if ( fn === "inprogress" ) {
1133 - fn = queue.shift();
1134 - }
1135 -
1136 - if ( fn ) {
1137 - // Add a progress sentinel to prevent the fx queue from being
1138 - // automatically dequeued
1139 - if ( type === "fx" ) {
1140 - queue.unshift("inprogress");
1141 - }
1142 -
1143 - fn.call(elem, function() {
1144 - jQuery.dequeue(elem, type);
1145 - });
1146 - }
1147 - }
1148 -});
1149 -
1150 -jQuery.fn.extend({
1151 - queue: function( type, data ) {
1152 - if ( typeof type !== "string" ) {
1153 - data = type;
1154 - type = "fx";
1155 - }
1156 -
1157 - if ( data === undefined ) {
1158 - return jQuery.queue( this[0], type );
1159 - }
1160 - return this.each(function( i, elem ) {
1161 - var queue = jQuery.queue( this, type, data );
1162 -
1163 - if ( type === "fx" && queue[0] !== "inprogress" ) {
1164 - jQuery.dequeue( this, type );
1165 - }
1166 - });
1167 - },
1168 - dequeue: function( type ) {
1169 - return this.each(function() {
1170 - jQuery.dequeue( this, type );
1171 - });
1172 - },
1173 -
1174 - // Based off of the plugin by Clint Helfers, with permission.
1175 - // http://blindsignals.com/index.php/2009/07/jquery-delay/
1176 - delay: function( time, type ) {
1177 - time = jQuery.fx ? jQuery.fx.speeds[time] || time : time;
1178 - type = type || "fx";
1179 -
1180 - return this.queue( type, function() {
1181 - var elem = this;
1182 - setTimeout(function() {
1183 - jQuery.dequeue( elem, type );
1184 - }, time );
1185 - });
1186 - },
1187 -
1188 - clearQueue: function( type ) {
1189 - return this.queue( type || "fx", [] );
1190 - }
1191 -});
1192 -var rclass = /[\n\t]/g,
1193 - rspace = /\s+/,
1194 - rreturn = /\r/g,
1195 - rspecialurl = /href|src|style/,
1196 - rtype = /(button|input)/i,
1197 - rfocusable = /(button|input|object|select|textarea)/i,
1198 - rclickable = /^(a|area)$/i,
1199 - rradiocheck = /radio|checkbox/;
1200 -
1201 -jQuery.fn.extend({
1202 - attr: function( name, value ) {
1203 - return access( this, name, value, true, jQuery.attr );
1204 - },
1205 -
1206 - removeAttr: function( name, fn ) {
1207 - return this.each(function(){
1208 - jQuery.attr( this, name, "" );
1209 - if ( this.nodeType === 1 ) {
1210 - this.removeAttribute( name );
1211 - }
1212 - });
1213 - },
1214 -
1215 - addClass: function( value ) {
1216 - if ( jQuery.isFunction(value) ) {
1217 - return this.each(function(i) {
1218 - var self = jQuery(this);
1219 - self.addClass( value.call(this, i, self.attr("class")) );
1220 - });
1221 - }
1222 -
1223 - if ( value && typeof value === "string" ) {
1224 - var classNames = (value || "").split( rspace );
1225 -
1226 - for ( var i = 0, l = this.length; i < l; i++ ) {
1227 - var elem = this[i];
1228 -
1229 - if ( elem.nodeType === 1 ) {
1230 - if ( !elem.className ) {
1231 - elem.className = value;
1232 -
1233 - } else {
1234 - var className = " " + elem.className + " ";
1235 - for ( var c = 0, cl = classNames.length; c < cl; c++ ) {
1236 - if ( className.indexOf( " " + classNames[c] + " " ) < 0 ) {
1237 - elem.className += " " + classNames[c];
1238 - }
1239 - }
1240 - }
1241 - }
1242 - }
1243 - }
1244 -
1245 - return this;
1246 - },
1247 -
1248 - removeClass: function( value ) {
1249 - if ( jQuery.isFunction(value) ) {
1250 - return this.each(function(i) {
1251 - var self = jQuery(this);
1252 - self.removeClass( value.call(this, i, self.attr("class")) );
1253 - });
1254 - }
1255 -
1256 - if ( (value && typeof value === "string") || value === undefined ) {
1257 - var classNames = (value || "").split(rspace);
1258 -
1259 - for ( var i = 0, l = this.length; i < l; i++ ) {
1260 - var elem = this[i];
1261 -
1262 - if ( elem.nodeType === 1 && elem.className ) {
1263 - if ( value ) {
1264 - var className = (" " + elem.className + " ").replace(rclass, " ");
1265 - for ( var c = 0, cl = classNames.length; c < cl; c++ ) {
1266 - className = className.replace(" " + classNames[c] + " ", " ");
1267 - }
1268 - elem.className = className.substring(1, className.length - 1);
1269 -
1270 - } else {
1271 - elem.className = "";
1272 - }
1273 - }
1274 - }
1275 - }
1276 -
1277 - return this;
1278 - },
1279 -
1280 - toggleClass: function( value, stateVal ) {
1281 - var type = typeof value, isBool = typeof stateVal === "boolean";
1282 -
1283 - if ( jQuery.isFunction( value ) ) {
1284 - return this.each(function(i) {
1285 - var self = jQuery(this);
1286 - self.toggleClass( value.call(this, i, self.attr("class"), stateVal), stateVal );
1287 - });
1288 - }
1289 -
1290 - return this.each(function() {
1291 - if ( type === "string" ) {
1292 - // toggle individual class names
1293 - var className, i = 0, self = jQuery(this),
1294 - state = stateVal,
1295 - classNames = value.split( rspace );
1296 -
1297 - while ( (className = classNames[ i++ ]) ) {
1298 - // check each className given, space seperated list
1299 - state = isBool ? state : !self.hasClass( className );
1300 - self[ state ? "addClass" : "removeClass" ]( className );
1301 - }
1302 -
1303 - } else if ( type === "undefined" || type === "boolean" ) {
1304 - if ( this.className ) {
1305 - // store className if set
1306 - jQuery.data( this, "__className__", this.className );
1307 - }
1308 -
1309 - // toggle whole className
1310 - this.className = this.className || value === false ? "" : jQuery.data( this, "__className__" ) || "";
1311 - }
1312 - });
1313 - },
1314 -
1315 - hasClass: function( selector ) {
1316 - var className = " " + selector + " ";
1317 - for ( var i = 0, l = this.length; i < l; i++ ) {
1318 - if ( (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) {
1319 - return true;
1320 - }
1321 - }
1322 -
1323 - return false;
1324 - },
1325 -
1326 - val: function( value ) {
1327 - if ( value === undefined ) {
1328 - var elem = this[0];
1329 -
1330 - if ( elem ) {
1331 - if ( jQuery.nodeName( elem, "option" ) ) {
1332 - return (elem.attributes.value || {}).specified ? elem.value : elem.text;
1333 - }
1334 -
1335 - // We need to handle select boxes special
1336 - if ( jQuery.nodeName( elem, "select" ) ) {
1337 - var index = elem.selectedIndex,
1338 - values = [],
1339 - options = elem.options,
1340 - one = elem.type === "select-one";
1341 -
1342 - // Nothing was selected
1343 - if ( index < 0 ) {
1344 - return null;
1345 - }
1346 -
1347 - // Loop through all the selected options
1348 - for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {
1349 - var option = options[ i ];
1350 -
1351 - if ( option.selected ) {
1352 - // Get the specifc value for the option
1353 - value = jQuery(option).val();
1354 -
1355 - // We don't need an array for one selects
1356 - if ( one ) {
1357 - return value;
1358 - }
1359 -
1360 - // Multi-Selects return an array
1361 - values.push( value );
1362 - }
1363 - }
1364 -
1365 - return values;
1366 - }
1367 -
1368 - // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified
1369 - if ( rradiocheck.test( elem.type ) && !jQuery.support.checkOn ) {
1370 - return elem.getAttribute("value") === null ? "on" : elem.value;
1371 - }
1372 -
1373 -
1374 - // Everything else, we just grab the value
1375 - return (elem.value || "").replace(rreturn, "");
1376 -
1377 - }
1378 -
1379 - return undefined;
1380 - }
1381 -
1382 - var isFunction = jQuery.isFunction(value);
1383 -
1384 - return this.each(function(i) {
1385 - var self = jQuery(this), val = value;
1386 -
1387 - if ( this.nodeType !== 1 ) {
1388 - return;
1389 - }
1390 -
1391 - if ( isFunction ) {
1392 - val = value.call(this, i, self.val());
1393 - }
1394 -
1395 - // Typecast each time if the value is a Function and the appended
1396 - // value is therefore different each time.
1397 - if ( typeof val === "number" ) {
1398 - val += "";
1399 - }
1400 -
1401 - if ( jQuery.isArray(val) && rradiocheck.test( this.type ) ) {
1402 - this.checked = jQuery.inArray( self.val(), val ) >= 0;
1403 -
1404 - } else if ( jQuery.nodeName( this, "select" ) ) {
1405 - var values = jQuery.makeArray(val);
1406 -
1407 - jQuery( "option", this ).each(function() {
1408 - this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;
1409 - });
1410 -
1411 - if ( !values.length ) {
1412 - this.selectedIndex = -1;
1413 - }
1414 -
1415 - } else {
1416 - this.value = val;
1417 - }
1418 - });
1419 - }
1420 -});
1421 -
1422 -jQuery.extend({
1423 - attrFn: {
1424 - val: true,
1425 - css: true,
1426 - html: true,
1427 - text: true,
1428 - data: true,
1429 - width: true,
1430 - height: true,
1431 - offset: true
1432 - },
1433 -
1434 - attr: function( elem, name, value, pass ) {
1435 - // don't set attributes on text and comment nodes
1436 - if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {
1437 - return undefined;
1438 - }
1439 -
1440 - if ( pass && name in jQuery.attrFn ) {
1441 - return jQuery(elem)[name](value);
1442 - }
1443 -
1444 - var notxml = elem.nodeType !== 1 || !jQuery.isXMLDoc( elem ),
1445 - // Whether we are setting (or getting)
1446 - set = value !== undefined;
1447 -
1448 - // Try to normalize/fix the name
1449 - name = notxml && jQuery.props[ name ] || name;
1450 -
1451 - // Only do all the following if this is a node (faster for style)
1452 - if ( elem.nodeType === 1 ) {
1453 - // These attributes require special treatment
1454 - var special = rspecialurl.test( name );
1455 -
1456 - // Safari mis-reports the default selected property of an option
1457 - // Accessing the parent's selectedIndex property fixes it
1458 - if ( name === "selected" && !jQuery.support.optSelected ) {
1459 - var parent = elem.parentNode;
1460 - if ( parent ) {
1461 - parent.selectedIndex;
1462 -
1463 - // Make sure that it also works with optgroups, see #5701
1464 - if ( parent.parentNode ) {
1465 - parent.parentNode.selectedIndex;
1466 - }
1467 - }
1468 - }
1469 -
1470 - // If applicable, access the attribute via the DOM 0 way
1471 - if ( name in elem && notxml && !special ) {
1472 - if ( set ) {
1473 - // We can't allow the type property to be changed (since it causes problems in IE)
1474 - if ( name === "type" && rtype.test( elem.nodeName ) && elem.parentNode ) {
1475 - jQuery.error( "type property can't be changed" );
1476 - }
1477 -
1478 - elem[ name ] = value;
1479 - }
1480 -
1481 - // browsers index elements by id/name on forms, give priority to attributes.
1482 - if ( jQuery.nodeName( elem, "form" ) && elem.getAttributeNode(name) ) {
1483 - return elem.getAttributeNode( name ).nodeValue;
1484 - }
1485 -
1486 - // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
1487 - // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
1488 - if ( name === "tabIndex" ) {
1489 - var attributeNode = elem.getAttributeNode( "tabIndex" );
1490 -
1491 - return attributeNode && attributeNode.specified ?
1492 - attributeNode.value :
1493 - rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
1494 - 0 :
1495 - undefined;
1496 - }
1497 -
1498 - return elem[ name ];
1499 - }
1500 -
1501 - if ( !jQuery.support.style && notxml && name === "style" ) {
1502 - if ( set ) {
1503 - elem.style.cssText = "" + value;
1504 - }
1505 -
1506 - return elem.style.cssText;
1507 - }
1508 -
1509 - if ( set ) {
1510 - // convert the value to a string (all browsers do this but IE) see #1070
1511 - elem.setAttribute( name, "" + value );
1512 - }
1513 -
1514 - var attr = !jQuery.support.hrefNormalized && notxml && special ?
1515 - // Some attributes require a special call on IE
1516 - elem.getAttribute( name, 2 ) :
1517 - elem.getAttribute( name );
1518 -
1519 - // Non-existent attributes return null, we normalize to undefined
1520 - return attr === null ? undefined : attr;
1521 - }
1522 -
1523 - // elem is actually elem.style ... set the style
1524 - // Using attr for specific style information is now deprecated. Use style insead.
1525 - return jQuery.style( elem, name, value );
1526 - }
1527 -});
1528 -var fcleanup = function( nm ) {
1529 - return nm.replace(/[^\w\s\.\|`]/g, function( ch ) {
1530 - return "\\" + ch;
1531 - });
1532 -};
1533 -
1534 -/*
1535 - * A number of helper functions used for managing events.
1536 - * Many of the ideas behind this code originated from
1537 - * Dean Edwards' addEvent library.
1538 - */
1539 -jQuery.event = {
1540 -
1541 - // Bind an event to an element
1542 - // Original by Dean Edwards
1543 - add: function( elem, types, handler, data ) {
1544 - if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
1545 - return;
1546 - }
1547 -
1548 - // For whatever reason, IE has trouble passing the window object
1549 - // around, causing it to be cloned in the process
1550 - if ( elem.setInterval && ( elem !== window && !elem.frameElement ) ) {
1551 - elem = window;
1552 - }
1553 -
1554 - // Make sure that the function being executed has a unique ID
1555 - if ( !handler.guid ) {
1556 - handler.guid = jQuery.guid++;
1557 - }
1558 -
1559 - // if data is passed, bind to handler
1560 - if ( data !== undefined ) {
1561 - // Create temporary function pointer to original handler
1562 - var fn = handler;
1563 -
1564 - // Create unique handler function, wrapped around original handler
1565 - handler = jQuery.proxy( fn );
1566 -
1567 - // Store data in unique handler
1568 - handler.data = data;
1569 - }
1570 -
1571 - // Init the element's event structure
1572 - var events = jQuery.data( elem, "events" ) || jQuery.data( elem, "events", {} ),
1573 - handle = jQuery.data( elem, "handle" ), eventHandle;
1574 -
1575 - if ( !handle ) {
1576 - eventHandle = function() {
1577 - // Handle the second event of a trigger and when
1578 - // an event is called after a page has unloaded
1579 - return typeof jQuery !== "undefined" && !jQuery.event.triggered ?
1580 - jQuery.event.handle.apply( eventHandle.elem, arguments ) :
1581 - undefined;
1582 - };
1583 -
1584 - handle = jQuery.data( elem, "handle", eventHandle );
1585 - }
1586 -
1587 - // If no handle is found then we must be trying to bind to one of the
1588 - // banned noData elements
1589 - if ( !handle ) {
1590 - return;
1591 - }
1592 -
1593 - // Add elem as a property of the handle function
1594 - // This is to prevent a memory leak with non-native
1595 - // event in IE.
1596 - handle.elem = elem;
1597 -
1598 - // Handle multiple events separated by a space
1599 - // jQuery(...).bind("mouseover mouseout", fn);
1600 - types = types.split( /\s+/ );
1601 -
1602 - var type, i = 0;
1603 -
1604 - while ( (type = types[ i++ ]) ) {
1605 - // Namespaced event handlers
1606 - var namespaces = type.split(".");
1607 - type = namespaces.shift();
1608 -
1609 - if ( i > 1 ) {
1610 - handler = jQuery.proxy( handler );
1611 -
1612 - if ( data !== undefined ) {
1613 - handler.data = data;
1614 - }
1615 - }
1616 -
1617 - handler.type = namespaces.slice(0).sort().join(".");
1618 -
1619 - // Get the current list of functions bound to this event
1620 - var handlers = events[ type ],
1621 - special = this.special[ type ] || {};
1622 -
1623 - // Init the event handler queue
1624 - if ( !handlers ) {
1625 - handlers = events[ type ] = {};
1626 -
1627 - // Check for a special event handler
1628 - // Only use addEventListener/attachEvent if the special
1629 - // events handler returns false
1630 - if ( !special.setup || special.setup.call( elem, data, namespaces, handler) === false ) {
1631 - // Bind the global event handler to the element
1632 - if ( elem.addEventListener ) {
1633 - elem.addEventListener( type, handle, false );
1634 - } else if ( elem.attachEvent ) {
1635 - elem.attachEvent( "on" + type, handle );
1636 - }
1637 - }
1638 - }
1639 -
1640 - if ( special.add ) {
1641 - var modifiedHandler = special.add.call( elem, handler, data, namespaces, handlers );
1642 - if ( modifiedHandler && jQuery.isFunction( modifiedHandler ) ) {
1643 - modifiedHandler.guid = modifiedHandler.guid || handler.guid;
1644 - modifiedHandler.data = modifiedHandler.data || handler.data;
1645 - modifiedHandler.type = modifiedHandler.type || handler.type;
1646 - handler = modifiedHandler;
1647 - }
1648 - }
1649 -
1650 - // Add the function to the element's handler list
1651 - handlers[ handler.guid ] = handler;
1652 -
1653 - // Keep track of which events have been used, for global triggering
1654 - this.global[ type ] = true;
1655 - }
1656 -
1657 - // Nullify elem to prevent memory leaks in IE
1658 - elem = null;
1659 - },
1660 -
1661 - global: {},
1662 -
1663 - // Detach an event or set of events from an element
1664 - remove: function( elem, types, handler ) {
1665 - // don't do events on text and comment nodes
1666 - if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
1667 - return;
1668 - }
1669 -
1670 - var events = jQuery.data( elem, "events" ), ret, type, fn;
1671 -
1672 - if ( events ) {
1673 - // Unbind all events for the element
1674 - if ( types === undefined || (typeof types === "string" && types.charAt(0) === ".") ) {
1675 - for ( type in events ) {
1676 - this.remove( elem, type + (types || "") );
1677 - }
1678 - } else {
1679 - // types is actually an event object here
1680 - if ( types.type ) {
1681 - handler = types.handler;
1682 - types = types.type;
1683 - }
1684 -
1685 - // Handle multiple events separated by a space
1686 - // jQuery(...).unbind("mouseover mouseout", fn);
1687 - types = types.split(/\s+/);
1688 - var i = 0;
1689 - while ( (type = types[ i++ ]) ) {
1690 - // Namespaced event handlers
1691 - var namespaces = type.split(".");
1692 - type = namespaces.shift();
1693 - var all = !namespaces.length,
1694 - cleaned = jQuery.map( namespaces.slice(0).sort(), fcleanup ),
1695 - namespace = new RegExp("(^|\\.)" + cleaned.join("\\.(?:.*\\.)?") + "(\\.|$)"),
1696 - special = this.special[ type ] || {};
1697 -
1698 - if ( events[ type ] ) {
1699 - // remove the given handler for the given type
1700 - if ( handler ) {
1701 - fn = events[ type ][ handler.guid ];
1702 - delete events[ type ][ handler.guid ];
1703 -
1704 - // remove all handlers for the given type
1705 - } else {
1706 - for ( var handle in events[ type ] ) {
1707 - // Handle the removal of namespaced events
1708 - if ( all || namespace.test( events[ type ][ handle ].type ) ) {
1709 - delete events[ type ][ handle ];
1710 - }
1711 - }
1712 - }
1713 -
1714 - if ( special.remove ) {
1715 - special.remove.call( elem, namespaces, fn);
1716 - }
1717 -
1718 - // remove generic event handler if no more handlers exist
1719 - for ( ret in events[ type ] ) {
1720 - break;
1721 - }
1722 - if ( !ret ) {
1723 - if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {
1724 - if ( elem.removeEventListener ) {
1725 - elem.removeEventListener( type, jQuery.data( elem, "handle" ), false );
1726 - } else if ( elem.detachEvent ) {
1727 - elem.detachEvent( "on" + type, jQuery.data( elem, "handle" ) );
1728 - }
1729 - }
1730 - ret = null;
1731 - delete events[ type ];
1732 - }
1733 - }
1734 - }
1735 - }
1736 -
1737 - // Remove the expando if it's no longer used
1738 - for ( ret in events ) {
1739 - break;
1740 - }
1741 - if ( !ret ) {
1742 - var handle = jQuery.data( elem, "handle" );
1743 - if ( handle ) {
1744 - handle.elem = null;
1745 - }
1746 - jQuery.removeData( elem, "events" );
1747 - jQuery.removeData( elem, "handle" );
1748 - }
1749 - }
1750 - },
1751 -
1752 - // bubbling is internal
1753 - trigger: function( event, data, elem /*, bubbling */ ) {
1754 - // Event object or event type
1755 - var type = event.type || event,
1756 - bubbling = arguments[3];
1757 -
1758 - if ( !bubbling ) {
1759 - event = typeof event === "object" ?
1760 - // jQuery.Event object
1761 - event[expando] ? event :
1762 - // Object literal
1763 - jQuery.extend( jQuery.Event(type), event ) :
1764 - // Just the event type (string)
1765 - jQuery.Event(type);
1766 -
1767 - if ( type.indexOf("!") >= 0 ) {
1768 - event.type = type = type.slice(0, -1);
1769 - event.exclusive = true;
1770 - }
1771 -
1772 - // Handle a global trigger
1773 - if ( !elem ) {
1774 - // Don't bubble custom events when global (to avoid too much overhead)
1775 - event.stopPropagation();
1776 -
1777 - // Only trigger if we've ever bound an event for it
1778 - if ( this.global[ type ] ) {
1779 - jQuery.each( jQuery.cache, function() {
1780 - if ( this.events && this.events[type] ) {
1781 - jQuery.event.trigger( event, data, this.handle.elem );
1782 - }
1783 - });
1784 - }
1785 - }
1786 -
1787 - // Handle triggering a single element
1788 -
1789 - // don't do events on text and comment nodes
1790 - if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {
1791 - return undefined;
1792 - }
1793 -
1794 - // Clean up in case it is reused
1795 - event.result = undefined;
1796 - event.target = elem;
1797 -
1798 - // Clone the incoming data, if any
1799 - data = jQuery.makeArray( data );
1800 - data.unshift( event );
1801 - }
1802 -
1803 - event.currentTarget = elem;
1804 -
1805 - // Trigger the event, it is assumed that "handle" is a function
1806 - var handle = jQuery.data( elem, "handle" );
1807 - if ( handle ) {
1808 - handle.apply( elem, data );
1809 - }
1810 -
1811 - var parent = elem.parentNode || elem.ownerDocument;
1812 -
1813 - // Trigger an inline bound script
1814 - try {
1815 - if ( !(elem && elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()]) ) {
1816 - if ( elem[ "on" + type ] && elem[ "on" + type ].apply( elem, data ) === false ) {
1817 - event.result = false;
1818 - }
1819 - }
1820 -
1821 - // prevent IE from throwing an error for some elements with some event types, see #3533
1822 - } catch (e) {}
1823 -
1824 - if ( !event.isPropagationStopped() && parent ) {
1825 - jQuery.event.trigger( event, data, parent, true );
1826 -
1827 - } else if ( !event.isDefaultPrevented() ) {
1828 - var target = event.target, old,
1829 - isClick = jQuery.nodeName(target, "a") && type === "click";
1830 -
1831 - if ( !isClick && !(target && target.nodeName && jQuery.noData[target.nodeName.toLowerCase()]) ) {
1832 - try {
1833 - if ( target[ type ] ) {
1834 - // Make sure that we don't accidentally re-trigger the onFOO events
1835 - old = target[ "on" + type ];
1836 -
1837 - if ( old ) {
1838 - target[ "on" + type ] = null;
1839 - }
1840 -
1841 - this.triggered = true;
1842 - target[ type ]();
1843 - }
1844 -
1845 - // prevent IE from throwing an error for some elements with some event types, see #3533
1846 - } catch (e) {}
1847 -
1848 - if ( old ) {
1849 - target[ "on" + type ] = old;
1850 - }
1851 -
1852 - this.triggered = false;
1853 - }
1854 - }
1855 - },
1856 -
1857 - handle: function( event ) {
1858 - // returned undefined or false
1859 - var all, handlers;
1860 -
1861 - event = arguments[0] = jQuery.event.fix( event || window.event );
1862 - event.currentTarget = this;
1863 -
1864 - // Namespaced event handlers
1865 - var namespaces = event.type.split(".");
1866 - event.type = namespaces.shift();
1867 -
1868 - // Cache this now, all = true means, any handler
1869 - all = !namespaces.length && !event.exclusive;
1870 -
1871 - var namespace = new RegExp("(^|\\.)" + namespaces.slice(0).sort().join("\\.(?:.*\\.)?") + "(\\.|$)");
1872 -
1873 - handlers = ( jQuery.data(this, "events") || {} )[ event.type ];
1874 -
1875 - for ( var j in handlers ) {
1876 - var handler = handlers[ j ];
1877 -
1878 - // Filter the functions by class
1879 - if ( all || namespace.test(handler.type) ) {
1880 - // Pass in a reference to the handler function itself
1881 - // So that we can later remove it
1882 - event.handler = handler;
1883 - event.data = handler.data;
1884 -
1885 - var ret = handler.apply( this, arguments );
1886 -
1887 - if ( ret !== undefined ) {
1888 - event.result = ret;
1889 - if ( ret === false ) {
1890 - event.preventDefault();
1891 - event.stopPropagation();
1892 - }
1893 - }
1894 -
1895 - if ( event.isImmediatePropagationStopped() ) {
1896 - break;
1897 - }
1898 -
1899 - }
1900 - }
1901 -
1902 - return event.result;
1903 - },
1904 -
1905 - props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
1906 -
1907 - fix: function( event ) {
1908 - if ( event[ expando ] ) {
1909 - return event;
1910 - }
1911 -
1912 - // store a copy of the original event object
1913 - // and "clone" to set read-only properties
1914 - var originalEvent = event;
1915 - event = jQuery.Event( originalEvent );
1916 -
1917 - for ( var i = this.props.length, prop; i; ) {
1918 - prop = this.props[ --i ];
1919 - event[ prop ] = originalEvent[ prop ];
1920 - }
1921 -
1922 - // Fix target property, if necessary
1923 - if ( !event.target ) {
1924 - event.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either
1925 - }
1926 -
1927 - // check if target is a textnode (safari)
1928 - if ( event.target.nodeType === 3 ) {
1929 - event.target = event.target.parentNode;
1930 - }
1931 -
1932 - // Add relatedTarget, if necessary
1933 - if ( !event.relatedTarget && event.fromElement ) {
1934 - event.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;
1935 - }
1936 -
1937 - // Calculate pageX/Y if missing and clientX/Y available
1938 - if ( event.pageX == null && event.clientX != null ) {
1939 - var doc = document.documentElement, body = document.body;
1940 - event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);
1941 - event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);
1942 - }
1943 -
1944 - // Add which for key events
1945 - if ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) ) {
1946 - event.which = event.charCode || event.keyCode;
1947 - }
1948 -
1949 - // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)
1950 - if ( !event.metaKey && event.ctrlKey ) {
1951 - event.metaKey = event.ctrlKey;
1952 - }
1953 -
1954 - // Add which for click: 1 === left; 2 === middle; 3 === right
1955 - // Note: button is not normalized, so don't use it
1956 - if ( !event.which && event.button !== undefined ) {
1957 - event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));
1958 - }
1959 -
1960 - return event;
1961 - },
1962 -
1963 - // Deprecated, use jQuery.guid instead
1964 - guid: 1E8,
1965 -
1966 - // Deprecated, use jQuery.proxy instead
1967 - proxy: jQuery.proxy,
1968 -
1969 - special: {
1970 - ready: {
1971 - // Make sure the ready event is setup
1972 - setup: jQuery.bindReady,
1973 - teardown: jQuery.noop
1974 - },
1975 -
1976 - live: {
1977 - add: function( proxy, data, namespaces, live ) {
1978 - jQuery.extend( proxy, data || {} );
1979 -
1980 - proxy.guid += data.selector + data.live;
1981 - data.liveProxy = proxy;
1982 -
1983 - jQuery.event.add( this, data.live, liveHandler, data );
1984 -
1985 - },
1986 -
1987 - remove: function( namespaces ) {
1988 - if ( namespaces.length ) {
1989 - var remove = 0, name = new RegExp("(^|\\.)" + namespaces[0] + "(\\.|$)");
1990 -
1991 - jQuery.each( (jQuery.data(this, "events").live || {}), function() {
1992 - if ( name.test(this.type) ) {
1993 - remove++;
1994 - }
1995 - });
1996 -
1997 - if ( remove < 1 ) {
1998 - jQuery.event.remove( this, namespaces[0], liveHandler );
1999 - }
2000 - }
2001 - },
2002 - special: {}
2003 - },
2004 - beforeunload: {
2005 - setup: function( data, namespaces, fn ) {
2006 - // We only want to do this special case on windows
2007 - if ( this.setInterval ) {
2008 - this.onbeforeunload = fn;
2009 - }
2010 -
2011 - return false;
2012 - },
2013 - teardown: function( namespaces, fn ) {
2014 - if ( this.onbeforeunload === fn ) {
2015 - this.onbeforeunload = null;
2016 - }
2017 - }
2018 - }
2019 - }
2020 -};
2021 -
2022 -jQuery.Event = function( src ) {
2023 - // Allow instantiation without the 'new' keyword
2024 - if ( !this.preventDefault ) {
2025 - return new jQuery.Event( src );
2026 - }
2027 -
2028 - // Event object
2029 - if ( src && src.type ) {
2030 - this.originalEvent = src;
2031 - this.type = src.type;
2032 - // Event type
2033 - } else {
2034 - this.type = src;
2035 - }
2036 -
2037 - // timeStamp is buggy for some events on Firefox(#3843)
2038 - // So we won't rely on the native value
2039 - this.timeStamp = now();
2040 -
2041 - // Mark it as fixed
2042 - this[ expando ] = true;
2043 -};
2044 -
2045 -function returnFalse() {
2046 - return false;
2047 -}
2048 -function returnTrue() {
2049 - return true;
2050 -}
2051 -
2052 -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
2053 -// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
2054 -jQuery.Event.prototype = {
2055 - preventDefault: function() {
2056 - this.isDefaultPrevented = returnTrue;
2057 -
2058 - var e = this.originalEvent;
2059 - if ( !e ) {
2060 - return;
2061 - }
2062 -
2063 - // if preventDefault exists run it on the original event
2064 - if ( e.preventDefault ) {
2065 - e.preventDefault();
2066 - }
2067 - // otherwise set the returnValue property of the original event to false (IE)
2068 - e.returnValue = false;
2069 - },
2070 - stopPropagation: function() {
2071 - this.isPropagationStopped = returnTrue;
2072 -
2073 - var e = this.originalEvent;
2074 - if ( !e ) {
2075 - return;
2076 - }
2077 - // if stopPropagation exists run it on the original event
2078 - if ( e.stopPropagation ) {
2079 - e.stopPropagation();
2080 - }
2081 - // otherwise set the cancelBubble property of the original event to true (IE)
2082 - e.cancelBubble = true;
2083 - },
2084 - stopImmediatePropagation: function() {
2085 - this.isImmediatePropagationStopped = returnTrue;
2086 - this.stopPropagation();
2087 - },
2088 - isDefaultPrevented: returnFalse,
2089 - isPropagationStopped: returnFalse,
2090 - isImmediatePropagationStopped: returnFalse
2091 -};
2092 -
2093 -// Checks if an event happened on an element within another element
2094 -// Used in jQuery.event.special.mouseenter and mouseleave handlers
2095 -var withinElement = function( event ) {
2096 - // Check if mouse(over|out) are still within the same parent element
2097 - var parent = event.relatedTarget;
2098 -
2099 - // Traverse up the tree
2100 - while ( parent && parent !== this ) {
2101 - // Firefox sometimes assigns relatedTarget a XUL element
2102 - // which we cannot access the parentNode property of
2103 - try {
2104 - parent = parent.parentNode;
2105 -
2106 - // assuming we've left the element since we most likely mousedover a xul element
2107 - } catch(e) {
2108 - break;
2109 - }
2110 - }
2111 -
2112 - if ( parent !== this ) {
2113 - // set the correct event type
2114 - event.type = event.data;
2115 -
2116 - // handle event if we actually just moused on to a non sub-element
2117 - jQuery.event.handle.apply( this, arguments );
2118 - }
2119 -
2120 -},
2121 -
2122 -// In case of event delegation, we only need to rename the event.type,
2123 -// liveHandler will take care of the rest.
2124 -delegate = function( event ) {
2125 - event.type = event.data;
2126 - jQuery.event.handle.apply( this, arguments );
2127 -};
2128 -
2129 -// Create mouseenter and mouseleave events
2130 -jQuery.each({
2131 - mouseenter: "mouseover",
2132 - mouseleave: "mouseout"
2133 -}, function( orig, fix ) {
2134 - jQuery.event.special[ orig ] = {
2135 - setup: function( data ) {
2136 - jQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig );
2137 - },
2138 - teardown: function( data ) {
2139 - jQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement );
2140 - }
2141 - };
2142 -});
2143 -
2144 -// submit delegation
2145 -if ( !jQuery.support.submitBubbles ) {
2146 -
2147 -jQuery.event.special.submit = {
2148 - setup: function( data, namespaces, fn ) {
2149 - if ( this.nodeName.toLowerCase() !== "form" ) {
2150 - jQuery.event.add(this, "click.specialSubmit." + fn.guid, function( e ) {
2151 - var elem = e.target, type = elem.type;
2152 -
2153 - if ( (type === "submit" || type === "image") && jQuery( elem ).closest("form").length ) {
2154 - return trigger( "submit", this, arguments );
2155 - }
2156 - });
2157 -
2158 - jQuery.event.add(this, "keypress.specialSubmit." + fn.guid, function( e ) {
2159 - var elem = e.target, type = elem.type;
2160 -
2161 - if ( (type === "text" || type === "password") && jQuery( elem ).closest("form").length && e.keyCode === 13 ) {
2162 - return trigger( "submit", this, arguments );
2163 - }
2164 - });
2165 -
2166 - } else {
2167 - return false;
2168 - }
2169 - },
2170 -
2171 - remove: function( namespaces, fn ) {
2172 - jQuery.event.remove( this, "click.specialSubmit" + (fn ? "."+fn.guid : "") );
2173 - jQuery.event.remove( this, "keypress.specialSubmit" + (fn ? "."+fn.guid : "") );
2174 - }
2175 -};
2176 -
2177 -}
2178 -
2179 -// change delegation, happens here so we have bind.
2180 -if ( !jQuery.support.changeBubbles ) {
2181 -
2182 -var formElems = /textarea|input|select/i;
2183 -
2184 -function getVal( elem ) {
2185 - var type = elem.type, val = elem.value;
2186 -
2187 - if ( type === "radio" || type === "checkbox" ) {
2188 - val = elem.checked;
2189 -
2190 - } else if ( type === "select-multiple" ) {
2191 - val = elem.selectedIndex > -1 ?
2192 - jQuery.map( elem.options, function( elem ) {
2193 - return elem.selected;
2194 - }).join("-") :
2195 - "";
2196 -
2197 - } else if ( elem.nodeName.toLowerCase() === "select" ) {
2198 - val = elem.selectedIndex;
2199 - }
2200 -
2201 - return val;
2202 -}
2203 -
2204 -function testChange( e ) {
2205 - var elem = e.target, data, val;
2206 -
2207 - if ( !formElems.test( elem.nodeName ) || elem.readOnly ) {
2208 - return;
2209 - }
2210 -
2211 - data = jQuery.data( elem, "_change_data" );
2212 - val = getVal(elem);
2213 -
2214 - // the current data will be also retrieved by beforeactivate
2215 - if ( e.type !== "focusout" || elem.type !== "radio" ) {
2216 - jQuery.data( elem, "_change_data", val );
2217 - }
2218 -
2219 - if ( data === undefined || val === data ) {
2220 - return;
2221 - }
2222 -
2223 - if ( data != null || val ) {
2224 - e.type = "change";
2225 - return jQuery.event.trigger( e, arguments[1], elem );
2226 - }
2227 -}
2228 -
2229 -jQuery.event.special.change = {
2230 - filters: {
2231 - focusout: testChange,
2232 -
2233 - click: function( e ) {
2234 - var elem = e.target, type = elem.type;
2235 -
2236 - if ( type === "radio" || type === "checkbox" || elem.nodeName.toLowerCase() === "select" ) {
2237 - return testChange.call( this, e );
2238 - }
2239 - },
2240 -
2241 - // Change has to be called before submit
2242 - // Keydown will be called before keypress, which is used in submit-event delegation
2243 - keydown: function( e ) {
2244 - var elem = e.target, type = elem.type;
2245 -
2246 - if ( (e.keyCode === 13 && elem.nodeName.toLowerCase() !== "textarea") ||
2247 - (e.keyCode === 32 && (type === "checkbox" || type === "radio")) ||
2248 - type === "select-multiple" ) {
2249 - return testChange.call( this, e );
2250 - }
2251 - },
2252 -
2253 - // Beforeactivate happens also before the previous element is blurred
2254 - // with this event you can't trigger a change event, but you can store
2255 - // information/focus[in] is not needed anymore
2256 - beforeactivate: function( e ) {
2257 - var elem = e.target;
2258 -
2259 - if ( elem.nodeName.toLowerCase() === "input" && elem.type === "radio" ) {
2260 - jQuery.data( elem, "_change_data", getVal(elem) );
2261 - }
2262 - }
2263 - },
2264 - setup: function( data, namespaces, fn ) {
2265 - for ( var type in changeFilters ) {
2266 - jQuery.event.add( this, type + ".specialChange." + fn.guid, changeFilters[type] );
2267 - }
2268 -
2269 - return formElems.test( this.nodeName );
2270 - },
2271 - remove: function( namespaces, fn ) {
2272 - for ( var type in changeFilters ) {
2273 - jQuery.event.remove( this, type + ".specialChange" + (fn ? "."+fn.guid : ""), changeFilters[type] );
2274 - }
2275 -
2276 - return formElems.test( this.nodeName );
2277 - }
2278 -};
2279 -
2280 -var changeFilters = jQuery.event.special.change.filters;
2281 -
2282 -}
2283 -
2284 -function trigger( type, elem, args ) {
2285 - args[0].type = type;
2286 - return jQuery.event.handle.apply( elem, args );
2287 -}
2288 -
2289 -// Create "bubbling" focus and blur events
2290 -if ( document.addEventListener ) {
2291 - jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
2292 - jQuery.event.special[ fix ] = {
2293 - setup: function() {
2294 - this.addEventListener( orig, handler, true );
2295 - },
2296 - teardown: function() {
2297 - this.removeEventListener( orig, handler, true );
2298 - }
2299 - };
2300 -
2301 - function handler( e ) {
2302 - e = jQuery.event.fix( e );
2303 - e.type = fix;
2304 - return jQuery.event.handle.call( this, e );
2305 - }
2306 - });
2307 -}
2308 -
2309 -jQuery.each(["bind", "one"], function( i, name ) {
2310 - jQuery.fn[ name ] = function( type, data, fn ) {
2311 - // Handle object literals
2312 - if ( typeof type === "object" ) {
2313 - for ( var key in type ) {
2314 - this[ name ](key, data, type[key], fn);
2315 - }
2316 - return this;
2317 - }
2318 -
2319 - if ( jQuery.isFunction( data ) ) {
2320 - fn = data;
2321 - data = undefined;
2322 - }
2323 -
2324 - var handler = name === "one" ? jQuery.proxy( fn, function( event ) {
2325 - jQuery( this ).unbind( event, handler );
2326 - return fn.apply( this, arguments );
2327 - }) : fn;
2328 -
2329 - return type === "unload" && name !== "one" ?
2330 - this.one( type, data, fn ) :
2331 - this.each(function() {
2332 - jQuery.event.add( this, type, handler, data );
2333 - });
2334 - };
2335 -});
2336 -
2337 -jQuery.fn.extend({
2338 - unbind: function( type, fn ) {
2339 - // Handle object literals
2340 - if ( typeof type === "object" && !type.preventDefault ) {
2341 - for ( var key in type ) {
2342 - this.unbind(key, type[key]);
2343 - }
2344 - return this;
2345 - }
2346 -
2347 - return this.each(function() {
2348 - jQuery.event.remove( this, type, fn );
2349 - });
2350 - },
2351 - trigger: function( type, data ) {
2352 - return this.each(function() {
2353 - jQuery.event.trigger( type, data, this );
2354 - });
2355 - },
2356 -
2357 - triggerHandler: function( type, data ) {
2358 - if ( this[0] ) {
2359 - var event = jQuery.Event( type );
2360 - event.preventDefault();
2361 - event.stopPropagation();
2362 - jQuery.event.trigger( event, data, this[0] );
2363 - return event.result;
2364 - }
2365 - },
2366 -
2367 - toggle: function( fn ) {
2368 - // Save reference to arguments for access in closure
2369 - var args = arguments, i = 1;
2370 -
2371 - // link all the functions, so any of them can unbind this click handler
2372 - while ( i < args.length ) {
2373 - jQuery.proxy( fn, args[ i++ ] );
2374 - }
2375 -
2376 - return this.click( jQuery.proxy( fn, function( event ) {
2377 - // Figure out which function to execute
2378 - var lastToggle = ( jQuery.data( this, "lastToggle" + fn.guid ) || 0 ) % i;
2379 - jQuery.data( this, "lastToggle" + fn.guid, lastToggle + 1 );
2380 -
2381 - // Make sure that clicks stop
2382 - event.preventDefault();
2383 -
2384 - // and execute the function
2385 - return args[ lastToggle ].apply( this, arguments ) || false;
2386 - }));
2387 - },
2388 -
2389 - hover: function( fnOver, fnOut ) {
2390 - return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
2391 - }
2392 -});
2393 -
2394 -jQuery.each(["live", "die"], function( i, name ) {
2395 - jQuery.fn[ name ] = function( types, data, fn ) {
2396 - var type, i = 0;
2397 -
2398 - if ( jQuery.isFunction( data ) ) {
2399 - fn = data;
2400 - data = undefined;
2401 - }
2402 -
2403 - types = (types || "").split( /\s+/ );
2404 -
2405 - while ( (type = types[ i++ ]) != null ) {
2406 - type = type === "focus" ? "focusin" : // focus --> focusin
2407 - type === "blur" ? "focusout" : // blur --> focusout
2408 - type === "hover" ? types.push("mouseleave") && "mouseenter" : // hover support
2409 - type;
2410 -
2411 - if ( name === "live" ) {
2412 - // bind live handler
2413 - jQuery( this.context ).bind( liveConvert( type, this.selector ), {
2414 - data: data, selector: this.selector, live: type
2415 - }, fn );
2416 -
2417 - } else {
2418 - // unbind live handler
2419 - jQuery( this.context ).unbind( liveConvert( type, this.selector ), fn ? { guid: fn.guid + this.selector + type } : null );
2420 - }
2421 - }
2422 -
2423 - return this;
2424 - }
2425 -});
2426 -
2427 -function liveHandler( event ) {
2428 - var stop, elems = [], selectors = [], args = arguments,
2429 - related, match, fn, elem, j, i, l, data,
2430 - live = jQuery.extend({}, jQuery.data( this, "events" ).live);
2431 -
2432 - // Make sure we avoid non-left-click bubbling in Firefox (#3861)
2433 - if ( event.button && event.type === "click" ) {
2434 - return;
2435 - }
2436 -
2437 - for ( j in live ) {
2438 - fn = live[j];
2439 - if ( fn.live === event.type ||
2440 - fn.altLive && jQuery.inArray(event.type, fn.altLive) > -1 ) {
2441 -
2442 - data = fn.data;
2443 - if ( !(data.beforeFilter && data.beforeFilter[event.type] &&
2444 - !data.beforeFilter[event.type](event)) ) {
2445 - selectors.push( fn.selector );
2446 - }
2447 - } else {
2448 - delete live[j];
2449 - }
2450 - }
2451 -
2452 - match = jQuery( event.target ).closest( selectors, event.currentTarget );
2453 -
2454 - for ( i = 0, l = match.length; i < l; i++ ) {
2455 - for ( j in live ) {
2456 - fn = live[j];
2457 - elem = match[i].elem;
2458 - related = null;
2459 -
2460 - if ( match[i].selector === fn.selector ) {
2461 - // Those two events require additional checking
2462 - if ( fn.live === "mouseenter" || fn.live === "mouseleave" ) {
2463 - related = jQuery( event.relatedTarget ).closest( fn.selector )[0];
2464 - }
2465 -
2466 - if ( !related || related !== elem ) {
2467 - elems.push({ elem: elem, fn: fn });
2468 - }
2469 - }
2470 - }
2471 - }
2472 -
2473 - for ( i = 0, l = elems.length; i < l; i++ ) {
2474 - match = elems[i];
2475 - event.currentTarget = match.elem;
2476 - event.data = match.fn.data;
2477 - if ( match.fn.apply( match.elem, args ) === false ) {
2478 - stop = false;
2479 - break;
2480 - }
2481 - }
2482 -
2483 - return stop;
2484 -}
2485 -
2486 -function liveConvert( type, selector ) {
2487 - return "live." + (type ? type + "." : "") + selector.replace(/\./g, "`").replace(/ /g, "&");
2488 -}
2489 -
2490 -jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
2491 - "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
2492 - "change select submit keydown keypress keyup error").split(" "), function( i, name ) {
2493 -
2494 - // Handle event binding
2495 - jQuery.fn[ name ] = function( fn ) {
2496 - return fn ? this.bind( name, fn ) : this.trigger( name );
2497 - };
2498 -
2499 - if ( jQuery.attrFn ) {
2500 - jQuery.attrFn[ name ] = true;
2501 - }
2502 -});
2503 -
2504 -// Prevent memory leaks in IE
2505 -// Window isn't included so as not to unbind existing unload events
2506 -// More info:
2507 -// - http://isaacschlueter.com/2006/10/msie-memory-leaks/
2508 -if ( window.attachEvent && !window.addEventListener ) {
2509 - window.attachEvent("onunload", function() {
2510 - for ( var id in jQuery.cache ) {
2511 - if ( jQuery.cache[ id ].handle ) {
2512 - // Try/Catch is to handle iframes being unloaded, see #4280
2513 - try {
2514 - jQuery.event.remove( jQuery.cache[ id ].handle.elem );
2515 - } catch(e) {}
2516 - }
2517 - }
2518 - });
2519 -}
2520 -/*!
2521 - * Sizzle CSS Selector Engine - v1.0
2522 - * Copyright 2009, The Dojo Foundation
2523 - * Released under the MIT, BSD, and GPL Licenses.
2524 - * More information: http://sizzlejs.com/
2525 - */
2526 -(function(){
2527 -
2528 -var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
2529 - done = 0,
2530 - toString = Object.prototype.toString,
2531 - hasDuplicate = false,
2532 - baseHasDuplicate = true;
2533 -
2534 -// Here we check if the JavaScript engine is using some sort of
2535 -// optimization where it does not always call our comparision
2536 -// function. If that is the case, discard the hasDuplicate value.
2537 -// Thus far that includes Google Chrome.
2538 -[0, 0].sort(function(){
2539 - baseHasDuplicate = false;
2540 - return 0;
2541 -});
2542 -
2543 -var Sizzle = function(selector, context, results, seed) {
2544 - results = results || [];
2545 - var origContext = context = context || document;
2546 -
2547 - if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
2548 - return [];
2549 - }
2550 -
2551 - if ( !selector || typeof selector !== "string" ) {
2552 - return results;
2553 - }
2554 -
2555 - var parts = [], m, set, checkSet, extra, prune = true, contextXML = isXML(context),
2556 - soFar = selector;
2557 -
2558 - // Reset the position of the chunker regexp (start from head)
2559 - while ( (chunker.exec(""), m = chunker.exec(soFar)) !== null ) {
2560 - soFar = m[3];
2561 -
2562 - parts.push( m[1] );
2563 -
2564 - if ( m[2] ) {
2565 - extra = m[3];
2566 - break;
2567 - }
2568 - }
2569 -
2570 - if ( parts.length > 1 && origPOS.exec( selector ) ) {
2571 - if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
2572 - set = posProcess( parts[0] + parts[1], context );
2573 - } else {
2574 - set = Expr.relative[ parts[0] ] ?
2575 - [ context ] :
2576 - Sizzle( parts.shift(), context );
2577 -
2578 - while ( parts.length ) {
2579 - selector = parts.shift();
2580 -
2581 - if ( Expr.relative[ selector ] ) {
2582 - selector += parts.shift();
2583 - }
2584 -
2585 - set = posProcess( selector, set );
2586 - }
2587 - }
2588 - } else {
2589 - // Take a shortcut and set the context if the root selector is an ID
2590 - // (but not if it'll be faster if the inner selector is an ID)
2591 - if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
2592 - Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
2593 - var ret = Sizzle.find( parts.shift(), context, contextXML );
2594 - context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0];
2595 - }
2596 -
2597 - if ( context ) {
2598 - var ret = seed ?
2599 - { expr: parts.pop(), set: makeArray(seed) } :
2600 - Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
2601 - set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set;
2602 -
2603 - if ( parts.length > 0 ) {
2604 - checkSet = makeArray(set);
2605 - } else {
2606 - prune = false;
2607 - }
2608 -
2609 - while ( parts.length ) {
2610 - var cur = parts.pop(), pop = cur;
2611 -
2612 - if ( !Expr.relative[ cur ] ) {
2613 - cur = "";
2614 - } else {
2615 - pop = parts.pop();
2616 - }
2617 -
2618 - if ( pop == null ) {
2619 - pop = context;
2620 - }
2621 -
2622 - Expr.relative[ cur ]( checkSet, pop, contextXML );
2623 - }
2624 - } else {
2625 - checkSet = parts = [];
2626 - }
2627 - }
2628 -
2629 - if ( !checkSet ) {
2630 - checkSet = set;
2631 - }
2632 -
2633 - if ( !checkSet ) {
2634 - Sizzle.error( cur || selector );
2635 - }
2636 -
2637 - if ( toString.call(checkSet) === "[object Array]" ) {
2638 - if ( !prune ) {
2639 - results.push.apply( results, checkSet );
2640 - } else if ( context && context.nodeType === 1 ) {
2641 - for ( var i = 0; checkSet[i] != null; i++ ) {
2642 - if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) {
2643 - results.push( set[i] );
2644 - }
2645 - }
2646 - } else {
2647 - for ( var i = 0; checkSet[i] != null; i++ ) {
2648 - if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
2649 - results.push( set[i] );
2650 - }
2651 - }
2652 - }
2653 - } else {
2654 - makeArray( checkSet, results );
2655 - }
2656 -
2657 - if ( extra ) {
2658 - Sizzle( extra, origContext, results, seed );
2659 - Sizzle.uniqueSort( results );
2660 - }
2661 -
2662 - return results;
2663 -};
2664 -
2665 -Sizzle.uniqueSort = function(results){
2666 - if ( sortOrder ) {
2667 - hasDuplicate = baseHasDuplicate;
2668 - results.sort(sortOrder);
2669 -
2670 - if ( hasDuplicate ) {
2671 - for ( var i = 1; i < results.length; i++ ) {
2672 - if ( results[i] === results[i-1] ) {
2673 - results.splice(i--, 1);
2674 - }
2675 - }
2676 - }
2677 - }
2678 -
2679 - return results;
2680 -};
2681 -
2682 -Sizzle.matches = function(expr, set){
2683 - return Sizzle(expr, null, null, set);
2684 -};
2685 -
2686 -Sizzle.find = function(expr, context, isXML){
2687 - var set, match;
2688 -
2689 - if ( !expr ) {
2690 - return [];
2691 - }
2692 -
2693 - for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
2694 - var type = Expr.order[i], match;
2695 -
2696 - if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {
2697 - var left = match[1];
2698 - match.splice(1,1);
2699 -
2700 - if ( left.substr( left.length - 1 ) !== "\\" ) {
2701 - match[1] = (match[1] || "").replace(/\\/g, "");
2702 - set = Expr.find[ type ]( match, context, isXML );
2703 - if ( set != null ) {
2704 - expr = expr.replace( Expr.match[ type ], "" );
2705 - break;
2706 - }
2707 - }
2708 - }
2709 - }
2710 -
2711 - if ( !set ) {
2712 - set = context.getElementsByTagName("*");
2713 - }
2714 -
2715 - return {set: set, expr: expr};
2716 -};
2717 -
2718 -Sizzle.filter = function(expr, set, inplace, not){
2719 - var old = expr, result = [], curLoop = set, match, anyFound,
2720 - isXMLFilter = set && set[0] && isXML(set[0]);
2721 -
2722 - while ( expr && set.length ) {
2723 - for ( var type in Expr.filter ) {
2724 - if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {
2725 - var filter = Expr.filter[ type ], found, item, left = match[1];
2726 - anyFound = false;
2727 -
2728 - match.splice(1,1);
2729 -
2730 - if ( left.substr( left.length - 1 ) === "\\" ) {
2731 - continue;
2732 - }
2733 -
2734 - if ( curLoop === result ) {
2735 - result = [];
2736 - }
2737 -
2738 - if ( Expr.preFilter[ type ] ) {
2739 - match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
2740 -
2741 - if ( !match ) {
2742 - anyFound = found = true;
2743 - } else if ( match === true ) {
2744 - continue;
2745 - }
2746 - }
2747 -
2748 - if ( match ) {
2749 - for ( var i = 0; (item = curLoop[i]) != null; i++ ) {
2750 - if ( item ) {
2751 - found = filter( item, match, i, curLoop );
2752 - var pass = not ^ !!found;
2753 -
2754 - if ( inplace && found != null ) {
2755 - if ( pass ) {
2756 - anyFound = true;
2757 - } else {
2758 - curLoop[i] = false;
2759 - }
2760 - } else if ( pass ) {
2761 - result.push( item );
2762 - anyFound = true;
2763 - }
2764 - }
2765 - }
2766 - }
2767 -
2768 - if ( found !== undefined ) {
2769 - if ( !inplace ) {
2770 - curLoop = result;
2771 - }
2772 -
2773 - expr = expr.replace( Expr.match[ type ], "" );
2774 -
2775 - if ( !anyFound ) {
2776 - return [];
2777 - }
2778 -
2779 - break;
2780 - }
2781 - }
2782 - }
2783 -
2784 - // Improper expression
2785 - if ( expr === old ) {
2786 - if ( anyFound == null ) {
2787 - Sizzle.error( expr );
2788 - } else {
2789 - break;
2790 - }
2791 - }
2792 -
2793 - old = expr;
2794 - }
2795 -
2796 - return curLoop;
2797 -};
2798 -
2799 -Sizzle.error = function( msg ) {
2800 - throw "Syntax error, unrecognized expression: " + msg;
2801 -};
2802 -
2803 -var Expr = Sizzle.selectors = {
2804 - order: [ "ID", "NAME", "TAG" ],
2805 - match: {
2806 - ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
2807 - CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
2808 - NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,
2809 - ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
2810 - TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,
2811 - CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,
2812 - POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,
2813 - PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/
2814 - },
2815 - leftMatch: {},
2816 - attrMap: {
2817 - "class": "className",
2818 - "for": "htmlFor"
2819 - },
2820 - attrHandle: {
2821 - href: function(elem){
2822 - return elem.getAttribute("href");
2823 - }
2824 - },
2825 - relative: {
2826 - "+": function(checkSet, part){
2827 - var isPartStr = typeof part === "string",
2828 - isTag = isPartStr && !/\W/.test(part),
2829 - isPartStrNotTag = isPartStr && !isTag;
2830 -
2831 - if ( isTag ) {
2832 - part = part.toLowerCase();
2833 - }
2834 -
2835 - for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
2836 - if ( (elem = checkSet[i]) ) {
2837 - while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
2838 -
2839 - checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?
2840 - elem || false :
2841 - elem === part;
2842 - }
2843 - }
2844 -
2845 - if ( isPartStrNotTag ) {
2846 - Sizzle.filter( part, checkSet, true );
2847 - }
2848 - },
2849 - ">": function(checkSet, part){
2850 - var isPartStr = typeof part === "string";
2851 -
2852 - if ( isPartStr && !/\W/.test(part) ) {
2853 - part = part.toLowerCase();
2854 -
2855 - for ( var i = 0, l = checkSet.length; i < l; i++ ) {
2856 - var elem = checkSet[i];
2857 - if ( elem ) {
2858 - var parent = elem.parentNode;
2859 - checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;
2860 - }
2861 - }
2862 - } else {
2863 - for ( var i = 0, l = checkSet.length; i < l; i++ ) {
2864 - var elem = checkSet[i];
2865 - if ( elem ) {
2866 - checkSet[i] = isPartStr ?
2867 - elem.parentNode :
2868 - elem.parentNode === part;
2869 - }
2870 - }
2871 -
2872 - if ( isPartStr ) {
2873 - Sizzle.filter( part, checkSet, true );
2874 - }
2875 - }
2876 - },
2877 - "": function(checkSet, part, isXML){
2878 - var doneName = done++, checkFn = dirCheck;
2879 -
2880 - if ( typeof part === "string" && !/\W/.test(part) ) {
2881 - var nodeCheck = part = part.toLowerCase();
2882 - checkFn = dirNodeCheck;
2883 - }
2884 -
2885 - checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML);
2886 - },
2887 - "~": function(checkSet, part, isXML){
2888 - var doneName = done++, checkFn = dirCheck;
2889 -
2890 - if ( typeof part === "string" && !/\W/.test(part) ) {
2891 - var nodeCheck = part = part.toLowerCase();
2892 - checkFn = dirNodeCheck;
2893 - }
2894 -
2895 - checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML);
2896 - }
2897 - },
2898 - find: {
2899 - ID: function(match, context, isXML){
2900 - if ( typeof context.getElementById !== "undefined" && !isXML ) {
2901 - var m = context.getElementById(match[1]);
2902 - return m ? [m] : [];
2903 - }
2904 - },
2905 - NAME: function(match, context){
2906 - if ( typeof context.getElementsByName !== "undefined" ) {
2907 - var ret = [], results = context.getElementsByName(match[1]);
2908 -
2909 - for ( var i = 0, l = results.length; i < l; i++ ) {
2910 - if ( results[i].getAttribute("name") === match[1] ) {
2911 - ret.push( results[i] );
2912 - }
2913 - }
2914 -
2915 - return ret.length === 0 ? null : ret;
2916 - }
2917 - },
2918 - TAG: function(match, context){
2919 - return context.getElementsByTagName(match[1]);
2920 - }
2921 - },
2922 - preFilter: {
2923 - CLASS: function(match, curLoop, inplace, result, not, isXML){
2924 - match = " " + match[1].replace(/\\/g, "") + " ";
2925 -
2926 - if ( isXML ) {
2927 - return match;
2928 - }
2929 -
2930 - for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
2931 - if ( elem ) {
2932 - if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n]/g, " ").indexOf(match) >= 0) ) {
2933 - if ( !inplace ) {
2934 - result.push( elem );
2935 - }
2936 - } else if ( inplace ) {
2937 - curLoop[i] = false;
2938 - }
2939 - }
2940 - }
2941 -
2942 - return false;
2943 - },
2944 - ID: function(match){
2945 - return match[1].replace(/\\/g, "");
2946 - },
2947 - TAG: function(match, curLoop){
2948 - return match[1].toLowerCase();
2949 - },
2950 - CHILD: function(match){
2951 - if ( match[1] === "nth" ) {
2952 - // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
2953 - var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(
2954 - match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" ||
2955 - !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
2956 -
2957 - // calculate the numbers (first)n+(last) including if they are negative
2958 - match[2] = (test[1] + (test[2] || 1)) - 0;
2959 - match[3] = test[3] - 0;
2960 - }
2961 -
2962 - // TODO: Move to normal caching system
2963 - match[0] = done++;
2964 -
2965 - return match;
2966 - },
2967 - ATTR: function(match, curLoop, inplace, result, not, isXML){
2968 - var name = match[1].replace(/\\/g, "");
2969 -
2970 - if ( !isXML && Expr.attrMap[name] ) {
2971 - match[1] = Expr.attrMap[name];
2972 - }
2973 -
2974 - if ( match[2] === "~=" ) {
2975 - match[4] = " " + match[4] + " ";
2976 - }
2977 -
2978 - return match;
2979 - },
2980 - PSEUDO: function(match, curLoop, inplace, result, not){
2981 - if ( match[1] === "not" ) {
2982 - // If we're dealing with a complex expression, or a simple one
2983 - if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) {
2984 - match[3] = Sizzle(match[3], null, null, curLoop);
2985 - } else {
2986 - var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
2987 - if ( !inplace ) {
2988 - result.push.apply( result, ret );
2989 - }
2990 - return false;
2991 - }
2992 - } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
2993 - return true;
2994 - }
2995 -
2996 - return match;
2997 - },
2998 - POS: function(match){
2999 - match.unshift( true );
3000 - return match;
3001 - }
3002 - },
3003 - filters: {
3004 - enabled: function(elem){
3005 - return elem.disabled === false && elem.type !== "hidden";
3006 - },
3007 - disabled: function(elem){
3008 - return elem.disabled === true;
3009 - },
3010 - checked: function(elem){
3011 - return elem.checked === true;
3012 - },
3013 - selected: function(elem){
3014 - // Accessing this property makes selected-by-default
3015 - // options in Safari work properly
3016 - elem.parentNode.selectedIndex;
3017 - return elem.selected === true;
3018 - },
3019 - parent: function(elem){
3020 - return !!elem.firstChild;
3021 - },
3022 - empty: function(elem){
3023 - return !elem.firstChild;
3024 - },
3025 - has: function(elem, i, match){
3026 - return !!Sizzle( match[3], elem ).length;
3027 - },
3028 - header: function(elem){
3029 - return /h\d/i.test( elem.nodeName );
3030 - },
3031 - text: function(elem){
3032 - return "text" === elem.type;
3033 - },
3034 - radio: function(elem){
3035 - return "radio" === elem.type;
3036 - },
3037 - checkbox: function(elem){
3038 - return "checkbox" === elem.type;
3039 - },
3040 - file: function(elem){
3041 - return "file" === elem.type;
3042 - },
3043 - password: function(elem){
3044 - return "password" === elem.type;
3045 - },
3046 - submit: function(elem){
3047 - return "submit" === elem.type;
3048 - },
3049 - image: function(elem){
3050 - return "image" === elem.type;
3051 - },
3052 - reset: function(elem){
3053 - return "reset" === elem.type;
3054 - },
3055 - button: function(elem){
3056 - return "button" === elem.type || elem.nodeName.toLowerCase() === "button";
3057 - },
3058 - input: function(elem){
3059 - return /input|select|textarea|button/i.test(elem.nodeName);
3060 - }
3061 - },
3062 - setFilters: {
3063 - first: function(elem, i){
3064 - return i === 0;
3065 - },
3066 - last: function(elem, i, match, array){
3067 - return i === array.length - 1;
3068 - },
3069 - even: function(elem, i){
3070 - return i % 2 === 0;
3071 - },
3072 - odd: function(elem, i){
3073 - return i % 2 === 1;
3074 - },
3075 - lt: function(elem, i, match){
3076 - return i < match[3] - 0;
3077 - },
3078 - gt: function(elem, i, match){
3079 - return i > match[3] - 0;
3080 - },
3081 - nth: function(elem, i, match){
3082 - return match[3] - 0 === i;
3083 - },
3084 - eq: function(elem, i, match){
3085 - return match[3] - 0 === i;
3086 - }
3087 - },
3088 - filter: {
3089 - PSEUDO: function(elem, match, i, array){
3090 - var name = match[1], filter = Expr.filters[ name ];
3091 -
3092 - if ( filter ) {
3093 - return filter( elem, i, match, array );
3094 - } else if ( name === "contains" ) {
3095 - return (elem.textContent || elem.innerText || getText([ elem ]) || "").indexOf(match[3]) >= 0;
3096 - } else if ( name === "not" ) {
3097 - var not = match[3];
3098 -
3099 - for ( var i = 0, l = not.length; i < l; i++ ) {
3100 - if ( not[i] === elem ) {
3101 - return false;
3102 - }
3103 - }
3104 -
3105 - return true;
3106 - } else {
3107 - Sizzle.error( "Syntax error, unrecognized expression: " + name );
3108 - }
3109 - },
3110 - CHILD: function(elem, match){
3111 - var type = match[1], node = elem;
3112 - switch (type) {
3113 - case 'only':
3114 - case 'first':
3115 - while ( (node = node.previousSibling) ) {
3116 - if ( node.nodeType === 1 ) {
3117 - return false;
3118 - }
3119 - }
3120 - if ( type === "first" ) {
3121 - return true;
3122 - }
3123 - node = elem;
3124 - case 'last':
3125 - while ( (node = node.nextSibling) ) {
3126 - if ( node.nodeType === 1 ) {
3127 - return false;
3128 - }
3129 - }
3130 - return true;
3131 - case 'nth':
3132 - var first = match[2], last = match[3];
3133 -
3134 - if ( first === 1 && last === 0 ) {
3135 - return true;
3136 - }
3137 -
3138 - var doneName = match[0],
3139 - parent = elem.parentNode;
3140 -
3141 - if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {
3142 - var count = 0;
3143 - for ( node = parent.firstChild; node; node = node.nextSibling ) {
3144 - if ( node.nodeType === 1 ) {
3145 - node.nodeIndex = ++count;
3146 - }
3147 - }
3148 - parent.sizcache = doneName;
3149 - }
3150 -
3151 - var diff = elem.nodeIndex - last;
3152 - if ( first === 0 ) {
3153 - return diff === 0;
3154 - } else {
3155 - return ( diff % first === 0 && diff / first >= 0 );
3156 - }
3157 - }
3158 - },
3159 - ID: function(elem, match){
3160 - return elem.nodeType === 1 && elem.getAttribute("id") === match;
3161 - },
3162 - TAG: function(elem, match){
3163 - return (match === "*" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match;
3164 - },
3165 - CLASS: function(elem, match){
3166 - return (" " + (elem.className || elem.getAttribute("class")) + " ")
3167 - .indexOf( match ) > -1;
3168 - },
3169 - ATTR: function(elem, match){
3170 - var name = match[1],
3171 - result = Expr.attrHandle[ name ] ?
3172 - Expr.attrHandle[ name ]( elem ) :
3173 - elem[ name ] != null ?
3174 - elem[ name ] :
3175 - elem.getAttribute( name ),
3176 - value = result + "",
3177 - type = match[2],
3178 - check = match[4];
3179 -
3180 - return result == null ?
3181 - type === "!=" :
3182 - type === "=" ?
3183 - value === check :
3184 - type === "*=" ?
3185 - value.indexOf(check) >= 0 :
3186 - type === "~=" ?
3187 - (" " + value + " ").indexOf(check) >= 0 :
3188 - !check ?
3189 - value && result !== false :
3190 - type === "!=" ?
3191 - value !== check :
3192 - type === "^=" ?
3193 - value.indexOf(check) === 0 :
3194 - type === "$=" ?
3195 - value.substr(value.length - check.length) === check :
3196 - type === "|=" ?
3197 - value === check || value.substr(0, check.length + 1) === check + "-" :
3198 - false;
3199 - },
3200 - POS: function(elem, match, i, array){
3201 - var name = match[2], filter = Expr.setFilters[ name ];
3202 -
3203 - if ( filter ) {
3204 - return filter( elem, i, match, array );
3205 - }
3206 - }
3207 - }
3208 -};
3209 -
3210 -var origPOS = Expr.match.POS;
3211 -
3212 -for ( var type in Expr.match ) {
3213 - Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source );
3214 - Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, function(all, num){
3215 - return "\\" + (num - 0 + 1);
3216 - }));
3217 -}
3218 -
3219 -var makeArray = function(array, results) {
3220 - array = Array.prototype.slice.call( array, 0 );
3221 -
3222 - if ( results ) {
3223 - results.push.apply( results, array );
3224 - return results;
3225 - }
3226 -
3227 - return array;
3228 -};
3229 -
3230 -// Perform a simple check to determine if the browser is capable of
3231 -// converting a NodeList to an array using builtin methods.
3232 -try {
3233 - Array.prototype.slice.call( document.documentElement.childNodes, 0 );
3234 -
3235 -// Provide a fallback method if it does not work
3236 -} catch(e){
3237 - makeArray = function(array, results) {
3238 - var ret = results || [];
3239 -
3240 - if ( toString.call(array) === "[object Array]" ) {
3241 - Array.prototype.push.apply( ret, array );
3242 - } else {
3243 - if ( typeof array.length === "number" ) {
3244 - for ( var i = 0, l = array.length; i < l; i++ ) {
3245 - ret.push( array[i] );
3246 - }
3247 - } else {
3248 - for ( var i = 0; array[i]; i++ ) {
3249 - ret.push( array[i] );
3250 - }
3251 - }
3252 - }
3253 -
3254 - return ret;
3255 - };
3256 -}
3257 -
3258 -var sortOrder;
3259 -
3260 -if ( document.documentElement.compareDocumentPosition ) {
3261 - sortOrder = function( a, b ) {
3262 - if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {
3263 - if ( a == b ) {
3264 - hasDuplicate = true;
3265 - }
3266 - return a.compareDocumentPosition ? -1 : 1;
3267 - }
3268 -
3269 - var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1;
3270 - if ( ret === 0 ) {
3271 - hasDuplicate = true;
3272 - }
3273 - return ret;
3274 - };
3275 -} else if ( "sourceIndex" in document.documentElement ) {
3276 - sortOrder = function( a, b ) {
3277 - if ( !a.sourceIndex || !b.sourceIndex ) {
3278 - if ( a == b ) {
3279 - hasDuplicate = true;
3280 - }
3281 - return a.sourceIndex ? -1 : 1;
3282 - }
3283 -
3284 - var ret = a.sourceIndex - b.sourceIndex;
3285 - if ( ret === 0 ) {
3286 - hasDuplicate = true;
3287 - }
3288 - return ret;
3289 - };
3290 -} else if ( document.createRange ) {
3291 - sortOrder = function( a, b ) {
3292 - if ( !a.ownerDocument || !b.ownerDocument ) {
3293 - if ( a == b ) {
3294 - hasDuplicate = true;
3295 - }
3296 - return a.ownerDocument ? -1 : 1;
3297 - }
3298 -
3299 - var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange();
3300 - aRange.setStart(a, 0);
3301 - aRange.setEnd(a, 0);
3302 - bRange.setStart(b, 0);
3303 - bRange.setEnd(b, 0);
3304 - var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange);
3305 - if ( ret === 0 ) {
3306 - hasDuplicate = true;
3307 - }
3308 - return ret;
3309 - };
3310 -}
3311 -
3312 -// Utility function for retreiving the text value of an array of DOM nodes
3313 -function getText( elems ) {
3314 - var ret = "", elem;
3315 -
3316 - for ( var i = 0; elems[i]; i++ ) {
3317 - elem = elems[i];
3318 -
3319 - // Get the text from text nodes and CDATA nodes
3320 - if ( elem.nodeType === 3 || elem.nodeType === 4 ) {
3321 - ret += elem.nodeValue;
3322 -
3323 - // Traverse everything else, except comment nodes
3324 - } else if ( elem.nodeType !== 8 ) {
3325 - ret += getText( elem.childNodes );
3326 - }
3327 - }
3328 -
3329 - return ret;
3330 -}
3331 -
3332 -// Check to see if the browser returns elements by name when
3333 -// querying by getElementById (and provide a workaround)
3334 -(function(){
3335 - // We're going to inject a fake input element with a specified name
3336 - var form = document.createElement("div"),
3337 - id = "script" + (new Date).getTime();
3338 - form.innerHTML = "<a name='" + id + "'/>";
3339 -
3340 - // Inject it into the root element, check its status, and remove it quickly
3341 - var root = document.documentElement;
3342 - root.insertBefore( form, root.firstChild );
3343 -
3344 - // The workaround has to do additional checks after a getElementById
3345 - // Which slows things down for other browsers (hence the branching)
3346 - if ( document.getElementById( id ) ) {
3347 - Expr.find.ID = function(match, context, isXML){
3348 - if ( typeof context.getElementById !== "undefined" && !isXML ) {
3349 - var m = context.getElementById(match[1]);
3350 - return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : [];
3351 - }
3352 - };
3353 -
3354 - Expr.filter.ID = function(elem, match){
3355 - var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
3356 - return elem.nodeType === 1 && node && node.nodeValue === match;
3357 - };
3358 - }
3359 -
3360 - root.removeChild( form );
3361 - root = form = null; // release memory in IE
3362 -})();
3363 -
3364 -(function(){
3365 - // Check to see if the browser returns only elements
3366 - // when doing getElementsByTagName("*")
3367 -
3368 - // Create a fake element
3369 - var div = document.createElement("div");
3370 - div.appendChild( document.createComment("") );
3371 -
3372 - // Make sure no comments are found
3373 - if ( div.getElementsByTagName("*").length > 0 ) {
3374 - Expr.find.TAG = function(match, context){
3375 - var results = context.getElementsByTagName(match[1]);
3376 -
3377 - // Filter out possible comments
3378 - if ( match[1] === "*" ) {
3379 - var tmp = [];
3380 -
3381 - for ( var i = 0; results[i]; i++ ) {
3382 - if ( results[i].nodeType === 1 ) {
3383 - tmp.push( results[i] );
3384 - }
3385 - }
3386 -
3387 - results = tmp;
3388 - }
3389 -
3390 - return results;
3391 - };
3392 - }
3393 -
3394 - // Check to see if an attribute returns normalized href attributes
3395 - div.innerHTML = "<a href='#'></a>";
3396 - if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
3397 - div.firstChild.getAttribute("href") !== "#" ) {
3398 - Expr.attrHandle.href = function(elem){
3399 - return elem.getAttribute("href", 2);
3400 - };
3401 - }
3402 -
3403 - div = null; // release memory in IE
3404 -})();
3405 -
3406 -if ( document.querySelectorAll ) {
3407 - (function(){
3408 - var oldSizzle = Sizzle, div = document.createElement("div");
3409 - div.innerHTML = "<p class='TEST'></p>";
3410 -
3411 - // Safari can't handle uppercase or unicode characters when
3412 - // in quirks mode.
3413 - if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
3414 - return;
3415 - }
3416 -
3417 - Sizzle = function(query, context, extra, seed){
3418 - context = context || document;
3419 -
3420 - // Only use querySelectorAll on non-XML documents
3421 - // (ID selectors don't work in non-HTML documents)
3422 - if ( !seed && context.nodeType === 9 && !isXML(context) ) {
3423 - try {
3424 - return makeArray( context.querySelectorAll(query), extra );
3425 - } catch(e){}
3426 - }
3427 -
3428 - return oldSizzle(query, context, extra, seed);
3429 - };
3430 -
3431 - for ( var prop in oldSizzle ) {
3432 - Sizzle[ prop ] = oldSizzle[ prop ];
3433 - }
3434 -
3435 - div = null; // release memory in IE
3436 - })();
3437 -}
3438 -
3439 -(function(){
3440 - var div = document.createElement("div");
3441 -
3442 - div.innerHTML = "<div class='test e'></div><div class='test'></div>";
3443 -
3444 - // Opera can't find a second classname (in 9.6)
3445 - // Also, make sure that getElementsByClassName actually exists
3446 - if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) {
3447 - return;
3448 - }
3449 -
3450 - // Safari caches class attributes, doesn't catch changes (in 3.2)
3451 - div.lastChild.className = "e";
3452 -
3453 - if ( div.getElementsByClassName("e").length === 1 ) {
3454 - return;
3455 - }
3456 -
3457 - Expr.order.splice(1, 0, "CLASS");
3458 - Expr.find.CLASS = function(match, context, isXML) {
3459 - if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
3460 - return context.getElementsByClassName(match[1]);
3461 - }
3462 - };
3463 -
3464 - div = null; // release memory in IE
3465 -})();
3466 -
3467 -function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
3468 - for ( var i = 0, l = checkSet.length; i < l; i++ ) {
3469 - var elem = checkSet[i];
3470 - if ( elem ) {
3471 - elem = elem[dir];
3472 - var match = false;
3473 -
3474 - while ( elem ) {
3475 - if ( elem.sizcache === doneName ) {
3476 - match = checkSet[elem.sizset];
3477 - break;
3478 - }
3479 -
3480 - if ( elem.nodeType === 1 && !isXML ){
3481 - elem.sizcache = doneName;
3482 - elem.sizset = i;
3483 - }
3484 -
3485 - if ( elem.nodeName.toLowerCase() === cur ) {
3486 - match = elem;
3487 - break;
3488 - }
3489 -
3490 - elem = elem[dir];
3491 - }
3492 -
3493 - checkSet[i] = match;
3494 - }
3495 - }
3496 -}
3497 -
3498 -function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
3499 - for ( var i = 0, l = checkSet.length; i < l; i++ ) {
3500 - var elem = checkSet[i];
3501 - if ( elem ) {
3502 - elem = elem[dir];
3503 - var match = false;
3504 -
3505 - while ( elem ) {
3506 - if ( elem.sizcache === doneName ) {
3507 - match = checkSet[elem.sizset];
3508 - break;
3509 - }
3510 -
3511 - if ( elem.nodeType === 1 ) {
3512 - if ( !isXML ) {
3513 - elem.sizcache = doneName;
3514 - elem.sizset = i;
3515 - }
3516 - if ( typeof cur !== "string" ) {
3517 - if ( elem === cur ) {
3518 - match = true;
3519 - break;
3520 - }
3521 -
3522 - } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
3523 - match = elem;
3524 - break;
3525 - }
3526 - }
3527 -
3528 - elem = elem[dir];
3529 - }
3530 -
3531 - checkSet[i] = match;
3532 - }
3533 - }
3534 -}
3535 -
3536 -var contains = document.compareDocumentPosition ? function(a, b){
3537 - return a.compareDocumentPosition(b) & 16;
3538 -} : function(a, b){
3539 - return a !== b && (a.contains ? a.contains(b) : true);
3540 -};
3541 -
3542 -var isXML = function(elem){
3543 - // documentElement is verified for cases where it doesn't yet exist
3544 - // (such as loading iframes in IE - #4833)
3545 - var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;
3546 - return documentElement ? documentElement.nodeName !== "HTML" : false;
3547 -};
3548 -
3549 -var posProcess = function(selector, context){
3550 - var tmpSet = [], later = "", match,
3551 - root = context.nodeType ? [context] : context;
3552 -
3553 - // Position selectors must be done after the filter
3554 - // And so must :not(positional) so we move all PSEUDOs to the end
3555 - while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
3556 - later += match[0];
3557 - selector = selector.replace( Expr.match.PSEUDO, "" );
3558 - }
3559 -
3560 - selector = Expr.relative[selector] ? selector + "*" : selector;
3561 -
3562 - for ( var i = 0, l = root.length; i < l; i++ ) {
3563 - Sizzle( selector, root[i], tmpSet );
3564 - }
3565 -
3566 - return Sizzle.filter( later, tmpSet );
3567 -};
3568 -
3569 -// EXPOSE
3570 -jQuery.find = Sizzle;
3571 -jQuery.expr = Sizzle.selectors;
3572 -jQuery.expr[":"] = jQuery.expr.filters;
3573 -jQuery.unique = Sizzle.uniqueSort;
3574 -jQuery.getText = getText;
3575 -jQuery.isXMLDoc = isXML;
3576 -jQuery.contains = contains;
3577 -
3578 -return;
3579 -
3580 -window.Sizzle = Sizzle;
3581 -
3582 -})();
3583 -var runtil = /Until$/,
3584 - rparentsprev = /^(?:parents|prevUntil|prevAll)/,
3585 - // Note: This RegExp should be improved, or likely pulled from Sizzle
3586 - rmultiselector = /,/,
3587 - slice = Array.prototype.slice;
3588 -
3589 -// Implement the identical functionality for filter and not
3590 -var winnow = function( elements, qualifier, keep ) {
3591 - if ( jQuery.isFunction( qualifier ) ) {
3592 - return jQuery.grep(elements, function( elem, i ) {
3593 - return !!qualifier.call( elem, i, elem ) === keep;
3594 - });
3595 -
3596 - } else if ( qualifier.nodeType ) {
3597 - return jQuery.grep(elements, function( elem, i ) {
3598 - return (elem === qualifier) === keep;
3599 - });
3600 -
3601 - } else if ( typeof qualifier === "string" ) {
3602 - var filtered = jQuery.grep(elements, function( elem ) {
3603 - return elem.nodeType === 1;
3604 - });
3605 -
3606 - if ( isSimple.test( qualifier ) ) {
3607 - return jQuery.filter(qualifier, filtered, !keep);
3608 - } else {
3609 - qualifier = jQuery.filter( qualifier, filtered );
3610 - }
3611 - }
3612 -
3613 - return jQuery.grep(elements, function( elem, i ) {
3614 - return (jQuery.inArray( elem, qualifier ) >= 0) === keep;
3615 - });
3616 -};
3617 -
3618 -jQuery.fn.extend({
3619 - find: function( selector ) {
3620 - var ret = this.pushStack( "", "find", selector ), length = 0;
3621 -
3622 - for ( var i = 0, l = this.length; i < l; i++ ) {
3623 - length = ret.length;
3624 - jQuery.find( selector, this[i], ret );
3625 -
3626 - if ( i > 0 ) {
3627 - // Make sure that the results are unique
3628 - for ( var n = length; n < ret.length; n++ ) {
3629 - for ( var r = 0; r < length; r++ ) {
3630 - if ( ret[r] === ret[n] ) {
3631 - ret.splice(n--, 1);
3632 - break;
3633 - }
3634 - }
3635 - }
3636 - }
3637 - }
3638 -
3639 - return ret;
3640 - },
3641 -
3642 - has: function( target ) {
3643 - var targets = jQuery( target );
3644 - return this.filter(function() {
3645 - for ( var i = 0, l = targets.length; i < l; i++ ) {
3646 - if ( jQuery.contains( this, targets[i] ) ) {
3647 - return true;
3648 - }
3649 - }
3650 - });
3651 - },
3652 -
3653 - not: function( selector ) {
3654 - return this.pushStack( winnow(this, selector, false), "not", selector);
3655 - },
3656 -
3657 - filter: function( selector ) {
3658 - return this.pushStack( winnow(this, selector, true), "filter", selector );
3659 - },
3660 -
3661 - is: function( selector ) {
3662 - return !!selector && jQuery.filter( selector, this ).length > 0;
3663 - },
3664 -
3665 - closest: function( selectors, context ) {
3666 - if ( jQuery.isArray( selectors ) ) {
3667 - var ret = [], cur = this[0], match, matches = {}, selector;
3668 -
3669 - if ( cur && selectors.length ) {
3670 - for ( var i = 0, l = selectors.length; i < l; i++ ) {
3671 - selector = selectors[i];
3672 -
3673 - if ( !matches[selector] ) {
3674 - matches[selector] = jQuery.expr.match.POS.test( selector ) ?
3675 - jQuery( selector, context || this.context ) :
3676 - selector;
3677 - }
3678 - }
3679 -
3680 - while ( cur && cur.ownerDocument && cur !== context ) {
3681 - for ( selector in matches ) {
3682 - match = matches[selector];
3683 -
3684 - if ( match.jquery ? match.index(cur) > -1 : jQuery(cur).is(match) ) {
3685 - ret.push({ selector: selector, elem: cur });
3686 - delete matches[selector];
3687 - }
3688 - }
3689 - cur = cur.parentNode;
3690 - }
3691 - }
3692 -
3693 - return ret;
3694 - }
3695 -
3696 - var pos = jQuery.expr.match.POS.test( selectors ) ?
3697 - jQuery( selectors, context || this.context ) : null;
3698 -
3699 - return this.map(function( i, cur ) {
3700 - while ( cur && cur.ownerDocument && cur !== context ) {
3701 - if ( pos ? pos.index(cur) > -1 : jQuery(cur).is(selectors) ) {
3702 - return cur;
3703 - }
3704 - cur = cur.parentNode;
3705 - }
3706 - return null;
3707 - });
3708 - },
3709 -
3710 - // Determine the position of an element within
3711 - // the matched set of elements
3712 - index: function( elem ) {
3713 - if ( !elem || typeof elem === "string" ) {
3714 - return jQuery.inArray( this[0],
3715 - // If it receives a string, the selector is used
3716 - // If it receives nothing, the siblings are used
3717 - elem ? jQuery( elem ) : this.parent().children() );
3718 - }
3719 - // Locate the position of the desired element
3720 - return jQuery.inArray(
3721 - // If it receives a jQuery object, the first element is used
3722 - elem.jquery ? elem[0] : elem, this );
3723 - },
3724 -
3725 - add: function( selector, context ) {
3726 - var set = typeof selector === "string" ?
3727 - jQuery( selector, context || this.context ) :
3728 - jQuery.makeArray( selector ),
3729 - all = jQuery.merge( this.get(), set );
3730 -
3731 - return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?
3732 - all :
3733 - jQuery.unique( all ) );
3734 - },
3735 -
3736 - andSelf: function() {
3737 - return this.add( this.prevObject );
3738 - }
3739 -});
3740 -
3741 -// A painfully simple check to see if an element is disconnected
3742 -// from a document (should be improved, where feasible).
3743 -function isDisconnected( node ) {
3744 - return !node || !node.parentNode || node.parentNode.nodeType === 11;
3745 -}
3746 -
3747 -jQuery.each({
3748 - parent: function( elem ) {
3749 - var parent = elem.parentNode;
3750 - return parent && parent.nodeType !== 11 ? parent : null;
3751 - },
3752 - parents: function( elem ) {
3753 - return jQuery.dir( elem, "parentNode" );
3754 - },
3755 - parentsUntil: function( elem, i, until ) {
3756 - return jQuery.dir( elem, "parentNode", until );
3757 - },
3758 - next: function( elem ) {
3759 - return jQuery.nth( elem, 2, "nextSibling" );
3760 - },
3761 - prev: function( elem ) {
3762 - return jQuery.nth( elem, 2, "previousSibling" );
3763 - },
3764 - nextAll: function( elem ) {
3765 - return jQuery.dir( elem, "nextSibling" );
3766 - },
3767 - prevAll: function( elem ) {
3768 - return jQuery.dir( elem, "previousSibling" );
3769 - },
3770 - nextUntil: function( elem, i, until ) {
3771 - return jQuery.dir( elem, "nextSibling", until );
3772 - },
3773 - prevUntil: function( elem, i, until ) {
3774 - return jQuery.dir( elem, "previousSibling", until );
3775 - },
3776 - siblings: function( elem ) {
3777 - return jQuery.sibling( elem.parentNode.firstChild, elem );
3778 - },
3779 - children: function( elem ) {
3780 - return jQuery.sibling( elem.firstChild );
3781 - },
3782 - contents: function( elem ) {
3783 - return jQuery.nodeName( elem, "iframe" ) ?
3784 - elem.contentDocument || elem.contentWindow.document :
3785 - jQuery.makeArray( elem.childNodes );
3786 - }
3787 -}, function( name, fn ) {
3788 - jQuery.fn[ name ] = function( until, selector ) {
3789 - var ret = jQuery.map( this, fn, until );
3790 -
3791 - if ( !runtil.test( name ) ) {
3792 - selector = until;
3793 - }
3794 -
3795 - if ( selector && typeof selector === "string" ) {
3796 - ret = jQuery.filter( selector, ret );
3797 - }
3798 -
3799 - ret = this.length > 1 ? jQuery.unique( ret ) : ret;
3800 -
3801 - if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {
3802 - ret = ret.reverse();
3803 - }
3804 -
3805 - return this.pushStack( ret, name, slice.call(arguments).join(",") );
3806 - };
3807 -});
3808 -
3809 -jQuery.extend({
3810 - filter: function( expr, elems, not ) {
3811 - if ( not ) {
3812 - expr = ":not(" + expr + ")";
3813 - }
3814 -
3815 - return jQuery.find.matches(expr, elems);
3816 - },
3817 -
3818 - dir: function( elem, dir, until ) {
3819 - var matched = [], cur = elem[dir];
3820 - while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {
3821 - if ( cur.nodeType === 1 ) {
3822 - matched.push( cur );
3823 - }
3824 - cur = cur[dir];
3825 - }
3826 - return matched;
3827 - },
3828 -
3829 - nth: function( cur, result, dir, elem ) {
3830 - result = result || 1;
3831 - var num = 0;
3832 -
3833 - for ( ; cur; cur = cur[dir] ) {
3834 - if ( cur.nodeType === 1 && ++num === result ) {
3835 - break;
3836 - }
3837 - }
3838 -
3839 - return cur;
3840 - },
3841 -
3842 - sibling: function( n, elem ) {
3843 - var r = [];
3844 -
3845 - for ( ; n; n = n.nextSibling ) {
3846 - if ( n.nodeType === 1 && n !== elem ) {
3847 - r.push( n );
3848 - }
3849 - }
3850 -
3851 - return r;
3852 - }
3853 -});
3854 -var rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g,
3855 - rleadingWhitespace = /^\s+/,
3856 - rxhtmlTag = /(<([\w:]+)[^>]*?)\/>/g,
3857 - rselfClosing = /^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,
3858 - rtagName = /<([\w:]+)/,
3859 - rtbody = /<tbody/i,
3860 - rhtml = /<|&\w+;/,
3861 - rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, // checked="checked" or checked (html5)
3862 - fcloseTag = function( all, front, tag ) {
3863 - return rselfClosing.test( tag ) ?
3864 - all :
3865 - front + "></" + tag + ">";
3866 - },
3867 - wrapMap = {
3868 - option: [ 1, "<select multiple='multiple'>", "</select>" ],
3869 - legend: [ 1, "<fieldset>", "</fieldset>" ],
3870 - thead: [ 1, "<table>", "</table>" ],
3871 - tr: [ 2, "<table><tbody>", "</tbody></table>" ],
3872 - td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
3873 - col: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ],
3874 - area: [ 1, "<map>", "</map>" ],
3875 - _default: [ 0, "", "" ]
3876 - };
3877 -
3878 -wrapMap.optgroup = wrapMap.option;
3879 -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
3880 -wrapMap.th = wrapMap.td;
3881 -
3882 -// IE can't serialize <link> and <script> tags normally
3883 -if ( !jQuery.support.htmlSerialize ) {
3884 - wrapMap._default = [ 1, "div<div>", "</div>" ];
3885 -}
3886 -
3887 -jQuery.fn.extend({
3888 - text: function( text ) {
3889 - if ( jQuery.isFunction(text) ) {
3890 - return this.each(function(i) {
3891 - var self = jQuery(this);
3892 - self.text( text.call(this, i, self.text()) );
3893 - });
3894 - }
3895 -
3896 - if ( typeof text !== "object" && text !== undefined ) {
3897 - return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );
3898 - }
3899 -
3900 - return jQuery.getText( this );
3901 - },
3902 -
3903 - wrapAll: function( html ) {
3904 - if ( jQuery.isFunction( html ) ) {
3905 - return this.each(function(i) {
3906 - jQuery(this).wrapAll( html.call(this, i) );
3907 - });
3908 - }
3909 -
3910 - if ( this[0] ) {
3911 - // The elements to wrap the target around
3912 - var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);
3913 -
3914 - if ( this[0].parentNode ) {
3915 - wrap.insertBefore( this[0] );
3916 - }
3917 -
3918 - wrap.map(function() {
3919 - var elem = this;
3920 -
3921 - while ( elem.firstChild && elem.firstChild.nodeType === 1 ) {
3922 - elem = elem.firstChild;
3923 - }
3924 -
3925 - return elem;
3926 - }).append(this);
3927 - }
3928 -
3929 - return this;
3930 - },
3931 -
3932 - wrapInner: function( html ) {
3933 - if ( jQuery.isFunction( html ) ) {
3934 - return this.each(function(i) {
3935 - jQuery(this).wrapInner( html.call(this, i) );
3936 - });
3937 - }
3938 -
3939 - return this.each(function() {
3940 - var self = jQuery( this ), contents = self.contents();
3941 -
3942 - if ( contents.length ) {
3943 - contents.wrapAll( html );
3944 -
3945 - } else {
3946 - self.append( html );
3947 - }
3948 - });
3949 - },
3950 -
3951 - wrap: function( html ) {
3952 - return this.each(function() {
3953 - jQuery( this ).wrapAll( html );
3954 - });
3955 - },
3956 -
3957 - unwrap: function() {
3958 - return this.parent().each(function() {
3959 - if ( !jQuery.nodeName( this, "body" ) ) {
3960 - jQuery( this ).replaceWith( this.childNodes );
3961 - }
3962 - }).end();
3963 - },
3964 -
3965 - append: function() {
3966 - return this.domManip(arguments, true, function( elem ) {
3967 - if ( this.nodeType === 1 ) {
3968 - this.appendChild( elem );
3969 - }
3970 - });
3971 - },
3972 -
3973 - prepend: function() {
3974 - return this.domManip(arguments, true, function( elem ) {
3975 - if ( this.nodeType === 1 ) {
3976 - this.insertBefore( elem, this.firstChild );
3977 - }
3978 - });
3979 - },
3980 -
3981 - before: function() {
3982 - if ( this[0] && this[0].parentNode ) {
3983 - return this.domManip(arguments, false, function( elem ) {
3984 - this.parentNode.insertBefore( elem, this );
3985 - });
3986 - } else if ( arguments.length ) {
3987 - var set = jQuery(arguments[0]);
3988 - set.push.apply( set, this.toArray() );
3989 - return this.pushStack( set, "before", arguments );
3990 - }
3991 - },
3992 -
3993 - after: function() {
3994 - if ( this[0] && this[0].parentNode ) {
3995 - return this.domManip(arguments, false, function( elem ) {
3996 - this.parentNode.insertBefore( elem, this.nextSibling );
3997 - });
3998 - } else if ( arguments.length ) {
3999 - var set = this.pushStack( this, "after", arguments );
4000 - set.push.apply( set, jQuery(arguments[0]).toArray() );
4001 - return set;
4002 - }
4003 - },
4004 -
4005 - clone: function( events ) {
4006 - // Do the clone
4007 - var ret = this.map(function() {
4008 - if ( !jQuery.support.noCloneEvent && !jQuery.isXMLDoc(this) ) {
4009 - // IE copies events bound via attachEvent when
4010 - // using cloneNode. Calling detachEvent on the
4011 - // clone will also remove the events from the orignal
4012 - // In order to get around this, we use innerHTML.
4013 - // Unfortunately, this means some modifications to
4014 - // attributes in IE that are actually only stored
4015 - // as properties will not be copied (such as the
4016 - // the name attribute on an input).
4017 - var html = this.outerHTML, ownerDocument = this.ownerDocument;
4018 - if ( !html ) {
4019 - var div = ownerDocument.createElement("div");
4020 - div.appendChild( this.cloneNode(true) );
4021 - html = div.innerHTML;
4022 - }
4023 -
4024 - return jQuery.clean([html.replace(rinlinejQuery, "")
4025 - .replace(rleadingWhitespace, "")], ownerDocument)[0];
4026 - } else {
4027 - return this.cloneNode(true);
4028 - }
4029 - });
4030 -
4031 - // Copy the events from the original to the clone
4032 - if ( events === true ) {
4033 - cloneCopyEvent( this, ret );
4034 - cloneCopyEvent( this.find("*"), ret.find("*") );
4035 - }
4036 -
4037 - // Return the cloned set
4038 - return ret;
4039 - },
4040 -
4041 - html: function( value ) {
4042 - if ( value === undefined ) {
4043 - return this[0] && this[0].nodeType === 1 ?
4044 - this[0].innerHTML.replace(rinlinejQuery, "") :
4045 - null;
4046 -
4047 - // See if we can take a shortcut and just use innerHTML
4048 - } else if ( typeof value === "string" && !/<script/i.test( value ) &&
4049 - (jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) &&
4050 - !wrapMap[ (rtagName.exec( value ) || ["", ""])[1].toLowerCase() ] ) {
4051 -
4052 - value = value.replace(rxhtmlTag, fcloseTag);
4053 -
4054 - try {
4055 - for ( var i = 0, l = this.length; i < l; i++ ) {
4056 - // Remove element nodes and prevent memory leaks
4057 - if ( this[i].nodeType === 1 ) {
4058 - jQuery.cleanData( this[i].getElementsByTagName("*") );
4059 - this[i].innerHTML = value;
4060 - }
4061 - }
4062 -
4063 - // If using innerHTML throws an exception, use the fallback method
4064 - } catch(e) {
4065 - this.empty().append( value );
4066 - }
4067 -
4068 - } else if ( jQuery.isFunction( value ) ) {
4069 - this.each(function(i){
4070 - var self = jQuery(this), old = self.html();
4071 - self.empty().append(function(){
4072 - return value.call( this, i, old );
4073 - });
4074 - });
4075 -
4076 - } else {
4077 - this.empty().append( value );
4078 - }
4079 -
4080 - return this;
4081 - },
4082 -
4083 - replaceWith: function( value ) {
4084 - if ( this[0] && this[0].parentNode ) {
4085 - // Make sure that the elements are removed from the DOM before they are inserted
4086 - // this can help fix replacing a parent with child elements
4087 - if ( !jQuery.isFunction( value ) ) {
4088 - value = jQuery( value ).detach();
4089 -
4090 - } else {
4091 - return this.each(function(i) {
4092 - var self = jQuery(this), old = self.html();
4093 - self.replaceWith( value.call( this, i, old ) );
4094 - });
4095 - }
4096 -
4097 - return this.each(function() {
4098 - var next = this.nextSibling, parent = this.parentNode;
4099 -
4100 - jQuery(this).remove();
4101 -
4102 - if ( next ) {
4103 - jQuery(next).before( value );
4104 - } else {
4105 - jQuery(parent).append( value );
4106 - }
4107 - });
4108 - } else {
4109 - return this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value );
4110 - }
4111 - },
4112 -
4113 - detach: function( selector ) {
4114 - return this.remove( selector, true );
4115 - },
4116 -
4117 - domManip: function( args, table, callback ) {
4118 - var results, first, value = args[0], scripts = [];
4119 -
4120 - // We can't cloneNode fragments that contain checked, in WebKit
4121 - if ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === "string" && rchecked.test( value ) ) {
4122 - return this.each(function() {
4123 - jQuery(this).domManip( args, table, callback, true );
4124 - });
4125 - }
4126 -
4127 - if ( jQuery.isFunction(value) ) {
4128 - return this.each(function(i) {
4129 - var self = jQuery(this);
4130 - args[0] = value.call(this, i, table ? self.html() : undefined);
4131 - self.domManip( args, table, callback );
4132 - });
4133 - }
4134 -
4135 - if ( this[0] ) {
4136 - // If we're in a fragment, just use that instead of building a new one
4137 - if ( args[0] && args[0].parentNode && args[0].parentNode.nodeType === 11 ) {
4138 - results = { fragment: args[0].parentNode };
4139 - } else {
4140 - results = buildFragment( args, this, scripts );
4141 - }
4142 -
4143 - first = results.fragment.firstChild;
4144 -
4145 - if ( first ) {
4146 - table = table && jQuery.nodeName( first, "tr" );
4147 -
4148 - for ( var i = 0, l = this.length; i < l; i++ ) {
4149 - callback.call(
4150 - table ?
4151 - root(this[i], first) :
4152 - this[i],
4153 - results.cacheable || this.length > 1 || i > 0 ?
4154 - results.fragment.cloneNode(true) :
4155 - results.fragment
4156 - );
4157 - }
4158 - }
4159 -
4160 - if ( scripts ) {
4161 - jQuery.each( scripts, evalScript );
4162 - }
4163 - }
4164 -
4165 - return this;
4166 -
4167 - function root( elem, cur ) {
4168 - return jQuery.nodeName(elem, "table") ?
4169 - (elem.getElementsByTagName("tbody")[0] ||
4170 - elem.appendChild(elem.ownerDocument.createElement("tbody"))) :
4171 - elem;
4172 - }
4173 - }
4174 -});
4175 -
4176 -function cloneCopyEvent(orig, ret) {
4177 - var i = 0;
4178 -
4179 - ret.each(function() {
4180 - if ( this.nodeName !== (orig[i] && orig[i].nodeName) ) {
4181 - return;
4182 - }
4183 -
4184 - var oldData = jQuery.data( orig[i++] ), curData = jQuery.data( this, oldData ), events = oldData && oldData.events;
4185 -
4186 - if ( events ) {
4187 - delete curData.handle;
4188 - curData.events = {};
4189 -
4190 - for ( var type in events ) {
4191 - for ( var handler in events[ type ] ) {
4192 - jQuery.event.add( this, type, events[ type ][ handler ], events[ type ][ handler ].data );
4193 - }
4194 - }
4195 - }
4196 - });
4197 -}
4198 -
4199 -function buildFragment( args, nodes, scripts ) {
4200 - var fragment, cacheable, cacheresults, doc;
4201 -
4202 - // webkit does not clone 'checked' attribute of radio inputs on cloneNode, so don't cache if string has a checked
4203 - if ( args.length === 1 && typeof args[0] === "string" && args[0].length < 512 && args[0].indexOf("<option") < 0 && (jQuery.support.checkClone || !rchecked.test( args[0] )) ) {
4204 - cacheable = true;
4205 - cacheresults = jQuery.fragments[ args[0] ];
4206 - if ( cacheresults ) {
4207 - if ( cacheresults !== 1 ) {
4208 - fragment = cacheresults;
4209 - }
4210 - }
4211 - }
4212 -
4213 - if ( !fragment ) {
4214 - doc = (nodes && nodes[0] ? nodes[0].ownerDocument || nodes[0] : document);
4215 - fragment = doc.createDocumentFragment();
4216 - jQuery.clean( args, doc, fragment, scripts );
4217 - }
4218 -
4219 - if ( cacheable ) {
4220 - jQuery.fragments[ args[0] ] = cacheresults ? fragment : 1;
4221 - }
4222 -
4223 - return { fragment: fragment, cacheable: cacheable };
4224 -}
4225 -
4226 -jQuery.fragments = {};
4227 -
4228 -jQuery.each({
4229 - appendTo: "append",
4230 - prependTo: "prepend",
4231 - insertBefore: "before",
4232 - insertAfter: "after",
4233 - replaceAll: "replaceWith"
4234 -}, function( name, original ) {
4235 - jQuery.fn[ name ] = function( selector ) {
4236 - var ret = [], insert = jQuery( selector );
4237 -
4238 - for ( var i = 0, l = insert.length; i < l; i++ ) {
4239 - var elems = (i > 0 ? this.clone(true) : this).get();
4240 - jQuery.fn[ original ].apply( jQuery(insert[i]), elems );
4241 - ret = ret.concat( elems );
4242 - }
4243 - return this.pushStack( ret, name, insert.selector );
4244 - };
4245 -});
4246 -
4247 -jQuery.each({
4248 - // keepData is for internal use only--do not document
4249 - remove: function( selector, keepData ) {
4250 - if ( !selector || jQuery.filter( selector, [ this ] ).length ) {
4251 - if ( !keepData && this.nodeType === 1 ) {
4252 - jQuery.cleanData( this.getElementsByTagName("*") );
4253 - jQuery.cleanData( [ this ] );
4254 - }
4255 -
4256 - if ( this.parentNode ) {
4257 - this.parentNode.removeChild( this );
4258 - }
4259 - }
4260 - },
4261 -
4262 - empty: function() {
4263 - // Remove element nodes and prevent memory leaks
4264 - if ( this.nodeType === 1 ) {
4265 - jQuery.cleanData( this.getElementsByTagName("*") );
4266 - }
4267 -
4268 - // Remove any remaining nodes
4269 - while ( this.firstChild ) {
4270 - this.removeChild( this.firstChild );
4271 - }
4272 - }
4273 -}, function( name, fn ) {
4274 - jQuery.fn[ name ] = function() {
4275 - return this.each( fn, arguments );
4276 - };
4277 -});
4278 -
4279 -jQuery.extend({
4280 - clean: function( elems, context, fragment, scripts ) {
4281 - context = context || document;
4282 -
4283 - // !context.createElement fails in IE with an error but returns typeof 'object'
4284 - if ( typeof context.createElement === "undefined" ) {
4285 - context = context.ownerDocument || context[0] && context[0].ownerDocument || document;
4286 - }
4287 -
4288 - var ret = [];
4289 -
4290 - jQuery.each(elems, function( i, elem ) {
4291 - if ( typeof elem === "number" ) {
4292 - elem += "";
4293 - }
4294 -
4295 - if ( !elem ) {
4296 - return;
4297 - }
4298 -
4299 - // Convert html string into DOM nodes
4300 - if ( typeof elem === "string" && !rhtml.test( elem ) ) {
4301 - elem = context.createTextNode( elem );
4302 -
4303 - } else if ( typeof elem === "string" ) {
4304 - // Fix "XHTML"-style tags in all browsers
4305 - elem = elem.replace(rxhtmlTag, fcloseTag);
4306 -
4307 - // Trim whitespace, otherwise indexOf won't work as expected
4308 - var tag = (rtagName.exec( elem ) || ["", ""])[1].toLowerCase(),
4309 - wrap = wrapMap[ tag ] || wrapMap._default,
4310 - depth = wrap[0],
4311 - div = context.createElement("div");
4312 -
4313 - // Go to html and back, then peel off extra wrappers
4314 - div.innerHTML = wrap[1] + elem + wrap[2];
4315 -
4316 - // Move to the right depth
4317 - while ( depth-- ) {
4318 - div = div.lastChild;
4319 - }
4320 -
4321 - // Remove IE's autoinserted <tbody> from table fragments
4322 - if ( !jQuery.support.tbody ) {
4323 -
4324 - // String was a <table>, *may* have spurious <tbody>
4325 - var hasBody = rtbody.test(elem),
4326 - tbody = tag === "table" && !hasBody ?
4327 - div.firstChild && div.firstChild.childNodes :
4328 -
4329 - // String was a bare <thead> or <tfoot>
4330 - wrap[1] === "<table>" && !hasBody ?
4331 - div.childNodes :
4332 - [];
4333 -
4334 - for ( var j = tbody.length - 1; j >= 0 ; --j ) {
4335 - if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) {
4336 - tbody[ j ].parentNode.removeChild( tbody[ j ] );
4337 - }
4338 - }
4339 -
4340 - }
4341 -
4342 - // IE completely kills leading whitespace when innerHTML is used
4343 - if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {
4344 - div.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );
4345 - }
4346 -
4347 - elem = jQuery.makeArray( div.childNodes );
4348 - }
4349 -
4350 - if ( elem.nodeType ) {
4351 - ret.push( elem );
4352 - } else {
4353 - ret = jQuery.merge( ret, elem );
4354 - }
4355 -
4356 - });
4357 -
4358 - if ( fragment ) {
4359 - for ( var i = 0; ret[i]; i++ ) {
4360 - if ( scripts && jQuery.nodeName( ret[i], "script" ) && (!ret[i].type || ret[i].type.toLowerCase() === "text/javascript") ) {
4361 - scripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );
4362 - } else {
4363 - if ( ret[i].nodeType === 1 ) {
4364 - ret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName("script"))) );
4365 - }
4366 - fragment.appendChild( ret[i] );
4367 - }
4368 - }
4369 - }
4370 -
4371 - return ret;
4372 - },
4373 -
4374 - cleanData: function( elems ) {
4375 - for ( var i = 0, elem, id; (elem = elems[i]) != null; i++ ) {
4376 - jQuery.event.remove( elem );
4377 - jQuery.removeData( elem );
4378 - }
4379 - }
4380 -});
4381 -// exclude the following css properties to add px
4382 -var rexclude = /z-?index|font-?weight|opacity|zoom|line-?height/i,
4383 - ralpha = /alpha\([^)]*\)/,
4384 - ropacity = /opacity=([^)]*)/,
4385 - rfloat = /float/i,
4386 - rdashAlpha = /-([a-z])/ig,
4387 - rupper = /([A-Z])/g,
4388 - rnumpx = /^-?\d+(?:px)?$/i,
4389 - rnum = /^-?\d/,
4390 -
4391 - cssShow = { position: "absolute", visibility: "hidden", display:"block" },
4392 - cssWidth = [ "Left", "Right" ],
4393 - cssHeight = [ "Top", "Bottom" ],
4394 -
4395 - // cache check for defaultView.getComputedStyle
4396 - getComputedStyle = document.defaultView && document.defaultView.getComputedStyle,
4397 - // normalize float css property
4398 - styleFloat = jQuery.support.cssFloat ? "cssFloat" : "styleFloat",
4399 - fcamelCase = function( all, letter ) {
4400 - return letter.toUpperCase();
4401 - };
4402 -
4403 -jQuery.fn.css = function( name, value ) {
4404 - return access( this, name, value, true, function( elem, name, value ) {
4405 - if ( value === undefined ) {
4406 - return jQuery.curCSS( elem, name );
4407 - }
4408 -
4409 - if ( typeof value === "number" && !rexclude.test(name) ) {
4410 - value += "px";
4411 - }
4412 -
4413 - jQuery.style( elem, name, value );
4414 - });
4415 -};
4416 -
4417 -jQuery.extend({
4418 - style: function( elem, name, value ) {
4419 - // don't set styles on text and comment nodes
4420 - if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {
4421 - return undefined;
4422 - }
4423 -
4424 - // ignore negative width and height values #1599
4425 - if ( (name === "width" || name === "height") && parseFloat(value) < 0 ) {
4426 - value = undefined;
4427 - }
4428 -
4429 - var style = elem.style || elem, set = value !== undefined;
4430 -
4431 - // IE uses filters for opacity
4432 - if ( !jQuery.support.opacity && name === "opacity" ) {
4433 - if ( set ) {
4434 - // IE has trouble with opacity if it does not have layout
4435 - // Force it by setting the zoom level
4436 - style.zoom = 1;
4437 -
4438 - // Set the alpha filter to set the opacity
4439 - var opacity = parseInt( value, 10 ) + "" === "NaN" ? "" : "alpha(opacity=" + value * 100 + ")";
4440 - var filter = style.filter || jQuery.curCSS( elem, "filter" ) || "";
4441 - style.filter = ralpha.test(filter) ? filter.replace(ralpha, opacity) : opacity;
4442 - }
4443 -
4444 - return style.filter && style.filter.indexOf("opacity=") >= 0 ?
4445 - (parseFloat( ropacity.exec(style.filter)[1] ) / 100) + "":
4446 - "";
4447 - }
4448 -
4449 - // Make sure we're using the right name for getting the float value
4450 - if ( rfloat.test( name ) ) {
4451 - name = styleFloat;
4452 - }
4453 -
4454 - name = name.replace(rdashAlpha, fcamelCase);
4455 -
4456 - if ( set ) {
4457 - style[ name ] = value;
4458 - }
4459 -
4460 - return style[ name ];
4461 - },
4462 -
4463 - css: function( elem, name, force, extra ) {
4464 - if ( name === "width" || name === "height" ) {
4465 - var val, props = cssShow, which = name === "width" ? cssWidth : cssHeight;
4466 -
4467 - function getWH() {
4468 - val = name === "width" ? elem.offsetWidth : elem.offsetHeight;
4469 -
4470 - if ( extra === "border" ) {
4471 - return;
4472 - }
4473 -
4474 - jQuery.each( which, function() {
4475 - if ( !extra ) {
4476 - val -= parseFloat(jQuery.curCSS( elem, "padding" + this, true)) || 0;
4477 - }
4478 -
4479 - if ( extra === "margin" ) {
4480 - val += parseFloat(jQuery.curCSS( elem, "margin" + this, true)) || 0;
4481 - } else {
4482 - val -= parseFloat(jQuery.curCSS( elem, "border" + this + "Width", true)) || 0;
4483 - }
4484 - });
4485 - }
4486 -
4487 - if ( elem.offsetWidth !== 0 ) {
4488 - getWH();
4489 - } else {
4490 - jQuery.swap( elem, props, getWH );
4491 - }
4492 -
4493 - return Math.max(0, Math.round(val));
4494 - }
4495 -
4496 - return jQuery.curCSS( elem, name, force );
4497 - },
4498 -
4499 - curCSS: function( elem, name, force ) {
4500 - var ret, style = elem.style, filter;
4501 -
4502 - // IE uses filters for opacity
4503 - if ( !jQuery.support.opacity && name === "opacity" && elem.currentStyle ) {
4504 - ret = ropacity.test(elem.currentStyle.filter || "") ?
4505 - (parseFloat(RegExp.$1) / 100) + "" :
4506 - "";
4507 -
4508 - return ret === "" ?
4509 - "1" :
4510 - ret;
4511 - }
4512 -
4513 - // Make sure we're using the right name for getting the float value
4514 - if ( rfloat.test( name ) ) {
4515 - name = styleFloat;
4516 - }
4517 -
4518 - if ( !force && style && style[ name ] ) {
4519 - ret = style[ name ];
4520 -
4521 - } else if ( getComputedStyle ) {
4522 -
4523 - // Only "float" is needed here
4524 - if ( rfloat.test( name ) ) {
4525 - name = "float";
4526 - }
4527 -
4528 - name = name.replace( rupper, "-$1" ).toLowerCase();
4529 -
4530 - var defaultView = elem.ownerDocument.defaultView;
4531 -
4532 - if ( !defaultView ) {
4533 - return null;
4534 - }
4535 -
4536 - var computedStyle = defaultView.getComputedStyle( elem, null );
4537 -
4538 - if ( computedStyle ) {
4539 - ret = computedStyle.getPropertyValue( name );
4540 - }
4541 -
4542 - // We should always get a number back from opacity
4543 - if ( name === "opacity" && ret === "" ) {
4544 - ret = "1";
4545 - }
4546 -
4547 - } else if ( elem.currentStyle ) {
4548 - var camelCase = name.replace(rdashAlpha, fcamelCase);
4549 -
4550 - ret = elem.currentStyle[ name ] || elem.currentStyle[ camelCase ];
4551 -
4552 - // From the awesome hack by Dean Edwards
4553 - // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
4554 -
4555 - // If we're not dealing with a regular pixel number
4556 - // but a number that has a weird ending, we need to convert it to pixels
4557 - if ( !rnumpx.test( ret ) && rnum.test( ret ) ) {
4558 - // Remember the original values
4559 - var left = style.left, rsLeft = elem.runtimeStyle.left;
4560 -
4561 - // Put in the new values to get a computed value out
4562 - elem.runtimeStyle.left = elem.currentStyle.left;
4563 - style.left = camelCase === "fontSize" ? "1em" : (ret || 0);
4564 - ret = style.pixelLeft + "px";
4565 -
4566 - // Revert the changed values
4567 - style.left = left;
4568 - elem.runtimeStyle.left = rsLeft;
4569 - }
4570 - }
4571 -
4572 - return ret;
4573 - },
4574 -
4575 - // A method for quickly swapping in/out CSS properties to get correct calculations
4576 - swap: function( elem, options, callback ) {
4577 - var old = {};
4578 -
4579 - // Remember the old values, and insert the new ones
4580 - for ( var name in options ) {
4581 - old[ name ] = elem.style[ name ];
4582 - elem.style[ name ] = options[ name ];
4583 - }
4584 -
4585 - callback.call( elem );
4586 -
4587 - // Revert the old values
4588 - for ( var name in options ) {
4589 - elem.style[ name ] = old[ name ];
4590 - }
4591 - }
4592 -});
4593 -
4594 -if ( jQuery.expr && jQuery.expr.filters ) {
4595 - jQuery.expr.filters.hidden = function( elem ) {
4596 - var width = elem.offsetWidth, height = elem.offsetHeight,
4597 - skip = elem.nodeName.toLowerCase() === "tr";
4598 -
4599 - return width === 0 && height === 0 && !skip ?
4600 - true :
4601 - width > 0 && height > 0 && !skip ?
4602 - false :
4603 - jQuery.curCSS(elem, "display") === "none";
4604 - };
4605 -
4606 - jQuery.expr.filters.visible = function( elem ) {
4607 - return !jQuery.expr.filters.hidden( elem );
4608 - };
4609 -}
4610 -var jsc = now(),
4611 - rscript = /<script(.|\s)*?\/script>/gi,
4612 - rselectTextarea = /select|textarea/i,
4613 - rinput = /color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,
4614 - jsre = /=\?(&|$)/,
4615 - rquery = /\?/,
4616 - rts = /(\?|&)_=.*?(&|$)/,
4617 - rurl = /^(\w+:)?\/\/([^\/?#]+)/,
4618 - r20 = /%20/g;
4619 -
4620 -jQuery.fn.extend({
4621 - // Keep a copy of the old load
4622 - _load: jQuery.fn.load,
4623 -
4624 - load: function( url, params, callback ) {
4625 - if ( typeof url !== "string" ) {
4626 - return this._load( url );
4627 -
4628 - // Don't do a request if no elements are being requested
4629 - } else if ( !this.length ) {
4630 - return this;
4631 - }
4632 -
4633 - var off = url.indexOf(" ");
4634 - if ( off >= 0 ) {
4635 - var selector = url.slice(off, url.length);
4636 - url = url.slice(0, off);
4637 - }
4638 -
4639 - // Default to a GET request
4640 - var type = "GET";
4641 -
4642 - // If the second parameter was provided
4643 - if ( params ) {
4644 - // If it's a function
4645 - if ( jQuery.isFunction( params ) ) {
4646 - // We assume that it's the callback
4647 - callback = params;
4648 - params = null;
4649 -
4650 - // Otherwise, build a param string
4651 - } else if ( typeof params === "object" ) {
4652 - params = jQuery.param( params, jQuery.ajaxSettings.traditional );
4653 - type = "POST";
4654 - }
4655 - }
4656 -
4657 - var self = this;
4658 -
4659 - // Request the remote document
4660 - jQuery.ajax({
4661 - url: url,
4662 - type: type,
4663 - dataType: "html",
4664 - data: params,
4665 - complete: function( res, status ) {
4666 - // If successful, inject the HTML into all the matched elements
4667 - if ( status === "success" || status === "notmodified" ) {
4668 - // See if a selector was specified
4669 - self.html( selector ?
4670 - // Create a dummy div to hold the results
4671 - jQuery("<div />")
4672 - // inject the contents of the document in, removing the scripts
4673 - // to avoid any 'Permission Denied' errors in IE
4674 - .append(res.responseText.replace(rscript, ""))
4675 -
4676 - // Locate the specified elements
4677 - .find(selector) :
4678 -
4679 - // If not, just inject the full result
4680 - res.responseText );
4681 - }
4682 -
4683 - if ( callback ) {
4684 - self.each( callback, [res.responseText, status, res] );
4685 - }
4686 - }
4687 - });
4688 -
4689 - return this;
4690 - },
4691 -
4692 - serialize: function() {
4693 - return jQuery.param(this.serializeArray());
4694 - },
4695 - serializeArray: function() {
4696 - return this.map(function() {
4697 - return this.elements ? jQuery.makeArray(this.elements) : this;
4698 - })
4699 - .filter(function() {
4700 - return this.name && !this.disabled &&
4701 - (this.checked || rselectTextarea.test(this.nodeName) ||
4702 - rinput.test(this.type));
4703 - })
4704 - .map(function( i, elem ) {
4705 - var val = jQuery(this).val();
4706 -
4707 - return val == null ?
4708 - null :
4709 - jQuery.isArray(val) ?
4710 - jQuery.map( val, function( val, i ) {
4711 - return { name: elem.name, value: val };
4712 - }) :
4713 - { name: elem.name, value: val };
4714 - }).get();
4715 - }
4716 -});
4717 -
4718 -// Attach a bunch of functions for handling common AJAX events
4719 -jQuery.each( "ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), function( i, o ) {
4720 - jQuery.fn[o] = function( f ) {
4721 - return this.bind(o, f);
4722 - };
4723 -});
4724 -
4725 -jQuery.extend({
4726 -
4727 - get: function( url, data, callback, type ) {
4728 - // shift arguments if data argument was omited
4729 - if ( jQuery.isFunction( data ) ) {
4730 - type = type || callback;
4731 - callback = data;
4732 - data = null;
4733 - }
4734 -
4735 - return jQuery.ajax({
4736 - type: "GET",
4737 - url: url,
4738 - data: data,
4739 - success: callback,
4740 - dataType: type
4741 - });
4742 - },
4743 -
4744 - getScript: function( url, callback ) {
4745 - return jQuery.get(url, null, callback, "script");
4746 - },
4747 -
4748 - getJSON: function( url, data, callback ) {
4749 - return jQuery.get(url, data, callback, "json");
4750 - },
4751 -
4752 - post: function( url, data, callback, type ) {
4753 - // shift arguments if data argument was omited
4754 - if ( jQuery.isFunction( data ) ) {
4755 - type = type || callback;
4756 - callback = data;
4757 - data = {};
4758 - }
4759 -
4760 - return jQuery.ajax({
4761 - type: "POST",
4762 - url: url,
4763 - data: data,
4764 - success: callback,
4765 - dataType: type
4766 - });
4767 - },
4768 -
4769 - ajaxSetup: function( settings ) {
4770 - jQuery.extend( jQuery.ajaxSettings, settings );
4771 - },
4772 -
4773 - ajaxSettings: {
4774 - url: location.href,
4775 - global: true,
4776 - type: "GET",
4777 - contentType: "application/x-www-form-urlencoded",
4778 - processData: true,
4779 - async: true,
4780 - /*
4781 - timeout: 0,
4782 - data: null,
4783 - username: null,
4784 - password: null,
4785 - traditional: false,
4786 - */
4787 - // Create the request object; Microsoft failed to properly
4788 - // implement the XMLHttpRequest in IE7 (can't request local files),
4789 - // so we use the ActiveXObject when it is available
4790 - // This function can be overriden by calling jQuery.ajaxSetup
4791 - xhr: window.XMLHttpRequest && (window.location.protocol !== "file:" || !window.ActiveXObject) ?
4792 - function() {
4793 - return new window.XMLHttpRequest();
4794 - } :
4795 - function() {
4796 - try {
4797 - return new window.ActiveXObject("Microsoft.XMLHTTP");
4798 - } catch(e) {}
4799 - },
4800 - accepts: {
4801 - xml: "application/xml, text/xml",
4802 - html: "text/html",
4803 - script: "text/javascript, application/javascript",
4804 - json: "application/json, text/javascript",
4805 - text: "text/plain",
4806 - _default: "*/*"
4807 - }
4808 - },
4809 -
4810 - // Last-Modified header cache for next request
4811 - lastModified: {},
4812 - etag: {},
4813 -
4814 - ajax: function( origSettings ) {
4815 - var s = jQuery.extend(true, {}, jQuery.ajaxSettings, origSettings);
4816 -
4817 - var jsonp, status, data,
4818 - callbackContext = origSettings && origSettings.context || s,
4819 - type = s.type.toUpperCase();
4820 -
4821 - // convert data if not already a string
4822 - if ( s.data && s.processData && typeof s.data !== "string" ) {
4823 - s.data = jQuery.param( s.data, s.traditional );
4824 - }
4825 -
4826 - // Handle JSONP Parameter Callbacks
4827 - if ( s.dataType === "jsonp" ) {
4828 - if ( type === "GET" ) {
4829 - if ( !jsre.test( s.url ) ) {
4830 - s.url += (rquery.test( s.url ) ? "&" : "?") + (s.jsonp || "callback") + "=?";
4831 - }
4832 - } else if ( !s.data || !jsre.test(s.data) ) {
4833 - s.data = (s.data ? s.data + "&" : "") + (s.jsonp || "callback") + "=?";
4834 - }
4835 - s.dataType = "json";
4836 - }
4837 -
4838 - // Build temporary JSONP function
4839 - if ( s.dataType === "json" && (s.data && jsre.test(s.data) || jsre.test(s.url)) ) {
4840 - jsonp = s.jsonpCallback || ("jsonp" + jsc++);
4841 -
4842 - // Replace the =? sequence both in the query string and the data
4843 - if ( s.data ) {
4844 - s.data = (s.data + "").replace(jsre, "=" + jsonp + "$1");
4845 - }
4846 -
4847 - s.url = s.url.replace(jsre, "=" + jsonp + "$1");
4848 -
4849 - // We need to make sure
4850 - // that a JSONP style response is executed properly
4851 - s.dataType = "script";
4852 -
4853 - // Handle JSONP-style loading
4854 - window[ jsonp ] = window[ jsonp ] || function( tmp ) {
4855 - data = tmp;
4856 - success();
4857 - complete();
4858 - // Garbage collect
4859 - window[ jsonp ] = undefined;
4860 -
4861 - try {
4862 - delete window[ jsonp ];
4863 - } catch(e) {}
4864 -
4865 - if ( head ) {
4866 - head.removeChild( script );
4867 - }
4868 - };
4869 - }
4870 -
4871 - if ( s.dataType === "script" && s.cache === null ) {
4872 - s.cache = false;
4873 - }
4874 -
4875 - if ( s.cache === false && type === "GET" ) {
4876 - var ts = now();
4877 -
4878 - // try replacing _= if it is there
4879 - var ret = s.url.replace(rts, "$1_=" + ts + "$2");
4880 -
4881 - // if nothing was replaced, add timestamp to the end
4882 - s.url = ret + ((ret === s.url) ? (rquery.test(s.url) ? "&" : "?") + "_=" + ts : "");
4883 - }
4884 -
4885 - // If data is available, append data to url for get requests
4886 - if ( s.data && type === "GET" ) {
4887 - s.url += (rquery.test(s.url) ? "&" : "?") + s.data;
4888 - }
4889 -
4890 - // Watch for a new set of requests
4891 - if ( s.global && ! jQuery.active++ ) {
4892 - jQuery.event.trigger( "ajaxStart" );
4893 - }
4894 -
4895 - // Matches an absolute URL, and saves the domain
4896 - var parts = rurl.exec( s.url ),
4897 - remote = parts && (parts[1] && parts[1] !== location.protocol || parts[2] !== location.host);
4898 -
4899 - // If we're requesting a remote document
4900 - // and trying to load JSON or Script with a GET
4901 - if ( s.dataType === "script" && type === "GET" && remote ) {
4902 - var head = document.getElementsByTagName("head")[0] || document.documentElement;
4903 - var script = document.createElement("script");
4904 - script.src = s.url;
4905 - if ( s.scriptCharset ) {
4906 - script.charset = s.scriptCharset;
4907 - }
4908 -
4909 - // Handle Script loading
4910 - if ( !jsonp ) {
4911 - var done = false;
4912 -
4913 - // Attach handlers for all browsers
4914 - script.onload = script.onreadystatechange = function() {
4915 - if ( !done && (!this.readyState ||
4916 - this.readyState === "loaded" || this.readyState === "complete") ) {
4917 - done = true;
4918 - success();
4919 - complete();
4920 -
4921 - // Handle memory leak in IE
4922 - script.onload = script.onreadystatechange = null;
4923 - if ( head && script.parentNode ) {
4924 - head.removeChild( script );
4925 - }
4926 - }
4927 - };
4928 - }
4929 -
4930 - // Use insertBefore instead of appendChild to circumvent an IE6 bug.
4931 - // This arises when a base node is used (#2709 and #4378).
4932 - head.insertBefore( script, head.firstChild );
4933 -
4934 - // We handle everything using the script element injection
4935 - return undefined;
4936 - }
4937 -
4938 - var requestDone = false;
4939 -
4940 - // Create the request object
4941 - var xhr = s.xhr();
4942 -
4943 - if ( !xhr ) {
4944 - return;
4945 - }
4946 -
4947 - // Open the socket
4948 - // Passing null username, generates a login popup on Opera (#2865)
4949 - if ( s.username ) {
4950 - xhr.open(type, s.url, s.async, s.username, s.password);
4951 - } else {
4952 - xhr.open(type, s.url, s.async);
4953 - }
4954 -
4955 - // Need an extra try/catch for cross domain requests in Firefox 3
4956 - try {
4957 - // Set the correct header, if data is being sent
4958 - if ( s.data || origSettings && origSettings.contentType ) {
4959 - xhr.setRequestHeader("Content-Type", s.contentType);
4960 - }
4961 -
4962 - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
4963 - if ( s.ifModified ) {
4964 - if ( jQuery.lastModified[s.url] ) {
4965 - xhr.setRequestHeader("If-Modified-Since", jQuery.lastModified[s.url]);
4966 - }
4967 -
4968 - if ( jQuery.etag[s.url] ) {
4969 - xhr.setRequestHeader("If-None-Match", jQuery.etag[s.url]);
4970 - }
4971 - }
4972 -
4973 - // Set header so the called script knows that it's an XMLHttpRequest
4974 - // Only send the header if it's not a remote XHR
4975 - if ( !remote ) {
4976 - xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
4977 - }
4978 -
4979 - // Set the Accepts header for the server, depending on the dataType
4980 - xhr.setRequestHeader("Accept", s.dataType && s.accepts[ s.dataType ] ?
4981 - s.accepts[ s.dataType ] + ", */*" :
4982 - s.accepts._default );
4983 - } catch(e) {}
4984 -
4985 - // Allow custom headers/mimetypes and early abort
4986 - if ( s.beforeSend && s.beforeSend.call(callbackContext, xhr, s) === false ) {
4987 - // Handle the global AJAX counter
4988 - if ( s.global && ! --jQuery.active ) {
4989 - jQuery.event.trigger( "ajaxStop" );
4990 - }
4991 -
4992 - // close opended socket
4993 - xhr.abort();
4994 - return false;
4995 - }
4996 -
4997 - if ( s.global ) {
4998 - trigger("ajaxSend", [xhr, s]);
4999 - }
5000 -
5001 - // Wait for a response to come back
5002 - var onreadystatechange = xhr.onreadystatechange = function( isTimeout ) {
5003 - // The request was aborted
5004 - if ( !xhr || xhr.readyState === 0 || isTimeout === "abort" ) {
5005 - // Opera doesn't call onreadystatechange before this point
5006 - // so we simulate the call
5007 - if ( !requestDone ) {
5008 - complete();
5009 - }
5010 -
5011 - requestDone = true;
5012 - if ( xhr ) {
5013 - xhr.onreadystatechange = jQuery.noop;
5014 - }
5015 -
5016 - // The transfer is complete and the data is available, or the request timed out
5017 - } else if ( !requestDone && xhr && (xhr.readyState === 4 || isTimeout === "timeout") ) {
5018 - requestDone = true;
5019 - xhr.onreadystatechange = jQuery.noop;
5020 -
5021 - status = isTimeout === "timeout" ?
5022 - "timeout" :
5023 - !jQuery.httpSuccess( xhr ) ?
5024 - "error" :
5025 - s.ifModified && jQuery.httpNotModified( xhr, s.url ) ?
5026 - "notmodified" :
5027 - "success";
5028 -
5029 - var errMsg;
5030 -
5031 - if ( status === "success" ) {
5032 - // Watch for, and catch, XML document parse errors
5033 - try {
5034 - // process the data (runs the xml through httpData regardless of callback)
5035 - data = jQuery.httpData( xhr, s.dataType, s );
5036 - } catch(err) {
5037 - status = "parsererror";
5038 - errMsg = err;
5039 - }
5040 - }
5041 -
5042 - // Make sure that the request was successful or notmodified
5043 - if ( status === "success" || status === "notmodified" ) {
5044 - // JSONP handles its own success callback
5045 - if ( !jsonp ) {
5046 - success();
5047 - }
5048 - } else {
5049 - jQuery.handleError(s, xhr, status, errMsg);
5050 - }
5051 -
5052 - // Fire the complete handlers
5053 - complete();
5054 -
5055 - if ( isTimeout === "timeout" ) {
5056 - xhr.abort();
5057 - }
5058 -
5059 - // Stop memory leaks
5060 - if ( s.async ) {
5061 - xhr = null;
5062 - }
5063 - }
5064 - };
5065 -
5066 - // Override the abort handler, if we can (IE doesn't allow it, but that's OK)
5067 - // Opera doesn't fire onreadystatechange at all on abort
5068 - try {
5069 - var oldAbort = xhr.abort;
5070 - xhr.abort = function() {
5071 - if ( xhr ) {
5072 - oldAbort.call( xhr );
5073 - }
5074 -
5075 - onreadystatechange( "abort" );
5076 - };
5077 - } catch(e) { }
5078 -
5079 - // Timeout checker
5080 - if ( s.async && s.timeout > 0 ) {
5081 - setTimeout(function() {
5082 - // Check to see if the request is still happening
5083 - if ( xhr && !requestDone ) {
5084 - onreadystatechange( "timeout" );
5085 - }
5086 - }, s.timeout);
5087 - }
5088 -
5089 - // Send the data
5090 - try {
5091 - xhr.send( type === "POST" || type === "PUT" || type === "DELETE" ? s.data : null );
5092 - } catch(e) {
5093 - jQuery.handleError(s, xhr, null, e);
5094 - // Fire the complete handlers
5095 - complete();
5096 - }
5097 -
5098 - // firefox 1.5 doesn't fire statechange for sync requests
5099 - if ( !s.async ) {
5100 - onreadystatechange();
5101 - }
5102 -
5103 - function success() {
5104 - // If a local callback was specified, fire it and pass it the data
5105 - if ( s.success ) {
5106 - s.success.call( callbackContext, data, status, xhr );
5107 - }
5108 -
5109 - // Fire the global callback
5110 - if ( s.global ) {
5111 - trigger( "ajaxSuccess", [xhr, s] );
5112 - }
5113 - }
5114 -
5115 - function complete() {
5116 - // Process result
5117 - if ( s.complete ) {
5118 - s.complete.call( callbackContext, xhr, status);
5119 - }
5120 -
5121 - // The request was completed
5122 - if ( s.global ) {
5123 - trigger( "ajaxComplete", [xhr, s] );
5124 - }
5125 -
5126 - // Handle the global AJAX counter
5127 - if ( s.global && ! --jQuery.active ) {
5128 - jQuery.event.trigger( "ajaxStop" );
5129 - }
5130 - }
5131 -
5132 - function trigger(type, args) {
5133 - (s.context ? jQuery(s.context) : jQuery.event).trigger(type, args);
5134 - }
5135 -
5136 - // return XMLHttpRequest to allow aborting the request etc.
5137 - return xhr;
5138 - },
5139 -
5140 - handleError: function( s, xhr, status, e ) {
5141 - // If a local callback was specified, fire it
5142 - if ( s.error ) {
5143 - s.error.call( s.context || s, xhr, status, e );
5144 - }
5145 -
5146 - // Fire the global callback
5147 - if ( s.global ) {
5148 - (s.context ? jQuery(s.context) : jQuery.event).trigger( "ajaxError", [xhr, s, e] );
5149 - }
5150 - },
5151 -
5152 - // Counter for holding the number of active queries
5153 - active: 0,
5154 -
5155 - // Determines if an XMLHttpRequest was successful or not
5156 - httpSuccess: function( xhr ) {
5157 - try {
5158 - // IE error sometimes returns 1223 when it should be 204 so treat it as success, see #1450
5159 - return !xhr.status && location.protocol === "file:" ||
5160 - // Opera returns 0 when status is 304
5161 - ( xhr.status >= 200 && xhr.status < 300 ) ||
5162 - xhr.status === 304 || xhr.status === 1223 || xhr.status === 0;
5163 - } catch(e) {}
5164 -
5165 - return false;
5166 - },
5167 -
5168 - // Determines if an XMLHttpRequest returns NotModified
5169 - httpNotModified: function( xhr, url ) {
5170 - var lastModified = xhr.getResponseHeader("Last-Modified"),
5171 - etag = xhr.getResponseHeader("Etag");
5172 -
5173 - if ( lastModified ) {
5174 - jQuery.lastModified[url] = lastModified;
5175 - }
5176 -
5177 - if ( etag ) {
5178 - jQuery.etag[url] = etag;
5179 - }
5180 -
5181 - // Opera returns 0 when status is 304
5182 - return xhr.status === 304 || xhr.status === 0;
5183 - },
5184 -
5185 - httpData: function( xhr, type, s ) {
5186 - var ct = xhr.getResponseHeader("content-type") || "",
5187 - xml = type === "xml" || !type && ct.indexOf("xml") >= 0,
5188 - data = xml ? xhr.responseXML : xhr.responseText;
5189 -
5190 - if ( xml && data.documentElement.nodeName === "parsererror" ) {
5191 - jQuery.error( "parsererror" );
5192 - }
5193 -
5194 - // Allow a pre-filtering function to sanitize the response
5195 - // s is checked to keep backwards compatibility
5196 - if ( s && s.dataFilter ) {
5197 - data = s.dataFilter( data, type );
5198 - }
5199 -
5200 - // The filter can actually parse the response
5201 - if ( typeof data === "string" ) {
5202 - // Get the JavaScript object, if JSON is used.
5203 - if ( type === "json" || !type && ct.indexOf("json") >= 0 ) {
5204 - data = jQuery.parseJSON( data );
5205 -
5206 - // If the type is "script", eval it in global context
5207 - } else if ( type === "script" || !type && ct.indexOf("javascript") >= 0 ) {
5208 - jQuery.globalEval( data );
5209 - }
5210 - }
5211 -
5212 - return data;
5213 - },
5214 -
5215 - // Serialize an array of form elements or a set of
5216 - // key/values into a query string
5217 - param: function( a, traditional ) {
5218 - var s = [];
5219 -
5220 - // Set traditional to true for jQuery <= 1.3.2 behavior.
5221 - if ( traditional === undefined ) {
5222 - traditional = jQuery.ajaxSettings.traditional;
5223 - }
5224 -
5225 - // If an array was passed in, assume that it is an array of form elements.
5226 - if ( jQuery.isArray(a) || a.jquery ) {
5227 - // Serialize the form elements
5228 - jQuery.each( a, function() {
5229 - add( this.name, this.value );
5230 - });
5231 -
5232 - } else {
5233 - // If traditional, encode the "old" way (the way 1.3.2 or older
5234 - // did it), otherwise encode params recursively.
5235 - for ( var prefix in a ) {
5236 - buildParams( prefix, a[prefix] );
5237 - }
5238 - }
5239 -
5240 - // Return the resulting serialization
5241 - return s.join("&").replace(r20, "+");
5242 -
5243 - function buildParams( prefix, obj ) {
5244 - if ( jQuery.isArray(obj) ) {
5245 - // Serialize array item.
5246 - jQuery.each( obj, function( i, v ) {
5247 - if ( traditional ) {
5248 - // Treat each array item as a scalar.
5249 - add( prefix, v );
5250 - } else {
5251 - // If array item is non-scalar (array or object), encode its
5252 - // numeric index to resolve deserialization ambiguity issues.
5253 - // Note that rack (as of 1.0.0) can't currently deserialize
5254 - // nested arrays properly, and attempting to do so may cause
5255 - // a server error. Possible fixes are to modify rack's
5256 - // deserialization algorithm or to provide an option or flag
5257 - // to force array serialization to be shallow.
5258 - buildParams( prefix + "[" + ( typeof v === "object" || jQuery.isArray(v) ? i : "" ) + "]", v );
5259 - }
5260 - });
5261 -
5262 - } else if ( !traditional && obj != null && typeof obj === "object" ) {
5263 - // Serialize object item.
5264 - jQuery.each( obj, function( k, v ) {
5265 - buildParams( prefix + "[" + k + "]", v );
5266 - });
5267 -
5268 - } else {
5269 - // Serialize scalar item.
5270 - add( prefix, obj );
5271 - }
5272 - }
5273 -
5274 - function add( key, value ) {
5275 - // If value is a function, invoke it and return its value
5276 - value = jQuery.isFunction(value) ? value() : value;
5277 - s[ s.length ] = encodeURIComponent(key) + "=" + encodeURIComponent(value);
5278 - }
5279 - }
5280 -});
5281 -var elemdisplay = {},
5282 - rfxtypes = /toggle|show|hide/,
5283 - rfxnum = /^([+-]=)?([\d+-.]+)(.*)$/,
5284 - timerId,
5285 - fxAttrs = [
5286 - // height animations
5287 - [ "height", "marginTop", "marginBottom", "paddingTop", "paddingBottom" ],
5288 - // width animations
5289 - [ "width", "marginLeft", "marginRight", "paddingLeft", "paddingRight" ],
5290 - // opacity animations
5291 - [ "opacity" ]
5292 - ];
5293 -
5294 -jQuery.fn.extend({
5295 - show: function( speed, callback ) {
5296 - if ( speed || speed === 0) {
5297 - return this.animate( genFx("show", 3), speed, callback);
5298 -
5299 - } else {
5300 - for ( var i = 0, l = this.length; i < l; i++ ) {
5301 - var old = jQuery.data(this[i], "olddisplay");
5302 -
5303 - this[i].style.display = old || "";
5304 -
5305 - if ( jQuery.css(this[i], "display") === "none" ) {
5306 - var nodeName = this[i].nodeName, display;
5307 -
5308 - if ( elemdisplay[ nodeName ] ) {
5309 - display = elemdisplay[ nodeName ];
5310 -
5311 - } else {
5312 - var elem = jQuery("<" + nodeName + " />").appendTo("body");
5313 -
5314 - display = elem.css("display");
5315 -
5316 - if ( display === "none" ) {
5317 - display = "block";
5318 - }
5319 -
5320 - elem.remove();
5321 -
5322 - elemdisplay[ nodeName ] = display;
5323 - }
5324 -
5325 - jQuery.data(this[i], "olddisplay", display);
5326 - }
5327 - }
5328 -
5329 - // Set the display of the elements in a second loop
5330 - // to avoid the constant reflow
5331 - for ( var j = 0, k = this.length; j < k; j++ ) {
5332 - this[j].style.display = jQuery.data(this[j], "olddisplay") || "";
5333 - }
5334 -
5335 - return this;
5336 - }
5337 - },
5338 -
5339 - hide: function( speed, callback ) {
5340 - if ( speed || speed === 0 ) {
5341 - return this.animate( genFx("hide", 3), speed, callback);
5342 -
5343 - } else {
5344 - for ( var i = 0, l = this.length; i < l; i++ ) {
5345 - var old = jQuery.data(this[i], "olddisplay");
5346 - if ( !old && old !== "none" ) {
5347 - jQuery.data(this[i], "olddisplay", jQuery.css(this[i], "display"));
5348 - }
5349 - }
5350 -
5351 - // Set the display of the elements in a second loop
5352 - // to avoid the constant reflow
5353 - for ( var j = 0, k = this.length; j < k; j++ ) {
5354 - this[j].style.display = "none";
5355 - }
5356 -
5357 - return this;
5358 - }
5359 - },
5360 -
5361 - // Save the old toggle function
5362 - _toggle: jQuery.fn.toggle,
5363 -
5364 - toggle: function( fn, fn2 ) {
5365 - var bool = typeof fn === "boolean";
5366 -
5367 - if ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {
5368 - this._toggle.apply( this, arguments );
5369 -
5370 - } else if ( fn == null || bool ) {
5371 - this.each(function() {
5372 - var state = bool ? fn : jQuery(this).is(":hidden");
5373 - jQuery(this)[ state ? "show" : "hide" ]();
5374 - });
5375 -
5376 - } else {
5377 - this.animate(genFx("toggle", 3), fn, fn2);
5378 - }
5379 -
5380 - return this;
5381 - },
5382 -
5383 - fadeTo: function( speed, to, callback ) {
5384 - return this.filter(":hidden").css("opacity", 0).show().end()
5385 - .animate({opacity: to}, speed, callback);
5386 - },
5387 -
5388 - animate: function( prop, speed, easing, callback ) {
5389 - var optall = jQuery.speed(speed, easing, callback);
5390 -
5391 - if ( jQuery.isEmptyObject( prop ) ) {
5392 - return this.each( optall.complete );
5393 - }
5394 -
5395 - return this[ optall.queue === false ? "each" : "queue" ](function() {
5396 - var opt = jQuery.extend({}, optall), p,
5397 - hidden = this.nodeType === 1 && jQuery(this).is(":hidden"),
5398 - self = this;
5399 -
5400 - for ( p in prop ) {
5401 - var name = p.replace(rdashAlpha, fcamelCase);
5402 -
5403 - if ( p !== name ) {
5404 - prop[ name ] = prop[ p ];
5405 - delete prop[ p ];
5406 - p = name;
5407 - }
5408 -
5409 - if ( prop[p] === "hide" && hidden || prop[p] === "show" && !hidden ) {
5410 - return opt.complete.call(this);
5411 - }
5412 -
5413 - if ( ( p === "height" || p === "width" ) && this.style ) {
5414 - // Store display property
5415 - opt.display = jQuery.css(this, "display");
5416 -
5417 - // Make sure that nothing sneaks out
5418 - opt.overflow = this.style.overflow;
5419 - }
5420 -
5421 - if ( jQuery.isArray( prop[p] ) ) {
5422 - // Create (if needed) and add to specialEasing
5423 - (opt.specialEasing = opt.specialEasing || {})[p] = prop[p][1];
5424 - prop[p] = prop[p][0];
5425 - }
5426 - }
5427 -
5428 - if ( opt.overflow != null ) {
5429 - this.style.overflow = "hidden";
5430 - }
5431 -
5432 - opt.curAnim = jQuery.extend({}, prop);
5433 -
5434 - jQuery.each( prop, function( name, val ) {
5435 - var e = new jQuery.fx( self, opt, name );
5436 -
5437 - if ( rfxtypes.test(val) ) {
5438 - e[ val === "toggle" ? hidden ? "show" : "hide" : val ]( prop );
5439 -
5440 - } else {
5441 - var parts = rfxnum.exec(val),
5442 - start = e.cur(true) || 0;
5443 -
5444 - if ( parts ) {
5445 - var end = parseFloat( parts[2] ),
5446 - unit = parts[3] || "px";
5447 -
5448 - // We need to compute starting value
5449 - if ( unit !== "px" ) {
5450 - self.style[ name ] = (end || 1) + unit;
5451 - start = ((end || 1) / e.cur(true)) * start;
5452 - self.style[ name ] = start + unit;
5453 - }
5454 -
5455 - // If a +=/-= token was provided, we're doing a relative animation
5456 - if ( parts[1] ) {
5457 - end = ((parts[1] === "-=" ? -1 : 1) * end) + start;
5458 - }
5459 -
5460 - e.custom( start, end, unit );
5461 -
5462 - } else {
5463 - e.custom( start, val, "" );
5464 - }
5465 - }
5466 - });
5467 -
5468 - // For JS strict compliance
5469 - return true;
5470 - });
5471 - },
5472 -
5473 - stop: function( clearQueue, gotoEnd ) {
5474 - var timers = jQuery.timers;
5475 -
5476 - if ( clearQueue ) {
5477 - this.queue([]);
5478 - }
5479 -
5480 - this.each(function() {
5481 - // go in reverse order so anything added to the queue during the loop is ignored
5482 - for ( var i = timers.length - 1; i >= 0; i-- ) {
5483 - if ( timers[i].elem === this ) {
5484 - if (gotoEnd) {
5485 - // force the next step to be the last
5486 - timers[i](true);
5487 - }
5488 -
5489 - timers.splice(i, 1);
5490 - }
5491 - }
5492 - });
5493 -
5494 - // start the next in the queue if the last step wasn't forced
5495 - if ( !gotoEnd ) {
5496 - this.dequeue();
5497 - }
5498 -
5499 - return this;
5500 - }
5501 -
5502 -});
5503 -
5504 -// Generate shortcuts for custom animations
5505 -jQuery.each({
5506 - slideDown: genFx("show", 1),
5507 - slideUp: genFx("hide", 1),
5508 - slideToggle: genFx("toggle", 1),
5509 - fadeIn: { opacity: "show" },
5510 - fadeOut: { opacity: "hide" }
5511 -}, function( name, props ) {
5512 - jQuery.fn[ name ] = function( speed, callback ) {
5513 - return this.animate( props, speed, callback );
5514 - };
5515 -});
5516 -
5517 -jQuery.extend({
5518 - speed: function( speed, easing, fn ) {
5519 - var opt = speed && typeof speed === "object" ? speed : {
5520 - complete: fn || !fn && easing ||
5521 - jQuery.isFunction( speed ) && speed,
5522 - duration: speed,
5523 - easing: fn && easing || easing && !jQuery.isFunction(easing) && easing
5524 - };
5525 -
5526 - opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
5527 - jQuery.fx.speeds[opt.duration] || jQuery.fx.speeds._default;
5528 -
5529 - // Queueing
5530 - opt.old = opt.complete;
5531 - opt.complete = function() {
5532 - if ( opt.queue !== false ) {
5533 - jQuery(this).dequeue();
5534 - }
5535 - if ( jQuery.isFunction( opt.old ) ) {
5536 - opt.old.call( this );
5537 - }
5538 - };
5539 -
5540 - return opt;
5541 - },
5542 -
5543 - easing: {
5544 - linear: function( p, n, firstNum, diff ) {
5545 - return firstNum + diff * p;
5546 - },
5547 - swing: function( p, n, firstNum, diff ) {
5548 - return ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;
5549 - }
5550 - },
5551 -
5552 - timers: [],
5553 -
5554 - fx: function( elem, options, prop ) {
5555 - this.options = options;
5556 - this.elem = elem;
5557 - this.prop = prop;
5558 -
5559 - if ( !options.orig ) {
5560 - options.orig = {};
5561 - }
5562 - }
5563 -
5564 -});
5565 -
5566 -jQuery.fx.prototype = {
5567 - // Simple function for setting a style value
5568 - update: function() {
5569 - if ( this.options.step ) {
5570 - this.options.step.call( this.elem, this.now, this );
5571 - }
5572 -
5573 - (jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );
5574 -
5575 - // Set display property to block for height/width animations
5576 - if ( ( this.prop === "height" || this.prop === "width" ) && this.elem.style ) {
5577 - this.elem.style.display = "block";
5578 - }
5579 - },
5580 -
5581 - // Get the current size
5582 - cur: function( force ) {
5583 - if ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) ) {
5584 - return this.elem[ this.prop ];
5585 - }
5586 -
5587 - var r = parseFloat(jQuery.css(this.elem, this.prop, force));
5588 - return r && r > -10000 ? r : parseFloat(jQuery.curCSS(this.elem, this.prop)) || 0;
5589 - },
5590 -
5591 - // Start an animation from one number to another
5592 - custom: function( from, to, unit ) {
5593 - this.startTime = now();
5594 - this.start = from;
5595 - this.end = to;
5596 - this.unit = unit || this.unit || "px";
5597 - this.now = this.start;
5598 - this.pos = this.state = 0;
5599 -
5600 - var self = this;
5601 - function t( gotoEnd ) {
5602 - return self.step(gotoEnd);
5603 - }
5604 -
5605 - t.elem = this.elem;
5606 -
5607 - if ( t() && jQuery.timers.push(t) && !timerId ) {
5608 - timerId = setInterval(jQuery.fx.tick, 13);
5609 - }
5610 - },
5611 -
5612 - // Simple 'show' function
5613 - show: function() {
5614 - // Remember where we started, so that we can go back to it later
5615 - this.options.orig[this.prop] = jQuery.style( this.elem, this.prop );
5616 - this.options.show = true;
5617 -
5618 - // Begin the animation
5619 - // Make sure that we start at a small width/height to avoid any
5620 - // flash of content
5621 - this.custom(this.prop === "width" || this.prop === "height" ? 1 : 0, this.cur());
5622 -
5623 - // Start by showing the element
5624 - jQuery( this.elem ).show();
5625 - },
5626 -
5627 - // Simple 'hide' function
5628 - hide: function() {
5629 - // Remember where we started, so that we can go back to it later
5630 - this.options.orig[this.prop] = jQuery.style( this.elem, this.prop );
5631 - this.options.hide = true;
5632 -
5633 - // Begin the animation
5634 - this.custom(this.cur(), 0);
5635 - },
5636 -
5637 - // Each step of an animation
5638 - step: function( gotoEnd ) {
5639 - var t = now(), done = true;
5640 -
5641 - if ( gotoEnd || t >= this.options.duration + this.startTime ) {
5642 - this.now = this.end;
5643 - this.pos = this.state = 1;
5644 - this.update();
5645 -
5646 - this.options.curAnim[ this.prop ] = true;
5647 -
5648 - for ( var i in this.options.curAnim ) {
5649 - if ( this.options.curAnim[i] !== true ) {
5650 - done = false;
5651 - }
5652 - }
5653 -
5654 - if ( done ) {
5655 - if ( this.options.display != null ) {
5656 - // Reset the overflow
5657 - this.elem.style.overflow = this.options.overflow;
5658 -
5659 - // Reset the display
5660 - var old = jQuery.data(this.elem, "olddisplay");
5661 - this.elem.style.display = old ? old : this.options.display;
5662 -
5663 - if ( jQuery.css(this.elem, "display") === "none" ) {
5664 - this.elem.style.display = "block";
5665 - }
5666 - }
5667 -
5668 - // Hide the element if the "hide" operation was done
5669 - if ( this.options.hide ) {
5670 - jQuery(this.elem).hide();
5671 - }
5672 -
5673 - // Reset the properties, if the item has been hidden or shown
5674 - if ( this.options.hide || this.options.show ) {
5675 - for ( var p in this.options.curAnim ) {
5676 - jQuery.style(this.elem, p, this.options.orig[p]);
5677 - }
5678 - }
5679 -
5680 - // Execute the complete function
5681 - this.options.complete.call( this.elem );
5682 - }
5683 -
5684 - return false;
5685 -
5686 - } else {
5687 - var n = t - this.startTime;
5688 - this.state = n / this.options.duration;
5689 -
5690 - // Perform the easing function, defaults to swing
5691 - var specialEasing = this.options.specialEasing && this.options.specialEasing[this.prop];
5692 - var defaultEasing = this.options.easing || (jQuery.easing.swing ? "swing" : "linear");
5693 - this.pos = jQuery.easing[specialEasing || defaultEasing](this.state, n, 0, 1, this.options.duration);
5694 - this.now = this.start + ((this.end - this.start) * this.pos);
5695 -
5696 - // Perform the next step of the animation
5697 - this.update();
5698 - }
5699 -
5700 - return true;
5701 - }
5702 -};
5703 -
5704 -jQuery.extend( jQuery.fx, {
5705 - tick: function() {
5706 - var timers = jQuery.timers;
5707 -
5708 - for ( var i = 0; i < timers.length; i++ ) {
5709 - if ( !timers[i]() ) {
5710 - timers.splice(i--, 1);
5711 - }
5712 - }
5713 -
5714 - if ( !timers.length ) {
5715 - jQuery.fx.stop();
5716 - }
5717 - },
5718 -
5719 - stop: function() {
5720 - clearInterval( timerId );
5721 - timerId = null;
5722 - },
5723 -
5724 - speeds: {
5725 - slow: 600,
5726 - fast: 200,
5727 - // Default speed
5728 - _default: 400
5729 - },
5730 -
5731 - step: {
5732 - opacity: function( fx ) {
5733 - jQuery.style(fx.elem, "opacity", fx.now);
5734 - },
5735 -
5736 - _default: function( fx ) {
5737 - if ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {
5738 - fx.elem.style[ fx.prop ] = (fx.prop === "width" || fx.prop === "height" ? Math.max(0, fx.now) : fx.now) + fx.unit;
5739 - } else {
5740 - fx.elem[ fx.prop ] = fx.now;
5741 - }
5742 - }
5743 - }
5744 -});
5745 -
5746 -if ( jQuery.expr && jQuery.expr.filters ) {
5747 - jQuery.expr.filters.animated = function( elem ) {
5748 - return jQuery.grep(jQuery.timers, function( fn ) {
5749 - return elem === fn.elem;
5750 - }).length;
5751 - };
5752 -}
5753 -
5754 -function genFx( type, num ) {
5755 - var obj = {};
5756 -
5757 - jQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function() {
5758 - obj[ this ] = type;
5759 - });
5760 -
5761 - return obj;
5762 -}
5763 -if ( "getBoundingClientRect" in document.documentElement ) {
5764 - jQuery.fn.offset = function( options ) {
5765 - var elem = this[0];
5766 -
5767 - if ( options ) {
5768 - return this.each(function( i ) {
5769 - jQuery.offset.setOffset( this, options, i );
5770 - });
5771 - }
5772 -
5773 - if ( !elem || !elem.ownerDocument ) {
5774 - return null;
5775 - }
5776 -
5777 - if ( elem === elem.ownerDocument.body ) {
5778 - return jQuery.offset.bodyOffset( elem );
5779 - }
5780 -
5781 - var box = elem.getBoundingClientRect(), doc = elem.ownerDocument, body = doc.body, docElem = doc.documentElement,
5782 - clientTop = docElem.clientTop || body.clientTop || 0, clientLeft = docElem.clientLeft || body.clientLeft || 0,
5783 - top = box.top + (self.pageYOffset || jQuery.support.boxModel && docElem.scrollTop || body.scrollTop ) - clientTop,
5784 - left = box.left + (self.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft) - clientLeft;
5785 -
5786 - return { top: top, left: left };
5787 - };
5788 -
5789 -} else {
5790 - jQuery.fn.offset = function( options ) {
5791 - var elem = this[0];
5792 -
5793 - if ( options ) {
5794 - return this.each(function( i ) {
5795 - jQuery.offset.setOffset( this, options, i );
5796 - });
5797 - }
5798 -
5799 - if ( !elem || !elem.ownerDocument ) {
5800 - return null;
5801 - }
5802 -
5803 - if ( elem === elem.ownerDocument.body ) {
5804 - return jQuery.offset.bodyOffset( elem );
5805 - }
5806 -
5807 - jQuery.offset.initialize();
5808 -
5809 - var offsetParent = elem.offsetParent, prevOffsetParent = elem,
5810 - doc = elem.ownerDocument, computedStyle, docElem = doc.documentElement,
5811 - body = doc.body, defaultView = doc.defaultView,
5812 - prevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,
5813 - top = elem.offsetTop, left = elem.offsetLeft;
5814 -
5815 - while ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {
5816 - if ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === "fixed" ) {
5817 - break;
5818 - }
5819 -
5820 - computedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;
5821 - top -= elem.scrollTop;
5822 - left -= elem.scrollLeft;
5823 -
5824 - if ( elem === offsetParent ) {
5825 - top += elem.offsetTop;
5826 - left += elem.offsetLeft;
5827 -
5828 - if ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && /^t(able|d|h)$/i.test(elem.nodeName)) ) {
5829 - top += parseFloat( computedStyle.borderTopWidth ) || 0;
5830 - left += parseFloat( computedStyle.borderLeftWidth ) || 0;
5831 - }
5832 -
5833 - prevOffsetParent = offsetParent, offsetParent = elem.offsetParent;
5834 - }
5835 -
5836 - if ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== "visible" ) {
5837 - top += parseFloat( computedStyle.borderTopWidth ) || 0;
5838 - left += parseFloat( computedStyle.borderLeftWidth ) || 0;
5839 - }
5840 -
5841 - prevComputedStyle = computedStyle;
5842 - }
5843 -
5844 - if ( prevComputedStyle.position === "relative" || prevComputedStyle.position === "static" ) {
5845 - top += body.offsetTop;
5846 - left += body.offsetLeft;
5847 - }
5848 -
5849 - if ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === "fixed" ) {
5850 - top += Math.max( docElem.scrollTop, body.scrollTop );
5851 - left += Math.max( docElem.scrollLeft, body.scrollLeft );
5852 - }
5853 -
5854 - return { top: top, left: left };
5855 - };
5856 -}
5857 -
5858 -jQuery.offset = {
5859 - initialize: function() {
5860 - var body = document.body, container = document.createElement("div"), innerDiv, checkDiv, table, td, bodyMarginTop = parseFloat( jQuery.curCSS(body, "marginTop", true) ) || 0,
5861 - html = "<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
5862 -
5863 - jQuery.extend( container.style, { position: "absolute", top: 0, left: 0, margin: 0, border: 0, width: "1px", height: "1px", visibility: "hidden" } );
5864 -
5865 - container.innerHTML = html;
5866 - body.insertBefore( container, body.firstChild );
5867 - innerDiv = container.firstChild;
5868 - checkDiv = innerDiv.firstChild;
5869 - td = innerDiv.nextSibling.firstChild.firstChild;
5870 -
5871 - this.doesNotAddBorder = (checkDiv.offsetTop !== 5);
5872 - this.doesAddBorderForTableAndCells = (td.offsetTop === 5);
5873 -
5874 - checkDiv.style.position = "fixed", checkDiv.style.top = "20px";
5875 - // safari subtracts parent border width here which is 5px
5876 - this.supportsFixedPosition = (checkDiv.offsetTop === 20 || checkDiv.offsetTop === 15);
5877 - checkDiv.style.position = checkDiv.style.top = "";
5878 -
5879 - innerDiv.style.overflow = "hidden", innerDiv.style.position = "relative";
5880 - this.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);
5881 -
5882 - this.doesNotIncludeMarginInBodyOffset = (body.offsetTop !== bodyMarginTop);
5883 -
5884 - body.removeChild( container );
5885 - body = container = innerDiv = checkDiv = table = td = null;
5886 - jQuery.offset.initialize = jQuery.noop;
5887 - },
5888 -
5889 - bodyOffset: function( body ) {
5890 - var top = body.offsetTop, left = body.offsetLeft;
5891 -
5892 - jQuery.offset.initialize();
5893 -
5894 - if ( jQuery.offset.doesNotIncludeMarginInBodyOffset ) {
5895 - top += parseFloat( jQuery.curCSS(body, "marginTop", true) ) || 0;
5896 - left += parseFloat( jQuery.curCSS(body, "marginLeft", true) ) || 0;
5897 - }
5898 -
5899 - return { top: top, left: left };
5900 - },
5901 -
5902 - setOffset: function( elem, options, i ) {
5903 - // set position first, in-case top/left are set even on static elem
5904 - if ( /static/.test( jQuery.curCSS( elem, "position" ) ) ) {
5905 - elem.style.position = "relative";
5906 - }
5907 - var curElem = jQuery( elem ),
5908 - curOffset = curElem.offset(),
5909 - curTop = parseInt( jQuery.curCSS( elem, "top", true ), 10 ) || 0,
5910 - curLeft = parseInt( jQuery.curCSS( elem, "left", true ), 10 ) || 0;
5911 -
5912 - if ( jQuery.isFunction( options ) ) {
5913 - options = options.call( elem, i, curOffset );
5914 - }
5915 -
5916 - var props = {
5917 - top: (options.top - curOffset.top) + curTop,
5918 - left: (options.left - curOffset.left) + curLeft
5919 - };
5920 -
5921 - if ( "using" in options ) {
5922 - options.using.call( elem, props );
5923 - } else {
5924 - curElem.css( props );
5925 - }
5926 - }
5927 -};
5928 -
5929 -
5930 -jQuery.fn.extend({
5931 - position: function() {
5932 - if ( !this[0] ) {
5933 - return null;
5934 - }
5935 -
5936 - var elem = this[0],
5937 -
5938 - // Get *real* offsetParent
5939 - offsetParent = this.offsetParent(),
5940 -
5941 - // Get correct offsets
5942 - offset = this.offset(),
5943 - parentOffset = /^body|html$/i.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();
5944 -
5945 - // Subtract element margins
5946 - // note: when an element has margin: auto the offsetLeft and marginLeft
5947 - // are the same in Safari causing offset.left to incorrectly be 0
5948 - offset.top -= parseFloat( jQuery.curCSS(elem, "marginTop", true) ) || 0;
5949 - offset.left -= parseFloat( jQuery.curCSS(elem, "marginLeft", true) ) || 0;
5950 -
5951 - // Add offsetParent borders
5952 - parentOffset.top += parseFloat( jQuery.curCSS(offsetParent[0], "borderTopWidth", true) ) || 0;
5953 - parentOffset.left += parseFloat( jQuery.curCSS(offsetParent[0], "borderLeftWidth", true) ) || 0;
5954 -
5955 - // Subtract the two offsets
5956 - return {
5957 - top: offset.top - parentOffset.top,
5958 - left: offset.left - parentOffset.left
5959 - };
5960 - },
5961 -
5962 - offsetParent: function() {
5963 - return this.map(function() {
5964 - var offsetParent = this.offsetParent || document.body;
5965 - while ( offsetParent && (!/^body|html$/i.test(offsetParent.nodeName) && jQuery.css(offsetParent, "position") === "static") ) {
5966 - offsetParent = offsetParent.offsetParent;
5967 - }
5968 - return offsetParent;
5969 - });
5970 - }
5971 -});
5972 -
5973 -
5974 -// Create scrollLeft and scrollTop methods
5975 -jQuery.each( ["Left", "Top"], function( i, name ) {
5976 - var method = "scroll" + name;
5977 -
5978 - jQuery.fn[ method ] = function(val) {
5979 - var elem = this[0], win;
5980 -
5981 - if ( !elem ) {
5982 - return null;
5983 - }
5984 -
5985 - if ( val !== undefined ) {
5986 - // Set the scroll offset
5987 - return this.each(function() {
5988 - win = getWindow( this );
5989 -
5990 - if ( win ) {
5991 - win.scrollTo(
5992 - !i ? val : jQuery(win).scrollLeft(),
5993 - i ? val : jQuery(win).scrollTop()
5994 - );
5995 -
5996 - } else {
5997 - this[ method ] = val;
5998 - }
5999 - });
6000 - } else {
6001 - win = getWindow( elem );
6002 -
6003 - // Return the scroll offset
6004 - return win ? ("pageXOffset" in win) ? win[ i ? "pageYOffset" : "pageXOffset" ] :
6005 - jQuery.support.boxModel && win.document.documentElement[ method ] ||
6006 - win.document.body[ method ] :
6007 - elem[ method ];
6008 - }
6009 - };
6010 -});
6011 -
6012 -function getWindow( elem ) {
6013 - return ("scrollTo" in elem && elem.document) ?
6014 - elem :
6015 - elem.nodeType === 9 ?
6016 - elem.defaultView || elem.parentWindow :
6017 - false;
6018 -}
6019 -// Create innerHeight, innerWidth, outerHeight and outerWidth methods
6020 -jQuery.each([ "Height", "Width" ], function( i, name ) {
6021 -
6022 - var type = name.toLowerCase();
6023 -
6024 - // innerHeight and innerWidth
6025 - jQuery.fn["inner" + name] = function() {
6026 - return this[0] ?
6027 - jQuery.css( this[0], type, false, "padding" ) :
6028 - null;
6029 - };
6030 -
6031 - // outerHeight and outerWidth
6032 - jQuery.fn["outer" + name] = function( margin ) {
6033 - return this[0] ?
6034 - jQuery.css( this[0], type, false, margin ? "margin" : "border" ) :
6035 - null;
6036 - };
6037 -
6038 - jQuery.fn[ type ] = function( size ) {
6039 - // Get window width or height
6040 - var elem = this[0];
6041 - if ( !elem ) {
6042 - return size == null ? null : this;
6043 - }
6044 -
6045 - if ( jQuery.isFunction( size ) ) {
6046 - return this.each(function( i ) {
6047 - var self = jQuery( this );
6048 - self[ type ]( size.call( this, i, self[ type ]() ) );
6049 - });
6050 - }
6051 -
6052 - return ("scrollTo" in elem && elem.document) ? // does it walk and quack like a window?
6053 - // Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode
6054 - elem.document.compatMode === "CSS1Compat" && elem.document.documentElement[ "client" + name ] ||
6055 - elem.document.body[ "client" + name ] :
6056 -
6057 - // Get document width or height
6058 - (elem.nodeType === 9) ? // is it a document
6059 - // Either scroll[Width/Height] or offset[Width/Height], whichever is greater
6060 - Math.max(
6061 - elem.documentElement["client" + name],
6062 - elem.body["scroll" + name], elem.documentElement["scroll" + name],
6063 - elem.body["offset" + name], elem.documentElement["offset" + name]
6064 - ) :
6065 -
6066 - // Get or set width or height on the element
6067 - size === undefined ?
6068 - // Get width or height on the element
6069 - jQuery.css( elem, type ) :
6070 -
6071 - // Set the width or height on the element (default to pixels if value is unitless)
6072 - this.css( type, typeof size === "string" ? size : size + "px" );
6073 - };
6074 -
6075 -});
6076 -// Expose jQuery to the global object
6077 -window.jQuery = window.$ = jQuery;
6078 -
6079 -})(window);
Index: branches/MwEmbedStandAlone/tests/jslib/.svn/text-base/expressInstall.swf.svn-base
@@ -1,8 +0,0 @@
2 -CWS3x��SMO�@;�1J���
3 -�=�b��h"�BAH���CU���!�����М{h/��R���z��W:�6$QSՖ�;owf޼�0]x� -������\)��� ��Qp(#}�m�\_��،�� �{� �Cy��!ľ4Aϥ
4 ->��"A�������Hp�?������ط�� `�i�*�z���
5 -
6 -6z��}q�n��>��N���u���(ۀFcm4B$M�1�G� 0�`4eq:����k�6�!�M���%��;�s�x�恇II�<8�G�zQ;���.w��>�]j_H�� nu]7�S��� E_ɖʨ8b��"ܴ�&�¸mu��i�V�j! -N}aE���"H�����AD8�$>��Ui�)�oH&�����`h�$��9���e ��^>���C -��+'(h�kL�̤w {���}�5�j�w�˜�ơ\'[r�ڗ9:*G��h�+�D,�:(Z�q�����G�X3�#�t�D!�g�4�o�,�L���i�I�D6wC��j�B?��FQ� �3��/^\͍N<Ⱥ�B���Ƭ*�t��s87 �g��as���Z�5�U�#AD�Z������2����N TyE����af�Rz�ͳ���B.�1�$fڍ�����j4��C�f���V+L�-f��iD�G��2�Q�U��S�& X�P����rxܪ&�`��� O��Zk�*�+�YI�{�2 �����8
\ No newline at end of file
Index: branches/MwEmbedStandAlone/tests/jslib/.svn/text-base/swfobject.js.svn-base
@@ -1,4 +0,0 @@
2 -/* SWFObject v2.2 <http://code.google.com/p/swfobject/>
3 - is released under the MIT License <http://www.opensource.org/licenses/mit-license.php>
4 -*/
5 -var swfobject=function(){var D="undefined",r="object",S="Shockwave Flash",W="ShockwaveFlash.ShockwaveFlash",q="application/x-shockwave-flash",R="SWFObjectExprInst",x="onreadystatechange",O=window,j=document,t=navigator,T=false,U=[h],o=[],N=[],I=[],l,Q,E,B,J=false,a=false,n,G,m=true,M=function(){var aa=typeof j.getElementById!=D&&typeof j.getElementsByTagName!=D&&typeof j.createElement!=D,ah=t.userAgent.toLowerCase(),Y=t.platform.toLowerCase(),ae=Y?/win/.test(Y):/win/.test(ah),ac=Y?/mac/.test(Y):/mac/.test(ah),af=/webkit/.test(ah)?parseFloat(ah.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,X=!+"\v1",ag=[0,0,0],ab=null;if(typeof t.plugins!=D&&typeof t.plugins[S]==r){ab=t.plugins[S].description;if(ab&&!(typeof t.mimeTypes!=D&&t.mimeTypes[q]&&!t.mimeTypes[q].enabledPlugin)){T=true;X=false;ab=ab.replace(/^.*\s+(\S+\s+\S+$)/,"$1");ag[0]=parseInt(ab.replace(/^(.*)\..*$/,"$1"),10);ag[1]=parseInt(ab.replace(/^.*\.(.*)\s.*$/,"$1"),10);ag[2]=/[a-zA-Z]/.test(ab)?parseInt(ab.replace(/^.*[a-zA-Z]+(.*)$/,"$1"),10):0}}else{if(typeof O.ActiveXObject!=D){try{var ad=new ActiveXObject(W);if(ad){ab=ad.GetVariable("$version");if(ab){X=true;ab=ab.split(" ")[1].split(",");ag=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}}catch(Z){}}}return{w3:aa,pv:ag,wk:af,ie:X,win:ae,mac:ac}}(),k=function(){if(!M.w3){return}if((typeof j.readyState!=D&&j.readyState=="complete")||(typeof j.readyState==D&&(j.getElementsByTagName("body")[0]||j.body))){f()}if(!J){if(typeof j.addEventListener!=D){j.addEventListener("DOMContentLoaded",f,false)}if(M.ie&&M.win){j.attachEvent(x,function(){if(j.readyState=="complete"){j.detachEvent(x,arguments.callee);f()}});if(O==top){(function(){if(J){return}try{j.documentElement.doScroll("left")}catch(X){setTimeout(arguments.callee,0);return}f()})()}}if(M.wk){(function(){if(J){return}if(!/loaded|complete/.test(j.readyState)){setTimeout(arguments.callee,0);return}f()})()}s(f)}}();function f(){if(J){return}try{var Z=j.getElementsByTagName("body")[0].appendChild(C("span"));Z.parentNode.removeChild(Z)}catch(aa){return}J=true;var X=U.length;for(var Y=0;Y<X;Y++){U[Y]()}}function K(X){if(J){X()}else{U[U.length]=X}}function s(Y){if(typeof O.addEventListener!=D){O.addEventListener("load",Y,false)}else{if(typeof j.addEventListener!=D){j.addEventListener("load",Y,false)}else{if(typeof O.attachEvent!=D){i(O,"onload",Y)}else{if(typeof O.onload=="function"){var X=O.onload;O.onload=function(){X();Y()}}else{O.onload=Y}}}}}function h(){if(T){V()}else{H()}}function V(){var X=j.getElementsByTagName("body")[0];var aa=C(r);aa.setAttribute("type",q);var Z=X.appendChild(aa);if(Z){var Y=0;(function(){if(typeof Z.GetVariable!=D){var ab=Z.GetVariable("$version");if(ab){ab=ab.split(" ")[1].split(",");M.pv=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}else{if(Y<10){Y++;setTimeout(arguments.callee,10);return}}X.removeChild(aa);Z=null;H()})()}else{H()}}function H(){var ag=o.length;if(ag>0){for(var af=0;af<ag;af++){var Y=o[af].id;var ab=o[af].callbackFn;var aa={success:false,id:Y};if(M.pv[0]>0){var ae=c(Y);if(ae){if(F(o[af].swfVersion)&&!(M.wk&&M.wk<312)){w(Y,true);if(ab){aa.success=true;aa.ref=z(Y);ab(aa)}}else{if(o[af].expressInstall&&A()){var ai={};ai.data=o[af].expressInstall;ai.width=ae.getAttribute("width")||"0";ai.height=ae.getAttribute("height")||"0";if(ae.getAttribute("class")){ai.styleclass=ae.getAttribute("class")}if(ae.getAttribute("align")){ai.align=ae.getAttribute("align")}var ah={};var X=ae.getElementsByTagName("param");var ac=X.length;for(var ad=0;ad<ac;ad++){if(X[ad].getAttribute("name").toLowerCase()!="movie"){ah[X[ad].getAttribute("name")]=X[ad].getAttribute("value")}}P(ai,ah,Y,ab)}else{p(ae);if(ab){ab(aa)}}}}}else{w(Y,true);if(ab){var Z=z(Y);if(Z&&typeof Z.SetVariable!=D){aa.success=true;aa.ref=Z}ab(aa)}}}}}function z(aa){var X=null;var Y=c(aa);if(Y&&Y.nodeName=="OBJECT"){if(typeof Y.SetVariable!=D){X=Y}else{var Z=Y.getElementsByTagName(r)[0];if(Z){X=Z}}}return X}function A(){return !a&&F("6.0.65")&&(M.win||M.mac)&&!(M.wk&&M.wk<312)}function P(aa,ab,X,Z){a=true;E=Z||null;B={success:false,id:X};var ae=c(X);if(ae){if(ae.nodeName=="OBJECT"){l=g(ae);Q=null}else{l=ae;Q=X}aa.id=R;if(typeof aa.width==D||(!/%$/.test(aa.width)&&parseInt(aa.width,10)<310)){aa.width="310"}if(typeof aa.height==D||(!/%$/.test(aa.height)&&parseInt(aa.height,10)<137)){aa.height="137"}j.title=j.title.slice(0,47)+" - Flash Player Installation";var ad=M.ie&&M.win?"ActiveX":"PlugIn",ac="MMredirectURL="+O.location.toString().replace(/&/g,"%26")+"&MMplayerType="+ad+"&MMdoctitle="+j.title;if(typeof ab.flashvars!=D){ab.flashvars+="&"+ac}else{ab.flashvars=ac}if(M.ie&&M.win&&ae.readyState!=4){var Y=C("div");X+="SWFObjectNew";Y.setAttribute("id",X);ae.parentNode.insertBefore(Y,ae);ae.style.display="none";(function(){if(ae.readyState==4){ae.parentNode.removeChild(ae)}else{setTimeout(arguments.callee,10)}})()}u(aa,ab,X)}}function p(Y){if(M.ie&&M.win&&Y.readyState!=4){var X=C("div");Y.parentNode.insertBefore(X,Y);X.parentNode.replaceChild(g(Y),X);Y.style.display="none";(function(){if(Y.readyState==4){Y.parentNode.removeChild(Y)}else{setTimeout(arguments.callee,10)}})()}else{Y.parentNode.replaceChild(g(Y),Y)}}function g(ab){var aa=C("div");if(M.win&&M.ie){aa.innerHTML=ab.innerHTML}else{var Y=ab.getElementsByTagName(r)[0];if(Y){var ad=Y.childNodes;if(ad){var X=ad.length;for(var Z=0;Z<X;Z++){if(!(ad[Z].nodeType==1&&ad[Z].nodeName=="PARAM")&&!(ad[Z].nodeType==8)){aa.appendChild(ad[Z].cloneNode(true))}}}}}return aa}function u(ai,ag,Y){var X,aa=c(Y);if(M.wk&&M.wk<312){return X}if(aa){if(typeof ai.id==D){ai.id=Y}if(M.ie&&M.win){var ah="";for(var ae in ai){if(ai[ae]!=Object.prototype[ae]){if(ae.toLowerCase()=="data"){ag.movie=ai[ae]}else{if(ae.toLowerCase()=="styleclass"){ah+=' class="'+ai[ae]+'"'}else{if(ae.toLowerCase()!="classid"){ah+=" "+ae+'="'+ai[ae]+'"'}}}}}var af="";for(var ad in ag){if(ag[ad]!=Object.prototype[ad]){af+='<param name="'+ad+'" value="'+ag[ad]+'" />'}}aa.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+ah+">"+af+"</object>";N[N.length]=ai.id;X=c(ai.id)}else{var Z=C(r);Z.setAttribute("type",q);for(var ac in ai){if(ai[ac]!=Object.prototype[ac]){if(ac.toLowerCase()=="styleclass"){Z.setAttribute("class",ai[ac])}else{if(ac.toLowerCase()!="classid"){Z.setAttribute(ac,ai[ac])}}}}for(var ab in ag){if(ag[ab]!=Object.prototype[ab]&&ab.toLowerCase()!="movie"){e(Z,ab,ag[ab])}}aa.parentNode.replaceChild(Z,aa);X=Z}}return X}function e(Z,X,Y){var aa=C("param");aa.setAttribute("name",X);aa.setAttribute("value",Y);Z.appendChild(aa)}function y(Y){var X=c(Y);if(X&&X.nodeName=="OBJECT"){if(M.ie&&M.win){X.style.display="none";(function(){if(X.readyState==4){b(Y)}else{setTimeout(arguments.callee,10)}})()}else{X.parentNode.removeChild(X)}}}function b(Z){var Y=c(Z);if(Y){for(var X in Y){if(typeof Y[X]=="function"){Y[X]=null}}Y.parentNode.removeChild(Y)}}function c(Z){var X=null;try{X=j.getElementById(Z)}catch(Y){}return X}function C(X){return j.createElement(X)}function i(Z,X,Y){Z.attachEvent(X,Y);I[I.length]=[Z,X,Y]}function F(Z){var Y=M.pv,X=Z.split(".");X[0]=parseInt(X[0],10);X[1]=parseInt(X[1],10)||0;X[2]=parseInt(X[2],10)||0;return(Y[0]>X[0]||(Y[0]==X[0]&&Y[1]>X[1])||(Y[0]==X[0]&&Y[1]==X[1]&&Y[2]>=X[2]))?true:false}function v(ac,Y,ad,ab){if(M.ie&&M.mac){return}var aa=j.getElementsByTagName("head")[0];if(!aa){return}var X=(ad&&typeof ad=="string")?ad:"screen";if(ab){n=null;G=null}if(!n||G!=X){var Z=C("style");Z.setAttribute("type","text/css");Z.setAttribute("media",X);n=aa.appendChild(Z);if(M.ie&&M.win&&typeof j.styleSheets!=D&&j.styleSheets.length>0){n=j.styleSheets[j.styleSheets.length-1]}G=X}if(M.ie&&M.win){if(n&&typeof n.addRule==r){n.addRule(ac,Y)}}else{if(n&&typeof j.createTextNode!=D){n.appendChild(j.createTextNode(ac+" {"+Y+"}"))}}}function w(Z,X){if(!m){return}var Y=X?"visible":"hidden";if(J&&c(Z)){c(Z).style.visibility=Y}else{v("#"+Z,"visibility:"+Y)}}function L(Y){var Z=/[\\\"<>\.;]/;var X=Z.exec(Y)!=null;return X&&typeof encodeURIComponent!=D?encodeURIComponent(Y):Y}var d=function(){if(M.ie&&M.win){window.attachEvent("onunload",function(){var ac=I.length;for(var ab=0;ab<ac;ab++){I[ab][0].detachEvent(I[ab][1],I[ab][2])}var Z=N.length;for(var aa=0;aa<Z;aa++){y(N[aa])}for(var Y in M){M[Y]=null}M=null;for(var X in swfobject){swfobject[X]=null}swfobject=null})}}();return{registerObject:function(ab,X,aa,Z){if(M.w3&&ab&&X){var Y={};Y.id=ab;Y.swfVersion=X;Y.expressInstall=aa;Y.callbackFn=Z;o[o.length]=Y;w(ab,false)}else{if(Z){Z({success:false,id:ab})}}},getObjectById:function(X){if(M.w3){return z(X)}},embedSWF:function(ab,ah,ae,ag,Y,aa,Z,ad,af,ac){var X={success:false,id:ah};if(M.w3&&!(M.wk&&M.wk<312)&&ab&&ah&&ae&&ag&&Y){w(ah,false);K(function(){ae+="";ag+="";var aj={};if(af&&typeof af===r){for(var al in af){aj[al]=af[al]}}aj.data=ab;aj.width=ae;aj.height=ag;var am={};if(ad&&typeof ad===r){for(var ak in ad){am[ak]=ad[ak]}}if(Z&&typeof Z===r){for(var ai in Z){if(typeof am.flashvars!=D){am.flashvars+="&"+ai+"="+Z[ai]}else{am.flashvars=ai+"="+Z[ai]}}}if(F(Y)){var an=u(aj,am,ah);if(aj.id==ah){w(ah,true)}X.success=true;X.ref=an}else{if(aa&&A()){aj.data=aa;P(aj,am,ah,ac);return}else{w(ah,true)}}if(ac){ac(X)}})}else{if(ac){ac(X)}}},switchOffAutoHideShow:function(){m=false},ua:M,getFlashPlayerVersion:function(){return{major:M.pv[0],minor:M.pv[1],release:M.pv[2]}},hasFlashPlayerVersion:F,createSWF:function(Z,Y,X){if(M.w3){return u(Z,Y,X)}else{return undefined}},showExpressInstall:function(Z,aa,X,Y){if(M.w3&&A()){P(Z,aa,X,Y)}},removeSWF:function(X){if(M.w3){y(X)}},createCSS:function(aa,Z,Y,X){if(M.w3){v(aa,Z,Y,X)}},addDomLoadEvent:K,addLoadEvent:s,getQueryParamValue:function(aa){var Z=j.location.search||j.location.hash;if(Z){if(/\?/.test(Z)){Z=Z.split("?")[1]}if(aa==null){return L(Z)}var Y=Z.split("&");for(var X=0;X<Y.length;X++){if(Y[X].substring(0,Y[X].indexOf("="))==aa){return L(Y[X].substring((Y[X].indexOf("=")+1)))}}}return""},expressInstallCallback:function(){if(a){var X=c(R);if(X&&l){X.parentNode.replaceChild(l,X);if(Q){w(Q,true);if(M.ie&&M.win){l.style.display="block"}}if(E){E(B)}}a=false}}}}();
\ No newline at end of file

Status & tagging log