10bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch/*! 20bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * jQuery JavaScript Library v1.3.2 30bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * http://jquery.com/ 40bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * 50bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * Copyright (c) 2009 John Resig 60bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * Dual licensed under the MIT and GPL licenses. 70bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * http://docs.jquery.com/License 80bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * 90bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009) 100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * Revision: 6246 110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch */ 120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch(function(){ 130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvar 150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Will speed up references to window, and allows munging its name. 160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch window = this, 170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Will speed up references to undefined, and allows munging its name. 180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch undefined, 190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Map over jQuery in case of overwrite 200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch _jQuery = window.jQuery, 210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Map over the $ in case of overwrite 220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch _$ = window.$, 230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery = window.jQuery = window.$ = function( selector, context ) { 250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // The jQuery object is actually just the init constructor 'enhanced' 260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return new jQuery.fn.init( selector, context ); 270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // A simple way to check for HTML strings or ID strings 300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // (both of which we optimize for) 310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/, 320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Is it a simple selector 330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch isSimple = /^.[^:#\[\.,]*$/; 340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochjQuery.fn = jQuery.prototype = { 360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch init: function( selector, context ) { 370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Make sure that a selection was provided 380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch selector = selector || document; 390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Handle $(DOMElement) 410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( selector.nodeType ) { 420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this[0] = selector; 430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.length = 1; 440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.context = selector; 450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this; 460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Handle HTML strings 480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( typeof selector === "string" ) { 490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Are we dealing with HTML string or an ID? 500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var match = quickExpr.exec( selector ); 510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Verify a match, and that no context was specified for #id 530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( match && (match[1] || !context) ) { 540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // HANDLE: $(html) -> $(array) 560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( match[1] ) 570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch selector = jQuery.clean( [ match[1] ], context ); 580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // HANDLE: $("#id") 600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch else { 610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var elem = document.getElementById( match[3] ); 620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Handle the case where IE and Opera return items 640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // by name instead of ID 650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( elem && elem.id != match[3] ) 660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return jQuery().find( selector ); 670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Otherwise, we inject the element directly into the jQuery object 690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var ret = jQuery( elem || [] ); 700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ret.context = document; 710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ret.selector = selector; 720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return ret; 730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // HANDLE: $(expr, [context]) 760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // (which is just equivalent to: $(content).find(expr) 770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } else 780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return jQuery( context ).find( selector ); 790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // HANDLE: $(function) 810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Shortcut for document ready 820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } else if ( jQuery.isFunction( selector ) ) 830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return jQuery( document ).ready( selector ); 840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Make sure that old selector state is passed along 860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( selector.selector && selector.context ) { 870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.selector = selector.selector; 880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.context = selector.context; 890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this.setArray(jQuery.isArray( selector ) ? 920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch selector : 930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.makeArray(selector)); 940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Start with an empty selector 970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch selector: "", 980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // The current version of jQuery being used 1000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jquery: "1.3.2", 1010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // The number of elements contained in the matched element set 1030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch size: function() { 1040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this.length; 1050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 1060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Get the Nth element in the matched element set OR 1080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Get the whole matched element set as a clean array 1090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch get: function( num ) { 1100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return num === undefined ? 1110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Return a 'clean' array 1130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Array.prototype.slice.call( this ) : 1140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Return just the object 1160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this[ num ]; 1170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 1180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Take an array of elements and push it onto the stack 1200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // (returning the new matched element set) 1210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch pushStack: function( elems, name, selector ) { 1220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Build a new jQuery matched element set 1230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var ret = jQuery( elems ); 1240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Add the old object onto the stack (as a reference) 1260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ret.prevObject = this; 1270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ret.context = this.context; 1290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( name === "find" ) 1310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ret.selector = this.selector + (this.selector ? " " : "") + selector; 1320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch else if ( name ) 1330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ret.selector = this.selector + "." + name + "(" + selector + ")"; 1340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Return the newly-formed element set 1360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return ret; 1370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 1380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Force the current matched set of elements to become 1400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // the specified array of elements (destroying the stack in the process) 1410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // You should use pushStack() in order to do this, but maintain the stack 1420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch setArray: function( elems ) { 1430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Resetting the length to 0, then using the native Array push 1440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // is a super-fast way to populate an object with array-like properties 1450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.length = 0; 1460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Array.prototype.push.apply( this, elems ); 1470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this; 1490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 1500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Execute a callback for every element in the matched set. 1520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // (You can seed the arguments with an array of args, but this is 1530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // only used internally.) 1540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch each: function( callback, args ) { 1550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return jQuery.each( this, callback, args ); 1560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 1570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Determine the position of an element within 1590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // the matched set of elements 1600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch index: function( elem ) { 1610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Locate the position of the desired element 1620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return jQuery.inArray( 1630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // If it receives a jQuery object, the first element is used 1640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem && elem.jquery ? elem[0] : elem 1650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch , this ); 1660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 1670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch attr: function( name, value, type ) { 1690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var options = name; 1700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Look for the case where we're accessing a style value 1720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( typeof name === "string" ) 1730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( value === undefined ) 1740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this[0] && jQuery[ type || "attr" ]( this[0], name ); 1750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch else { 1770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch options = {}; 1780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch options[ name ] = value; 1790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 1800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Check to see if we're setting style values 1820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this.each(function(i){ 1830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Set all the styles 1840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( name in options ) 1850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.attr( 1860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch type ? 1870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.style : 1880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this, 1890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch name, jQuery.prop( this, options[ name ], type, i, name ) 1900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ); 1910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 1920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 1930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch css: function( key, value ) { 1950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // ignore negative width and height values 1960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( (key == 'width' || key == 'height') && parseFloat(value) < 0 ) 1970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch value = undefined; 1980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this.attr( key, value, "curCSS" ); 1990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 2000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch text: function( text ) { 2020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( typeof text !== "object" && text != null ) 2030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) ); 2040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var ret = ""; 2060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.each( text || this, function(){ 2080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.each( this.childNodes, function(){ 2090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( this.nodeType != 8 ) 2100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ret += this.nodeType != 1 ? 2110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.nodeValue : 2120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.fn.text( [ this ] ); 2130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 2140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 2150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return ret; 2170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 2180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch wrapAll: function( html ) { 2200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( this[0] ) { 2210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // The elements to wrap the target around 2220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var wrap = jQuery( html, this[0].ownerDocument ).clone(); 2230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( this[0].parentNode ) 2250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch wrap.insertBefore( this[0] ); 2260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch wrap.map(function(){ 2280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var elem = this; 2290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch while ( elem.firstChild ) 2310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem = elem.firstChild; 2320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return elem; 2340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }).append(this); 2350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 2360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this; 2380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 2390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch wrapInner: function( html ) { 2410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this.each(function(){ 2420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery( this ).contents().wrapAll( html ); 2430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 2440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 2450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch wrap: function( html ) { 2470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this.each(function(){ 2480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery( this ).wrapAll( html ); 2490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 2500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 2510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch append: function() { 2530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this.domManip(arguments, true, function(elem){ 2540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (this.nodeType == 1) 2550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.appendChild( elem ); 2560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 2570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 2580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch prepend: function() { 2600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this.domManip(arguments, true, function(elem){ 2610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (this.nodeType == 1) 2620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.insertBefore( elem, this.firstChild ); 2630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 2640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 2650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch before: function() { 2670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this.domManip(arguments, false, function(elem){ 2680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.parentNode.insertBefore( elem, this ); 2690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 2700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 2710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch after: function() { 2730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this.domManip(arguments, false, function(elem){ 2740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.parentNode.insertBefore( elem, this.nextSibling ); 2750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 2760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 2770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch end: function() { 2790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this.prevObject || jQuery( [] ); 2800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 2810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // For internal use only. 2830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Behaves like an Array's method, not like a jQuery method. 2840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch push: [].push, 2850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch sort: [].sort, 2860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch splice: [].splice, 2870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch find: function( selector ) { 2890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( this.length === 1 ) { 2900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var ret = this.pushStack( [], "find", selector ); 2910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ret.length = 0; 2920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.find( selector, this[0], ret ); 2930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return ret; 2940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } else { 2950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this.pushStack( jQuery.unique(jQuery.map(this, function(elem){ 2960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return jQuery.find( selector, elem ); 2970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch })), "find", selector ); 2980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 2990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 3000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch clone: function( events ) { 3020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Do the clone 3030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var ret = this.map(function(){ 3040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !jQuery.support.noCloneEvent && !jQuery.isXMLDoc(this) ) { 3050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // IE copies events bound via attachEvent when 3060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // using cloneNode. Calling detachEvent on the 3070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // clone will also remove the events from the orignal 3080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // In order to get around this, we use innerHTML. 3090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Unfortunately, this means some modifications to 3100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // attributes in IE that are actually only stored 3110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // as properties will not be copied (such as the 3120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // the name attribute on an input). 3130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var html = this.outerHTML; 3140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !html ) { 3150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var div = this.ownerDocument.createElement("div"); 3160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch div.appendChild( this.cloneNode(true) ); 3170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch html = div.innerHTML; 3180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 3190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return jQuery.clean([html.replace(/ jQuery\d+="(?:\d+|null)"/g, "").replace(/^\s*/, "")])[0]; 3210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } else 3220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this.cloneNode(true); 3230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 3240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Copy the events from the original to the clone 3260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( events === true ) { 3270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var orig = this.find("*").andSelf(), i = 0; 3280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ret.find("*").andSelf().each(function(){ 3300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( this.nodeName !== orig[i].nodeName ) 3310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return; 3320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var events = jQuery.data( orig[i], "events" ); 3340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( var type in events ) { 3360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( var handler in events[ type ] ) { 3370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.event.add( this, type, events[ type ][ handler ], events[ type ][ handler ].data ); 3380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 3390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 3400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch i++; 3420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 3430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 3440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Return the cloned set 3460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return ret; 3470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 3480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch filter: function( selector ) { 3500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this.pushStack( 3510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.isFunction( selector ) && 3520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.grep(this, function(elem, i){ 3530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return selector.call( elem, i ); 3540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }) || 3550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.multiFilter( selector, jQuery.grep(this, function(elem){ 3570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return elem.nodeType === 1; 3580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }) ), "filter", selector ); 3590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 3600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch closest: function( selector ) { 3620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var pos = jQuery.expr.match.POS.test( selector ) ? jQuery(selector) : null, 3630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch closer = 0; 3640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this.map(function(){ 3660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var cur = this; 3670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch while ( cur && cur.ownerDocument ) { 3680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( pos ? pos.index(cur) > -1 : jQuery(cur).is(selector) ) { 3690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.data(cur, "closest", closer); 3700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return cur; 3710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 3720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch cur = cur.parentNode; 3730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch closer++; 3740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 3750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 3760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 3770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch not: function( selector ) { 3790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( typeof selector === "string" ) 3800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // test special case where just one selector is passed in 3810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( isSimple.test( selector ) ) 3820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this.pushStack( jQuery.multiFilter( selector, this, true ), "not", selector ); 3830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch else 3840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch selector = jQuery.multiFilter( selector, this ); 3850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var isArrayLike = selector.length && selector[selector.length - 1] !== undefined && !selector.nodeType; 3870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this.filter(function() { 3880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return isArrayLike ? jQuery.inArray( this, selector ) < 0 : this != selector; 3890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 3900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 3910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch add: function( selector ) { 3930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this.pushStack( jQuery.unique( jQuery.merge( 3940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.get(), 3950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch typeof selector === "string" ? 3960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery( selector ) : 3970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.makeArray( selector ) 3980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ))); 3990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 4000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 4010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch is: function( selector ) { 4020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return !!selector && jQuery.multiFilter( selector, this ).length > 0; 4030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 4040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 4050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch hasClass: function( selector ) { 4060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return !!selector && this.is( "." + selector ); 4070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 4080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 4090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch val: function( value ) { 4100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( value === undefined ) { 4110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var elem = this[0]; 4120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 4130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( elem ) { 4140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if( jQuery.nodeName( elem, 'option' ) ) 4150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return (elem.attributes.value || {}).specified ? elem.value : elem.text; 4160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 4170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // We need to handle select boxes special 4180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( jQuery.nodeName( elem, "select" ) ) { 4190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var index = elem.selectedIndex, 4200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch values = [], 4210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch options = elem.options, 4220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch one = elem.type == "select-one"; 4230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 4240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Nothing was selected 4250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( index < 0 ) 4260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return null; 4270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 4280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Loop through all the selected options 4290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) { 4300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var option = options[ i ]; 4310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 4320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( option.selected ) { 4330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Get the specifc value for the option 4340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch value = jQuery(option).val(); 4350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 4360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // We don't need an array for one selects 4370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( one ) 4380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return value; 4390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 4400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Multi-Selects return an array 4410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch values.push( value ); 4420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 4430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 4440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 4450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return values; 4460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 4470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 4480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Everything else, we just grab the value 4490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return (elem.value || "").replace(/\r/g, ""); 4500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 4510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 4520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 4530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return undefined; 4540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 4550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 4560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( typeof value === "number" ) 4570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch value += ''; 4580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 4590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this.each(function(){ 4600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( this.nodeType != 1 ) 4610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return; 4620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 4630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( jQuery.isArray(value) && /radio|checkbox/.test( this.type ) ) 4640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.checked = (jQuery.inArray(this.value, value) >= 0 || 4650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.inArray(this.name, value) >= 0); 4660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 4670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch else if ( jQuery.nodeName( this, "select" ) ) { 4680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var values = jQuery.makeArray(value); 4690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 4700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery( "option", this ).each(function(){ 4710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.selected = (jQuery.inArray( this.value, values ) >= 0 || 4720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.inArray( this.text, values ) >= 0); 4730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 4740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 4750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !values.length ) 4760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.selectedIndex = -1; 4770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 4780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } else 4790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.value = value; 4800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 4810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 4820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 4830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch html: function( value ) { 4840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return value === undefined ? 4850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch (this[0] ? 4860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g, "") : 4870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch null) : 4880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.empty().append( value ); 4890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 4900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 4910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch replaceWith: function( value ) { 4920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this.after( value ).remove(); 4930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 4940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 4950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch eq: function( i ) { 4960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this.slice( i, +i + 1 ); 4970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 4980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 4990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch slice: function() { 5000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this.pushStack( Array.prototype.slice.apply( this, arguments ), 5010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "slice", Array.prototype.slice.call(arguments).join(",") ); 5020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 5030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 5040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch map: function( callback ) { 5050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this.pushStack( jQuery.map(this, function(elem, i){ 5060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return callback.call( elem, i, elem ); 5070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch })); 5080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 5090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 5100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch andSelf: function() { 5110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this.add( this.prevObject ); 5120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 5130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 5140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch domManip: function( args, table, callback ) { 5150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( this[0] ) { 5160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var fragment = (this[0].ownerDocument || this[0]).createDocumentFragment(), 5170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch scripts = jQuery.clean( args, (this[0].ownerDocument || this[0]), fragment ), 5180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch first = fragment.firstChild; 5190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 5200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( first ) 5210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( var i = 0, l = this.length; i < l; i++ ) 5220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch callback.call( root(this[i], first), this.length > 1 || i > 0 ? 5230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch fragment.cloneNode(true) : fragment ); 5240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 5250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( scripts ) 5260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.each( scripts, evalScript ); 5270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 5280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 5290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this; 5300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 5310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch function root( elem, cur ) { 5320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return table && jQuery.nodeName(elem, "table") && jQuery.nodeName(cur, "tr") ? 5330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch (elem.getElementsByTagName("tbody")[0] || 5340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem.appendChild(elem.ownerDocument.createElement("tbody"))) : 5350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem; 5360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 5370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 5380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}; 5390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 5400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch// Give the init function the jQuery prototype for later instantiation 5410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochjQuery.fn.init.prototype = jQuery.fn; 5420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 5430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochfunction evalScript( i, elem ) { 5440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( elem.src ) 5450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.ajax({ 5460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch url: elem.src, 5470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch async: false, 5480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch dataType: "script" 5490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 5500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 5510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch else 5520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" ); 5530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 5540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( elem.parentNode ) 5550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem.parentNode.removeChild( elem ); 5560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 5570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 5580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochfunction now(){ 5590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return +new Date; 5600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 5610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 5620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochjQuery.extend = jQuery.fn.extend = function() { 5630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // copy reference to target object 5640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options; 5650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 5660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Handle a deep copy situation 5670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( typeof target === "boolean" ) { 5680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch deep = target; 5690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch target = arguments[1] || {}; 5700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // skip the boolean and the target 5710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch i = 2; 5720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 5730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 5740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Handle case when target is a string or something (possible in deep copy) 5750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( typeof target !== "object" && !jQuery.isFunction(target) ) 5760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch target = {}; 5770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 5780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // extend jQuery itself if only one argument is passed 5790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( length == i ) { 5800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch target = this; 5810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch --i; 5820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 5830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 5840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( ; i < length; i++ ) 5850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Only deal with non-null/undefined values 5860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( (options = arguments[ i ]) != null ) 5870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Extend the base object 5880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( var name in options ) { 5890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var src = target[ name ], copy = options[ name ]; 5900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 5910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Prevent never-ending loop 5920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( target === copy ) 5930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch continue; 5940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 5950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Recurse if we're merging object values 5960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( deep && copy && typeof copy === "object" && !copy.nodeType ) 5970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch target[ name ] = jQuery.extend( deep, 5980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Never move original objects, clone them 5990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch src || ( copy.length != null ? [ ] : { } ) 6000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch , copy ); 6010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 6020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Don't bring in undefined values 6030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch else if ( copy !== undefined ) 6040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch target[ name ] = copy; 6050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 6060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 6070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 6080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Return the modified object 6090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return target; 6100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}; 6110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 6120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch// exclude the following css properties to add px 6130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvar exclude = /z-?index|font-?weight|opacity|zoom|line-?height/i, 6140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // cache defaultView 6150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch defaultView = document.defaultView || {}, 6160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch toString = Object.prototype.toString; 6170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 6180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochjQuery.extend({ 6190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch noConflict: function( deep ) { 6200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch window.$ = _$; 6210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 6220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( deep ) 6230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch window.jQuery = _jQuery; 6240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 6250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return jQuery; 6260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 6270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 6280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // See test/unit/core.js for details concerning isFunction. 6290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Since version 1.3, DOM methods and functions like alert 6300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // aren't supported. They return false on IE (#2968). 6310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch isFunction: function( obj ) { 6320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return toString.call(obj) === "[object Function]"; 6330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 6340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 6350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch isArray: function( obj ) { 6360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return toString.call(obj) === "[object Array]"; 6370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 6380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 6390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // check if an element is in a (or is an) XML document 6400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch isXMLDoc: function( elem ) { 6410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" || 6420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch !!elem.ownerDocument && jQuery.isXMLDoc( elem.ownerDocument ); 6430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 6440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 6450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Evalulates a script in a global context 6460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch globalEval: function( data ) { 6470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( data && /\S/.test(data) ) { 6480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Inspired by code by Andrea Giammarchi 6490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html 6500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var head = document.getElementsByTagName("head")[0] || document.documentElement, 6510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch script = document.createElement("script"); 6520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 6530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch script.type = "text/javascript"; 6540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( jQuery.support.scriptEval ) 6550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch script.appendChild( document.createTextNode( data ) ); 6560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch else 6570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch script.text = data; 6580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 6590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Use insertBefore instead of appendChild to circumvent an IE6 bug. 6600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // This arises when a base node is used (#2709). 6610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch head.insertBefore( script, head.firstChild ); 6620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch head.removeChild( script ); 6630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 6640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 6650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 6660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch nodeName: function( elem, name ) { 6670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return elem.nodeName && elem.nodeName.toUpperCase() == name.toUpperCase(); 6680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 6690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 6700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // args is for internal usage only 6710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch each: function( object, callback, args ) { 6720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var name, i = 0, length = object.length; 6730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 6740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( args ) { 6750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( length === undefined ) { 6760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( name in object ) 6770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( callback.apply( object[ name ], args ) === false ) 6780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch break; 6790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } else 6800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( ; i < length; ) 6810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( callback.apply( object[ i++ ], args ) === false ) 6820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch break; 6830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 6840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // A special, fast, case for the most common use of each 6850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } else { 6860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( length === undefined ) { 6870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( name in object ) 6880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( callback.call( object[ name ], name, object[ name ] ) === false ) 6890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch break; 6900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } else 6910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( var value = object[0]; 6920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch i < length && callback.call( value, i, value ) !== false; value = object[++i] ){} 6930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 6940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 6950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return object; 6960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 6970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 6980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch prop: function( elem, value, type, i, name ) { 6990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Handle executable functions 7000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( jQuery.isFunction( value ) ) 7010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch value = value.call( elem, i ); 7020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 7030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Handle passing in a number to a CSS property 7040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return typeof value === "number" && type == "curCSS" && !exclude.test( name ) ? 7050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch value + "px" : 7060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch value; 7070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 7080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 7090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch className: { 7100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // internal only, use addClass("class") 7110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch add: function( elem, classNames ) { 7120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.each((classNames || "").split(/\s+/), function(i, className){ 7130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( elem.nodeType == 1 && !jQuery.className.has( elem.className, className ) ) 7140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem.className += (elem.className ? " " : "") + className; 7150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 7160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 7170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 7180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // internal only, use removeClass("class") 7190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch remove: function( elem, classNames ) { 7200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (elem.nodeType == 1) 7210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem.className = classNames !== undefined ? 7220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.grep(elem.className.split(/\s+/), function(className){ 7230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return !jQuery.className.has( classNames, className ); 7240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }).join(" ") : 7250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ""; 7260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 7270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 7280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // internal only, use hasClass("class") 7290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch has: function( elem, className ) { 7300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return elem && jQuery.inArray( className, (elem.className || elem).toString().split(/\s+/) ) > -1; 7310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 7320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 7330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 7340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // A method for quickly swapping in/out CSS properties to get correct calculations 7350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch swap: function( elem, options, callback ) { 7360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var old = {}; 7370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Remember the old values, and insert the new ones 7380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( var name in options ) { 7390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch old[ name ] = elem.style[ name ]; 7400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem.style[ name ] = options[ name ]; 7410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 7420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 7430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch callback.call( elem ); 7440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 7450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Revert the old values 7460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( var name in options ) 7470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem.style[ name ] = old[ name ]; 7480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 7490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 7500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch css: function( elem, name, force, extra ) { 7510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( name == "width" || name == "height" ) { 7520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var val, props = { position: "absolute", visibility: "hidden", display:"block" }, which = name == "width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ]; 7530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 7540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch function getWH() { 7550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch val = name == "width" ? elem.offsetWidth : elem.offsetHeight; 7560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 7570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( extra === "border" ) 7580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return; 7590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 7600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.each( which, function() { 7610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !extra ) 7620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch val -= parseFloat(jQuery.curCSS( elem, "padding" + this, true)) || 0; 7630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( extra === "margin" ) 7640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch val += parseFloat(jQuery.curCSS( elem, "margin" + this, true)) || 0; 7650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch else 7660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch val -= parseFloat(jQuery.curCSS( elem, "border" + this + "Width", true)) || 0; 7670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 7680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 7690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 7700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( elem.offsetWidth !== 0 ) 7710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch getWH(); 7720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch else 7730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.swap( elem, props, getWH ); 7740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 7750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return Math.max(0, Math.round(val)); 7760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 7770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 7780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return jQuery.curCSS( elem, name, force ); 7790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 7800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 7810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch curCSS: function( elem, name, force ) { 7820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var ret, style = elem.style; 7830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 7840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // We need to handle opacity special in IE 7850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( name == "opacity" && !jQuery.support.opacity ) { 7860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ret = jQuery.attr( style, "opacity" ); 7870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 7880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return ret == "" ? 7890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "1" : 7900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ret; 7910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 7920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 7930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Make sure we're using the right name for getting the float value 7940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( name.match( /float/i ) ) 7950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch name = styleFloat; 7960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 7970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !force && style && style[ name ] ) 7980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ret = style[ name ]; 7990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 8000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch else if ( defaultView.getComputedStyle ) { 8010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 8020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Only "float" is needed here 8030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( name.match( /float/i ) ) 8040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch name = "float"; 8050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 8060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch name = name.replace( /([A-Z])/g, "-$1" ).toLowerCase(); 8070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 8080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var computedStyle = defaultView.getComputedStyle( elem, null ); 8090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 8100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( computedStyle ) 8110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ret = computedStyle.getPropertyValue( name ); 8120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 8130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // We should always get a number back from opacity 8140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( name == "opacity" && ret == "" ) 8150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ret = "1"; 8160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 8170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } else if ( elem.currentStyle ) { 8180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var camelCase = name.replace(/\-(\w)/g, function(all, letter){ 8190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return letter.toUpperCase(); 8200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 8210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 8220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ret = elem.currentStyle[ name ] || elem.currentStyle[ camelCase ]; 8230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 8240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // From the awesome hack by Dean Edwards 8250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291 8260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 8270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // If we're not dealing with a regular pixel number 8280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // but a number that has a weird ending, we need to convert it to pixels 8290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !/^\d+(px)?$/i.test( ret ) && /^\d/.test( ret ) ) { 8300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Remember the original values 8310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var left = style.left, rsLeft = elem.runtimeStyle.left; 8320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 8330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Put in the new values to get a computed value out 8340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem.runtimeStyle.left = elem.currentStyle.left; 8350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch style.left = ret || 0; 8360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ret = style.pixelLeft + "px"; 8370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 8380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Revert the changed values 8390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch style.left = left; 8400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem.runtimeStyle.left = rsLeft; 8410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 8420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 8430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 8440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return ret; 8450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 8460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 8470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch clean: function( elems, context, fragment ) { 8480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch context = context || document; 8490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 8500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // !context.createElement fails in IE with an error but returns typeof 'object' 8510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( typeof context.createElement === "undefined" ) 8520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch context = context.ownerDocument || context[0] && context[0].ownerDocument || document; 8530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 8540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // If a single string is passed in and it's a single tag 8550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // just do a createElement and skip the rest 8560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !fragment && elems.length === 1 && typeof elems[0] === "string" ) { 8570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var match = /^<(\w+)\s*\/?>$/.exec(elems[0]); 8580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( match ) 8590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return [ context.createElement( match[1] ) ]; 8600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 8610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 8620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var ret = [], scripts = [], div = context.createElement("div"); 8630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 8640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.each(elems, function(i, elem){ 8650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( typeof elem === "number" ) 8660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem += ''; 8670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 8680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !elem ) 8690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return; 8700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 8710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Convert html string into DOM nodes 8720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( typeof elem === "string" ) { 8730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Fix "XHTML"-style tags in all browsers 8740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem = elem.replace(/(<(\w+)[^>]*?)\/>/g, function(all, front, tag){ 8750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i) ? 8760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch all : 8770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch front + "></" + tag + ">"; 8780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 8790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 8800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Trim whitespace, otherwise indexOf won't work as expected 8810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var tags = elem.replace(/^\s+/, "").substring(0, 10).toLowerCase(); 8820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 8830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var wrap = 8840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // option or optgroup 8850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch !tags.indexOf("<opt") && 8860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch [ 1, "<select multiple='multiple'>", "</select>" ] || 8870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 8880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch !tags.indexOf("<leg") && 8890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch [ 1, "<fieldset>", "</fieldset>" ] || 8900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 8910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch tags.match(/^<(thead|tbody|tfoot|colg|cap)/) && 8920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch [ 1, "<table>", "</table>" ] || 8930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 8940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch !tags.indexOf("<tr") && 8950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch [ 2, "<table><tbody>", "</tbody></table>" ] || 8960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 8970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // <thead> matched above 8980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch (!tags.indexOf("<td") || !tags.indexOf("<th")) && 8990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ] || 9000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 9010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch !tags.indexOf("<col") && 9020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ] || 9030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 9040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // IE can't serialize <link> and <script> tags normally 9050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch !jQuery.support.htmlSerialize && 9060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch [ 1, "div<div>", "</div>" ] || 9070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 9080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch [ 0, "", "" ]; 9090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 9100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Go to html and back, then peel off extra wrappers 9110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch div.innerHTML = wrap[1] + elem + wrap[2]; 9120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 9130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Move to the right depth 9140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch while ( wrap[0]-- ) 9150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch div = div.lastChild; 9160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 9170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Remove IE's autoinserted <tbody> from table fragments 9180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !jQuery.support.tbody ) { 9190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 9200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // String was a <table>, *may* have spurious <tbody> 9210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var hasBody = /<tbody/i.test(elem), 9220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch tbody = !tags.indexOf("<table") && !hasBody ? 9230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch div.firstChild && div.firstChild.childNodes : 9240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 9250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // String was a bare <thead> or <tfoot> 9260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch wrap[1] == "<table>" && !hasBody ? 9270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch div.childNodes : 9280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch []; 9290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 9300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( var j = tbody.length - 1; j >= 0 ; --j ) 9310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) 9320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch tbody[ j ].parentNode.removeChild( tbody[ j ] ); 9330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 9340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 9350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 9360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // IE completely kills leading whitespace when innerHTML is used 9370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !jQuery.support.leadingWhitespace && /^\s/.test( elem ) ) 9380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch div.insertBefore( context.createTextNode( elem.match(/^\s*/)[0] ), div.firstChild ); 9390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 9400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem = jQuery.makeArray( div.childNodes ); 9410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 9420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 9430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( elem.nodeType ) 9440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ret.push( elem ); 9450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch else 9460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ret = jQuery.merge( ret, elem ); 9470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 9480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 9490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 9500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( fragment ) { 9510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( var i = 0; ret[i]; i++ ) { 9520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( jQuery.nodeName( ret[i], "script" ) && (!ret[i].type || ret[i].type.toLowerCase() === "text/javascript") ) { 9530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch scripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] ); 9540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } else { 9550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( ret[i].nodeType === 1 ) 9560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName("script"))) ); 9570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch fragment.appendChild( ret[i] ); 9580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 9590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 9600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 9610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return scripts; 9620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 9630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 9640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return ret; 9650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 9660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 9670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch attr: function( elem, name, value ) { 9680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // don't set attributes on text and comment nodes 9690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (!elem || elem.nodeType == 3 || elem.nodeType == 8) 9700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return undefined; 9710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 9720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var notxml = !jQuery.isXMLDoc( elem ), 9730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Whether we are setting (or getting) 9740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch set = value !== undefined; 9750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 9760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Try to normalize/fix the name 9770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch name = notxml && jQuery.props[ name ] || name; 9780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 9790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Only do all the following if this is a node (faster for style) 9800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // IE elem.getAttribute passes even for style 9810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( elem.tagName ) { 9820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 9830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // These attributes require special treatment 9840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var special = /href|src|style/.test( name ); 9850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 9860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Safari mis-reports the default selected property of a hidden option 9870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Accessing the parent's selectedIndex property fixes it 9880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( name == "selected" && elem.parentNode ) 9890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem.parentNode.selectedIndex; 9900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 9910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // If applicable, access the attribute via the DOM 0 way 9920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( name in elem && notxml && !special ) { 9930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( set ){ 9940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // We can't allow the type property to be changed (since it causes problems in IE) 9950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( name == "type" && jQuery.nodeName( elem, "input" ) && elem.parentNode ) 9960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch throw "type property can't be changed"; 9970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 9980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem[ name ] = value; 9990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 10000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 10010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // browsers index elements by id/name on forms, give priority to attributes. 10020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if( jQuery.nodeName( elem, "form" ) && elem.getAttributeNode(name) ) 10030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return elem.getAttributeNode( name ).nodeValue; 10040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 10050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set 10060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ 10070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( name == "tabIndex" ) { 10080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var attributeNode = elem.getAttributeNode( "tabIndex" ); 10090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return attributeNode && attributeNode.specified 10100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ? attributeNode.value 10110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch : elem.nodeName.match(/(button|input|object|select|textarea)/i) 10120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ? 0 10130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch : elem.nodeName.match(/^(a|area)$/i) && elem.href 10140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ? 0 10150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch : undefined; 10160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 10170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 10180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return elem[ name ]; 10190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 10200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 10210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !jQuery.support.style && notxml && name == "style" ) 10220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return jQuery.attr( elem.style, "cssText", value ); 10230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 10240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( set ) 10250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // convert the value to a string (all browsers do this but IE) see #1070 10260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem.setAttribute( name, "" + value ); 10270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 10280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var attr = !jQuery.support.hrefNormalized && notxml && special 10290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Some attributes require a special call on IE 10300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ? elem.getAttribute( name, 2 ) 10310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch : elem.getAttribute( name ); 10320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 10330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Non-existent attributes return null, we normalize to undefined 10340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return attr === null ? undefined : attr; 10350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 10360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 10370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // elem is actually elem.style ... set the style 10380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 10390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // IE uses filters for opacity 10400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !jQuery.support.opacity && name == "opacity" ) { 10410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( set ) { 10420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // IE has trouble with opacity if it does not have layout 10430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Force it by setting the zoom level 10440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem.zoom = 1; 10450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 10460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Set the alpha filter to set the opacity 10470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem.filter = (elem.filter || "").replace( /alpha\([^)]*\)/, "" ) + 10480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch (parseInt( value ) + '' == "NaN" ? "" : "alpha(opacity=" + value * 100 + ")"); 10490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 10500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 10510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return elem.filter && elem.filter.indexOf("opacity=") >= 0 ? 10520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch (parseFloat( elem.filter.match(/opacity=([^)]*)/)[1] ) / 100) + '': 10530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ""; 10540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 10550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 10560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch name = name.replace(/-([a-z])/ig, function(all, letter){ 10570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return letter.toUpperCase(); 10580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 10590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 10600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( set ) 10610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem[ name ] = value; 10620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 10630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return elem[ name ]; 10640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 10650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 10660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch trim: function( text ) { 10670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return (text || "").replace( /^\s+|\s+$/g, "" ); 10680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 10690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 10700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch makeArray: function( array ) { 10710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var ret = []; 10720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 10730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if( array != null ){ 10740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var i = array.length; 10750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // The window, strings (and functions) also have 'length' 10760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if( i == null || typeof array === "string" || jQuery.isFunction(array) || array.setInterval ) 10770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ret[0] = array; 10780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch else 10790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch while( i ) 10800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ret[--i] = array[i]; 10810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 10820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 10830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return ret; 10840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 10850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 10860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch inArray: function( elem, array ) { 10870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( var i = 0, length = array.length; i < length; i++ ) 10880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Use === because on IE, window == document 10890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( array[ i ] === elem ) 10900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return i; 10910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 10920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return -1; 10930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 10940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 10950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch merge: function( first, second ) { 10960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // We have to loop this way because IE & Opera overwrite the length 10970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // expando of getElementsByTagName 10980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var i = 0, elem, pos = first.length; 10990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Also, we need to make sure that the correct elements are being returned 11000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // (IE returns comment nodes in a '*' query) 11010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !jQuery.support.getAll ) { 11020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch while ( (elem = second[ i++ ]) != null ) 11030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( elem.nodeType != 8 ) 11040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch first[ pos++ ] = elem; 11050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 11060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } else 11070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch while ( (elem = second[ i++ ]) != null ) 11080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch first[ pos++ ] = elem; 11090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 11100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return first; 11110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 11120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 11130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch unique: function( array ) { 11140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var ret = [], done = {}; 11150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 11160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch try { 11170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 11180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( var i = 0, length = array.length; i < length; i++ ) { 11190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var id = jQuery.data( array[ i ] ); 11200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 11210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !done[ id ] ) { 11220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch done[ id ] = true; 11230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ret.push( array[ i ] ); 11240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 11250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 11260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 11270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } catch( e ) { 11280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ret = array; 11290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 11300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 11310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return ret; 11320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 11330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 11340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch grep: function( elems, callback, inv ) { 11350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var ret = []; 11360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 11370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Go through the array, only saving the items 11380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // that pass the validator function 11390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( var i = 0, length = elems.length; i < length; i++ ) 11400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !inv != !callback( elems[ i ], i ) ) 11410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ret.push( elems[ i ] ); 11420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 11430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return ret; 11440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 11450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 11460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch map: function( elems, callback ) { 11470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var ret = []; 11480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 11490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Go through the array, translating each of the items to their 11500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // new value (or values). 11510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( var i = 0, length = elems.length; i < length; i++ ) { 11520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var value = callback( elems[ i ], i ); 11530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 11540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( value != null ) 11550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ret[ ret.length ] = value; 11560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 11570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 11580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return ret.concat.apply( [], ret ); 11590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 11600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}); 11610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 11620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch// Use of jQuery.browser is deprecated. 11630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch// It's included for backwards compatibility and plugins, 11640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch// although they should work to migrate away. 11650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 11660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvar userAgent = navigator.userAgent.toLowerCase(); 11670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 11680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch// Figure out what browser is being used 11690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochjQuery.browser = { 11700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch version: (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1], 11710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch safari: /webkit/.test( userAgent ), 11720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch opera: /opera/.test( userAgent ), 11730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch msie: /msie/.test( userAgent ) && !/opera/.test( userAgent ), 11740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch mozilla: /mozilla/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent ) 11750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}; 11760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 11770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochjQuery.each({ 11780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch parent: function(elem){return elem.parentNode;}, 11790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch parents: function(elem){return jQuery.dir(elem,"parentNode");}, 11800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch next: function(elem){return jQuery.nth(elem,2,"nextSibling");}, 11810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch prev: function(elem){return jQuery.nth(elem,2,"previousSibling");}, 11820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch nextAll: function(elem){return jQuery.dir(elem,"nextSibling");}, 11830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch prevAll: function(elem){return jQuery.dir(elem,"previousSibling");}, 11840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch siblings: function(elem){return jQuery.sibling(elem.parentNode.firstChild,elem);}, 11850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch children: function(elem){return jQuery.sibling(elem.firstChild);}, 11860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch contents: function(elem){return jQuery.nodeName(elem,"iframe")?elem.contentDocument||elem.contentWindow.document:jQuery.makeArray(elem.childNodes);} 11870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}, function(name, fn){ 11880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.fn[ name ] = function( selector ) { 11890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var ret = jQuery.map( this, fn ); 11900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 11910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( selector && typeof selector == "string" ) 11920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ret = jQuery.multiFilter( selector, ret ); 11930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 11940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this.pushStack( jQuery.unique( ret ), name, selector ); 11950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }; 11960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}); 11970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 11980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochjQuery.each({ 11990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch appendTo: "append", 12000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch prependTo: "prepend", 12010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch insertBefore: "before", 12020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch insertAfter: "after", 12030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch replaceAll: "replaceWith" 12040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}, function(name, original){ 12050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.fn[ name ] = function( selector ) { 12060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var ret = [], insert = jQuery( selector ); 12070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 12080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( var i = 0, l = insert.length; i < l; i++ ) { 12090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var elems = (i > 0 ? this.clone(true) : this).get(); 12100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.fn[ original ].apply( jQuery(insert[i]), elems ); 12110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ret = ret.concat( elems ); 12120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 12130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 12140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this.pushStack( ret, name, selector ); 12150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }; 12160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}); 12170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 12180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochjQuery.each({ 12190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch removeAttr: function( name ) { 12200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.attr( this, name, "" ); 12210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (this.nodeType == 1) 12220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.removeAttribute( name ); 12230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 12240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 12250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch addClass: function( classNames ) { 12260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.className.add( this, classNames ); 12270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 12280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 12290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch removeClass: function( classNames ) { 12300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.className.remove( this, classNames ); 12310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 12320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 12330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch toggleClass: function( classNames, state ) { 12340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if( typeof state !== "boolean" ) 12350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch state = !jQuery.className.has( this, classNames ); 12360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.className[ state ? "add" : "remove" ]( this, classNames ); 12370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 12380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 12390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch remove: function( selector ) { 12400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !selector || jQuery.filter( selector, [ this ] ).length ) { 12410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Prevent memory leaks 12420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery( "*", this ).add([this]).each(function(){ 12430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.event.remove(this); 12440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.removeData(this); 12450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 12460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (this.parentNode) 12470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.parentNode.removeChild( this ); 12480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 12490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 12500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 12510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch empty: function() { 12520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Remove element nodes and prevent memory leaks 12530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery(this).children().remove(); 12540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 12550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Remove any remaining nodes 12560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch while ( this.firstChild ) 12570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.removeChild( this.firstChild ); 12580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 12590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}, function(name, fn){ 12600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.fn[ name ] = function(){ 12610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this.each( fn, arguments ); 12620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }; 12630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}); 12640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 12650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch// Helper function used by the dimensions and offset modules 12660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochfunction num(elem, prop) { 12670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return elem[0] && parseInt( jQuery.curCSS(elem[0], prop, true), 10 ) || 0; 12680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 12690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvar expando = "jQuery" + now(), uuid = 0, windowData = {}; 12700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 12710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochjQuery.extend({ 12720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch cache: {}, 12730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 12740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch data: function( elem, name, data ) { 12750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem = elem == window ? 12760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch windowData : 12770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem; 12780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 12790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var id = elem[ expando ]; 12800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 12810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Compute a unique ID for the element 12820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !id ) 12830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch id = elem[ expando ] = ++uuid; 12840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 12850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Only generate the data cache if we're 12860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // trying to access or manipulate it 12870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( name && !jQuery.cache[ id ] ) 12880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.cache[ id ] = {}; 12890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 12900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Prevent overriding the named cache with undefined values 12910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( data !== undefined ) 12920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.cache[ id ][ name ] = data; 12930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 12940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Return the named cache data, or the ID for the element 12950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return name ? 12960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.cache[ id ][ name ] : 12970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch id; 12980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 12990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 13000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch removeData: function( elem, name ) { 13010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem = elem == window ? 13020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch windowData : 13030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem; 13040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 13050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var id = elem[ expando ]; 13060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 13070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // If we want to remove a specific section of the element's data 13080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( name ) { 13090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( jQuery.cache[ id ] ) { 13100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Remove the section of cache data 13110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch delete jQuery.cache[ id ][ name ]; 13120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 13130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // If we've removed all the data, remove the element's cache 13140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch name = ""; 13150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 13160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( name in jQuery.cache[ id ] ) 13170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch break; 13180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 13190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !name ) 13200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.removeData( elem ); 13210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 13220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 13230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Otherwise, we want to remove all of the element's data 13240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } else { 13250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Clean up the element expando 13260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch try { 13270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch delete elem[ expando ]; 13280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } catch(e){ 13290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // IE has trouble directly removing the expando 13300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // but it's ok with using removeAttribute 13310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( elem.removeAttribute ) 13320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem.removeAttribute( expando ); 13330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 13340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 13350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Completely remove the data cache 13360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch delete jQuery.cache[ id ]; 13370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 13380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 13390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch queue: function( elem, type, data ) { 13400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( elem ){ 13410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 13420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch type = (type || "fx") + "queue"; 13430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 13440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var q = jQuery.data( elem, type ); 13450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 13460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !q || jQuery.isArray(data) ) 13470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch q = jQuery.data( elem, type, jQuery.makeArray(data) ); 13480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch else if( data ) 13490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch q.push( data ); 13500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 13510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 13520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return q; 13530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 13540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 13550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch dequeue: function( elem, type ){ 13560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var queue = jQuery.queue( elem, type ), 13570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch fn = queue.shift(); 13580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 13590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if( !type || type === "fx" ) 13600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch fn = queue[0]; 13610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 13620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if( fn !== undefined ) 13630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch fn.call(elem); 13640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 13650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}); 13660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 13670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochjQuery.fn.extend({ 13680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch data: function( key, value ){ 13690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var parts = key.split("."); 13700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch parts[1] = parts[1] ? "." + parts[1] : ""; 13710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 13720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( value === undefined ) { 13730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]); 13740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 13750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( data === undefined && this.length ) 13760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch data = jQuery.data( this[0], key ); 13770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 13780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return data === undefined && parts[1] ? 13790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.data( parts[0] ) : 13800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch data; 13810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } else 13820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this.trigger("setData" + parts[1] + "!", [parts[0], value]).each(function(){ 13830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.data( this, key, value ); 13840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 13850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 13860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 13870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch removeData: function( key ){ 13880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this.each(function(){ 13890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.removeData( this, key ); 13900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 13910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 13920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch queue: function(type, data){ 13930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( typeof type !== "string" ) { 13940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch data = type; 13950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch type = "fx"; 13960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 13970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 13980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( data === undefined ) 13990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return jQuery.queue( this[0], type ); 14000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 14010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this.each(function(){ 14020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var queue = jQuery.queue( this, type, data ); 14030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 14040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if( type == "fx" && queue.length == 1 ) 14050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch queue[0].call(this); 14060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 14070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 14080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch dequeue: function(type){ 14090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this.each(function(){ 14100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.dequeue( this, type ); 14110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 14120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 14130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch});/*! 14140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * Sizzle CSS Selector Engine - v0.9.3 14150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * Copyright 2009, The Dojo Foundation 14160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * Released under the MIT, BSD, and GPL Licenses. 14170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * More information: http://sizzlejs.com/ 14180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch */ 14190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch(function(){ 14200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 14210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvar chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g, 14220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch done = 0, 14230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch toString = Object.prototype.toString; 14240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 14250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvar Sizzle = function(selector, context, results, seed) { 14260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch results = results || []; 14270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch context = context || document; 14280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 14290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( context.nodeType !== 1 && context.nodeType !== 9 ) 14300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return []; 14310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 14320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !selector || typeof selector !== "string" ) { 14330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return results; 14340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 14350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 14360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var parts = [], m, set, checkSet, check, mode, extra, prune = true; 14370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 14380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Reset the position of the chunker regexp (start from head) 14390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch chunker.lastIndex = 0; 14400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 14410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch while ( (m = chunker.exec(selector)) !== null ) { 14420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch parts.push( m[1] ); 14430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 14440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( m[2] ) { 14450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch extra = RegExp.rightContext; 14460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch break; 14470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 14480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 14490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 14500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( parts.length > 1 && origPOS.exec( selector ) ) { 14510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { 14520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch set = posProcess( parts[0] + parts[1], context ); 14530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } else { 14540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch set = Expr.relative[ parts[0] ] ? 14550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch [ context ] : 14560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Sizzle( parts.shift(), context ); 14570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 14580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch while ( parts.length ) { 14590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch selector = parts.shift(); 14600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 14610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( Expr.relative[ selector ] ) 14620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch selector += parts.shift(); 14630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 14640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch set = posProcess( selector, set ); 14650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 14660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 14670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } else { 14680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var ret = seed ? 14690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch { expr: parts.pop(), set: makeArray(seed) } : 14700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Sizzle.find( parts.pop(), parts.length === 1 && context.parentNode ? context.parentNode : context, isXML(context) ); 14710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch set = Sizzle.filter( ret.expr, ret.set ); 14720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 14730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( parts.length > 0 ) { 14740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch checkSet = makeArray(set); 14750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } else { 14760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch prune = false; 14770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 14780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 14790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch while ( parts.length ) { 14800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var cur = parts.pop(), pop = cur; 14810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 14820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !Expr.relative[ cur ] ) { 14830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch cur = ""; 14840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } else { 14850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch pop = parts.pop(); 14860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 14870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 14880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( pop == null ) { 14890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch pop = context; 14900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 14910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 14920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Expr.relative[ cur ]( checkSet, pop, isXML(context) ); 14930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 14940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 14950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 14960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !checkSet ) { 14970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch checkSet = set; 14980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 14990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 15000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !checkSet ) { 15010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch throw "Syntax error, unrecognized expression: " + (cur || selector); 15020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 15030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 15040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( toString.call(checkSet) === "[object Array]" ) { 15050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !prune ) { 15060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch results.push.apply( results, checkSet ); 15070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } else if ( context.nodeType === 1 ) { 15080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( var i = 0; checkSet[i] != null; i++ ) { 15090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) { 15100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch results.push( set[i] ); 15110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 15120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 15130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } else { 15140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( var i = 0; checkSet[i] != null; i++ ) { 15150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( checkSet[i] && checkSet[i].nodeType === 1 ) { 15160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch results.push( set[i] ); 15170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 15180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 15190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 15200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } else { 15210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch makeArray( checkSet, results ); 15220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 15230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 15240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( extra ) { 15250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Sizzle( extra, context, results, seed ); 15260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 15270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( sortOrder ) { 15280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch hasDuplicate = false; 15290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch results.sort(sortOrder); 15300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 15310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( hasDuplicate ) { 15320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( var i = 1; i < results.length; i++ ) { 15330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( results[i] === results[i-1] ) { 15340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch results.splice(i--, 1); 15350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 15360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 15370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 15380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 15390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 15400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 15410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return results; 15420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}; 15430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 15440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochSizzle.matches = function(expr, set){ 15450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return Sizzle(expr, null, null, set); 15460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}; 15470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 15480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochSizzle.find = function(expr, context, isXML){ 15490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var set, match; 15500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 15510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !expr ) { 15520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return []; 15530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 15540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 15550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( var i = 0, l = Expr.order.length; i < l; i++ ) { 15560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var type = Expr.order[i], match; 15570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 15580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( (match = Expr.match[ type ].exec( expr )) ) { 15590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var left = RegExp.leftContext; 15600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 15610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( left.substr( left.length - 1 ) !== "\\" ) { 15620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch match[1] = (match[1] || "").replace(/\\/g, ""); 15630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch set = Expr.find[ type ]( match, context, isXML ); 15640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( set != null ) { 15650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch expr = expr.replace( Expr.match[ type ], "" ); 15660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch break; 15670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 15680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 15690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 15700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 15710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 15720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !set ) { 15730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch set = context.getElementsByTagName("*"); 15740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 15750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 15760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return {set: set, expr: expr}; 15770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}; 15780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 15790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochSizzle.filter = function(expr, set, inplace, not){ 15800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var old = expr, result = [], curLoop = set, match, anyFound, 15810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch isXMLFilter = set && set[0] && isXML(set[0]); 15820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 15830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch while ( expr && set.length ) { 15840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( var type in Expr.filter ) { 15850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( (match = Expr.match[ type ].exec( expr )) != null ) { 15860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var filter = Expr.filter[ type ], found, item; 15870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch anyFound = false; 15880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 15890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( curLoop == result ) { 15900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch result = []; 15910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 15920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 15930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( Expr.preFilter[ type ] ) { 15940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); 15950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 15960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !match ) { 15970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch anyFound = found = true; 15980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } else if ( match === true ) { 15990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch continue; 16000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 16010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 16020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 16030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( match ) { 16040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( var i = 0; (item = curLoop[i]) != null; i++ ) { 16050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( item ) { 16060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch found = filter( item, match, i, curLoop ); 16070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var pass = not ^ !!found; 16080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 16090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( inplace && found != null ) { 16100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( pass ) { 16110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch anyFound = true; 16120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } else { 16130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch curLoop[i] = false; 16140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 16150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } else if ( pass ) { 16160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch result.push( item ); 16170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch anyFound = true; 16180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 16190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 16200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 16210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 16220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 16230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( found !== undefined ) { 16240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !inplace ) { 16250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch curLoop = result; 16260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 16270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 16280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch expr = expr.replace( Expr.match[ type ], "" ); 16290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 16300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !anyFound ) { 16310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return []; 16320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 16330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 16340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch break; 16350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 16360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 16370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 16380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 16390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Improper expression 16400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( expr == old ) { 16410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( anyFound == null ) { 16420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch throw "Syntax error, unrecognized expression: " + expr; 16430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } else { 16440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch break; 16450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 16460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 16470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 16480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch old = expr; 16490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 16500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 16510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return curLoop; 16520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}; 16530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 16540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvar Expr = Sizzle.selectors = { 16550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch order: [ "ID", "NAME", "TAG" ], 16560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch match: { 16570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ID: /#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/, 16580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch CLASS: /\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/, 16590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/, 16600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ATTR: /\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/, 16610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch TAG: /^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/, 16620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/, 16630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/, 16640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch PSEUDO: /:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/ 16650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 16660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch attrMap: { 16670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "class": "className", 16680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "for": "htmlFor" 16690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 16700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch attrHandle: { 16710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch href: function(elem){ 16720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return elem.getAttribute("href"); 16730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 16740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 16750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch relative: { 16760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "+": function(checkSet, part, isXML){ 16770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var isPartStr = typeof part === "string", 16780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch isTag = isPartStr && !/\W/.test(part), 16790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch isPartStrNotTag = isPartStr && !isTag; 16800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 16810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( isTag && !isXML ) { 16820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch part = part.toUpperCase(); 16830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 16840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 16850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { 16860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( (elem = checkSet[i]) ) { 16870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} 16880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 16890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch checkSet[i] = isPartStrNotTag || elem && elem.nodeName === part ? 16900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem || false : 16910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem === part; 16920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 16930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 16940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 16950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( isPartStrNotTag ) { 16960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Sizzle.filter( part, checkSet, true ); 16970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 16980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 16990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ">": function(checkSet, part, isXML){ 17000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var isPartStr = typeof part === "string"; 17010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 17020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( isPartStr && !/\W/.test(part) ) { 17030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch part = isXML ? part : part.toUpperCase(); 17040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 17050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( var i = 0, l = checkSet.length; i < l; i++ ) { 17060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var elem = checkSet[i]; 17070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( elem ) { 17080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var parent = elem.parentNode; 17090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch checkSet[i] = parent.nodeName === part ? parent : false; 17100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 17110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 17120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } else { 17130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( var i = 0, l = checkSet.length; i < l; i++ ) { 17140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var elem = checkSet[i]; 17150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( elem ) { 17160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch checkSet[i] = isPartStr ? 17170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem.parentNode : 17180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem.parentNode === part; 17190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 17200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 17210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 17220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( isPartStr ) { 17230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Sizzle.filter( part, checkSet, true ); 17240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 17250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 17260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 17270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "": function(checkSet, part, isXML){ 17280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var doneName = done++, checkFn = dirCheck; 17290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 17300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !part.match(/\W/) ) { 17310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var nodeCheck = part = isXML ? part : part.toUpperCase(); 17320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch checkFn = dirNodeCheck; 17330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 17340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 17350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML); 17360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 17370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "~": function(checkSet, part, isXML){ 17380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var doneName = done++, checkFn = dirCheck; 17390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 17400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( typeof part === "string" && !part.match(/\W/) ) { 17410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var nodeCheck = part = isXML ? part : part.toUpperCase(); 17420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch checkFn = dirNodeCheck; 17430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 17440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 17450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML); 17460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 17470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 17480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch find: { 17490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ID: function(match, context, isXML){ 17500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( typeof context.getElementById !== "undefined" && !isXML ) { 17510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var m = context.getElementById(match[1]); 17520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return m ? [m] : []; 17530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 17540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 17550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch NAME: function(match, context, isXML){ 17560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( typeof context.getElementsByName !== "undefined" ) { 17570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var ret = [], results = context.getElementsByName(match[1]); 17580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 17590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( var i = 0, l = results.length; i < l; i++ ) { 17600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( results[i].getAttribute("name") === match[1] ) { 17610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ret.push( results[i] ); 17620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 17630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 17640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 17650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return ret.length === 0 ? null : ret; 17660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 17670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 17680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch TAG: function(match, context){ 17690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return context.getElementsByTagName(match[1]); 17700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 17710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 17720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch preFilter: { 17730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch CLASS: function(match, curLoop, inplace, result, not, isXML){ 17740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch match = " " + match[1].replace(/\\/g, "") + " "; 17750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 17760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( isXML ) { 17770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return match; 17780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 17790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 17800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { 17810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( elem ) { 17820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( not ^ (elem.className && (" " + elem.className + " ").indexOf(match) >= 0) ) { 17830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !inplace ) 17840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch result.push( elem ); 17850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } else if ( inplace ) { 17860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch curLoop[i] = false; 17870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 17880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 17890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 17900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 17910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return false; 17920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 17930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ID: function(match){ 17940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return match[1].replace(/\\/g, ""); 17950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 17960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch TAG: function(match, curLoop){ 17970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( var i = 0; curLoop[i] === false; i++ ){} 17980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase(); 17990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 18000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch CHILD: function(match){ 18010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( match[1] == "nth" ) { 18020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6' 18030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec( 18040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" || 18050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); 18060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 18070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // calculate the numbers (first)n+(last) including if they are negative 18080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch match[2] = (test[1] + (test[2] || 1)) - 0; 18090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch match[3] = test[3] - 0; 18100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 18110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 18120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // TODO: Move to normal caching system 18130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch match[0] = done++; 18140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 18150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return match; 18160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 18170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ATTR: function(match, curLoop, inplace, result, not, isXML){ 18180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var name = match[1].replace(/\\/g, ""); 18190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 18200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !isXML && Expr.attrMap[name] ) { 18210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch match[1] = Expr.attrMap[name]; 18220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 18230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 18240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( match[2] === "~=" ) { 18250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch match[4] = " " + match[4] + " "; 18260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 18270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 18280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return match; 18290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 18300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch PSEUDO: function(match, curLoop, inplace, result, not){ 18310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( match[1] === "not" ) { 18320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // If we're dealing with a complex expression, or a simple one 18330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( match[3].match(chunker).length > 1 || /^\w/.test(match[3]) ) { 18340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch match[3] = Sizzle(match[3], null, null, curLoop); 18350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } else { 18360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); 18370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !inplace ) { 18380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch result.push.apply( result, ret ); 18390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 18400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return false; 18410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 18420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { 18430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return true; 18440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 18450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 18460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return match; 18470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 18480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch POS: function(match){ 18490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch match.unshift( true ); 18500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return match; 18510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 18520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 18530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch filters: { 18540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch enabled: function(elem){ 18550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return elem.disabled === false && elem.type !== "hidden"; 18560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 18570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch disabled: function(elem){ 18580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return elem.disabled === true; 18590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 18600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch checked: function(elem){ 18610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return elem.checked === true; 18620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 18630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch selected: function(elem){ 18640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Accessing this property makes selected-by-default 18650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // options in Safari work properly 18660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem.parentNode.selectedIndex; 18670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return elem.selected === true; 18680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 18690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch parent: function(elem){ 18700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return !!elem.firstChild; 18710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 18720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch empty: function(elem){ 18730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return !elem.firstChild; 18740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 18750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch has: function(elem, i, match){ 18760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return !!Sizzle( match[3], elem ).length; 18770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 18780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch header: function(elem){ 18790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return /h\d/i.test( elem.nodeName ); 18800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 18810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch text: function(elem){ 18820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return "text" === elem.type; 18830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 18840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch radio: function(elem){ 18850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return "radio" === elem.type; 18860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 18870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch checkbox: function(elem){ 18880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return "checkbox" === elem.type; 18890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 18900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch file: function(elem){ 18910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return "file" === elem.type; 18920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 18930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch password: function(elem){ 18940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return "password" === elem.type; 18950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 18960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch submit: function(elem){ 18970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return "submit" === elem.type; 18980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 18990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch image: function(elem){ 19000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return "image" === elem.type; 19010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 19020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch reset: function(elem){ 19030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return "reset" === elem.type; 19040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 19050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch button: function(elem){ 19060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON"; 19070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 19080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch input: function(elem){ 19090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return /input|select|textarea|button/i.test(elem.nodeName); 19100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 19110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 19120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch setFilters: { 19130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch first: function(elem, i){ 19140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return i === 0; 19150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 19160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch last: function(elem, i, match, array){ 19170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return i === array.length - 1; 19180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 19190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch even: function(elem, i){ 19200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return i % 2 === 0; 19210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 19220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch odd: function(elem, i){ 19230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return i % 2 === 1; 19240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 19250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch lt: function(elem, i, match){ 19260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return i < match[3] - 0; 19270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 19280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch gt: function(elem, i, match){ 19290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return i > match[3] - 0; 19300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 19310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch nth: function(elem, i, match){ 19320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return match[3] - 0 == i; 19330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 19340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch eq: function(elem, i, match){ 19350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return match[3] - 0 == i; 19360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 19370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 19380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch filter: { 19390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch PSEUDO: function(elem, match, i, array){ 19400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var name = match[1], filter = Expr.filters[ name ]; 19410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 19420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( filter ) { 19430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return filter( elem, i, match, array ); 19440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } else if ( name === "contains" ) { 19450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0; 19460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } else if ( name === "not" ) { 19470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var not = match[3]; 19480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 19490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( var i = 0, l = not.length; i < l; i++ ) { 19500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( not[i] === elem ) { 19510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return false; 19520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 19530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 19540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 19550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return true; 19560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 19570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 19580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch CHILD: function(elem, match){ 19590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var type = match[1], node = elem; 19600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch switch (type) { 19610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch case 'only': 19620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch case 'first': 19630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch while (node = node.previousSibling) { 19640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( node.nodeType === 1 ) return false; 19650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 19660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( type == 'first') return true; 19670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch node = elem; 19680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch case 'last': 19690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch while (node = node.nextSibling) { 19700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( node.nodeType === 1 ) return false; 19710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 19720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return true; 19730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch case 'nth': 19740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var first = match[2], last = match[3]; 19750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 19760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( first == 1 && last == 0 ) { 19770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return true; 19780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 19790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 19800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var doneName = match[0], 19810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch parent = elem.parentNode; 19820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 19830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) { 19840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var count = 0; 19850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( node = parent.firstChild; node; node = node.nextSibling ) { 19860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( node.nodeType === 1 ) { 19870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch node.nodeIndex = ++count; 19880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 19890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 19900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch parent.sizcache = doneName; 19910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 19920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 19930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var diff = elem.nodeIndex - last; 19940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( first == 0 ) { 19950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return diff == 0; 19960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } else { 19970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return ( diff % first == 0 && diff / first >= 0 ); 19980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 19990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 20000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 20010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ID: function(elem, match){ 20020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return elem.nodeType === 1 && elem.getAttribute("id") === match; 20030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 20040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch TAG: function(elem, match){ 20050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return (match === "*" && elem.nodeType === 1) || elem.nodeName === match; 20060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 20070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch CLASS: function(elem, match){ 20080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return (" " + (elem.className || elem.getAttribute("class")) + " ") 20090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch .indexOf( match ) > -1; 20100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 20110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ATTR: function(elem, match){ 20120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var name = match[1], 20130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch result = Expr.attrHandle[ name ] ? 20140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Expr.attrHandle[ name ]( elem ) : 20150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem[ name ] != null ? 20160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem[ name ] : 20170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem.getAttribute( name ), 20180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch value = result + "", 20190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch type = match[2], 20200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch check = match[4]; 20210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 20220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return result == null ? 20230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch type === "!=" : 20240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch type === "=" ? 20250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch value === check : 20260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch type === "*=" ? 20270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch value.indexOf(check) >= 0 : 20280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch type === "~=" ? 20290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch (" " + value + " ").indexOf(check) >= 0 : 20300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch !check ? 20310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch value && result !== false : 20320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch type === "!=" ? 20330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch value != check : 20340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch type === "^=" ? 20350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch value.indexOf(check) === 0 : 20360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch type === "$=" ? 20370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch value.substr(value.length - check.length) === check : 20380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch type === "|=" ? 20390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch value === check || value.substr(0, check.length + 1) === check + "-" : 20400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch false; 20410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 20420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch POS: function(elem, match, i, array){ 20430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var name = match[2], filter = Expr.setFilters[ name ]; 20440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 20450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( filter ) { 20460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return filter( elem, i, match, array ); 20470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 20480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 20490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 20500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}; 20510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 20520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvar origPOS = Expr.match.POS; 20530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 20540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochfor ( var type in Expr.match ) { 20550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Expr.match[ type ] = RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source ); 20560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 20570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 20580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvar makeArray = function(array, results) { 20590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch array = Array.prototype.slice.call( array ); 20600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 20610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( results ) { 20620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch results.push.apply( results, array ); 20630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return results; 20640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 20650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 20660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return array; 20670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}; 20680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 20690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch// Perform a simple check to determine if the browser is capable of 20700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch// converting a NodeList to an array using builtin methods. 20710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochtry { 20720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Array.prototype.slice.call( document.documentElement.childNodes ); 20730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 20740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch// Provide a fallback method if it does not work 20750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} catch(e){ 20760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch makeArray = function(array, results) { 20770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var ret = results || []; 20780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 20790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( toString.call(array) === "[object Array]" ) { 20800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Array.prototype.push.apply( ret, array ); 20810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } else { 20820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( typeof array.length === "number" ) { 20830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( var i = 0, l = array.length; i < l; i++ ) { 20840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ret.push( array[i] ); 20850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 20860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } else { 20870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( var i = 0; array[i]; i++ ) { 20880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ret.push( array[i] ); 20890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 20900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 20910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 20920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 20930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return ret; 20940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }; 20950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 20960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 20970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvar sortOrder; 20980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 20990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochif ( document.documentElement.compareDocumentPosition ) { 21000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch sortOrder = function( a, b ) { 21010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1; 21020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( ret === 0 ) { 21030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch hasDuplicate = true; 21040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 21050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return ret; 21060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }; 21070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} else if ( "sourceIndex" in document.documentElement ) { 21080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch sortOrder = function( a, b ) { 21090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var ret = a.sourceIndex - b.sourceIndex; 21100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( ret === 0 ) { 21110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch hasDuplicate = true; 21120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 21130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return ret; 21140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }; 21150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} else if ( document.createRange ) { 21160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch sortOrder = function( a, b ) { 21170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange(); 21180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch aRange.selectNode(a); 21190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch aRange.collapse(true); 21200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch bRange.selectNode(b); 21210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch bRange.collapse(true); 21220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange); 21230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( ret === 0 ) { 21240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch hasDuplicate = true; 21250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 21260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return ret; 21270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }; 21280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 21290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 21300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch// Check to see if the browser returns elements by name when 21310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch// querying by getElementById (and provide a workaround) 21320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch(function(){ 21330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // We're going to inject a fake input element with a specified name 21340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var form = document.createElement("form"), 21350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch id = "script" + (new Date).getTime(); 21360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch form.innerHTML = "<input name='" + id + "'/>"; 21370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 21380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Inject it into the root element, check its status, and remove it quickly 21390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var root = document.documentElement; 21400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch root.insertBefore( form, root.firstChild ); 21410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 21420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // The workaround has to do additional checks after a getElementById 21430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Which slows things down for other browsers (hence the branching) 21440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !!document.getElementById( id ) ) { 21450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Expr.find.ID = function(match, context, isXML){ 21460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( typeof context.getElementById !== "undefined" && !isXML ) { 21470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var m = context.getElementById(match[1]); 21480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : []; 21490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 21500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }; 21510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 21520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Expr.filter.ID = function(elem, match){ 21530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); 21540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return elem.nodeType === 1 && node && node.nodeValue === match; 21550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }; 21560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 21570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 21580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch root.removeChild( form ); 21590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch})(); 21600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 21610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch(function(){ 21620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Check to see if the browser returns only elements 21630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // when doing getElementsByTagName("*") 21640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 21650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Create a fake element 21660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var div = document.createElement("div"); 21670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch div.appendChild( document.createComment("") ); 21680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 21690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Make sure no comments are found 21700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( div.getElementsByTagName("*").length > 0 ) { 21710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Expr.find.TAG = function(match, context){ 21720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var results = context.getElementsByTagName(match[1]); 21730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 21740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Filter out possible comments 21750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( match[1] === "*" ) { 21760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var tmp = []; 21770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 21780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( var i = 0; results[i]; i++ ) { 21790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( results[i].nodeType === 1 ) { 21800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch tmp.push( results[i] ); 21810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 21820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 21830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 21840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch results = tmp; 21850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 21860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 21870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return results; 21880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }; 21890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 21900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 21910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Check to see if an attribute returns normalized href attributes 21920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch div.innerHTML = "<a href='#'></a>"; 21930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && 21940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch div.firstChild.getAttribute("href") !== "#" ) { 21950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Expr.attrHandle.href = function(elem){ 21960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return elem.getAttribute("href", 2); 21970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }; 21980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 21990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch})(); 22000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 22010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochif ( document.querySelectorAll ) (function(){ 22020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var oldSizzle = Sizzle, div = document.createElement("div"); 22030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch div.innerHTML = "<p class='TEST'></p>"; 22040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 22050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Safari can't handle uppercase or unicode characters when 22060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // in quirks mode. 22070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { 22080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return; 22090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 22100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 22110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Sizzle = function(query, context, extra, seed){ 22120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch context = context || document; 22130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 22140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Only use querySelectorAll on non-XML documents 22150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // (ID selectors don't work in non-HTML documents) 22160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !seed && context.nodeType === 9 && !isXML(context) ) { 22170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch try { 22180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return makeArray( context.querySelectorAll(query), extra ); 22190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } catch(e){} 22200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 22210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 22220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return oldSizzle(query, context, extra, seed); 22230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }; 22240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 22250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Sizzle.find = oldSizzle.find; 22260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Sizzle.filter = oldSizzle.filter; 22270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Sizzle.selectors = oldSizzle.selectors; 22280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Sizzle.matches = oldSizzle.matches; 22290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch})(); 22300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 22310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochif ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){ 22320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var div = document.createElement("div"); 22330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch div.innerHTML = "<div class='test e'></div><div class='test'></div>"; 22340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 22350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Opera can't find a second classname (in 9.6) 22360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( div.getElementsByClassName("e").length === 0 ) 22370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return; 22380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 22390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Safari caches class attributes, doesn't catch changes (in 3.2) 22400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch div.lastChild.className = "e"; 22410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 22420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( div.getElementsByClassName("e").length === 1 ) 22430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return; 22440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 22450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Expr.order.splice(1, 0, "CLASS"); 22460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Expr.find.CLASS = function(match, context, isXML) { 22470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { 22480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return context.getElementsByClassName(match[1]); 22490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 22500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }; 22510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch})(); 22520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 22530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochfunction dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { 22540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var sibDir = dir == "previousSibling" && !isXML; 22550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( var i = 0, l = checkSet.length; i < l; i++ ) { 22560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var elem = checkSet[i]; 22570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( elem ) { 22580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( sibDir && elem.nodeType === 1 ){ 22590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem.sizcache = doneName; 22600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem.sizset = i; 22610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 22620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem = elem[dir]; 22630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var match = false; 22640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 22650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch while ( elem ) { 22660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( elem.sizcache === doneName ) { 22670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch match = checkSet[elem.sizset]; 22680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch break; 22690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 22700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 22710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( elem.nodeType === 1 && !isXML ){ 22720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem.sizcache = doneName; 22730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem.sizset = i; 22740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 22750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 22760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( elem.nodeName === cur ) { 22770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch match = elem; 22780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch break; 22790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 22800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 22810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem = elem[dir]; 22820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 22830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 22840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch checkSet[i] = match; 22850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 22860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 22870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 22880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 22890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochfunction dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { 22900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var sibDir = dir == "previousSibling" && !isXML; 22910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( var i = 0, l = checkSet.length; i < l; i++ ) { 22920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var elem = checkSet[i]; 22930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( elem ) { 22940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( sibDir && elem.nodeType === 1 ) { 22950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem.sizcache = doneName; 22960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem.sizset = i; 22970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 22980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem = elem[dir]; 22990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var match = false; 23000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 23010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch while ( elem ) { 23020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( elem.sizcache === doneName ) { 23030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch match = checkSet[elem.sizset]; 23040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch break; 23050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 23060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 23070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( elem.nodeType === 1 ) { 23080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !isXML ) { 23090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem.sizcache = doneName; 23100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem.sizset = i; 23110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 23120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( typeof cur !== "string" ) { 23130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( elem === cur ) { 23140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch match = true; 23150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch break; 23160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 23170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 23180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { 23190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch match = elem; 23200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch break; 23210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 23220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 23230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 23240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem = elem[dir]; 23250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 23260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 23270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch checkSet[i] = match; 23280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 23290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 23300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 23310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 23320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvar contains = document.compareDocumentPosition ? function(a, b){ 23330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return a.compareDocumentPosition(b) & 16; 23340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} : function(a, b){ 23350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return a !== b && (a.contains ? a.contains(b) : true); 23360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}; 23370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 23380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvar isXML = function(elem){ 23390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" || 23400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch !!elem.ownerDocument && isXML( elem.ownerDocument ); 23410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}; 23420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 23430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvar posProcess = function(selector, context){ 23440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var tmpSet = [], later = "", match, 23450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch root = context.nodeType ? [context] : context; 23460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 23470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Position selectors must be done after the filter 23480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // And so must :not(positional) so we move all PSEUDOs to the end 23490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch while ( (match = Expr.match.PSEUDO.exec( selector )) ) { 23500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch later += match[0]; 23510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch selector = selector.replace( Expr.match.PSEUDO, "" ); 23520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 23530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 23540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch selector = Expr.relative[selector] ? selector + "*" : selector; 23550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 23560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( var i = 0, l = root.length; i < l; i++ ) { 23570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Sizzle( selector, root[i], tmpSet ); 23580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 23590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 23600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return Sizzle.filter( later, tmpSet ); 23610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}; 23620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 23630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch// EXPOSE 23640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochjQuery.find = Sizzle; 23650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochjQuery.filter = Sizzle.filter; 23660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochjQuery.expr = Sizzle.selectors; 23670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochjQuery.expr[":"] = jQuery.expr.filters; 23680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 23690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochSizzle.selectors.filters.hidden = function(elem){ 23700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return elem.offsetWidth === 0 || elem.offsetHeight === 0; 23710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}; 23720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 23730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochSizzle.selectors.filters.visible = function(elem){ 23740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return elem.offsetWidth > 0 || elem.offsetHeight > 0; 23750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}; 23760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 23770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochSizzle.selectors.filters.animated = function(elem){ 23780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return jQuery.grep(jQuery.timers, function(fn){ 23790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return elem === fn.elem; 23800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }).length; 23810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}; 23820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 23830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochjQuery.multiFilter = function( expr, elems, not ) { 23840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( not ) { 23850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch expr = ":not(" + expr + ")"; 23860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 23870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 23880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return Sizzle.matches(expr, elems); 23890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}; 23900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 23910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochjQuery.dir = function( elem, dir ){ 23920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var matched = [], cur = elem[dir]; 23930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch while ( cur && cur != document ) { 23940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( cur.nodeType == 1 ) 23950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch matched.push( cur ); 23960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch cur = cur[dir]; 23970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 23980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return matched; 23990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}; 24000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 24010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochjQuery.nth = function(cur, result, dir, elem){ 24020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch result = result || 1; 24030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var num = 0; 24040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 24050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( ; cur; cur = cur[dir] ) 24060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( cur.nodeType == 1 && ++num == result ) 24070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch break; 24080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 24090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return cur; 24100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}; 24110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 24120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochjQuery.sibling = function(n, elem){ 24130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var r = []; 24140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 24150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( ; n; n = n.nextSibling ) { 24160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( n.nodeType == 1 && n != elem ) 24170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch r.push( n ); 24180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 24190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 24200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return r; 24210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}; 24220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 24230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochreturn; 24240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 24250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochwindow.Sizzle = Sizzle; 24260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 24270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch})(); 24280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch/* 24290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * A number of helper functions used for managing events. 24300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * Many of the ideas behind this code originated from 24310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * Dean Edwards' addEvent library. 24320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch */ 24330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochjQuery.event = { 24340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 24350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Bind an event to an element 24360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Original by Dean Edwards 24370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch add: function(elem, types, handler, data) { 24380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( elem.nodeType == 3 || elem.nodeType == 8 ) 24390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return; 24400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 24410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // For whatever reason, IE has trouble passing the window object 24420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // around, causing it to be cloned in the process 24430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( elem.setInterval && elem != window ) 24440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem = window; 24450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 24460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Make sure that the function being executed has a unique ID 24470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !handler.guid ) 24480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch handler.guid = this.guid++; 24490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 24500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // if data is passed, bind to handler 24510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( data !== undefined ) { 24520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Create temporary function pointer to original handler 24530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var fn = handler; 24540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 24550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Create unique handler function, wrapped around original handler 24560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch handler = this.proxy( fn ); 24570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 24580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Store data in unique handler 24590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch handler.data = data; 24600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 24610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 24620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Init the element's event structure 24630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var events = jQuery.data(elem, "events") || jQuery.data(elem, "events", {}), 24640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch handle = jQuery.data(elem, "handle") || jQuery.data(elem, "handle", function(){ 24650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Handle the second event of a trigger and when 24660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // an event is called after a page has unloaded 24670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return typeof jQuery !== "undefined" && !jQuery.event.triggered ? 24680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.event.handle.apply(arguments.callee.elem, arguments) : 24690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch undefined; 24700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 24710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Add elem as a property of the handle function 24720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // This is to prevent a memory leak with non-native 24730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // event in IE. 24740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch handle.elem = elem; 24750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 24760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Handle multiple events separated by a space 24770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // jQuery(...).bind("mouseover mouseout", fn); 24780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.each(types.split(/\s+/), function(index, type) { 24790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Namespaced event handlers 24800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var namespaces = type.split("."); 24810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch type = namespaces.shift(); 24820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch handler.type = namespaces.slice().sort().join("."); 24830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 24840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Get the current list of functions bound to this event 24850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var handlers = events[type]; 24860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 24870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( jQuery.event.specialAll[type] ) 24880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.event.specialAll[type].setup.call(elem, data, namespaces); 24890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 24900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Init the event handler queue 24910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (!handlers) { 24920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch handlers = events[type] = {}; 24930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 24940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Check for a special event handler 24950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Only use addEventListener/attachEvent if the special 24960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // events handler returns false 24970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !jQuery.event.special[type] || jQuery.event.special[type].setup.call(elem, data, namespaces) === false ) { 24980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Bind the global event handler to the element 24990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (elem.addEventListener) 25000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem.addEventListener(type, handle, false); 25010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch else if (elem.attachEvent) 25020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem.attachEvent("on" + type, handle); 25030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 25040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 25050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 25060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Add the function to the element's handler list 25070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch handlers[handler.guid] = handler; 25080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 25090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Keep track of which events have been used, for global triggering 25100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.event.global[type] = true; 25110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 25120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 25130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Nullify elem to prevent memory leaks in IE 25140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem = null; 25150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 25160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 25170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch guid: 1, 25180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch global: {}, 25190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 25200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Detach an event or set of events from an element 25210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch remove: function(elem, types, handler) { 25220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // don't do events on text and comment nodes 25230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( elem.nodeType == 3 || elem.nodeType == 8 ) 25240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return; 25250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 25260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var events = jQuery.data(elem, "events"), ret, index; 25270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 25280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( events ) { 25290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Unbind all events for the element 25300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( types === undefined || (typeof types === "string" && types.charAt(0) == ".") ) 25310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( var type in events ) 25320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.remove( elem, type + (types || "") ); 25330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch else { 25340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // types is actually an event object here 25350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( types.type ) { 25360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch handler = types.handler; 25370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch types = types.type; 25380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 25390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 25400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Handle multiple events seperated by a space 25410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // jQuery(...).unbind("mouseover mouseout", fn); 25420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.each(types.split(/\s+/), function(index, type){ 25430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Namespaced event handlers 25440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var namespaces = type.split("."); 25450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch type = namespaces.shift(); 25460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var namespace = RegExp("(^|\\.)" + namespaces.slice().sort().join(".*\\.") + "(\\.|$)"); 25470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 25480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( events[type] ) { 25490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // remove the given handler for the given type 25500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( handler ) 25510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch delete events[type][handler.guid]; 25520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 25530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // remove all handlers for the given type 25540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch else 25550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( var handle in events[type] ) 25560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Handle the removal of namespaced events 25570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( namespace.test(events[type][handle].type) ) 25580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch delete events[type][handle]; 25590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 25600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( jQuery.event.specialAll[type] ) 25610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.event.specialAll[type].teardown.call(elem, namespaces); 25620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 25630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // remove generic event handler if no more handlers exist 25640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( ret in events[type] ) break; 25650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !ret ) { 25660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !jQuery.event.special[type] || jQuery.event.special[type].teardown.call(elem, namespaces) === false ) { 25670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (elem.removeEventListener) 25680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem.removeEventListener(type, jQuery.data(elem, "handle"), false); 25690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch else if (elem.detachEvent) 25700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem.detachEvent("on" + type, jQuery.data(elem, "handle")); 25710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 25720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ret = null; 25730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch delete events[type]; 25740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 25750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 25760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 25770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 25780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 25790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Remove the expando if it's no longer used 25800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( ret in events ) break; 25810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !ret ) { 25820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var handle = jQuery.data( elem, "handle" ); 25830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( handle ) handle.elem = null; 25840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.removeData( elem, "events" ); 25850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.removeData( elem, "handle" ); 25860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 25870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 25880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 25890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 25900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // bubbling is internal 25910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch trigger: function( event, data, elem, bubbling ) { 25920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Event object or event type 25930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var type = event.type || event; 25940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 25950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if( !bubbling ){ 25960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch event = typeof event === "object" ? 25970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // jQuery.Event object 25980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch event[expando] ? event : 25990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Object literal 26000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.extend( jQuery.Event(type), event ) : 26010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Just the event type (string) 26020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.Event(type); 26030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 26040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( type.indexOf("!") >= 0 ) { 26050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch event.type = type = type.slice(0, -1); 26060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch event.exclusive = true; 26070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 26080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 26090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Handle a global trigger 26100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !elem ) { 26110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Don't bubble custom events when global (to avoid too much overhead) 26120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch event.stopPropagation(); 26130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Only trigger if we've ever bound an event for it 26140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( this.global[type] ) 26150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.each( jQuery.cache, function(){ 26160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( this.events && this.events[type] ) 26170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.event.trigger( event, data, this.handle.elem ); 26180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 26190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 26200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 26210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Handle triggering a single element 26220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 26230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // don't do events on text and comment nodes 26240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !elem || elem.nodeType == 3 || elem.nodeType == 8 ) 26250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return undefined; 26260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 26270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Clean up in case it is reused 26280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch event.result = undefined; 26290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch event.target = elem; 26300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 26310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Clone the incoming data, if any 26320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch data = jQuery.makeArray(data); 26330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch data.unshift( event ); 26340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 26350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 26360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch event.currentTarget = elem; 26370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 26380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Trigger the event, it is assumed that "handle" is a function 26390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var handle = jQuery.data(elem, "handle"); 26400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( handle ) 26410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch handle.apply( elem, data ); 26420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 26430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Handle triggering native .onfoo handlers (and on links since we don't call .click() for links) 26440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( (!elem[type] || (jQuery.nodeName(elem, 'a') && type == "click")) && elem["on"+type] && elem["on"+type].apply( elem, data ) === false ) 26450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch event.result = false; 26460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 26470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Trigger the native events (except for clicks on links) 26480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !bubbling && elem[type] && !event.isDefaultPrevented() && !(jQuery.nodeName(elem, 'a') && type == "click") ) { 26490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.triggered = true; 26500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch try { 26510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem[ type ](); 26520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // prevent IE from throwing an error for some hidden elements 26530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } catch (e) {} 26540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 26550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 26560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.triggered = false; 26570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 26580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !event.isPropagationStopped() ) { 26590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var parent = elem.parentNode || elem.ownerDocument; 26600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( parent ) 26610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.event.trigger(event, data, parent, true); 26620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 26630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 26640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 26650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch handle: function(event) { 26660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // returned undefined or false 26670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var all, handlers; 26680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 26690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch event = arguments[0] = jQuery.event.fix( event || window.event ); 26700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch event.currentTarget = this; 26710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 26720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Namespaced event handlers 26730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var namespaces = event.type.split("."); 26740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch event.type = namespaces.shift(); 26750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 26760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Cache this now, all = true means, any handler 26770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch all = !namespaces.length && !event.exclusive; 26780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 26790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var namespace = RegExp("(^|\\.)" + namespaces.slice().sort().join(".*\\.") + "(\\.|$)"); 26800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 26810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch handlers = ( jQuery.data(this, "events") || {} )[event.type]; 26820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 26830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( var j in handlers ) { 26840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var handler = handlers[j]; 26850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 26860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Filter the functions by class 26870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( all || namespace.test(handler.type) ) { 26880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Pass in a reference to the handler function itself 26890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // So that we can later remove it 26900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch event.handler = handler; 26910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch event.data = handler.data; 26920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 26930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var ret = handler.apply(this, arguments); 26940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 26950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if( ret !== undefined ){ 26960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch event.result = ret; 26970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( ret === false ) { 26980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch event.preventDefault(); 26990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch event.stopPropagation(); 27000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 27010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 27020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 27030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if( event.isImmediatePropagationStopped() ) 27040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch break; 27050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 27060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 27070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 27080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 27090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 27100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "), 27110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 27120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch fix: function(event) { 27130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( event[expando] ) 27140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return event; 27150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 27160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // store a copy of the original event object 27170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // and "clone" to set read-only properties 27180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var originalEvent = event; 27190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch event = jQuery.Event( originalEvent ); 27200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 27210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( var i = this.props.length, prop; i; ){ 27220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch prop = this.props[ --i ]; 27230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch event[ prop ] = originalEvent[ prop ]; 27240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 27250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 27260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Fix target property, if necessary 27270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !event.target ) 27280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch event.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either 27290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 27300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // check if target is a textnode (safari) 27310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( event.target.nodeType == 3 ) 27320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch event.target = event.target.parentNode; 27330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 27340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Add relatedTarget, if necessary 27350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !event.relatedTarget && event.fromElement ) 27360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch event.relatedTarget = event.fromElement == event.target ? event.toElement : event.fromElement; 27370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 27380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Calculate pageX/Y if missing and clientX/Y available 27390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( event.pageX == null && event.clientX != null ) { 27400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var doc = document.documentElement, body = document.body; 27410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc.clientLeft || 0); 27420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc.clientTop || 0); 27430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 27440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 27450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Add which for key events 27460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) ) 27470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch event.which = event.charCode || event.keyCode; 27480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 27490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs) 27500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !event.metaKey && event.ctrlKey ) 27510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch event.metaKey = event.ctrlKey; 27520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 27530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Add which for click: 1 == left; 2 == middle; 3 == right 27540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Note: button is not normalized, so don't use it 27550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !event.which && event.button ) 27560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) )); 27570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 27580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return event; 27590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 27600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 27610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch proxy: function( fn, proxy ){ 27620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch proxy = proxy || function(){ return fn.apply(this, arguments); }; 27630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Set the guid of unique handler to the same of original handler, so it can be removed 27640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch proxy.guid = fn.guid = fn.guid || proxy.guid || this.guid++; 27650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // So proxy can be declared as an argument 27660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return proxy; 27670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 27680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 27690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch special: { 27700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ready: { 27710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Make sure the ready event is setup 27720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch setup: bindReady, 27730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch teardown: function() {} 27740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 27750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 27760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 27770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch specialAll: { 27780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch live: { 27790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch setup: function( selector, namespaces ){ 27800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.event.add( this, namespaces[0], liveHandler ); 27810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 27820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch teardown: function( namespaces ){ 27830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( namespaces.length ) { 27840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var remove = 0, name = RegExp("(^|\\.)" + namespaces[0] + "(\\.|$)"); 27850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 27860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.each( (jQuery.data(this, "events").live || {}), function(){ 27870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( name.test(this.type) ) 27880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch remove++; 27890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 27900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 27910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( remove < 1 ) 27920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.event.remove( this, namespaces[0], liveHandler ); 27930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 27940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 27950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 27960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 27970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}; 27980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 27990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochjQuery.Event = function( src ){ 28000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Allow instantiation without the 'new' keyword 28010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if( !this.preventDefault ) 28020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return new jQuery.Event(src); 28030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 28040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Event object 28050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if( src && src.type ){ 28060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.originalEvent = src; 28070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.type = src.type; 28080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Event type 28090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }else 28100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.type = src; 28110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 28120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // timeStamp is buggy for some events on Firefox(#3843) 28130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // So we won't rely on the native value 28140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.timeStamp = now(); 28150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 28160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Mark it as fixed 28170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this[expando] = true; 28180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}; 28190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 28200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochfunction returnFalse(){ 28210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return false; 28220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 28230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochfunction returnTrue(){ 28240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return true; 28250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 28260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 28270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding 28280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html 28290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochjQuery.Event.prototype = { 28300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch preventDefault: function() { 28310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.isDefaultPrevented = returnTrue; 28320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 28330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var e = this.originalEvent; 28340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if( !e ) 28350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return; 28360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // if preventDefault exists run it on the original event 28370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (e.preventDefault) 28380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch e.preventDefault(); 28390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // otherwise set the returnValue property of the original event to false (IE) 28400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch e.returnValue = false; 28410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 28420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch stopPropagation: function() { 28430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.isPropagationStopped = returnTrue; 28440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 28450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var e = this.originalEvent; 28460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if( !e ) 28470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return; 28480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // if stopPropagation exists run it on the original event 28490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (e.stopPropagation) 28500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch e.stopPropagation(); 28510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // otherwise set the cancelBubble property of the original event to true (IE) 28520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch e.cancelBubble = true; 28530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 28540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch stopImmediatePropagation:function(){ 28550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.isImmediatePropagationStopped = returnTrue; 28560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.stopPropagation(); 28570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 28580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch isDefaultPrevented: returnFalse, 28590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch isPropagationStopped: returnFalse, 28600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch isImmediatePropagationStopped: returnFalse 28610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}; 28620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch// Checks if an event happened on an element within another element 28630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch// Used in jQuery.event.special.mouseenter and mouseleave handlers 28640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvar withinElement = function(event) { 28650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Check if mouse(over|out) are still within the same parent element 28660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var parent = event.relatedTarget; 28670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Traverse up the tree 28680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch while ( parent && parent != this ) 28690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch try { parent = parent.parentNode; } 28700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch catch(e) { parent = this; } 28710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 28720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if( parent != this ){ 28730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // set the correct event type 28740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch event.type = event.data; 28750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // handle event if we actually just moused on to a non sub-element 28760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.event.handle.apply( this, arguments ); 28770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 28780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}; 28790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 28800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochjQuery.each({ 28810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch mouseover: 'mouseenter', 28820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch mouseout: 'mouseleave' 28830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}, function( orig, fix ){ 28840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.event.special[ fix ] = { 28850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch setup: function(){ 28860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.event.add( this, orig, withinElement, fix ); 28870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 28880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch teardown: function(){ 28890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.event.remove( this, orig, withinElement ); 28900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 28910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }; 28920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}); 28930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 28940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochjQuery.fn.extend({ 28950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch bind: function( type, data, fn ) { 28960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return type == "unload" ? this.one(type, data, fn) : this.each(function(){ 28970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.event.add( this, type, fn || data, fn && data ); 28980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 28990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 29000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 29010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch one: function( type, data, fn ) { 29020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var one = jQuery.event.proxy( fn || data, function(event) { 29030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery(this).unbind(event, one); 29040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return (fn || data).apply( this, arguments ); 29050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 29060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this.each(function(){ 29070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.event.add( this, type, one, fn && data); 29080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 29090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 29100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 29110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch unbind: function( type, fn ) { 29120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this.each(function(){ 29130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.event.remove( this, type, fn ); 29140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 29150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 29160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 29170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch trigger: function( type, data ) { 29180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this.each(function(){ 29190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.event.trigger( type, data, this ); 29200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 29210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 29220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 29230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch triggerHandler: function( type, data ) { 29240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if( this[0] ){ 29250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var event = jQuery.Event(type); 29260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch event.preventDefault(); 29270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch event.stopPropagation(); 29280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.event.trigger( event, data, this[0] ); 29290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return event.result; 29300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 29310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 29320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 29330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch toggle: function( fn ) { 29340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Save reference to arguments for access in closure 29350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var args = arguments, i = 1; 29360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 29370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // link all the functions, so any of them can unbind this click handler 29380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch while( i < args.length ) 29390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.event.proxy( fn, args[i++] ); 29400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 29410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this.click( jQuery.event.proxy( fn, function(event) { 29420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Figure out which function to execute 29430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.lastToggle = ( this.lastToggle || 0 ) % i; 29440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 29450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Make sure that clicks stop 29460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch event.preventDefault(); 29470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 29480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // and execute the function 29490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return args[ this.lastToggle++ ].apply( this, arguments ) || false; 29500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch })); 29510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 29520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 29530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch hover: function(fnOver, fnOut) { 29540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this.mouseenter(fnOver).mouseleave(fnOut); 29550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 29560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 29570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ready: function(fn) { 29580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Attach the listeners 29590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch bindReady(); 29600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 29610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // If the DOM is already ready 29620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( jQuery.isReady ) 29630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Execute the function immediately 29640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch fn.call( document, jQuery ); 29650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 29660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Otherwise, remember the function for later 29670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch else 29680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Add the function to the wait list 29690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.readyList.push( fn ); 29700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 29710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this; 29720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 29730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 29740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch live: function( type, fn ){ 29750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var proxy = jQuery.event.proxy( fn ); 29760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch proxy.guid += this.selector + type; 29770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 29780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery(document).bind( liveConvert(type, this.selector), this.selector, proxy ); 29790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 29800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this; 29810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 29820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 29830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch die: function( type, fn ){ 29840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery(document).unbind( liveConvert(type, this.selector), fn ? { guid: fn.guid + this.selector + type } : null ); 29850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this; 29860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 29870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}); 29880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 29890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochfunction liveHandler( event ){ 29900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var check = RegExp("(^|\\.)" + event.type + "(\\.|$)"), 29910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch stop = true, 29920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elems = []; 29930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 29940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.each(jQuery.data(this, "events").live || [], function(i, fn){ 29950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( check.test(fn.type) ) { 29960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var elem = jQuery(event.target).closest(fn.data)[0]; 29970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( elem ) 29980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elems.push({ elem: elem, fn: fn }); 29990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 30000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 30010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 30020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elems.sort(function(a,b) { 30030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return jQuery.data(a.elem, "closest") - jQuery.data(b.elem, "closest"); 30040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 30050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 30060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.each(elems, function(){ 30070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( this.fn.call(this.elem, event, this.fn.data) === false ) 30080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return (stop = false); 30090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 30100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 30110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return stop; 30120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 30130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 30140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochfunction liveConvert(type, selector){ 30150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return ["live", type, selector.replace(/\./g, "`").replace(/ /g, "|")].join("."); 30160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 30170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 30180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochjQuery.extend({ 30190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch isReady: false, 30200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch readyList: [], 30210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Handle when the DOM is ready 30220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ready: function() { 30230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Make sure that the DOM is not already loaded 30240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !jQuery.isReady ) { 30250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Remember that the DOM is ready 30260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.isReady = true; 30270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 30280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // If there are functions bound, to execute 30290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( jQuery.readyList ) { 30300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Execute all of them 30310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.each( jQuery.readyList, function(){ 30320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.call( document, jQuery ); 30330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 30340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 30350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Reset the list of functions 30360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.readyList = null; 30370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 30380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 30390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Trigger any bound ready events 30400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery(document).triggerHandler("ready"); 30410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 30420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 30430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}); 30440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 30450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvar readyBound = false; 30460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 30470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochfunction bindReady(){ 30480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( readyBound ) return; 30490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch readyBound = true; 30500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 30510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Mozilla, Opera and webkit nightlies currently support this event 30520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( document.addEventListener ) { 30530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Use the handy event callback 30540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch document.addEventListener( "DOMContentLoaded", function(){ 30550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch document.removeEventListener( "DOMContentLoaded", arguments.callee, false ); 30560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.ready(); 30570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, false ); 30580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 30590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // If IE event model is used 30600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } else if ( document.attachEvent ) { 30610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // ensure firing before onload, 30620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // maybe late but safe also for iframes 30630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch document.attachEvent("onreadystatechange", function(){ 30640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( document.readyState === "complete" ) { 30650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch document.detachEvent( "onreadystatechange", arguments.callee ); 30660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.ready(); 30670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 30680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 30690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 30700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // If IE and not an iframe 30710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // continually check to see if the document is ready 30720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( document.documentElement.doScroll && window == window.top ) (function(){ 30730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( jQuery.isReady ) return; 30740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 30750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch try { 30760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // If IE is used, use the trick by Diego Perini 30770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // http://javascript.nwbox.com/IEContentLoaded/ 30780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch document.documentElement.doScroll("left"); 30790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } catch( error ) { 30800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch setTimeout( arguments.callee, 0 ); 30810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return; 30820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 30830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 30840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // and execute any waiting functions 30850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.ready(); 30860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch })(); 30870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 30880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 30890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // A fallback to window.onload, that will always work 30900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.event.add( window, "load", jQuery.ready ); 30910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 30920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 30930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochjQuery.each( ("blur,focus,load,resize,scroll,unload,click,dblclick," + 30940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave," + 30950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "change,select,submit,keydown,keypress,keyup,error").split(","), function(i, name){ 30960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 30970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Handle event binding 30980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.fn[name] = function(fn){ 30990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return fn ? this.bind(name, fn) : this.trigger(name); 31000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }; 31010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}); 31020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 31030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch// Prevent memory leaks in IE 31040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch// And prevent errors on refresh with events like mouseover in other browsers 31050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch// Window isn't included so as not to unbind existing unload events 31060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochjQuery( window ).bind( 'unload', function(){ 31070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( var id in jQuery.cache ) 31080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Skip the window 31090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( id != 1 && jQuery.cache[ id ].handle ) 31100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.event.remove( jQuery.cache[ id ].handle.elem ); 31110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}); 31120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch(function(){ 31130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 31140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.support = {}; 31150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 31160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var root = document.documentElement, 31170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch script = document.createElement("script"), 31180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch div = document.createElement("div"), 31190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch id = "script" + (new Date).getTime(); 31200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 31210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch div.style.display = "none"; 31220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch div.innerHTML = ' <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>'; 31230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 31240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var all = div.getElementsByTagName("*"), 31250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch a = div.getElementsByTagName("a")[0]; 31260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 31270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Can't get basic test support 31280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !all || !all.length || !a ) { 31290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return; 31300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 31310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 31320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.support = { 31330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // IE strips leading whitespace when .innerHTML is used 31340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch leadingWhitespace: div.firstChild.nodeType == 3, 31350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 31360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Make sure that tbody elements aren't automatically inserted 31370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // IE will insert them into empty tables 31380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch tbody: !div.getElementsByTagName("tbody").length, 31390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 31400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Make sure that you can get all elements in an <object> element 31410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // IE 7 always returns no results 31420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch objectAll: !!div.getElementsByTagName("object")[0] 31430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch .getElementsByTagName("*").length, 31440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 31450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Make sure that link elements get serialized correctly by innerHTML 31460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // This requires a wrapper element in IE 31470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch htmlSerialize: !!div.getElementsByTagName("link").length, 31480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 31490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Get the style information from getAttribute 31500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // (IE uses .cssText insted) 31510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch style: /red/.test( a.getAttribute("style") ), 31520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 31530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Make sure that URLs aren't manipulated 31540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // (IE normalizes it by default) 31550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch hrefNormalized: a.getAttribute("href") === "/a", 31560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 31570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Make sure that element opacity exists 31580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // (IE uses filter instead) 31590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch opacity: a.style.opacity === "0.5", 31600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 31610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Verify style float existence 31620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // (IE uses styleFloat instead of cssFloat) 31630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch cssFloat: !!a.style.cssFloat, 31640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 31650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Will be defined later 31660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch scriptEval: false, 31670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch noCloneEvent: true, 31680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch boxModel: null 31690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }; 31700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 31710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch script.type = "text/javascript"; 31720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch try { 31730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch script.appendChild( document.createTextNode( "window." + id + "=1;" ) ); 31740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } catch(e){} 31750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 31760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch root.insertBefore( script, root.firstChild ); 31770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 31780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Make sure that the execution of code works by injecting a script 31790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // tag with appendChild/createTextNode 31800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // (IE doesn't support this, fails, and uses .text instead) 31810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( window[ id ] ) { 31820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.support.scriptEval = true; 31830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch delete window[ id ]; 31840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 31850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 31860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch root.removeChild( script ); 31870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 31880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( div.attachEvent && div.fireEvent ) { 31890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch div.attachEvent("onclick", function(){ 31900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Cloning a node shouldn't copy over any 31910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // bound event handlers (IE does this) 31920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.support.noCloneEvent = false; 31930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch div.detachEvent("onclick", arguments.callee); 31940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 31950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch div.cloneNode(true).fireEvent("onclick"); 31960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 31970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 31980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Figure out if the W3C box model works as expected 31990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // document.body must exist before we can do this 32000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery(function(){ 32010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var div = document.createElement("div"); 32020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch div.style.width = div.style.paddingLeft = "1px"; 32030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 32040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch document.body.appendChild( div ); 32050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2; 32060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch document.body.removeChild( div ).style.display = 'none'; 32070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 32080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch})(); 32090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 32100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvar styleFloat = jQuery.support.cssFloat ? "cssFloat" : "styleFloat"; 32110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 32120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochjQuery.props = { 32130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "for": "htmlFor", 32140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "class": "className", 32150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "float": styleFloat, 32160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch cssFloat: styleFloat, 32170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch styleFloat: styleFloat, 32180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch readonly: "readOnly", 32190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch maxlength: "maxLength", 32200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch cellspacing: "cellSpacing", 32210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch rowspan: "rowSpan", 32220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch tabindex: "tabIndex" 32230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}; 32240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochjQuery.fn.extend({ 32250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Keep a copy of the old load 32260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch _load: jQuery.fn.load, 32270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 32280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch load: function( url, params, callback ) { 32290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( typeof url !== "string" ) 32300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this._load( url ); 32310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 32320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var off = url.indexOf(" "); 32330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( off >= 0 ) { 32340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var selector = url.slice(off, url.length); 32350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch url = url.slice(0, off); 32360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 32370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 32380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Default to a GET request 32390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var type = "GET"; 32400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 32410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // If the second parameter was provided 32420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( params ) 32430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // If it's a function 32440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( jQuery.isFunction( params ) ) { 32450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // We assume that it's the callback 32460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch callback = params; 32470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch params = null; 32480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 32490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Otherwise, build a param string 32500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } else if( typeof params === "object" ) { 32510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch params = jQuery.param( params ); 32520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch type = "POST"; 32530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 32540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 32550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var self = this; 32560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 32570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Request the remote document 32580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.ajax({ 32590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch url: url, 32600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch type: type, 32610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch dataType: "html", 32620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch data: params, 32630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch complete: function(res, status){ 32640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // If successful, inject the HTML into all the matched elements 32650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( status == "success" || status == "notmodified" ) 32660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // See if a selector was specified 32670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch self.html( selector ? 32680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Create a dummy div to hold the results 32690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery("<div/>") 32700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // inject the contents of the document in, removing the scripts 32710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // to avoid any 'Permission Denied' errors in IE 32720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch .append(res.responseText.replace(/<script(.|\s)*?\/script>/g, "")) 32730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 32740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Locate the specified elements 32750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch .find(selector) : 32760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 32770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // If not, just inject the full result 32780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch res.responseText ); 32790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 32800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if( callback ) 32810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch self.each( callback, [res.responseText, status, res] ); 32820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 32830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 32840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this; 32850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 32860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 32870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch serialize: function() { 32880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return jQuery.param(this.serializeArray()); 32890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 32900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch serializeArray: function() { 32910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this.map(function(){ 32920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this.elements ? jQuery.makeArray(this.elements) : this; 32930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }) 32940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch .filter(function(){ 32950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this.name && !this.disabled && 32960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch (this.checked || /select|textarea/i.test(this.nodeName) || 32970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /text|hidden|password|search/i.test(this.type)); 32980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }) 32990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch .map(function(i, elem){ 33000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var val = jQuery(this).val(); 33010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return val == null ? null : 33020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.isArray(val) ? 33030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.map( val, function(val, i){ 33040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return {name: elem.name, value: val}; 33050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }) : 33060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch {name: elem.name, value: val}; 33070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }).get(); 33080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 33090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}); 33100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 33110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch// Attach a bunch of functions for handling common AJAX events 33120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochjQuery.each( "ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","), function(i,o){ 33130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.fn[o] = function(f){ 33140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this.bind(o, f); 33150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }; 33160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}); 33170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 33180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvar jsc = now(); 33190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 33200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochjQuery.extend({ 33210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 33220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch get: function( url, data, callback, type ) { 33230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // shift arguments if data argument was ommited 33240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( jQuery.isFunction( data ) ) { 33250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch callback = data; 33260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch data = null; 33270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 33280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 33290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return jQuery.ajax({ 33300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch type: "GET", 33310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch url: url, 33320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch data: data, 33330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch success: callback, 33340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch dataType: type 33350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 33360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 33370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 33380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch getScript: function( url, callback ) { 33390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return jQuery.get(url, null, callback, "script"); 33400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 33410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 33420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch getJSON: function( url, data, callback ) { 33430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return jQuery.get(url, data, callback, "json"); 33440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 33450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 33460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch post: function( url, data, callback, type ) { 33470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( jQuery.isFunction( data ) ) { 33480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch callback = data; 33490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch data = {}; 33500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 33510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 33520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return jQuery.ajax({ 33530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch type: "POST", 33540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch url: url, 33550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch data: data, 33560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch success: callback, 33570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch dataType: type 33580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 33590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 33600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 33610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ajaxSetup: function( settings ) { 33620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.extend( jQuery.ajaxSettings, settings ); 33630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 33640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 33650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ajaxSettings: { 33660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch url: location.href, 33670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch global: true, 33680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch type: "GET", 33690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch contentType: "application/x-www-form-urlencoded", 33700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch processData: true, 33710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch async: true, 33720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* 33730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch timeout: 0, 33740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch data: null, 33750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch username: null, 33760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch password: null, 33770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch */ 33780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Create the request object; Microsoft failed to properly 33790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // implement the XMLHttpRequest in IE7, so we use the ActiveXObject when it is available 33800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // This function can be overriden by calling jQuery.ajaxSetup 33810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch xhr:function(){ 33820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest(); 33830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 33840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch accepts: { 33850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch xml: "application/xml, text/xml", 33860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch html: "text/html", 33870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch script: "text/javascript, application/javascript", 33880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch json: "application/json, text/javascript", 33890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch text: "text/plain", 33900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch _default: "*/*" 33910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 33920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 33930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 33940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Last-Modified header cache for next request 33950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch lastModified: {}, 33960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 33970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ajax: function( s ) { 33980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Extend the settings, but re-extend 's' so that it can be 33990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // checked again later (in the test suite, specifically) 34000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch s = jQuery.extend(true, s, jQuery.extend(true, {}, jQuery.ajaxSettings, s)); 34010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 34020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var jsonp, jsre = /=\?(&|$)/g, status, data, 34030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch type = s.type.toUpperCase(); 34040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 34050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // convert data if not already a string 34060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( s.data && s.processData && typeof s.data !== "string" ) 34070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch s.data = jQuery.param(s.data); 34080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 34090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Handle JSONP Parameter Callbacks 34100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( s.dataType == "jsonp" ) { 34110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( type == "GET" ) { 34120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !s.url.match(jsre) ) 34130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch s.url += (s.url.match(/\?/) ? "&" : "?") + (s.jsonp || "callback") + "=?"; 34140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } else if ( !s.data || !s.data.match(jsre) ) 34150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch s.data = (s.data ? s.data + "&" : "") + (s.jsonp || "callback") + "=?"; 34160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch s.dataType = "json"; 34170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 34180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 34190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Build temporary JSONP function 34200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( s.dataType == "json" && (s.data && s.data.match(jsre) || s.url.match(jsre)) ) { 34210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jsonp = "jsonp" + jsc++; 34220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 34230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Replace the =? sequence both in the query string and the data 34240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( s.data ) 34250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch s.data = (s.data + "").replace(jsre, "=" + jsonp + "$1"); 34260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch s.url = s.url.replace(jsre, "=" + jsonp + "$1"); 34270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 34280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // We need to make sure 34290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // that a JSONP style response is executed properly 34300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch s.dataType = "script"; 34310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 34320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Handle JSONP-style loading 34330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch window[ jsonp ] = function(tmp){ 34340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch data = tmp; 34350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch success(); 34360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch complete(); 34370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Garbage collect 34380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch window[ jsonp ] = undefined; 34390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch try{ delete window[ jsonp ]; } catch(e){} 34400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( head ) 34410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch head.removeChild( script ); 34420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }; 34430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 34440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 34450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( s.dataType == "script" && s.cache == null ) 34460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch s.cache = false; 34470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 34480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( s.cache === false && type == "GET" ) { 34490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var ts = now(); 34500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // try replacing _= if it is there 34510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var ret = s.url.replace(/(\?|&)_=.*?(&|$)/, "$1_=" + ts + "$2"); 34520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // if nothing was replaced, add timestamp to the end 34530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch s.url = ret + ((ret == s.url) ? (s.url.match(/\?/) ? "&" : "?") + "_=" + ts : ""); 34540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 34550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 34560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // If data is available, append data to url for get requests 34570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( s.data && type == "GET" ) { 34580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch s.url += (s.url.match(/\?/) ? "&" : "?") + s.data; 34590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 34600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // IE likes to send both get and post data, prevent this 34610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch s.data = null; 34620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 34630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 34640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Watch for a new set of requests 34650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( s.global && ! jQuery.active++ ) 34660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.event.trigger( "ajaxStart" ); 34670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 34680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Matches an absolute URL, and saves the domain 34690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var parts = /^(\w+:)?\/\/([^\/?#]+)/.exec( s.url ); 34700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 34710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // If we're requesting a remote document 34720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // and trying to load JSON or Script with a GET 34730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( s.dataType == "script" && type == "GET" && parts 34740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch && ( parts[1] && parts[1] != location.protocol || parts[2] != location.host )){ 34750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 34760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var head = document.getElementsByTagName("head")[0]; 34770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var script = document.createElement("script"); 34780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch script.src = s.url; 34790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (s.scriptCharset) 34800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch script.charset = s.scriptCharset; 34810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 34820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Handle Script loading 34830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !jsonp ) { 34840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var done = false; 34850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 34860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Attach handlers for all browsers 34870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch script.onload = script.onreadystatechange = function(){ 34880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !done && (!this.readyState || 34890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.readyState == "loaded" || this.readyState == "complete") ) { 34900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch done = true; 34910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch success(); 34920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch complete(); 34930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 34940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Handle memory leak in IE 34950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch script.onload = script.onreadystatechange = null; 34960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch head.removeChild( script ); 34970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 34980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }; 34990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 35000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 35010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch head.appendChild(script); 35020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 35030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // We handle everything using the script element injection 35040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return undefined; 35050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 35060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 35070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var requestDone = false; 35080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 35090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Create the request object 35100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var xhr = s.xhr(); 35110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 35120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Open the socket 35130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Passing null username, generates a login popup on Opera (#2865) 35140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if( s.username ) 35150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch xhr.open(type, s.url, s.async, s.username, s.password); 35160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch else 35170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch xhr.open(type, s.url, s.async); 35180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 35190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Need an extra try/catch for cross domain requests in Firefox 3 35200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch try { 35210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Set the correct header, if data is being sent 35220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( s.data ) 35230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch xhr.setRequestHeader("Content-Type", s.contentType); 35240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 35250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Set the If-Modified-Since header, if ifModified mode. 35260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( s.ifModified ) 35270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch xhr.setRequestHeader("If-Modified-Since", 35280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.lastModified[s.url] || "Thu, 01 Jan 1970 00:00:00 GMT" ); 35290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 35300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Set header so the called script knows that it's an XMLHttpRequest 35310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest"); 35320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 35330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Set the Accepts header for the server, depending on the dataType 35340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch xhr.setRequestHeader("Accept", s.dataType && s.accepts[ s.dataType ] ? 35350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch s.accepts[ s.dataType ] + ", */*" : 35360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch s.accepts._default ); 35370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } catch(e){} 35380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 35390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Allow custom headers/mimetypes and early abort 35400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( s.beforeSend && s.beforeSend(xhr, s) === false ) { 35410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Handle the global AJAX counter 35420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( s.global && ! --jQuery.active ) 35430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.event.trigger( "ajaxStop" ); 35440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // close opended socket 35450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch xhr.abort(); 35460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return false; 35470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 35480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 35490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( s.global ) 35500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.event.trigger("ajaxSend", [xhr, s]); 35510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 35520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Wait for a response to come back 35530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var onreadystatechange = function(isTimeout){ 35540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // The request was aborted, clear the interval and decrement jQuery.active 35550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (xhr.readyState == 0) { 35560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (ival) { 35570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // clear poll interval 35580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch clearInterval(ival); 35590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ival = null; 35600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Handle the global AJAX counter 35610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( s.global && ! --jQuery.active ) 35620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.event.trigger( "ajaxStop" ); 35630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 35640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // The transfer is complete and the data is available, or the request timed out 35650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } else if ( !requestDone && xhr && (xhr.readyState == 4 || isTimeout == "timeout") ) { 35660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch requestDone = true; 35670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 35680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // clear poll interval 35690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (ival) { 35700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch clearInterval(ival); 35710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ival = null; 35720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 35730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 35740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch status = isTimeout == "timeout" ? "timeout" : 35750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch !jQuery.httpSuccess( xhr ) ? "error" : 35760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch s.ifModified && jQuery.httpNotModified( xhr, s.url ) ? "notmodified" : 35770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch "success"; 35780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 35790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( status == "success" ) { 35800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Watch for, and catch, XML document parse errors 35810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch try { 35820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // process the data (runs the xml through httpData regardless of callback) 35830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch data = jQuery.httpData( xhr, s.dataType, s ); 35840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } catch(e) { 35850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch status = "parsererror"; 35860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 35870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 35880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 35890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Make sure that the request was successful or notmodified 35900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( status == "success" ) { 35910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Cache Last-Modified header, if ifModified mode. 35920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var modRes; 35930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch try { 35940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch modRes = xhr.getResponseHeader("Last-Modified"); 35950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } catch(e) {} // swallow exception thrown by FF if header is not available 35960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 35970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( s.ifModified && modRes ) 35980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.lastModified[s.url] = modRes; 35990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 36000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // JSONP handles its own success callback 36010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !jsonp ) 36020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch success(); 36030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } else 36040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.handleError(s, xhr, status); 36050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 36060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Fire the complete handlers 36070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch complete(); 36080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 36090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( isTimeout ) 36100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch xhr.abort(); 36110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 36120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Stop memory leaks 36130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( s.async ) 36140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch xhr = null; 36150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 36160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }; 36170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 36180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( s.async ) { 36190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // don't attach the handler to the request, just poll it instead 36200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var ival = setInterval(onreadystatechange, 13); 36210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 36220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Timeout checker 36230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( s.timeout > 0 ) 36240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch setTimeout(function(){ 36250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Check to see if the request is still happening 36260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( xhr && !requestDone ) 36270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch onreadystatechange( "timeout" ); 36280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, s.timeout); 36290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 36300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 36310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Send the data 36320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch try { 36330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch xhr.send(s.data); 36340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } catch(e) { 36350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.handleError(s, xhr, null, e); 36360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 36370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 36380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // firefox 1.5 doesn't fire statechange for sync requests 36390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !s.async ) 36400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch onreadystatechange(); 36410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 36420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch function success(){ 36430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // If a local callback was specified, fire it and pass it the data 36440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( s.success ) 36450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch s.success( data, status ); 36460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 36470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Fire the global callback 36480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( s.global ) 36490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.event.trigger( "ajaxSuccess", [xhr, s] ); 36500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 36510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 36520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch function complete(){ 36530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Process result 36540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( s.complete ) 36550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch s.complete(xhr, status); 36560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 36570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // The request was completed 36580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( s.global ) 36590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.event.trigger( "ajaxComplete", [xhr, s] ); 36600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 36610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Handle the global AJAX counter 36620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( s.global && ! --jQuery.active ) 36630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.event.trigger( "ajaxStop" ); 36640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 36650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 36660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // return XMLHttpRequest to allow aborting the request etc. 36670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return xhr; 36680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 36690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 36700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch handleError: function( s, xhr, status, e ) { 36710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // If a local callback was specified, fire it 36720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( s.error ) s.error( xhr, status, e ); 36730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 36740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Fire the global callback 36750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( s.global ) 36760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.event.trigger( "ajaxError", [xhr, s, e] ); 36770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 36780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 36790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Counter for holding the number of active queries 36800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch active: 0, 36810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 36820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Determines if an XMLHttpRequest was successful or not 36830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch httpSuccess: function( xhr ) { 36840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch try { 36850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // IE error sometimes returns 1223 when it should be 204 so treat it as success, see #1450 36860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return !xhr.status && location.protocol == "file:" || 36870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ( xhr.status >= 200 && xhr.status < 300 ) || xhr.status == 304 || xhr.status == 1223; 36880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } catch(e){} 36890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return false; 36900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 36910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 36920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Determines if an XMLHttpRequest returns NotModified 36930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch httpNotModified: function( xhr, url ) { 36940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch try { 36950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var xhrRes = xhr.getResponseHeader("Last-Modified"); 36960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 36970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Firefox always returns 200. check Last-Modified date 36980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return xhr.status == 304 || xhrRes == jQuery.lastModified[url]; 36990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } catch(e){} 37000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return false; 37010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 37020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 37030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch httpData: function( xhr, type, s ) { 37040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var ct = xhr.getResponseHeader("content-type"), 37050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch xml = type == "xml" || !type && ct && ct.indexOf("xml") >= 0, 37060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch data = xml ? xhr.responseXML : xhr.responseText; 37070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 37080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( xml && data.documentElement.tagName == "parsererror" ) 37090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch throw "parsererror"; 37100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 37110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Allow a pre-filtering function to sanitize the response 37120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // s != null is checked to keep backwards compatibility 37130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if( s && s.dataFilter ) 37140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch data = s.dataFilter( data, type ); 37150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 37160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // The filter can actually parse the response 37170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if( typeof data === "string" ){ 37180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 37190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // If the type is "script", eval it in global context 37200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( type == "script" ) 37210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.globalEval( data ); 37220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 37230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Get the JavaScript object, if JSON is used. 37240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( type == "json" ) 37250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch data = window["eval"]("(" + data + ")"); 37260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 37270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 37280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return data; 37290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 37300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 37310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Serialize an array of form elements or a set of 37320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // key/values into a query string 37330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch param: function( a ) { 37340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var s = [ ]; 37350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 37360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch function add( key, value ){ 37370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch s[ s.length ] = encodeURIComponent(key) + '=' + encodeURIComponent(value); 37380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }; 37390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 37400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // If an array was passed in, assume that it is an array 37410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // of form elements 37420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( jQuery.isArray(a) || a.jquery ) 37430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Serialize the form elements 37440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.each( a, function(){ 37450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch add( this.name, this.value ); 37460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 37470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 37480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Otherwise, assume that it's an object of key/value pairs 37490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch else 37500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Serialize the key/values 37510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( var j in a ) 37520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // If the value is an array then the key names need to be repeated 37530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( jQuery.isArray(a[j]) ) 37540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.each( a[j], function(){ 37550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch add( j, this ); 37560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 37570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch else 37580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch add( j, jQuery.isFunction(a[j]) ? a[j]() : a[j] ); 37590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 37600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Return the resulting serialization 37610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return s.join("&").replace(/%20/g, "+"); 37620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 37630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 37640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}); 37650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvar elemdisplay = {}, 37660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch timerId, 37670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch fxAttrs = [ 37680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // height animations 37690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch [ "height", "marginTop", "marginBottom", "paddingTop", "paddingBottom" ], 37700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // width animations 37710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch [ "width", "marginLeft", "marginRight", "paddingLeft", "paddingRight" ], 37720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // opacity animations 37730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch [ "opacity" ] 37740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ]; 37750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 37760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochfunction genFx( type, num ){ 37770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var obj = {}; 37780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function(){ 37790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch obj[ this ] = type; 37800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 37810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return obj; 37820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 37830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 37840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochjQuery.fn.extend({ 37850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch show: function(speed,callback){ 37860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( speed ) { 37870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this.animate( genFx("show", 3), speed, callback); 37880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } else { 37890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( var i = 0, l = this.length; i < l; i++ ){ 37900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var old = jQuery.data(this[i], "olddisplay"); 37910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 37920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this[i].style.display = old || ""; 37930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 37940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( jQuery.css(this[i], "display") === "none" ) { 37950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var tagName = this[i].tagName, display; 37960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 37970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( elemdisplay[ tagName ] ) { 37980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch display = elemdisplay[ tagName ]; 37990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } else { 38000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var elem = jQuery("<" + tagName + " />").appendTo("body"); 38010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 38020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch display = elem.css("display"); 38030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( display === "none" ) 38040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch display = "block"; 38050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 38060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elem.remove(); 38070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 38080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch elemdisplay[ tagName ] = display; 38090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 38100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 38110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.data(this[i], "olddisplay", display); 38120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 38130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 38140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 38150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Set the display of the elements in a second loop 38160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // to avoid the constant reflow 38170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( var i = 0, l = this.length; i < l; i++ ){ 38180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this[i].style.display = jQuery.data(this[i], "olddisplay") || ""; 38190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 38200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 38210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this; 38220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 38230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 38240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 38250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch hide: function(speed,callback){ 38260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( speed ) { 38270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this.animate( genFx("hide", 3), speed, callback); 38280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } else { 38290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( var i = 0, l = this.length; i < l; i++ ){ 38300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var old = jQuery.data(this[i], "olddisplay"); 38310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !old && old !== "none" ) 38320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.data(this[i], "olddisplay", jQuery.css(this[i], "display")); 38330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 38340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 38350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Set the display of the elements in a second loop 38360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // to avoid the constant reflow 38370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( var i = 0, l = this.length; i < l; i++ ){ 38380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this[i].style.display = "none"; 38390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 38400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 38410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this; 38420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 38430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 38440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 38450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Save the old toggle function 38460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch _toggle: jQuery.fn.toggle, 38470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 38480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch toggle: function( fn, fn2 ){ 38490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var bool = typeof fn === "boolean"; 38500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 38510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return jQuery.isFunction(fn) && jQuery.isFunction(fn2) ? 38520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this._toggle.apply( this, arguments ) : 38530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch fn == null || bool ? 38540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.each(function(){ 38550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var state = bool ? fn : jQuery(this).is(":hidden"); 38560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery(this)[ state ? "show" : "hide" ](); 38570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }) : 38580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.animate(genFx("toggle", 3), fn, fn2); 38590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 38600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 38610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch fadeTo: function(speed,to,callback){ 38620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this.animate({opacity: to}, speed, callback); 38630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 38640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 38650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch animate: function( prop, speed, easing, callback ) { 38660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var optall = jQuery.speed(speed, easing, callback); 38670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 38680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this[ optall.queue === false ? "each" : "queue" ](function(){ 38690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 38700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var opt = jQuery.extend({}, optall), p, 38710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch hidden = this.nodeType == 1 && jQuery(this).is(":hidden"), 38720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch self = this; 38730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 38740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( p in prop ) { 38750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( prop[p] == "hide" && hidden || prop[p] == "show" && !hidden ) 38760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return opt.complete.call(this); 38770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 38780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( ( p == "height" || p == "width" ) && this.style ) { 38790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Store display property 38800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch opt.display = jQuery.css(this, "display"); 38810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 38820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Make sure that nothing sneaks out 38830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch opt.overflow = this.style.overflow; 38840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 38850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 38860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 38870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( opt.overflow != null ) 38880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.style.overflow = "hidden"; 38890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 38900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch opt.curAnim = jQuery.extend({}, prop); 38910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 38920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.each( prop, function(name, val){ 38930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var e = new jQuery.fx( self, opt, name ); 38940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 38950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( /toggle|show|hide/.test(val) ) 38960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch e[ val == "toggle" ? hidden ? "show" : "hide" : val ]( prop ); 38970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch else { 38980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var parts = val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/), 38990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch start = e.cur(true) || 0; 39000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 39010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( parts ) { 39020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var end = parseFloat(parts[2]), 39030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch unit = parts[3] || "px"; 39040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 39050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // We need to compute starting value 39060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( unit != "px" ) { 39070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch self.style[ name ] = (end || 1) + unit; 39080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch start = ((end || 1) / e.cur(true)) * start; 39090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch self.style[ name ] = start + unit; 39100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 39110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 39120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // If a +=/-= token was provided, we're doing a relative animation 39130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( parts[1] ) 39140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch end = ((parts[1] == "-=" ? -1 : 1) * end) + start; 39150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 39160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch e.custom( start, end, unit ); 39170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } else 39180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch e.custom( start, val, "" ); 39190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 39200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 39210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 39220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // For JS strict compliance 39230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return true; 39240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 39250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 39260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 39270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch stop: function(clearQueue, gotoEnd){ 39280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var timers = jQuery.timers; 39290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 39300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (clearQueue) 39310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.queue([]); 39320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 39330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.each(function(){ 39340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // go in reverse order so anything added to the queue during the loop is ignored 39350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( var i = timers.length - 1; i >= 0; i-- ) 39360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( timers[i].elem == this ) { 39370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (gotoEnd) 39380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // force the next step to be the last 39390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch timers[i](true); 39400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch timers.splice(i, 1); 39410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 39420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }); 39430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 39440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // start the next in the queue if the last step wasn't forced 39450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (!gotoEnd) 39460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.dequeue(); 39470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 39480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this; 39490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 39500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 39510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}); 39520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 39530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch// Generate shortcuts for custom animations 39540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochjQuery.each({ 39550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch slideDown: genFx("show", 1), 39560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch slideUp: genFx("hide", 1), 39570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch slideToggle: genFx("toggle", 1), 39580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch fadeIn: { opacity: "show" }, 39590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch fadeOut: { opacity: "hide" } 39600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}, function( name, props ){ 39610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.fn[ name ] = function( speed, callback ){ 39620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this.animate( props, speed, callback ); 39630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }; 39640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}); 39650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 39660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochjQuery.extend({ 39670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 39680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch speed: function(speed, easing, fn) { 39690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var opt = typeof speed === "object" ? speed : { 39700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch complete: fn || !fn && easing || 39710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.isFunction( speed ) && speed, 39720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch duration: speed, 39730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch easing: fn && easing || easing && !jQuery.isFunction(easing) && easing 39740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }; 39750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 39760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration : 39770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.fx.speeds[opt.duration] || jQuery.fx.speeds._default; 39780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 39790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Queueing 39800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch opt.old = opt.complete; 39810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch opt.complete = function(){ 39820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( opt.queue !== false ) 39830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery(this).dequeue(); 39840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( jQuery.isFunction( opt.old ) ) 39850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch opt.old.call( this ); 39860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }; 39870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 39880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return opt; 39890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 39900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 39910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch easing: { 39920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch linear: function( p, n, firstNum, diff ) { 39930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return firstNum + diff * p; 39940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 39950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch swing: function( p, n, firstNum, diff ) { 39960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum; 39970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 39980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 39990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 40000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch timers: [], 40010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 40020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch fx: function( elem, options, prop ){ 40030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.options = options; 40040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.elem = elem; 40050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.prop = prop; 40060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 40070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !options.orig ) 40080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch options.orig = {}; 40090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 40100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 40110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}); 40120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 40130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochjQuery.fx.prototype = { 40140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 40150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Simple function for setting a style value 40160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch update: function(){ 40170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( this.options.step ) 40180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.options.step.call( this.elem, this.now, this ); 40190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 40200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch (jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this ); 40210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 40220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Set display property to block for height/width animations 40230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( ( this.prop == "height" || this.prop == "width" ) && this.elem.style ) 40240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.elem.style.display = "block"; 40250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 40260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 40270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Get the current size 40280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch cur: function(force){ 40290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) ) 40300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this.elem[ this.prop ]; 40310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 40320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var r = parseFloat(jQuery.css(this.elem, this.prop, force)); 40330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return r && r > -10000 ? r : parseFloat(jQuery.curCSS(this.elem, this.prop)) || 0; 40340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 40350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 40360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Start an animation from one number to another 40370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch custom: function(from, to, unit){ 40380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.startTime = now(); 40390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.start = from; 40400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.end = to; 40410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.unit = unit || this.unit || "px"; 40420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.now = this.start; 40430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.pos = this.state = 0; 40440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 40450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var self = this; 40460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch function t(gotoEnd){ 40470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return self.step(gotoEnd); 40480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 40490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 40500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch t.elem = this.elem; 40510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 40520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( t() && jQuery.timers.push(t) && !timerId ) { 40530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch timerId = setInterval(function(){ 40540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var timers = jQuery.timers; 40550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 40560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( var i = 0; i < timers.length; i++ ) 40570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !timers[i]() ) 40580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch timers.splice(i--, 1); 40590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 40600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !timers.length ) { 40610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch clearInterval( timerId ); 40620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch timerId = undefined; 40630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 40640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 13); 40650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 40660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 40670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 40680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Simple 'show' function 40690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch show: function(){ 40700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Remember where we started, so that we can go back to it later 40710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.options.orig[this.prop] = jQuery.attr( this.elem.style, this.prop ); 40720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.options.show = true; 40730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 40740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Begin the animation 40750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Make sure that we start at a small width/height to avoid any 40760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // flash of content 40770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.custom(this.prop == "width" || this.prop == "height" ? 1 : 0, this.cur()); 40780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 40790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Start by showing the element 40800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery(this.elem).show(); 40810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 40820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 40830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Simple 'hide' function 40840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch hide: function(){ 40850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Remember where we started, so that we can go back to it later 40860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.options.orig[this.prop] = jQuery.attr( this.elem.style, this.prop ); 40870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.options.hide = true; 40880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 40890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Begin the animation 40900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.custom(this.cur(), 0); 40910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 40920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 40930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Each step of an animation 40940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch step: function(gotoEnd){ 40950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var t = now(); 40960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 40970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( gotoEnd || t >= this.options.duration + this.startTime ) { 40980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.now = this.end; 40990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.pos = this.state = 1; 41000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.update(); 41010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 41020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.options.curAnim[ this.prop ] = true; 41030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 41040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var done = true; 41050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( var i in this.options.curAnim ) 41060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( this.options.curAnim[i] !== true ) 41070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch done = false; 41080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 41090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( done ) { 41100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( this.options.display != null ) { 41110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Reset the overflow 41120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.elem.style.overflow = this.options.overflow; 41130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 41140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Reset the display 41150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.elem.style.display = this.options.display; 41160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( jQuery.css(this.elem, "display") == "none" ) 41170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.elem.style.display = "block"; 41180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 41190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 41200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Hide the element if the "hide" operation was done 41210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( this.options.hide ) 41220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery(this.elem).hide(); 41230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 41240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Reset the properties, if the item has been hidden or shown 41250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( this.options.hide || this.options.show ) 41260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( var p in this.options.curAnim ) 41270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.attr(this.elem.style, p, this.options.orig[p]); 41280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 41290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Execute the complete function 41300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.options.complete.call( this.elem ); 41310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 41320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 41330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return false; 41340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } else { 41350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var n = t - this.startTime; 41360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.state = n / this.options.duration; 41370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 41380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Perform the easing function, defaults to swing 41390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.pos = jQuery.easing[this.options.easing || (jQuery.easing.swing ? "swing" : "linear")](this.state, n, 0, 1, this.options.duration); 41400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.now = this.start + ((this.end - this.start) * this.pos); 41410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 41420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Perform the next step of the animation 41430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.update(); 41440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 41450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 41460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return true; 41470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 41480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 41490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}; 41500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 41510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochjQuery.extend( jQuery.fx, { 41520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch speeds:{ 41530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch slow: 600, 41540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch fast: 200, 41550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Default speed 41560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch _default: 400 41570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 41580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch step: { 41590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 41600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch opacity: function(fx){ 41610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.attr(fx.elem.style, "opacity", fx.now); 41620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 41630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 41640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch _default: function(fx){ 41650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) 41660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch fx.elem.style[ fx.prop ] = fx.now + fx.unit; 41670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch else 41680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch fx.elem[ fx.prop ] = fx.now; 41690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 41700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 41710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}); 41720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochif ( document.documentElement["getBoundingClientRect"] ) 41730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.fn.offset = function() { 41740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !this[0] ) return { top: 0, left: 0 }; 41750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( this[0] === this[0].ownerDocument.body ) return jQuery.offset.bodyOffset( this[0] ); 41760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var box = this[0].getBoundingClientRect(), doc = this[0].ownerDocument, body = doc.body, docElem = doc.documentElement, 41770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch clientTop = docElem.clientTop || body.clientTop || 0, clientLeft = docElem.clientLeft || body.clientLeft || 0, 41780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch top = box.top + (self.pageYOffset || jQuery.boxModel && docElem.scrollTop || body.scrollTop ) - clientTop, 41790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch left = box.left + (self.pageXOffset || jQuery.boxModel && docElem.scrollLeft || body.scrollLeft) - clientLeft; 41800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return { top: top, left: left }; 41810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }; 41820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochelse 41830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.fn.offset = function() { 41840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( !this[0] ) return { top: 0, left: 0 }; 41850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( this[0] === this[0].ownerDocument.body ) return jQuery.offset.bodyOffset( this[0] ); 41860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.offset.initialized || jQuery.offset.initialize(); 41870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 41880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var elem = this[0], offsetParent = elem.offsetParent, prevOffsetParent = elem, 41890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch doc = elem.ownerDocument, computedStyle, docElem = doc.documentElement, 41900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch body = doc.body, defaultView = doc.defaultView, 41910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch prevComputedStyle = defaultView.getComputedStyle(elem, null), 41920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch top = elem.offsetTop, left = elem.offsetLeft; 41930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 41940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch while ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) { 41950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch computedStyle = defaultView.getComputedStyle(elem, null); 41960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch top -= elem.scrollTop, left -= elem.scrollLeft; 41970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( elem === offsetParent ) { 41980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch top += elem.offsetTop, left += elem.offsetLeft; 41990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && /^t(able|d|h)$/i.test(elem.tagName)) ) 42000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch top += parseInt( computedStyle.borderTopWidth, 10) || 0, 42010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch left += parseInt( computedStyle.borderLeftWidth, 10) || 0; 42020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch prevOffsetParent = offsetParent, offsetParent = elem.offsetParent; 42030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 42040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== "visible" ) 42050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch top += parseInt( computedStyle.borderTopWidth, 10) || 0, 42060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch left += parseInt( computedStyle.borderLeftWidth, 10) || 0; 42070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch prevComputedStyle = computedStyle; 42080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 42090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 42100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( prevComputedStyle.position === "relative" || prevComputedStyle.position === "static" ) 42110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch top += body.offsetTop, 42120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch left += body.offsetLeft; 42130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 42140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( prevComputedStyle.position === "fixed" ) 42150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch top += Math.max(docElem.scrollTop, body.scrollTop), 42160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch left += Math.max(docElem.scrollLeft, body.scrollLeft); 42170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 42180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return { top: top, left: left }; 42190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }; 42200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 42210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochjQuery.offset = { 42220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch initialize: function() { 42230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( this.initialized ) return; 42240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var body = document.body, container = document.createElement('div'), innerDiv, checkDiv, table, td, rules, prop, bodyMarginTop = body.style.marginTop, 42250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 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>'; 42260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 42270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch rules = { position: 'absolute', top: 0, left: 0, margin: 0, border: 0, width: '1px', height: '1px', visibility: 'hidden' }; 42280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for ( prop in rules ) container.style[prop] = rules[prop]; 42290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 42300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch container.innerHTML = html; 42310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch body.insertBefore(container, body.firstChild); 42320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch innerDiv = container.firstChild, checkDiv = innerDiv.firstChild, td = innerDiv.nextSibling.firstChild.firstChild; 42330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 42340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.doesNotAddBorder = (checkDiv.offsetTop !== 5); 42350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.doesAddBorderForTableAndCells = (td.offsetTop === 5); 42360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 42370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch innerDiv.style.overflow = 'hidden', innerDiv.style.position = 'relative'; 42380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5); 42390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 42400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch body.style.marginTop = '1px'; 42410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.doesNotIncludeMarginInBodyOffset = (body.offsetTop === 0); 42420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch body.style.marginTop = bodyMarginTop; 42430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 42440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch body.removeChild(container); 42450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.initialized = true; 42460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 42470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 42480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch bodyOffset: function(body) { 42490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.offset.initialized || jQuery.offset.initialize(); 42500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var top = body.offsetTop, left = body.offsetLeft; 42510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( jQuery.offset.doesNotIncludeMarginInBodyOffset ) 42520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch top += parseInt( jQuery.curCSS(body, 'marginTop', true), 10 ) || 0, 42530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch left += parseInt( jQuery.curCSS(body, 'marginLeft', true), 10 ) || 0; 42540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return { top: top, left: left }; 42550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 42560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}; 42570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 42580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 42590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochjQuery.fn.extend({ 42600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch position: function() { 42610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var left = 0, top = 0, results; 42620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 42630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if ( this[0] ) { 42640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Get *real* offsetParent 42650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var offsetParent = this.offsetParent(), 42660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 42670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Get correct offsets 42680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch offset = this.offset(), 42690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch parentOffset = /^body|html$/i.test(offsetParent[0].tagName) ? { top: 0, left: 0 } : offsetParent.offset(); 42700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 42710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Subtract element margins 42720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // note: when an element has margin: auto the offsetLeft and marginLeft 42730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // are the same in Safari causing offset.left to incorrectly be 0 42740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch offset.top -= num( this, 'marginTop' ); 42750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch offset.left -= num( this, 'marginLeft' ); 42760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 42770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Add offsetParent borders 42780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch parentOffset.top += num( offsetParent, 'borderTopWidth' ); 42790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch parentOffset.left += num( offsetParent, 'borderLeftWidth' ); 42800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 42810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Subtract the two offsets 42820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch results = { 42830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch top: offset.top - parentOffset.top, 42840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch left: offset.left - parentOffset.left 42850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }; 42860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 42870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 42880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return results; 42890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 42900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 42910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch offsetParent: function() { 42920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var offsetParent = this[0].offsetParent || document.body; 42930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch while ( offsetParent && (!/^body|html$/i.test(offsetParent.tagName) && jQuery.css(offsetParent, 'position') == 'static') ) 42940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch offsetParent = offsetParent.offsetParent; 42950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return jQuery(offsetParent); 42960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 42970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}); 42980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 42990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 43000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch// Create scrollLeft and scrollTop methods 43010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochjQuery.each( ['Left', 'Top'], function(i, name) { 43020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var method = 'scroll' + name; 43030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 43040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.fn[ method ] = function(val) { 43050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (!this[0]) return null; 43060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 43070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return val !== undefined ? 43080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 43090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Set the scroll offset 43100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.each(function() { 43110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this == window || this == document ? 43120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch window.scrollTo( 43130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch !i ? val : jQuery(window).scrollLeft(), 43140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch i ? val : jQuery(window).scrollTop() 43150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ) : 43160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this[ method ] = val; 43170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }) : 43180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 43190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Return the scroll offset 43200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this[0] == window || this[0] == document ? 43210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch self[ i ? 'pageYOffset' : 'pageXOffset' ] || 43220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.boxModel && document.documentElement[ method ] || 43230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch document.body[ method ] : 43240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this[0][ method ]; 43250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }; 43260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}); 43270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch// Create innerHeight, innerWidth, outerHeight and outerWidth methods 43280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochjQuery.each([ "Height", "Width" ], function(i, name){ 43290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 43300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var tl = i ? "Left" : "Top", // top or left 43310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch br = i ? "Right" : "Bottom", // bottom or right 43320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch lower = name.toLowerCase(); 43330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 43340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // innerHeight and innerWidth 43350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.fn["inner" + name] = function(){ 43360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this[0] ? 43370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.css( this[0], lower, false, "padding" ) : 43380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch null; 43390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }; 43400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 43410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // outerHeight and outerWidth 43420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.fn["outer" + name] = function(margin) { 43430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this[0] ? 43440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.css( this[0], lower, false, margin ? "margin" : "border" ) : 43450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch null; 43460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }; 43470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 43480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var type = name.toLowerCase(); 43490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 43500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch jQuery.fn[ type ] = function( size ) { 43510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Get window width or height 43520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return this[0] == window ? 43530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode 43540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch document.compatMode == "CSS1Compat" && document.documentElement[ "client" + name ] || 43550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch document.body[ "client" + name ] : 43560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 43570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Get document width or height 43580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this[0] == document ? 43590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Either scroll[Width/Height] or offset[Width/Height], whichever is greater 43600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Math.max( 43610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch document.documentElement["client" + name], 43620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch document.body["scroll" + name], document.documentElement["scroll" + name], 43630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch document.body["offset" + name], document.documentElement["offset" + name] 43640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ) : 43650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 43660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Get or set width or height on the element 43670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch size === undefined ? 43680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Get width or height on the element 43690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch (this.length ? jQuery.css( this[0], type ) : null) : 43700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 43710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Set the width or height on the element (default to pixels if value is unitless) 43720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.css( type, typeof size === "string" ? size : size + "px" ); 43730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }; 43740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 43750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}); 43760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch})(); 4377