15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/*!
25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * jQuery JavaScript Library v1.6.4
35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * http://jquery.com/
45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright 2011, John Resig
65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Dual licensed under the MIT or GPL Version 2 licenses.
75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * http://jquery.org/license
85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Includes Sizzle.js
105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * http://sizzlejs.com/
115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright 2011, The Dojo Foundation
125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Released under the MIT, BSD, and GPL Licenses.
135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Date: Mon Sep 12 18:54:48 2011 -0400
155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */
165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)(function( window, undefined ) {
175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Use the correct document accordingly with window argument (sandbox)
195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var document = window.document,
205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        navigator = window.navigator,
215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        location = window.location;
225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var jQuery = (function() {
235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Define a local copy of jQuery
255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var jQuery = function( selector, context ) {
265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // The jQuery object is actually just the init constructor 'enhanced'
275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return new jQuery.fn.init( selector, context, rootjQuery );
285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Map over jQuery in case of overwrite
315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        _jQuery = window.jQuery,
325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Map over the $ in case of overwrite
345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        _$ = window.$,
355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // A central reference to the root jQuery(document)
375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rootjQuery,
385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // A simple way to check for HTML strings or ID strings
405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,
425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Check if a string has a non-whitespace character in it
445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rnotwhite = /\S/,
455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Used for trimming whitespace
475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        trimLeft = /^\s+/,
485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        trimRight = /\s+$/,
495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Check for digits
515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rdigit = /\d/,
525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Match a standalone tag
545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,
555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // JSON RegExp
575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rvalidchars = /^[\],:{}\s]*$/,
585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,
595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Useragent RegExp
635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rwebkit = /(webkit)[ \/]([\w.]+)/,
645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/,
655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rmsie = /(msie) ([\w.]+)/,
665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/,
675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Matches dashed string for camelizing
695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rdashAlpha = /-([a-z]|[0-9])/ig,
705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rmsPrefix = /^-ms-/,
715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Used by jQuery.camelCase as callback to replace()
735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        fcamelCase = function( all, letter ) {
745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return ( letter + "" ).toUpperCase();
755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Keep a UserAgent string for use with jQuery.browser
785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        userAgent = navigator.userAgent,
795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // For matching the engine and version of the browser
815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        browserMatch,
825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // The deferred used on DOM ready
845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        readyList,
855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // The ready event handler
875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        DOMContentLoaded,
885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Save a reference to some core methods
905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        toString = Object.prototype.toString,
915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        hasOwn = Object.prototype.hasOwnProperty,
925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        push = Array.prototype.push,
935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        slice = Array.prototype.slice,
945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        trim = String.prototype.trim,
955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        indexOf = Array.prototype.indexOf,
965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // [[Class]] -> type pairs
985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        class2type = {};
995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.fn = jQuery.prototype = {
1015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        constructor: jQuery,
1025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        init: function( selector, context, rootjQuery ) {
1035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var match, elem, ret, doc;
1045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Handle $(""), $(null), or $(undefined)
1065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( !selector ) {
1075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return this;
1085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
1095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Handle $(DOMElement)
1115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( selector.nodeType ) {
1125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        this.context = this[0] = selector;
1135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        this.length = 1;
1145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return this;
1155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
1165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // The body element only exists once, optimize finding it
1185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( selector === "body" && !context && document.body ) {
1195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        this.context = document;
1205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        this[0] = document.body;
1215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        this.selector = selector;
1225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        this.length = 1;
1235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return this;
1245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
1255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Handle HTML strings
1275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( typeof selector === "string" ) {
1285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Are we dealing with HTML string or an ID?
1295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
1305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Assume that strings that start and end with <> are HTML and skip the regex check
1315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                match = [ null, selector, null ];
1325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } else {
1345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                match = quickExpr.exec( selector );
1355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
1365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Verify a match, and that no context was specified for #id
1385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( match && (match[1] || !context) ) {
1395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // HANDLE: $(html) -> $(array)
1415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( match[1] ) {
1425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        context = context instanceof jQuery ? context[0] : context;
1435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        doc = (context ? context.ownerDocument || context : document);
1445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // If a single string is passed in and it's a single tag
1465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // just do a createElement and skip the rest
1475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        ret = rsingleTag.exec( selector );
1485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( ret ) {
1505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                if ( jQuery.isPlainObject( context ) ) {
1515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        selector = [ document.createElement( ret[1] ) ];
1525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        jQuery.fn.attr.call( selector, context, true );
1535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                } else {
1555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        selector = [ doc.createElement( ret[1] ) ];
1565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                }
1575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        } else {
1595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                ret = jQuery.buildFragment( [ match[1] ], [ doc ] );
1605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                selector = (ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment).childNodes;
1615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
1625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        return jQuery.merge( this, selector );
1645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // HANDLE: $("#id")
1665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                } else {
1675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        elem = document.getElementById( match[2] );
1685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // Check parentNode to catch when Blackberry 4.6 returns
1705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // nodes that are no longer in the document #6963
1715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( elem && elem.parentNode ) {
1725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                // Handle the case where IE and Opera return items
1735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                // by name instead of ID
1745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                if ( elem.id !== match[2] ) {
1755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        return rootjQuery.find( selector );
1765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                }
1775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                // Otherwise, we inject the element directly into the jQuery object
1795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                this.length = 1;
1805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                this[0] = elem;
1815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
1825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        this.context = document;
1845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        this.selector = selector;
1855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        return this;
1865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
1875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // HANDLE: $(expr, $(...))
1895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } else if ( !context || context.jquery ) {
1905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return (context || rootjQuery).find( selector );
1915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // HANDLE: $(expr, context)
1935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // (which is just equivalent to: $(context).find(expr)
1945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } else {
1955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return this.constructor( context ).find( selector );
1965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
1975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // HANDLE: $(function)
1995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Shortcut for document ready
2005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else if ( jQuery.isFunction( selector ) ) {
2015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return rootjQuery.ready( selector );
2025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
2035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if (selector.selector !== undefined) {
2055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        this.selector = selector.selector;
2065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        this.context = selector.context;
2075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
2085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return jQuery.makeArray( selector, this );
2105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
2115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Start with an empty selector
2135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        selector: "",
2145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // The current version of jQuery being used
2165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        jquery: "1.6.4",
2175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // The default length of a jQuery object is 0
2195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        length: 0,
2205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // The number of elements contained in the matched element set
2225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        size: function() {
2235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this.length;
2245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
2255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        toArray: function() {
2275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return slice.call( this, 0 );
2285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
2295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Get the Nth element in the matched element set OR
2315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Get the whole matched element set as a clean array
2325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        get: function( num ) {
2335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return num == null ?
2345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Return a 'clean' array
2365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        this.toArray() :
2375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Return just the object
2395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        ( num < 0 ? this[ this.length + num ] : this[ num ] );
2405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
2415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Take an array of elements and push it onto the stack
2435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // (returning the new matched element set)
2445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        pushStack: function( elems, name, selector ) {
2455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Build a new jQuery matched element set
2465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var ret = this.constructor();
2475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( jQuery.isArray( elems ) ) {
2495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        push.apply( ret, elems );
2505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else {
2525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        jQuery.merge( ret, elems );
2535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
2545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Add the old object onto the stack (as a reference)
2565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                ret.prevObject = this;
2575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                ret.context = this.context;
2595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( name === "find" ) {
2615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        ret.selector = this.selector + (this.selector ? " " : "") + selector;
2625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else if ( name ) {
2635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        ret.selector = this.selector + "." + name + "(" + selector + ")";
2645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
2655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Return the newly-formed element set
2675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return ret;
2685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
2695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Execute a callback for every element in the matched set.
2715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // (You can seed the arguments with an array of args, but this is
2725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // only used internally.)
2735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        each: function( callback, args ) {
2745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return jQuery.each( this, callback, args );
2755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
2765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        ready: function( fn ) {
2785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Attach the listeners
2795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                jQuery.bindReady();
2805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Add the callback
2825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                readyList.done( fn );
2835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this;
2855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
2865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        eq: function( i ) {
2885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return i === -1 ?
2895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        this.slice( i ) :
2905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        this.slice( i, +i + 1 );
2915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
2925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        first: function() {
2945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this.eq( 0 );
2955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
2965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        last: function() {
2985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this.eq( -1 );
2995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
3005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        slice: function() {
3025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this.pushStack( slice.apply( this, arguments ),
3035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        "slice", slice.call(arguments).join(",") );
3045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
3055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        map: function( callback ) {
3075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this.pushStack( jQuery.map(this, function( elem, i ) {
3085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return callback.call( elem, i, elem );
3095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }));
3105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
3115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        end: function() {
3135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this.prevObject || this.constructor(null);
3145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
3155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // For internal use only.
3175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Behaves like an Array's method, not like a jQuery method.
3185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        push: push,
3195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        sort: [].sort,
3205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        splice: [].splice
3215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
3225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Give the init function the jQuery prototype for later instantiation
3245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.fn.init.prototype = jQuery.fn;
3255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.extend = jQuery.fn.extend = function() {
3275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        var options, name, src, copy, copyIsArray, clone,
3285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                target = arguments[0] || {},
3295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                i = 1,
3305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                length = arguments.length,
3315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                deep = false;
3325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Handle a deep copy situation
3345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( typeof target === "boolean" ) {
3355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                deep = target;
3365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                target = arguments[1] || {};
3375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // skip the boolean and the target
3385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                i = 2;
3395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
3405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Handle case when target is a string or something (possible in deep copy)
3425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
3435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                target = {};
3445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
3455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // extend jQuery itself if only one argument is passed
3475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( length === i ) {
3485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                target = this;
3495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                --i;
3505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
3515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        for ( ; i < length; i++ ) {
3535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Only deal with non-null/undefined values
3545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( (options = arguments[ i ]) != null ) {
3555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Extend the base object
3565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        for ( name in options ) {
3575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                src = target[ name ];
3585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                copy = options[ name ];
3595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Prevent never-ending loop
3615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( target === copy ) {
3625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        continue;
3635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
3645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Recurse if we're merging plain objects or arrays
3665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
3675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( copyIsArray ) {
3685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                copyIsArray = false;
3695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                clone = src && jQuery.isArray(src) ? src : [];
3705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        } else {
3725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                clone = src && jQuery.isPlainObject(src) ? src : {};
3735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
3745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // Never move original objects, clone them
3765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        target[ name ] = jQuery.extend( deep, clone, copy );
3775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Don't bring in undefined values
3795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                } else if ( copy !== undefined ) {
3805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        target[ name ] = copy;
3815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
3825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
3835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
3845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
3855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Return the modified object
3875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        return target;
3885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
3895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.extend({
3915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        noConflict: function( deep ) {
3925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( window.$ === jQuery ) {
3935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        window.$ = _$;
3945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
3955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( deep && window.jQuery === jQuery ) {
3975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        window.jQuery = _jQuery;
3985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
3995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
4005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return jQuery;
4015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
4025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
4035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Is the DOM ready to be used? Set to true once it occurs.
4045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        isReady: false,
4055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
4065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // A counter to track how many items to wait for before
4075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // the ready event fires. See #6781
4085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        readyWait: 1,
4095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
4105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Hold (or release) the ready event
4115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        holdReady: function( hold ) {
4125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( hold ) {
4135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        jQuery.readyWait++;
4145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else {
4155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        jQuery.ready( true );
4165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
4175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
4185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
4195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Handle when the DOM is ready
4205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        ready: function( wait ) {
4215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Either a released hold or an DOMready/load event and not yet ready
4225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) {
4235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
4245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( !document.body ) {
4255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return setTimeout( jQuery.ready, 1 );
4265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
4275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
4285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Remember that the DOM is ready
4295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        jQuery.isReady = true;
4305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
4315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // If a normal DOM Ready event fired, decrement, and wait if need be
4325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( wait !== true && --jQuery.readyWait > 0 ) {
4335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return;
4345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
4355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
4365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // If there are functions bound, to execute
4375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        readyList.resolveWith( document, [ jQuery ] );
4385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
4395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Trigger any bound ready events
4405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( jQuery.fn.trigger ) {
4415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery( document ).trigger( "ready" ).unbind( "ready" );
4425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
4435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
4445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
4455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
4465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        bindReady: function() {
4475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( readyList ) {
4485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return;
4495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
4505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
4515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                readyList = jQuery._Deferred();
4525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
4535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Catch cases where $(document).ready() is called after the
4545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // browser event has already occurred.
4555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( document.readyState === "complete" ) {
4565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Handle it asynchronously to allow scripts the opportunity to delay ready
4575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return setTimeout( jQuery.ready, 1 );
4585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
4595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
4605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Mozilla, Opera and webkit nightlies currently support this event
4615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( document.addEventListener ) {
4625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Use the handy event callback
4635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
4645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
4655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // A fallback to window.onload, that will always work
4665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        window.addEventListener( "load", jQuery.ready, false );
4675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
4685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // If IE event model is used
4695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else if ( document.attachEvent ) {
4705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // ensure firing before onload,
4715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // maybe late but safe also for iframes
4725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        document.attachEvent( "onreadystatechange", DOMContentLoaded );
4735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
4745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // A fallback to window.onload, that will always work
4755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        window.attachEvent( "onload", jQuery.ready );
4765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
4775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // If IE and not a frame
4785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // continually check to see if the document is ready
4795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var toplevel = false;
4805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
4815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        try {
4825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                toplevel = window.frameElement == null;
4835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } catch(e) {}
4845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
4855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( document.documentElement.doScroll && toplevel ) {
4865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                doScrollCheck();
4875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
4885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
4895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
4905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
4915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // See test/unit/core.js for details concerning isFunction.
4925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Since version 1.3, DOM methods and functions like alert
4935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // aren't supported. They return false on IE (#2968).
4945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        isFunction: function( obj ) {
4955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return jQuery.type(obj) === "function";
4965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
4975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
4985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        isArray: Array.isArray || function( obj ) {
4995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return jQuery.type(obj) === "array";
5005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
5015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
5025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // A crude way of determining if an object is a window
5035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        isWindow: function( obj ) {
5045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return obj && typeof obj === "object" && "setInterval" in obj;
5055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
5065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
5075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        isNaN: function( obj ) {
5085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return obj == null || !rdigit.test( obj ) || isNaN( obj );
5095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
5105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
5115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        type: function( obj ) {
5125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return obj == null ?
5135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        String( obj ) :
5145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        class2type[ toString.call(obj) ] || "object";
5155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
5165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
5175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        isPlainObject: function( obj ) {
5185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Must be an Object.
5195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Because of IE, we also have to check the presence of the constructor property.
5205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Make sure that DOM nodes and window objects don't pass through, as well
5215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
5225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return false;
5235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
5245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
5255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                try {
5265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Not own constructor property must be Object
5275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( obj.constructor &&
5285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                !hasOwn.call(obj, "constructor") &&
5295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
5305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return false;
5315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
5325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } catch ( e ) {
5335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // IE8,9 Will throw exceptions on certain host objects #9897
5345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return false;
5355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
5365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
5375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Own properties are enumerated firstly, so to speed up,
5385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // if last one is own, then all properties are own.
5395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
5405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var key;
5415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                for ( key in obj ) {}
5425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
5435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return key === undefined || hasOwn.call( obj, key );
5445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
5455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
5465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        isEmptyObject: function( obj ) {
5475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                for ( var name in obj ) {
5485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return false;
5495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
5505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return true;
5515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
5525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
5535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        error: function( msg ) {
5545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                throw msg;
5555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
5565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
5575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        parseJSON: function( data ) {
5585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( typeof data !== "string" || !data ) {
5595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return null;
5605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
5615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
5625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Make sure leading/trailing whitespace is removed (IE can't handle it)
5635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                data = jQuery.trim( data );
5645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
5655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Attempt to parse using the native JSON parser first
5665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( window.JSON && window.JSON.parse ) {
5675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return window.JSON.parse( data );
5685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
5695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
5705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Make sure the incoming data is actual JSON
5715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Logic borrowed from http://json.org/json2.js
5725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( rvalidchars.test( data.replace( rvalidescape, "@" )
5735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        .replace( rvalidtokens, "]" )
5745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        .replace( rvalidbraces, "")) ) {
5755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
5765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return (new Function( "return " + data ))();
5775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
5785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
5795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                jQuery.error( "Invalid JSON: " + data );
5805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
5815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
5825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Cross-browser xml parsing
5835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        parseXML: function( data ) {
5845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var xml, tmp;
5855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                try {
5865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( window.DOMParser ) { // Standard
5875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                tmp = new DOMParser();
5885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                xml = tmp.parseFromString( data , "text/xml" );
5895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } else { // IE
5905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                xml = new ActiveXObject( "Microsoft.XMLDOM" );
5915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                xml.async = "false";
5925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                xml.loadXML( data );
5935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
5945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } catch( e ) {
5955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        xml = undefined;
5965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
5975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {
5985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        jQuery.error( "Invalid XML: " + data );
5995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
6005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return xml;
6015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
6025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
6035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        noop: function() {},
6045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
6055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Evaluates a script in a global context
6065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Workarounds based on findings by Jim Driscoll
6075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
6085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        globalEval: function( data ) {
6095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( data && rnotwhite.test( data ) ) {
6105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // We use execScript on Internet Explorer
6115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // We use an anonymous function so that context is window
6125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // rather than jQuery in Firefox
6135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        ( window.execScript || function( data ) {
6145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                window[ "eval" ].call( window, data );
6155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } )( data );
6165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
6175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
6185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
6195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Convert dashed to camelCase; used by the css and data modules
6205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Microsoft forgot to hump their vendor prefix (#9572)
6215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        camelCase: function( string ) {
6225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
6235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
6245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
6255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        nodeName: function( elem, name ) {
6265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();
6275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
6285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
6295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // args is for internal usage only
6305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        each: function( object, callback, args ) {
6315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var name, i = 0,
6325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        length = object.length,
6335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        isObj = length === undefined || jQuery.isFunction( object );
6345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
6355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( args ) {
6365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( isObj ) {
6375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                for ( name in object ) {
6385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( callback.apply( object[ name ], args ) === false ) {
6395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                break;
6405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
6415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
6425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } else {
6435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                for ( ; i < length; ) {
6445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( callback.apply( object[ i++ ], args ) === false ) {
6455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                break;
6465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
6475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
6485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
6495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
6505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // A special, fast, case for the most common use of each
6515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else {
6525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( isObj ) {
6535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                for ( name in object ) {
6545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
6555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                break;
6565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
6575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
6585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } else {
6595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                for ( ; i < length; ) {
6605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) {
6615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                break;
6625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
6635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
6645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
6655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
6665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
6675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return object;
6685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
6695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
6705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Use native String.trim function wherever possible
6715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        trim: trim ?
6725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                function( text ) {
6735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return text == null ?
6745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                "" :
6755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                trim.call( text );
6765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } :
6775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
6785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Otherwise use our own trimming functionality
6795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                function( text ) {
6805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return text == null ?
6815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                "" :
6825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                text.toString().replace( trimLeft, "" ).replace( trimRight, "" );
6835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
6845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
6855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // results is for internal usage only
6865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        makeArray: function( array, results ) {
6875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var ret = results || [];
6885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
6895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( array != null ) {
6905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // The window, strings (and functions) also have 'length'
6915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // The extra typeof function check is to prevent crashes
6925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // in Safari 2 (See: #3039)
6935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930
6945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var type = jQuery.type( array );
6955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
6965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) {
6975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                push.call( ret, array );
6985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } else {
6995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery.merge( ret, array );
7005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
7015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
7025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
7035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return ret;
7045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
7055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
7065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        inArray: function( elem, array ) {
7075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( !array ) {
7085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return -1;
7095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
7105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
7115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( indexOf ) {
7125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return indexOf.call( array, elem );
7135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
7145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
7155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                for ( var i = 0, length = array.length; i < length; i++ ) {
7165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( array[ i ] === elem ) {
7175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return i;
7185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
7195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
7205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
7215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return -1;
7225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
7235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
7245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        merge: function( first, second ) {
7255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var i = first.length,
7265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        j = 0;
7275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
7285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( typeof second.length === "number" ) {
7295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        for ( var l = second.length; j < l; j++ ) {
7305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                first[ i++ ] = second[ j ];
7315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
7325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
7335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else {
7345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        while ( second[j] !== undefined ) {
7355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                first[ i++ ] = second[ j++ ];
7365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
7375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
7385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
7395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                first.length = i;
7405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
7415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return first;
7425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
7435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
7445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        grep: function( elems, callback, inv ) {
7455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var ret = [], retVal;
7465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                inv = !!inv;
7475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
7485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Go through the array, only saving the items
7495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // that pass the validator function
7505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                for ( var i = 0, length = elems.length; i < length; i++ ) {
7515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        retVal = !!callback( elems[ i ], i );
7525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( inv !== retVal ) {
7535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                ret.push( elems[ i ] );
7545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
7555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
7565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
7575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return ret;
7585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
7595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
7605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // arg is for internal usage only
7615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        map: function( elems, callback, arg ) {
7625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var value, key, ret = [],
7635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        i = 0,
7645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        length = elems.length,
7655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // jquery objects are treated as arrays
7665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ;
7675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
7685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Go through the array, translating each of the items to their
7695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( isArray ) {
7705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        for ( ; i < length; i++ ) {
7715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                value = callback( elems[ i ], i, arg );
7725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
7735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( value != null ) {
7745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        ret[ ret.length ] = value;
7755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
7765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
7775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
7785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Go through every key on the object,
7795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else {
7805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        for ( key in elems ) {
7815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                value = callback( elems[ key ], key, arg );
7825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
7835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( value != null ) {
7845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        ret[ ret.length ] = value;
7855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
7865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
7875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
7885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
7895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Flatten any nested arrays
7905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return ret.concat.apply( [], ret );
7915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
7925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
7935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // A global GUID counter for objects
7945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        guid: 1,
7955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
7965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Bind a function to a context, optionally partially applying any
7975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // arguments.
7985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        proxy: function( fn, context ) {
7995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( typeof context === "string" ) {
8005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var tmp = fn[ context ];
8015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        context = fn;
8025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        fn = tmp;
8035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
8045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
8055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Quick check to determine if target is callable, in the spec
8065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // this throws a TypeError, but we will just return undefined.
8075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( !jQuery.isFunction( fn ) ) {
8085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return undefined;
8095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
8105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
8115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Simulated bind
8125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var args = slice.call( arguments, 2 ),
8135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        proxy = function() {
8145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return fn.apply( context, args.concat( slice.call( arguments ) ) );
8155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        };
8165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
8175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Set the guid of unique handler to the same of original handler, so it can be removed
8185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;
8195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
8205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return proxy;
8215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
8225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
8235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Mutifunctional method to get and set values to a collection
8245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // The value/s can optionally be executed if it's a function
8255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        access: function( elems, key, value, exec, fn, pass ) {
8265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var length = elems.length;
8275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
8285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Setting many attributes
8295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( typeof key === "object" ) {
8305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        for ( var k in key ) {
8315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery.access( elems, k, key[k], exec, fn, value );
8325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
8335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return elems;
8345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
8355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
8365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Setting one attribute
8375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( value !== undefined ) {
8385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Optionally, function values get executed if exec is true
8395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        exec = !pass && exec && jQuery.isFunction(value);
8405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
8415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        for ( var i = 0; i < length; i++ ) {
8425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
8435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
8445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
8455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return elems;
8465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
8475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
8485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Getting an attribute
8495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return length ? fn( elems[0], key ) : undefined;
8505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
8515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
8525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        now: function() {
8535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return (new Date()).getTime();
8545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
8555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
8565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Use of jQuery.browser is frowned upon.
8575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // More details: http://docs.jquery.com/Utilities/jQuery.browser
8585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        uaMatch: function( ua ) {
8595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                ua = ua.toLowerCase();
8605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
8615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var match = rwebkit.exec( ua ) ||
8625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        ropera.exec( ua ) ||
8635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        rmsie.exec( ua ) ||
8645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) ||
8655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        [];
8665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
8675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return { browser: match[1] || "", version: match[2] || "0" };
8685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
8695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
8705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        sub: function() {
8715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                function jQuerySub( selector, context ) {
8725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return new jQuerySub.fn.init( selector, context );
8735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
8745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                jQuery.extend( true, jQuerySub, this );
8755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                jQuerySub.superclass = this;
8765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                jQuerySub.fn = jQuerySub.prototype = this();
8775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                jQuerySub.fn.constructor = jQuerySub;
8785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                jQuerySub.sub = this.sub;
8795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                jQuerySub.fn.init = function init( selector, context ) {
8805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {
8815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                context = jQuerySub( context );
8825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
8835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
8845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return jQuery.fn.init.call( this, selector, context, rootjQuerySub );
8855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                };
8865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                jQuerySub.fn.init.prototype = jQuerySub.fn;
8875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var rootjQuerySub = jQuerySub(document);
8885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return jQuerySub;
8895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
8905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
8915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        browser: {}
8925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)});
8935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
8945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Populate the class2type map
8955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) {
8965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        class2type[ "[object " + name + "]" ] = name.toLowerCase();
8975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)});
8985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
8995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)browserMatch = jQuery.uaMatch( userAgent );
9005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if ( browserMatch.browser ) {
9015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        jQuery.browser[ browserMatch.browser ] = true;
9025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        jQuery.browser.version = browserMatch.version;
9035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
9045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
9055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Deprecated, use jQuery.browser.webkit instead
9065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if ( jQuery.browser.webkit ) {
9075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        jQuery.browser.safari = true;
9085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
9095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
9105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// IE doesn't match non-breaking spaces with \s
9115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if ( rnotwhite.test( "\xA0" ) ) {
9125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        trimLeft = /^[\s\xA0]+/;
9135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        trimRight = /[\s\xA0]+$/;
9145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
9155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
9165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// All jQuery objects should point back to these
9175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)rootjQuery = jQuery(document);
9185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
9195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Cleanup functions for the document ready method
9205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if ( document.addEventListener ) {
9215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        DOMContentLoaded = function() {
9225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
9235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                jQuery.ready();
9245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        };
9255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
9265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} else if ( document.attachEvent ) {
9275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        DOMContentLoaded = function() {
9285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
9295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( document.readyState === "complete" ) {
9305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        document.detachEvent( "onreadystatechange", DOMContentLoaded );
9315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        jQuery.ready();
9325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
9335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        };
9345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
9355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
9365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// The DOM ready check for Internet Explorer
9375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function doScrollCheck() {
9385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( jQuery.isReady ) {
9395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return;
9405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
9415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
9425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        try {
9435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // If IE is used, use the trick by Diego Perini
9445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // http://javascript.nwbox.com/IEContentLoaded/
9455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                document.documentElement.doScroll("left");
9465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        } catch(e) {
9475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                setTimeout( doScrollCheck, 1 );
9485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return;
9495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
9505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
9515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // and execute any waiting functions
9525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        jQuery.ready();
9535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
9545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
9555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)return jQuery;
9565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
9575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)})();
9585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
9595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
9605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var // Promise methods
9615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        promiseMethods = "done fail isResolved isRejected promise then always pipe".split( " " ),
9625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Static reference to slice
9635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        sliceDeferred = [].slice;
9645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
9655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.extend({
9665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Create a simple deferred (one callbacks list)
9675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        _Deferred: function() {
9685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var // callbacks list
9695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        callbacks = [],
9705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // stored [ context , args ]
9715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        fired,
9725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // to avoid firing when already doing so
9735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        firing,
9745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // flag to know if the deferred has been cancelled
9755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        cancelled,
9765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // the deferred itself
9775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        deferred  = {
9785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
9795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // done( f1, f2, ...)
9805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                done: function() {
9815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( !cancelled ) {
9825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                var args = arguments,
9835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        i,
9845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        length,
9855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        elem,
9865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        type,
9875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        _fired;
9885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                if ( fired ) {
9895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        _fired = fired;
9905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        fired = 0;
9915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                }
9925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                for ( i = 0, length = args.length; i < length; i++ ) {
9935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        elem = args[ i ];
9945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        type = jQuery.type( elem );
9955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        if ( type === "array" ) {
9965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                deferred.done.apply( deferred, elem );
9975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        } else if ( type === "function" ) {
9985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                callbacks.push( elem );
9995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        }
10005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                }
10015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                if ( _fired ) {
10025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        deferred.resolveWith( _fired[ 0 ], _fired[ 1 ] );
10035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                }
10045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
10055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        return this;
10065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                },
10075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
10085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // resolve with given context and args
10095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                resolveWith: function( context, args ) {
10105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( !cancelled && !fired && !firing ) {
10115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                // make sure args are available (#8421)
10125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                args = args || [];
10135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                firing = 1;
10145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                try {
10155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        while( callbacks[ 0 ] ) {
10165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                callbacks.shift().apply( context, args );
10175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        }
10185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                }
10195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                finally {
10205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        fired = [ context, args ];
10215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        firing = 0;
10225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                }
10235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
10245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        return this;
10255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                },
10265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
10275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // resolve with this as context and given arguments
10285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                resolve: function() {
10295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        deferred.resolveWith( this, arguments );
10305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        return this;
10315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                },
10325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
10335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Has this deferred been resolved?
10345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                isResolved: function() {
10355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        return !!( firing || fired );
10365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                },
10375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
10385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Cancel
10395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                cancel: function() {
10405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        cancelled = 1;
10415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        callbacks = [];
10425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        return this;
10435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
10445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        };
10455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
10465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return deferred;
10475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
10485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
10495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Full fledged deferred (two callbacks list)
10505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        Deferred: function( func ) {
10515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var deferred = jQuery._Deferred(),
10525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        failDeferred = jQuery._Deferred(),
10535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        promise;
10545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Add errorDeferred methods, then and promise
10555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                jQuery.extend( deferred, {
10565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        then: function( doneCallbacks, failCallbacks ) {
10575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                deferred.done( doneCallbacks ).fail( failCallbacks );
10585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return this;
10595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        },
10605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        always: function() {
10615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return deferred.done.apply( deferred, arguments ).fail.apply( this, arguments );
10625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        },
10635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        fail: failDeferred.done,
10645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        rejectWith: failDeferred.resolveWith,
10655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        reject: failDeferred.resolve,
10665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        isRejected: failDeferred.isResolved,
10675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        pipe: function( fnDone, fnFail ) {
10685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return jQuery.Deferred(function( newDefer ) {
10695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        jQuery.each( {
10705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                done: [ fnDone, "resolve" ],
10715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                fail: [ fnFail, "reject" ]
10725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }, function( handler, data ) {
10735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                var fn = data[ 0 ],
10745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        action = data[ 1 ],
10755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        returned;
10765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                if ( jQuery.isFunction( fn ) ) {
10775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        deferred[ handler ](function() {
10785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                returned = fn.apply( this, arguments );
10795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                if ( returned && jQuery.isFunction( returned.promise ) ) {
10805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                        returned.promise().then( newDefer.resolve, newDefer.reject );
10815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                } else {
10825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                        newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] );
10835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                }
10845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        });
10855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                } else {
10865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        deferred[ handler ]( newDefer[ action ] );
10875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                }
10885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        });
10895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }).promise();
10905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        },
10915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Get a promise for this deferred
10925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // If obj is provided, the promise aspect is added to the object
10935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        promise: function( obj ) {
10945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( obj == null ) {
10955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( promise ) {
10965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                return promise;
10975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
10985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        promise = obj = {};
10995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
11005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                var i = promiseMethods.length;
11015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                while( i-- ) {
11025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        obj[ promiseMethods[i] ] = deferred[ promiseMethods[i] ];
11035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
11045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return obj;
11055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
11065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                });
11075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Make sure only one callback list will be used
11085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                deferred.done( failDeferred.cancel ).fail( deferred.cancel );
11095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Unexpose cancel
11105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                delete deferred.cancel;
11115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Call given func if any
11125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( func ) {
11135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        func.call( deferred, deferred );
11145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
11155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return deferred;
11165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
11175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
11185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Deferred helper
11195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        when: function( firstParam ) {
11205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var args = arguments,
11215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        i = 0,
11225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        length = args.length,
11235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        count = length,
11245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        deferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ?
11255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                firstParam :
11265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery.Deferred();
11275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                function resolveFunc( i ) {
11285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return function( value ) {
11295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                args[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;
11305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( !( --count ) ) {
11315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // Strange bug in FF4:
11325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // Values changed onto the arguments object sometimes end up as undefined values
11335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // outside the $.when method. Cloning the object into a fresh array solves the issue
11345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        deferred.resolveWith( deferred, sliceDeferred.call( args, 0 ) );
11355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
11365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        };
11375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
11385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( length > 1 ) {
11395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        for( ; i < length; i++ ) {
11405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( args[ i ] && jQuery.isFunction( args[ i ].promise ) ) {
11415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        args[ i ].promise().then( resolveFunc(i), deferred.reject );
11425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                } else {
11435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        --count;
11445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
11455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
11465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( !count ) {
11475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                deferred.resolveWith( deferred, args );
11485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
11495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else if ( deferred !== firstParam ) {
11505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        deferred.resolveWith( deferred, length ? [ firstParam ] : [] );
11515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
11525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return deferred.promise();
11535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
11545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)});
11555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
11565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
11575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
11585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.support = (function() {
11595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
11605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        var div = document.createElement( "div" ),
11615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                documentElement = document.documentElement,
11625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                all,
11635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                a,
11645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                select,
11655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                opt,
11665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                input,
11675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                marginDiv,
11685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                support,
11695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                fragment,
11705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                body,
11715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                testElementParent,
11725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                testElement,
11735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                testElementStyle,
11745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                tds,
11755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                events,
11765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                eventName,
11775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                i,
11785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                isSupported;
11795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
11805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Preliminary tests
11815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        div.setAttribute("className", "t");
11825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        div.innerHTML = "   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
11835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
11845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
11855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        all = div.getElementsByTagName( "*" );
11865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        a = div.getElementsByTagName( "a" )[ 0 ];
11875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
11885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Can't get basic test support
11895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( !all || !all.length || !a ) {
11905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return {};
11915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
11925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
11935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // First batch of supports tests
11945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        select = document.createElement( "select" );
11955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        opt = select.appendChild( document.createElement("option") );
11965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        input = div.getElementsByTagName( "input" )[ 0 ];
11975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
11985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        support = {
11995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // IE strips leading whitespace when .innerHTML is used
12005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                leadingWhitespace: ( div.firstChild.nodeType === 3 ),
12015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
12025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Make sure that tbody elements aren't automatically inserted
12035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // IE will insert them into empty tables
12045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                tbody: !div.getElementsByTagName( "tbody" ).length,
12055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
12065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Make sure that link elements get serialized correctly by innerHTML
12075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // This requires a wrapper element in IE
12085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                htmlSerialize: !!div.getElementsByTagName( "link" ).length,
12095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
12105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Get the style information from getAttribute
12115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // (IE uses .cssText instead)
12125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                style: /top/.test( a.getAttribute("style") ),
12135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
12145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Make sure that URLs aren't manipulated
12155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // (IE normalizes it by default)
12165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                hrefNormalized: ( a.getAttribute( "href" ) === "/a" ),
12175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
12185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Make sure that element opacity exists
12195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // (IE uses filter instead)
12205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Use a regex to work around a WebKit issue. See #5145
12215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                opacity: /^0.55$/.test( a.style.opacity ),
12225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
12235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Verify style float existence
12245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // (IE uses styleFloat instead of cssFloat)
12255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                cssFloat: !!a.style.cssFloat,
12265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
12275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Make sure that if no value is specified for a checkbox
12285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // that it defaults to "on".
12295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // (WebKit defaults to "" instead)
12305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                checkOn: ( input.value === "on" ),
12315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
12325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Make sure that a selected-by-default option has a working selected property.
12335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
12345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                optSelected: opt.selected,
12355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
12365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)
12375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                getSetAttribute: div.className !== "t",
12385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
12395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Will be defined later
12405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                submitBubbles: true,
12415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                changeBubbles: true,
12425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                focusinBubbles: false,
12435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                deleteExpando: true,
12445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                noCloneEvent: true,
12455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                inlineBlockNeedsLayout: false,
12465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                shrinkWrapBlocks: false,
12475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                reliableMarginRight: true
12485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        };
12495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
12505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Make sure checked status is properly cloned
12515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        input.checked = true;
12525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        support.noCloneChecked = input.cloneNode( true ).checked;
12535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
12545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Make sure that the options inside disabled selects aren't marked as disabled
12555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // (WebKit marks them as disabled)
12565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        select.disabled = true;
12575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        support.optDisabled = !opt.disabled;
12585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
12595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Test to see if it's possible to delete an expando from an element
12605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Fails in Internet Explorer
12615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        try {
12625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                delete div.test;
12635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        } catch( e ) {
12645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                support.deleteExpando = false;
12655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
12665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
12675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( !div.addEventListener && div.attachEvent && div.fireEvent ) {
12685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                div.attachEvent( "onclick", function() {
12695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Cloning a node shouldn't copy over any
12705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // bound event handlers (IE does this)
12715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        support.noCloneEvent = false;
12725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                });
12735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                div.cloneNode( true ).fireEvent( "onclick" );
12745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
12755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
12765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Check if a radio maintains it's value
12775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // after being appended to the DOM
12785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        input = document.createElement("input");
12795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        input.value = "t";
12805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        input.setAttribute("type", "radio");
12815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        support.radioValue = input.value === "t";
12825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
12835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        input.setAttribute("checked", "checked");
12845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        div.appendChild( input );
12855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        fragment = document.createDocumentFragment();
12865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        fragment.appendChild( div.firstChild );
12875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
12885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // WebKit doesn't clone checked state correctly in fragments
12895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;
12905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
12915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        div.innerHTML = "";
12925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
12935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Figure out if the W3C box model works as expected
12945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        div.style.width = div.style.paddingLeft = "1px";
12955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
12965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        body = document.getElementsByTagName( "body" )[ 0 ];
12975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // We use our own, invisible, body unless the body is already present
12985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // in which case we use a div (#9239)
12995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        testElement = document.createElement( body ? "div" : "body" );
13005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        testElementStyle = {
13015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                visibility: "hidden",
13025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                width: 0,
13035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                height: 0,
13045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                border: 0,
13055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                margin: 0,
13065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                background: "none"
13075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        };
13085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( body ) {
13095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                jQuery.extend( testElementStyle, {
13105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        position: "absolute",
13115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        left: "-1000px",
13125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        top: "-1000px"
13135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                });
13145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
13155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        for ( i in testElementStyle ) {
13165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                testElement.style[ i ] = testElementStyle[ i ];
13175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
13185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        testElement.appendChild( div );
13195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        testElementParent = body || documentElement;
13205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        testElementParent.insertBefore( testElement, testElementParent.firstChild );
13215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
13225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Check if a disconnected checkbox will retain its checked
13235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // value of true after appended to the DOM (IE6/7)
13245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        support.appendChecked = input.checked;
13255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
13265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        support.boxModel = div.offsetWidth === 2;
13275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
13285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( "zoom" in div.style ) {
13295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Check if natively block-level elements act like inline-block
13305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // elements when setting their display to 'inline' and giving
13315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // them layout
13325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // (IE < 8 does this)
13335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                div.style.display = "inline";
13345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                div.style.zoom = 1;
13355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                support.inlineBlockNeedsLayout = ( div.offsetWidth === 2 );
13365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
13375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Check if elements with layout shrink-wrap their children
13385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // (IE 6 does this)
13395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                div.style.display = "";
13405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                div.innerHTML = "<div style='width:4px;'></div>";
13415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                support.shrinkWrapBlocks = ( div.offsetWidth !== 2 );
13425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
13435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
13445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        div.innerHTML = "<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>";
13455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        tds = div.getElementsByTagName( "td" );
13465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
13475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Check if table cells still have offsetWidth/Height when they are set
13485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // to display:none and there are still other visible table cells in a
13495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // table row; if so, offsetWidth/Height are not reliable for use when
13505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // determining if an element has been hidden directly using
13515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // display:none (it is still safe to use offsets if a parent element is
13525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // hidden; don safety goggles and see bug #4512 for more information).
13535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // (only IE 8 fails this test)
13545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        isSupported = ( tds[ 0 ].offsetHeight === 0 );
13555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
13565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        tds[ 0 ].style.display = "";
13575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        tds[ 1 ].style.display = "none";
13585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
13595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Check if empty table cells still have offsetWidth/Height
13605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // (IE < 8 fail this test)
13615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );
13625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        div.innerHTML = "";
13635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
13645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Check if div with explicit width and no margin-right incorrectly
13655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // gets computed margin-right based on width of container. For more
13665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // info see bug #3333
13675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Fails in WebKit before Feb 2011 nightlies
13685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
13695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( document.defaultView && document.defaultView.getComputedStyle ) {
13705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                marginDiv = document.createElement( "div" );
13715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                marginDiv.style.width = "0";
13725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                marginDiv.style.marginRight = "0";
13735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                div.appendChild( marginDiv );
13745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                support.reliableMarginRight =
13755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        ( parseInt( ( document.defaultView.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0;
13765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
13775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
13785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Remove the body element we added
13795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        testElement.innerHTML = "";
13805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        testElementParent.removeChild( testElement );
13815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
13825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Technique from Juriy Zaytsev
13835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/
13845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // We only care about the case where non-standard event systems
13855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // are used, namely in IE. Short-circuiting here helps us to
13865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // avoid an eval call (in setAttribute) which can cause CSP
13875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // to go haywire. See: https://developer.mozilla.org/en/Security/CSP
13885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( div.attachEvent ) {
13895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                for( i in {
13905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        submit: 1,
13915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        change: 1,
13925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        focusin: 1
13935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } ) {
13945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        eventName = "on" + i;
13955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        isSupported = ( eventName in div );
13965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( !isSupported ) {
13975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                div.setAttribute( eventName, "return;" );
13985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                isSupported = ( typeof div[ eventName ] === "function" );
13995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
14005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        support[ i + "Bubbles" ] = isSupported;
14015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
14025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
14035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
14045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Null connected elements to avoid leaks in IE
14055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        testElement = fragment = select = opt = body = marginDiv = div = input = null;
14065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
14075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        return support;
14085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)})();
14095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
14105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Keep track of boxModel
14115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.boxModel = jQuery.support.boxModel;
14125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
14135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
14145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
14155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
14165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var rbrace = /^(?:\{.*\}|\[.*\])$/,
14175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rmultiDash = /([A-Z])/g;
14185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
14195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.extend({
14205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        cache: {},
14215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
14225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Please use with caution
14235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        uuid: 0,
14245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
14255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Unique for each copy of jQuery on the page
14265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Non-digits removed to match rinlinejQuery
14275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ),
14285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
14295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // The following elements throw uncatchable exceptions if you
14305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // attempt to add expando properties to them.
14315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        noData: {
14325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                "embed": true,
14335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Ban all objects except for Flash (which handle expandos)
14345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
14355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                "applet": true
14365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
14375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
14385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        hasData: function( elem ) {
14395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];
14405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
14415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return !!elem && !isEmptyDataObject( elem );
14425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
14435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
14445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        data: function( elem, name, data, pvt /* Internal Use Only */ ) {
14455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( !jQuery.acceptData( elem ) ) {
14465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return;
14475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
14485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
14495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var thisCache, ret,
14505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        internalKey = jQuery.expando,
14515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        getByName = typeof name === "string",
14525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
14535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // We have to handle DOM nodes and JS objects differently because IE6-7
14545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // can't GC object references properly across the DOM-JS boundary
14555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        isNode = elem.nodeType,
14565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
14575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Only DOM nodes need the global jQuery cache; JS object data is
14585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // attached directly to the object so GC can occur automatically
14595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        cache = isNode ? jQuery.cache : elem,
14605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
14615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Only defining an ID for JS objects if its cache already exists allows
14625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // the code to shortcut on the same path as a DOM node with no cache
14635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        id = isNode ? elem[ jQuery.expando ] : elem[ jQuery.expando ] && jQuery.expando;
14645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
14655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Avoid doing any more work than we need to when trying to get data on an
14665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // object that has no data at all
14675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( (!id || (pvt && id && (cache[ id ] && !cache[ id ][ internalKey ]))) && getByName && data === undefined ) {
14685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return;
14695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
14705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
14715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( !id ) {
14725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Only DOM nodes need a new unique ID for each element since their data
14735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // ends up in the global cache
14745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( isNode ) {
14755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                elem[ jQuery.expando ] = id = ++jQuery.uuid;
14765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } else {
14775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                id = jQuery.expando;
14785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
14795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
14805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
14815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( !cache[ id ] ) {
14825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        cache[ id ] = {};
14835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
14845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery
14855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // metadata on plain JS objects when the object is serialized using
14865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // JSON.stringify
14875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( !isNode ) {
14885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                cache[ id ].toJSON = jQuery.noop;
14895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
14905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
14915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
14925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // An object can be passed to jQuery.data instead of a key/value pair; this gets
14935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // shallow copied over onto the existing cache
14945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( typeof name === "object" || typeof name === "function" ) {
14955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( pvt ) {
14965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                cache[ id ][ internalKey ] = jQuery.extend(cache[ id ][ internalKey ], name);
14975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } else {
14985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                cache[ id ] = jQuery.extend(cache[ id ], name);
14995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
15005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
15015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
15025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                thisCache = cache[ id ];
15035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
15045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Internal jQuery data is stored in a separate object inside the object's data
15055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // cache in order to avoid key collisions between internal data and user-defined
15065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // data
15075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( pvt ) {
15085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( !thisCache[ internalKey ] ) {
15095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                thisCache[ internalKey ] = {};
15105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
15115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
15125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        thisCache = thisCache[ internalKey ];
15135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
15145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
15155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( data !== undefined ) {
15165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        thisCache[ jQuery.camelCase( name ) ] = data;
15175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
15185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
15195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // TODO: This is a hack for 1.5 ONLY. It will be removed in 1.6. Users should
15205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // not attempt to inspect the internal events object using jQuery.data, as this
15215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // internal data object is undocumented and subject to change.
15225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( name === "events" && !thisCache[name] ) {
15235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return thisCache[ internalKey ] && thisCache[ internalKey ].events;
15245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
15255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
15265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Check for both converted-to-camel and non-converted data property names
15275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // If a data property was specified
15285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( getByName ) {
15295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
15305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // First Try to find as-is property data
15315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        ret = thisCache[ name ];
15325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
15335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Test for null|undefined property data
15345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( ret == null ) {
15355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
15365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Try to find the camelCased property
15375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                ret = thisCache[ jQuery.camelCase( name ) ];
15385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
15395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else {
15405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        ret = thisCache;
15415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
15425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
15435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return ret;
15445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
15455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
15465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        removeData: function( elem, name, pvt /* Internal Use Only */ ) {
15475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( !jQuery.acceptData( elem ) ) {
15485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return;
15495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
15505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
15515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var thisCache,
15525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
15535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Reference to internal data cache key
15545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        internalKey = jQuery.expando,
15555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
15565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        isNode = elem.nodeType,
15575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
15585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // See jQuery.data for more information
15595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        cache = isNode ? jQuery.cache : elem,
15605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
15615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // See jQuery.data for more information
15625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        id = isNode ? elem[ jQuery.expando ] : jQuery.expando;
15635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
15645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // If there is already no cache entry for this object, there is no
15655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // purpose in continuing
15665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( !cache[ id ] ) {
15675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return;
15685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
15695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
15705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( name ) {
15715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
15725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        thisCache = pvt ? cache[ id ][ internalKey ] : cache[ id ];
15735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
15745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( thisCache ) {
15755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
15765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Support interoperable removal of hyphenated or camelcased keys
15775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( !thisCache[ name ] ) {
15785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        name = jQuery.camelCase( name );
15795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
15805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
15815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                delete thisCache[ name ];
15825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
15835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // If there is no data left in the cache, we want to continue
15845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // and let the cache object itself get destroyed
15855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( !isEmptyDataObject(thisCache) ) {
15865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        return;
15875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
15885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
15895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
15905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
15915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // See jQuery.data for more information
15925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( pvt ) {
15935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        delete cache[ id ][ internalKey ];
15945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
15955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Don't destroy the parent cache unless the internal data object
15965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // had been the only thing left in it
15975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( !isEmptyDataObject(cache[ id ]) ) {
15985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return;
15995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
16005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
16015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
16025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var internalCache = cache[ id ][ internalKey ];
16035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
16045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Browsers that fail expando deletion also refuse to delete expandos on
16055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // the window, but it will allow it on all other JS objects; other browsers
16065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // don't care
16075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Ensure that `cache` is not a window object #10080
16085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( jQuery.support.deleteExpando || !cache.setInterval ) {
16095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        delete cache[ id ];
16105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else {
16115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        cache[ id ] = null;
16125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
16135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
16145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // We destroyed the entire user cache at once because it's faster than
16155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // iterating through each key, but we need to continue to persist internal
16165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // data if it existed
16175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( internalCache ) {
16185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        cache[ id ] = {};
16195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery
16205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // metadata on plain JS objects when the object is serialized using
16215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // JSON.stringify
16225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( !isNode ) {
16235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                cache[ id ].toJSON = jQuery.noop;
16245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
16255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
16265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        cache[ id ][ internalKey ] = internalCache;
16275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
16285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Otherwise, we need to eliminate the expando on the node to avoid
16295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // false lookups in the cache for entries that no longer exist
16305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else if ( isNode ) {
16315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // IE does not allow us to delete expando properties from nodes,
16325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // nor does it have a removeAttribute function on Document nodes;
16335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // we must handle all of these cases
16345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( jQuery.support.deleteExpando ) {
16355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                delete elem[ jQuery.expando ];
16365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } else if ( elem.removeAttribute ) {
16375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                elem.removeAttribute( jQuery.expando );
16385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } else {
16395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                elem[ jQuery.expando ] = null;
16405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
16415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
16425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
16435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
16445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // For internal use only.
16455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        _data: function( elem, name, data ) {
16465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return jQuery.data( elem, name, data, true );
16475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
16485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
16495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // A method for determining if a DOM node can handle the data expando
16505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        acceptData: function( elem ) {
16515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( elem.nodeName ) {
16525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var match = jQuery.noData[ elem.nodeName.toLowerCase() ];
16535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
16545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( match ) {
16555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return !(match === true || elem.getAttribute("classid") !== match);
16565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
16575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
16585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
16595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return true;
16605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
16615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)});
16625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
16635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.fn.extend({
16645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        data: function( key, value ) {
16655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var data = null;
16665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
16675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( typeof key === "undefined" ) {
16685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( this.length ) {
16695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                data = jQuery.data( this[0] );
16705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
16715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( this[0].nodeType === 1 ) {
16725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                            var attr = this[0].attributes, name;
16735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        for ( var i = 0, l = attr.length; i < l; i++ ) {
16745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                name = attr[i].name;
16755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
16765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                if ( name.indexOf( "data-" ) === 0 ) {
16775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        name = jQuery.camelCase( name.substring(5) );
16785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
16795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        dataAttr( this[0], name, data[ name ] );
16805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                }
16815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
16825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
16835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
16845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
16855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return data;
16865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
16875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else if ( typeof key === "object" ) {
16885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return this.each(function() {
16895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery.data( this, key );
16905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        });
16915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
16925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
16935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var parts = key.split(".");
16945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                parts[1] = parts[1] ? "." + parts[1] : "";
16955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
16965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( value === undefined ) {
16975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);
16985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
16995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Try to fetch any internally stored data first
17005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( data === undefined && this.length ) {
17015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                data = jQuery.data( this[0], key );
17025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                data = dataAttr( this[0], key, data );
17035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
17045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
17055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return data === undefined && parts[1] ?
17065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                this.data( parts[0] ) :
17075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                data;
17085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
17095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else {
17105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return this.each(function() {
17115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                var $this = jQuery( this ),
17125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        args = [ parts[0], value ];
17135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
17145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                $this.triggerHandler( "setData" + parts[1] + "!", args );
17155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery.data( this, key, value );
17165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                $this.triggerHandler( "changeData" + parts[1] + "!", args );
17175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        });
17185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
17195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
17205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
17215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        removeData: function( key ) {
17225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this.each(function() {
17235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        jQuery.removeData( this, key );
17245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                });
17255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
17265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)});
17275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
17285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function dataAttr( elem, key, data ) {
17295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // If nothing was found internally, try to fetch any
17305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // data from the HTML5 data-* attribute
17315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( data === undefined && elem.nodeType === 1 ) {
17325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
17335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
17345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
17355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                data = elem.getAttribute( name );
17365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
17375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( typeof data === "string" ) {
17385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        try {
17395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                data = data === "true" ? true :
17405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                data === "false" ? false :
17415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                data === "null" ? null :
17425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                !jQuery.isNaN( data ) ? parseFloat( data ) :
17435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        rbrace.test( data ) ? jQuery.parseJSON( data ) :
17445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        data;
17455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } catch( e ) {}
17465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
17475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Make sure we set the data so it isn't changed later
17485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        jQuery.data( elem, key, data );
17495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
17505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else {
17515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        data = undefined;
17525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
17535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
17545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
17555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        return data;
17565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
17575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
17585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// TODO: This is a hack for 1.5 ONLY to allow objects with a single toJSON
17595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// property to be considered empty objects; this property always exists in
17605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// order to make sure JSON.stringify does not expose internal metadata
17615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function isEmptyDataObject( obj ) {
17625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        for ( var name in obj ) {
17635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( name !== "toJSON" ) {
17645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return false;
17655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
17665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
17675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
17685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        return true;
17695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
17705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
17715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
17725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
17735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
17745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function handleQueueMarkDefer( elem, type, src ) {
17755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        var deferDataKey = type + "defer",
17765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                queueDataKey = type + "queue",
17775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                markDataKey = type + "mark",
17785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                defer = jQuery.data( elem, deferDataKey, undefined, true );
17795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( defer &&
17805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                ( src === "queue" || !jQuery.data( elem, queueDataKey, undefined, true ) ) &&
17815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                ( src === "mark" || !jQuery.data( elem, markDataKey, undefined, true ) ) ) {
17825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Give room for hard-coded callbacks to fire first
17835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // and eventually mark/queue something else on the element
17845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                setTimeout( function() {
17855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( !jQuery.data( elem, queueDataKey, undefined, true ) &&
17865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                !jQuery.data( elem, markDataKey, undefined, true ) ) {
17875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery.removeData( elem, deferDataKey, true );
17885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                defer.resolve();
17895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
17905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }, 0 );
17915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
17925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
17935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
17945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.extend({
17955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
17965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        _mark: function( elem, type ) {
17975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( elem ) {
17985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        type = (type || "fx") + "mark";
17995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        jQuery.data( elem, type, (jQuery.data(elem,type,undefined,true) || 0) + 1, true );
18005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
18015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
18025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
18035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        _unmark: function( force, elem, type ) {
18045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( force !== true ) {
18055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        type = elem;
18065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        elem = force;
18075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        force = false;
18085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
18095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( elem ) {
18105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        type = type || "fx";
18115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var key = type + "mark",
18125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                count = force ? 0 : ( (jQuery.data( elem, key, undefined, true) || 1 ) - 1 );
18135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( count ) {
18145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery.data( elem, key, count, true );
18155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } else {
18165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery.removeData( elem, key, true );
18175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                handleQueueMarkDefer( elem, type, "mark" );
18185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
18195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
18205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
18215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
18225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        queue: function( elem, type, data ) {
18235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( elem ) {
18245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        type = (type || "fx") + "queue";
18255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var q = jQuery.data( elem, type, undefined, true );
18265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Speed up dequeue by getting out quickly if this is just a lookup
18275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( data ) {
18285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( !q || jQuery.isArray(data) ) {
18295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        q = jQuery.data( elem, type, jQuery.makeArray(data), true );
18305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                } else {
18315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        q.push( data );
18325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
18335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
18345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return q || [];
18355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
18365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
18375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
18385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        dequeue: function( elem, type ) {
18395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                type = type || "fx";
18405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
18415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var queue = jQuery.queue( elem, type ),
18425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        fn = queue.shift(),
18435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        defer;
18445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
18455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // If the fx queue is dequeued, always remove the progress sentinel
18465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( fn === "inprogress" ) {
18475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        fn = queue.shift();
18485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
18495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
18505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( fn ) {
18515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Add a progress sentinel to prevent the fx queue from being
18525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // automatically dequeued
18535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( type === "fx" ) {
18545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                queue.unshift("inprogress");
18555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
18565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
18575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        fn.call(elem, function() {
18585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery.dequeue(elem, type);
18595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        });
18605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
18615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
18625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( !queue.length ) {
18635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        jQuery.removeData( elem, type + "queue", true );
18645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        handleQueueMarkDefer( elem, type, "queue" );
18655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
18665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
18675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)});
18685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
18695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.fn.extend({
18705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        queue: function( type, data ) {
18715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( typeof type !== "string" ) {
18725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        data = type;
18735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        type = "fx";
18745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
18755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
18765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( data === undefined ) {
18775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return jQuery.queue( this[0], type );
18785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
18795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this.each(function() {
18805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var queue = jQuery.queue( this, type, data );
18815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
18825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( type === "fx" && queue[0] !== "inprogress" ) {
18835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery.dequeue( this, type );
18845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
18855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                });
18865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
18875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        dequeue: function( type ) {
18885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this.each(function() {
18895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        jQuery.dequeue( this, type );
18905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                });
18915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
18925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Based off of the plugin by Clint Helfers, with permission.
18935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // http://blindsignals.com/index.php/2009/07/jquery-delay/
18945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        delay: function( time, type ) {
18955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                time = jQuery.fx ? jQuery.fx.speeds[time] || time : time;
18965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                type = type || "fx";
18975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
18985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this.queue( type, function() {
18995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var elem = this;
19005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        setTimeout(function() {
19015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery.dequeue( elem, type );
19025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }, time );
19035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                });
19045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
19055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        clearQueue: function( type ) {
19065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this.queue( type || "fx", [] );
19075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
19085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Get a promise resolved when queues of a certain type
19095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // are emptied (fx is the type by default)
19105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        promise: function( type, object ) {
19115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( typeof type !== "string" ) {
19125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        object = type;
19135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        type = undefined;
19145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
19155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                type = type || "fx";
19165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var defer = jQuery.Deferred(),
19175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        elements = this,
19185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        i = elements.length,
19195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        count = 1,
19205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        deferDataKey = type + "defer",
19215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        queueDataKey = type + "queue",
19225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        markDataKey = type + "mark",
19235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        tmp;
19245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                function resolve() {
19255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( !( --count ) ) {
19265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                defer.resolveWith( elements, [ elements ] );
19275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
19285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
19295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                while( i-- ) {
19305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) ||
19315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        ( jQuery.data( elements[ i ], queueDataKey, undefined, true ) ||
19325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                jQuery.data( elements[ i ], markDataKey, undefined, true ) ) &&
19335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        jQuery.data( elements[ i ], deferDataKey, jQuery._Deferred(), true ) )) {
19345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                count++;
19355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                tmp.done( resolve );
19365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
19375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
19385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                resolve();
19395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return defer.promise();
19405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
19415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)});
19425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
19435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
19445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
19455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
19465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var rclass = /[\n\t\r]/g,
19475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rspace = /\s+/,
19485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rreturn = /\r/g,
19495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rtype = /^(?:button|input)$/i,
19505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rfocusable = /^(?:button|input|object|select|textarea)$/i,
19515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rclickable = /^a(?:rea)?$/i,
19525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
19535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        nodeHook, boolHook;
19545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
19555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.fn.extend({
19565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        attr: function( name, value ) {
19575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return jQuery.access( this, name, value, true, jQuery.attr );
19585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
19595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
19605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        removeAttr: function( name ) {
19615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this.each(function() {
19625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        jQuery.removeAttr( this, name );
19635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                });
19645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
19655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
19665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        prop: function( name, value ) {
19675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return jQuery.access( this, name, value, true, jQuery.prop );
19685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
19695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
19705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        removeProp: function( name ) {
19715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                name = jQuery.propFix[ name ] || name;
19725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this.each(function() {
19735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // try/catch handles cases where IE balks (such as removing a property on window)
19745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        try {
19755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                this[ name ] = undefined;
19765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                delete this[ name ];
19775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } catch( e ) {}
19785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                });
19795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
19805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
19815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        addClass: function( value ) {
19825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var classNames, i, l, elem,
19835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        setClass, c, cl;
19845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
19855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( jQuery.isFunction( value ) ) {
19865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return this.each(function( j ) {
19875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery( this ).addClass( value.call(this, j, this.className) );
19885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        });
19895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
19905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
19915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( value && typeof value === "string" ) {
19925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        classNames = value.split( rspace );
19935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
19945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        for ( i = 0, l = this.length; i < l; i++ ) {
19955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                elem = this[ i ];
19965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
19975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( elem.nodeType === 1 ) {
19985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( !elem.className && classNames.length === 1 ) {
19995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                elem.className = value;
20005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
20015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        } else {
20025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                setClass = " " + elem.className + " ";
20035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
20045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                for ( c = 0, cl = classNames.length; c < cl; c++ ) {
20055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        if ( !~setClass.indexOf( " " + classNames[ c ] + " " ) ) {
20065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                setClass += classNames[ c ] + " ";
20075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        }
20085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                }
20095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                elem.className = jQuery.trim( setClass );
20105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
20115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
20125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
20135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
20145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
20155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this;
20165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
20175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
20185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        removeClass: function( value ) {
20195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var classNames, i, l, elem, className, c, cl;
20205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
20215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( jQuery.isFunction( value ) ) {
20225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return this.each(function( j ) {
20235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery( this ).removeClass( value.call(this, j, this.className) );
20245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        });
20255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
20265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
20275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( (value && typeof value === "string") || value === undefined ) {
20285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        classNames = (value || "").split( rspace );
20295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
20305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        for ( i = 0, l = this.length; i < l; i++ ) {
20315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                elem = this[ i ];
20325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
20335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( elem.nodeType === 1 && elem.className ) {
20345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( value ) {
20355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                className = (" " + elem.className + " ").replace( rclass, " " );
20365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                for ( c = 0, cl = classNames.length; c < cl; c++ ) {
20375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        className = className.replace(" " + classNames[ c ] + " ", " ");
20385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                }
20395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                elem.className = jQuery.trim( className );
20405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
20415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        } else {
20425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                elem.className = "";
20435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
20445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
20455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
20465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
20475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
20485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this;
20495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
20505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
20515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        toggleClass: function( value, stateVal ) {
20525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var type = typeof value,
20535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        isBool = typeof stateVal === "boolean";
20545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
20555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( jQuery.isFunction( value ) ) {
20565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return this.each(function( i ) {
20575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
20585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        });
20595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
20605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
20615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this.each(function() {
20625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( type === "string" ) {
20635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // toggle individual class names
20645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                var className,
20655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        i = 0,
20665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        self = jQuery( this ),
20675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        state = stateVal,
20685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        classNames = value.split( rspace );
20695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
20705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                while ( (className = classNames[ i++ ]) ) {
20715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // check each className given, space seperated list
20725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        state = isBool ? state : !self.hasClass( className );
20735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        self[ state ? "addClass" : "removeClass" ]( className );
20745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
20755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
20765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } else if ( type === "undefined" || type === "boolean" ) {
20775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( this.className ) {
20785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // store className if set
20795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        jQuery._data( this, "__className__", this.className );
20805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
20815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
20825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // toggle whole className
20835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || "";
20845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
20855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                });
20865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
20875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
20885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        hasClass: function( selector ) {
20895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var className = " " + selector + " ";
20905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                for ( var i = 0, l = this.length; i < l; i++ ) {
20915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) {
20925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return true;
20935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
20945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
20955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
20965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return false;
20975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
20985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
20995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        val: function( value ) {
21005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var hooks, ret,
21015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        elem = this[0];
21025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
21035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( !arguments.length ) {
21045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( elem ) {
21055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                hooks = jQuery.valHooks[ elem.nodeName.toLowerCase() ] || jQuery.valHooks[ elem.type ];
21065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
21075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
21085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        return ret;
21095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
21105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
21115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                ret = elem.value;
21125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
21135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return typeof ret === "string" ?
21145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // handle most common string cases
21155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        ret.replace(rreturn, "") :
21165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // handle cases where value is null/undef or number
21175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        ret == null ? "" : ret;
21185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
21195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
21205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return undefined;
21215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
21225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
21235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var isFunction = jQuery.isFunction( value );
21245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
21255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this.each(function( i ) {
21265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var self = jQuery(this), val;
21275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
21285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( this.nodeType !== 1 ) {
21295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return;
21305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
21315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
21325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( isFunction ) {
21335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                val = value.call( this, i, self.val() );
21345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } else {
21355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                val = value;
21365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
21375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
21385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Treat null/undefined as ""; convert numbers to string
21395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( val == null ) {
21405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                val = "";
21415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } else if ( typeof val === "number" ) {
21425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                val += "";
21435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } else if ( jQuery.isArray( val ) ) {
21445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                val = jQuery.map(val, function ( value ) {
21455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        return value == null ? "" : value + "";
21465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                });
21475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
21485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
21495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        hooks = jQuery.valHooks[ this.nodeName.toLowerCase() ] || jQuery.valHooks[ this.type ];
21505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
21515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // If set returns undefined, fall back to normal setting
21525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
21535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                this.value = val;
21545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
21555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                });
21565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
21575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)});
21585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
21595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.extend({
21605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        valHooks: {
21615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                option: {
21625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        get: function( elem ) {
21635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // attributes.value is undefined in Blackberry 4.7 but
21645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // uses .value. See #6932
21655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                var val = elem.attributes.value;
21665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return !val || val.specified ? elem.value : elem.text;
21675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
21685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
21695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                select: {
21705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        get: function( elem ) {
21715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                var value,
21725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        index = elem.selectedIndex,
21735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        values = [],
21745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        options = elem.options,
21755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        one = elem.type === "select-one";
21765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
21775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Nothing was selected
21785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( index < 0 ) {
21795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        return null;
21805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
21815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
21825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Loop through all the selected options
21835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {
21845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        var option = options[ i ];
21855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
21865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // Don't return options that are disabled or in a disabled optgroup
21875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) &&
21885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) {
21895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
21905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                // Get the specific value for the option
21915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                value = jQuery( option ).val();
21925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
21935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                // We don't need an array for one selects
21945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                if ( one ) {
21955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        return value;
21965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                }
21975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
21985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                // Multi-Selects return an array
21995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                values.push( value );
22005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
22015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
22025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
22035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Fixes Bug #2551 -- select.val() broken in IE after form.reset()
22045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( one && !values.length && options.length ) {
22055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        return jQuery( options[ index ] ).val();
22065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
22075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
22085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return values;
22095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        },
22105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
22115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        set: function( elem, value ) {
22125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                var values = jQuery.makeArray( value );
22135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
22145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery(elem).find("option").each(function() {
22155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;
22165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                });
22175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
22185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( !values.length ) {
22195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        elem.selectedIndex = -1;
22205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
22215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return values;
22225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
22235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
22245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
22255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
22265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        attrFn: {
22275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                val: true,
22285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                css: true,
22295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                html: true,
22305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                text: true,
22315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                data: true,
22325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                width: true,
22335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                height: true,
22345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                offset: true
22355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
22365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
22375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        attrFix: {
22385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Always normalize to ensure hook usage
22395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                tabindex: "tabIndex"
22405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
22415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
22425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        attr: function( elem, name, value, pass ) {
22435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var nType = elem.nodeType;
22445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
22455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // don't get/set attributes on text, comment and attribute nodes
22465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
22475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return undefined;
22485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
22495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
22505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( pass && name in jQuery.attrFn ) {
22515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return jQuery( elem )[ name ]( value );
22525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
22535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
22545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Fallback to prop when attributes are not supported
22555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( !("getAttribute" in elem) ) {
22565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return jQuery.prop( elem, name, value );
22575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
22585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
22595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var ret, hooks,
22605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
22615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
22625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Normalize the name if needed
22635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( notxml ) {
22645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        name = jQuery.attrFix[ name ] || name;
22655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
22665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        hooks = jQuery.attrHooks[ name ];
22675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
22685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( !hooks ) {
22695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Use boolHook for boolean attributes
22705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( rboolean.test( name ) ) {
22715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        hooks = boolHook;
22725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
22735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Use nodeHook if available( IE6/7 )
22745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                } else if ( nodeHook ) {
22755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        hooks = nodeHook;
22765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
22775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
22785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
22795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
22805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( value !== undefined ) {
22815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
22825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( value === null ) {
22835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery.removeAttr( elem, name );
22845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return undefined;
22855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
22865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) {
22875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return ret;
22885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
22895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } else {
22905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                elem.setAttribute( name, "" + value );
22915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return value;
22925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
22935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
22945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) {
22955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return ret;
22965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
22975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else {
22985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
22995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        ret = elem.getAttribute( name );
23005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
23015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Non-existent attributes return null, we normalize to undefined
23025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return ret === null ?
23035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                undefined :
23045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                ret;
23055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
23065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
23075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
23085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        removeAttr: function( elem, name ) {
23095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var propName;
23105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( elem.nodeType === 1 ) {
23115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        name = jQuery.attrFix[ name ] || name;
23125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
23135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        jQuery.attr( elem, name, "" );
23145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        elem.removeAttribute( name );
23155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
23165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Set corresponding property to false for boolean attributes
23175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( rboolean.test( name ) && (propName = jQuery.propFix[ name ] || name) in elem ) {
23185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                elem[ propName ] = false;
23195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
23205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
23215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
23225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
23235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        attrHooks: {
23245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                type: {
23255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        set: function( elem, value ) {
23265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // We can't allow the type property to be changed (since it causes problems in IE)
23275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( rtype.test( elem.nodeName ) && elem.parentNode ) {
23285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        jQuery.error( "type property can't be changed" );
23295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                } else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) {
23305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // Setting the type on a radio button after the value resets the value in IE6-9
23315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // Reset value to it's default in case type is set after value
23325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // This is for element creation
23335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        var val = elem.value;
23345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        elem.setAttribute( "type", value );
23355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( val ) {
23365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                elem.value = val;
23375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
23385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        return value;
23395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
23405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
23415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
23425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Use the value property for back compat
23435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Use the nodeHook for button elements in IE6/7 (#1954)
23445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                value: {
23455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        get: function( elem, name ) {
23465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( nodeHook && jQuery.nodeName( elem, "button" ) ) {
23475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        return nodeHook.get( elem, name );
23485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
23495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return name in elem ?
23505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        elem.value :
23515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        null;
23525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        },
23535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        set: function( elem, value, name ) {
23545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( nodeHook && jQuery.nodeName( elem, "button" ) ) {
23555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        return nodeHook.set( elem, value, name );
23565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
23575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Does not return so that setAttribute is also used
23585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                elem.value = value;
23595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
23605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
23615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
23625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
23635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        propFix: {
23645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                tabindex: "tabIndex",
23655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                readonly: "readOnly",
23665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                "for": "htmlFor",
23675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                "class": "className",
23685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                maxlength: "maxLength",
23695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                cellspacing: "cellSpacing",
23705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                cellpadding: "cellPadding",
23715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                rowspan: "rowSpan",
23725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                colspan: "colSpan",
23735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                usemap: "useMap",
23745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                frameborder: "frameBorder",
23755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                contenteditable: "contentEditable"
23765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
23775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
23785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        prop: function( elem, name, value ) {
23795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var nType = elem.nodeType;
23805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
23815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // don't get/set properties on text, comment and attribute nodes
23825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
23835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return undefined;
23845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
23855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
23865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var ret, hooks,
23875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
23885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
23895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( notxml ) {
23905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Fix name and attach hooks
23915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        name = jQuery.propFix[ name ] || name;
23925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        hooks = jQuery.propHooks[ name ];
23935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
23945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
23955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( value !== undefined ) {
23965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
23975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return ret;
23985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
23995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } else {
24005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return (elem[ name ] = value);
24015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
24025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
24035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else {
24045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
24055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return ret;
24065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
24075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } else {
24085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return elem[ name ];
24095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
24105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
24115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
24125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
24135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        propHooks: {
24145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                tabIndex: {
24155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        get: function( elem ) {
24165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
24175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
24185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                var attributeNode = elem.getAttributeNode("tabindex");
24195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
24205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return attributeNode && attributeNode.specified ?
24215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        parseInt( attributeNode.value, 10 ) :
24225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
24235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                0 :
24245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                undefined;
24255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
24265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
24275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
24285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)});
24295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
24305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Add the tabindex propHook to attrHooks for back-compat
24315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.attrHooks.tabIndex = jQuery.propHooks.tabIndex;
24325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
24335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Hook for boolean attributes
24345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)boolHook = {
24355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        get: function( elem, name ) {
24365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Align boolean attributes with corresponding properties
24375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Fall back to attribute presence where some booleans are not supported
24385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var attrNode;
24395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return jQuery.prop( elem, name ) === true || ( attrNode = elem.getAttributeNode( name ) ) && attrNode.nodeValue !== false ?
24405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        name.toLowerCase() :
24415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        undefined;
24425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
24435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        set: function( elem, value, name ) {
24445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var propName;
24455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( value === false ) {
24465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Remove boolean attributes when set to false
24475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        jQuery.removeAttr( elem, name );
24485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else {
24495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // value is true since we know at this point it's type boolean and not false
24505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Set boolean attributes to the same name and set the DOM property
24515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        propName = jQuery.propFix[ name ] || name;
24525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( propName in elem ) {
24535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Only set the IDL specifically if it already exists on the element
24545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                elem[ propName ] = true;
24555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
24565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
24575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        elem.setAttribute( name, name.toLowerCase() );
24585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
24595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return name;
24605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
24615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
24625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
24635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// IE6/7 do not support getting/setting some attributes with get/setAttribute
24645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if ( !jQuery.support.getSetAttribute ) {
24655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
24665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Use this for any attribute in IE6/7
24675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // This fixes almost every IE6/7 issue
24685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        nodeHook = jQuery.valHooks.button = {
24695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                get: function( elem, name ) {
24705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var ret;
24715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        ret = elem.getAttributeNode( name );
24725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Return undefined if nodeValue is empty string
24735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return ret && ret.nodeValue !== "" ?
24745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                ret.nodeValue :
24755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                undefined;
24765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
24775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                set: function( elem, value, name ) {
24785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Set the existing or create a new attribute node
24795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var ret = elem.getAttributeNode( name );
24805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( !ret ) {
24815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                ret = document.createAttribute( name );
24825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                elem.setAttributeNode( ret );
24835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
24845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return (ret.nodeValue = value + "");
24855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
24865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        };
24875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
24885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Set width and height to auto instead of 0 on empty string( Bug #8150 )
24895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // This is for removals
24905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        jQuery.each([ "width", "height" ], function( i, name ) {
24915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
24925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        set: function( elem, value ) {
24935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( value === "" ) {
24945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        elem.setAttribute( name, "auto" );
24955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        return value;
24965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
24975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
24985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                });
24995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        });
25005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
25015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
25025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
25035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Some attributes require a special call on IE
25045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if ( !jQuery.support.hrefNormalized ) {
25055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        jQuery.each([ "href", "src", "width", "height" ], function( i, name ) {
25065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
25075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        get: function( elem ) {
25085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                var ret = elem.getAttribute( name, 2 );
25095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return ret === null ? undefined : ret;
25105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
25115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                });
25125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        });
25135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
25145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
25155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if ( !jQuery.support.style ) {
25165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        jQuery.attrHooks.style = {
25175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                get: function( elem ) {
25185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Return undefined in the case of empty string
25195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Normalize to lowercase since IE uppercases css property names
25205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return elem.style.cssText.toLowerCase() || undefined;
25215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
25225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                set: function( elem, value ) {
25235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return (elem.style.cssText = "" + value);
25245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
25255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        };
25265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
25275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
25285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Safari mis-reports the default selected property of an option
25295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Accessing the parent's selectedIndex property fixes it
25305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if ( !jQuery.support.optSelected ) {
25315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, {
25325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                get: function( elem ) {
25335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var parent = elem.parentNode;
25345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
25355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( parent ) {
25365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                parent.selectedIndex;
25375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
25385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Make sure that it also works with optgroups, see #5701
25395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( parent.parentNode ) {
25405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        parent.parentNode.selectedIndex;
25415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
25425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
25435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return null;
25445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
25455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        });
25465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
25475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
25485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Radios and checkboxes getter/setter
25495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if ( !jQuery.support.checkOn ) {
25505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        jQuery.each([ "radio", "checkbox" ], function() {
25515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                jQuery.valHooks[ this ] = {
25525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        get: function( elem ) {
25535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified
25545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return elem.getAttribute("value") === null ? "on" : elem.value;
25555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
25565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                };
25575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        });
25585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
25595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.each([ "radio", "checkbox" ], function() {
25605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], {
25615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                set: function( elem, value ) {
25625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( jQuery.isArray( value ) ) {
25635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return (elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0);
25645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
25655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
25665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        });
25675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)});
25685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
25695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
25705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
25715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
25725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var rnamespaces = /\.(.*)$/,
25735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rformElems = /^(?:textarea|input|select)$/i,
25745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rperiod = /\./g,
25755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rspaces = / /g,
25765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rescape = /[^\w\s.|`]/g,
25775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        fcleanup = function( nm ) {
25785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return nm.replace(rescape, "\\$&");
25795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        };
25805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
25815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/*
25825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * A number of helper functions used for managing events.
25835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Many of the ideas behind this code originated from
25845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Dean Edwards' addEvent library.
25855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */
25865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.event = {
25875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
25885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Bind an event to an element
25895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Original by Dean Edwards
25905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        add: function( elem, types, handler, data ) {
25915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
25925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return;
25935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
25945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
25955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( handler === false ) {
25965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        handler = returnFalse;
25975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else if ( !handler ) {
25985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Fixes bug #7229. Fix recommended by jdalton
25995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return;
26005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
26015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
26025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var handleObjIn, handleObj;
26035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
26045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( handler.handler ) {
26055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        handleObjIn = handler;
26065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        handler = handleObjIn.handler;
26075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
26085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
26095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Make sure that the function being executed has a unique ID
26105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( !handler.guid ) {
26115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        handler.guid = jQuery.guid++;
26125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
26135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
26145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Init the element's event structure
26155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var elemData = jQuery._data( elem );
26165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
26175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // If no elemData is found then we must be trying to bind to one of the
26185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // banned noData elements
26195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( !elemData ) {
26205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return;
26215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
26225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
26235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var events = elemData.events,
26245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        eventHandle = elemData.handle;
26255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
26265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( !events ) {
26275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        elemData.events = events = {};
26285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
26295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
26305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( !eventHandle ) {
26315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        elemData.handle = eventHandle = function( e ) {
26325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Discard the second event of a jQuery.event.trigger() and
26335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // when an event is called after a page has unloaded
26345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ?
26355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        jQuery.event.handle.apply( eventHandle.elem, arguments ) :
26365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        undefined;
26375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        };
26385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
26395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
26405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Add elem as a property of the handle function
26415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // This is to prevent a memory leak with non-native events in IE.
26425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                eventHandle.elem = elem;
26435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
26445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Handle multiple events separated by a space
26455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // jQuery(...).bind("mouseover mouseout", fn);
26465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                types = types.split(" ");
26475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
26485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var type, i = 0, namespaces;
26495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
26505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                while ( (type = types[ i++ ]) ) {
26515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        handleObj = handleObjIn ?
26525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery.extend({}, handleObjIn) :
26535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                { handler: handler, data: data };
26545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
26555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Namespaced event handlers
26565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( type.indexOf(".") > -1 ) {
26575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                namespaces = type.split(".");
26585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                type = namespaces.shift();
26595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                handleObj.namespace = namespaces.slice(0).sort().join(".");
26605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
26615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } else {
26625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                namespaces = [];
26635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                handleObj.namespace = "";
26645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
26655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
26665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        handleObj.type = type;
26675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( !handleObj.guid ) {
26685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                handleObj.guid = handler.guid;
26695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
26705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
26715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Get the current list of functions bound to this event
26725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var handlers = events[ type ],
26735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                special = jQuery.event.special[ type ] || {};
26745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
26755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Init the event handler queue
26765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( !handlers ) {
26775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                handlers = events[ type ] = [];
26785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
26795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Check for a special event handler
26805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Only use addEventListener/attachEvent if the special
26815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // events handler returns false
26825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
26835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // Bind the global event handler to the element
26845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( elem.addEventListener ) {
26855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                elem.addEventListener( type, eventHandle, false );
26865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
26875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        } else if ( elem.attachEvent ) {
26885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                elem.attachEvent( "on" + type, eventHandle );
26895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
26905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
26915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
26925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
26935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( special.add ) {
26945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                special.add.call( elem, handleObj );
26955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
26965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( !handleObj.handler.guid ) {
26975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        handleObj.handler.guid = handler.guid;
26985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
26995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
27005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
27015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Add the function to the element's handler list
27025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        handlers.push( handleObj );
27035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
27045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Keep track of which events have been used, for event optimization
27055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        jQuery.event.global[ type ] = true;
27065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
27075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
27085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Nullify elem to prevent memory leaks in IE
27095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                elem = null;
27105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
27115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
27125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        global: {},
27135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
27145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Detach an event or set of events from an element
27155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        remove: function( elem, types, handler, pos ) {
27165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // don't do events on text and comment nodes
27175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
27185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return;
27195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
27205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
27215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( handler === false ) {
27225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        handler = returnFalse;
27235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
27245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
27255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var ret, type, fn, j, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType,
27265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        elemData = jQuery.hasData( elem ) && jQuery._data( elem ),
27275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        events = elemData && elemData.events;
27285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
27295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( !elemData || !events ) {
27305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return;
27315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
27325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
27335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // types is actually an event object here
27345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( types && types.type ) {
27355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        handler = types.handler;
27365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        types = types.type;
27375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
27385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
27395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Unbind all events for the element
27405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( !types || typeof types === "string" && types.charAt(0) === "." ) {
27415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        types = types || "";
27425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
27435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        for ( type in events ) {
27445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery.event.remove( elem, type + types );
27455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
27465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
27475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return;
27485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
27495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
27505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Handle multiple events separated by a space
27515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // jQuery(...).unbind("mouseover mouseout", fn);
27525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                types = types.split(" ");
27535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
27545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                while ( (type = types[ i++ ]) ) {
27555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        origType = type;
27565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        handleObj = null;
27575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        all = type.indexOf(".") < 0;
27585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        namespaces = [];
27595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
27605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( !all ) {
27615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Namespaced event handlers
27625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                namespaces = type.split(".");
27635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                type = namespaces.shift();
27645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
27655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                namespace = new RegExp("(^|\\.)" +
27665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        jQuery.map( namespaces.slice(0).sort(), fcleanup ).join("\\.(?:.*\\.)?") + "(\\.|$)");
27675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
27685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
27695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        eventType = events[ type ];
27705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
27715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( !eventType ) {
27725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                continue;
27735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
27745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
27755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( !handler ) {
27765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                for ( j = 0; j < eventType.length; j++ ) {
27775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        handleObj = eventType[ j ];
27785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
27795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( all || namespace.test( handleObj.namespace ) ) {
27805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                jQuery.event.remove( elem, origType, handleObj.handler, j );
27815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                eventType.splice( j--, 1 );
27825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
27835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
27845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
27855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                continue;
27865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
27875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
27885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        special = jQuery.event.special[ type ] || {};
27895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
27905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        for ( j = pos || 0; j < eventType.length; j++ ) {
27915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                handleObj = eventType[ j ];
27925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
27935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( handler.guid === handleObj.guid ) {
27945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // remove the given handler for the given type
27955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( all || namespace.test( handleObj.namespace ) ) {
27965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                if ( pos == null ) {
27975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        eventType.splice( j--, 1 );
27985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                }
27995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
28005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                if ( special.remove ) {
28015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        special.remove.call( elem, handleObj );
28025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                }
28035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
28045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
28055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( pos != null ) {
28065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                break;
28075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
28085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
28095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
28105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
28115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // remove generic event handler if no more handlers exist
28125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( eventType.length === 0 || pos != null && eventType.length === 1 ) {
28135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {
28145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        jQuery.removeEvent( elem, type, elemData.handle );
28155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
28165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
28175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                ret = null;
28185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                delete events[ type ];
28195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
28205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
28215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
28225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Remove the expando if it's no longer used
28235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( jQuery.isEmptyObject( events ) ) {
28245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var handle = elemData.handle;
28255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( handle ) {
28265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                handle.elem = null;
28275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
28285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
28295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        delete elemData.events;
28305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        delete elemData.handle;
28315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
28325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( jQuery.isEmptyObject( elemData ) ) {
28335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery.removeData( elem, undefined, true );
28345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
28355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
28365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
28375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
28385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Events that are safe to short-circuit if no handlers are attached.
28395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Native DOM events should not be added, they may have inline handlers.
28405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        customEvent: {
28415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                "getData": true,
28425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                "setData": true,
28435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                "changeData": true
28445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
28455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
28465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        trigger: function( event, data, elem, onlyHandlers ) {
28475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Event object or event type
28485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var type = event.type || event,
28495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        namespaces = [],
28505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        exclusive;
28515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
28525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( type.indexOf("!") >= 0 ) {
28535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Exclusive events trigger only for the exact event (no namespaces)
28545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        type = type.slice(0, -1);
28555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        exclusive = true;
28565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
28575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
28585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( type.indexOf(".") >= 0 ) {
28595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Namespaced trigger; create a regexp to match event type in handle()
28605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        namespaces = type.split(".");
28615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        type = namespaces.shift();
28625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        namespaces.sort();
28635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
28645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
28655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) {
28665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // No jQuery handlers for this event type, and it can't have inline handlers
28675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return;
28685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
28695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
28705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Caller can pass in an Event, Object, or just an event type string
28715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                event = typeof event === "object" ?
28725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // jQuery.Event object
28735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        event[ jQuery.expando ] ? event :
28745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Object literal
28755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        new jQuery.Event( type, event ) :
28765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Just the event type (string)
28775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        new jQuery.Event( type );
28785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
28795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                event.type = type;
28805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                event.exclusive = exclusive;
28815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                event.namespace = namespaces.join(".");
28825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                event.namespace_re = new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.)?") + "(\\.|$)");
28835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
28845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // triggerHandler() and global events don't bubble or run the default action
28855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( onlyHandlers || !elem ) {
28865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        event.preventDefault();
28875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        event.stopPropagation();
28885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
28895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
28905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Handle a global trigger
28915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( !elem ) {
28925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // TODO: Stop taunting the data cache; remove global events and always attach to document
28935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        jQuery.each( jQuery.cache, function() {
28945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // internalKey variable is just used to make it easier to find
28955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // and potentially change this stuff later; currently it just
28965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // points to jQuery.expando
28975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                var internalKey = jQuery.expando,
28985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        internalCache = this[ internalKey ];
28995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( internalCache && internalCache.events && internalCache.events[ type ] ) {
29005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        jQuery.event.trigger( event, data, internalCache.handle.elem );
29015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
29025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        });
29035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return;
29045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
29055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
29065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Don't do events on text and comment nodes
29075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
29085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return;
29095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
29105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
29115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Clean up the event in case it is being reused
29125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                event.result = undefined;
29135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                event.target = elem;
29145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
29155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Clone any incoming data and prepend the event, creating the handler arg list
29165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                data = data != null ? jQuery.makeArray( data ) : [];
29175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                data.unshift( event );
29185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
29195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var cur = elem,
29205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // IE doesn't like method names with a colon (#3533, #8272)
29215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        ontype = type.indexOf(":") < 0 ? "on" + type : "";
29225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
29235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Fire event on the current element, then bubble up the DOM tree
29245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                do {
29255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var handle = jQuery._data( cur, "handle" );
29265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
29275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        event.currentTarget = cur;
29285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( handle ) {
29295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                handle.apply( cur, data );
29305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
29315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
29325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Trigger an inline bound script
29335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( ontype && jQuery.acceptData( cur ) && cur[ ontype ] && cur[ ontype ].apply( cur, data ) === false ) {
29345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                event.result = false;
29355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                event.preventDefault();
29365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
29375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
29385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Bubble up to document, then to window
29395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        cur = cur.parentNode || cur.ownerDocument || cur === event.target.ownerDocument && window;
29405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } while ( cur && !event.isPropagationStopped() );
29415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
29425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // If nobody prevented the default action, do it now
29435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( !event.isDefaultPrevented() ) {
29445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var old,
29455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                special = jQuery.event.special[ type ] || {};
29465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
29475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( (!special._default || special._default.call( elem.ownerDocument, event ) === false) &&
29485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) {
29495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
29505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Call a native DOM method on the target with the same name name as the event.
29515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Can't use an .isFunction)() check here because IE6/7 fails that test.
29525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // IE<9 dies on focus to hidden element (#1486), may want to revisit a try/catch.
29535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                try {
29545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( ontype && elem[ type ] ) {
29555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                // Don't re-trigger an onFOO event when we call its FOO() method
29565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                old = elem[ ontype ];
29575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
29585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                if ( old ) {
29595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        elem[ ontype ] = null;
29605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                }
29615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
29625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                jQuery.event.triggered = type;
29635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                elem[ type ]();
29645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
29655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                } catch ( ieError ) {}
29665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
29675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( old ) {
29685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        elem[ ontype ] = old;
29695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
29705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
29715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery.event.triggered = undefined;
29725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
29735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
29745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
29755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return event.result;
29765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
29775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
29785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        handle: function( event ) {
29795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                event = jQuery.event.fix( event || window.event );
29805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Snapshot the handlers list since a called handler may add/remove events.
29815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var handlers = ((jQuery._data( this, "events" ) || {})[ event.type ] || []).slice(0),
29825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        run_all = !event.exclusive && !event.namespace,
29835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        args = Array.prototype.slice.call( arguments, 0 );
29845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
29855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Use the fix-ed Event rather than the (read-only) native event
29865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                args[0] = event;
29875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                event.currentTarget = this;
29885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
29895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                for ( var j = 0, l = handlers.length; j < l; j++ ) {
29905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var handleObj = handlers[ j ];
29915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
29925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Triggered event must 1) be non-exclusive and have no namespace, or
29935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // 2) have namespace(s) a subset or equal to those in the bound event.
29945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( run_all || event.namespace_re.test( handleObj.namespace ) ) {
29955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Pass in a reference to the handler function itself
29965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // So that we can later remove it
29975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                event.handler = handleObj.handler;
29985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                event.data = handleObj.data;
29995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                event.handleObj = handleObj;
30005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
30015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                var ret = handleObj.handler.apply( this, args );
30025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
30035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( ret !== undefined ) {
30045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        event.result = ret;
30055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( ret === false ) {
30065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                event.preventDefault();
30075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                event.stopPropagation();
30085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
30095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
30105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
30115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( event.isImmediatePropagationStopped() ) {
30125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        break;
30135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
30145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
30155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
30165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return event.result;
30175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
30185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
30195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
30205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
30215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        fix: function( event ) {
30225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( event[ jQuery.expando ] ) {
30235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return event;
30245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
30255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
30265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // store a copy of the original event object
30275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // and "clone" to set read-only properties
30285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var originalEvent = event;
30295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                event = jQuery.Event( originalEvent );
30305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
30315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                for ( var i = this.props.length, prop; i; ) {
30325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        prop = this.props[ --i ];
30335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        event[ prop ] = originalEvent[ prop ];
30345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
30355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
30365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Fix target property, if necessary
30375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( !event.target ) {
30385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Fixes #1925 where srcElement might not be defined either
30395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        event.target = event.srcElement || document;
30405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
30415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
30425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // check if target is a textnode (safari)
30435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( event.target.nodeType === 3 ) {
30445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        event.target = event.target.parentNode;
30455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
30465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
30475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Add relatedTarget, if necessary
30485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( !event.relatedTarget && event.fromElement ) {
30495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        event.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;
30505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
30515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
30525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Calculate pageX/Y if missing and clientX/Y available
30535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( event.pageX == null && event.clientX != null ) {
30545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var eventDocument = event.target.ownerDocument || document,
30555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                doc = eventDocument.documentElement,
30565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                body = eventDocument.body;
30575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
30585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);
30595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        event.pageY = event.clientY + (doc && doc.scrollTop  || body && body.scrollTop  || 0) - (doc && doc.clientTop  || body && body.clientTop  || 0);
30605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
30615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
30625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Add which for key events
30635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( event.which == null && (event.charCode != null || event.keyCode != null) ) {
30645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        event.which = event.charCode != null ? event.charCode : event.keyCode;
30655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
30665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
30675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)
30685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( !event.metaKey && event.ctrlKey ) {
30695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        event.metaKey = event.ctrlKey;
30705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
30715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
30725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Add which for click: 1 === left; 2 === middle; 3 === right
30735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Note: button is not normalized, so don't use it
30745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( !event.which && event.button !== undefined ) {
30755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));
30765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
30775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
30785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return event;
30795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
30805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
30815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Deprecated, use jQuery.guid instead
30825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        guid: 1E8,
30835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
30845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Deprecated, use jQuery.proxy instead
30855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        proxy: jQuery.proxy,
30865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
30875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        special: {
30885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                ready: {
30895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Make sure the ready event is setup
30905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        setup: jQuery.bindReady,
30915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        teardown: jQuery.noop
30925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
30935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
30945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                live: {
30955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        add: function( handleObj ) {
30965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery.event.add( this,
30975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        liveConvert( handleObj.origType, handleObj.selector ),
30985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        jQuery.extend({}, handleObj, {handler: liveHandler, guid: handleObj.handler.guid}) );
30995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        },
31005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
31015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        remove: function( handleObj ) {
31025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery.event.remove( this, liveConvert( handleObj.origType, handleObj.selector ), handleObj );
31035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
31045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
31055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
31065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                beforeunload: {
31075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        setup: function( data, namespaces, eventHandle ) {
31085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // We only want to do this special case on windows
31095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( jQuery.isWindow( this ) ) {
31105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        this.onbeforeunload = eventHandle;
31115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
31125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        },
31135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
31145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        teardown: function( namespaces, eventHandle ) {
31155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( this.onbeforeunload === eventHandle ) {
31165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        this.onbeforeunload = null;
31175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
31185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
31195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
31205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
31215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
31225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
31235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.removeEvent = document.removeEventListener ?
31245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        function( elem, type, handle ) {
31255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( elem.removeEventListener ) {
31265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        elem.removeEventListener( type, handle, false );
31275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
31285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        } :
31295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        function( elem, type, handle ) {
31305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( elem.detachEvent ) {
31315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        elem.detachEvent( "on" + type, handle );
31325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
31335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        };
31345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
31355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.Event = function( src, props ) {
31365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Allow instantiation without the 'new' keyword
31375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( !this.preventDefault ) {
31385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return new jQuery.Event( src, props );
31395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
31405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
31415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Event object
31425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( src && src.type ) {
31435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                this.originalEvent = src;
31445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                this.type = src.type;
31455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
31465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Events bubbling up the document may have been marked as prevented
31475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // by a handler lower down the tree; reflect the correct value.
31485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                this.isDefaultPrevented = (src.defaultPrevented || src.returnValue === false ||
31495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        src.getPreventDefault && src.getPreventDefault()) ? returnTrue : returnFalse;
31505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
31515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Event type
31525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        } else {
31535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                this.type = src;
31545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
31555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
31565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Put explicitly provided properties onto the event object
31575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( props ) {
31585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                jQuery.extend( this, props );
31595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
31605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
31615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // timeStamp is buggy for some events on Firefox(#3843)
31625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // So we won't rely on the native value
31635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        this.timeStamp = jQuery.now();
31645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
31655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Mark it as fixed
31665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        this[ jQuery.expando ] = true;
31675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
31685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
31695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function returnFalse() {
31705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        return false;
31715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
31725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function returnTrue() {
31735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        return true;
31745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
31755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
31765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
31775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
31785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.Event.prototype = {
31795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        preventDefault: function() {
31805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                this.isDefaultPrevented = returnTrue;
31815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
31825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var e = this.originalEvent;
31835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( !e ) {
31845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return;
31855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
31865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
31875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // if preventDefault exists run it on the original event
31885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( e.preventDefault ) {
31895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        e.preventDefault();
31905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
31915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // otherwise set the returnValue property of the original event to false (IE)
31925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else {
31935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        e.returnValue = false;
31945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
31955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
31965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        stopPropagation: function() {
31975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                this.isPropagationStopped = returnTrue;
31985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
31995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var e = this.originalEvent;
32005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( !e ) {
32015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return;
32025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
32035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // if stopPropagation exists run it on the original event
32045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( e.stopPropagation ) {
32055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        e.stopPropagation();
32065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
32075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // otherwise set the cancelBubble property of the original event to true (IE)
32085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                e.cancelBubble = true;
32095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
32105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        stopImmediatePropagation: function() {
32115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                this.isImmediatePropagationStopped = returnTrue;
32125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                this.stopPropagation();
32135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
32145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        isDefaultPrevented: returnFalse,
32155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        isPropagationStopped: returnFalse,
32165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        isImmediatePropagationStopped: returnFalse
32175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
32185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
32195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Checks if an event happened on an element within another element
32205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Used in jQuery.event.special.mouseenter and mouseleave handlers
32215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var withinElement = function( event ) {
32225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
32235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Check if mouse(over|out) are still within the same parent element
32245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        var related = event.relatedTarget,
32255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                inside = false,
32265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                eventType = event.type;
32275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
32285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        event.type = event.data;
32295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
32305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( related !== this ) {
32315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
32325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( related ) {
32335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        inside = jQuery.contains( this, related );
32345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
32355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
32365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( !inside ) {
32375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
32385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        jQuery.event.handle.apply( this, arguments );
32395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
32405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        event.type = eventType;
32415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
32425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
32435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)},
32445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
32455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// In case of event delegation, we only need to rename the event.type,
32465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// liveHandler will take care of the rest.
32475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)delegate = function( event ) {
32485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        event.type = event.data;
32495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        jQuery.event.handle.apply( this, arguments );
32505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
32515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
32525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Create mouseenter and mouseleave events
32535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.each({
32545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        mouseenter: "mouseover",
32555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        mouseleave: "mouseout"
32565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, function( orig, fix ) {
32575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        jQuery.event.special[ orig ] = {
32585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                setup: function( data ) {
32595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        jQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig );
32605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
32615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                teardown: function( data ) {
32625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        jQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement );
32635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
32645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        };
32655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)});
32665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
32675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// submit delegation
32685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if ( !jQuery.support.submitBubbles ) {
32695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
32705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        jQuery.event.special.submit = {
32715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                setup: function( data, namespaces ) {
32725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( !jQuery.nodeName( this, "form" ) ) {
32735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery.event.add(this, "click.specialSubmit", function( e ) {
32745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // Avoid triggering error on non-existent type attribute in IE VML (#7071)
32755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        var elem = e.target,
32765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                type = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.type : "";
32775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
32785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( (type === "submit" || type === "image") && jQuery( elem ).closest("form").length ) {
32795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                trigger( "submit", this, arguments );
32805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
32815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                });
32825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
32835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery.event.add(this, "keypress.specialSubmit", function( e ) {
32845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        var elem = e.target,
32855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                type = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.type : "";
32865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
32875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( (type === "text" || type === "password") && jQuery( elem ).closest("form").length && e.keyCode === 13 ) {
32885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                trigger( "submit", this, arguments );
32895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
32905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                });
32915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
32925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } else {
32935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return false;
32945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
32955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
32965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
32975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                teardown: function( namespaces ) {
32985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        jQuery.event.remove( this, ".specialSubmit" );
32995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
33005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        };
33015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
33025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
33035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
33045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// change delegation, happens here so we have bind.
33055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if ( !jQuery.support.changeBubbles ) {
33065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
33075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        var changeFilters,
33085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
33095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        getVal = function( elem ) {
33105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var type = jQuery.nodeName( elem, "input" ) ? elem.type : "",
33115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        val = elem.value;
33125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
33135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( type === "radio" || type === "checkbox" ) {
33145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        val = elem.checked;
33155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
33165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else if ( type === "select-multiple" ) {
33175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        val = elem.selectedIndex > -1 ?
33185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery.map( elem.options, function( elem ) {
33195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        return elem.selected;
33205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }).join("-") :
33215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                "";
33225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
33235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else if ( jQuery.nodeName( elem, "select" ) ) {
33245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        val = elem.selectedIndex;
33255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
33265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
33275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return val;
33285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
33295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
33305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        testChange = function testChange( e ) {
33315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var elem = e.target, data, val;
33325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
33335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( !rformElems.test( elem.nodeName ) || elem.readOnly ) {
33345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return;
33355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
33365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
33375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                data = jQuery._data( elem, "_change_data" );
33385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                val = getVal(elem);
33395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
33405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // the current data will be also retrieved by beforeactivate
33415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( e.type !== "focusout" || elem.type !== "radio" ) {
33425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        jQuery._data( elem, "_change_data", val );
33435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
33445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
33455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( data === undefined || val === data ) {
33465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return;
33475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
33485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
33495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( data != null || val ) {
33505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        e.type = "change";
33515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        e.liveFired = undefined;
33525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        jQuery.event.trigger( e, arguments[1], elem );
33535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
33545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        };
33555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
33565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        jQuery.event.special.change = {
33575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                filters: {
33585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        focusout: testChange,
33595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
33605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        beforedeactivate: testChange,
33615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
33625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        click: function( e ) {
33635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                var elem = e.target, type = jQuery.nodeName( elem, "input" ) ? elem.type : "";
33645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
33655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( type === "radio" || type === "checkbox" || jQuery.nodeName( elem, "select" ) ) {
33665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        testChange.call( this, e );
33675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
33685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        },
33695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
33705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Change has to be called before submit
33715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Keydown will be called before keypress, which is used in submit-event delegation
33725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        keydown: function( e ) {
33735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                var elem = e.target, type = jQuery.nodeName( elem, "input" ) ? elem.type : "";
33745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
33755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( (e.keyCode === 13 && !jQuery.nodeName( elem, "textarea" ) ) ||
33765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        (e.keyCode === 32 && (type === "checkbox" || type === "radio")) ||
33775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        type === "select-multiple" ) {
33785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        testChange.call( this, e );
33795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
33805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        },
33815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
33825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Beforeactivate happens also before the previous element is blurred
33835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // with this event you can't trigger a change event, but you can store
33845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // information
33855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        beforeactivate: function( e ) {
33865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                var elem = e.target;
33875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery._data( elem, "_change_data", getVal(elem) );
33885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
33895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
33905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
33915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                setup: function( data, namespaces ) {
33925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( this.type === "file" ) {
33935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return false;
33945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
33955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
33965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        for ( var type in changeFilters ) {
33975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery.event.add( this, type + ".specialChange", changeFilters[type] );
33985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
33995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
34005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return rformElems.test( this.nodeName );
34015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
34025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
34035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                teardown: function( namespaces ) {
34045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        jQuery.event.remove( this, ".specialChange" );
34055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
34065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return rformElems.test( this.nodeName );
34075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
34085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        };
34095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
34105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        changeFilters = jQuery.event.special.change.filters;
34115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
34125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Handle when the input is .focus()'d
34135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        changeFilters.focus = changeFilters.beforeactivate;
34145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
34155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
34165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function trigger( type, elem, args ) {
34175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Piggyback on a donor event to simulate a different one.
34185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Fake originalEvent to avoid donor's stopPropagation, but if the
34195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // simulated event prevents default then we do the same on the donor.
34205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Don't pass args or remember liveFired; they apply to the donor event.
34215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        var event = jQuery.extend( {}, args[ 0 ] );
34225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        event.type = type;
34235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        event.originalEvent = {};
34245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        event.liveFired = undefined;
34255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        jQuery.event.handle.call( elem, event );
34265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( event.isDefaultPrevented() ) {
34275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                args[ 0 ].preventDefault();
34285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
34295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
34305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
34315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Create "bubbling" focus and blur events
34325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if ( !jQuery.support.focusinBubbles ) {
34335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
34345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
34355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Attach a single capturing handler while someone wants focusin/focusout
34365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var attaches = 0;
34375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
34385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                jQuery.event.special[ fix ] = {
34395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        setup: function() {
34405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( attaches++ === 0 ) {
34415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        document.addEventListener( orig, handler, true );
34425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
34435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        },
34445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        teardown: function() {
34455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( --attaches === 0 ) {
34465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        document.removeEventListener( orig, handler, true );
34475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
34485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
34495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                };
34505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
34515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                function handler( donor ) {
34525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Donor event is always a native one; fix it and switch its type.
34535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Let focusin/out handler cancel the donor focus/blur event.
34545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var e = jQuery.event.fix( donor );
34555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        e.type = fix;
34565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        e.originalEvent = {};
34575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        jQuery.event.trigger( e, null, e.target );
34585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( e.isDefaultPrevented() ) {
34595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                donor.preventDefault();
34605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
34615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
34625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        });
34635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
34645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
34655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.each(["bind", "one"], function( i, name ) {
34665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        jQuery.fn[ name ] = function( type, data, fn ) {
34675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var handler;
34685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
34695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Handle object literals
34705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( typeof type === "object" ) {
34715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        for ( var key in type ) {
34725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                this[ name ](key, data, type[key], fn);
34735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
34745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return this;
34755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
34765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
34775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( arguments.length === 2 || data === false ) {
34785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        fn = data;
34795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        data = undefined;
34805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
34815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
34825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( name === "one" ) {
34835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        handler = function( event ) {
34845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery( this ).unbind( event, handler );
34855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return fn.apply( this, arguments );
34865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        };
34875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        handler.guid = fn.guid || jQuery.guid++;
34885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else {
34895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        handler = fn;
34905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
34915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
34925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( type === "unload" && name !== "one" ) {
34935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        this.one( type, data, fn );
34945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
34955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else {
34965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        for ( var i = 0, l = this.length; i < l; i++ ) {
34975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery.event.add( this[i], type, handler, data );
34985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
34995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
35005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
35015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this;
35025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        };
35035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)});
35045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
35055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.fn.extend({
35065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        unbind: function( type, fn ) {
35075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Handle object literals
35085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( typeof type === "object" && !type.preventDefault ) {
35095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        for ( var key in type ) {
35105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                this.unbind(key, type[key]);
35115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
35125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
35135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else {
35145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        for ( var i = 0, l = this.length; i < l; i++ ) {
35155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery.event.remove( this[i], type, fn );
35165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
35175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
35185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
35195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this;
35205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
35215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
35225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        delegate: function( selector, types, data, fn ) {
35235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this.live( types, data, fn, selector );
35245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
35255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
35265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        undelegate: function( selector, types, fn ) {
35275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( arguments.length === 0 ) {
35285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return this.unbind( "live" );
35295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
35305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else {
35315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return this.die( types, null, fn, selector );
35325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
35335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
35345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
35355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        trigger: function( type, data ) {
35365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this.each(function() {
35375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        jQuery.event.trigger( type, data, this );
35385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                });
35395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
35405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
35415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        triggerHandler: function( type, data ) {
35425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( this[0] ) {
35435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return jQuery.event.trigger( type, data, this[0], true );
35445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
35455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
35465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
35475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        toggle: function( fn ) {
35485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Save reference to arguments for access in closure
35495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var args = arguments,
35505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        guid = fn.guid || jQuery.guid++,
35515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        i = 0,
35525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        toggler = function( event ) {
35535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Figure out which function to execute
35545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                var lastToggle = ( jQuery.data( this, "lastToggle" + fn.guid ) || 0 ) % i;
35555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery.data( this, "lastToggle" + fn.guid, lastToggle + 1 );
35565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
35575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Make sure that clicks stop
35585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                event.preventDefault();
35595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
35605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // and execute the function
35615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return args[ lastToggle ].apply( this, arguments ) || false;
35625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        };
35635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
35645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // link all the functions, so any of them can unbind this click handler
35655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                toggler.guid = guid;
35665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                while ( i < args.length ) {
35675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        args[ i++ ].guid = guid;
35685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
35695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
35705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this.click( toggler );
35715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
35725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
35735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        hover: function( fnOver, fnOut ) {
35745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
35755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
35765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)});
35775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
35785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var liveMap = {
35795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        focus: "focusin",
35805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        blur: "focusout",
35815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        mouseenter: "mouseover",
35825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        mouseleave: "mouseout"
35835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
35845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
35855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.each(["live", "die"], function( i, name ) {
35865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        jQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ ) {
35875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var type, i = 0, match, namespaces, preType,
35885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        selector = origSelector || this.selector,
35895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        context = origSelector ? this : jQuery( this.context );
35905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
35915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( typeof types === "object" && !types.preventDefault ) {
35925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        for ( var key in types ) {
35935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                context[ name ]( key, data, types[key], selector );
35945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
35955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
35965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return this;
35975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
35985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
35995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( name === "die" && !types &&
36005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        origSelector && origSelector.charAt(0) === "." ) {
36015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
36025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        context.unbind( origSelector );
36035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
36045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return this;
36055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
36065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
36075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( data === false || jQuery.isFunction( data ) ) {
36085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        fn = data || returnFalse;
36095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        data = undefined;
36105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
36115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
36125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                types = (types || "").split(" ");
36135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
36145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                while ( (type = types[ i++ ]) != null ) {
36155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        match = rnamespaces.exec( type );
36165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        namespaces = "";
36175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
36185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( match )  {
36195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                namespaces = match[0];
36205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                type = type.replace( rnamespaces, "" );
36215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
36225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
36235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( type === "hover" ) {
36245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                types.push( "mouseenter" + namespaces, "mouseleave" + namespaces );
36255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                continue;
36265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
36275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
36285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        preType = type;
36295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
36305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( liveMap[ type ] ) {
36315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                types.push( liveMap[ type ] + namespaces );
36325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                type = type + namespaces;
36335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
36345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } else {
36355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                type = (liveMap[ type ] || type) + namespaces;
36365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
36375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
36385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( name === "live" ) {
36395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // bind live handler
36405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                for ( var j = 0, l = context.length; j < l; j++ ) {
36415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        jQuery.event.add( context[j], "live." + liveConvert( type, selector ),
36425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                { data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } );
36435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
36445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
36455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } else {
36465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // unbind live handler
36475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                context.unbind( "live." + liveConvert( type, selector ), fn );
36485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
36495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
36505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
36515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this;
36525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        };
36535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)});
36545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
36555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function liveHandler( event ) {
36565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        var stop, maxLevel, related, match, handleObj, elem, j, i, l, data, close, namespace, ret,
36575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                elems = [],
36585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                selectors = [],
36595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                events = jQuery._data( this, "events" );
36605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
36615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Make sure we avoid non-left-click bubbling in Firefox (#3861) and disabled elements in IE (#6911)
36625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( event.liveFired === this || !events || !events.live || event.target.disabled || event.button && event.type === "click" ) {
36635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return;
36645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
36655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
36665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( event.namespace ) {
36675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                namespace = new RegExp("(^|\\.)" + event.namespace.split(".").join("\\.(?:.*\\.)?") + "(\\.|$)");
36685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
36695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
36705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        event.liveFired = this;
36715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
36725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        var live = events.live.slice(0);
36735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
36745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        for ( j = 0; j < live.length; j++ ) {
36755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                handleObj = live[j];
36765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
36775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( handleObj.origType.replace( rnamespaces, "" ) === event.type ) {
36785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        selectors.push( handleObj.selector );
36795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
36805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else {
36815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        live.splice( j--, 1 );
36825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
36835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
36845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
36855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        match = jQuery( event.target ).closest( selectors, event.currentTarget );
36865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
36875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        for ( i = 0, l = match.length; i < l; i++ ) {
36885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                close = match[i];
36895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
36905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                for ( j = 0; j < live.length; j++ ) {
36915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        handleObj = live[j];
36925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
36935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( close.selector === handleObj.selector && (!namespace || namespace.test( handleObj.namespace )) && !close.elem.disabled ) {
36945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                elem = close.elem;
36955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                related = null;
36965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
36975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Those two events require additional checking
36985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( handleObj.preType === "mouseenter" || handleObj.preType === "mouseleave" ) {
36995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        event.type = handleObj.preType;
37005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        related = jQuery( event.relatedTarget ).closest( handleObj.selector )[0];
37015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
37025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // Make sure not to accidentally match a child element with the same selector
37035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( related && jQuery.contains( elem, related ) ) {
37045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                related = elem;
37055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
37065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
37075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
37085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( !related || related !== elem ) {
37095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        elems.push({ elem: elem, handleObj: handleObj, level: close.level });
37105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
37115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
37125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
37135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
37145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
37155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        for ( i = 0, l = elems.length; i < l; i++ ) {
37165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                match = elems[i];
37175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
37185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( maxLevel && match.level > maxLevel ) {
37195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        break;
37205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
37215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
37225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                event.currentTarget = match.elem;
37235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                event.data = match.handleObj.data;
37245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                event.handleObj = match.handleObj;
37255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
37265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                ret = match.handleObj.origHandler.apply( match.elem, arguments );
37275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
37285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( ret === false || event.isPropagationStopped() ) {
37295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        maxLevel = match.level;
37305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
37315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( ret === false ) {
37325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                stop = false;
37335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
37345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( event.isImmediatePropagationStopped() ) {
37355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                break;
37365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
37375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
37385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
37395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
37405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        return stop;
37415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
37425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
37435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function liveConvert( type, selector ) {
37445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        return (type && type !== "*" ? type + "." : "") + selector.replace(rperiod, "`").replace(rspaces, "&");
37455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
37465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
37475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
37485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
37495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        "change select submit keydown keypress keyup error").split(" "), function( i, name ) {
37505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
37515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Handle event binding
37525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        jQuery.fn[ name ] = function( data, fn ) {
37535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( fn == null ) {
37545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        fn = data;
37555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        data = null;
37565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
37575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
37585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return arguments.length > 0 ?
37595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        this.bind( name, data, fn ) :
37605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        this.trigger( name );
37615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        };
37625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
37635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( jQuery.attrFn ) {
37645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                jQuery.attrFn[ name ] = true;
37655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
37665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)});
37675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
37685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
37695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
37705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/*!
37715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Sizzle CSS Selector Engine
37725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *  Copyright 2011, The Dojo Foundation
37735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *  Released under the MIT, BSD, and GPL Licenses.
37745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *  More information: http://sizzlejs.com/
37755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */
37765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)(function(){
37775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
37785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
37795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        done = 0,
37805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        toString = Object.prototype.toString,
37815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        hasDuplicate = false,
37825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        baseHasDuplicate = true,
37835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rBackslash = /\\/g,
37845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rNonWord = /\W/;
37855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
37865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Here we check if the JavaScript engine is using some sort of
37875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// optimization where it does not always call our comparision
37885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// function. If that is the case, discard the hasDuplicate value.
37895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)//   Thus far that includes Google Chrome.
37905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)[0, 0].sort(function() {
37915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        baseHasDuplicate = false;
37925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        return 0;
37935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)});
37945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
37955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var Sizzle = function( selector, context, results, seed ) {
37965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        results = results || [];
37975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        context = context || document;
37985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
37995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        var origContext = context;
38005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
38015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
38025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return [];
38035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
38045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
38055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( !selector || typeof selector !== "string" ) {
38065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return results;
38075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
38085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
38095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        var m, set, checkSet, extra, ret, cur, pop, i,
38105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                prune = true,
38115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                contextXML = Sizzle.isXML( context ),
38125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                parts = [],
38135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                soFar = selector;
38145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
38155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Reset the position of the chunker regexp (start from head)
38165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        do {
38175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                chunker.exec( "" );
38185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                m = chunker.exec( soFar );
38195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
38205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( m ) {
38215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        soFar = m[3];
38225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
38235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        parts.push( m[1] );
38245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
38255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( m[2] ) {
38265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                extra = m[3];
38275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                break;
38285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
38295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
38305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        } while ( m );
38315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
38325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( parts.length > 1 && origPOS.exec( selector ) ) {
38335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
38345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
38355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        set = posProcess( parts[0] + parts[1], context );
38365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
38375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else {
38385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        set = Expr.relative[ parts[0] ] ?
38395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                [ context ] :
38405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                Sizzle( parts.shift(), context );
38415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
38425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        while ( parts.length ) {
38435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                selector = parts.shift();
38445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
38455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( Expr.relative[ selector ] ) {
38465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        selector += parts.shift();
38475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
38485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
38495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                set = posProcess( selector, set );
38505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
38515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
38525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
38535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        } else {
38545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Take a shortcut and set the context if the root selector is an ID
38555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // (but not if it'll be faster if the inner selector is an ID)
38565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
38575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
38585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
38595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        ret = Sizzle.find( parts.shift(), context, contextXML );
38605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        context = ret.expr ?
38615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                Sizzle.filter( ret.expr, ret.set )[0] :
38625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                ret.set[0];
38635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
38645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
38655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( context ) {
38665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        ret = seed ?
38675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                { expr: parts.pop(), set: makeArray(seed) } :
38685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
38695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
38705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        set = ret.expr ?
38715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                Sizzle.filter( ret.expr, ret.set ) :
38725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                ret.set;
38735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
38745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( parts.length > 0 ) {
38755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                checkSet = makeArray( set );
38765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
38775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } else {
38785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                prune = false;
38795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
38805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
38815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        while ( parts.length ) {
38825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                cur = parts.pop();
38835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                pop = cur;
38845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
38855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( !Expr.relative[ cur ] ) {
38865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        cur = "";
38875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                } else {
38885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        pop = parts.pop();
38895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
38905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
38915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( pop == null ) {
38925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        pop = context;
38935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
38945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
38955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                Expr.relative[ cur ]( checkSet, pop, contextXML );
38965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
38975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
38985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else {
38995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        checkSet = parts = [];
39005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
39015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
39025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
39035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( !checkSet ) {
39045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                checkSet = set;
39055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
39065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
39075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( !checkSet ) {
39085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                Sizzle.error( cur || selector );
39095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
39105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
39115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( toString.call(checkSet) === "[object Array]" ) {
39125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( !prune ) {
39135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        results.push.apply( results, checkSet );
39145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
39155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else if ( context && context.nodeType === 1 ) {
39165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        for ( i = 0; checkSet[i] != null; i++ ) {
39175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {
39185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        results.push( set[i] );
39195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
39205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
39215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
39225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else {
39235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        for ( i = 0; checkSet[i] != null; i++ ) {
39245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
39255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        results.push( set[i] );
39265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
39275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
39285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
39295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
39305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        } else {
39315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                makeArray( checkSet, results );
39325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
39335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
39345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( extra ) {
39355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                Sizzle( extra, origContext, results, seed );
39365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                Sizzle.uniqueSort( results );
39375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
39385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
39395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        return results;
39405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
39415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
39425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Sizzle.uniqueSort = function( results ) {
39435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( sortOrder ) {
39445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                hasDuplicate = baseHasDuplicate;
39455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                results.sort( sortOrder );
39465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
39475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( hasDuplicate ) {
39485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        for ( var i = 1; i < results.length; i++ ) {
39495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( results[i] === results[ i - 1 ] ) {
39505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        results.splice( i--, 1 );
39515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
39525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
39535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
39545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
39555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
39565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        return results;
39575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
39585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
39595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Sizzle.matches = function( expr, set ) {
39605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        return Sizzle( expr, null, null, set );
39615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
39625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
39635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Sizzle.matchesSelector = function( node, expr ) {
39645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        return Sizzle( expr, null, null, [node] ).length > 0;
39655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
39665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
39675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Sizzle.find = function( expr, context, isXML ) {
39685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        var set;
39695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
39705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( !expr ) {
39715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return [];
39725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
39735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
39745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
39755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var match,
39765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        type = Expr.order[i];
39775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
39785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {
39795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var left = match[1];
39805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        match.splice( 1, 1 );
39815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
39825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( left.substr( left.length - 1 ) !== "\\" ) {
39835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                match[1] = (match[1] || "").replace( rBackslash, "" );
39845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                set = Expr.find[ type ]( match, context, isXML );
39855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
39865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( set != null ) {
39875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        expr = expr.replace( Expr.match[ type ], "" );
39885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        break;
39895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
39905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
39915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
39925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
39935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
39945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( !set ) {
39955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                set = typeof context.getElementsByTagName !== "undefined" ?
39965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        context.getElementsByTagName( "*" ) :
39975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        [];
39985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
39995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
40005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        return { set: set, expr: expr };
40015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
40025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
40035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Sizzle.filter = function( expr, set, inplace, not ) {
40045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        var match, anyFound,
40055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                old = expr,
40065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                result = [],
40075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                curLoop = set,
40085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                isXMLFilter = set && set[0] && Sizzle.isXML( set[0] );
40095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
40105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        while ( expr && set.length ) {
40115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                for ( var type in Expr.filter ) {
40125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {
40135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                var found, item,
40145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        filter = Expr.filter[ type ],
40155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        left = match[1];
40165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
40175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                anyFound = false;
40185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
40195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                match.splice(1,1);
40205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
40215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( left.substr( left.length - 1 ) === "\\" ) {
40225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        continue;
40235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
40245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
40255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( curLoop === result ) {
40265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        result = [];
40275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
40285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
40295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( Expr.preFilter[ type ] ) {
40305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
40315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
40325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( !match ) {
40335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                anyFound = found = true;
40345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
40355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        } else if ( match === true ) {
40365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                continue;
40375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
40385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
40395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
40405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( match ) {
40415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        for ( var i = 0; (item = curLoop[i]) != null; i++ ) {
40425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                if ( item ) {
40435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        found = filter( item, match, i, curLoop );
40445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        var pass = not ^ !!found;
40455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
40465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        if ( inplace && found != null ) {
40475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                if ( pass ) {
40485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                        anyFound = true;
40495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
40505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                } else {
40515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                        curLoop[i] = false;
40525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                }
40535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
40545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        } else if ( pass ) {
40555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                result.push( item );
40565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                anyFound = true;
40575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        }
40585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                }
40595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
40605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
40615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
40625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( found !== undefined ) {
40635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( !inplace ) {
40645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                curLoop = result;
40655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
40665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
40675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        expr = expr.replace( Expr.match[ type ], "" );
40685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
40695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( !anyFound ) {
40705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                return [];
40715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
40725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
40735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        break;
40745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
40755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
40765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
40775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
40785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Improper expression
40795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( expr === old ) {
40805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( anyFound == null ) {
40815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                Sizzle.error( expr );
40825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
40835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } else {
40845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                break;
40855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
40865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
40875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
40885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                old = expr;
40895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
40905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
40915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        return curLoop;
40925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
40935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
40945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Sizzle.error = function( msg ) {
40955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        throw "Syntax error, unrecognized expression: " + msg;
40965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
40975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
40985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var Expr = Sizzle.selectors = {
40995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        order: [ "ID", "NAME", "TAG" ],
41005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
41015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        match: {
41025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
41035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
41045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,
41055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,
41065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,
41075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,
41085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,
41095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/
41105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
41115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
41125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        leftMatch: {},
41135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
41145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        attrMap: {
41155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                "class": "className",
41165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                "for": "htmlFor"
41175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
41185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
41195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        attrHandle: {
41205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                href: function( elem ) {
41215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return elem.getAttribute( "href" );
41225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
41235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                type: function( elem ) {
41245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return elem.getAttribute( "type" );
41255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
41265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
41275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
41285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        relative: {
41295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                "+": function(checkSet, part){
41305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var isPartStr = typeof part === "string",
41315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                isTag = isPartStr && !rNonWord.test( part ),
41325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                isPartStrNotTag = isPartStr && !isTag;
41335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
41345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( isTag ) {
41355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                part = part.toLowerCase();
41365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
41375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
41385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
41395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( (elem = checkSet[i]) ) {
41405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
41415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
41425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?
41435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                elem || false :
41445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                elem === part;
41455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
41465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
41475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
41485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( isPartStrNotTag ) {
41495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                Sizzle.filter( part, checkSet, true );
41505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
41515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
41525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
41535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                ">": function( checkSet, part ) {
41545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var elem,
41555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                isPartStr = typeof part === "string",
41565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                i = 0,
41575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                l = checkSet.length;
41585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
41595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( isPartStr && !rNonWord.test( part ) ) {
41605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                part = part.toLowerCase();
41615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
41625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                for ( ; i < l; i++ ) {
41635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        elem = checkSet[i];
41645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
41655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( elem ) {
41665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                var parent = elem.parentNode;
41675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;
41685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
41695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
41705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
41715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } else {
41725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                for ( ; i < l; i++ ) {
41735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        elem = checkSet[i];
41745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
41755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( elem ) {
41765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                checkSet[i] = isPartStr ?
41775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        elem.parentNode :
41785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        elem.parentNode === part;
41795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
41805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
41815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
41825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( isPartStr ) {
41835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        Sizzle.filter( part, checkSet, true );
41845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
41855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
41865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
41875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
41885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                "": function(checkSet, part, isXML){
41895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var nodeCheck,
41905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                doneName = done++,
41915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                checkFn = dirCheck;
41925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
41935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( typeof part === "string" && !rNonWord.test( part ) ) {
41945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                part = part.toLowerCase();
41955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                nodeCheck = part;
41965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                checkFn = dirNodeCheck;
41975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
41985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
41995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML );
42005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
42015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
42025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                "~": function( checkSet, part, isXML ) {
42035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var nodeCheck,
42045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                doneName = done++,
42055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                checkFn = dirCheck;
42065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
42075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( typeof part === "string" && !rNonWord.test( part ) ) {
42085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                part = part.toLowerCase();
42095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                nodeCheck = part;
42105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                checkFn = dirNodeCheck;
42115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
42125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
42135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML );
42145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
42155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
42165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
42175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        find: {
42185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                ID: function( match, context, isXML ) {
42195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( typeof context.getElementById !== "undefined" && !isXML ) {
42205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                var m = context.getElementById(match[1]);
42215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Check parentNode to catch when Blackberry 4.6 returns
42225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // nodes that are no longer in the document #6963
42235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return m && m.parentNode ? [m] : [];
42245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
42255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
42265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
42275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                NAME: function( match, context ) {
42285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( typeof context.getElementsByName !== "undefined" ) {
42295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                var ret = [],
42305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        results = context.getElementsByName( match[1] );
42315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
42325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                for ( var i = 0, l = results.length; i < l; i++ ) {
42335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( results[i].getAttribute("name") === match[1] ) {
42345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                ret.push( results[i] );
42355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
42365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
42375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
42385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return ret.length === 0 ? null : ret;
42395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
42405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
42415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
42425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                TAG: function( match, context ) {
42435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( typeof context.getElementsByTagName !== "undefined" ) {
42445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return context.getElementsByTagName( match[1] );
42455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
42465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
42475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
42485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        preFilter: {
42495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                CLASS: function( match, curLoop, inplace, result, not, isXML ) {
42505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        match = " " + match[1].replace( rBackslash, "" ) + " ";
42515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
42525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( isXML ) {
42535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return match;
42545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
42555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
42565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
42575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( elem ) {
42585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) {
42595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                if ( !inplace ) {
42605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        result.push( elem );
42615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                }
42625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
42635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        } else if ( inplace ) {
42645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                curLoop[i] = false;
42655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
42665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
42675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
42685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
42695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return false;
42705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
42715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
42725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                ID: function( match ) {
42735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return match[1].replace( rBackslash, "" );
42745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
42755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
42765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                TAG: function( match, curLoop ) {
42775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return match[1].replace( rBackslash, "" ).toLowerCase();
42785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
42795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
42805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                CHILD: function( match ) {
42815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( match[1] === "nth" ) {
42825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( !match[2] ) {
42835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        Sizzle.error( match[0] );
42845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
42855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
42865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                match[2] = match[2].replace(/^\+|\s*/g, '');
42875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
42885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
42895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec(
42905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" ||
42915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
42925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
42935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // calculate the numbers (first)n+(last) including if they are negative
42945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                match[2] = (test[1] + (test[2] || 1)) - 0;
42955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                match[3] = test[3] - 0;
42965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
42975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        else if ( match[2] ) {
42985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                Sizzle.error( match[0] );
42995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
43005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
43015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // TODO: Move to normal caching system
43025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        match[0] = done++;
43035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
43045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return match;
43055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
43065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
43075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                ATTR: function( match, curLoop, inplace, result, not, isXML ) {
43085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var name = match[1] = match[1].replace( rBackslash, "" );
43095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
43105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( !isXML && Expr.attrMap[name] ) {
43115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                match[1] = Expr.attrMap[name];
43125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
43135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
43145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Handle if an un-quoted value was used
43155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        match[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" );
43165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
43175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( match[2] === "~=" ) {
43185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                match[4] = " " + match[4] + " ";
43195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
43205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
43215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return match;
43225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
43235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
43245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                PSEUDO: function( match, curLoop, inplace, result, not ) {
43255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( match[1] === "not" ) {
43265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // If we're dealing with a complex expression, or a simple one
43275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) {
43285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        match[3] = Sizzle(match[3], null, null, curLoop);
43295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
43305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                } else {
43315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
43325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
43335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( !inplace ) {
43345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                result.push.apply( result, ret );
43355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
43365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
43375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        return false;
43385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
43395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
43405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
43415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return true;
43425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
43435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
43445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return match;
43455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
43465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
43475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                POS: function( match ) {
43485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        match.unshift( true );
43495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
43505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return match;
43515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
43525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
43535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
43545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        filters: {
43555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                enabled: function( elem ) {
43565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return elem.disabled === false && elem.type !== "hidden";
43575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
43585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
43595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                disabled: function( elem ) {
43605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return elem.disabled === true;
43615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
43625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
43635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                checked: function( elem ) {
43645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return elem.checked === true;
43655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
43665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
43675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                selected: function( elem ) {
43685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Accessing this property makes selected-by-default
43695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // options in Safari work properly
43705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( elem.parentNode ) {
43715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                elem.parentNode.selectedIndex;
43725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
43735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
43745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return elem.selected === true;
43755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
43765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
43775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                parent: function( elem ) {
43785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return !!elem.firstChild;
43795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
43805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
43815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                empty: function( elem ) {
43825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return !elem.firstChild;
43835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
43845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
43855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                has: function( elem, i, match ) {
43865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return !!Sizzle( match[3], elem ).length;
43875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
43885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
43895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                header: function( elem ) {
43905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return (/h\d/i).test( elem.nodeName );
43915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
43925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
43935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                text: function( elem ) {
43945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var attr = elem.getAttribute( "type" ), type = elem.type;
43955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)
43965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // use getAttribute instead to test this case
43975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null );
43985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
43995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
44005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                radio: function( elem ) {
44015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return elem.nodeName.toLowerCase() === "input" && "radio" === elem.type;
44025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
44035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
44045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                checkbox: function( elem ) {
44055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type;
44065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
44075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
44085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                file: function( elem ) {
44095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return elem.nodeName.toLowerCase() === "input" && "file" === elem.type;
44105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
44115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
44125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                password: function( elem ) {
44135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return elem.nodeName.toLowerCase() === "input" && "password" === elem.type;
44145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
44155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
44165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                submit: function( elem ) {
44175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var name = elem.nodeName.toLowerCase();
44185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return (name === "input" || name === "button") && "submit" === elem.type;
44195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
44205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
44215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                image: function( elem ) {
44225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return elem.nodeName.toLowerCase() === "input" && "image" === elem.type;
44235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
44245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
44255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                reset: function( elem ) {
44265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var name = elem.nodeName.toLowerCase();
44275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return (name === "input" || name === "button") && "reset" === elem.type;
44285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
44295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
44305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                button: function( elem ) {
44315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var name = elem.nodeName.toLowerCase();
44325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return name === "input" && "button" === elem.type || name === "button";
44335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
44345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
44355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                input: function( elem ) {
44365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return (/input|select|textarea|button/i).test( elem.nodeName );
44375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
44385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
44395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                focus: function( elem ) {
44405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return elem === elem.ownerDocument.activeElement;
44415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
44425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
44435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        setFilters: {
44445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                first: function( elem, i ) {
44455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return i === 0;
44465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
44475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
44485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                last: function( elem, i, match, array ) {
44495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return i === array.length - 1;
44505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
44515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
44525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                even: function( elem, i ) {
44535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return i % 2 === 0;
44545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
44555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
44565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                odd: function( elem, i ) {
44575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return i % 2 === 1;
44585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
44595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
44605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                lt: function( elem, i, match ) {
44615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return i < match[3] - 0;
44625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
44635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
44645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                gt: function( elem, i, match ) {
44655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return i > match[3] - 0;
44665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
44675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
44685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                nth: function( elem, i, match ) {
44695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return match[3] - 0 === i;
44705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
44715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
44725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                eq: function( elem, i, match ) {
44735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return match[3] - 0 === i;
44745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
44755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
44765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        filter: {
44775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                PSEUDO: function( elem, match, i, array ) {
44785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var name = match[1],
44795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                filter = Expr.filters[ name ];
44805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
44815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( filter ) {
44825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return filter( elem, i, match, array );
44835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
44845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } else if ( name === "contains" ) {
44855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return (elem.textContent || elem.innerText || Sizzle.getText([ elem ]) || "").indexOf(match[3]) >= 0;
44865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
44875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } else if ( name === "not" ) {
44885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                var not = match[3];
44895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
44905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                for ( var j = 0, l = not.length; j < l; j++ ) {
44915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( not[j] === elem ) {
44925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                return false;
44935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
44945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
44955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
44965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return true;
44975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
44985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } else {
44995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                Sizzle.error( name );
45005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
45015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
45025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
45035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                CHILD: function( elem, match ) {
45045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var type = match[1],
45055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                node = elem;
45065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
45075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        switch ( type ) {
45085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                case "only":
45095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                case "first":
45105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        while ( (node = node.previousSibling) )  {
45115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                if ( node.nodeType === 1 ) {
45125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        return false;
45135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                }
45145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
45155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
45165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( type === "first" ) {
45175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                return true;
45185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
45195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
45205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        node = elem;
45215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
45225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                case "last":
45235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        while ( (node = node.nextSibling) )      {
45245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                if ( node.nodeType === 1 ) {
45255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        return false;
45265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                }
45275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
45285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
45295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        return true;
45305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
45315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                case "nth":
45325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        var first = match[2],
45335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                last = match[3];
45345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
45355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( first === 1 && last === 0 ) {
45365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                return true;
45375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
45385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
45395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        var doneName = match[0],
45405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                parent = elem.parentNode;
45415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
45425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {
45435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                var count = 0;
45445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
45455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                for ( node = parent.firstChild; node; node = node.nextSibling ) {
45465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        if ( node.nodeType === 1 ) {
45475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                node.nodeIndex = ++count;
45485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        }
45495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                }
45505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
45515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                parent.sizcache = doneName;
45525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
45535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
45545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        var diff = elem.nodeIndex - last;
45555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
45565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( first === 0 ) {
45575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                return diff === 0;
45585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
45595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        } else {
45605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                return ( diff % first === 0 && diff / first >= 0 );
45615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
45625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
45635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
45645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
45655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                ID: function( elem, match ) {
45665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return elem.nodeType === 1 && elem.getAttribute("id") === match;
45675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
45685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
45695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                TAG: function( elem, match ) {
45705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return (match === "*" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match;
45715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
45725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
45735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                CLASS: function( elem, match ) {
45745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return (" " + (elem.className || elem.getAttribute("class")) + " ")
45755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                .indexOf( match ) > -1;
45765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
45775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
45785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                ATTR: function( elem, match ) {
45795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var name = match[1],
45805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                result = Expr.attrHandle[ name ] ?
45815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        Expr.attrHandle[ name ]( elem ) :
45825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        elem[ name ] != null ?
45835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                elem[ name ] :
45845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                elem.getAttribute( name ),
45855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                value = result + "",
45865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                type = match[2],
45875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                check = match[4];
45885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
45895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return result == null ?
45905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                type === "!=" :
45915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                type === "=" ?
45925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                value === check :
45935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                type === "*=" ?
45945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                value.indexOf(check) >= 0 :
45955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                type === "~=" ?
45965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                (" " + value + " ").indexOf(check) >= 0 :
45975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                !check ?
45985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                value && result !== false :
45995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                type === "!=" ?
46005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                value !== check :
46015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                type === "^=" ?
46025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                value.indexOf(check) === 0 :
46035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                type === "$=" ?
46045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                value.substr(value.length - check.length) === check :
46055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                type === "|=" ?
46065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                value === check || value.substr(0, check.length + 1) === check + "-" :
46075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                false;
46085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
46095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
46105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                POS: function( elem, match, i, array ) {
46115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var name = match[2],
46125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                filter = Expr.setFilters[ name ];
46135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
46145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( filter ) {
46155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return filter( elem, i, match, array );
46165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
46175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
46185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
46195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
46205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
46215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var origPOS = Expr.match.POS,
46225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        fescape = function(all, num){
46235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return "\\" + (num - 0 + 1);
46245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        };
46255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
46265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)for ( var type in Expr.match ) {
46275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) );
46285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) );
46295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
46305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
46315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var makeArray = function( array, results ) {
46325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        array = Array.prototype.slice.call( array, 0 );
46335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
46345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( results ) {
46355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                results.push.apply( results, array );
46365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return results;
46375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
46385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
46395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        return array;
46405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
46415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
46425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Perform a simple check to determine if the browser is capable of
46435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// converting a NodeList to an array using builtin methods.
46445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Also verifies that the returned array holds DOM nodes
46455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// (which is not the case in the Blackberry browser)
46465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)try {
46475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;
46485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
46495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Provide a fallback method if it does not work
46505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} catch( e ) {
46515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        makeArray = function( array, results ) {
46525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var i = 0,
46535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        ret = results || [];
46545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
46555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( toString.call(array) === "[object Array]" ) {
46565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        Array.prototype.push.apply( ret, array );
46575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
46585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else {
46595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( typeof array.length === "number" ) {
46605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                for ( var l = array.length; i < l; i++ ) {
46615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        ret.push( array[i] );
46625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
46635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
46645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } else {
46655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                for ( ; array[i]; i++ ) {
46665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        ret.push( array[i] );
46675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
46685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
46695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
46705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
46715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return ret;
46725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        };
46735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
46745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
46755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var sortOrder, siblingCheck;
46765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
46775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if ( document.documentElement.compareDocumentPosition ) {
46785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        sortOrder = function( a, b ) {
46795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( a === b ) {
46805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        hasDuplicate = true;
46815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return 0;
46825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
46835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
46845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {
46855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return a.compareDocumentPosition ? -1 : 1;
46865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
46875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
46885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return a.compareDocumentPosition(b) & 4 ? -1 : 1;
46895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        };
46905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
46915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} else {
46925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        sortOrder = function( a, b ) {
46935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // The nodes are identical, we can exit early
46945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( a === b ) {
46955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        hasDuplicate = true;
46965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return 0;
46975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
46985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Fallback to using sourceIndex (in IE) if it's available on both nodes
46995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else if ( a.sourceIndex && b.sourceIndex ) {
47005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return a.sourceIndex - b.sourceIndex;
47015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
47025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
47035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var al, bl,
47045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        ap = [],
47055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        bp = [],
47065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        aup = a.parentNode,
47075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        bup = b.parentNode,
47085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        cur = aup;
47095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
47105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // If the nodes are siblings (or identical) we can do a quick check
47115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( aup === bup ) {
47125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return siblingCheck( a, b );
47135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
47145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // If no parents were found then the nodes are disconnected
47155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else if ( !aup ) {
47165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return -1;
47175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
47185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else if ( !bup ) {
47195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return 1;
47205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
47215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
47225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Otherwise they're somewhere else in the tree so we need
47235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // to build up a full list of the parentNodes for comparison
47245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                while ( cur ) {
47255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        ap.unshift( cur );
47265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        cur = cur.parentNode;
47275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
47285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
47295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                cur = bup;
47305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
47315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                while ( cur ) {
47325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        bp.unshift( cur );
47335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        cur = cur.parentNode;
47345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
47355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
47365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                al = ap.length;
47375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                bl = bp.length;
47385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
47395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Start walking down the tree looking for a discrepancy
47405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                for ( var i = 0; i < al && i < bl; i++ ) {
47415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( ap[i] !== bp[i] ) {
47425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return siblingCheck( ap[i], bp[i] );
47435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
47445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
47455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
47465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // We ended someplace up the tree so do a sibling check
47475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return i === al ?
47485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        siblingCheck( a, bp[i], -1 ) :
47495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        siblingCheck( ap[i], b, 1 );
47505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        };
47515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
47525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        siblingCheck = function( a, b, ret ) {
47535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( a === b ) {
47545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return ret;
47555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
47565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
47575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var cur = a.nextSibling;
47585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
47595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                while ( cur ) {
47605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( cur === b ) {
47615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return -1;
47625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
47635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
47645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        cur = cur.nextSibling;
47655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
47665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
47675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return 1;
47685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        };
47695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
47705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
47715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Utility function for retreiving the text value of an array of DOM nodes
47725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Sizzle.getText = function( elems ) {
47735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        var ret = "", elem;
47745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
47755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        for ( var i = 0; elems[i]; i++ ) {
47765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                elem = elems[i];
47775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
47785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Get the text from text nodes and CDATA nodes
47795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( elem.nodeType === 3 || elem.nodeType === 4 ) {
47805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        ret += elem.nodeValue;
47815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
47825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Traverse everything else, except comment nodes
47835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else if ( elem.nodeType !== 8 ) {
47845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        ret += Sizzle.getText( elem.childNodes );
47855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
47865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
47875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
47885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        return ret;
47895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
47905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
47915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Check to see if the browser returns elements by name when
47925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// querying by getElementById (and provide a workaround)
47935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)(function(){
47945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // We're going to inject a fake input element with a specified name
47955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        var form = document.createElement("div"),
47965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                id = "script" + (new Date()).getTime(),
47975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                root = document.documentElement;
47985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
47995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        form.innerHTML = "<a name='" + id + "'/>";
48005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
48015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Inject it into the root element, check its status, and remove it quickly
48025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        root.insertBefore( form, root.firstChild );
48035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
48045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // The workaround has to do additional checks after a getElementById
48055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Which slows things down for other browsers (hence the branching)
48065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( document.getElementById( id ) ) {
48075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                Expr.find.ID = function( match, context, isXML ) {
48085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( typeof context.getElementById !== "undefined" && !isXML ) {
48095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                var m = context.getElementById(match[1]);
48105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
48115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return m ?
48125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ?
48135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                [m] :
48145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                undefined :
48155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        [];
48165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
48175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                };
48185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
48195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                Expr.filter.ID = function( elem, match ) {
48205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
48215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
48225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return elem.nodeType === 1 && node && node.nodeValue === match;
48235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                };
48245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
48255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
48265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        root.removeChild( form );
48275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
48285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // release memory in IE
48295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        root = form = null;
48305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)})();
48315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
48325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)(function(){
48335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Check to see if the browser returns only elements
48345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // when doing getElementsByTagName("*")
48355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
48365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Create a fake element
48375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        var div = document.createElement("div");
48385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        div.appendChild( document.createComment("") );
48395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
48405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Make sure no comments are found
48415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( div.getElementsByTagName("*").length > 0 ) {
48425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                Expr.find.TAG = function( match, context ) {
48435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var results = context.getElementsByTagName( match[1] );
48445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
48455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Filter out possible comments
48465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( match[1] === "*" ) {
48475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                var tmp = [];
48485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
48495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                for ( var i = 0; results[i]; i++ ) {
48505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( results[i].nodeType === 1 ) {
48515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                tmp.push( results[i] );
48525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
48535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
48545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
48555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                results = tmp;
48565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
48575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
48585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return results;
48595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                };
48605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
48615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
48625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Check to see if an attribute returns normalized href attributes
48635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        div.innerHTML = "<a href='#'></a>";
48645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
48655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
48665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        div.firstChild.getAttribute("href") !== "#" ) {
48675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
48685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                Expr.attrHandle.href = function( elem ) {
48695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return elem.getAttribute( "href", 2 );
48705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                };
48715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
48725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
48735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // release memory in IE
48745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        div = null;
48755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)})();
48765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
48775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if ( document.querySelectorAll ) {
48785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        (function(){
48795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var oldSizzle = Sizzle,
48805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        div = document.createElement("div"),
48815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        id = "__sizzle__";
48825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
48835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                div.innerHTML = "<p class='TEST'></p>";
48845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
48855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Safari can't handle uppercase or unicode characters when
48865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // in quirks mode.
48875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
48885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return;
48895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
48905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
48915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                Sizzle = function( query, context, extra, seed ) {
48925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        context = context || document;
48935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
48945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Only use querySelectorAll on non-XML documents
48955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // (ID selectors don't work in non-HTML documents)
48965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( !seed && !Sizzle.isXML(context) ) {
48975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // See if we find a selector to speed up
48985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query );
48995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
49005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( match && (context.nodeType === 1 || context.nodeType === 9) ) {
49015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // Speed-up: Sizzle("TAG")
49025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( match[1] ) {
49035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                return makeArray( context.getElementsByTagName( query ), extra );
49045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
49055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // Speed-up: Sizzle(".CLASS")
49065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        } else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) {
49075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                return makeArray( context.getElementsByClassName( match[2] ), extra );
49085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
49095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
49105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
49115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( context.nodeType === 9 ) {
49125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // Speed-up: Sizzle("body")
49135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // The body element only exists once, optimize finding it
49145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( query === "body" && context.body ) {
49155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                return makeArray( [ context.body ], extra );
49165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
49175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // Speed-up: Sizzle("#ID")
49185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        } else if ( match && match[3] ) {
49195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                var elem = context.getElementById( match[3] );
49205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
49215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                // Check parentNode to catch when Blackberry 4.6 returns
49225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                // nodes that are no longer in the document #6963
49235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                if ( elem && elem.parentNode ) {
49245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        // Handle the case where IE and Opera return items
49255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        // by name instead of ID
49265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        if ( elem.id === match[3] ) {
49275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                return makeArray( [ elem ], extra );
49285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        }
49295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
49305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                } else {
49315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        return makeArray( [], extra );
49325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                }
49335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
49345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
49355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        try {
49365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                return makeArray( context.querySelectorAll(query), extra );
49375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        } catch(qsaError) {}
49385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
49395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // qSA works strangely on Element-rooted queries
49405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // We can work around this by specifying an extra ID on the root
49415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // and working up from there (Thanks to Andrew Dupont for the technique)
49425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // IE 8 doesn't work on object elements
49435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
49445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        var oldContext = context,
49455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                old = context.getAttribute( "id" ),
49465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                nid = old || id,
49475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                hasParent = context.parentNode,
49485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                relativeHierarchySelector = /^\s*[+~]/.test( query );
49495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
49505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( !old ) {
49515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                context.setAttribute( "id", nid );
49525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        } else {
49535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                nid = nid.replace( /'/g, "\\$&" );
49545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
49555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( relativeHierarchySelector && hasParent ) {
49565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                context = context.parentNode;
49575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
49585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
49595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        try {
49605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                if ( !relativeHierarchySelector || hasParent ) {
49615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra );
49625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                }
49635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
49645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        } catch(pseudoError) {
49655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        } finally {
49665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                if ( !old ) {
49675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        oldContext.removeAttribute( "id" );
49685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                }
49695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
49705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
49715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
49725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
49735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return oldSizzle(query, context, extra, seed);
49745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                };
49755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
49765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                for ( var prop in oldSizzle ) {
49775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        Sizzle[ prop ] = oldSizzle[ prop ];
49785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
49795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
49805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // release memory in IE
49815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                div = null;
49825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        })();
49835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
49845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
49855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)(function(){
49865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        var html = document.documentElement,
49875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector;
49885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
49895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( matches ) {
49905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Check to see if it's possible to do matchesSelector
49915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // on a disconnected node (IE 9 fails this)
49925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ),
49935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        pseudoWorks = false;
49945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
49955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                try {
49965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // This should fail with an exception
49975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Gecko does not error, returns false instead
49985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        matches.call( document.documentElement, "[test!='']:sizzle" );
49995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
50005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } catch( pseudoError ) {
50015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        pseudoWorks = true;
50025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
50035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
50045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                Sizzle.matchesSelector = function( node, expr ) {
50055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Make sure that attribute selectors are quoted
50065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']");
50075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
50085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( !Sizzle.isXML( node ) ) {
50095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                try {
50105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {
50115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                var ret = matches.call( node, expr );
50125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
50135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                // IE 9's matchesSelector returns false on disconnected nodes
50145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                if ( ret || !disconnectedMatch ||
50155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                // As well, disconnected nodes are said to be in a document
50165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                // fragment in IE 9, so check for that
50175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                node.document && node.document.nodeType !== 11 ) {
50185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        return ret;
50195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                }
50205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
50215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                } catch(e) {}
50225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
50235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
50245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return Sizzle(expr, null, null, [node]).length > 0;
50255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                };
50265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
50275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)})();
50285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
50295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)(function(){
50305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        var div = document.createElement("div");
50315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
50325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        div.innerHTML = "<div class='test e'></div><div class='test'></div>";
50335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
50345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Opera can't find a second classname (in 9.6)
50355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Also, make sure that getElementsByClassName actually exists
50365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) {
50375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return;
50385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
50395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
50405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Safari caches class attributes, doesn't catch changes (in 3.2)
50415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        div.lastChild.className = "e";
50425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
50435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( div.getElementsByClassName("e").length === 1 ) {
50445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return;
50455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
50465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
50475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        Expr.order.splice(1, 0, "CLASS");
50485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        Expr.find.CLASS = function( match, context, isXML ) {
50495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
50505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return context.getElementsByClassName(match[1]);
50515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
50525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        };
50535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
50545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // release memory in IE
50555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        div = null;
50565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)})();
50575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
50585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
50595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        for ( var i = 0, l = checkSet.length; i < l; i++ ) {
50605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var elem = checkSet[i];
50615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
50625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( elem ) {
50635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var match = false;
50645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
50655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        elem = elem[dir];
50665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
50675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        while ( elem ) {
50685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( elem.sizcache === doneName ) {
50695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        match = checkSet[elem.sizset];
50705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        break;
50715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
50725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
50735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( elem.nodeType === 1 && !isXML ){
50745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        elem.sizcache = doneName;
50755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        elem.sizset = i;
50765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
50775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
50785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( elem.nodeName.toLowerCase() === cur ) {
50795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        match = elem;
50805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        break;
50815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
50825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
50835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                elem = elem[dir];
50845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
50855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
50865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        checkSet[i] = match;
50875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
50885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
50895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
50905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
50915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
50925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        for ( var i = 0, l = checkSet.length; i < l; i++ ) {
50935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var elem = checkSet[i];
50945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
50955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( elem ) {
50965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var match = false;
50975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
50985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        elem = elem[dir];
50995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
51005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        while ( elem ) {
51015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( elem.sizcache === doneName ) {
51025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        match = checkSet[elem.sizset];
51035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        break;
51045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
51055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
51065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( elem.nodeType === 1 ) {
51075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( !isXML ) {
51085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                elem.sizcache = doneName;
51095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                elem.sizset = i;
51105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
51115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
51125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( typeof cur !== "string" ) {
51135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                if ( elem === cur ) {
51145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        match = true;
51155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        break;
51165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                }
51175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
51185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
51195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                match = elem;
51205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                break;
51215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
51225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
51235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
51245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                elem = elem[dir];
51255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
51265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
51275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        checkSet[i] = match;
51285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
51295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
51305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
51315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
51325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if ( document.documentElement.contains ) {
51335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        Sizzle.contains = function( a, b ) {
51345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return a !== b && (a.contains ? a.contains(b) : true);
51355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        };
51365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
51375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} else if ( document.documentElement.compareDocumentPosition ) {
51385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        Sizzle.contains = function( a, b ) {
51395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return !!(a.compareDocumentPosition(b) & 16);
51405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        };
51415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
51425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} else {
51435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        Sizzle.contains = function() {
51445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return false;
51455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        };
51465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
51475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
51485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Sizzle.isXML = function( elem ) {
51495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // documentElement is verified for cases where it doesn't yet exist
51505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // (such as loading iframes in IE - #4833)
51515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;
51525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
51535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        return documentElement ? documentElement.nodeName !== "HTML" : false;
51545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
51555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
51565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var posProcess = function( selector, context ) {
51575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        var match,
51585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                tmpSet = [],
51595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                later = "",
51605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                root = context.nodeType ? [context] : context;
51615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
51625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Position selectors must be done after the filter
51635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // And so must :not(positional) so we move all PSEUDOs to the end
51645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
51655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                later += match[0];
51665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                selector = selector.replace( Expr.match.PSEUDO, "" );
51675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
51685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
51695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        selector = Expr.relative[selector] ? selector + "*" : selector;
51705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
51715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        for ( var i = 0, l = root.length; i < l; i++ ) {
51725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                Sizzle( selector, root[i], tmpSet );
51735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
51745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
51755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        return Sizzle.filter( later, tmpSet );
51765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
51775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
51785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// EXPOSE
51795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.find = Sizzle;
51805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.expr = Sizzle.selectors;
51815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.expr[":"] = jQuery.expr.filters;
51825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.unique = Sizzle.uniqueSort;
51835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.text = Sizzle.getText;
51845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.isXMLDoc = Sizzle.isXML;
51855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.contains = Sizzle.contains;
51865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
51875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
51885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)})();
51895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
51905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
51915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var runtil = /Until$/,
51925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rparentsprev = /^(?:parents|prevUntil|prevAll)/,
51935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Note: This RegExp should be improved, or likely pulled from Sizzle
51945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rmultiselector = /,/,
51955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        isSimple = /^.[^:#\[\.,]*$/,
51965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        slice = Array.prototype.slice,
51975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        POS = jQuery.expr.match.POS,
51985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // methods guaranteed to produce a unique set when starting from a unique set
51995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        guaranteedUnique = {
52005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                children: true,
52015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                contents: true,
52025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                next: true,
52035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                prev: true
52045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        };
52055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
52065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.fn.extend({
52075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        find: function( selector ) {
52085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var self = this,
52095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        i, l;
52105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
52115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( typeof selector !== "string" ) {
52125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return jQuery( selector ).filter(function() {
52135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                for ( i = 0, l = self.length; i < l; i++ ) {
52145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( jQuery.contains( self[ i ], this ) ) {
52155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                return true;
52165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
52175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
52185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        });
52195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
52205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
52215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var ret = this.pushStack( "", "find", selector ),
52225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        length, n, r;
52235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
52245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                for ( i = 0, l = this.length; i < l; i++ ) {
52255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        length = ret.length;
52265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        jQuery.find( selector, this[i], ret );
52275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
52285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( i > 0 ) {
52295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Make sure that the results are unique
52305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                for ( n = length; n < ret.length; n++ ) {
52315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        for ( r = 0; r < length; r++ ) {
52325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                if ( ret[r] === ret[n] ) {
52335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        ret.splice(n--, 1);
52345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        break;
52355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                }
52365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
52375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
52385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
52395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
52405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
52415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return ret;
52425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
52435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
52445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        has: function( target ) {
52455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var targets = jQuery( target );
52465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this.filter(function() {
52475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        for ( var i = 0, l = targets.length; i < l; i++ ) {
52485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( jQuery.contains( this, targets[i] ) ) {
52495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        return true;
52505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
52515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
52525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                });
52535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
52545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
52555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        not: function( selector ) {
52565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this.pushStack( winnow(this, selector, false), "not", selector);
52575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
52585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
52595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        filter: function( selector ) {
52605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this.pushStack( winnow(this, selector, true), "filter", selector );
52615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
52625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
52635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        is: function( selector ) {
52645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return !!selector && ( typeof selector === "string" ?
52655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        jQuery.filter( selector, this ).length > 0 :
52665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        this.filter( selector ).length > 0 );
52675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
52685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
52695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        closest: function( selectors, context ) {
52705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var ret = [], i, l, cur = this[0];
52715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
52725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Array
52735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( jQuery.isArray( selectors ) ) {
52745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var match, selector,
52755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                matches = {},
52765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                level = 1;
52775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
52785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( cur && selectors.length ) {
52795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                for ( i = 0, l = selectors.length; i < l; i++ ) {
52805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        selector = selectors[i];
52815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
52825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( !matches[ selector ] ) {
52835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                matches[ selector ] = POS.test( selector ) ?
52845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        jQuery( selector, context || this.context ) :
52855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        selector;
52865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
52875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
52885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
52895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                while ( cur && cur.ownerDocument && cur !== context ) {
52905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        for ( selector in matches ) {
52915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                match = matches[ selector ];
52925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
52935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                if ( match.jquery ? match.index( cur ) > -1 : jQuery( cur ).is( match ) ) {
52945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        ret.push({ selector: selector, elem: cur, level: level });
52955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                }
52965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
52975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
52985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        cur = cur.parentNode;
52995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        level++;
53005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
53015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
53025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
53035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return ret;
53045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
53055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
53065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // String
53075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var pos = POS.test( selectors ) || typeof selectors !== "string" ?
53085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery( selectors, context || this.context ) :
53095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                0;
53105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
53115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                for ( i = 0, l = this.length; i < l; i++ ) {
53125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        cur = this[i];
53135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
53145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        while ( cur ) {
53155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {
53165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        ret.push( cur );
53175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        break;
53185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
53195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                } else {
53205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        cur = cur.parentNode;
53215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) {
53225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                break;
53235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
53245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
53255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
53265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
53275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
53285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                ret = ret.length > 1 ? jQuery.unique( ret ) : ret;
53295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
53305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this.pushStack( ret, "closest", selectors );
53315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
53325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
53335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Determine the position of an element within
53345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // the matched set of elements
53355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        index: function( elem ) {
53365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
53375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // No argument, return index in parent
53385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( !elem ) {
53395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1;
53405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
53415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
53425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // index in selector
53435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( typeof elem === "string" ) {
53445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return jQuery.inArray( this[0], jQuery( elem ) );
53455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
53465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
53475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Locate the position of the desired element
53485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return jQuery.inArray(
53495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // If it receives a jQuery object, the first element is used
53505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        elem.jquery ? elem[0] : elem, this );
53515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
53525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
53535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        add: function( selector, context ) {
53545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var set = typeof selector === "string" ?
53555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery( selector, context ) :
53565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),
53575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        all = jQuery.merge( this.get(), set );
53585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
53595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?
53605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        all :
53615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        jQuery.unique( all ) );
53625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
53635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
53645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        andSelf: function() {
53655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this.add( this.prevObject );
53665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
53675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)});
53685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
53695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// A painfully simple check to see if an element is disconnected
53705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// from a document (should be improved, where feasible).
53715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function isDisconnected( node ) {
53725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        return !node || !node.parentNode || node.parentNode.nodeType === 11;
53735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
53745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
53755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.each({
53765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        parent: function( elem ) {
53775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var parent = elem.parentNode;
53785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return parent && parent.nodeType !== 11 ? parent : null;
53795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
53805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        parents: function( elem ) {
53815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return jQuery.dir( elem, "parentNode" );
53825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
53835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        parentsUntil: function( elem, i, until ) {
53845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return jQuery.dir( elem, "parentNode", until );
53855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
53865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        next: function( elem ) {
53875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return jQuery.nth( elem, 2, "nextSibling" );
53885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
53895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        prev: function( elem ) {
53905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return jQuery.nth( elem, 2, "previousSibling" );
53915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
53925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        nextAll: function( elem ) {
53935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return jQuery.dir( elem, "nextSibling" );
53945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
53955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        prevAll: function( elem ) {
53965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return jQuery.dir( elem, "previousSibling" );
53975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
53985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        nextUntil: function( elem, i, until ) {
53995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return jQuery.dir( elem, "nextSibling", until );
54005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
54015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        prevUntil: function( elem, i, until ) {
54025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return jQuery.dir( elem, "previousSibling", until );
54035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
54045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        siblings: function( elem ) {
54055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return jQuery.sibling( elem.parentNode.firstChild, elem );
54065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
54075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        children: function( elem ) {
54085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return jQuery.sibling( elem.firstChild );
54095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
54105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        contents: function( elem ) {
54115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return jQuery.nodeName( elem, "iframe" ) ?
54125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        elem.contentDocument || elem.contentWindow.document :
54135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        jQuery.makeArray( elem.childNodes );
54145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
54155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, function( name, fn ) {
54165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        jQuery.fn[ name ] = function( until, selector ) {
54175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var ret = jQuery.map( this, fn, until ),
54185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // The variable 'args' was introduced in
54195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // https://github.com/jquery/jquery/commit/52a0238
54205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed.
54215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // http://code.google.com/p/v8/issues/detail?id=1050
54225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        args = slice.call(arguments);
54235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
54245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( !runtil.test( name ) ) {
54255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        selector = until;
54265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
54275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
54285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( selector && typeof selector === "string" ) {
54295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        ret = jQuery.filter( selector, ret );
54305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
54315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
54325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;
54335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
54345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {
54355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        ret = ret.reverse();
54365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
54375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
54385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this.pushStack( ret, name, args.join(",") );
54395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        };
54405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)});
54415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
54425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.extend({
54435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        filter: function( expr, elems, not ) {
54445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( not ) {
54455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        expr = ":not(" + expr + ")";
54465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
54475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
54485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return elems.length === 1 ?
54495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :
54505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        jQuery.find.matches(expr, elems);
54515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
54525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
54535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        dir: function( elem, dir, until ) {
54545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var matched = [],
54555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        cur = elem[ dir ];
54565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
54575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {
54585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( cur.nodeType === 1 ) {
54595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                matched.push( cur );
54605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
54615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        cur = cur[dir];
54625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
54635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return matched;
54645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
54655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
54665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        nth: function( cur, result, dir, elem ) {
54675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                result = result || 1;
54685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var num = 0;
54695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
54705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                for ( ; cur; cur = cur[dir] ) {
54715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( cur.nodeType === 1 && ++num === result ) {
54725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                break;
54735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
54745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
54755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
54765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return cur;
54775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
54785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
54795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        sibling: function( n, elem ) {
54805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var r = [];
54815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
54825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                for ( ; n; n = n.nextSibling ) {
54835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( n.nodeType === 1 && n !== elem ) {
54845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                r.push( n );
54855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
54865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
54875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
54885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return r;
54895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
54905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)});
54915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
54925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Implement the identical functionality for filter and not
54935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function winnow( elements, qualifier, keep ) {
54945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
54955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Can't pass null or undefined to indexOf in Firefox 4
54965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Set to 0 to skip string check
54975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        qualifier = qualifier || 0;
54985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
54995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( jQuery.isFunction( qualifier ) ) {
55005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return jQuery.grep(elements, function( elem, i ) {
55015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var retVal = !!qualifier.call( elem, i, elem );
55025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return retVal === keep;
55035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                });
55045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
55055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        } else if ( qualifier.nodeType ) {
55065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return jQuery.grep(elements, function( elem, i ) {
55075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return (elem === qualifier) === keep;
55085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                });
55095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
55105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        } else if ( typeof qualifier === "string" ) {
55115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var filtered = jQuery.grep(elements, function( elem ) {
55125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return elem.nodeType === 1;
55135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                });
55145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
55155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( isSimple.test( qualifier ) ) {
55165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return jQuery.filter(qualifier, filtered, !keep);
55175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else {
55185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        qualifier = jQuery.filter( qualifier, filtered );
55195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
55205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
55215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
55225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        return jQuery.grep(elements, function( elem, i ) {
55235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return (jQuery.inArray( elem, qualifier ) >= 0) === keep;
55245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        });
55255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
55265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
55275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
55285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
55295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
55305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g,
55315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rleadingWhitespace = /^\s+/,
55325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,
55335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rtagName = /<([\w:]+)/,
55345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rtbody = /<tbody/i,
55355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rhtml = /<|&#?\w+;/,
55365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rnocache = /<(?:script|object|embed|option|style)/i,
55375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // checked="checked" or checked
55385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
55395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rscriptType = /\/(java|ecma)script/i,
55405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rcleanScript = /^\s*<!(?:\[CDATA\[|\-\-)/,
55415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        wrapMap = {
55425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                option: [ 1, "<select multiple='multiple'>", "</select>" ],
55435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                legend: [ 1, "<fieldset>", "</fieldset>" ],
55445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                thead: [ 1, "<table>", "</table>" ],
55455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                tr: [ 2, "<table><tbody>", "</tbody></table>" ],
55465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
55475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                col: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ],
55485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                area: [ 1, "<map>", "</map>" ],
55495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                _default: [ 0, "", "" ]
55505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        };
55515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
55525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)wrapMap.optgroup = wrapMap.option;
55535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
55545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)wrapMap.th = wrapMap.td;
55555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
55565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// IE can't serialize <link> and <script> tags normally
55575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if ( !jQuery.support.htmlSerialize ) {
55585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        wrapMap._default = [ 1, "div<div>", "</div>" ];
55595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
55605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
55615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.fn.extend({
55625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        text: function( text ) {
55635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( jQuery.isFunction(text) ) {
55645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return this.each(function(i) {
55655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                var self = jQuery( this );
55665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
55675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                self.text( text.call(this, i, self.text()) );
55685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        });
55695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
55705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
55715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( typeof text !== "object" && text !== undefined ) {
55725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );
55735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
55745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
55755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return jQuery.text( this );
55765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
55775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
55785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        wrapAll: function( html ) {
55795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( jQuery.isFunction( html ) ) {
55805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return this.each(function(i) {
55815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery(this).wrapAll( html.call(this, i) );
55825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        });
55835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
55845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
55855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( this[0] ) {
55865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // The elements to wrap the target around
55875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);
55885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
55895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( this[0].parentNode ) {
55905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                wrap.insertBefore( this[0] );
55915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
55925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
55935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        wrap.map(function() {
55945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                var elem = this;
55955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
55965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                while ( elem.firstChild && elem.firstChild.nodeType === 1 ) {
55975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        elem = elem.firstChild;
55985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
55995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
56005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return elem;
56015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }).append( this );
56025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
56035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
56045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this;
56055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
56065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
56075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        wrapInner: function( html ) {
56085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( jQuery.isFunction( html ) ) {
56095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return this.each(function(i) {
56105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery(this).wrapInner( html.call(this, i) );
56115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        });
56125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
56135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
56145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this.each(function() {
56155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var self = jQuery( this ),
56165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                contents = self.contents();
56175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
56185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( contents.length ) {
56195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                contents.wrapAll( html );
56205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
56215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } else {
56225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                self.append( html );
56235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
56245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                });
56255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
56265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
56275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        wrap: function( html ) {
56285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this.each(function() {
56295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        jQuery( this ).wrapAll( html );
56305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                });
56315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
56325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
56335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        unwrap: function() {
56345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this.parent().each(function() {
56355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( !jQuery.nodeName( this, "body" ) ) {
56365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery( this ).replaceWith( this.childNodes );
56375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
56385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }).end();
56395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
56405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
56415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        append: function() {
56425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this.domManip(arguments, true, function( elem ) {
56435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( this.nodeType === 1 ) {
56445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                this.appendChild( elem );
56455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
56465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                });
56475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
56485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
56495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        prepend: function() {
56505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this.domManip(arguments, true, function( elem ) {
56515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( this.nodeType === 1 ) {
56525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                this.insertBefore( elem, this.firstChild );
56535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
56545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                });
56555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
56565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
56575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        before: function() {
56585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( this[0] && this[0].parentNode ) {
56595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return this.domManip(arguments, false, function( elem ) {
56605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                this.parentNode.insertBefore( elem, this );
56615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        });
56625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else if ( arguments.length ) {
56635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var set = jQuery(arguments[0]);
56645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        set.push.apply( set, this.toArray() );
56655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return this.pushStack( set, "before", arguments );
56665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
56675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
56685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
56695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        after: function() {
56705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( this[0] && this[0].parentNode ) {
56715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return this.domManip(arguments, false, function( elem ) {
56725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                this.parentNode.insertBefore( elem, this.nextSibling );
56735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        });
56745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else if ( arguments.length ) {
56755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var set = this.pushStack( this, "after", arguments );
56765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        set.push.apply( set, jQuery(arguments[0]).toArray() );
56775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return set;
56785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
56795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
56805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
56815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // keepData is for internal use only--do not document
56825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        remove: function( selector, keepData ) {
56835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
56845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( !selector || jQuery.filter( selector, [ elem ] ).length ) {
56855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( !keepData && elem.nodeType === 1 ) {
56865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        jQuery.cleanData( elem.getElementsByTagName("*") );
56875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        jQuery.cleanData( [ elem ] );
56885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
56895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
56905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( elem.parentNode ) {
56915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        elem.parentNode.removeChild( elem );
56925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
56935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
56945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
56955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
56965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this;
56975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
56985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
56995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        empty: function() {
57005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
57015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Remove element nodes and prevent memory leaks
57025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( elem.nodeType === 1 ) {
57035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery.cleanData( elem.getElementsByTagName("*") );
57045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
57055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
57065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Remove any remaining nodes
57075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        while ( elem.firstChild ) {
57085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                elem.removeChild( elem.firstChild );
57095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
57105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
57115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
57125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this;
57135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
57145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
57155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        clone: function( dataAndEvents, deepDataAndEvents ) {
57165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
57175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
57185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
57195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this.map( function () {
57205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
57215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                });
57225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
57235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
57245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        html: function( value ) {
57255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( value === undefined ) {
57265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return this[0] && this[0].nodeType === 1 ?
57275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                this[0].innerHTML.replace(rinlinejQuery, "") :
57285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                null;
57295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
57305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // See if we can take a shortcut and just use innerHTML
57315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else if ( typeof value === "string" && !rnocache.test( value ) &&
57325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        (jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) &&
57335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        !wrapMap[ (rtagName.exec( value ) || ["", ""])[1].toLowerCase() ] ) {
57345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
57355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        value = value.replace(rxhtmlTag, "<$1></$2>");
57365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
57375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        try {
57385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                for ( var i = 0, l = this.length; i < l; i++ ) {
57395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // Remove element nodes and prevent memory leaks
57405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( this[i].nodeType === 1 ) {
57415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                jQuery.cleanData( this[i].getElementsByTagName("*") );
57425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                this[i].innerHTML = value;
57435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
57445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
57455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
57465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // If using innerHTML throws an exception, use the fallback method
57475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } catch(e) {
57485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                this.empty().append( value );
57495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
57505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
57515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else if ( jQuery.isFunction( value ) ) {
57525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        this.each(function(i){
57535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                var self = jQuery( this );
57545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
57555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                self.html( value.call(this, i, self.html()) );
57565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        });
57575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
57585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else {
57595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        this.empty().append( value );
57605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
57615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
57625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this;
57635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
57645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
57655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        replaceWith: function( value ) {
57665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( this[0] && this[0].parentNode ) {
57675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Make sure that the elements are removed from the DOM before they are inserted
57685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // this can help fix replacing a parent with child elements
57695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( jQuery.isFunction( value ) ) {
57705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return this.each(function(i) {
57715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        var self = jQuery(this), old = self.html();
57725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        self.replaceWith( value.call( this, i, old ) );
57735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                });
57745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
57755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
57765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( typeof value !== "string" ) {
57775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                value = jQuery( value ).detach();
57785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
57795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
57805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return this.each(function() {
57815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                var next = this.nextSibling,
57825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        parent = this.parentNode;
57835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
57845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery( this ).remove();
57855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
57865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( next ) {
57875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        jQuery(next).before( value );
57885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                } else {
57895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        jQuery(parent).append( value );
57905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
57915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        });
57925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else {
57935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return this.length ?
57945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value ) :
57955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                this;
57965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
57975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
57985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
57995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        detach: function( selector ) {
58005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this.remove( selector, true );
58015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
58025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
58035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        domManip: function( args, table, callback ) {
58045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var results, first, fragment, parent,
58055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        value = args[0],
58065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        scripts = [];
58075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
58085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // We can't cloneNode fragments that contain checked, in WebKit
58095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === "string" && rchecked.test( value ) ) {
58105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return this.each(function() {
58115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery(this).domManip( args, table, callback, true );
58125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        });
58135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
58145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
58155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( jQuery.isFunction(value) ) {
58165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return this.each(function(i) {
58175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                var self = jQuery(this);
58185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                args[0] = value.call(this, i, table ? self.html() : undefined);
58195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                self.domManip( args, table, callback );
58205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        });
58215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
58225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
58235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( this[0] ) {
58245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        parent = value && value.parentNode;
58255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
58265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // If we're in a fragment, just use that instead of building a new one
58275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {
58285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                results = { fragment: parent };
58295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
58305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } else {
58315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                results = jQuery.buildFragment( args, this, scripts );
58325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
58335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
58345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        fragment = results.fragment;
58355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
58365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( fragment.childNodes.length === 1 ) {
58375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                first = fragment = fragment.firstChild;
58385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } else {
58395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                first = fragment.firstChild;
58405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
58415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
58425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( first ) {
58435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                table = table && jQuery.nodeName( first, "tr" );
58445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
58455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                for ( var i = 0, l = this.length, lastIndex = l - 1; i < l; i++ ) {
58465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        callback.call(
58475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                table ?
58485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        root(this[i], first) :
58495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        this[i],
58505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                // Make sure that we do not leak memory by inadvertently discarding
58515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                // the original fragment (which might have attached data) instead of
58525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                // using it; in addition, use the original fragment object for the last
58535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                // item instead of first because it can end up being emptied incorrectly
58545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                // in certain situations (Bug #8070).
58555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                // Fragments from the fragment cache must always be cloned and never used
58565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                // in place.
58575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                results.cacheable || (l > 1 && i < lastIndex) ?
58585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        jQuery.clone( fragment, true, true ) :
58595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        fragment
58605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        );
58615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
58625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
58635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
58645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( scripts.length ) {
58655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery.each( scripts, evalScript );
58665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
58675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
58685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
58695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this;
58705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
58715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)});
58725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
58735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function root( elem, cur ) {
58745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        return jQuery.nodeName(elem, "table") ?
58755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                (elem.getElementsByTagName("tbody")[0] ||
58765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                elem.appendChild(elem.ownerDocument.createElement("tbody"))) :
58775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                elem;
58785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
58795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
58805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function cloneCopyEvent( src, dest ) {
58815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
58825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {
58835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return;
58845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
58855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
58865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        var internalKey = jQuery.expando,
58875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                oldData = jQuery.data( src ),
58885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                curData = jQuery.data( dest, oldData );
58895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
58905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Switch to use the internal data object, if it exists, for the next
58915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // stage of data copying
58925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( (oldData = oldData[ internalKey ]) ) {
58935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var events = oldData.events;
58945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                curData = curData[ internalKey ] = jQuery.extend({}, oldData);
58955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
58965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( events ) {
58975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        delete curData.handle;
58985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        curData.events = {};
58995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
59005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        for ( var type in events ) {
59015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                for ( var i = 0, l = events[ type ].length; i < l; i++ ) {
59025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        jQuery.event.add( dest, type + ( events[ type ][ i ].namespace ? "." : "" ) + events[ type ][ i ].namespace, events[ type ][ i ], events[ type ][ i ].data );
59035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
59045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
59055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
59065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
59075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
59085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
59095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function cloneFixAttributes( src, dest ) {
59105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        var nodeName;
59115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
59125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // We do not need to do anything for non-Elements
59135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( dest.nodeType !== 1 ) {
59145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return;
59155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
59165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
59175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // clearAttributes removes the attributes, which we don't want,
59185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // but also removes the attachEvent events, which we *do* want
59195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( dest.clearAttributes ) {
59205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                dest.clearAttributes();
59215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
59225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
59235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // mergeAttributes, in contrast, only merges back on the
59245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // original attributes, not the events
59255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( dest.mergeAttributes ) {
59265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                dest.mergeAttributes( src );
59275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
59285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
59295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        nodeName = dest.nodeName.toLowerCase();
59305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
59315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // IE6-8 fail to clone children inside object elements that use
59325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // the proprietary classid attribute value (rather than the type
59335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // attribute) to identify the type of content to display
59345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( nodeName === "object" ) {
59355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                dest.outerHTML = src.outerHTML;
59365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
59375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        } else if ( nodeName === "input" && (src.type === "checkbox" || src.type === "radio") ) {
59385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // IE6-8 fails to persist the checked state of a cloned checkbox
59395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // or radio button. Worse, IE6-7 fail to give the cloned element
59405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // a checked appearance if the defaultChecked value isn't also set
59415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( src.checked ) {
59425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        dest.defaultChecked = dest.checked = src.checked;
59435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
59445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
59455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // IE6-7 get confused and end up setting the value of a cloned
59465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // checkbox/radio button to an empty string instead of "on"
59475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( dest.value !== src.value ) {
59485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        dest.value = src.value;
59495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
59505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
59515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // IE6-8 fails to return the selected option to the default selected
59525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // state when cloning options
59535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        } else if ( nodeName === "option" ) {
59545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                dest.selected = src.defaultSelected;
59555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
59565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // IE6-8 fails to set the defaultValue to the correct value when
59575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // cloning other types of input fields
59585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        } else if ( nodeName === "input" || nodeName === "textarea" ) {
59595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                dest.defaultValue = src.defaultValue;
59605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
59615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
59625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Event data gets referenced instead of copied if the expando
59635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // gets copied too
59645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        dest.removeAttribute( jQuery.expando );
59655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
59665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
59675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.buildFragment = function( args, nodes, scripts ) {
59685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        var fragment, cacheable, cacheresults, doc;
59695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
59705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  // nodes may contain either an explicit document object,
59715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  // a jQuery collection or context object.
59725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  // If nodes[0] contains a valid object to assign to doc
59735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  if ( nodes && nodes[0] ) {
59745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    doc = nodes[0].ownerDocument || nodes[0];
59755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  }
59765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
59775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  // Ensure that an attr object doesn't incorrectly stand in as a document object
59785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Chrome and Firefox seem to allow this to occur and will throw exception
59795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Fixes #8950
59805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( !doc.createDocumentFragment ) {
59815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                doc = document;
59825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
59835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
59845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Only cache "small" (1/2 KB) HTML strings that are associated with the main document
59855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Cloning options loses the selected state, so don't cache them
59865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // IE 6 doesn't like it when you put <object> or <embed> elements in a fragment
59875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache
59885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( args.length === 1 && typeof args[0] === "string" && args[0].length < 512 && doc === document &&
59895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                args[0].charAt(0) === "<" && !rnocache.test( args[0] ) && (jQuery.support.checkClone || !rchecked.test( args[0] )) ) {
59905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
59915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                cacheable = true;
59925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
59935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                cacheresults = jQuery.fragments[ args[0] ];
59945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( cacheresults && cacheresults !== 1 ) {
59955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        fragment = cacheresults;
59965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
59975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
59985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
59995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( !fragment ) {
60005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                fragment = doc.createDocumentFragment();
60015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                jQuery.clean( args, doc, fragment, scripts );
60025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
60035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
60045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( cacheable ) {
60055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                jQuery.fragments[ args[0] ] = cacheresults ? fragment : 1;
60065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
60075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
60085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        return { fragment: fragment, cacheable: cacheable };
60095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
60105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
60115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.fragments = {};
60125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
60135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.each({
60145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        appendTo: "append",
60155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        prependTo: "prepend",
60165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        insertBefore: "before",
60175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        insertAfter: "after",
60185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        replaceAll: "replaceWith"
60195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, function( name, original ) {
60205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        jQuery.fn[ name ] = function( selector ) {
60215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var ret = [],
60225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        insert = jQuery( selector ),
60235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        parent = this.length === 1 && this[0].parentNode;
60245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
60255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {
60265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        insert[ original ]( this[0] );
60275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return this;
60285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
60295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else {
60305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        for ( var i = 0, l = insert.length; i < l; i++ ) {
60315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                var elems = (i > 0 ? this.clone(true) : this).get();
60325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery( insert[i] )[ original ]( elems );
60335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                ret = ret.concat( elems );
60345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
60355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
60365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return this.pushStack( ret, name, insert.selector );
60375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
60385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        };
60395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)});
60405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
60415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function getAll( elem ) {
60425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( "getElementsByTagName" in elem ) {
60435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return elem.getElementsByTagName( "*" );
60445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
60455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        } else if ( "querySelectorAll" in elem ) {
60465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return elem.querySelectorAll( "*" );
60475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
60485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        } else {
60495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return [];
60505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
60515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
60525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
60535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Used in clean, fixes the defaultChecked property
60545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function fixDefaultChecked( elem ) {
60555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( elem.type === "checkbox" || elem.type === "radio" ) {
60565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                elem.defaultChecked = elem.checked;
60575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
60585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
60595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Finds all inputs and passes them to fixDefaultChecked
60605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function findInputs( elem ) {
60615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( jQuery.nodeName( elem, "input" ) ) {
60625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                fixDefaultChecked( elem );
60635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        } else if ( "getElementsByTagName" in elem ) {
60645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                jQuery.grep( elem.getElementsByTagName("input"), fixDefaultChecked );
60655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
60665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
60675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
60685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.extend({
60695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        clone: function( elem, dataAndEvents, deepDataAndEvents ) {
60705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var clone = elem.cloneNode(true),
60715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                srcElements,
60725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                destElements,
60735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                i;
60745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
60755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&
60765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {
60775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // IE copies events bound via attachEvent when using cloneNode.
60785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Calling detachEvent on the clone will also remove the events
60795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // from the original. In order to get around this, we use some
60805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // proprietary methods to clear the events. Thanks to MooTools
60815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // guys for this hotness.
60825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
60835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        cloneFixAttributes( elem, clone );
60845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
60855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Using Sizzle here is crazy slow, so we use getElementsByTagName
60865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // instead
60875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        srcElements = getAll( elem );
60885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        destElements = getAll( clone );
60895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
60905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Weird iteration because IE will replace the length property
60915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // with an element if you are cloning the body and one of the
60925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // elements on the page has a name or id of "length"
60935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        for ( i = 0; srcElements[i]; ++i ) {
60945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Ensure that the destination node is not null; Fixes #9587
60955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( destElements[i] ) {
60965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        cloneFixAttributes( srcElements[i], destElements[i] );
60975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
60985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
60995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
61005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
61015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Copy the events from the original to the clone
61025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( dataAndEvents ) {
61035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        cloneCopyEvent( elem, clone );
61045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
61055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( deepDataAndEvents ) {
61065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                srcElements = getAll( elem );
61075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                destElements = getAll( clone );
61085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
61095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                for ( i = 0; srcElements[i]; ++i ) {
61105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        cloneCopyEvent( srcElements[i], destElements[i] );
61115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
61125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
61135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
61145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
61155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                srcElements = destElements = null;
61165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
61175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Return the cloned set
61185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return clone;
61195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
61205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
61215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        clean: function( elems, context, fragment, scripts ) {
61225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var checkScriptType;
61235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
61245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                context = context || document;
61255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
61265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // !context.createElement fails in IE with an error but returns typeof 'object'
61275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( typeof context.createElement === "undefined" ) {
61285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        context = context.ownerDocument || context[0] && context[0].ownerDocument || document;
61295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
61305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
61315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var ret = [], j;
61325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
61335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
61345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( typeof elem === "number" ) {
61355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                elem += "";
61365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
61375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
61385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( !elem ) {
61395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                continue;
61405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
61415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
61425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Convert html string into DOM nodes
61435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( typeof elem === "string" ) {
61445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( !rhtml.test( elem ) ) {
61455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        elem = context.createTextNode( elem );
61465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                } else {
61475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // Fix "XHTML"-style tags in all browsers
61485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        elem = elem.replace(rxhtmlTag, "<$1></$2>");
61495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
61505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // Trim whitespace, otherwise indexOf won't work as expected
61515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        var tag = (rtagName.exec( elem ) || ["", ""])[1].toLowerCase(),
61525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                wrap = wrapMap[ tag ] || wrapMap._default,
61535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                depth = wrap[0],
61545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                div = context.createElement("div");
61555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
61565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // Go to html and back, then peel off extra wrappers
61575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        div.innerHTML = wrap[1] + elem + wrap[2];
61585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
61595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // Move to the right depth
61605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        while ( depth-- ) {
61615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                div = div.lastChild;
61625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
61635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
61645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // Remove IE's autoinserted <tbody> from table fragments
61655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( !jQuery.support.tbody ) {
61665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
61675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                // String was a <table>, *may* have spurious <tbody>
61685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                var hasBody = rtbody.test(elem),
61695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        tbody = tag === "table" && !hasBody ?
61705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                div.firstChild && div.firstChild.childNodes :
61715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
61725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                // String was a bare <thead> or <tfoot>
61735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                wrap[1] === "<table>" && !hasBody ?
61745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                        div.childNodes :
61755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                        [];
61765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
61775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                for ( j = tbody.length - 1; j >= 0 ; --j ) {
61785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) {
61795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                tbody[ j ].parentNode.removeChild( tbody[ j ] );
61805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        }
61815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                }
61825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
61835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
61845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // IE completely kills leading whitespace when innerHTML is used
61855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {
61865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                div.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );
61875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
61885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
61895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        elem = div.childNodes;
61905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
61915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
61925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
61935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Resets defaultChecked for any radios and checkboxes
61945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // about to be appended to the DOM in IE 6/7 (#8060)
61955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var len;
61965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( !jQuery.support.appendChecked ) {
61975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( elem[0] && typeof (len = elem.length) === "number" ) {
61985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        for ( j = 0; j < len; j++ ) {
61995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                findInputs( elem[j] );
62005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
62015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                } else {
62025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        findInputs( elem );
62035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
62045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
62055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
62065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( elem.nodeType ) {
62075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                ret.push( elem );
62085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } else {
62095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                ret = jQuery.merge( ret, elem );
62105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
62115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
62125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
62135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( fragment ) {
62145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        checkScriptType = function( elem ) {
62155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return !elem.type || rscriptType.test( elem.type );
62165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        };
62175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        for ( i = 0; ret[i]; i++ ) {
62185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( scripts && jQuery.nodeName( ret[i], "script" ) && (!ret[i].type || ret[i].type.toLowerCase() === "text/javascript") ) {
62195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        scripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );
62205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
62215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                } else {
62225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( ret[i].nodeType === 1 ) {
62235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                var jsTags = jQuery.grep( ret[i].getElementsByTagName( "script" ), checkScriptType );
62245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
62255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                ret.splice.apply( ret, [i + 1, 0].concat( jsTags ) );
62265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
62275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        fragment.appendChild( ret[i] );
62285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
62295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
62305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
62315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
62325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return ret;
62335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
62345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
62355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        cleanData: function( elems ) {
62365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var data, id, cache = jQuery.cache, internalKey = jQuery.expando, special = jQuery.event.special,
62375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        deleteExpando = jQuery.support.deleteExpando;
62385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
62395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
62405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {
62415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                continue;
62425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
62435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
62445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        id = elem[ jQuery.expando ];
62455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
62465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( id ) {
62475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                data = cache[ id ] && cache[ id ][ internalKey ];
62485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
62495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( data && data.events ) {
62505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        for ( var type in data.events ) {
62515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                if ( special[ type ] ) {
62525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        jQuery.event.remove( elem, type );
62535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
62545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                // This is a shortcut to avoid jQuery.event.remove's overhead
62555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                } else {
62565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        jQuery.removeEvent( elem, type, data.handle );
62575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                }
62585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
62595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
62605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // Null the DOM reference to avoid IE6/7/8 leak (#7054)
62615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( data.handle ) {
62625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                data.handle.elem = null;
62635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
62645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
62655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
62665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( deleteExpando ) {
62675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        delete elem[ jQuery.expando ];
62685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
62695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                } else if ( elem.removeAttribute ) {
62705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        elem.removeAttribute( jQuery.expando );
62715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
62725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
62735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                delete cache[ id ];
62745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
62755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
62765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
62775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)});
62785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
62795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function evalScript( i, elem ) {
62805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( elem.src ) {
62815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                jQuery.ajax({
62825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        url: elem.src,
62835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        async: false,
62845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        dataType: "script"
62855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                });
62865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        } else {
62875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                jQuery.globalEval( ( elem.text || elem.textContent || elem.innerHTML || "" ).replace( rcleanScript, "/*$0*/" ) );
62885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
62895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
62905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( elem.parentNode ) {
62915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                elem.parentNode.removeChild( elem );
62925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
62935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
62945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
62955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
62965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
62975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
62985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var ralpha = /alpha\([^)]*\)/i,
62995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        ropacity = /opacity=([^)]*)/,
63005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // fixed for IE9, see #8346
63015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rupper = /([A-Z]|^ms)/g,
63025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rnumpx = /^-?\d+(?:px)?$/i,
63035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rnum = /^-?\d/,
63045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rrelNum = /^([\-+])=([\-+.\de]+)/,
63055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
63065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        cssShow = { position: "absolute", visibility: "hidden", display: "block" },
63075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        cssWidth = [ "Left", "Right" ],
63085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        cssHeight = [ "Top", "Bottom" ],
63095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        curCSS,
63105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
63115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        getComputedStyle,
63125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        currentStyle;
63135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
63145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.fn.css = function( name, value ) {
63155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Setting 'undefined' is a no-op
63165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( arguments.length === 2 && value === undefined ) {
63175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this;
63185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
63195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
63205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        return jQuery.access( this, name, value, true, function( elem, name, value ) {
63215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return value !== undefined ?
63225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        jQuery.style( elem, name, value ) :
63235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        jQuery.css( elem, name );
63245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        });
63255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
63265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
63275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.extend({
63285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Add in style property hooks for overriding the default
63295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // behavior of getting and setting a style property
63305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        cssHooks: {
63315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                opacity: {
63325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        get: function( elem, computed ) {
63335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( computed ) {
63345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // We should always get a number back from opacity
63355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        var ret = curCSS( elem, "opacity", "opacity" );
63365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        return ret === "" ? "1" : ret;
63375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
63385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                } else {
63395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        return elem.style.opacity;
63405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
63415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
63425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
63435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
63445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
63455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Exclude the following css properties to add px
63465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        cssNumber: {
63475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                "fillOpacity": true,
63485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                "fontWeight": true,
63495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                "lineHeight": true,
63505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                "opacity": true,
63515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                "orphans": true,
63525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                "widows": true,
63535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                "zIndex": true,
63545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                "zoom": true
63555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
63565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
63575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Add in properties whose names you wish to fix before
63585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // setting or getting the value
63595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        cssProps: {
63605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // normalize float css property
63615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat"
63625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
63635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
63645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Get and set the style property on a DOM Node
63655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        style: function( elem, name, value, extra ) {
63665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Don't set styles on text and comment nodes
63675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
63685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return;
63695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
63705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
63715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Make sure that we're working with the right name
63725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var ret, type, origName = jQuery.camelCase( name ),
63735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        style = elem.style, hooks = jQuery.cssHooks[ origName ];
63745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
63755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                name = jQuery.cssProps[ origName ] || origName;
63765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
63775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Check if we're setting a value
63785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( value !== undefined ) {
63795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        type = typeof value;
63805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
63815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // convert relative number strings (+= or -=) to relative numbers. #7345
63825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( type === "string" && (ret = rrelNum.exec( value )) ) {
63835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                value = ( +( ret[1] + 1) * +ret[2] ) + parseFloat( jQuery.css( elem, name ) );
63845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Fixes bug #9237
63855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                type = "number";
63865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
63875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
63885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Make sure that NaN and null values aren't set. See: #7116
63895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( value == null || type === "number" && isNaN( value ) ) {
63905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return;
63915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
63925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
63935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // If a number was passed in, add 'px' to the (except for certain CSS properties)
63945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
63955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                value += "px";
63965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
63975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
63985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // If a hook was provided, use that value, otherwise just set the specified value
63995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value )) !== undefined ) {
64005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Wrapped to prevent IE from throwing errors when 'invalid' values are provided
64015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Fixes bug #5509
64025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                try {
64035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        style[ name ] = value;
64045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                } catch(e) {}
64055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
64065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
64075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else {
64085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // If a hook was provided get the non-computed value from there
64095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
64105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return ret;
64115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
64125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
64135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Otherwise just get the value from the style object
64145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return style[ name ];
64155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
64165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
64175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
64185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        css: function( elem, name, extra ) {
64195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var ret, hooks;
64205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
64215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Make sure that we're working with the right name
64225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                name = jQuery.camelCase( name );
64235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                hooks = jQuery.cssHooks[ name ];
64245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                name = jQuery.cssProps[ name ] || name;
64255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
64265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // cssFloat needs a special treatment
64275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( name === "cssFloat" ) {
64285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        name = "float";
64295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
64305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
64315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // If a hook was provided get the computed value from there
64325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( hooks && "get" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) {
64335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return ret;
64345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
64355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Otherwise, if a way to get the computed value exists, use that
64365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else if ( curCSS ) {
64375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return curCSS( elem, name );
64385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
64395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
64405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
64415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // A method for quickly swapping in/out CSS properties to get correct calculations
64425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        swap: function( elem, options, callback ) {
64435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var old = {};
64445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
64455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Remember the old values, and insert the new ones
64465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                for ( var name in options ) {
64475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        old[ name ] = elem.style[ name ];
64485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        elem.style[ name ] = options[ name ];
64495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
64505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
64515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                callback.call( elem );
64525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
64535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Revert the old values
64545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                for ( name in options ) {
64555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        elem.style[ name ] = old[ name ];
64565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
64575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
64585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)});
64595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
64605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// DEPRECATED, Use jQuery.css() instead
64615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.curCSS = jQuery.css;
64625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
64635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.each(["height", "width"], function( i, name ) {
64645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        jQuery.cssHooks[ name ] = {
64655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                get: function( elem, computed, extra ) {
64665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var val;
64675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
64685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( computed ) {
64695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( elem.offsetWidth !== 0 ) {
64705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        return getWH( elem, name, extra );
64715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                } else {
64725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        jQuery.swap( elem, cssShow, function() {
64735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                val = getWH( elem, name, extra );
64745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        });
64755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
64765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
64775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return val;
64785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
64795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
64805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
64815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                set: function( elem, value ) {
64825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( rnumpx.test( value ) ) {
64835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // ignore negative width and height values #1599
64845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                value = parseFloat( value );
64855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
64865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( value >= 0 ) {
64875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        return value + "px";
64885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
64895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
64905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } else {
64915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return value;
64925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
64935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
64945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        };
64955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)});
64965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
64975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if ( !jQuery.support.opacity ) {
64985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        jQuery.cssHooks.opacity = {
64995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                get: function( elem, computed ) {
65005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // IE uses filters for opacity
65015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "" ) ?
65025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                ( parseFloat( RegExp.$1 ) / 100 ) + "" :
65035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                computed ? "1" : "";
65045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
65055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
65065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                set: function( elem, value ) {
65075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var style = elem.style,
65085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                currentStyle = elem.currentStyle,
65095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                opacity = jQuery.isNaN( value ) ? "" : "alpha(opacity=" + value * 100 + ")",
65105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                filter = currentStyle && currentStyle.filter || style.filter || "";
65115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
65125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // IE has trouble with opacity if it does not have layout
65135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Force it by setting the zoom level
65145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        style.zoom = 1;
65155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
65165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652
65175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( value >= 1 && jQuery.trim( filter.replace( ralpha, "" ) ) === "" ) {
65185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
65195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Setting style.filter to null, "" & " " still leave "filter:" in the cssText
65205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // if "filter:" is present at all, clearType is disabled, we want to avoid this
65215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // style.removeAttribute is IE Only, but so apparently is this code path...
65225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                style.removeAttribute( "filter" );
65235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
65245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // if there there is no filter style applied in a css rule, we are done
65255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( currentStyle && !currentStyle.filter ) {
65265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        return;
65275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
65285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
65295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
65305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // otherwise, set new filter values
65315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        style.filter = ralpha.test( filter ) ?
65325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                filter.replace( ralpha, opacity ) :
65335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                filter + " " + opacity;
65345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
65355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        };
65365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
65375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
65385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery(function() {
65395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // This hook cannot be added until DOM ready because the support test
65405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // for it is not run until after DOM ready
65415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( !jQuery.support.reliableMarginRight ) {
65425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                jQuery.cssHooks.marginRight = {
65435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        get: function( elem, computed ) {
65445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
65455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Work around by temporarily setting element display to inline-block
65465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                var ret;
65475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery.swap( elem, { "display": "inline-block" }, function() {
65485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( computed ) {
65495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                ret = curCSS( elem, "margin-right", "marginRight" );
65505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        } else {
65515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                ret = elem.style.marginRight;
65525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
65535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                });
65545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return ret;
65555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
65565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                };
65575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
65585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)});
65595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
65605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if ( document.defaultView && document.defaultView.getComputedStyle ) {
65615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        getComputedStyle = function( elem, name ) {
65625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var ret, defaultView, computedStyle;
65635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
65645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                name = name.replace( rupper, "-$1" ).toLowerCase();
65655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
65665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( !(defaultView = elem.ownerDocument.defaultView) ) {
65675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return undefined;
65685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
65695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
65705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( (computedStyle = defaultView.getComputedStyle( elem, null )) ) {
65715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        ret = computedStyle.getPropertyValue( name );
65725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( ret === "" && !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {
65735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                ret = jQuery.style( elem, name );
65745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
65755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
65765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
65775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return ret;
65785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        };
65795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
65805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
65815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if ( document.documentElement.currentStyle ) {
65825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        currentStyle = function( elem, name ) {
65835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var left,
65845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        ret = elem.currentStyle && elem.currentStyle[ name ],
65855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        rsLeft = elem.runtimeStyle && elem.runtimeStyle[ name ],
65865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        style = elem.style;
65875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
65885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // From the awesome hack by Dean Edwards
65895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
65905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
65915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // If we're not dealing with a regular pixel number
65925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // but a number that has a weird ending, we need to convert it to pixels
65935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( !rnumpx.test( ret ) && rnum.test( ret ) ) {
65945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Remember the original values
65955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        left = style.left;
65965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
65975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Put in the new values to get a computed value out
65985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( rsLeft ) {
65995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                elem.runtimeStyle.left = elem.currentStyle.left;
66005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
66015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        style.left = name === "fontSize" ? "1em" : (ret || 0);
66025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        ret = style.pixelLeft + "px";
66035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
66045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Revert the changed values
66055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        style.left = left;
66065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( rsLeft ) {
66075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                elem.runtimeStyle.left = rsLeft;
66085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
66095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
66105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
66115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return ret === "" ? "auto" : ret;
66125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        };
66135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
66145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
66155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)curCSS = getComputedStyle || currentStyle;
66165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
66175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function getWH( elem, name, extra ) {
66185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
66195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Start with offset property
66205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        var val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
66215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                which = name === "width" ? cssWidth : cssHeight;
66225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
66235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( val > 0 ) {
66245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( extra !== "border" ) {
66255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        jQuery.each( which, function() {
66265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( !extra ) {
66275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        val -= parseFloat( jQuery.css( elem, "padding" + this ) ) || 0;
66285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
66295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( extra === "margin" ) {
66305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        val += parseFloat( jQuery.css( elem, extra + this ) ) || 0;
66315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                } else {
66325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        val -= parseFloat( jQuery.css( elem, "border" + this + "Width" ) ) || 0;
66335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
66345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        });
66355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
66365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
66375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return val + "px";
66385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
66395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
66405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Fall back to computed then uncomputed css if necessary
66415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        val = curCSS( elem, name, name );
66425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( val < 0 || val == null ) {
66435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                val = elem.style[ name ] || 0;
66445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
66455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Normalize "", auto, and prepare for extra
66465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        val = parseFloat( val ) || 0;
66475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
66485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Add padding, border, margin
66495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( extra ) {
66505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                jQuery.each( which, function() {
66515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        val += parseFloat( jQuery.css( elem, "padding" + this ) ) || 0;
66525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( extra !== "padding" ) {
66535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                val += parseFloat( jQuery.css( elem, "border" + this + "Width" ) ) || 0;
66545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
66555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( extra === "margin" ) {
66565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                val += parseFloat( jQuery.css( elem, extra + this ) ) || 0;
66575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
66585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                });
66595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
66605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
66615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        return val + "px";
66625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
66635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
66645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if ( jQuery.expr && jQuery.expr.filters ) {
66655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        jQuery.expr.filters.hidden = function( elem ) {
66665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var width = elem.offsetWidth,
66675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        height = elem.offsetHeight;
66685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
66695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return (width === 0 && height === 0) || (!jQuery.support.reliableHiddenOffsets && (elem.style.display || jQuery.css( elem, "display" )) === "none");
66705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        };
66715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
66725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        jQuery.expr.filters.visible = function( elem ) {
66735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return !jQuery.expr.filters.hidden( elem );
66745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        };
66755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
66765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
66775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
66785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
66795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
66805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var r20 = /%20/g,
66815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rbracket = /\[\]$/,
66825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rCRLF = /\r?\n/g,
66835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rhash = /#.*$/,
66845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL
66855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rinput = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,
66865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // #7653, #8125, #8152: local protocol detection
66875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rlocalProtocol = /^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,
66885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rnoContent = /^(?:GET|HEAD)$/,
66895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rprotocol = /^\/\//,
66905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rquery = /\?/,
66915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rscript = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
66925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rselectTextarea = /^(?:select|textarea)/i,
66935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rspacesAjax = /\s+/,
66945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rts = /([?&])_=[^&]*/,
66955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rurl = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,
66965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
66975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Keep a copy of the old load method
66985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        _load = jQuery.fn.load,
66995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
67005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        /* Prefilters
67015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)         * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
67025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)         * 2) These are called:
67035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)         *    - BEFORE asking for a transport
67045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)         *    - AFTER param serialization (s.data is a string if s.processData is true)
67055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)         * 3) key is the dataType
67065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)         * 4) the catchall symbol "*" can be used
67075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)         * 5) execution will start with transport dataType and THEN continue down to "*" if needed
67085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)         */
67095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        prefilters = {},
67105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
67115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        /* Transports bindings
67125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)         * 1) key is the dataType
67135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)         * 2) the catchall symbol "*" can be used
67145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)         * 3) selection will start with transport dataType and THEN go to "*" if needed
67155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)         */
67165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        transports = {},
67175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
67185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Document location
67195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        ajaxLocation,
67205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
67215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Document location segments
67225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        ajaxLocParts,
67235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
67245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
67255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        allTypes = ["*/"] + ["*"];
67265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
67275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// #8138, IE may throw an exception when accessing
67285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// a field from window.location if document.domain has been set
67295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)try {
67305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        ajaxLocation = location.href;
67315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} catch( e ) {
67325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Use the href attribute of an A element
67335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // since IE will modify it given document.location
67345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        ajaxLocation = document.createElement( "a" );
67355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        ajaxLocation.href = "";
67365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        ajaxLocation = ajaxLocation.href;
67375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
67385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
67395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Segment location into parts
67405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];
67415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
67425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
67435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function addToPrefiltersOrTransports( structure ) {
67445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
67455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // dataTypeExpression is optional and defaults to "*"
67465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        return function( dataTypeExpression, func ) {
67475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
67485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( typeof dataTypeExpression !== "string" ) {
67495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        func = dataTypeExpression;
67505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        dataTypeExpression = "*";
67515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
67525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
67535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( jQuery.isFunction( func ) ) {
67545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var dataTypes = dataTypeExpression.toLowerCase().split( rspacesAjax ),
67555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                i = 0,
67565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                length = dataTypes.length,
67575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                dataType,
67585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                list,
67595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                placeBefore;
67605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
67615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // For each dataType in the dataTypeExpression
67625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        for(; i < length; i++ ) {
67635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                dataType = dataTypes[ i ];
67645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // We control if we're asked to add before
67655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // any existing element
67665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                placeBefore = /^\+/.test( dataType );
67675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( placeBefore ) {
67685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        dataType = dataType.substr( 1 ) || "*";
67695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
67705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                list = structure[ dataType ] = structure[ dataType ] || [];
67715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // then we add to the structure accordingly
67725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                list[ placeBefore ? "unshift" : "push" ]( func );
67735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
67745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
67755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        };
67765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
67775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
67785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Base inspection function for prefilters and transports
67795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR,
67805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                dataType /* internal */, inspected /* internal */ ) {
67815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
67825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        dataType = dataType || options.dataTypes[ 0 ];
67835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        inspected = inspected || {};
67845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
67855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        inspected[ dataType ] = true;
67865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
67875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        var list = structure[ dataType ],
67885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                i = 0,
67895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                length = list ? list.length : 0,
67905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                executeOnly = ( structure === prefilters ),
67915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                selection;
67925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
67935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        for(; i < length && ( executeOnly || !selection ); i++ ) {
67945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                selection = list[ i ]( options, originalOptions, jqXHR );
67955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // If we got redirected to another dataType
67965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // we try there if executing only and not done already
67975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( typeof selection === "string" ) {
67985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( !executeOnly || inspected[ selection ] ) {
67995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                selection = undefined;
68005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } else {
68015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                options.dataTypes.unshift( selection );
68025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                selection = inspectPrefiltersOrTransports(
68035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                structure, options, originalOptions, jqXHR, selection, inspected );
68045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
68055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
68065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
68075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // If we're only executing or nothing was selected
68085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // we try the catchall dataType if not done already
68095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( ( executeOnly || !selection ) && !inspected[ "*" ] ) {
68105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                selection = inspectPrefiltersOrTransports(
68115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                structure, options, originalOptions, jqXHR, "*", inspected );
68125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
68135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // unnecessary when only executing (prefilters)
68145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // but it'll be ignored by the caller in that case
68155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        return selection;
68165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
68175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
68185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// A special extend for ajax options
68195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// that takes "flat" options (not to be deep extended)
68205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Fixes #9887
68215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function ajaxExtend( target, src ) {
68225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        var key, deep,
68235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                flatOptions = jQuery.ajaxSettings.flatOptions || {};
68245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        for( key in src ) {
68255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( src[ key ] !== undefined ) {
68265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];
68275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
68285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
68295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( deep ) {
68305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                jQuery.extend( true, target, deep );
68315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
68325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
68335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
68345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.fn.extend({
68355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        load: function( url, params, callback ) {
68365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( typeof url !== "string" && _load ) {
68375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return _load.apply( this, arguments );
68385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
68395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Don't do a request if no elements are being requested
68405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else if ( !this.length ) {
68415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return this;
68425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
68435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
68445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var off = url.indexOf( " " );
68455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( off >= 0 ) {
68465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var selector = url.slice( off, url.length );
68475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        url = url.slice( 0, off );
68485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
68495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
68505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Default to a GET request
68515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var type = "GET";
68525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
68535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // If the second parameter was provided
68545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( params ) {
68555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // If it's a function
68565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( jQuery.isFunction( params ) ) {
68575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // We assume that it's the callback
68585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                callback = params;
68595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                params = undefined;
68605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
68615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Otherwise, build a param string
68625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } else if ( typeof params === "object" ) {
68635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                params = jQuery.param( params, jQuery.ajaxSettings.traditional );
68645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                type = "POST";
68655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
68665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
68675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
68685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var self = this;
68695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
68705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Request the remote document
68715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                jQuery.ajax({
68725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        url: url,
68735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        type: type,
68745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        dataType: "html",
68755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        data: params,
68765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Complete callback (responseText is used internally)
68775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        complete: function( jqXHR, status, responseText ) {
68785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Store the response as specified by the jqXHR object
68795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                responseText = jqXHR.responseText;
68805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // If successful, inject the HTML into all the matched elements
68815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( jqXHR.isResolved() ) {
68825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // #4825: Get the actual response in case
68835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // a dataFilter is present in ajaxSettings
68845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        jqXHR.done(function( r ) {
68855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                responseText = r;
68865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        });
68875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // See if a selector was specified
68885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        self.html( selector ?
68895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                // Create a dummy div to hold the results
68905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                jQuery("<div>")
68915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        // inject the contents of the document in, removing the scripts
68925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        // to avoid any 'Permission Denied' errors in IE
68935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        .append(responseText.replace(rscript, ""))
68945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
68955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        // Locate the specified elements
68965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        .find(selector) :
68975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
68985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                // If not, just inject the full result
68995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                responseText );
69005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
69015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
69025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( callback ) {
69035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        self.each( callback, [ responseText, status, jqXHR ] );
69045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
69055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
69065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                });
69075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
69085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this;
69095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
69105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
69115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        serialize: function() {
69125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return jQuery.param( this.serializeArray() );
69135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
69145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
69155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        serializeArray: function() {
69165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this.map(function(){
69175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return this.elements ? jQuery.makeArray( this.elements ) : this;
69185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                })
69195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                .filter(function(){
69205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return this.name && !this.disabled &&
69215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                ( this.checked || rselectTextarea.test( this.nodeName ) ||
69225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        rinput.test( this.type ) );
69235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                })
69245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                .map(function( i, elem ){
69255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var val = jQuery( this ).val();
69265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
69275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return val == null ?
69285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                null :
69295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery.isArray( val ) ?
69305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        jQuery.map( val, function( val, i ){
69315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
69325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }) :
69335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
69345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }).get();
69355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
69365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)});
69375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
69385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Attach a bunch of functions for handling common AJAX events
69395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.each( "ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split( " " ), function( i, o ){
69405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        jQuery.fn[ o ] = function( f ){
69415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this.bind( o, f );
69425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        };
69435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)});
69445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
69455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.each( [ "get", "post" ], function( i, method ) {
69465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        jQuery[ method ] = function( url, data, callback, type ) {
69475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // shift arguments if data argument was omitted
69485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( jQuery.isFunction( data ) ) {
69495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        type = type || callback;
69505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        callback = data;
69515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        data = undefined;
69525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
69535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
69545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return jQuery.ajax({
69555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        type: method,
69565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        url: url,
69575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        data: data,
69585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        success: callback,
69595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        dataType: type
69605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                });
69615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        };
69625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)});
69635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
69645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.extend({
69655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
69665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        getScript: function( url, callback ) {
69675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return jQuery.get( url, undefined, callback, "script" );
69685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
69695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
69705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        getJSON: function( url, data, callback ) {
69715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return jQuery.get( url, data, callback, "json" );
69725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
69735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
69745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Creates a full fledged settings object into target
69755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // with both ajaxSettings and settings fields.
69765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // If target is omitted, writes into ajaxSettings.
69775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        ajaxSetup: function( target, settings ) {
69785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( settings ) {
69795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Building a settings object
69805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        ajaxExtend( target, jQuery.ajaxSettings );
69815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else {
69825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Extending ajaxSettings
69835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        settings = target;
69845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        target = jQuery.ajaxSettings;
69855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
69865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                ajaxExtend( target, settings );
69875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return target;
69885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
69895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
69905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        ajaxSettings: {
69915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                url: ajaxLocation,
69925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
69935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                global: true,
69945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                type: "GET",
69955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                contentType: "application/x-www-form-urlencoded",
69965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                processData: true,
69975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                async: true,
69985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                /*
69995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                timeout: 0,
70005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                data: null,
70015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                dataType: null,
70025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                username: null,
70035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                password: null,
70045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                cache: null,
70055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                traditional: false,
70065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                headers: {},
70075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                */
70085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
70095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                accepts: {
70105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        xml: "application/xml, text/xml",
70115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        html: "text/html",
70125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        text: "text/plain",
70135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        json: "application/json, text/javascript",
70145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        "*": allTypes
70155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
70165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
70175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                contents: {
70185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        xml: /xml/,
70195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        html: /html/,
70205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        json: /json/
70215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
70225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
70235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                responseFields: {
70245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        xml: "responseXML",
70255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        text: "responseText"
70265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
70275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
70285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // List of data converters
70295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // 1) key format is "source_type destination_type" (a single space in-between)
70305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // 2) the catchall symbol "*" can be used for source_type
70315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                converters: {
70325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
70335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Convert anything to text
70345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        "* text": window.String,
70355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
70365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Text to html (true = no transformation)
70375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        "text html": true,
70385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
70395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Evaluate text as a json expression
70405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        "text json": jQuery.parseJSON,
70415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
70425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Parse text as xml
70435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        "text xml": jQuery.parseXML
70445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
70455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
70465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // For options that shouldn't be deep extended:
70475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // you can add your own custom options here if
70485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // and when you create one that shouldn't be
70495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // deep extended (see ajaxExtend)
70505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                flatOptions: {
70515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        context: true,
70525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        url: true
70535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
70545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
70555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
70565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
70575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        ajaxTransport: addToPrefiltersOrTransports( transports ),
70585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
70595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Main method
70605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        ajax: function( url, options ) {
70615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
70625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // If url is an object, simulate pre-1.5 signature
70635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( typeof url === "object" ) {
70645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        options = url;
70655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        url = undefined;
70665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
70675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
70685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Force options to be an object
70695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                options = options || {};
70705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
70715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var // Create the final options object
70725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        s = jQuery.ajaxSetup( {}, options ),
70735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Callbacks context
70745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        callbackContext = s.context || s,
70755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Context for global events
70765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // It's the callbackContext if one was provided in the options
70775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // and if it's a DOM node or a jQuery collection
70785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        globalEventContext = callbackContext !== s &&
70795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                ( callbackContext.nodeType || callbackContext instanceof jQuery ) ?
70805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                jQuery( callbackContext ) : jQuery.event,
70815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Deferreds
70825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        deferred = jQuery.Deferred(),
70835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        completeDeferred = jQuery._Deferred(),
70845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Status-dependent callbacks
70855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        statusCode = s.statusCode || {},
70865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // ifModified key
70875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        ifModifiedKey,
70885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Headers (they are sent all at once)
70895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        requestHeaders = {},
70905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        requestHeadersNames = {},
70915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Response headers
70925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        responseHeadersString,
70935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        responseHeaders,
70945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // transport
70955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        transport,
70965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // timeout handle
70975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        timeoutTimer,
70985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Cross-domain detection vars
70995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        parts,
71005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // The jqXHR state
71015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        state = 0,
71025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // To know if global events are to be dispatched
71035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        fireGlobals,
71045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Loop variable
71055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        i,
71065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Fake xhr
71075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        jqXHR = {
71085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
71095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                readyState: 0,
71105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
71115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Caches the header
71125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                setRequestHeader: function( name, value ) {
71135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( !state ) {
71145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                var lname = name.toLowerCase();
71155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
71165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                requestHeaders[ name ] = value;
71175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
71185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        return this;
71195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                },
71205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
71215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Raw string
71225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                getAllResponseHeaders: function() {
71235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        return state === 2 ? responseHeadersString : null;
71245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                },
71255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
71265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Builds headers hashtable if needed
71275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                getResponseHeader: function( key ) {
71285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        var match;
71295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( state === 2 ) {
71305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                if ( !responseHeaders ) {
71315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        responseHeaders = {};
71325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        while( ( match = rheaders.exec( responseHeadersString ) ) ) {
71335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
71345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        }
71355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                }
71365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                match = responseHeaders[ key.toLowerCase() ];
71375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
71385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        return match === undefined ? null : match;
71395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                },
71405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
71415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Overrides response content-type header
71425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                overrideMimeType: function( type ) {
71435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( !state ) {
71445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                s.mimeType = type;
71455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
71465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        return this;
71475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                },
71485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
71495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Cancel the request
71505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                abort: function( statusText ) {
71515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        statusText = statusText || "abort";
71525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( transport ) {
71535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                transport.abort( statusText );
71545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
71555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        done( 0, statusText );
71565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        return this;
71575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
71585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        };
71595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
71605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Callback for when everything is done
71615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // It is defined here because jslint complains if it is declared
71625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // at the end of the function (which would be more logical and readable)
71635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                function done( status, nativeStatusText, responses, headers ) {
71645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
71655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Called once
71665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( state === 2 ) {
71675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return;
71685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
71695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
71705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // State is "done" now
71715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        state = 2;
71725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
71735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Clear timeout if it exists
71745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( timeoutTimer ) {
71755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                clearTimeout( timeoutTimer );
71765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
71775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
71785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Dereference transport for early garbage collection
71795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // (no matter how long the jqXHR object will be used)
71805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        transport = undefined;
71815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
71825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Cache response headers
71835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        responseHeadersString = headers || "";
71845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
71855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Set readyState
71865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        jqXHR.readyState = status > 0 ? 4 : 0;
71875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
71885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var isSuccess,
71895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                success,
71905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                error,
71915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                statusText = nativeStatusText,
71925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                response = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined,
71935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                lastModified,
71945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                etag;
71955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
71965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // If successful, handle type chaining
71975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( status >= 200 && status < 300 || status === 304 ) {
71985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
71995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
72005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( s.ifModified ) {
72015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
72025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( ( lastModified = jqXHR.getResponseHeader( "Last-Modified" ) ) ) {
72035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                jQuery.lastModified[ ifModifiedKey ] = lastModified;
72045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
72055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( ( etag = jqXHR.getResponseHeader( "Etag" ) ) ) {
72065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                jQuery.etag[ ifModifiedKey ] = etag;
72075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
72085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
72095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
72105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // If not modified
72115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( status === 304 ) {
72125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
72135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        statusText = "notmodified";
72145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        isSuccess = true;
72155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
72165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // If we have data
72175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                } else {
72185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
72195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        try {
72205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                success = ajaxConvert( s, response );
72215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                statusText = "success";
72225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                isSuccess = true;
72235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        } catch(e) {
72245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                // We have a parsererror
72255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                statusText = "parsererror";
72265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                error = e;
72275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
72285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
72295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } else {
72305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // We extract error from statusText
72315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // then normalize statusText and status for non-aborts
72325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                error = statusText;
72335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if( !statusText || status ) {
72345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        statusText = "error";
72355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( status < 0 ) {
72365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                status = 0;
72375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
72385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
72395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
72405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
72415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Set data for the fake xhr object
72425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        jqXHR.status = status;
72435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        jqXHR.statusText = "" + ( nativeStatusText || statusText );
72445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
72455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Success/Error
72465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( isSuccess ) {
72475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
72485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } else {
72495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
72505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
72515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
72525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Status-dependent callbacks
72535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        jqXHR.statusCode( statusCode );
72545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        statusCode = undefined;
72555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
72565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( fireGlobals ) {
72575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                globalEventContext.trigger( "ajax" + ( isSuccess ? "Success" : "Error" ),
72585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                [ jqXHR, s, isSuccess ? success : error ] );
72595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
72605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
72615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Complete
72625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        completeDeferred.resolveWith( callbackContext, [ jqXHR, statusText ] );
72635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
72645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( fireGlobals ) {
72655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
72665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Handle the global AJAX counter
72675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( !( --jQuery.active ) ) {
72685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        jQuery.event.trigger( "ajaxStop" );
72695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
72705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
72715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
72725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
72735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Attach deferreds
72745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                deferred.promise( jqXHR );
72755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                jqXHR.success = jqXHR.done;
72765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                jqXHR.error = jqXHR.fail;
72775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                jqXHR.complete = completeDeferred.done;
72785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
72795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Status-dependent callbacks
72805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                jqXHR.statusCode = function( map ) {
72815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( map ) {
72825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                var tmp;
72835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( state < 2 ) {
72845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        for( tmp in map ) {
72855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                statusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];
72865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
72875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                } else {
72885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        tmp = map[ jqXHR.status ];
72895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        jqXHR.then( tmp, tmp );
72905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
72915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
72925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return this;
72935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                };
72945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
72955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Remove hash character (#7531: and string promotion)
72965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Add protocol if not provided (#5866: IE7 issue with protocol-less urls)
72975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // We also use the url parameter if available
72985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                s.url = ( ( url || s.url ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
72995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
73005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Extract dataTypes list
73015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().split( rspacesAjax );
73025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
73035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Determine if a cross-domain request is in order
73045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( s.crossDomain == null ) {
73055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        parts = rurl.exec( s.url.toLowerCase() );
73065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        s.crossDomain = !!( parts &&
73075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                ( parts[ 1 ] != ajaxLocParts[ 1 ] || parts[ 2 ] != ajaxLocParts[ 2 ] ||
73085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        ( parts[ 3 ] || ( parts[ 1 ] === "http:" ? 80 : 443 ) ) !=
73095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                ( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? 80 : 443 ) ) )
73105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        );
73115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
73125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
73135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Convert data if not already a string
73145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( s.data && s.processData && typeof s.data !== "string" ) {
73155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        s.data = jQuery.param( s.data, s.traditional );
73165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
73175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
73185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Apply prefilters
73195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
73205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
73215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // If request was aborted inside a prefiler, stop there
73225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( state === 2 ) {
73235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return false;
73245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
73255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
73265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // We can fire global events as of now if asked to
73275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                fireGlobals = s.global;
73285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
73295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Uppercase the type
73305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                s.type = s.type.toUpperCase();
73315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
73325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Determine if request has content
73335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                s.hasContent = !rnoContent.test( s.type );
73345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
73355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Watch for a new set of requests
73365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( fireGlobals && jQuery.active++ === 0 ) {
73375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        jQuery.event.trigger( "ajaxStart" );
73385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
73395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
73405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // More options handling for requests with no content
73415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( !s.hasContent ) {
73425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
73435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // If data is available, append data to url
73445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( s.data ) {
73455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.data;
73465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // #9682: remove data so that it's not used in an eventual retry
73475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                delete s.data;
73485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
73495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
73505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Get ifModifiedKey before adding the anti-cache parameter
73515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        ifModifiedKey = s.url;
73525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
73535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Add anti-cache in url if needed
73545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( s.cache === false ) {
73555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
73565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                var ts = jQuery.now(),
73575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // try replacing _= if it is there
73585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        ret = s.url.replace( rts, "$1_=" + ts );
73595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
73605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // if nothing was replaced, add timestamp to the end
73615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                s.url = ret + ( (ret === s.url ) ? ( rquery.test( s.url ) ? "&" : "?" ) + "_=" + ts : "" );
73625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
73635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
73645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
73655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Set the correct header, if data is being sent
73665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
73675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        jqXHR.setRequestHeader( "Content-Type", s.contentType );
73685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
73695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
73705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
73715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( s.ifModified ) {
73725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        ifModifiedKey = ifModifiedKey || s.url;
73735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( jQuery.lastModified[ ifModifiedKey ] ) {
73745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ ifModifiedKey ] );
73755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
73765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( jQuery.etag[ ifModifiedKey ] ) {
73775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ ifModifiedKey ] );
73785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
73795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
73805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
73815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Set the Accepts header for the server, depending on the dataType
73825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                jqXHR.setRequestHeader(
73835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        "Accept",
73845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
73855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
73865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                s.accepts[ "*" ]
73875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                );
73885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
73895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Check for headers option
73905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                for ( i in s.headers ) {
73915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        jqXHR.setRequestHeader( i, s.headers[ i ] );
73925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
73935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
73945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Allow custom headers/mimetypes and early abort
73955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
73965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Abort if not done already
73975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jqXHR.abort();
73985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return false;
73995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
74005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
74015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
74025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Install callbacks on deferreds
74035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                for ( i in { success: 1, error: 1, complete: 1 } ) {
74045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        jqXHR[ i ]( s[ i ] );
74055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
74065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
74075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Get transport
74085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
74095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
74105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // If no transport, we auto-abort
74115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( !transport ) {
74125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        done( -1, "No Transport" );
74135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else {
74145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        jqXHR.readyState = 1;
74155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Send global event
74165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( fireGlobals ) {
74175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
74185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
74195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Timeout
74205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( s.async && s.timeout > 0 ) {
74215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                timeoutTimer = setTimeout( function(){
74225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        jqXHR.abort( "timeout" );
74235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }, s.timeout );
74245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
74255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
74265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        try {
74275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                state = 1;
74285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                transport.send( requestHeaders, done );
74295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } catch (e) {
74305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Propagate exception as error if not done
74315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( state < 2 ) {
74325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        done( -1, e );
74335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Simply rethrow otherwise
74345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                } else {
74355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        jQuery.error( e );
74365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
74375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
74385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
74395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
74405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return jqXHR;
74415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
74425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
74435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Serialize an array of form elements or a set of
74445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // key/values into a query string
74455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        param: function( a, traditional ) {
74465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var s = [],
74475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        add = function( key, value ) {
74485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // If value is a function, invoke it and return its value
74495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                value = jQuery.isFunction( value ) ? value() : value;
74505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
74515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        };
74525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
74535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Set traditional to true for jQuery <= 1.3.2 behavior.
74545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( traditional === undefined ) {
74555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        traditional = jQuery.ajaxSettings.traditional;
74565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
74575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
74585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // If an array was passed in, assume that it is an array of form elements.
74595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
74605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Serialize the form elements
74615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        jQuery.each( a, function() {
74625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                add( this.name, this.value );
74635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        });
74645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
74655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else {
74665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // If traditional, encode the "old" way (the way 1.3.2 or older
74675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // did it), otherwise encode params recursively.
74685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        for ( var prefix in a ) {
74695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                buildParams( prefix, a[ prefix ], traditional, add );
74705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
74715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
74725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
74735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Return the resulting serialization
74745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return s.join( "&" ).replace( r20, "+" );
74755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
74765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)});
74775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
74785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function buildParams( prefix, obj, traditional, add ) {
74795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( jQuery.isArray( obj ) ) {
74805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Serialize array item.
74815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                jQuery.each( obj, function( i, v ) {
74825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( traditional || rbracket.test( prefix ) ) {
74835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Treat each array item as a scalar.
74845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                add( prefix, v );
74855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
74865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } else {
74875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // If array item is non-scalar (array or object), encode its
74885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // numeric index to resolve deserialization ambiguity issues.
74895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Note that rack (as of 1.0.0) can't currently deserialize
74905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // nested arrays properly, and attempting to do so may cause
74915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // a server error. Possible fixes are to modify rack's
74925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // deserialization algorithm or to provide an option or flag
74935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // to force array serialization to be shallow.
74945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                buildParams( prefix + "[" + ( typeof v === "object" || jQuery.isArray(v) ? i : "" ) + "]", v, traditional, add );
74955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
74965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                });
74975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
74985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        } else if ( !traditional && obj != null && typeof obj === "object" ) {
74995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Serialize object item.
75005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                for ( var name in obj ) {
75015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
75025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
75035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
75045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        } else {
75055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Serialize scalar item.
75065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                add( prefix, obj );
75075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
75085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
75095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
75105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// This is still on the jQuery object... for now
75115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Want to move this to jQuery.ajax some day
75125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.extend({
75135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
75145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Counter for holding the number of active queries
75155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        active: 0,
75165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
75175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Last-Modified header cache for next request
75185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        lastModified: {},
75195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        etag: {}
75205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
75215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)});
75225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
75235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/* Handles responses to an ajax request:
75245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * - sets all responseXXX fields accordingly
75255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * - finds the right dataType (mediates between content-type and expected dataType)
75265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * - returns the corresponding response
75275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */
75285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function ajaxHandleResponses( s, jqXHR, responses ) {
75295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
75305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        var contents = s.contents,
75315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                dataTypes = s.dataTypes,
75325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                responseFields = s.responseFields,
75335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                ct,
75345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                type,
75355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                finalDataType,
75365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                firstDataType;
75375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
75385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Fill responseXXX fields
75395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        for( type in responseFields ) {
75405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( type in responses ) {
75415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        jqXHR[ responseFields[type] ] = responses[ type ];
75425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
75435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
75445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
75455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Remove auto dataType and get content-type in the process
75465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        while( dataTypes[ 0 ] === "*" ) {
75475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                dataTypes.shift();
75485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( ct === undefined ) {
75495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        ct = s.mimeType || jqXHR.getResponseHeader( "content-type" );
75505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
75515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
75525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
75535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Check if we're dealing with a known content-type
75545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( ct ) {
75555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                for ( type in contents ) {
75565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( contents[ type ] && contents[ type ].test( ct ) ) {
75575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                dataTypes.unshift( type );
75585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                break;
75595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
75605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
75615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
75625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
75635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Check to see if we have a response for the expected dataType
75645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( dataTypes[ 0 ] in responses ) {
75655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                finalDataType = dataTypes[ 0 ];
75665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        } else {
75675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Try convertible dataTypes
75685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                for ( type in responses ) {
75695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
75705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                finalDataType = type;
75715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                break;
75725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
75735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( !firstDataType ) {
75745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                firstDataType = type;
75755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
75765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
75775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Or just use first one
75785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                finalDataType = finalDataType || firstDataType;
75795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
75805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
75815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // If we found a dataType
75825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // We add the dataType to the list if needed
75835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // and return the corresponding response
75845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( finalDataType ) {
75855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( finalDataType !== dataTypes[ 0 ] ) {
75865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        dataTypes.unshift( finalDataType );
75875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
75885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return responses[ finalDataType ];
75895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
75905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
75915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
75925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Chain conversions given the request and the original response
75935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function ajaxConvert( s, response ) {
75945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
75955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Apply the dataFilter if provided
75965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( s.dataFilter ) {
75975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                response = s.dataFilter( response, s.dataType );
75985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
75995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
76005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        var dataTypes = s.dataTypes,
76015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                converters = {},
76025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                i,
76035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                key,
76045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                length = dataTypes.length,
76055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                tmp,
76065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Current and previous dataTypes
76075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                current = dataTypes[ 0 ],
76085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                prev,
76095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Conversion expression
76105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                conversion,
76115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Conversion function
76125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                conv,
76135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Conversion functions (transitive conversion)
76145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                conv1,
76155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                conv2;
76165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
76175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // For each dataType in the chain
76185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        for( i = 1; i < length; i++ ) {
76195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
76205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Create converters map
76215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // with lowercased keys
76225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( i === 1 ) {
76235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        for( key in s.converters ) {
76245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if( typeof key === "string" ) {
76255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        converters[ key.toLowerCase() ] = s.converters[ key ];
76265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
76275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
76285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
76295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
76305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Get the dataTypes
76315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                prev = current;
76325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                current = dataTypes[ i ];
76335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
76345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // If current is auto dataType, update it to prev
76355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if( current === "*" ) {
76365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        current = prev;
76375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // If no auto and dataTypes are actually different
76385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else if ( prev !== "*" && prev !== current ) {
76395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
76405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Get the converter
76415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        conversion = prev + " " + current;
76425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        conv = converters[ conversion ] || converters[ "* " + current ];
76435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
76445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // If there is no direct converter, search transitively
76455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( !conv ) {
76465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                conv2 = undefined;
76475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                for( conv1 in converters ) {
76485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        tmp = conv1.split( " " );
76495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( tmp[ 0 ] === prev || tmp[ 0 ] === "*" ) {
76505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                conv2 = converters[ tmp[1] + " " + current ];
76515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                if ( conv2 ) {
76525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        conv1 = converters[ conv1 ];
76535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        if ( conv1 === true ) {
76545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                conv = conv2;
76555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        } else if ( conv2 === true ) {
76565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                conv = conv1;
76575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        }
76585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        break;
76595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                }
76605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
76615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
76625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
76635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // If we found no converter, dispatch an error
76645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( !( conv || conv2 ) ) {
76655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery.error( "No conversion from " + conversion.replace(" "," to ") );
76665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
76675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // If found converter is not an equivalence
76685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( conv !== true ) {
76695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Convert with 1 or 2 converters accordingly
76705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                response = conv ? conv( response ) : conv2( conv1(response) );
76715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
76725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
76735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
76745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        return response;
76755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
76765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
76775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
76785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
76795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
76805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var jsc = jQuery.now(),
76815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        jsre = /(\=)\?(&|$)|\?\?/i;
76825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
76835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Default jsonp settings
76845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.ajaxSetup({
76855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        jsonp: "callback",
76865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        jsonpCallback: function() {
76875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return jQuery.expando + "_" + ( jsc++ );
76885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
76895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)});
76905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
76915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Detect, normalize options and install callbacks for jsonp requests
76925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
76935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
76945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        var inspectData = s.contentType === "application/x-www-form-urlencoded" &&
76955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                ( typeof s.data === "string" );
76965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
76975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( s.dataTypes[ 0 ] === "jsonp" ||
76985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                s.jsonp !== false && ( jsre.test( s.url ) ||
76995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                inspectData && jsre.test( s.data ) ) ) {
77005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
77015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var responseContainer,
77025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        jsonpCallback = s.jsonpCallback =
77035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery.isFunction( s.jsonpCallback ) ? s.jsonpCallback() : s.jsonpCallback,
77045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        previous = window[ jsonpCallback ],
77055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        url = s.url,
77065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        data = s.data,
77075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        replace = "$1" + jsonpCallback + "$2";
77085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
77095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( s.jsonp !== false ) {
77105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        url = url.replace( jsre, replace );
77115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( s.url === url ) {
77125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( inspectData ) {
77135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        data = data.replace( jsre, replace );
77145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
77155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( s.data === data ) {
77165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // Add callback manually
77175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        url += (/\?/.test( url ) ? "&" : "?") + s.jsonp + "=" + jsonpCallback;
77185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
77195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
77205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
77215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
77225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                s.url = url;
77235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                s.data = data;
77245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
77255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Install callback
77265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                window[ jsonpCallback ] = function( response ) {
77275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        responseContainer = [ response ];
77285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                };
77295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
77305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Clean-up function
77315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                jqXHR.always(function() {
77325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Set callback back to previous value
77335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        window[ jsonpCallback ] = previous;
77345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Call if it was a function and we have a response
77355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( responseContainer && jQuery.isFunction( previous ) ) {
77365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                window[ jsonpCallback ]( responseContainer[ 0 ] );
77375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
77385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                });
77395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
77405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Use data converter to retrieve json after script execution
77415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                s.converters["script json"] = function() {
77425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( !responseContainer ) {
77435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery.error( jsonpCallback + " was not called" );
77445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
77455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return responseContainer[ 0 ];
77465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                };
77475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
77485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // force json dataType
77495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                s.dataTypes[ 0 ] = "json";
77505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
77515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Delegate to script
77525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return "script";
77535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
77545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)});
77555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
77565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
77575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
77585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
77595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Install script dataType
77605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.ajaxSetup({
77615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        accepts: {
77625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
77635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
77645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        contents: {
77655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                script: /javascript|ecmascript/
77665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
77675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        converters: {
77685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                "text script": function( text ) {
77695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        jQuery.globalEval( text );
77705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return text;
77715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
77725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
77735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)});
77745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
77755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Handle cache's special case and global
77765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.ajaxPrefilter( "script", function( s ) {
77775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( s.cache === undefined ) {
77785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                s.cache = false;
77795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
77805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( s.crossDomain ) {
77815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                s.type = "GET";
77825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                s.global = false;
77835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
77845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)});
77855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
77865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Bind script tag hack transport
77875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.ajaxTransport( "script", function(s) {
77885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
77895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // This transport only deals with cross domain requests
77905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( s.crossDomain ) {
77915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
77925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var script,
77935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        head = document.head || document.getElementsByTagName( "head" )[0] || document.documentElement;
77945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
77955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return {
77965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
77975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        send: function( _, callback ) {
77985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
77995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                script = document.createElement( "script" );
78005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
78015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                script.async = "async";
78025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
78035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( s.scriptCharset ) {
78045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        script.charset = s.scriptCharset;
78055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
78065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
78075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                script.src = s.url;
78085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
78095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Attach handlers for all browsers
78105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                script.onload = script.onreadystatechange = function( _, isAbort ) {
78115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
78125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {
78135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
78145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                // Handle memory leak in IE
78155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                script.onload = script.onreadystatechange = null;
78165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
78175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                // Remove the script
78185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                if ( head && script.parentNode ) {
78195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        head.removeChild( script );
78205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                }
78215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
78225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                // Dereference the script
78235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                script = undefined;
78245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
78255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                // Callback if not abort
78265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                if ( !isAbort ) {
78275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        callback( 200, "success" );
78285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                }
78295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
78305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                };
78315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Use insertBefore instead of appendChild  to circumvent an IE6 bug.
78325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // This arises when a base node is used (#2709 and #4378).
78335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                head.insertBefore( script, head.firstChild );
78345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        },
78355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
78365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        abort: function() {
78375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( script ) {
78385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        script.onload( 0, 1 );
78395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
78405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
78415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                };
78425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
78435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)});
78445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
78455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
78465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
78475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
78485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var // #5280: Internet Explorer will keep connections alive if we don't abort on unload
78495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        xhrOnUnloadAbort = window.ActiveXObject ? function() {
78505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Abort all pending requests
78515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                for ( var key in xhrCallbacks ) {
78525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        xhrCallbacks[ key ]( 0, 1 );
78535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
78545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        } : false,
78555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        xhrId = 0,
78565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        xhrCallbacks;
78575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
78585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Functions to create xhrs
78595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function createStandardXHR() {
78605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        try {
78615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return new window.XMLHttpRequest();
78625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        } catch( e ) {}
78635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
78645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
78655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function createActiveXHR() {
78665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        try {
78675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return new window.ActiveXObject( "Microsoft.XMLHTTP" );
78685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        } catch( e ) {}
78695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
78705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
78715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Create the request object
78725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// (This is still attached to ajaxSettings for backward compatibility)
78735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.ajaxSettings.xhr = window.ActiveXObject ?
78745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        /* Microsoft failed to properly
78755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)         * implement the XMLHttpRequest in IE7 (can't request local files),
78765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)         * so we use the ActiveXObject when it is available
78775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)         * Additionally XMLHttpRequest can be disabled in IE7/IE8 so
78785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)         * we need a fallback.
78795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)         */
78805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        function() {
78815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return !this.isLocal && createStandardXHR() || createActiveXHR();
78825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        } :
78835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // For all other browsers, use the standard XMLHttpRequest object
78845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        createStandardXHR;
78855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
78865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Determine support properties
78875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)(function( xhr ) {
78885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        jQuery.extend( jQuery.support, {
78895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                ajax: !!xhr,
78905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                cors: !!xhr && ( "withCredentials" in xhr )
78915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        });
78925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)})( jQuery.ajaxSettings.xhr() );
78935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
78945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Create transport if the browser can provide an xhr
78955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if ( jQuery.support.ajax ) {
78965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
78975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        jQuery.ajaxTransport(function( s ) {
78985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Cross domain only allowed if supported through XMLHttpRequest
78995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( !s.crossDomain || jQuery.support.cors ) {
79005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
79015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var callback;
79025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
79035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return {
79045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                send: function( headers, complete ) {
79055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
79065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // Get a new xhr
79075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        var xhr = s.xhr(),
79085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                handle,
79095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                i;
79105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
79115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // Open the socket
79125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // Passing null username, generates a login popup on Opera (#2865)
79135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( s.username ) {
79145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                xhr.open( s.type, s.url, s.async, s.username, s.password );
79155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        } else {
79165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                xhr.open( s.type, s.url, s.async );
79175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
79185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
79195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // Apply custom fields if provided
79205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( s.xhrFields ) {
79215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                for ( i in s.xhrFields ) {
79225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        xhr[ i ] = s.xhrFields[ i ];
79235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                }
79245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
79255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
79265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // Override mime type if needed
79275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( s.mimeType && xhr.overrideMimeType ) {
79285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                xhr.overrideMimeType( s.mimeType );
79295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
79305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
79315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // X-Requested-With header
79325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // For cross-domain requests, seeing as conditions for a preflight are
79335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // akin to a jigsaw puzzle, we simply never set it to be sure.
79345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // (it can always be set on a per-request basis or even using ajaxSetup)
79355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // For same-domain requests, won't change header if already provided.
79365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( !s.crossDomain && !headers["X-Requested-With"] ) {
79375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                headers[ "X-Requested-With" ] = "XMLHttpRequest";
79385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
79395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
79405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // Need an extra try/catch for cross domain requests in Firefox 3
79415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        try {
79425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                for ( i in headers ) {
79435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        xhr.setRequestHeader( i, headers[ i ] );
79445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                }
79455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        } catch( _ ) {}
79465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
79475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // Do send the request
79485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // This may raise an exception which is actually
79495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // handled in jQuery.ajax (so no try/catch here)
79505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        xhr.send( ( s.hasContent && s.data ) || null );
79515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
79525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // Listener
79535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        callback = function( _, isAbort ) {
79545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
79555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                var status,
79565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        statusText,
79575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        responseHeaders,
79585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        responses,
79595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        xml;
79605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
79615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                // Firefox throws exceptions when accessing properties
79625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                // of an xhr when a network error occured
79635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                // http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)
79645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                try {
79655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
79665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        // Was never called and is aborted or complete
79675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        if ( callback && ( isAbort || xhr.readyState === 4 ) ) {
79685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
79695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                // Only called once
79705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                callback = undefined;
79715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
79725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                // Do not keep as active anymore
79735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                if ( handle ) {
79745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                        xhr.onreadystatechange = jQuery.noop;
79755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                        if ( xhrOnUnloadAbort ) {
79765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                                delete xhrCallbacks[ handle ];
79775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                        }
79785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                }
79795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
79805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                // If it's an abort
79815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                if ( isAbort ) {
79825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                        // Abort it manually if needed
79835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                        if ( xhr.readyState !== 4 ) {
79845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                                xhr.abort();
79855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                        }
79865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                } else {
79875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                        status = xhr.status;
79885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                        responseHeaders = xhr.getAllResponseHeaders();
79895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                        responses = {};
79905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                        xml = xhr.responseXML;
79915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
79925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                        // Construct response list
79935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                        if ( xml && xml.documentElement /* #4958 */ ) {
79945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                                responses.xml = xml;
79955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                        }
79965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                        responses.text = xhr.responseText;
79975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
79985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                        // Firefox throws an exception when accessing
79995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                        // statusText for faulty cross-domain requests
80005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                        try {
80015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                                statusText = xhr.statusText;
80025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                        } catch( e ) {
80035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                                // We normalize with Webkit giving an empty statusText
80045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                                statusText = "";
80055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                        }
80065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
80075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                        // Filter status for non standard behaviors
80085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
80095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                        // If the request is local and we have data: assume a success
80105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                        // (success with no data won't get notified, that's the best we
80115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                        // can do given current implementations)
80125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                        if ( !status && s.isLocal && !s.crossDomain ) {
80135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                                status = responses.text ? 200 : 404;
80145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                        // IE - #1450: sometimes returns 1223 when it should be 204
80155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                        } else if ( status === 1223 ) {
80165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                                status = 204;
80175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                        }
80185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                }
80195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        }
80205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                } catch( firefoxAccessException ) {
80215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        if ( !isAbort ) {
80225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                complete( -1, firefoxAccessException );
80235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        }
80245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                }
80255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
80265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                // Call complete if needed
80275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                if ( responses ) {
80285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        complete( status, statusText, responses, responseHeaders );
80295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                }
80305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        };
80315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
80325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // if we're in sync mode or it's in cache
80335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // and has been retrieved directly (IE6 & IE7)
80345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // we need to manually fire the callback
80355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( !s.async || xhr.readyState === 4 ) {
80365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                callback();
80375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        } else {
80385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                handle = ++xhrId;
80395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                if ( xhrOnUnloadAbort ) {
80405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        // Create the active xhrs callbacks list if needed
80415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        // and attach the unload handler
80425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        if ( !xhrCallbacks ) {
80435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                xhrCallbacks = {};
80445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                jQuery( window ).unload( xhrOnUnloadAbort );
80455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        }
80465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        // Add to list of active xhrs callbacks
80475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        xhrCallbacks[ handle ] = callback;
80485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                }
80495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                xhr.onreadystatechange = callback;
80505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
80515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                },
80525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
80535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                abort: function() {
80545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( callback ) {
80555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                callback(0,1);
80565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
80575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
80585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        };
80595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
80605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        });
80615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
80625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
80635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
80645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
80655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
80665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var elemdisplay = {},
80675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        iframe, iframeDoc,
80685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rfxtypes = /^(?:toggle|show|hide)$/,
80695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rfxnum = /^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,
80705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        timerId,
80715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        fxAttrs = [
80725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // height animations
80735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                [ "height", "marginTop", "marginBottom", "paddingTop", "paddingBottom" ],
80745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // width animations
80755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                [ "width", "marginLeft", "marginRight", "paddingLeft", "paddingRight" ],
80765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // opacity animations
80775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                [ "opacity" ]
80785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        ],
80795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        fxNow;
80805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
80815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.fn.extend({
80825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        show: function( speed, easing, callback ) {
80835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var elem, display;
80845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
80855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( speed || speed === 0 ) {
80865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return this.animate( genFx("show", 3), speed, easing, callback);
80875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
80885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else {
80895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        for ( var i = 0, j = this.length; i < j; i++ ) {
80905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                elem = this[i];
80915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
80925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( elem.style ) {
80935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        display = elem.style.display;
80945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
80955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // Reset the inline display of this element to learn if it is
80965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // being hidden by cascaded rules or not
80975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( !jQuery._data(elem, "olddisplay") && display === "none" ) {
80985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                display = elem.style.display = "";
80995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
81005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
81015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // Set elements which have been overridden with display: none
81025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // in a stylesheet to whatever the default browser style is
81035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // for such an element
81045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( display === "" && jQuery.css( elem, "display" ) === "none" ) {
81055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                jQuery._data(elem, "olddisplay", defaultDisplay(elem.nodeName));
81065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
81075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
81085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
81095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
81105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Set the display of most of the elements in a second loop
81115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // to avoid the constant reflow
81125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        for ( i = 0; i < j; i++ ) {
81135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                elem = this[i];
81145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
81155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( elem.style ) {
81165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        display = elem.style.display;
81175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
81185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( display === "" || display === "none" ) {
81195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                elem.style.display = jQuery._data(elem, "olddisplay") || "";
81205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
81215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
81225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
81235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
81245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return this;
81255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
81265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
81275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
81285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        hide: function( speed, easing, callback ) {
81295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( speed || speed === 0 ) {
81305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return this.animate( genFx("hide", 3), speed, easing, callback);
81315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
81325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else {
81335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        for ( var i = 0, j = this.length; i < j; i++ ) {
81345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( this[i].style ) {
81355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        var display = jQuery.css( this[i], "display" );
81365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
81375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( display !== "none" && !jQuery._data( this[i], "olddisplay" ) ) {
81385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                jQuery._data( this[i], "olddisplay", display );
81395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
81405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
81415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
81425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
81435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Set the display of the elements in a second loop
81445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // to avoid the constant reflow
81455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        for ( i = 0; i < j; i++ ) {
81465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( this[i].style ) {
81475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        this[i].style.display = "none";
81485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
81495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
81505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
81515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return this;
81525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
81535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
81545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
81555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Save the old toggle function
81565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        _toggle: jQuery.fn.toggle,
81575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
81585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        toggle: function( fn, fn2, callback ) {
81595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var bool = typeof fn === "boolean";
81605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
81615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {
81625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        this._toggle.apply( this, arguments );
81635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
81645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else if ( fn == null || bool ) {
81655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        this.each(function() {
81665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                var state = bool ? fn : jQuery(this).is(":hidden");
81675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery(this)[ state ? "show" : "hide" ]();
81685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        });
81695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
81705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else {
81715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        this.animate(genFx("toggle", 3), fn, fn2, callback);
81725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
81735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
81745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this;
81755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
81765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
81775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        fadeTo: function( speed, to, easing, callback ) {
81785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this.filter(":hidden").css("opacity", 0).show().end()
81795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        .animate({opacity: to}, speed, easing, callback);
81805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
81815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
81825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        animate: function( prop, speed, easing, callback ) {
81835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var optall = jQuery.speed(speed, easing, callback);
81845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
81855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( jQuery.isEmptyObject( prop ) ) {
81865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return this.each( optall.complete, [ false ] );
81875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
81885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
81895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Do not change referenced properties as per-property easing will be lost
81905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                prop = jQuery.extend( {}, prop );
81915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
81925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this[ optall.queue === false ? "each" : "queue" ](function() {
81935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // XXX 'this' does not always have a nodeName when running the
81945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // test suite
81955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
81965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( optall.queue === false ) {
81975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery._mark( this );
81985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
81995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
82005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var opt = jQuery.extend( {}, optall ),
82015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                isElement = this.nodeType === 1,
82025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                hidden = isElement && jQuery(this).is(":hidden"),
82035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                name, val, p,
82045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                display, e,
82055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                parts, start, end, unit;
82065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
82075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // will store per property easing and be used to determine when an animation is complete
82085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        opt.animatedProperties = {};
82095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
82105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        for ( p in prop ) {
82115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
82125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // property name normalization
82135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                name = jQuery.camelCase( p );
82145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( p !== name ) {
82155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        prop[ name ] = prop[ p ];
82165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        delete prop[ p ];
82175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
82185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
82195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                val = prop[ name ];
82205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
82215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // easing resolution: per property > opt.specialEasing > opt.easing > 'swing' (default)
82225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( jQuery.isArray( val ) ) {
82235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        opt.animatedProperties[ name ] = val[ 1 ];
82245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        val = prop[ name ] = val[ 0 ];
82255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                } else {
82265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        opt.animatedProperties[ name ] = opt.specialEasing && opt.specialEasing[ name ] || opt.easing || 'swing';
82275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
82285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
82295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( val === "hide" && hidden || val === "show" && !hidden ) {
82305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        return opt.complete.call( this );
82315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
82325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
82335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( isElement && ( name === "height" || name === "width" ) ) {
82345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // Make sure that nothing sneaks out
82355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // Record all 3 overflow attributes because IE does not
82365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // change the overflow attribute when overflowX and
82375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // overflowY are set to the same value
82385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        opt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ];
82395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
82405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // Set display property to inline-block for height/width
82415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // animations on inline elements that are having width/height
82425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        // animated
82435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( jQuery.css( this, "display" ) === "inline" &&
82445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        jQuery.css( this, "float" ) === "none" ) {
82455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                if ( !jQuery.support.inlineBlockNeedsLayout ) {
82465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        this.style.display = "inline-block";
82475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
82485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                } else {
82495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        display = defaultDisplay( this.nodeName );
82505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
82515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        // inline-level elements accept inline-block;
82525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        // block-level elements need to be inline with layout
82535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        if ( display === "inline" ) {
82545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                this.style.display = "inline-block";
82555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
82565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        } else {
82575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                this.style.display = "inline";
82585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                                this.style.zoom = 1;
82595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        }
82605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                }
82615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
82625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
82635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
82645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
82655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( opt.overflow != null ) {
82665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                this.style.overflow = "hidden";
82675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
82685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
82695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        for ( p in prop ) {
82705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                e = new jQuery.fx( this, opt, p );
82715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                val = prop[ p ];
82725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
82735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( rfxtypes.test(val) ) {
82745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        e[ val === "toggle" ? hidden ? "show" : "hide" : val ]();
82755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
82765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                } else {
82775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        parts = rfxnum.exec( val );
82785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        start = e.cur();
82795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
82805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if ( parts ) {
82815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                end = parseFloat( parts[2] );
82825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                unit = parts[3] || ( jQuery.cssNumber[ p ] ? "" : "px" );
82835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
82845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                // We need to compute starting value
82855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                if ( unit !== "px" ) {
82865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        jQuery.style( this, p, (end || 1) + unit);
82875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        start = ((end || 1) / e.cur()) * start;
82885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        jQuery.style( this, p, start + unit);
82895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                }
82905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
82915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                // If a +=/-= token was provided, we're doing a relative animation
82925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                if ( parts[1] ) {
82935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                        end = ( (parts[ 1 ] === "-=" ? -1 : 1) * end ) + start;
82945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                }
82955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
82965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                e.custom( start, end, unit );
82975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
82985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        } else {
82995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                e.custom( start, val, "" );
83005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
83015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
83025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
83035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
83045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // For JS strict compliance
83055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return true;
83065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                });
83075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
83085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
83095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        stop: function( clearQueue, gotoEnd ) {
83105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( clearQueue ) {
83115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        this.queue([]);
83125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
83135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
83145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                this.each(function() {
83155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var timers = jQuery.timers,
83165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                i = timers.length;
83175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // clear marker counters if we know they won't be
83185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( !gotoEnd ) {
83195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery._unmark( true, this );
83205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
83215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        while ( i-- ) {
83225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( timers[i].elem === this ) {
83235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        if (gotoEnd) {
83245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                // force the next step to be the last
83255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                timers[i](true);
83265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
83275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
83285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        timers.splice(i, 1);
83295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
83305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
83315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                });
83325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
83335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // start the next in the queue if the last step wasn't forced
83345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( !gotoEnd ) {
83355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        this.dequeue();
83365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
83375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
83385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this;
83395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
83405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
83415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)});
83425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
83435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Animations created synchronously will run synchronously
83445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function createFxNow() {
83455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        setTimeout( clearFxNow, 0 );
83465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        return ( fxNow = jQuery.now() );
83475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
83485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
83495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function clearFxNow() {
83505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        fxNow = undefined;
83515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
83525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
83535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Generate parameters to create a standard animation
83545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function genFx( type, num ) {
83555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        var obj = {};
83565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
83575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        jQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function() {
83585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                obj[ this ] = type;
83595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        });
83605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
83615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        return obj;
83625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
83635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
83645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Generate shortcuts for custom animations
83655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.each({
83665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        slideDown: genFx("show", 1),
83675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        slideUp: genFx("hide", 1),
83685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        slideToggle: genFx("toggle", 1),
83695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        fadeIn: { opacity: "show" },
83705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        fadeOut: { opacity: "hide" },
83715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        fadeToggle: { opacity: "toggle" }
83725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, function( name, props ) {
83735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        jQuery.fn[ name ] = function( speed, easing, callback ) {
83745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this.animate( props, speed, easing, callback );
83755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        };
83765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)});
83775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
83785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.extend({
83795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        speed: function( speed, easing, fn ) {
83805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var opt = speed && typeof speed === "object" ? jQuery.extend({}, speed) : {
83815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        complete: fn || !fn && easing ||
83825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery.isFunction( speed ) && speed,
83835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        duration: speed,
83845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        easing: fn && easing || easing && !jQuery.isFunction(easing) && easing
83855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                };
83865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
83875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
83885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[opt.duration] : jQuery.fx.speeds._default;
83895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
83905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Queueing
83915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                opt.old = opt.complete;
83925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                opt.complete = function( noUnmark ) {
83935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( jQuery.isFunction( opt.old ) ) {
83945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                opt.old.call( this );
83955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
83965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
83975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( opt.queue !== false ) {
83985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery.dequeue( this );
83995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } else if ( noUnmark !== false ) {
84005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery._unmark( this );
84015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
84025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                };
84035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
84045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return opt;
84055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
84065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
84075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        easing: {
84085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                linear: function( p, n, firstNum, diff ) {
84095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return firstNum + diff * p;
84105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
84115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                swing: function( p, n, firstNum, diff ) {
84125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;
84135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
84145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
84155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
84165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        timers: [],
84175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
84185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        fx: function( elem, options, prop ) {
84195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                this.options = options;
84205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                this.elem = elem;
84215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                this.prop = prop;
84225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
84235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                options.orig = options.orig || {};
84245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
84255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
84265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)});
84275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
84285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.fx.prototype = {
84295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Simple function for setting a style value
84305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        update: function() {
84315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( this.options.step ) {
84325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        this.options.step.call( this.elem, this.now, this );
84335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
84345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
84355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                (jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );
84365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
84375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
84385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Get the current size
84395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        cur: function() {
84405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) ) {
84415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return this.elem[ this.prop ];
84425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
84435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
84445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var parsed,
84455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        r = jQuery.css( this.elem, this.prop );
84465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Empty strings, null, undefined and "auto" are converted to 0,
84475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // complex values such as "rotate(1rad)" are returned as is,
84485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // simple values such as "10px" are parsed to Float.
84495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return isNaN( parsed = parseFloat( r ) ) ? !r || r === "auto" ? 0 : r : parsed;
84505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
84515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
84525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Start an animation from one number to another
84535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        custom: function( from, to, unit ) {
84545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var self = this,
84555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        fx = jQuery.fx;
84565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
84575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                this.startTime = fxNow || createFxNow();
84585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                this.start = from;
84595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                this.end = to;
84605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                this.unit = unit || this.unit || ( jQuery.cssNumber[ this.prop ] ? "" : "px" );
84615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                this.now = this.start;
84625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                this.pos = this.state = 0;
84635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
84645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                function t( gotoEnd ) {
84655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return self.step(gotoEnd);
84665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
84675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
84685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                t.elem = this.elem;
84695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
84705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( t() && jQuery.timers.push(t) && !timerId ) {
84715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        timerId = setInterval( fx.tick, fx.interval );
84725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
84735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
84745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
84755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Simple 'show' function
84765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        show: function() {
84775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Remember where we started, so that we can go back to it later
84785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                this.options.orig[this.prop] = jQuery.style( this.elem, this.prop );
84795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                this.options.show = true;
84805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
84815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Begin the animation
84825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Make sure that we start at a small width/height to avoid any
84835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // flash of content
84845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                this.custom(this.prop === "width" || this.prop === "height" ? 1 : 0, this.cur());
84855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
84865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Start by showing the element
84875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                jQuery( this.elem ).show();
84885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
84895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
84905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Simple 'hide' function
84915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        hide: function() {
84925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Remember where we started, so that we can go back to it later
84935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                this.options.orig[this.prop] = jQuery.style( this.elem, this.prop );
84945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                this.options.hide = true;
84955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
84965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Begin the animation
84975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                this.custom(this.cur(), 0);
84985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
84995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
85005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Each step of an animation
85015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        step: function( gotoEnd ) {
85025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var t = fxNow || createFxNow(),
85035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        done = true,
85045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        elem = this.elem,
85055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        options = this.options,
85065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        i, n;
85075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
85085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( gotoEnd || t >= options.duration + this.startTime ) {
85095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        this.now = this.end;
85105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        this.pos = this.state = 1;
85115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        this.update();
85125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
85135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        options.animatedProperties[ this.prop ] = true;
85145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
85155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        for ( i in options.animatedProperties ) {
85165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( options.animatedProperties[i] !== true ) {
85175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        done = false;
85185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
85195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
85205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
85215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( done ) {
85225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Reset the overflow
85235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( options.overflow != null && !jQuery.support.shrinkWrapBlocks ) {
85245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
85255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        jQuery.each( [ "", "X", "Y" ], function (index, value) {
85265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                elem.style[ "overflow" + value ] = options.overflow[index];
85275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        });
85285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
85295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
85305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Hide the element if the "hide" operation was done
85315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( options.hide ) {
85325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        jQuery(elem).hide();
85335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
85345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
85355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Reset the properties, if the item has been hidden or shown
85365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( options.hide || options.show ) {
85375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        for ( var p in options.animatedProperties ) {
85385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                                jQuery.style( elem, p, options.orig[p] );
85395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        }
85405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
85415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
85425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Execute the complete function
85435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                options.complete.call( elem );
85445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
85455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
85465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return false;
85475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
85485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else {
85495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // classical easing cannot be used with an Infinity duration
85505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( options.duration == Infinity ) {
85515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                this.now = t;
85525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } else {
85535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                n = t - this.startTime;
85545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                this.state = n / options.duration;
85555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
85565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                // Perform the easing function, defaults to swing
85575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                this.pos = jQuery.easing[ options.animatedProperties[ this.prop ] ]( this.state, n, 0, 1, options.duration );
85585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                this.now = this.start + ((this.end - this.start) * this.pos);
85595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
85605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Perform the next step of the animation
85615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        this.update();
85625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
85635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
85645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return true;
85655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
85665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
85675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
85685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.extend( jQuery.fx, {
85695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        tick: function() {
85705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                for ( var timers = jQuery.timers, i = 0 ; i < timers.length ; ++i ) {
85715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( !timers[i]() ) {
85725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                timers.splice(i--, 1);
85735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
85745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
85755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
85765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( !timers.length ) {
85775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        jQuery.fx.stop();
85785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
85795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
85805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
85815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        interval: 13,
85825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
85835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        stop: function() {
85845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                clearInterval( timerId );
85855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                timerId = null;
85865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
85875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
85885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        speeds: {
85895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                slow: 600,
85905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                fast: 200,
85915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Default speed
85925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                _default: 400
85935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
85945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
85955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        step: {
85965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                opacity: function( fx ) {
85975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        jQuery.style( fx.elem, "opacity", fx.now );
85985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                },
85995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
86005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                _default: function( fx ) {
86015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {
86025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                fx.elem.style[ fx.prop ] = (fx.prop === "width" || fx.prop === "height" ? Math.max(0, fx.now) : fx.now) + fx.unit;
86035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } else {
86045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                fx.elem[ fx.prop ] = fx.now;
86055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
86065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
86075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
86085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)});
86095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
86105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if ( jQuery.expr && jQuery.expr.filters ) {
86115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        jQuery.expr.filters.animated = function( elem ) {
86125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return jQuery.grep(jQuery.timers, function( fn ) {
86135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return elem === fn.elem;
86145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }).length;
86155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        };
86165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
86175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
86185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Try to restore the default display value of an element
86195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function defaultDisplay( nodeName ) {
86205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
86215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if ( !elemdisplay[ nodeName ] ) {
86225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
86235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var body = document.body,
86245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        elem = jQuery( "<" + nodeName + ">" ).appendTo( body ),
86255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        display = elem.css( "display" );
86265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
86275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                elem.remove();
86285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
86295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // If the simple way fails,
86305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // get element's real default display by attaching it to a temp iframe
86315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( display === "none" || display === "" ) {
86325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // No iframe to use yet, so create it
86335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( !iframe ) {
86345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                iframe = document.createElement( "iframe" );
86355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                iframe.frameBorder = iframe.width = iframe.height = 0;
86365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
86375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
86385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        body.appendChild( iframe );
86395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
86405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Create a cacheable copy of the iframe document on first call.
86415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // IE and Opera will allow us to reuse the iframeDoc without re-writing the fake HTML
86425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // document to it; WebKit & Firefox won't allow reusing the iframe document.
86435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( !iframeDoc || !iframe.createElement ) {
86445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                iframeDoc = ( iframe.contentWindow || iframe.contentDocument ).document;
86455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                iframeDoc.write( ( document.compatMode === "CSS1Compat" ? "<!doctype html>" : "" ) + "<html><body>" );
86465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                iframeDoc.close();
86475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
86485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
86495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        elem = iframeDoc.createElement( nodeName );
86505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
86515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        iframeDoc.body.appendChild( elem );
86525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
86535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        display = jQuery.css( elem, "display" );
86545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
86555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        body.removeChild( iframe );
86565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
86575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
86585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Store the correct default display
86595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                elemdisplay[ nodeName ] = display;
86605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
86615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
86625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        return elemdisplay[ nodeName ];
86635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
86645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
86655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
86665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
86675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
86685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var rtable = /^t(?:able|d|h)$/i,
86695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        rroot = /^(?:body|html)$/i;
86705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
86715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if ( "getBoundingClientRect" in document.documentElement ) {
86725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        jQuery.fn.offset = function( options ) {
86735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var elem = this[0], box;
86745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
86755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( options ) {
86765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return this.each(function( i ) {
86775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery.offset.setOffset( this, options, i );
86785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        });
86795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
86805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
86815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( !elem || !elem.ownerDocument ) {
86825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return null;
86835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
86845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
86855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( elem === elem.ownerDocument.body ) {
86865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return jQuery.offset.bodyOffset( elem );
86875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
86885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
86895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                try {
86905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        box = elem.getBoundingClientRect();
86915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } catch(e) {}
86925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
86935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var doc = elem.ownerDocument,
86945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        docElem = doc.documentElement;
86955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
86965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Make sure we're not dealing with a disconnected DOM node
86975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( !box || !jQuery.contains( docElem, elem ) ) {
86985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return box ? { top: box.top, left: box.left } : { top: 0, left: 0 };
86995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
87005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
87015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var body = doc.body,
87025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        win = getWindow(doc),
87035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        clientTop  = docElem.clientTop  || body.clientTop  || 0,
87045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        clientLeft = docElem.clientLeft || body.clientLeft || 0,
87055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        scrollTop  = win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop  || body.scrollTop,
87065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        scrollLeft = win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft,
87075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        top  = box.top  + scrollTop  - clientTop,
87085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        left = box.left + scrollLeft - clientLeft;
87095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
87105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return { top: top, left: left };
87115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        };
87125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
87135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} else {
87145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        jQuery.fn.offset = function( options ) {
87155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var elem = this[0];
87165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
87175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( options ) {
87185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return this.each(function( i ) {
87195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery.offset.setOffset( this, options, i );
87205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        });
87215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
87225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
87235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( !elem || !elem.ownerDocument ) {
87245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return null;
87255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
87265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
87275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( elem === elem.ownerDocument.body ) {
87285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return jQuery.offset.bodyOffset( elem );
87295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
87305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
87315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                jQuery.offset.initialize();
87325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
87335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var computedStyle,
87345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        offsetParent = elem.offsetParent,
87355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        prevOffsetParent = elem,
87365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        doc = elem.ownerDocument,
87375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        docElem = doc.documentElement,
87385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        body = doc.body,
87395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        defaultView = doc.defaultView,
87405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        prevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,
87415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        top = elem.offsetTop,
87425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        left = elem.offsetLeft;
87435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
87445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                while ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {
87455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === "fixed" ) {
87465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                break;
87475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
87485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
87495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        computedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;
87505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        top  -= elem.scrollTop;
87515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        left -= elem.scrollLeft;
87525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
87535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( elem === offsetParent ) {
87545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                top  += elem.offsetTop;
87555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                left += elem.offsetLeft;
87565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
87575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                if ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && rtable.test(elem.nodeName)) ) {
87585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        top  += parseFloat( computedStyle.borderTopWidth  ) || 0;
87595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        left += parseFloat( computedStyle.borderLeftWidth ) || 0;
87605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                }
87615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
87625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                prevOffsetParent = offsetParent;
87635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                offsetParent = elem.offsetParent;
87645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
87655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
87665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== "visible" ) {
87675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                top  += parseFloat( computedStyle.borderTopWidth  ) || 0;
87685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                left += parseFloat( computedStyle.borderLeftWidth ) || 0;
87695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
87705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
87715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        prevComputedStyle = computedStyle;
87725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
87735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
87745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( prevComputedStyle.position === "relative" || prevComputedStyle.position === "static" ) {
87755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        top  += body.offsetTop;
87765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        left += body.offsetLeft;
87775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
87785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
87795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === "fixed" ) {
87805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        top  += Math.max( docElem.scrollTop, body.scrollTop );
87815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        left += Math.max( docElem.scrollLeft, body.scrollLeft );
87825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
87835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
87845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return { top: top, left: left };
87855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        };
87865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
87875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
87885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.offset = {
87895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        initialize: function() {
87905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var body = document.body, container = document.createElement("div"), innerDiv, checkDiv, table, td, bodyMarginTop = parseFloat( jQuery.css(body, "marginTop") ) || 0,
87915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        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>";
87925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
87935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                jQuery.extend( container.style, { position: "absolute", top: 0, left: 0, margin: 0, border: 0, width: "1px", height: "1px", visibility: "hidden" } );
87945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
87955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                container.innerHTML = html;
87965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                body.insertBefore( container, body.firstChild );
87975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                innerDiv = container.firstChild;
87985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                checkDiv = innerDiv.firstChild;
87995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                td = innerDiv.nextSibling.firstChild.firstChild;
88005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
88015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                this.doesNotAddBorder = (checkDiv.offsetTop !== 5);
88025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                this.doesAddBorderForTableAndCells = (td.offsetTop === 5);
88035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
88045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                checkDiv.style.position = "fixed";
88055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                checkDiv.style.top = "20px";
88065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
88075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // safari subtracts parent border width here which is 5px
88085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                this.supportsFixedPosition = (checkDiv.offsetTop === 20 || checkDiv.offsetTop === 15);
88095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                checkDiv.style.position = checkDiv.style.top = "";
88105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
88115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                innerDiv.style.overflow = "hidden";
88125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                innerDiv.style.position = "relative";
88135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
88145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                this.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);
88155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
88165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                this.doesNotIncludeMarginInBodyOffset = (body.offsetTop !== bodyMarginTop);
88175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
88185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                body.removeChild( container );
88195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                jQuery.offset.initialize = jQuery.noop;
88205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
88215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
88225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        bodyOffset: function( body ) {
88235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var top = body.offsetTop,
88245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        left = body.offsetLeft;
88255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
88265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                jQuery.offset.initialize();
88275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
88285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( jQuery.offset.doesNotIncludeMarginInBodyOffset ) {
88295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        top  += parseFloat( jQuery.css(body, "marginTop") ) || 0;
88305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        left += parseFloat( jQuery.css(body, "marginLeft") ) || 0;
88315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
88325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
88335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return { top: top, left: left };
88345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
88355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
88365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        setOffset: function( elem, options, i ) {
88375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var position = jQuery.css( elem, "position" );
88385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
88395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // set position first, in-case top/left are set even on static elem
88405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( position === "static" ) {
88415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        elem.style.position = "relative";
88425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
88435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
88445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var curElem = jQuery( elem ),
88455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        curOffset = curElem.offset(),
88465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        curCSSTop = jQuery.css( elem, "top" ),
88475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        curCSSLeft = jQuery.css( elem, "left" ),
88485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        calculatePosition = (position === "absolute" || position === "fixed") && jQuery.inArray("auto", [curCSSTop, curCSSLeft]) > -1,
88495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        props = {}, curPosition = {}, curTop, curLeft;
88505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
88515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // need to be able to calculate position if either top or left is auto and position is either absolute or fixed
88525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( calculatePosition ) {
88535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        curPosition = curElem.position();
88545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        curTop = curPosition.top;
88555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        curLeft = curPosition.left;
88565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else {
88575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        curTop = parseFloat( curCSSTop ) || 0;
88585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        curLeft = parseFloat( curCSSLeft ) || 0;
88595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
88605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
88615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( jQuery.isFunction( options ) ) {
88625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        options = options.call( elem, i, curOffset );
88635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
88645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
88655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if (options.top != null) {
88665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        props.top = (options.top - curOffset.top) + curTop;
88675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
88685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if (options.left != null) {
88695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        props.left = (options.left - curOffset.left) + curLeft;
88705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
88715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
88725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( "using" in options ) {
88735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        options.using.call( elem, props );
88745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else {
88755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        curElem.css( props );
88765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
88775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
88785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
88795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
88805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
88815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.fn.extend({
88825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        position: function() {
88835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( !this[0] ) {
88845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return null;
88855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
88865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
88875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var elem = this[0],
88885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
88895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Get *real* offsetParent
88905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                offsetParent = this.offsetParent(),
88915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
88925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Get correct offsets
88935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                offset       = this.offset(),
88945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                parentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();
88955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
88965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Subtract element margins
88975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // note: when an element has margin: auto the offsetLeft and marginLeft
88985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // are the same in Safari causing offset.left to incorrectly be 0
88995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                offset.top  -= parseFloat( jQuery.css(elem, "marginTop") ) || 0;
89005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                offset.left -= parseFloat( jQuery.css(elem, "marginLeft") ) || 0;
89015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
89025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Add offsetParent borders
89035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                parentOffset.top  += parseFloat( jQuery.css(offsetParent[0], "borderTopWidth") ) || 0;
89045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                parentOffset.left += parseFloat( jQuery.css(offsetParent[0], "borderLeftWidth") ) || 0;
89055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
89065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Subtract the two offsets
89075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return {
89085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        top:  offset.top  - parentOffset.top,
89095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        left: offset.left - parentOffset.left
89105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                };
89115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        },
89125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
89135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        offsetParent: function() {
89145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this.map(function() {
89155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var offsetParent = this.offsetParent || document.body;
89165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        while ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, "position") === "static") ) {
89175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                offsetParent = offsetParent.offsetParent;
89185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
89195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return offsetParent;
89205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                });
89215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
89225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)});
89235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
89245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
89255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Create scrollLeft and scrollTop methods
89265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.each( ["Left", "Top"], function( i, name ) {
89275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        var method = "scroll" + name;
89285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
89295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        jQuery.fn[ method ] = function( val ) {
89305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var elem, win;
89315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
89325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( val === undefined ) {
89335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        elem = this[ 0 ];
89345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
89355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( !elem ) {
89365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                return null;
89375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
89385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
89395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        win = getWindow( elem );
89405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
89415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Return the scroll offset
89425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return win ? ("pageXOffset" in win) ? win[ i ? "pageYOffset" : "pageXOffset" ] :
89435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                jQuery.support.boxModel && win.document.documentElement[ method ] ||
89445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        win.document.body[ method ] :
89455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                elem[ method ];
89465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
89475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
89485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Set the scroll offset
89495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return this.each(function() {
89505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        win = getWindow( this );
89515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
89525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        if ( win ) {
89535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                win.scrollTo(
89545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                        !i ? val : jQuery( win ).scrollLeft(),
89555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                         i ? val : jQuery( win ).scrollTop()
89565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                );
89575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
89585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        } else {
89595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                this[ method ] = val;
89605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        }
89615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                });
89625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        };
89635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)});
89645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
89655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function getWindow( elem ) {
89665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        return jQuery.isWindow( elem ) ?
89675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                elem :
89685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                elem.nodeType === 9 ?
89695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        elem.defaultView || elem.parentWindow :
89705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        false;
89715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
89725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
89735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
89745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
89755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
89765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Create width, height, innerHeight, innerWidth, outerHeight and outerWidth methods
89775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.each([ "Height", "Width" ], function( i, name ) {
89785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
89795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        var type = name.toLowerCase();
89805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
89815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // innerHeight and innerWidth
89825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        jQuery.fn[ "inner" + name ] = function() {
89835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var elem = this[0];
89845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return elem && elem.style ?
89855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        parseFloat( jQuery.css( elem, type, "padding" ) ) :
89865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        null;
89875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        };
89885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
89895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // outerHeight and outerWidth
89905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        jQuery.fn[ "outer" + name ] = function( margin ) {
89915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var elem = this[0];
89925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                return elem && elem.style ?
89935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        parseFloat( jQuery.css( elem, type, margin ? "margin" : "border" ) ) :
89945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        null;
89955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        };
89965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
89975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        jQuery.fn[ type ] = function( size ) {
89985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Get window width or height
89995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                var elem = this[0];
90005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( !elem ) {
90015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return size == null ? null : this;
90025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
90035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
90045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( jQuery.isFunction( size ) ) {
90055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return this.each(function( i ) {
90065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                var self = jQuery( this );
90075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                self[ type ]( size.call( this, i, self[ type ]() ) );
90085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        });
90095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
90105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
90115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                if ( jQuery.isWindow( elem ) ) {
90125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode
90135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat
90145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var docElemProp = elem.document.documentElement[ "client" + name ],
90155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                body = elem.document.body;
90165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return elem.document.compatMode === "CSS1Compat" && docElemProp ||
90175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                body && body[ "client" + name ] || docElemProp;
90185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
90195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Get document width or height
90205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else if ( elem.nodeType === 9 ) {
90215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        // Either scroll[Width/Height] or offset[Width/Height], whichever is greater
90225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return Math.max(
90235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                elem.documentElement["client" + name],
90245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                elem.body["scroll" + name], elem.documentElement["scroll" + name],
90255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                elem.body["offset" + name], elem.documentElement["offset" + name]
90265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        );
90275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
90285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Get or set width or height on the element
90295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else if ( size === undefined ) {
90305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        var orig = jQuery.css( elem, type ),
90315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                ret = parseFloat( orig );
90325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
90335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return jQuery.isNaN( ret ) ? orig : ret;
90345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
90355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                // Set the width or height on the element (default to pixels if value is unitless)
90365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                } else {
90375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                        return this.css( type, typeof size === "string" ? size : size + "px" );
90385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                }
90395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        };
90405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
90415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)});
90425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
90435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
90445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Expose jQuery to the global object
90455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)window.jQuery = window.$ = jQuery;
90465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)})(window);
9047