15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/*! 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * jQuery JavaScript Library v1.3.2 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * http://jquery.com/ 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (c) 2009 John Resig 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Dual licensed under the MIT and GPL licenses. 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * http://docs.jquery.com/License 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009) 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Revision: 6246 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)(function(){ 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Will speed up references to window, and allows munging its name. 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) window = this, 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Will speed up references to undefined, and allows munging its name. 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) undefined, 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Map over jQuery in case of overwrite 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _jQuery = window.jQuery, 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Map over the $ in case of overwrite 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _$ = window.$, 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery = window.jQuery = window.$ = function( selector, context ) { 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // The jQuery object is actually just the init constructor 'enhanced' 265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return new jQuery.fn.init( selector, context ); 275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // A simple way to check for HTML strings or ID strings 305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // (both of which we optimize for) 315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/, 325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Is it a simple selector 335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isSimple = /^.[^:#\[\.,]*$/; 345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.fn = jQuery.prototype = { 365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) init: function( selector, context ) { 375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Make sure that a selection was provided 385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) selector = selector || document; 395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Handle $(DOMElement) 415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( selector.nodeType ) { 425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this[0] = selector; 435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.length = 1; 445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.context = selector; 455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this; 465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Handle HTML strings 485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof selector === "string" ) { 495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Are we dealing with HTML string or an ID? 505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var match = quickExpr.exec( selector ); 515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Verify a match, and that no context was specified for #id 535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( match && (match[1] || !context) ) { 545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // HANDLE: $(html) -> $(array) 565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( match[1] ) 575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) selector = jQuery.clean( [ match[1] ], context ); 585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // HANDLE: $("#id") 605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else { 615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var elem = document.getElementById( match[3] ); 625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Handle the case where IE and Opera return items 645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // by name instead of ID 655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem && elem.id != match[3] ) 665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery().find( selector ); 675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Otherwise, we inject the element directly into the jQuery object 695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ret = jQuery( elem || [] ); 705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret.context = document; 715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret.selector = selector; 725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ret; 735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // HANDLE: $(expr, [context]) 765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // (which is just equivalent to: $(content).find(expr) 775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else 785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery( context ).find( selector ); 795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // HANDLE: $(function) 815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Shortcut for document ready 825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( jQuery.isFunction( selector ) ) 835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery( document ).ready( selector ); 845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Make sure that old selector state is passed along 865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( selector.selector && selector.context ) { 875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.selector = selector.selector; 885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.context = selector.context; 895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.setArray(jQuery.isArray( selector ) ? 925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) selector : 935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.makeArray(selector)); 945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Start with an empty selector 975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) selector: "", 985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // The current version of jQuery being used 1005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jquery: "1.3.2", 1015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // The number of elements contained in the matched element set 1035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) size: function() { 1045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.length; 1055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Get the Nth element in the matched element set OR 1085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Get the whole matched element set as a clean array 1095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get: function( num ) { 1105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return num === undefined ? 1115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Return a 'clean' array 1135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Array.prototype.slice.call( this ) : 1145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Return just the object 1165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this[ num ]; 1175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Take an array of elements and push it onto the stack 1205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // (returning the new matched element set) 1215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) pushStack: function( elems, name, selector ) { 1225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Build a new jQuery matched element set 1235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ret = jQuery( elems ); 1245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Add the old object onto the stack (as a reference) 1265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret.prevObject = this; 1275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret.context = this.context; 1295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( name === "find" ) 1315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret.selector = this.selector + (this.selector ? " " : "") + selector; 1325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else if ( name ) 1335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret.selector = this.selector + "." + name + "(" + selector + ")"; 1345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Return the newly-formed element set 1365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ret; 1375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Force the current matched set of elements to become 1405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // the specified array of elements (destroying the stack in the process) 1415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // You should use pushStack() in order to do this, but maintain the stack 1425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setArray: function( elems ) { 1435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Resetting the length to 0, then using the native Array push 1445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // is a super-fast way to populate an object with array-like properties 1455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.length = 0; 1465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Array.prototype.push.apply( this, elems ); 1475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this; 1495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Execute a callback for every element in the matched set. 1525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // (You can seed the arguments with an array of args, but this is 1535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // only used internally.) 1545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) each: function( callback, args ) { 1555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.each( this, callback, args ); 1565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Determine the position of an element within 1595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // the matched set of elements 1605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) index: function( elem ) { 1615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Locate the position of the desired element 1625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.inArray( 1635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If it receives a jQuery object, the first element is used 1645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem && elem.jquery ? elem[0] : elem 1655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) , this ); 1665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) attr: function( name, value, type ) { 1695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var options = name; 1705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Look for the case where we're accessing a style value 1725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof name === "string" ) 1735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( value === undefined ) 1745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this[0] && jQuery[ type || "attr" ]( this[0], name ); 1755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else { 1775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) options = {}; 1785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) options[ name ] = value; 1795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Check to see if we're setting style values 1825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.each(function(i){ 1835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Set all the styles 1845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( name in options ) 1855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.attr( 1865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type ? 1875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.style : 1885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this, 1895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name, jQuery.prop( this, options[ name ], type, i, name ) 1905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ); 1915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 1925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) css: function( key, value ) { 1955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // ignore negative width and height values 1965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( (key == 'width' || key == 'height') && parseFloat(value) < 0 ) 1975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value = undefined; 1985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.attr( key, value, "curCSS" ); 1995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) text: function( text ) { 2025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof text !== "object" && text != null ) 2035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) ); 2045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ret = ""; 2065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.each( text || this, function(){ 2085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.each( this.childNodes, function(){ 2095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( this.nodeType != 8 ) 2105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret += this.nodeType != 1 ? 2115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.nodeValue : 2125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.fn.text( [ this ] ); 2135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 2145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 2155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ret; 2175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) wrapAll: function( html ) { 2205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( this[0] ) { 2215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // The elements to wrap the target around 2225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var wrap = jQuery( html, this[0].ownerDocument ).clone(); 2235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( this[0].parentNode ) 2255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) wrap.insertBefore( this[0] ); 2265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) wrap.map(function(){ 2285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var elem = this; 2295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while ( elem.firstChild ) 2315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem = elem.firstChild; 2325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem; 2345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }).append(this); 2355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this; 2385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) wrapInner: function( html ) { 2415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.each(function(){ 2425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery( this ).contents().wrapAll( html ); 2435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 2445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) wrap: function( html ) { 2475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.each(function(){ 2485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery( this ).wrapAll( html ); 2495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 2505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) append: function() { 2535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.domManip(arguments, true, function(elem){ 2545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this.nodeType == 1) 2555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.appendChild( elem ); 2565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 2575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) prepend: function() { 2605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.domManip(arguments, true, function(elem){ 2615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this.nodeType == 1) 2625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.insertBefore( elem, this.firstChild ); 2635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 2645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) before: function() { 2675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.domManip(arguments, false, function(elem){ 2685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.parentNode.insertBefore( elem, this ); 2695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 2705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) after: function() { 2735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.domManip(arguments, false, function(elem){ 2745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.parentNode.insertBefore( elem, this.nextSibling ); 2755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 2765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) end: function() { 2795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.prevObject || jQuery( [] ); 2805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // For internal use only. 2835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Behaves like an Array's method, not like a jQuery method. 2845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) push: [].push, 2855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) sort: [].sort, 2865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) splice: [].splice, 2875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) find: function( selector ) { 2895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( this.length === 1 ) { 2905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ret = this.pushStack( [], "find", selector ); 2915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret.length = 0; 2925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.find( selector, this[0], ret ); 2935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ret; 2945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 2955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.pushStack( jQuery.unique(jQuery.map(this, function(elem){ 2965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.find( selector, elem ); 2975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) })), "find", selector ); 2985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) clone: function( events ) { 3025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Do the clone 3035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ret = this.map(function(){ 3045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !jQuery.support.noCloneEvent && !jQuery.isXMLDoc(this) ) { 3055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // IE copies events bound via attachEvent when 3065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // using cloneNode. Calling detachEvent on the 3075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // clone will also remove the events from the orignal 3085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // In order to get around this, we use innerHTML. 3095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Unfortunately, this means some modifications to 3105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // attributes in IE that are actually only stored 3115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // as properties will not be copied (such as the 3125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // the name attribute on an input). 3135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var html = this.outerHTML; 3145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !html ) { 3155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var div = this.ownerDocument.createElement("div"); 3165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div.appendChild( this.cloneNode(true) ); 3175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) html = div.innerHTML; 3185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.clean([html.replace(/ jQuery\d+="(?:\d+|null)"/g, "").replace(/^\s*/, "")])[0]; 3215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else 3225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.cloneNode(true); 3235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 3245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Copy the events from the original to the clone 3265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( events === true ) { 3275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var orig = this.find("*").andSelf(), i = 0; 3285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret.find("*").andSelf().each(function(){ 3305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( this.nodeName !== orig[i].nodeName ) 3315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 3325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var events = jQuery.data( orig[i], "events" ); 3345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var type in events ) { 3365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var handler in events[ type ] ) { 3375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.add( this, type, events[ type ][ handler ], events[ type ][ handler ].data ); 3385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) i++; 3425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 3435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Return the cloned set 3465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ret; 3475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) filter: function( selector ) { 3505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.pushStack( 3515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.isFunction( selector ) && 3525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.grep(this, function(elem, i){ 3535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return selector.call( elem, i ); 3545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }) || 3555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.multiFilter( selector, jQuery.grep(this, function(elem){ 3575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem.nodeType === 1; 3585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }) ), "filter", selector ); 3595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) closest: function( selector ) { 3625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var pos = jQuery.expr.match.POS.test( selector ) ? jQuery(selector) : null, 3635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) closer = 0; 3645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.map(function(){ 3665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var cur = this; 3675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while ( cur && cur.ownerDocument ) { 3685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( pos ? pos.index(cur) > -1 : jQuery(cur).is(selector) ) { 3695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.data(cur, "closest", closer); 3705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return cur; 3715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cur = cur.parentNode; 3735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) closer++; 3745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 3765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) not: function( selector ) { 3795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof selector === "string" ) 3805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // test special case where just one selector is passed in 3815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( isSimple.test( selector ) ) 3825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.pushStack( jQuery.multiFilter( selector, this, true ), "not", selector ); 3835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else 3845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) selector = jQuery.multiFilter( selector, this ); 3855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var isArrayLike = selector.length && selector[selector.length - 1] !== undefined && !selector.nodeType; 3875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.filter(function() { 3885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return isArrayLike ? jQuery.inArray( this, selector ) < 0 : this != selector; 3895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 3905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) add: function( selector ) { 3935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.pushStack( jQuery.unique( jQuery.merge( 3945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.get(), 3955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) typeof selector === "string" ? 3965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery( selector ) : 3975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.makeArray( selector ) 3985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ))); 3995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) is: function( selector ) { 4025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return !!selector && jQuery.multiFilter( selector, this ).length > 0; 4035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) hasClass: function( selector ) { 4065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return !!selector && this.is( "." + selector ); 4075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) val: function( value ) { 4105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( value === undefined ) { 4115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var elem = this[0]; 4125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem ) { 4145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if( jQuery.nodeName( elem, 'option' ) ) 4155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return (elem.attributes.value || {}).specified ? elem.value : elem.text; 4165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // We need to handle select boxes special 4185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.nodeName( elem, "select" ) ) { 4195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var index = elem.selectedIndex, 4205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) values = [], 4215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) options = elem.options, 4225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) one = elem.type == "select-one"; 4235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Nothing was selected 4255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( index < 0 ) 4265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return null; 4275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Loop through all the selected options 4295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) { 4305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var option = options[ i ]; 4315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( option.selected ) { 4335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Get the specifc value for the option 4345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value = jQuery(option).val(); 4355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // We don't need an array for one selects 4375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( one ) 4385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return value; 4395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Multi-Selects return an array 4415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) values.push( value ); 4425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 4435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 4445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return values; 4465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 4475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Everything else, we just grab the value 4495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return (elem.value || "").replace(/\r/g, ""); 4505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 4525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return undefined; 4545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 4555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof value === "number" ) 4575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value += ''; 4585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.each(function(){ 4605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( this.nodeType != 1 ) 4615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 4625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.isArray(value) && /radio|checkbox/.test( this.type ) ) 4645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.checked = (jQuery.inArray(this.value, value) >= 0 || 4655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.inArray(this.name, value) >= 0); 4665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else if ( jQuery.nodeName( this, "select" ) ) { 4685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var values = jQuery.makeArray(value); 4695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery( "option", this ).each(function(){ 4715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.selected = (jQuery.inArray( this.value, values ) >= 0 || 4725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.inArray( this.text, values ) >= 0); 4735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 4745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !values.length ) 4765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.selectedIndex = -1; 4775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else 4795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.value = value; 4805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 4815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) html: function( value ) { 4845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return value === undefined ? 4855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) (this[0] ? 4865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g, "") : 4875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) null) : 4885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.empty().append( value ); 4895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) replaceWith: function( value ) { 4925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.after( value ).remove(); 4935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) eq: function( i ) { 4965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.slice( i, +i + 1 ); 4975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) slice: function() { 5005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.pushStack( Array.prototype.slice.apply( this, arguments ), 5015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "slice", Array.prototype.slice.call(arguments).join(",") ); 5025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 5035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) map: function( callback ) { 5055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.pushStack( jQuery.map(this, function(elem, i){ 5065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return callback.call( elem, i, elem ); 5075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) })); 5085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 5095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) andSelf: function() { 5115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.add( this.prevObject ); 5125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 5135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) domManip: function( args, table, callback ) { 5155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( this[0] ) { 5165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var fragment = (this[0].ownerDocument || this[0]).createDocumentFragment(), 5175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) scripts = jQuery.clean( args, (this[0].ownerDocument || this[0]), fragment ), 5185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) first = fragment.firstChild; 5195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( first ) 5215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0, l = this.length; i < l; i++ ) 5225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callback.call( root(this[i], first), this.length > 1 || i > 0 ? 5235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fragment.cloneNode(true) : fragment ); 5245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( scripts ) 5265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.each( scripts, evalScript ); 5275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 5285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this; 5305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function root( elem, cur ) { 5325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return table && jQuery.nodeName(elem, "table") && jQuery.nodeName(cur, "tr") ? 5335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) (elem.getElementsByTagName("tbody")[0] || 5345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.appendChild(elem.ownerDocument.createElement("tbody"))) : 5355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem; 5365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 5375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 5385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 5395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Give the init function the jQuery prototype for later instantiation 5415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.fn.init.prototype = jQuery.fn; 5425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function evalScript( i, elem ) { 5445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem.src ) 5455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.ajax({ 5465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) url: elem.src, 5475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) async: false, 5485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) dataType: "script" 5495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 5505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else 5525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" ); 5535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem.parentNode ) 5555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.parentNode.removeChild( elem ); 5565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 5575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function now(){ 5595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return +new Date; 5605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 5615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.extend = jQuery.fn.extend = function() { 5635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // copy reference to target object 5645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options; 5655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Handle a deep copy situation 5675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof target === "boolean" ) { 5685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) deep = target; 5695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) target = arguments[1] || {}; 5705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // skip the boolean and the target 5715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) i = 2; 5725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 5735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Handle case when target is a string or something (possible in deep copy) 5755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof target !== "object" && !jQuery.isFunction(target) ) 5765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) target = {}; 5775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // extend jQuery itself if only one argument is passed 5795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( length == i ) { 5805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) target = this; 5815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) --i; 5825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 5835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( ; i < length; i++ ) 5855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Only deal with non-null/undefined values 5865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( (options = arguments[ i ]) != null ) 5875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Extend the base object 5885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var name in options ) { 5895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var src = target[ name ], copy = options[ name ]; 5905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Prevent never-ending loop 5925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( target === copy ) 5935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) continue; 5945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Recurse if we're merging object values 5965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( deep && copy && typeof copy === "object" && !copy.nodeType ) 5975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) target[ name ] = jQuery.extend( deep, 5985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Never move original objects, clone them 5995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) src || ( copy.length != null ? [ ] : { } ) 6005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) , copy ); 6015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Don't bring in undefined values 6035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else if ( copy !== undefined ) 6045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) target[ name ] = copy; 6055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 6075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Return the modified object 6095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return target; 6105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 6115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// exclude the following css properties to add px 6135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var exclude = /z-?index|font-?weight|opacity|zoom|line-?height/i, 6145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // cache defaultView 6155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) defaultView = document.defaultView || {}, 6165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) toString = Object.prototype.toString; 6175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.extend({ 6195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) noConflict: function( deep ) { 6205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) window.$ = _$; 6215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( deep ) 6235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) window.jQuery = _jQuery; 6245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery; 6265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 6275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // See test/unit/core.js for details concerning isFunction. 6295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Since version 1.3, DOM methods and functions like alert 6305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // aren't supported. They return false on IE (#2968). 6315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isFunction: function( obj ) { 6325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return toString.call(obj) === "[object Function]"; 6335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 6345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isArray: function( obj ) { 6365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return toString.call(obj) === "[object Array]"; 6375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 6385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // check if an element is in a (or is an) XML document 6405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isXMLDoc: function( elem ) { 6415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" || 6425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) !!elem.ownerDocument && jQuery.isXMLDoc( elem.ownerDocument ); 6435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 6445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Evalulates a script in a global context 6465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) globalEval: function( data ) { 6475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( data && /\S/.test(data) ) { 6485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Inspired by code by Andrea Giammarchi 6495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html 6505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var head = document.getElementsByTagName("head")[0] || document.documentElement, 6515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) script = document.createElement("script"); 6525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) script.type = "text/javascript"; 6545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.support.scriptEval ) 6555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) script.appendChild( document.createTextNode( data ) ); 6565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else 6575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) script.text = data; 6585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Use insertBefore instead of appendChild to circumvent an IE6 bug. 6605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // This arises when a base node is used (#2709). 6615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) head.insertBefore( script, head.firstChild ); 6625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) head.removeChild( script ); 6635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 6645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 6655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) nodeName: function( elem, name ) { 6675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem.nodeName && elem.nodeName.toUpperCase() == name.toUpperCase(); 6685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 6695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // args is for internal usage only 6715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) each: function( object, callback, args ) { 6725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var name, i = 0, length = object.length; 6735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( args ) { 6755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( length === undefined ) { 6765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( name in object ) 6775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( callback.apply( object[ name ], args ) === false ) 6785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 6795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else 6805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( ; i < length; ) 6815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( callback.apply( object[ i++ ], args ) === false ) 6825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 6835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // A special, fast, case for the most common use of each 6855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 6865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( length === undefined ) { 6875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( name in object ) 6885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( callback.call( object[ name ], name, object[ name ] ) === false ) 6895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 6905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else 6915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var value = object[0]; 6925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) i < length && callback.call( value, i, value ) !== false; value = object[++i] ){} 6935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 6945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return object; 6965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 6975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) prop: function( elem, value, type, i, name ) { 6995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Handle executable functions 7005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.isFunction( value ) ) 7015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value = value.call( elem, i ); 7025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Handle passing in a number to a CSS property 7045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return typeof value === "number" && type == "curCSS" && !exclude.test( name ) ? 7055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value + "px" : 7065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value; 7075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 7085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) className: { 7105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // internal only, use addClass("class") 7115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) add: function( elem, classNames ) { 7125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.each((classNames || "").split(/\s+/), function(i, className){ 7135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem.nodeType == 1 && !jQuery.className.has( elem.className, className ) ) 7145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.className += (elem.className ? " " : "") + className; 7155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 7165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 7175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // internal only, use removeClass("class") 7195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) remove: function( elem, classNames ) { 7205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (elem.nodeType == 1) 7215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.className = classNames !== undefined ? 7225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.grep(elem.className.split(/\s+/), function(className){ 7235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return !jQuery.className.has( classNames, className ); 7245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }).join(" ") : 7255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ""; 7265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 7275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // internal only, use hasClass("class") 7295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) has: function( elem, className ) { 7305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem && jQuery.inArray( className, (elem.className || elem).toString().split(/\s+/) ) > -1; 7315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 7325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 7335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // A method for quickly swapping in/out CSS properties to get correct calculations 7355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) swap: function( elem, options, callback ) { 7365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var old = {}; 7375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Remember the old values, and insert the new ones 7385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var name in options ) { 7395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) old[ name ] = elem.style[ name ]; 7405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.style[ name ] = options[ name ]; 7415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 7425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callback.call( elem ); 7445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Revert the old values 7465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var name in options ) 7475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.style[ name ] = old[ name ]; 7485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 7495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) css: function( elem, name, force, extra ) { 7515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( name == "width" || name == "height" ) { 7525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var val, props = { position: "absolute", visibility: "hidden", display:"block" }, which = name == "width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ]; 7535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function getWH() { 7555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) val = name == "width" ? elem.offsetWidth : elem.offsetHeight; 7565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( extra === "border" ) 7585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 7595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.each( which, function() { 7615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !extra ) 7625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) val -= parseFloat(jQuery.curCSS( elem, "padding" + this, true)) || 0; 7635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( extra === "margin" ) 7645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) val += parseFloat(jQuery.curCSS( elem, "margin" + this, true)) || 0; 7655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else 7665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) val -= parseFloat(jQuery.curCSS( elem, "border" + this + "Width", true)) || 0; 7675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 7685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 7695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem.offsetWidth !== 0 ) 7715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) getWH(); 7725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else 7735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.swap( elem, props, getWH ); 7745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return Math.max(0, Math.round(val)); 7765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 7775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.curCSS( elem, name, force ); 7795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 7805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) curCSS: function( elem, name, force ) { 7825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ret, style = elem.style; 7835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // We need to handle opacity special in IE 7855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( name == "opacity" && !jQuery.support.opacity ) { 7865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret = jQuery.attr( style, "opacity" ); 7875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ret == "" ? 7895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "1" : 7905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret; 7915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 7925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Make sure we're using the right name for getting the float value 7945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( name.match( /float/i ) ) 7955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name = styleFloat; 7965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !force && style && style[ name ] ) 7985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret = style[ name ]; 7995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else if ( defaultView.getComputedStyle ) { 8015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Only "float" is needed here 8035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( name.match( /float/i ) ) 8045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name = "float"; 8055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name = name.replace( /([A-Z])/g, "-$1" ).toLowerCase(); 8075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var computedStyle = defaultView.getComputedStyle( elem, null ); 8095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( computedStyle ) 8115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret = computedStyle.getPropertyValue( name ); 8125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // We should always get a number back from opacity 8145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( name == "opacity" && ret == "" ) 8155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret = "1"; 8165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( elem.currentStyle ) { 8185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var camelCase = name.replace(/\-(\w)/g, function(all, letter){ 8195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return letter.toUpperCase(); 8205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 8215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret = elem.currentStyle[ name ] || elem.currentStyle[ camelCase ]; 8235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // From the awesome hack by Dean Edwards 8255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291 8265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If we're not dealing with a regular pixel number 8285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // but a number that has a weird ending, we need to convert it to pixels 8295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !/^\d+(px)?$/i.test( ret ) && /^\d/.test( ret ) ) { 8305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Remember the original values 8315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var left = style.left, rsLeft = elem.runtimeStyle.left; 8325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Put in the new values to get a computed value out 8345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.runtimeStyle.left = elem.currentStyle.left; 8355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) style.left = ret || 0; 8365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret = style.pixelLeft + "px"; 8375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Revert the changed values 8395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) style.left = left; 8405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.runtimeStyle.left = rsLeft; 8415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 8425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 8435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ret; 8455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 8465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) clean: function( elems, context, fragment ) { 8485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) context = context || document; 8495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // !context.createElement fails in IE with an error but returns typeof 'object' 8515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof context.createElement === "undefined" ) 8525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) context = context.ownerDocument || context[0] && context[0].ownerDocument || document; 8535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If a single string is passed in and it's a single tag 8555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // just do a createElement and skip the rest 8565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !fragment && elems.length === 1 && typeof elems[0] === "string" ) { 8575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var match = /^<(\w+)\s*\/?>$/.exec(elems[0]); 8585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( match ) 8595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return [ context.createElement( match[1] ) ]; 8605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 8615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ret = [], scripts = [], div = context.createElement("div"); 8635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.each(elems, function(i, elem){ 8655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof elem === "number" ) 8665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem += ''; 8675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !elem ) 8695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 8705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Convert html string into DOM nodes 8725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof elem === "string" ) { 8735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Fix "XHTML"-style tags in all browsers 8745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem = elem.replace(/(<(\w+)[^>]*?)\/>/g, function(all, front, tag){ 8755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i) ? 8765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) all : 8775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) front + "></" + tag + ">"; 8785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 8795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Trim whitespace, otherwise indexOf won't work as expected 8815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var tags = elem.replace(/^\s+/, "").substring(0, 10).toLowerCase(); 8825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var wrap = 8845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // option or optgroup 8855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) !tags.indexOf("<opt") && 8865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) [ 1, "<select multiple='multiple'>", "</select>" ] || 8875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) !tags.indexOf("<leg") && 8895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) [ 1, "<fieldset>", "</fieldset>" ] || 8905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) tags.match(/^<(thead|tbody|tfoot|colg|cap)/) && 8925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) [ 1, "<table>", "</table>" ] || 8935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) !tags.indexOf("<tr") && 8955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) [ 2, "<table><tbody>", "</tbody></table>" ] || 8965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // <thead> matched above 8985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) (!tags.indexOf("<td") || !tags.indexOf("<th")) && 8995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ] || 9005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) !tags.indexOf("<col") && 9025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ] || 9035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // IE can't serialize <link> and <script> tags normally 9055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) !jQuery.support.htmlSerialize && 9065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) [ 1, "div<div>", "</div>" ] || 9075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) [ 0, "", "" ]; 9095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Go to html and back, then peel off extra wrappers 9115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div.innerHTML = wrap[1] + elem + wrap[2]; 9125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Move to the right depth 9145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while ( wrap[0]-- ) 9155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div = div.lastChild; 9165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Remove IE's autoinserted <tbody> from table fragments 9185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !jQuery.support.tbody ) { 9195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // String was a <table>, *may* have spurious <tbody> 9215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var hasBody = /<tbody/i.test(elem), 9225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) tbody = !tags.indexOf("<table") && !hasBody ? 9235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div.firstChild && div.firstChild.childNodes : 9245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // String was a bare <thead> or <tfoot> 9265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) wrap[1] == "<table>" && !hasBody ? 9275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div.childNodes : 9285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) []; 9295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var j = tbody.length - 1; j >= 0 ; --j ) 9315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) 9325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) tbody[ j ].parentNode.removeChild( tbody[ j ] ); 9335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 9355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // IE completely kills leading whitespace when innerHTML is used 9375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !jQuery.support.leadingWhitespace && /^\s/.test( elem ) ) 9385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div.insertBefore( context.createTextNode( elem.match(/^\s*/)[0] ), div.firstChild ); 9395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem = jQuery.makeArray( div.childNodes ); 9415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 9425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem.nodeType ) 9445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret.push( elem ); 9455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else 9465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret = jQuery.merge( ret, elem ); 9475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 9495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( fragment ) { 9515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0; ret[i]; i++ ) { 9525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.nodeName( ret[i], "script" ) && (!ret[i].type || ret[i].type.toLowerCase() === "text/javascript") ) { 9535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) scripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] ); 9545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 9555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( ret[i].nodeType === 1 ) 9565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName("script"))) ); 9575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fragment.appendChild( ret[i] ); 9585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 9595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 9605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return scripts; 9625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 9635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ret; 9655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 9665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) attr: function( elem, name, value ) { 9685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // don't set attributes on text and comment nodes 9695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!elem || elem.nodeType == 3 || elem.nodeType == 8) 9705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return undefined; 9715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var notxml = !jQuery.isXMLDoc( elem ), 9735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Whether we are setting (or getting) 9745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) set = value !== undefined; 9755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Try to normalize/fix the name 9775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name = notxml && jQuery.props[ name ] || name; 9785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Only do all the following if this is a node (faster for style) 9805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // IE elem.getAttribute passes even for style 9815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem.tagName ) { 9825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // These attributes require special treatment 9845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var special = /href|src|style/.test( name ); 9855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Safari mis-reports the default selected property of a hidden option 9875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Accessing the parent's selectedIndex property fixes it 9885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( name == "selected" && elem.parentNode ) 9895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.parentNode.selectedIndex; 9905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If applicable, access the attribute via the DOM 0 way 9925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( name in elem && notxml && !special ) { 9935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( set ){ 9945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // We can't allow the type property to be changed (since it causes problems in IE) 9955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( name == "type" && jQuery.nodeName( elem, "input" ) && elem.parentNode ) 9965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) throw "type property can't be changed"; 9975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem[ name ] = value; 9995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 10005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // browsers index elements by id/name on forms, give priority to attributes. 10025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if( jQuery.nodeName( elem, "form" ) && elem.getAttributeNode(name) ) 10035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem.getAttributeNode( name ).nodeValue; 10045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set 10065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ 10075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( name == "tabIndex" ) { 10085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var attributeNode = elem.getAttributeNode( "tabIndex" ); 10095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return attributeNode && attributeNode.specified 10105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ? attributeNode.value 10115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) : elem.nodeName.match(/(button|input|object|select|textarea)/i) 10125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ? 0 10135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) : elem.nodeName.match(/^(a|area)$/i) && elem.href 10145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ? 0 10155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) : undefined; 10165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 10175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem[ name ]; 10195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 10205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !jQuery.support.style && notxml && name == "style" ) 10225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.attr( elem.style, "cssText", value ); 10235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( set ) 10255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // convert the value to a string (all browsers do this but IE) see #1070 10265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.setAttribute( name, "" + value ); 10275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var attr = !jQuery.support.hrefNormalized && notxml && special 10295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Some attributes require a special call on IE 10305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ? elem.getAttribute( name, 2 ) 10315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) : elem.getAttribute( name ); 10325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Non-existent attributes return null, we normalize to undefined 10345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return attr === null ? undefined : attr; 10355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 10365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // elem is actually elem.style ... set the style 10385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // IE uses filters for opacity 10405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !jQuery.support.opacity && name == "opacity" ) { 10415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( set ) { 10425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // IE has trouble with opacity if it does not have layout 10435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Force it by setting the zoom level 10445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.zoom = 1; 10455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Set the alpha filter to set the opacity 10475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.filter = (elem.filter || "").replace( /alpha\([^)]*\)/, "" ) + 10485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) (parseInt( value ) + '' == "NaN" ? "" : "alpha(opacity=" + value * 100 + ")"); 10495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 10505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem.filter && elem.filter.indexOf("opacity=") >= 0 ? 10525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) (parseFloat( elem.filter.match(/opacity=([^)]*)/)[1] ) / 100) + '': 10535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ""; 10545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 10555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name = name.replace(/-([a-z])/ig, function(all, letter){ 10575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return letter.toUpperCase(); 10585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 10595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( set ) 10615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem[ name ] = value; 10625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem[ name ]; 10645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 10655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) trim: function( text ) { 10675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return (text || "").replace( /^\s+|\s+$/g, "" ); 10685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 10695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) makeArray: function( array ) { 10715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ret = []; 10725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if( array != null ){ 10745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var i = array.length; 10755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // The window, strings (and functions) also have 'length' 10765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if( i == null || typeof array === "string" || jQuery.isFunction(array) || array.setInterval ) 10775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret[0] = array; 10785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else 10795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while( i ) 10805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret[--i] = array[i]; 10815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 10825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ret; 10845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 10855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inArray: function( elem, array ) { 10875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0, length = array.length; i < length; i++ ) 10885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Use === because on IE, window == document 10895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( array[ i ] === elem ) 10905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return i; 10915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return -1; 10935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 10945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) merge: function( first, second ) { 10965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // We have to loop this way because IE & Opera overwrite the length 10975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // expando of getElementsByTagName 10985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var i = 0, elem, pos = first.length; 10995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Also, we need to make sure that the correct elements are being returned 11005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // (IE returns comment nodes in a '*' query) 11015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !jQuery.support.getAll ) { 11025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while ( (elem = second[ i++ ]) != null ) 11035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem.nodeType != 8 ) 11045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) first[ pos++ ] = elem; 11055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else 11075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while ( (elem = second[ i++ ]) != null ) 11085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) first[ pos++ ] = elem; 11095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return first; 11115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 11125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) unique: function( array ) { 11145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ret = [], done = {}; 11155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) try { 11175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0, length = array.length; i < length; i++ ) { 11195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var id = jQuery.data( array[ i ] ); 11205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !done[ id ] ) { 11225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) done[ id ] = true; 11235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret.push( array[ i ] ); 11245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 11255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 11265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } catch( e ) { 11285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret = array; 11295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 11305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ret; 11325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 11335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) grep: function( elems, callback, inv ) { 11355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ret = []; 11365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Go through the array, only saving the items 11385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // that pass the validator function 11395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0, length = elems.length; i < length; i++ ) 11405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !inv != !callback( elems[ i ], i ) ) 11415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret.push( elems[ i ] ); 11425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ret; 11445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 11455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) map: function( elems, callback ) { 11475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ret = []; 11485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Go through the array, translating each of the items to their 11505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // new value (or values). 11515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0, length = elems.length; i < length; i++ ) { 11525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var value = callback( elems[ i ], i ); 11535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( value != null ) 11555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret[ ret.length ] = value; 11565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 11575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ret.concat.apply( [], ret ); 11595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 11605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 11615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Use of jQuery.browser is deprecated. 11635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// It's included for backwards compatibility and plugins, 11645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// although they should work to migrate away. 11655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var userAgent = navigator.userAgent.toLowerCase(); 11675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Figure out what browser is being used 11695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.browser = { 11705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) version: (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1], 11715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) safari: /webkit/.test( userAgent ), 11725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) opera: /opera/.test( userAgent ), 11735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) msie: /msie/.test( userAgent ) && !/opera/.test( userAgent ), 11745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) mozilla: /mozilla/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent ) 11755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 11765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.each({ 11785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) parent: function(elem){return elem.parentNode;}, 11795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) parents: function(elem){return jQuery.dir(elem,"parentNode");}, 11805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) next: function(elem){return jQuery.nth(elem,2,"nextSibling");}, 11815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) prev: function(elem){return jQuery.nth(elem,2,"previousSibling");}, 11825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) nextAll: function(elem){return jQuery.dir(elem,"nextSibling");}, 11835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) prevAll: function(elem){return jQuery.dir(elem,"previousSibling");}, 11845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) siblings: function(elem){return jQuery.sibling(elem.parentNode.firstChild,elem);}, 11855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) children: function(elem){return jQuery.sibling(elem.firstChild);}, 11865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) contents: function(elem){return jQuery.nodeName(elem,"iframe")?elem.contentDocument||elem.contentWindow.document:jQuery.makeArray(elem.childNodes);} 11875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, function(name, fn){ 11885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.fn[ name ] = function( selector ) { 11895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ret = jQuery.map( this, fn ); 11905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( selector && typeof selector == "string" ) 11925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret = jQuery.multiFilter( selector, ret ); 11935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.pushStack( jQuery.unique( ret ), name, selector ); 11955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 11965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 11975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.each({ 11995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) appendTo: "append", 12005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) prependTo: "prepend", 12015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) insertBefore: "before", 12025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) insertAfter: "after", 12035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) replaceAll: "replaceWith" 12045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, function(name, original){ 12055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.fn[ name ] = function( selector ) { 12065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ret = [], insert = jQuery( selector ); 12075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0, l = insert.length; i < l; i++ ) { 12095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var elems = (i > 0 ? this.clone(true) : this).get(); 12105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.fn[ original ].apply( jQuery(insert[i]), elems ); 12115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret = ret.concat( elems ); 12125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 12135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.pushStack( ret, name, selector ); 12155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 12165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 12175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.each({ 12195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) removeAttr: function( name ) { 12205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.attr( this, name, "" ); 12215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this.nodeType == 1) 12225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.removeAttribute( name ); 12235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 12245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) addClass: function( classNames ) { 12265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.className.add( this, classNames ); 12275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 12285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) removeClass: function( classNames ) { 12305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.className.remove( this, classNames ); 12315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 12325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) toggleClass: function( classNames, state ) { 12345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if( typeof state !== "boolean" ) 12355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) state = !jQuery.className.has( this, classNames ); 12365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.className[ state ? "add" : "remove" ]( this, classNames ); 12375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 12385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) remove: function( selector ) { 12405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !selector || jQuery.filter( selector, [ this ] ).length ) { 12415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Prevent memory leaks 12425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery( "*", this ).add([this]).each(function(){ 12435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.remove(this); 12445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.removeData(this); 12455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 12465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this.parentNode) 12475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.parentNode.removeChild( this ); 12485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 12495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 12505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) empty: function() { 12525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Remove element nodes and prevent memory leaks 12535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery(this).children().remove(); 12545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Remove any remaining nodes 12565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while ( this.firstChild ) 12575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.removeChild( this.firstChild ); 12585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 12595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, function(name, fn){ 12605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.fn[ name ] = function(){ 12615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.each( fn, arguments ); 12625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 12635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 12645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Helper function used by the dimensions and offset modules 12665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function num(elem, prop) { 12675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem[0] && parseInt( jQuery.curCSS(elem[0], prop, true), 10 ) || 0; 12685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 126907a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdochvar expando = "jQuery" + now(), uuid = 0, windowData = {}; 127007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 127107a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben MurdochjQuery.extend({ 127207a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch cache: {}, 127307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 127407a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch data: function( elem, name, data ) { 127507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch elem = elem == window ? 127607a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch windowData : 127707a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch elem; 127807a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 127907a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch var id = elem[ expando ]; 128007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 128107a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch // Compute a unique ID for the element 128207a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch if ( !id ) 128307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch id = elem[ expando ] = ++uuid; 128407a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 128507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch // Only generate the data cache if we're 128607a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch // trying to access or manipulate it 128707a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch if ( name && !jQuery.cache[ id ] ) 128807a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch jQuery.cache[ id ] = {}; 128907a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 129007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch // Prevent overriding the named cache with undefined values 129107a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch if ( data !== undefined ) 129207a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch jQuery.cache[ id ][ name ] = data; 129307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 129407a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch // Return the named cache data, or the ID for the element 129507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch return name ? 129607a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch jQuery.cache[ id ][ name ] : 129707a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch id; 129807a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch }, 129907a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 130007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch removeData: function( elem, name ) { 130107a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch elem = elem == window ? 130207a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch windowData : 130307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch elem; 130407a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 130507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch var id = elem[ expando ]; 130607a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 130707a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch // If we want to remove a specific section of the element's data 130807a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch if ( name ) { 130907a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch if ( jQuery.cache[ id ] ) { 131007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch // Remove the section of cache data 131107a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch delete jQuery.cache[ id ][ name ]; 131207a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 131307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch // If we've removed all the data, remove the element's cache 131407a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch name = ""; 131507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 131607a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch for ( name in jQuery.cache[ id ] ) 131707a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch break; 131807a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 131907a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch if ( !name ) 132007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch jQuery.removeData( elem ); 132107a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch } 132207a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 132307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch // Otherwise, we want to remove all of the element's data 132407a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch } else { 132507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch // Clean up the element expando 132607a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch try { 132707a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch delete elem[ expando ]; 132807a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch } catch(e){ 132907a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch // IE has trouble directly removing the expando 133007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch // but it's ok with using removeAttribute 133107a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch if ( elem.removeAttribute ) 133207a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch elem.removeAttribute( expando ); 133307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch } 133407a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 133507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch // Completely remove the data cache 133607a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch delete jQuery.cache[ id ]; 133707a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch } 133807a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch }, 133907a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch queue: function( elem, type, data ) { 134007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch if ( elem ){ 134107a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 134207a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch type = (type || "fx") + "queue"; 134307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 134407a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch var q = jQuery.data( elem, type ); 134507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 134607a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch if ( !q || jQuery.isArray(data) ) 134707a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch q = jQuery.data( elem, type, jQuery.makeArray(data) ); 134807a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch else if( data ) 134907a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch q.push( data ); 135007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 135107a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch } 135207a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch return q; 135307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch }, 135407a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 135507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch dequeue: function( elem, type ){ 135607a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch var queue = jQuery.queue( elem, type ), 135707a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch fn = queue.shift(); 135807a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 135907a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch if( !type || type === "fx" ) 136007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch fn = queue[0]; 136107a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 136207a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch if( fn !== undefined ) 136307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch fn.call(elem); 136407a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch } 136507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch}); 136607a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 136707a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben MurdochjQuery.fn.extend({ 136807a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch data: function( key, value ){ 136907a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch var parts = key.split("."); 137007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch parts[1] = parts[1] ? "." + parts[1] : ""; 137107a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 137207a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch if ( value === undefined ) { 137307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]); 137407a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 137507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch if ( data === undefined && this.length ) 137607a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch data = jQuery.data( this[0], key ); 137707a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 137807a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch return data === undefined && parts[1] ? 137907a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch this.data( parts[0] ) : 138007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch data; 138107a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch } else 138207a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch return this.trigger("setData" + parts[1] + "!", [parts[0], value]).each(function(){ 138307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch jQuery.data( this, key, value ); 138407a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch }); 138507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch }, 138607a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 138707a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch removeData: function( key ){ 138807a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch return this.each(function(){ 138907a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch jQuery.removeData( this, key ); 139007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch }); 139107a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch }, 139207a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch queue: function(type, data){ 139307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch if ( typeof type !== "string" ) { 139407a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch data = type; 139507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch type = "fx"; 139607a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch } 139707a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 139807a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch if ( data === undefined ) 139907a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch return jQuery.queue( this[0], type ); 140007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 140107a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch return this.each(function(){ 140207a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch var queue = jQuery.queue( this, type, data ); 140307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 140407a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch if( type == "fx" && queue.length == 1 ) 140507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch queue[0].call(this); 140607a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch }); 140707a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch }, 140807a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch dequeue: function(type){ 140907a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch return this.each(function(){ 141007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch jQuery.dequeue( this, type ); 141107a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch }); 141207a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch } 14135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)});/*! 14145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Sizzle CSS Selector Engine - v0.9.3 14155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright 2009, The Dojo Foundation 14165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Released under the MIT, BSD, and GPL Licenses. 14175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * More information: http://sizzlejs.com/ 14185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 14195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)(function(){ 14205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g, 14225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) done = 0, 14235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) toString = Object.prototype.toString; 14245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var Sizzle = function(selector, context, results, seed) { 14265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) results = results || []; 14275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) context = context || document; 14285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( context.nodeType !== 1 && context.nodeType !== 9 ) 14305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return []; 14315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !selector || typeof selector !== "string" ) { 14335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return results; 14345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 14355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var parts = [], m, set, checkSet, check, mode, extra, prune = true; 14375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Reset the position of the chunker regexp (start from head) 14395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) chunker.lastIndex = 0; 14405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while ( (m = chunker.exec(selector)) !== null ) { 14425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) parts.push( m[1] ); 14435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( m[2] ) { 14455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) extra = RegExp.rightContext; 14465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 14475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 14485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 14495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( parts.length > 1 && origPOS.exec( selector ) ) { 14515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { 14525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) set = posProcess( parts[0] + parts[1], context ); 14535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 14545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) set = Expr.relative[ parts[0] ] ? 14555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) [ context ] : 14565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Sizzle( parts.shift(), context ); 14575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while ( parts.length ) { 14595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) selector = parts.shift(); 14605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( Expr.relative[ selector ] ) 14625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) selector += parts.shift(); 14635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) set = posProcess( selector, set ); 14655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 14665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 14675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 14685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ret = seed ? 14695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { expr: parts.pop(), set: makeArray(seed) } : 14705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Sizzle.find( parts.pop(), parts.length === 1 && context.parentNode ? context.parentNode : context, isXML(context) ); 14715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) set = Sizzle.filter( ret.expr, ret.set ); 14725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( parts.length > 0 ) { 14745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) checkSet = makeArray(set); 14755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 14765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) prune = false; 14775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 14785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while ( parts.length ) { 14805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var cur = parts.pop(), pop = cur; 14815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !Expr.relative[ cur ] ) { 14835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cur = ""; 14845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 14855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) pop = parts.pop(); 14865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 14875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( pop == null ) { 14895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) pop = context; 14905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 14915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Expr.relative[ cur ]( checkSet, pop, isXML(context) ); 14935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 14945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 14955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !checkSet ) { 14975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) checkSet = set; 14985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 14995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !checkSet ) { 15015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) throw "Syntax error, unrecognized expression: " + (cur || selector); 15025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 15035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( toString.call(checkSet) === "[object Array]" ) { 15055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !prune ) { 15065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) results.push.apply( results, checkSet ); 15075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( context.nodeType === 1 ) { 15085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0; checkSet[i] != null; i++ ) { 15095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) { 15105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) results.push( set[i] ); 15115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 15125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 15135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 15145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0; checkSet[i] != null; i++ ) { 15155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( checkSet[i] && checkSet[i].nodeType === 1 ) { 15165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) results.push( set[i] ); 15175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 15185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 15195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 15205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 15215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) makeArray( checkSet, results ); 15225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 15235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( extra ) { 15255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Sizzle( extra, context, results, seed ); 15265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( sortOrder ) { 15285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) hasDuplicate = false; 15295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) results.sort(sortOrder); 15305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( hasDuplicate ) { 15325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 1; i < results.length; i++ ) { 15335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( results[i] === results[i-1] ) { 15345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) results.splice(i--, 1); 15355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 15365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 15375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 15385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 15395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 15405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return results; 15425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 15435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Sizzle.matches = function(expr, set){ 15455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return Sizzle(expr, null, null, set); 15465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 15475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Sizzle.find = function(expr, context, isXML){ 15495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var set, match; 15505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !expr ) { 15525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return []; 15535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 15545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0, l = Expr.order.length; i < l; i++ ) { 15565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var type = Expr.order[i], match; 15575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( (match = Expr.match[ type ].exec( expr )) ) { 15595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var left = RegExp.leftContext; 15605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( left.substr( left.length - 1 ) !== "\\" ) { 15625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) match[1] = (match[1] || "").replace(/\\/g, ""); 15635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) set = Expr.find[ type ]( match, context, isXML ); 15645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( set != null ) { 15655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expr = expr.replace( Expr.match[ type ], "" ); 15665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 15675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 15685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 15695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 15705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 15715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !set ) { 15735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) set = context.getElementsByTagName("*"); 15745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 15755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return {set: set, expr: expr}; 15775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 15785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Sizzle.filter = function(expr, set, inplace, not){ 15805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var old = expr, result = [], curLoop = set, match, anyFound, 15815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isXMLFilter = set && set[0] && isXML(set[0]); 15825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while ( expr && set.length ) { 15845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var type in Expr.filter ) { 15855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( (match = Expr.match[ type ].exec( expr )) != null ) { 15865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var filter = Expr.filter[ type ], found, item; 15875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) anyFound = false; 15885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( curLoop == result ) { 15905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) result = []; 15915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 15925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( Expr.preFilter[ type ] ) { 15945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); 15955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !match ) { 15975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) anyFound = found = true; 15985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( match === true ) { 15995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) continue; 16005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 16015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 16025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 16035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( match ) { 16045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0; (item = curLoop[i]) != null; i++ ) { 16055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( item ) { 16065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) found = filter( item, match, i, curLoop ); 16075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var pass = not ^ !!found; 16085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 16095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( inplace && found != null ) { 16105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( pass ) { 16115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) anyFound = true; 16125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 16135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) curLoop[i] = false; 16145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 16155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( pass ) { 16165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) result.push( item ); 16175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) anyFound = true; 16185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 16195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 16205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 16215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 16225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 16235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( found !== undefined ) { 16245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !inplace ) { 16255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) curLoop = result; 16265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 16275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 16285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expr = expr.replace( Expr.match[ type ], "" ); 16295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 16305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !anyFound ) { 16315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return []; 16325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 16335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 16345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 16355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 16365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 16375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 16385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 16395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Improper expression 16405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( expr == old ) { 16415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( anyFound == null ) { 16425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) throw "Syntax error, unrecognized expression: " + expr; 16435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 16445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 16455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 16465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 16475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 16485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) old = expr; 16495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 16505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 16515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return curLoop; 16525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 16535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 16545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var Expr = Sizzle.selectors = { 16555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) order: [ "ID", "NAME", "TAG" ], 16565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) match: { 16575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ID: /#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/, 16585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) CLASS: /\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/, 16595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/, 16605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ATTR: /\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/, 16615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) TAG: /^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/, 16625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/, 16635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/, 16645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) PSEUDO: /:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/ 16655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 16665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) attrMap: { 16675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "class": "className", 16685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "for": "htmlFor" 16695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 16705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) attrHandle: { 16715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) href: function(elem){ 16725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem.getAttribute("href"); 16735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 16745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 16755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) relative: { 16765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "+": function(checkSet, part, isXML){ 16775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var isPartStr = typeof part === "string", 16785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isTag = isPartStr && !/\W/.test(part), 16795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isPartStrNotTag = isPartStr && !isTag; 16805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 16815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( isTag && !isXML ) { 16825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) part = part.toUpperCase(); 16835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 16845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 16855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { 16865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( (elem = checkSet[i]) ) { 16875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} 16885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 16895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) checkSet[i] = isPartStrNotTag || elem && elem.nodeName === part ? 16905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem || false : 16915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem === part; 16925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 16935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 16945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 16955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( isPartStrNotTag ) { 16965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Sizzle.filter( part, checkSet, true ); 16975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 16985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 16995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ">": function(checkSet, part, isXML){ 17005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var isPartStr = typeof part === "string"; 17015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 17025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( isPartStr && !/\W/.test(part) ) { 17035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) part = isXML ? part : part.toUpperCase(); 17045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 17055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0, l = checkSet.length; i < l; i++ ) { 17065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var elem = checkSet[i]; 17075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem ) { 17085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var parent = elem.parentNode; 17095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) checkSet[i] = parent.nodeName === part ? parent : false; 17105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 17115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 17125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 17135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0, l = checkSet.length; i < l; i++ ) { 17145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var elem = checkSet[i]; 17155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem ) { 17165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) checkSet[i] = isPartStr ? 17175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.parentNode : 17185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.parentNode === part; 17195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 17205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 17215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 17225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( isPartStr ) { 17235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Sizzle.filter( part, checkSet, true ); 17245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 17255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 17265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 17275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "": function(checkSet, part, isXML){ 17285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var doneName = done++, checkFn = dirCheck; 17295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 17305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !part.match(/\W/) ) { 17315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var nodeCheck = part = isXML ? part : part.toUpperCase(); 17325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) checkFn = dirNodeCheck; 17335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 17345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 17355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML); 17365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 17375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "~": function(checkSet, part, isXML){ 17385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var doneName = done++, checkFn = dirCheck; 17395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 17405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof part === "string" && !part.match(/\W/) ) { 17415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var nodeCheck = part = isXML ? part : part.toUpperCase(); 17425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) checkFn = dirNodeCheck; 17435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 17445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 17455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML); 17465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 17475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 17485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) find: { 17495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ID: function(match, context, isXML){ 17505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof context.getElementById !== "undefined" && !isXML ) { 17515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var m = context.getElementById(match[1]); 17525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return m ? [m] : []; 17535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 17545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 17555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) NAME: function(match, context, isXML){ 17565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof context.getElementsByName !== "undefined" ) { 17575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ret = [], results = context.getElementsByName(match[1]); 17585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 17595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0, l = results.length; i < l; i++ ) { 17605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( results[i].getAttribute("name") === match[1] ) { 17615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret.push( results[i] ); 17625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 17635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 17645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 17655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ret.length === 0 ? null : ret; 17665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 17675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 17685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) TAG: function(match, context){ 17695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return context.getElementsByTagName(match[1]); 17705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 17715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 17725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) preFilter: { 17735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) CLASS: function(match, curLoop, inplace, result, not, isXML){ 17745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) match = " " + match[1].replace(/\\/g, "") + " "; 17755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 17765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( isXML ) { 17775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return match; 17785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 17795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 17805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { 17815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem ) { 17825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( not ^ (elem.className && (" " + elem.className + " ").indexOf(match) >= 0) ) { 17835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !inplace ) 17845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) result.push( elem ); 17855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( inplace ) { 17865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) curLoop[i] = false; 17875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 17885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 17895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 17905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 17915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 17925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 17935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ID: function(match){ 17945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return match[1].replace(/\\/g, ""); 17955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 17965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) TAG: function(match, curLoop){ 17975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0; curLoop[i] === false; i++ ){} 17985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase(); 17995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 18005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) CHILD: function(match){ 18015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( match[1] == "nth" ) { 18025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6' 18035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec( 18045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" || 18055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); 18065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 18075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // calculate the numbers (first)n+(last) including if they are negative 18085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) match[2] = (test[1] + (test[2] || 1)) - 0; 18095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) match[3] = test[3] - 0; 18105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 18115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 18125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // TODO: Move to normal caching system 18135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) match[0] = done++; 18145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 18155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return match; 18165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 18175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ATTR: function(match, curLoop, inplace, result, not, isXML){ 18185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var name = match[1].replace(/\\/g, ""); 18195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 18205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !isXML && Expr.attrMap[name] ) { 18215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) match[1] = Expr.attrMap[name]; 18225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 18235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 18245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( match[2] === "~=" ) { 18255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) match[4] = " " + match[4] + " "; 18265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 18275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 18285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return match; 18295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 18305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) PSEUDO: function(match, curLoop, inplace, result, not){ 18315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( match[1] === "not" ) { 18325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If we're dealing with a complex expression, or a simple one 18335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( match[3].match(chunker).length > 1 || /^\w/.test(match[3]) ) { 18345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) match[3] = Sizzle(match[3], null, null, curLoop); 18355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 18365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); 18375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !inplace ) { 18385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) result.push.apply( result, ret ); 18395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 18405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 18415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 18425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { 18435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return true; 18445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 18455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 18465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return match; 18475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 18485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) POS: function(match){ 18495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) match.unshift( true ); 18505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return match; 18515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 18525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 18535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) filters: { 18545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) enabled: function(elem){ 18555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem.disabled === false && elem.type !== "hidden"; 18565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 18575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) disabled: function(elem){ 18585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem.disabled === true; 18595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 18605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) checked: function(elem){ 18615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem.checked === true; 18625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 18635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) selected: function(elem){ 18645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Accessing this property makes selected-by-default 18655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // options in Safari work properly 18665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.parentNode.selectedIndex; 18675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem.selected === true; 18685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 18695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) parent: function(elem){ 18705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return !!elem.firstChild; 18715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 18725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) empty: function(elem){ 18735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return !elem.firstChild; 18745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 18755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) has: function(elem, i, match){ 18765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return !!Sizzle( match[3], elem ).length; 18775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 18785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) header: function(elem){ 18795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return /h\d/i.test( elem.nodeName ); 18805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 18815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) text: function(elem){ 18825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return "text" === elem.type; 18835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 18845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) radio: function(elem){ 18855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return "radio" === elem.type; 18865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 18875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) checkbox: function(elem){ 18885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return "checkbox" === elem.type; 18895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 18905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) file: function(elem){ 18915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return "file" === elem.type; 18925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 18935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) password: function(elem){ 18945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return "password" === elem.type; 18955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 18965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) submit: function(elem){ 18975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return "submit" === elem.type; 18985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 18995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) image: function(elem){ 19005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return "image" === elem.type; 19015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 19025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) reset: function(elem){ 19035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return "reset" === elem.type; 19045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 19055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) button: function(elem){ 19065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON"; 19075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 19085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) input: function(elem){ 19095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return /input|select|textarea|button/i.test(elem.nodeName); 19105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 19115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 19125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setFilters: { 19135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) first: function(elem, i){ 19145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return i === 0; 19155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 19165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) last: function(elem, i, match, array){ 19175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return i === array.length - 1; 19185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 19195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) even: function(elem, i){ 19205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return i % 2 === 0; 19215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 19225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) odd: function(elem, i){ 19235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return i % 2 === 1; 19245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 19255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) lt: function(elem, i, match){ 19265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return i < match[3] - 0; 19275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 19285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) gt: function(elem, i, match){ 19295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return i > match[3] - 0; 19305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 19315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) nth: function(elem, i, match){ 19325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return match[3] - 0 == i; 19335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 19345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) eq: function(elem, i, match){ 19355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return match[3] - 0 == i; 19365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 19375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 19385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) filter: { 19395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) PSEUDO: function(elem, match, i, array){ 19405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var name = match[1], filter = Expr.filters[ name ]; 19415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 19425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( filter ) { 19435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return filter( elem, i, match, array ); 19445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( name === "contains" ) { 19455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0; 19465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( name === "not" ) { 19475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var not = match[3]; 19485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 19495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0, l = not.length; i < l; i++ ) { 19505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( not[i] === elem ) { 19515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 19525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 19535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 19545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 19555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return true; 19565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 19575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 19585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) CHILD: function(elem, match){ 19595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var type = match[1], node = elem; 19605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) switch (type) { 19615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case 'only': 19625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case 'first': 19635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while (node = node.previousSibling) { 19645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( node.nodeType === 1 ) return false; 19655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 19665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( type == 'first') return true; 19675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) node = elem; 19685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case 'last': 19695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while (node = node.nextSibling) { 19705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( node.nodeType === 1 ) return false; 19715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 19725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return true; 19735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case 'nth': 19745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var first = match[2], last = match[3]; 19755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 19765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( first == 1 && last == 0 ) { 19775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return true; 19785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 19795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 19805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var doneName = match[0], 19815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) parent = elem.parentNode; 19825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 19835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) { 19845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var count = 0; 19855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( node = parent.firstChild; node; node = node.nextSibling ) { 19865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( node.nodeType === 1 ) { 19875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) node.nodeIndex = ++count; 19885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 19895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 19905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) parent.sizcache = doneName; 19915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 19925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 19935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var diff = elem.nodeIndex - last; 19945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( first == 0 ) { 19955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return diff == 0; 19965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 19975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ( diff % first == 0 && diff / first >= 0 ); 19985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 19995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 20005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 20015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ID: function(elem, match){ 20025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem.nodeType === 1 && elem.getAttribute("id") === match; 20035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 20045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) TAG: function(elem, match){ 20055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return (match === "*" && elem.nodeType === 1) || elem.nodeName === match; 20065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 20075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) CLASS: function(elem, match){ 20085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return (" " + (elem.className || elem.getAttribute("class")) + " ") 20095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) .indexOf( match ) > -1; 20105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 20115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ATTR: function(elem, match){ 20125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var name = match[1], 20135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) result = Expr.attrHandle[ name ] ? 20145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Expr.attrHandle[ name ]( elem ) : 20155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem[ name ] != null ? 20165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem[ name ] : 20175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.getAttribute( name ), 20185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value = result + "", 20195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type = match[2], 20205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) check = match[4]; 20215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 20225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return result == null ? 20235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type === "!=" : 20245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type === "=" ? 20255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value === check : 20265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type === "*=" ? 20275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value.indexOf(check) >= 0 : 20285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type === "~=" ? 20295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) (" " + value + " ").indexOf(check) >= 0 : 20305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) !check ? 20315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value && result !== false : 20325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type === "!=" ? 20335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value != check : 20345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type === "^=" ? 20355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value.indexOf(check) === 0 : 20365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type === "$=" ? 20375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value.substr(value.length - check.length) === check : 20385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type === "|=" ? 20395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value === check || value.substr(0, check.length + 1) === check + "-" : 20405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) false; 20415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 20425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) POS: function(elem, match, i, array){ 20435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var name = match[2], filter = Expr.setFilters[ name ]; 20445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 20455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( filter ) { 20465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return filter( elem, i, match, array ); 20475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 20485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 20495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 20505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 20515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 20525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var origPOS = Expr.match.POS; 20535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 20545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)for ( var type in Expr.match ) { 20555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Expr.match[ type ] = RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source ); 20565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 20575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 20585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var makeArray = function(array, results) { 20595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) array = Array.prototype.slice.call( array ); 20605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 20615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( results ) { 20625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) results.push.apply( results, array ); 20635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return results; 20645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 20655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 20665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return array; 20675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 20685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 20695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Perform a simple check to determine if the browser is capable of 20705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// converting a NodeList to an array using builtin methods. 20715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)try { 20725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Array.prototype.slice.call( document.documentElement.childNodes ); 20735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 20745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Provide a fallback method if it does not work 20755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} catch(e){ 20765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) makeArray = function(array, results) { 20775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ret = results || []; 20785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 20795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( toString.call(array) === "[object Array]" ) { 20805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Array.prototype.push.apply( ret, array ); 20815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 20825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof array.length === "number" ) { 20835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0, l = array.length; i < l; i++ ) { 20845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret.push( array[i] ); 20855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 20865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 20875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0; array[i]; i++ ) { 20885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret.push( array[i] ); 20895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 20905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 20915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 20925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 20935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ret; 20945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 20955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 20965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 20975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var sortOrder; 20985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 20995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if ( document.documentElement.compareDocumentPosition ) { 21005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) sortOrder = function( a, b ) { 21015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1; 21025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( ret === 0 ) { 21035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) hasDuplicate = true; 21045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 21055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ret; 21065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 21075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} else if ( "sourceIndex" in document.documentElement ) { 21085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) sortOrder = function( a, b ) { 21095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ret = a.sourceIndex - b.sourceIndex; 21105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( ret === 0 ) { 21115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) hasDuplicate = true; 21125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 21135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ret; 21145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 21155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} else if ( document.createRange ) { 21165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) sortOrder = function( a, b ) { 21175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange(); 21185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) aRange.selectNode(a); 21195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) aRange.collapse(true); 21205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bRange.selectNode(b); 21215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bRange.collapse(true); 21225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange); 21235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( ret === 0 ) { 21245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) hasDuplicate = true; 21255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 21265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ret; 21275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 21285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 21295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 21305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Check to see if the browser returns elements by name when 21315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// querying by getElementById (and provide a workaround) 21325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)(function(){ 21335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // We're going to inject a fake input element with a specified name 21345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var form = document.createElement("form"), 21355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) id = "script" + (new Date).getTime(); 21365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) form.innerHTML = "<input name='" + id + "'/>"; 21375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 21385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Inject it into the root element, check its status, and remove it quickly 21395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var root = document.documentElement; 21405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) root.insertBefore( form, root.firstChild ); 21415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 21425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // The workaround has to do additional checks after a getElementById 21435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Which slows things down for other browsers (hence the branching) 21445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !!document.getElementById( id ) ) { 21455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Expr.find.ID = function(match, context, isXML){ 21465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof context.getElementById !== "undefined" && !isXML ) { 21475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var m = context.getElementById(match[1]); 21485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : []; 21495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 21505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 21515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 21525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Expr.filter.ID = function(elem, match){ 21535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); 21545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem.nodeType === 1 && node && node.nodeValue === match; 21555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 21565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 21575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 21585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) root.removeChild( form ); 21595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)})(); 21605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 21615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)(function(){ 21625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Check to see if the browser returns only elements 21635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // when doing getElementsByTagName("*") 21645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 21655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Create a fake element 21665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var div = document.createElement("div"); 21675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div.appendChild( document.createComment("") ); 21685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 21695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Make sure no comments are found 21705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( div.getElementsByTagName("*").length > 0 ) { 21715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Expr.find.TAG = function(match, context){ 21725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var results = context.getElementsByTagName(match[1]); 21735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 21745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Filter out possible comments 21755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( match[1] === "*" ) { 21765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var tmp = []; 21775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 21785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0; results[i]; i++ ) { 21795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( results[i].nodeType === 1 ) { 21805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) tmp.push( results[i] ); 21815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 21825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 21835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 21845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) results = tmp; 21855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 21865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 21875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return results; 21885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 21895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 21905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 21915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Check to see if an attribute returns normalized href attributes 21925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div.innerHTML = "<a href='#'></a>"; 21935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && 21945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div.firstChild.getAttribute("href") !== "#" ) { 21955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Expr.attrHandle.href = function(elem){ 21965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem.getAttribute("href", 2); 21975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 21985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 21995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)})(); 22005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 22015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if ( document.querySelectorAll ) (function(){ 22025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var oldSizzle = Sizzle, div = document.createElement("div"); 22035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div.innerHTML = "<p class='TEST'></p>"; 22045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 22055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Safari can't handle uppercase or unicode characters when 22065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // in quirks mode. 22075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { 22085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 22095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 22105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 22115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Sizzle = function(query, context, extra, seed){ 22125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) context = context || document; 22135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 22145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Only use querySelectorAll on non-XML documents 22155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // (ID selectors don't work in non-HTML documents) 22165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !seed && context.nodeType === 9 && !isXML(context) ) { 22175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) try { 22185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return makeArray( context.querySelectorAll(query), extra ); 22195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } catch(e){} 22205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 22215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 22225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return oldSizzle(query, context, extra, seed); 22235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 22245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 22255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Sizzle.find = oldSizzle.find; 22265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Sizzle.filter = oldSizzle.filter; 22275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Sizzle.selectors = oldSizzle.selectors; 22285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Sizzle.matches = oldSizzle.matches; 22295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)})(); 22305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 22315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){ 22325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var div = document.createElement("div"); 22335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div.innerHTML = "<div class='test e'></div><div class='test'></div>"; 22345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 22355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Opera can't find a second classname (in 9.6) 22365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( div.getElementsByClassName("e").length === 0 ) 22375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 22385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 22395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Safari caches class attributes, doesn't catch changes (in 3.2) 22405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div.lastChild.className = "e"; 22415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 22425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( div.getElementsByClassName("e").length === 1 ) 22435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 22445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 22455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Expr.order.splice(1, 0, "CLASS"); 22465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Expr.find.CLASS = function(match, context, isXML) { 22475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { 22485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return context.getElementsByClassName(match[1]); 22495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 22505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 22515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)})(); 22525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 22535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { 22545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var sibDir = dir == "previousSibling" && !isXML; 22555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0, l = checkSet.length; i < l; i++ ) { 22565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var elem = checkSet[i]; 22575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem ) { 22585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( sibDir && elem.nodeType === 1 ){ 22595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.sizcache = doneName; 22605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.sizset = i; 22615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 22625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem = elem[dir]; 22635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var match = false; 22645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 22655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while ( elem ) { 22665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem.sizcache === doneName ) { 22675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) match = checkSet[elem.sizset]; 22685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 22695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 22705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 22715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem.nodeType === 1 && !isXML ){ 22725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.sizcache = doneName; 22735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.sizset = i; 22745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 22755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 22765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem.nodeName === cur ) { 22775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) match = elem; 22785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 22795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 22805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 22815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem = elem[dir]; 22825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 22835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 22845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) checkSet[i] = match; 22855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 22865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 22875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 22885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 22895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { 22905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var sibDir = dir == "previousSibling" && !isXML; 22915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0, l = checkSet.length; i < l; i++ ) { 22925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var elem = checkSet[i]; 22935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem ) { 22945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( sibDir && elem.nodeType === 1 ) { 22955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.sizcache = doneName; 22965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.sizset = i; 22975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 22985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem = elem[dir]; 22995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var match = false; 23005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 23015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while ( elem ) { 23025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem.sizcache === doneName ) { 23035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) match = checkSet[elem.sizset]; 23045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 23055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 23065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 23075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem.nodeType === 1 ) { 23085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !isXML ) { 23095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.sizcache = doneName; 23105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.sizset = i; 23115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 23125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof cur !== "string" ) { 23135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem === cur ) { 23145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) match = true; 23155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 23165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 23175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 23185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { 23195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) match = elem; 23205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 23215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 23225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 23235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 23245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem = elem[dir]; 23255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 23265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 23275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) checkSet[i] = match; 23285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 23295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 23305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 23315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 23325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var contains = document.compareDocumentPosition ? function(a, b){ 23335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return a.compareDocumentPosition(b) & 16; 23345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} : function(a, b){ 23355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return a !== b && (a.contains ? a.contains(b) : true); 23365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 23375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 23385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var isXML = function(elem){ 23395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" || 23405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) !!elem.ownerDocument && isXML( elem.ownerDocument ); 23415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 23425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 23435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var posProcess = function(selector, context){ 23445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var tmpSet = [], later = "", match, 23455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) root = context.nodeType ? [context] : context; 23465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 23475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Position selectors must be done after the filter 23485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // And so must :not(positional) so we move all PSEUDOs to the end 23495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while ( (match = Expr.match.PSEUDO.exec( selector )) ) { 23505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) later += match[0]; 23515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) selector = selector.replace( Expr.match.PSEUDO, "" ); 23525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 23535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 23545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) selector = Expr.relative[selector] ? selector + "*" : selector; 23555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 23565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0, l = root.length; i < l; i++ ) { 23575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Sizzle( selector, root[i], tmpSet ); 23585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 23595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 23605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return Sizzle.filter( later, tmpSet ); 23615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 23625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 23635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// EXPOSE 23645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.find = Sizzle; 23655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.filter = Sizzle.filter; 23665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.expr = Sizzle.selectors; 23675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.expr[":"] = jQuery.expr.filters; 23685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 23695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Sizzle.selectors.filters.hidden = function(elem){ 23705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem.offsetWidth === 0 || elem.offsetHeight === 0; 23715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 23725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 23735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Sizzle.selectors.filters.visible = function(elem){ 23745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem.offsetWidth > 0 || elem.offsetHeight > 0; 23755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 23765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 23775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Sizzle.selectors.filters.animated = function(elem){ 23785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.grep(jQuery.timers, function(fn){ 23795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem === fn.elem; 23805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }).length; 23815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 23825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 23835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.multiFilter = function( expr, elems, not ) { 23845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( not ) { 23855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expr = ":not(" + expr + ")"; 23865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 23875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 23885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return Sizzle.matches(expr, elems); 23895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 23905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 23915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.dir = function( elem, dir ){ 23925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var matched = [], cur = elem[dir]; 23935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while ( cur && cur != document ) { 23945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( cur.nodeType == 1 ) 23955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) matched.push( cur ); 23965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cur = cur[dir]; 23975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 23985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return matched; 23995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 24005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 24015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.nth = function(cur, result, dir, elem){ 24025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) result = result || 1; 24035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var num = 0; 24045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 24055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( ; cur; cur = cur[dir] ) 24065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( cur.nodeType == 1 && ++num == result ) 24075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 24085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 24095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return cur; 24105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 24115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 24125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.sibling = function(n, elem){ 24135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var r = []; 24145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 24155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( ; n; n = n.nextSibling ) { 24165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( n.nodeType == 1 && n != elem ) 24175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) r.push( n ); 24185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 24195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 24205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return r; 24215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 24225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 24235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)return; 24245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 24255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)window.Sizzle = Sizzle; 24265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 24275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)})(); 24285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/* 24295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * A number of helper functions used for managing events. 24305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Many of the ideas behind this code originated from 24315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Dean Edwards' addEvent library. 24325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 24335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.event = { 24345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 24355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Bind an event to an element 24365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Original by Dean Edwards 24375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) add: function(elem, types, handler, data) { 24385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem.nodeType == 3 || elem.nodeType == 8 ) 24395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 24405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 24415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // For whatever reason, IE has trouble passing the window object 24425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // around, causing it to be cloned in the process 24435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem.setInterval && elem != window ) 24445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem = window; 24455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 24465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Make sure that the function being executed has a unique ID 24475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !handler.guid ) 24485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) handler.guid = this.guid++; 24495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 24505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // if data is passed, bind to handler 24515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( data !== undefined ) { 24525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Create temporary function pointer to original handler 24535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var fn = handler; 24545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 24555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Create unique handler function, wrapped around original handler 24565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) handler = this.proxy( fn ); 24575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 24585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Store data in unique handler 24595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) handler.data = data; 24605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 24615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 24625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Init the element's event structure 24635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var events = jQuery.data(elem, "events") || jQuery.data(elem, "events", {}), 24645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) handle = jQuery.data(elem, "handle") || jQuery.data(elem, "handle", function(){ 24655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Handle the second event of a trigger and when 24665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // an event is called after a page has unloaded 24675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return typeof jQuery !== "undefined" && !jQuery.event.triggered ? 24685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.handle.apply(arguments.callee.elem, arguments) : 24695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) undefined; 24705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 24715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Add elem as a property of the handle function 24725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // This is to prevent a memory leak with non-native 24735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // event in IE. 24745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) handle.elem = elem; 24755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 24765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Handle multiple events separated by a space 24775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // jQuery(...).bind("mouseover mouseout", fn); 24785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.each(types.split(/\s+/), function(index, type) { 24795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Namespaced event handlers 24805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var namespaces = type.split("."); 24815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type = namespaces.shift(); 24825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) handler.type = namespaces.slice().sort().join("."); 24835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 24845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Get the current list of functions bound to this event 24855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var handlers = events[type]; 24865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 24875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.event.specialAll[type] ) 24885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.specialAll[type].setup.call(elem, data, namespaces); 24895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 24905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Init the event handler queue 24915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!handlers) { 24925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) handlers = events[type] = {}; 24935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 24945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Check for a special event handler 24955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Only use addEventListener/attachEvent if the special 24965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // events handler returns false 24975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !jQuery.event.special[type] || jQuery.event.special[type].setup.call(elem, data, namespaces) === false ) { 24985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Bind the global event handler to the element 24995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (elem.addEventListener) 25005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.addEventListener(type, handle, false); 25015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else if (elem.attachEvent) 25025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.attachEvent("on" + type, handle); 25035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 25045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 25055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 25065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Add the function to the element's handler list 25075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) handlers[handler.guid] = handler; 25085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 25095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Keep track of which events have been used, for global triggering 25105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.global[type] = true; 25115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 25125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 25135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Nullify elem to prevent memory leaks in IE 25145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem = null; 25155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 25165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 25175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) guid: 1, 25185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) global: {}, 25195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 25205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Detach an event or set of events from an element 25215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) remove: function(elem, types, handler) { 25225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // don't do events on text and comment nodes 25235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem.nodeType == 3 || elem.nodeType == 8 ) 25245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 25255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 25265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var events = jQuery.data(elem, "events"), ret, index; 25275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 25285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( events ) { 25295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Unbind all events for the element 25305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( types === undefined || (typeof types === "string" && types.charAt(0) == ".") ) 25315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var type in events ) 25325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.remove( elem, type + (types || "") ); 25335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else { 25345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // types is actually an event object here 25355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( types.type ) { 25365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) handler = types.handler; 25375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) types = types.type; 25385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 25395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 25405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Handle multiple events seperated by a space 25415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // jQuery(...).unbind("mouseover mouseout", fn); 25425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.each(types.split(/\s+/), function(index, type){ 25435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Namespaced event handlers 25445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var namespaces = type.split("."); 25455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type = namespaces.shift(); 25465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var namespace = RegExp("(^|\\.)" + namespaces.slice().sort().join(".*\\.") + "(\\.|$)"); 25475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 25485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( events[type] ) { 25495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // remove the given handler for the given type 25505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( handler ) 25515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) delete events[type][handler.guid]; 25525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 25535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // remove all handlers for the given type 25545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else 25555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var handle in events[type] ) 25565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Handle the removal of namespaced events 25575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( namespace.test(events[type][handle].type) ) 25585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) delete events[type][handle]; 25595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 25605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.event.specialAll[type] ) 25615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.specialAll[type].teardown.call(elem, namespaces); 25625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 25635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // remove generic event handler if no more handlers exist 25645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( ret in events[type] ) break; 25655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !ret ) { 25665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !jQuery.event.special[type] || jQuery.event.special[type].teardown.call(elem, namespaces) === false ) { 25675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (elem.removeEventListener) 25685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.removeEventListener(type, jQuery.data(elem, "handle"), false); 25695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else if (elem.detachEvent) 25705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.detachEvent("on" + type, jQuery.data(elem, "handle")); 25715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 25725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret = null; 25735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) delete events[type]; 25745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 25755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 25765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 25775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 25785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 25795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Remove the expando if it's no longer used 25805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( ret in events ) break; 25815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !ret ) { 25825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var handle = jQuery.data( elem, "handle" ); 25835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( handle ) handle.elem = null; 25845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.removeData( elem, "events" ); 25855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.removeData( elem, "handle" ); 25865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 25875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 25885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 25895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 25905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // bubbling is internal 25915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) trigger: function( event, data, elem, bubbling ) { 25925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Event object or event type 25935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var type = event.type || event; 25945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 25955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if( !bubbling ){ 25965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event = typeof event === "object" ? 25975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // jQuery.Event object 25985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event[expando] ? event : 25995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Object literal 26005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.extend( jQuery.Event(type), event ) : 26015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Just the event type (string) 26025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.Event(type); 26035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 26045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( type.indexOf("!") >= 0 ) { 26055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.type = type = type.slice(0, -1); 26065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.exclusive = true; 26075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 26085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 26095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Handle a global trigger 26105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !elem ) { 26115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Don't bubble custom events when global (to avoid too much overhead) 26125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.stopPropagation(); 26135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Only trigger if we've ever bound an event for it 26145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( this.global[type] ) 26155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.each( jQuery.cache, function(){ 26165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( this.events && this.events[type] ) 26175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.trigger( event, data, this.handle.elem ); 26185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 26195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 26205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 26215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Handle triggering a single element 26225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 26235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // don't do events on text and comment nodes 26245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !elem || elem.nodeType == 3 || elem.nodeType == 8 ) 26255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return undefined; 26265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 26275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Clean up in case it is reused 26285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.result = undefined; 26295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.target = elem; 26305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 26315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Clone the incoming data, if any 26325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) data = jQuery.makeArray(data); 26335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) data.unshift( event ); 26345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 26355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 26365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.currentTarget = elem; 26375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 26385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Trigger the event, it is assumed that "handle" is a function 26395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var handle = jQuery.data(elem, "handle"); 26405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( handle ) 26415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) handle.apply( elem, data ); 26425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 26435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Handle triggering native .onfoo handlers (and on links since we don't call .click() for links) 26445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( (!elem[type] || (jQuery.nodeName(elem, 'a') && type == "click")) && elem["on"+type] && elem["on"+type].apply( elem, data ) === false ) 26455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.result = false; 26465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 26475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Trigger the native events (except for clicks on links) 26485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !bubbling && elem[type] && !event.isDefaultPrevented() && !(jQuery.nodeName(elem, 'a') && type == "click") ) { 26495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.triggered = true; 26505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) try { 26515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem[ type ](); 26525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // prevent IE from throwing an error for some hidden elements 26535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } catch (e) {} 26545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 26555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 26565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.triggered = false; 26575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 26585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !event.isPropagationStopped() ) { 26595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var parent = elem.parentNode || elem.ownerDocument; 26605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( parent ) 26615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.trigger(event, data, parent, true); 26625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 26635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 26645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 26655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) handle: function(event) { 26665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // returned undefined or false 26675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var all, handlers; 26685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 26695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event = arguments[0] = jQuery.event.fix( event || window.event ); 26705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.currentTarget = this; 26715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 26725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Namespaced event handlers 26735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var namespaces = event.type.split("."); 26745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.type = namespaces.shift(); 26755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 26765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Cache this now, all = true means, any handler 26775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) all = !namespaces.length && !event.exclusive; 26785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 26795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var namespace = RegExp("(^|\\.)" + namespaces.slice().sort().join(".*\\.") + "(\\.|$)"); 26805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 26815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) handlers = ( jQuery.data(this, "events") || {} )[event.type]; 26825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 26835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var j in handlers ) { 26845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var handler = handlers[j]; 26855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 26865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Filter the functions by class 26875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( all || namespace.test(handler.type) ) { 26885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Pass in a reference to the handler function itself 26895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // So that we can later remove it 26905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.handler = handler; 26915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.data = handler.data; 26925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 26935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ret = handler.apply(this, arguments); 26945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 26955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if( ret !== undefined ){ 26965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.result = ret; 26975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( ret === false ) { 26985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.preventDefault(); 26995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.stopPropagation(); 27005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 27015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 27025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 27035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if( event.isImmediatePropagationStopped() ) 27045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 27055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 27065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 27075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 27085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 27095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 27105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 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(" "), 27115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 27125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fix: function(event) { 27135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( event[expando] ) 27145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return event; 27155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 27165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // store a copy of the original event object 27175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // and "clone" to set read-only properties 27185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var originalEvent = event; 27195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event = jQuery.Event( originalEvent ); 27205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 27215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = this.props.length, prop; i; ){ 27225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) prop = this.props[ --i ]; 27235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event[ prop ] = originalEvent[ prop ]; 27245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 27255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 27265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Fix target property, if necessary 27275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !event.target ) 27285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either 27295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 27305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // check if target is a textnode (safari) 27315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( event.target.nodeType == 3 ) 27325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.target = event.target.parentNode; 27335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 27345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Add relatedTarget, if necessary 27355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !event.relatedTarget && event.fromElement ) 27365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.relatedTarget = event.fromElement == event.target ? event.toElement : event.fromElement; 27375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 27385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Calculate pageX/Y if missing and clientX/Y available 27395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( event.pageX == null && event.clientX != null ) { 27405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var doc = document.documentElement, body = document.body; 27415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc.clientLeft || 0); 27425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc.clientTop || 0); 27435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 27445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 27455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Add which for key events 27465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) ) 27475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.which = event.charCode || event.keyCode; 27485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 27495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs) 27505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !event.metaKey && event.ctrlKey ) 27515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.metaKey = event.ctrlKey; 27525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 27535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Add which for click: 1 == left; 2 == middle; 3 == right 27545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Note: button is not normalized, so don't use it 27555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !event.which && event.button ) 27565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) )); 27575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 27585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return event; 27595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 27605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 27615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) proxy: function( fn, proxy ){ 27625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) proxy = proxy || function(){ return fn.apply(this, arguments); }; 27635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Set the guid of unique handler to the same of original handler, so it can be removed 27645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) proxy.guid = fn.guid = fn.guid || proxy.guid || this.guid++; 27655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // So proxy can be declared as an argument 27665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return proxy; 27675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 27685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 27695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) special: { 27705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ready: { 27715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Make sure the ready event is setup 27725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setup: bindReady, 27735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) teardown: function() {} 27745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 27755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 27765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 27775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) specialAll: { 27785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) live: { 27795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setup: function( selector, namespaces ){ 27805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.add( this, namespaces[0], liveHandler ); 27815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 27825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) teardown: function( namespaces ){ 27835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( namespaces.length ) { 27845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var remove = 0, name = RegExp("(^|\\.)" + namespaces[0] + "(\\.|$)"); 27855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 27865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.each( (jQuery.data(this, "events").live || {}), function(){ 27875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( name.test(this.type) ) 27885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) remove++; 27895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 27905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 27915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( remove < 1 ) 27925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.remove( this, namespaces[0], liveHandler ); 27935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 27945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 27955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 27965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 27975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 27985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 27995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.Event = function( src ){ 28005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Allow instantiation without the 'new' keyword 28015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if( !this.preventDefault ) 28025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return new jQuery.Event(src); 28035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 28045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Event object 28055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if( src && src.type ){ 28065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.originalEvent = src; 28075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.type = src.type; 28085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Event type 28095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }else 28105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.type = src; 28115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 28125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // timeStamp is buggy for some events on Firefox(#3843) 28135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // So we won't rely on the native value 28145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.timeStamp = now(); 28155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 28165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Mark it as fixed 28175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this[expando] = true; 28185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 28195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 28205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function returnFalse(){ 28215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 28225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 28235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function returnTrue(){ 28245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return true; 28255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 28265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 28275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding 28285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html 28295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.Event.prototype = { 28305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) preventDefault: function() { 28315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.isDefaultPrevented = returnTrue; 28325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 28335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var e = this.originalEvent; 28345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if( !e ) 28355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 28365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // if preventDefault exists run it on the original event 28375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (e.preventDefault) 28385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) e.preventDefault(); 28395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // otherwise set the returnValue property of the original event to false (IE) 28405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) e.returnValue = false; 28415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 28425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) stopPropagation: function() { 28435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.isPropagationStopped = returnTrue; 28445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 28455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var e = this.originalEvent; 28465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if( !e ) 28475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 28485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // if stopPropagation exists run it on the original event 28495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (e.stopPropagation) 28505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) e.stopPropagation(); 28515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // otherwise set the cancelBubble property of the original event to true (IE) 28525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) e.cancelBubble = true; 28535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 28545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) stopImmediatePropagation:function(){ 28555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.isImmediatePropagationStopped = returnTrue; 28565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.stopPropagation(); 28575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 28585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isDefaultPrevented: returnFalse, 28595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isPropagationStopped: returnFalse, 28605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isImmediatePropagationStopped: returnFalse 28615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 28625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Checks if an event happened on an element within another element 28635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Used in jQuery.event.special.mouseenter and mouseleave handlers 28645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var withinElement = function(event) { 28655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Check if mouse(over|out) are still within the same parent element 28665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var parent = event.relatedTarget; 28675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Traverse up the tree 28685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while ( parent && parent != this ) 28695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) try { parent = parent.parentNode; } 28705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) catch(e) { parent = this; } 28715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 28725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if( parent != this ){ 28735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // set the correct event type 28745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.type = event.data; 28755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // handle event if we actually just moused on to a non sub-element 28765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.handle.apply( this, arguments ); 28775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 28785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 28795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 28805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.each({ 28815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) mouseover: 'mouseenter', 28825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) mouseout: 'mouseleave' 28835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, function( orig, fix ){ 28845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.special[ fix ] = { 28855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setup: function(){ 28865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.add( this, orig, withinElement, fix ); 28875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 28885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) teardown: function(){ 28895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.remove( this, orig, withinElement ); 28905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 28915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 28925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 28935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 28945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.fn.extend({ 28955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bind: function( type, data, fn ) { 28965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return type == "unload" ? this.one(type, data, fn) : this.each(function(){ 28975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.add( this, type, fn || data, fn && data ); 28985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 28995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 29005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 29015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) one: function( type, data, fn ) { 29025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var one = jQuery.event.proxy( fn || data, function(event) { 29035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery(this).unbind(event, one); 29045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return (fn || data).apply( this, arguments ); 29055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 29065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.each(function(){ 29075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.add( this, type, one, fn && data); 29085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 29095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 29105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 29115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) unbind: function( type, fn ) { 29125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.each(function(){ 29135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.remove( this, type, fn ); 29145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 29155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 29165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 29175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) trigger: function( type, data ) { 29185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.each(function(){ 29195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.trigger( type, data, this ); 29205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 29215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 29225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 29235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) triggerHandler: function( type, data ) { 29245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if( this[0] ){ 29255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var event = jQuery.Event(type); 29265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.preventDefault(); 29275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.stopPropagation(); 29285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.trigger( event, data, this[0] ); 29295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return event.result; 29305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 29315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 29325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 29335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) toggle: function( fn ) { 29345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Save reference to arguments for access in closure 29355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var args = arguments, i = 1; 29365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 29375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // link all the functions, so any of them can unbind this click handler 29385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while( i < args.length ) 29395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.proxy( fn, args[i++] ); 29405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 29415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.click( jQuery.event.proxy( fn, function(event) { 29425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Figure out which function to execute 29435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.lastToggle = ( this.lastToggle || 0 ) % i; 29445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 29455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Make sure that clicks stop 29465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.preventDefault(); 29475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 29485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // and execute the function 29495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return args[ this.lastToggle++ ].apply( this, arguments ) || false; 29505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) })); 29515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 29525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 29535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) hover: function(fnOver, fnOut) { 29545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.mouseenter(fnOver).mouseleave(fnOut); 29555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 29565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 29575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ready: function(fn) { 29585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Attach the listeners 29595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bindReady(); 29605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 29615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If the DOM is already ready 29625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.isReady ) 29635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Execute the function immediately 29645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fn.call( document, jQuery ); 29655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 29665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Otherwise, remember the function for later 29675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else 29685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Add the function to the wait list 29695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.readyList.push( fn ); 29705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 29715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this; 29725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 29735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 29745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) live: function( type, fn ){ 29755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var proxy = jQuery.event.proxy( fn ); 29765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) proxy.guid += this.selector + type; 29775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 29785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery(document).bind( liveConvert(type, this.selector), this.selector, proxy ); 29795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 29805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this; 29815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 29825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 29835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) die: function( type, fn ){ 29845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery(document).unbind( liveConvert(type, this.selector), fn ? { guid: fn.guid + this.selector + type } : null ); 29855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this; 29865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 29875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 29885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 29895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function liveHandler( event ){ 29905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var check = RegExp("(^|\\.)" + event.type + "(\\.|$)"), 29915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) stop = true, 29925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elems = []; 29935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 29945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.each(jQuery.data(this, "events").live || [], function(i, fn){ 29955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( check.test(fn.type) ) { 29965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var elem = jQuery(event.target).closest(fn.data)[0]; 29975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem ) 29985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elems.push({ elem: elem, fn: fn }); 29995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 30005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 30015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 30025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elems.sort(function(a,b) { 30035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.data(a.elem, "closest") - jQuery.data(b.elem, "closest"); 30045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 30055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 30065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.each(elems, function(){ 30075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( this.fn.call(this.elem, event, this.fn.data) === false ) 30085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return (stop = false); 30095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 30105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 30115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return stop; 30125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 30135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 30145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function liveConvert(type, selector){ 30155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ["live", type, selector.replace(/\./g, "`").replace(/ /g, "|")].join("."); 30165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 30175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 30185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.extend({ 30195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isReady: false, 30205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) readyList: [], 30215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Handle when the DOM is ready 30225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ready: function() { 30235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Make sure that the DOM is not already loaded 30245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !jQuery.isReady ) { 30255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Remember that the DOM is ready 30265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.isReady = true; 30275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 30285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If there are functions bound, to execute 30295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.readyList ) { 30305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Execute all of them 30315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.each( jQuery.readyList, function(){ 30325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.call( document, jQuery ); 30335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 30345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 30355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Reset the list of functions 30365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.readyList = null; 30375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 30385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 30395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Trigger any bound ready events 30405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery(document).triggerHandler("ready"); 30415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 30425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 30435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 30445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 30455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var readyBound = false; 30465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 30475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function bindReady(){ 30485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( readyBound ) return; 30495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) readyBound = true; 30505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 30515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Mozilla, Opera and webkit nightlies currently support this event 30525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( document.addEventListener ) { 30535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Use the handy event callback 30545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) document.addEventListener( "DOMContentLoaded", function(){ 30555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) document.removeEventListener( "DOMContentLoaded", arguments.callee, false ); 30565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.ready(); 30575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, false ); 30585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 30595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If IE event model is used 30605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( document.attachEvent ) { 30615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // ensure firing before onload, 30625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // maybe late but safe also for iframes 30635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) document.attachEvent("onreadystatechange", function(){ 30645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( document.readyState === "complete" ) { 30655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) document.detachEvent( "onreadystatechange", arguments.callee ); 30665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.ready(); 30675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 30685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 30695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 30705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If IE and not an iframe 30715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // continually check to see if the document is ready 30725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( document.documentElement.doScroll && window == window.top ) (function(){ 30735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.isReady ) return; 30745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 30755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) try { 30765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If IE is used, use the trick by Diego Perini 30775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // http://javascript.nwbox.com/IEContentLoaded/ 30785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) document.documentElement.doScroll("left"); 30795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } catch( error ) { 30805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setTimeout( arguments.callee, 0 ); 30815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 30825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 30835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 30845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // and execute any waiting functions 30855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.ready(); 30865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) })(); 30875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 30885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 30895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // A fallback to window.onload, that will always work 30905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.add( window, "load", jQuery.ready ); 30915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 30925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 30935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.each( ("blur,focus,load,resize,scroll,unload,click,dblclick," + 30945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave," + 30955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "change,select,submit,keydown,keypress,keyup,error").split(","), function(i, name){ 30965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 30975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Handle event binding 30985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.fn[name] = function(fn){ 30995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return fn ? this.bind(name, fn) : this.trigger(name); 31005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 31015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 31025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 31035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Prevent memory leaks in IE 31045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// And prevent errors on refresh with events like mouseover in other browsers 31055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Window isn't included so as not to unbind existing unload events 31065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery( window ).bind( 'unload', function(){ 31075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var id in jQuery.cache ) 31085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Skip the window 31095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( id != 1 && jQuery.cache[ id ].handle ) 31105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.remove( jQuery.cache[ id ].handle.elem ); 31115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 31125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)(function(){ 31135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 31145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.support = {}; 31155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 31165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var root = document.documentElement, 31175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) script = document.createElement("script"), 31185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div = document.createElement("div"), 31195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) id = "script" + (new Date).getTime(); 31205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 31215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div.style.display = "none"; 31225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 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>'; 31235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 31245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var all = div.getElementsByTagName("*"), 31255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) a = div.getElementsByTagName("a")[0]; 31265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 31275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Can't get basic test support 31285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !all || !all.length || !a ) { 31295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 31305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 31315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 31325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.support = { 31335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // IE strips leading whitespace when .innerHTML is used 31345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) leadingWhitespace: div.firstChild.nodeType == 3, 31355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 31365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Make sure that tbody elements aren't automatically inserted 31375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // IE will insert them into empty tables 31385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) tbody: !div.getElementsByTagName("tbody").length, 31395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 31405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Make sure that you can get all elements in an <object> element 31415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // IE 7 always returns no results 31425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) objectAll: !!div.getElementsByTagName("object")[0] 31435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) .getElementsByTagName("*").length, 31445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 31455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Make sure that link elements get serialized correctly by innerHTML 31465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // This requires a wrapper element in IE 31475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) htmlSerialize: !!div.getElementsByTagName("link").length, 31485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 31495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Get the style information from getAttribute 31505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // (IE uses .cssText insted) 31515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) style: /red/.test( a.getAttribute("style") ), 31525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 31535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Make sure that URLs aren't manipulated 31545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // (IE normalizes it by default) 31555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) hrefNormalized: a.getAttribute("href") === "/a", 31565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 31575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Make sure that element opacity exists 31585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // (IE uses filter instead) 31595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) opacity: a.style.opacity === "0.5", 31605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 31615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Verify style float existence 31625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // (IE uses styleFloat instead of cssFloat) 31635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cssFloat: !!a.style.cssFloat, 31645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 31655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Will be defined later 31665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) scriptEval: false, 31675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) noCloneEvent: true, 31685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) boxModel: null 31695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 31705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 31715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) script.type = "text/javascript"; 31725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) try { 31735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) script.appendChild( document.createTextNode( "window." + id + "=1;" ) ); 31745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } catch(e){} 31755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 31765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) root.insertBefore( script, root.firstChild ); 31775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 31785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Make sure that the execution of code works by injecting a script 31795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // tag with appendChild/createTextNode 31805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // (IE doesn't support this, fails, and uses .text instead) 31815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( window[ id ] ) { 31825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.support.scriptEval = true; 31835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) delete window[ id ]; 31845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 31855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 31865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) root.removeChild( script ); 31875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 31885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( div.attachEvent && div.fireEvent ) { 31895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div.attachEvent("onclick", function(){ 31905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Cloning a node shouldn't copy over any 31915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // bound event handlers (IE does this) 31925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.support.noCloneEvent = false; 31935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div.detachEvent("onclick", arguments.callee); 31945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 31955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div.cloneNode(true).fireEvent("onclick"); 31965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 31975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 31985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Figure out if the W3C box model works as expected 31995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // document.body must exist before we can do this 32005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery(function(){ 32015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var div = document.createElement("div"); 32025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div.style.width = div.style.paddingLeft = "1px"; 32035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 32045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) document.body.appendChild( div ); 32055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2; 32065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) document.body.removeChild( div ).style.display = 'none'; 32075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 32085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)})(); 32095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 32105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var styleFloat = jQuery.support.cssFloat ? "cssFloat" : "styleFloat"; 32115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 32125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.props = { 32135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "for": "htmlFor", 32145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "class": "className", 32155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "float": styleFloat, 32165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cssFloat: styleFloat, 32175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) styleFloat: styleFloat, 32185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) readonly: "readOnly", 32195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) maxlength: "maxLength", 32205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cellspacing: "cellSpacing", 32215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rowspan: "rowSpan", 32225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) tabindex: "tabIndex" 32235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 32245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.fn.extend({ 32255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Keep a copy of the old load 32265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _load: jQuery.fn.load, 32275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 32285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) load: function( url, params, callback ) { 32295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof url !== "string" ) 32305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._load( url ); 32315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 32325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var off = url.indexOf(" "); 32335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( off >= 0 ) { 32345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var selector = url.slice(off, url.length); 32355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) url = url.slice(0, off); 32365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 32375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 32385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Default to a GET request 32395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var type = "GET"; 32405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 32415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If the second parameter was provided 32425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( params ) 32435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If it's a function 32445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.isFunction( params ) ) { 32455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // We assume that it's the callback 32465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callback = params; 32475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) params = null; 32485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 32495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Otherwise, build a param string 32505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if( typeof params === "object" ) { 32515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) params = jQuery.param( params ); 32525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type = "POST"; 32535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 32545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 32555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var self = this; 32565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 32575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Request the remote document 32585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.ajax({ 32595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) url: url, 32605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type: type, 32615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) dataType: "html", 32625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) data: params, 32635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) complete: function(res, status){ 32645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If successful, inject the HTML into all the matched elements 32655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( status == "success" || status == "notmodified" ) 32665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // See if a selector was specified 32675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) self.html( selector ? 32685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Create a dummy div to hold the results 32695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery("<div/>") 32705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // inject the contents of the document in, removing the scripts 32715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // to avoid any 'Permission Denied' errors in IE 32725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) .append(res.responseText.replace(/<script(.|\s)*?\/script>/g, "")) 32735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 32745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Locate the specified elements 32755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) .find(selector) : 32765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 32775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If not, just inject the full result 32785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) res.responseText ); 32795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 32805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if( callback ) 32815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) self.each( callback, [res.responseText, status, res] ); 32825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 32835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 32845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this; 32855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 32865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 32875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) serialize: function() { 32885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.param(this.serializeArray()); 32895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 32905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) serializeArray: function() { 32915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.map(function(){ 32925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.elements ? jQuery.makeArray(this.elements) : this; 32935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }) 32945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) .filter(function(){ 32955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.name && !this.disabled && 32965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) (this.checked || /select|textarea/i.test(this.nodeName) || 32975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /text|hidden|password|search/i.test(this.type)); 32985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }) 32995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) .map(function(i, elem){ 33005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var val = jQuery(this).val(); 33015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return val == null ? null : 33025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.isArray(val) ? 33035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.map( val, function(val, i){ 33045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return {name: elem.name, value: val}; 33055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }) : 33065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) {name: elem.name, value: val}; 33075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }).get(); 33085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 33095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 33105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 33115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Attach a bunch of functions for handling common AJAX events 33125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.each( "ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","), function(i,o){ 33135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.fn[o] = function(f){ 33145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.bind(o, f); 33155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 33165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 33175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 33185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var jsc = now(); 33195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 33205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.extend({ 33215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 33225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get: function( url, data, callback, type ) { 33235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // shift arguments if data argument was ommited 33245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.isFunction( data ) ) { 33255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callback = data; 33265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) data = null; 33275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 33285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 33295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.ajax({ 33305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type: "GET", 33315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) url: url, 33325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) data: data, 33335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) success: callback, 33345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) dataType: type 33355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 33365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 33375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 33385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) getScript: function( url, callback ) { 33395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.get(url, null, callback, "script"); 33405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 33415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 33425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) getJSON: function( url, data, callback ) { 33435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.get(url, data, callback, "json"); 33445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 33455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 33465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) post: function( url, data, callback, type ) { 33475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.isFunction( data ) ) { 33485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callback = data; 33495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) data = {}; 33505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 33515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 33525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.ajax({ 33535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type: "POST", 33545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) url: url, 33555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) data: data, 33565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) success: callback, 33575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) dataType: type 33585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 33595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 33605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 33615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ajaxSetup: function( settings ) { 33625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.extend( jQuery.ajaxSettings, settings ); 33635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 33645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 33655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ajaxSettings: { 33665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) url: location.href, 33675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) global: true, 33685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type: "GET", 33695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) contentType: "application/x-www-form-urlencoded", 33705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) processData: true, 33715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) async: true, 33725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /* 33735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) timeout: 0, 33745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) data: null, 33755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) username: null, 33765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) password: null, 33775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 33785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Create the request object; Microsoft failed to properly 33795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // implement the XMLHttpRequest in IE7, so we use the ActiveXObject when it is available 33805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // This function can be overriden by calling jQuery.ajaxSetup 33815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) xhr:function(){ 33825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest(); 33835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 33845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) accepts: { 33855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) xml: "application/xml, text/xml", 33865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) html: "text/html", 33875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) script: "text/javascript, application/javascript", 33885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) json: "application/json, text/javascript", 33895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) text: "text/plain", 33905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _default: "*/*" 33915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 33925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 33935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 33945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Last-Modified header cache for next request 33955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) lastModified: {}, 33965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 33975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ajax: function( s ) { 33985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Extend the settings, but re-extend 's' so that it can be 33995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // checked again later (in the test suite, specifically) 34005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) s = jQuery.extend(true, s, jQuery.extend(true, {}, jQuery.ajaxSettings, s)); 34015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 34025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var jsonp, jsre = /=\?(&|$)/g, status, data, 34035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type = s.type.toUpperCase(); 34045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 34055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // convert data if not already a string 34065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( s.data && s.processData && typeof s.data !== "string" ) 34075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) s.data = jQuery.param(s.data); 34085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 34095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Handle JSONP Parameter Callbacks 34105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( s.dataType == "jsonp" ) { 34115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( type == "GET" ) { 34125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !s.url.match(jsre) ) 34135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) s.url += (s.url.match(/\?/) ? "&" : "?") + (s.jsonp || "callback") + "=?"; 34145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( !s.data || !s.data.match(jsre) ) 34155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) s.data = (s.data ? s.data + "&" : "") + (s.jsonp || "callback") + "=?"; 34165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) s.dataType = "json"; 34175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 34185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 34195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Build temporary JSONP function 34205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( s.dataType == "json" && (s.data && s.data.match(jsre) || s.url.match(jsre)) ) { 34215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jsonp = "jsonp" + jsc++; 34225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 34235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Replace the =? sequence both in the query string and the data 34245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( s.data ) 34255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) s.data = (s.data + "").replace(jsre, "=" + jsonp + "$1"); 34265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) s.url = s.url.replace(jsre, "=" + jsonp + "$1"); 34275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 34285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // We need to make sure 34295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // that a JSONP style response is executed properly 34305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) s.dataType = "script"; 34315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 34325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Handle JSONP-style loading 34335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) window[ jsonp ] = function(tmp){ 34345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) data = tmp; 34355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) success(); 34365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) complete(); 34375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Garbage collect 34385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) window[ jsonp ] = undefined; 34395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) try{ delete window[ jsonp ]; } catch(e){} 34405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( head ) 34415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) head.removeChild( script ); 34425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 34435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 34445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 34455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( s.dataType == "script" && s.cache == null ) 34465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) s.cache = false; 34475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 34485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( s.cache === false && type == "GET" ) { 34495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ts = now(); 34505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // try replacing _= if it is there 34515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ret = s.url.replace(/(\?|&)_=.*?(&|$)/, "$1_=" + ts + "$2"); 34525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // if nothing was replaced, add timestamp to the end 34535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) s.url = ret + ((ret == s.url) ? (s.url.match(/\?/) ? "&" : "?") + "_=" + ts : ""); 34545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 34555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 34565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If data is available, append data to url for get requests 34575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( s.data && type == "GET" ) { 34585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) s.url += (s.url.match(/\?/) ? "&" : "?") + s.data; 34595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 34605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // IE likes to send both get and post data, prevent this 34615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) s.data = null; 34625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 34635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 34645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Watch for a new set of requests 34655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( s.global && ! jQuery.active++ ) 34665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.trigger( "ajaxStart" ); 34675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 34685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Matches an absolute URL, and saves the domain 34695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var parts = /^(\w+:)?\/\/([^\/?#]+)/.exec( s.url ); 34705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 34715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If we're requesting a remote document 34725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // and trying to load JSON or Script with a GET 34735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( s.dataType == "script" && type == "GET" && parts 34745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) && ( parts[1] && parts[1] != location.protocol || parts[2] != location.host )){ 34755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 34765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var head = document.getElementsByTagName("head")[0]; 34775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var script = document.createElement("script"); 34785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) script.src = s.url; 34795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (s.scriptCharset) 34805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) script.charset = s.scriptCharset; 34815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 34825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Handle Script loading 34835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !jsonp ) { 34845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var done = false; 34855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 34865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Attach handlers for all browsers 34875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) script.onload = script.onreadystatechange = function(){ 34885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !done && (!this.readyState || 34895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.readyState == "loaded" || this.readyState == "complete") ) { 34905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) done = true; 34915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) success(); 34925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) complete(); 34935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 34945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Handle memory leak in IE 34955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) script.onload = script.onreadystatechange = null; 34965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) head.removeChild( script ); 34975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 34985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 34995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 35005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 35015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) head.appendChild(script); 35025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 35035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // We handle everything using the script element injection 35045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return undefined; 35055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 35065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 35075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var requestDone = false; 35085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 35095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Create the request object 35105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var xhr = s.xhr(); 35115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 35125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Open the socket 35135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Passing null username, generates a login popup on Opera (#2865) 35145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if( s.username ) 35155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) xhr.open(type, s.url, s.async, s.username, s.password); 35165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else 35175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) xhr.open(type, s.url, s.async); 35185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 35195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Need an extra try/catch for cross domain requests in Firefox 3 35205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) try { 35215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Set the correct header, if data is being sent 35225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( s.data ) 35235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) xhr.setRequestHeader("Content-Type", s.contentType); 35245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 35255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Set the If-Modified-Since header, if ifModified mode. 35265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( s.ifModified ) 35275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) xhr.setRequestHeader("If-Modified-Since", 35285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.lastModified[s.url] || "Thu, 01 Jan 1970 00:00:00 GMT" ); 35295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 35305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Set header so the called script knows that it's an XMLHttpRequest 35315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest"); 35325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 35335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Set the Accepts header for the server, depending on the dataType 35345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) xhr.setRequestHeader("Accept", s.dataType && s.accepts[ s.dataType ] ? 35355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) s.accepts[ s.dataType ] + ", */*" : 35365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) s.accepts._default ); 35375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } catch(e){} 35385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 35395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Allow custom headers/mimetypes and early abort 35405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( s.beforeSend && s.beforeSend(xhr, s) === false ) { 35415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Handle the global AJAX counter 35425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( s.global && ! --jQuery.active ) 35435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.trigger( "ajaxStop" ); 35445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // close opended socket 35455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) xhr.abort(); 35465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 35475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 35485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 35495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( s.global ) 35505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.trigger("ajaxSend", [xhr, s]); 35515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 35525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Wait for a response to come back 35535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var onreadystatechange = function(isTimeout){ 35545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // The request was aborted, clear the interval and decrement jQuery.active 35555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (xhr.readyState == 0) { 35565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (ival) { 35575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // clear poll interval 35585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) clearInterval(ival); 35595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ival = null; 35605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Handle the global AJAX counter 35615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( s.global && ! --jQuery.active ) 35625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.trigger( "ajaxStop" ); 35635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 35645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // The transfer is complete and the data is available, or the request timed out 35655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( !requestDone && xhr && (xhr.readyState == 4 || isTimeout == "timeout") ) { 35665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) requestDone = true; 35675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 35685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // clear poll interval 35695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (ival) { 35705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) clearInterval(ival); 35715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ival = null; 35725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 35735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 35745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) status = isTimeout == "timeout" ? "timeout" : 35755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) !jQuery.httpSuccess( xhr ) ? "error" : 35765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) s.ifModified && jQuery.httpNotModified( xhr, s.url ) ? "notmodified" : 35775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "success"; 35785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 35795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( status == "success" ) { 35805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Watch for, and catch, XML document parse errors 35815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) try { 35825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // process the data (runs the xml through httpData regardless of callback) 35835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) data = jQuery.httpData( xhr, s.dataType, s ); 35845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } catch(e) { 35855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) status = "parsererror"; 35865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 35875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 35885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 35895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Make sure that the request was successful or notmodified 35905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( status == "success" ) { 35915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Cache Last-Modified header, if ifModified mode. 35925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var modRes; 35935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) try { 35945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) modRes = xhr.getResponseHeader("Last-Modified"); 35955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } catch(e) {} // swallow exception thrown by FF if header is not available 35965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 35975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( s.ifModified && modRes ) 35985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.lastModified[s.url] = modRes; 35995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 36005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // JSONP handles its own success callback 36015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !jsonp ) 36025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) success(); 36035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else 36045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.handleError(s, xhr, status); 36055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 36065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Fire the complete handlers 36075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) complete(); 36085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 36095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( isTimeout ) 36105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) xhr.abort(); 36115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 36125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Stop memory leaks 36135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( s.async ) 36145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) xhr = null; 36155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 36165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 36175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 36185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( s.async ) { 36195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // don't attach the handler to the request, just poll it instead 36205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ival = setInterval(onreadystatechange, 13); 36215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 36225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Timeout checker 36235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( s.timeout > 0 ) 36245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setTimeout(function(){ 36255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Check to see if the request is still happening 36265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( xhr && !requestDone ) 36275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) onreadystatechange( "timeout" ); 36285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, s.timeout); 36295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 36305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 36315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Send the data 36325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) try { 36335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) xhr.send(s.data); 36345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } catch(e) { 36355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.handleError(s, xhr, null, e); 36365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 36375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 36385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // firefox 1.5 doesn't fire statechange for sync requests 36395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !s.async ) 36405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) onreadystatechange(); 36415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 36425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function success(){ 36435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If a local callback was specified, fire it and pass it the data 36445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( s.success ) 36455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) s.success( data, status ); 36465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 36475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Fire the global callback 36485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( s.global ) 36495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.trigger( "ajaxSuccess", [xhr, s] ); 36505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 36515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 36525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function complete(){ 36535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Process result 36545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( s.complete ) 36555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) s.complete(xhr, status); 36565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 36575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // The request was completed 36585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( s.global ) 36595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.trigger( "ajaxComplete", [xhr, s] ); 36605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 36615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Handle the global AJAX counter 36625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( s.global && ! --jQuery.active ) 36635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.trigger( "ajaxStop" ); 36645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 36655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 36665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // return XMLHttpRequest to allow aborting the request etc. 36675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return xhr; 36685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 36695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 36705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) handleError: function( s, xhr, status, e ) { 36715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If a local callback was specified, fire it 36725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( s.error ) s.error( xhr, status, e ); 36735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 36745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Fire the global callback 36755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( s.global ) 36765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.trigger( "ajaxError", [xhr, s, e] ); 36775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 36785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 36795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Counter for holding the number of active queries 36805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) active: 0, 36815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 36825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Determines if an XMLHttpRequest was successful or not 36835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) httpSuccess: function( xhr ) { 36845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) try { 36855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // IE error sometimes returns 1223 when it should be 204 so treat it as success, see #1450 36865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return !xhr.status && location.protocol == "file:" || 36875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ( xhr.status >= 200 && xhr.status < 300 ) || xhr.status == 304 || xhr.status == 1223; 36885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } catch(e){} 36895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 36905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 36915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 36925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Determines if an XMLHttpRequest returns NotModified 36935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) httpNotModified: function( xhr, url ) { 36945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) try { 36955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var xhrRes = xhr.getResponseHeader("Last-Modified"); 36965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 36975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Firefox always returns 200. check Last-Modified date 36985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return xhr.status == 304 || xhrRes == jQuery.lastModified[url]; 36995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } catch(e){} 37005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 37015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 37025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 37035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) httpData: function( xhr, type, s ) { 37045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ct = xhr.getResponseHeader("content-type"), 37055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) xml = type == "xml" || !type && ct && ct.indexOf("xml") >= 0, 37065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) data = xml ? xhr.responseXML : xhr.responseText; 37075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 37085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( xml && data.documentElement.tagName == "parsererror" ) 37095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) throw "parsererror"; 37105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 37115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Allow a pre-filtering function to sanitize the response 37125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // s != null is checked to keep backwards compatibility 37135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if( s && s.dataFilter ) 37145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) data = s.dataFilter( data, type ); 37155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 37165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // The filter can actually parse the response 37175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if( typeof data === "string" ){ 37185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 37195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If the type is "script", eval it in global context 37205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( type == "script" ) 37215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.globalEval( data ); 37225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 37235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Get the JavaScript object, if JSON is used. 37245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( type == "json" ) 37255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) data = window["eval"]("(" + data + ")"); 37265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 37275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 37285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return data; 37295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 37305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 37315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Serialize an array of form elements or a set of 37325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // key/values into a query string 37335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) param: function( a ) { 37345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var s = [ ]; 37355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 37365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function add( key, value ){ 37375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) s[ s.length ] = encodeURIComponent(key) + '=' + encodeURIComponent(value); 37385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 37395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 37405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If an array was passed in, assume that it is an array 37415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // of form elements 37425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.isArray(a) || a.jquery ) 37435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Serialize the form elements 37445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.each( a, function(){ 37455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) add( this.name, this.value ); 37465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 37475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 37485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Otherwise, assume that it's an object of key/value pairs 37495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else 37505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Serialize the key/values 37515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var j in a ) 37525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If the value is an array then the key names need to be repeated 37535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.isArray(a[j]) ) 37545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.each( a[j], function(){ 37555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) add( j, this ); 37565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 37575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else 37585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) add( j, jQuery.isFunction(a[j]) ? a[j]() : a[j] ); 37595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 37605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Return the resulting serialization 37615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return s.join("&").replace(/%20/g, "+"); 37625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 37635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 37645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 37655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var elemdisplay = {}, 37665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) timerId, 37675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fxAttrs = [ 37685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // height animations 37695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) [ "height", "marginTop", "marginBottom", "paddingTop", "paddingBottom" ], 37705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // width animations 37715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) [ "width", "marginLeft", "marginRight", "paddingLeft", "paddingRight" ], 37725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // opacity animations 37735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) [ "opacity" ] 37745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ]; 37755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 37765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function genFx( type, num ){ 37775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var obj = {}; 37785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function(){ 37795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) obj[ this ] = type; 37805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 37815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return obj; 37825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 37835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 37845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.fn.extend({ 37855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) show: function(speed,callback){ 37865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( speed ) { 37875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.animate( genFx("show", 3), speed, callback); 37885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 37895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0, l = this.length; i < l; i++ ){ 37905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var old = jQuery.data(this[i], "olddisplay"); 37915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 37925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this[i].style.display = old || ""; 37935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 37945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.css(this[i], "display") === "none" ) { 37955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var tagName = this[i].tagName, display; 37965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 37975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elemdisplay[ tagName ] ) { 37985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) display = elemdisplay[ tagName ]; 37995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 38005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var elem = jQuery("<" + tagName + " />").appendTo("body"); 38015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) display = elem.css("display"); 38035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( display === "none" ) 38045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) display = "block"; 38055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.remove(); 38075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elemdisplay[ tagName ] = display; 38095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 38105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.data(this[i], "olddisplay", display); 38125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 38135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 38145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Set the display of the elements in a second loop 38165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // to avoid the constant reflow 38175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0, l = this.length; i < l; i++ ){ 38185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this[i].style.display = jQuery.data(this[i], "olddisplay") || ""; 38195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 38205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this; 38225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 38235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 38245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) hide: function(speed,callback){ 38265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( speed ) { 38275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.animate( genFx("hide", 3), speed, callback); 38285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 38295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0, l = this.length; i < l; i++ ){ 38305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var old = jQuery.data(this[i], "olddisplay"); 38315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !old && old !== "none" ) 38325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.data(this[i], "olddisplay", jQuery.css(this[i], "display")); 38335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 38345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Set the display of the elements in a second loop 38365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // to avoid the constant reflow 38375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0, l = this.length; i < l; i++ ){ 38385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this[i].style.display = "none"; 38395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 38405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this; 38425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 38435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 38445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Save the old toggle function 38465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _toggle: jQuery.fn.toggle, 38475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) toggle: function( fn, fn2 ){ 38495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var bool = typeof fn === "boolean"; 38505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.isFunction(fn) && jQuery.isFunction(fn2) ? 38525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._toggle.apply( this, arguments ) : 38535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fn == null || bool ? 38545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.each(function(){ 38555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var state = bool ? fn : jQuery(this).is(":hidden"); 38565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery(this)[ state ? "show" : "hide" ](); 38575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }) : 38585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.animate(genFx("toggle", 3), fn, fn2); 38595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 38605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fadeTo: function(speed,to,callback){ 38625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.animate({opacity: to}, speed, callback); 38635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 38645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) animate: function( prop, speed, easing, callback ) { 38665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var optall = jQuery.speed(speed, easing, callback); 38675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this[ optall.queue === false ? "each" : "queue" ](function(){ 38695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var opt = jQuery.extend({}, optall), p, 38715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) hidden = this.nodeType == 1 && jQuery(this).is(":hidden"), 38725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) self = this; 38735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( p in prop ) { 38755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( prop[p] == "hide" && hidden || prop[p] == "show" && !hidden ) 38765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return opt.complete.call(this); 38775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( ( p == "height" || p == "width" ) && this.style ) { 38795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Store display property 38805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) opt.display = jQuery.css(this, "display"); 38815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Make sure that nothing sneaks out 38835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) opt.overflow = this.style.overflow; 38845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 38855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 38865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( opt.overflow != null ) 38885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.style.overflow = "hidden"; 38895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) opt.curAnim = jQuery.extend({}, prop); 38915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.each( prop, function(name, val){ 38935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var e = new jQuery.fx( self, opt, name ); 38945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( /toggle|show|hide/.test(val) ) 38965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) e[ val == "toggle" ? hidden ? "show" : "hide" : val ]( prop ); 38975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else { 38985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var parts = val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/), 38995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) start = e.cur(true) || 0; 39005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 39015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( parts ) { 39025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var end = parseFloat(parts[2]), 39035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) unit = parts[3] || "px"; 39045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 39055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // We need to compute starting value 39065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( unit != "px" ) { 39075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) self.style[ name ] = (end || 1) + unit; 39085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) start = ((end || 1) / e.cur(true)) * start; 39095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) self.style[ name ] = start + unit; 39105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 39115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 39125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If a +=/-= token was provided, we're doing a relative animation 39135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( parts[1] ) 39145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) end = ((parts[1] == "-=" ? -1 : 1) * end) + start; 39155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 39165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) e.custom( start, end, unit ); 39175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else 39185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) e.custom( start, val, "" ); 39195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 39205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 39215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 39225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // For JS strict compliance 39235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return true; 39245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 39255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 39265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 39275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) stop: function(clearQueue, gotoEnd){ 39285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var timers = jQuery.timers; 39295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 39305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (clearQueue) 39315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.queue([]); 39325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 39335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.each(function(){ 39345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // go in reverse order so anything added to the queue during the loop is ignored 39355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = timers.length - 1; i >= 0; i-- ) 39365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( timers[i].elem == this ) { 39375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (gotoEnd) 39385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // force the next step to be the last 39395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) timers[i](true); 39405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) timers.splice(i, 1); 39415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 39425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 39435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 39445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // start the next in the queue if the last step wasn't forced 39455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!gotoEnd) 39465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.dequeue(); 39475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 39485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this; 39495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 39505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 39515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 39525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 39535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Generate shortcuts for custom animations 39545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.each({ 39555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) slideDown: genFx("show", 1), 39565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) slideUp: genFx("hide", 1), 39575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) slideToggle: genFx("toggle", 1), 39585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fadeIn: { opacity: "show" }, 39595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fadeOut: { opacity: "hide" } 39605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, function( name, props ){ 39615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.fn[ name ] = function( speed, callback ){ 39625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.animate( props, speed, callback ); 39635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 39645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 39655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 39665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.extend({ 39675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 39685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) speed: function(speed, easing, fn) { 39695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var opt = typeof speed === "object" ? speed : { 39705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) complete: fn || !fn && easing || 39715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.isFunction( speed ) && speed, 39725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) duration: speed, 39735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) easing: fn && easing || easing && !jQuery.isFunction(easing) && easing 39745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 39755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 39765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration : 39775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.fx.speeds[opt.duration] || jQuery.fx.speeds._default; 39785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 39795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Queueing 39805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) opt.old = opt.complete; 39815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) opt.complete = function(){ 39825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( opt.queue !== false ) 39835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery(this).dequeue(); 39845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.isFunction( opt.old ) ) 39855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) opt.old.call( this ); 39865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 39875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 39885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return opt; 39895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 39905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 39915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) easing: { 39925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) linear: function( p, n, firstNum, diff ) { 39935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return firstNum + diff * p; 39945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 39955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) swing: function( p, n, firstNum, diff ) { 39965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum; 39975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 39985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 39995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 40005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) timers: [], 40015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 40025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fx: function( elem, options, prop ){ 40035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.options = options; 40045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.elem = elem; 40055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.prop = prop; 40065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 40075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !options.orig ) 40085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) options.orig = {}; 40095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 40105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 40115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 40125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 40135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.fx.prototype = { 40145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 40155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Simple function for setting a style value 40165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) update: function(){ 40175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( this.options.step ) 40185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.options.step.call( this.elem, this.now, this ); 40195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 40205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) (jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this ); 40215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 40225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Set display property to block for height/width animations 40235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( ( this.prop == "height" || this.prop == "width" ) && this.elem.style ) 40245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.elem.style.display = "block"; 40255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 40265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 40275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Get the current size 40285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cur: function(force){ 40295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) ) 40305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.elem[ this.prop ]; 40315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 40325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var r = parseFloat(jQuery.css(this.elem, this.prop, force)); 40335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return r && r > -10000 ? r : parseFloat(jQuery.curCSS(this.elem, this.prop)) || 0; 40345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 40355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 40365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Start an animation from one number to another 40375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) custom: function(from, to, unit){ 40385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.startTime = now(); 40395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.start = from; 40405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.end = to; 40415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.unit = unit || this.unit || "px"; 40425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.now = this.start; 40435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.pos = this.state = 0; 40445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 40455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var self = this; 40465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function t(gotoEnd){ 40475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return self.step(gotoEnd); 40485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 40495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 40505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) t.elem = this.elem; 40515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 40525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( t() && jQuery.timers.push(t) && !timerId ) { 40535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) timerId = setInterval(function(){ 40545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var timers = jQuery.timers; 40555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 40565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0; i < timers.length; i++ ) 40575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !timers[i]() ) 40585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) timers.splice(i--, 1); 40595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 40605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !timers.length ) { 40615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) clearInterval( timerId ); 40625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) timerId = undefined; 40635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 40645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 13); 40655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 40665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 40675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 40685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Simple 'show' function 40695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) show: function(){ 40705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Remember where we started, so that we can go back to it later 40715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.options.orig[this.prop] = jQuery.attr( this.elem.style, this.prop ); 40725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.options.show = true; 40735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 40745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Begin the animation 40755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Make sure that we start at a small width/height to avoid any 40765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // flash of content 40775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.custom(this.prop == "width" || this.prop == "height" ? 1 : 0, this.cur()); 40785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 40795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Start by showing the element 40805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery(this.elem).show(); 40815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 40825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 40835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Simple 'hide' function 40845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) hide: function(){ 40855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Remember where we started, so that we can go back to it later 40865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.options.orig[this.prop] = jQuery.attr( this.elem.style, this.prop ); 40875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.options.hide = true; 40885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 40895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Begin the animation 40905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.custom(this.cur(), 0); 40915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 40925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 40935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Each step of an animation 40945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) step: function(gotoEnd){ 40955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var t = now(); 40965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 40975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( gotoEnd || t >= this.options.duration + this.startTime ) { 40985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.now = this.end; 40995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.pos = this.state = 1; 41005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.update(); 41015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 41025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.options.curAnim[ this.prop ] = true; 41035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 41045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var done = true; 41055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i in this.options.curAnim ) 41065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( this.options.curAnim[i] !== true ) 41075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) done = false; 41085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 41095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( done ) { 41105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( this.options.display != null ) { 41115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Reset the overflow 41125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.elem.style.overflow = this.options.overflow; 41135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 41145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Reset the display 41155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.elem.style.display = this.options.display; 41165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.css(this.elem, "display") == "none" ) 41175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.elem.style.display = "block"; 41185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 41195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 41205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Hide the element if the "hide" operation was done 41215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( this.options.hide ) 41225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery(this.elem).hide(); 41235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 41245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Reset the properties, if the item has been hidden or shown 41255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( this.options.hide || this.options.show ) 41265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var p in this.options.curAnim ) 41275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.attr(this.elem.style, p, this.options.orig[p]); 41285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 41295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Execute the complete function 41305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.options.complete.call( this.elem ); 41315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 41325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 41335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 41345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 41355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var n = t - this.startTime; 41365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.state = n / this.options.duration; 41375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 41385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Perform the easing function, defaults to swing 41395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.pos = jQuery.easing[this.options.easing || (jQuery.easing.swing ? "swing" : "linear")](this.state, n, 0, 1, this.options.duration); 41405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.now = this.start + ((this.end - this.start) * this.pos); 41415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 41425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Perform the next step of the animation 41435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.update(); 41445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 41455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 41465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return true; 41475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 41485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 41495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 41505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 41515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.extend( jQuery.fx, { 41525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) speeds:{ 41535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) slow: 600, 41545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fast: 200, 41555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Default speed 41565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _default: 400 41575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 41585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) step: { 41595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 41605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) opacity: function(fx){ 41615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.attr(fx.elem.style, "opacity", fx.now); 41625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 41635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 41645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _default: function(fx){ 41655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) 41665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fx.elem.style[ fx.prop ] = fx.now + fx.unit; 41675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else 41685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fx.elem[ fx.prop ] = fx.now; 41695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 41705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 41715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 41725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if ( document.documentElement["getBoundingClientRect"] ) 41735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.fn.offset = function() { 41745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !this[0] ) return { top: 0, left: 0 }; 41755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( this[0] === this[0].ownerDocument.body ) return jQuery.offset.bodyOffset( this[0] ); 41765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var box = this[0].getBoundingClientRect(), doc = this[0].ownerDocument, body = doc.body, docElem = doc.documentElement, 41775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) clientTop = docElem.clientTop || body.clientTop || 0, clientLeft = docElem.clientLeft || body.clientLeft || 0, 41785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) top = box.top + (self.pageYOffset || jQuery.boxModel && docElem.scrollTop || body.scrollTop ) - clientTop, 41795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) left = box.left + (self.pageXOffset || jQuery.boxModel && docElem.scrollLeft || body.scrollLeft) - clientLeft; 41805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return { top: top, left: left }; 41815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 41825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)else 41835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.fn.offset = function() { 41845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !this[0] ) return { top: 0, left: 0 }; 41855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( this[0] === this[0].ownerDocument.body ) return jQuery.offset.bodyOffset( this[0] ); 41865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.offset.initialized || jQuery.offset.initialize(); 41875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 41885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var elem = this[0], offsetParent = elem.offsetParent, prevOffsetParent = elem, 41895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) doc = elem.ownerDocument, computedStyle, docElem = doc.documentElement, 41905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) body = doc.body, defaultView = doc.defaultView, 41915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) prevComputedStyle = defaultView.getComputedStyle(elem, null), 41925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) top = elem.offsetTop, left = elem.offsetLeft; 41935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 41945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) { 41955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) computedStyle = defaultView.getComputedStyle(elem, null); 41965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) top -= elem.scrollTop, left -= elem.scrollLeft; 41975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem === offsetParent ) { 41985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) top += elem.offsetTop, left += elem.offsetLeft; 41995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && /^t(able|d|h)$/i.test(elem.tagName)) ) 42005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) top += parseInt( computedStyle.borderTopWidth, 10) || 0, 42015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) left += parseInt( computedStyle.borderLeftWidth, 10) || 0; 42025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) prevOffsetParent = offsetParent, offsetParent = elem.offsetParent; 42035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 42045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== "visible" ) 42055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) top += parseInt( computedStyle.borderTopWidth, 10) || 0, 42065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) left += parseInt( computedStyle.borderLeftWidth, 10) || 0; 42075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) prevComputedStyle = computedStyle; 42085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 42095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 42105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( prevComputedStyle.position === "relative" || prevComputedStyle.position === "static" ) 42115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) top += body.offsetTop, 42125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) left += body.offsetLeft; 42135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 42145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( prevComputedStyle.position === "fixed" ) 42155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) top += Math.max(docElem.scrollTop, body.scrollTop), 42165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) left += Math.max(docElem.scrollLeft, body.scrollLeft); 42175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 42185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return { top: top, left: left }; 42195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 42205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 42215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.offset = { 42225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) initialize: function() { 42235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( this.initialized ) return; 42245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var body = document.body, container = document.createElement('div'), innerDiv, checkDiv, table, td, rules, prop, bodyMarginTop = body.style.marginTop, 42255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) html = '<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;" cellpadding="0" cellspacing="0"><tr><td></td></tr></table>'; 42265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 42275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rules = { position: 'absolute', top: 0, left: 0, margin: 0, border: 0, width: '1px', height: '1px', visibility: 'hidden' }; 42285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( prop in rules ) container.style[prop] = rules[prop]; 42295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 42305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) container.innerHTML = html; 42315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) body.insertBefore(container, body.firstChild); 42325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) innerDiv = container.firstChild, checkDiv = innerDiv.firstChild, td = innerDiv.nextSibling.firstChild.firstChild; 42335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 42345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.doesNotAddBorder = (checkDiv.offsetTop !== 5); 42355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.doesAddBorderForTableAndCells = (td.offsetTop === 5); 42365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 42375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) innerDiv.style.overflow = 'hidden', innerDiv.style.position = 'relative'; 42385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5); 42395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 42405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) body.style.marginTop = '1px'; 42415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.doesNotIncludeMarginInBodyOffset = (body.offsetTop === 0); 42425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) body.style.marginTop = bodyMarginTop; 42435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 42445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) body.removeChild(container); 42455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.initialized = true; 42465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 42475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 42485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bodyOffset: function(body) { 42495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.offset.initialized || jQuery.offset.initialize(); 42505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var top = body.offsetTop, left = body.offsetLeft; 42515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.offset.doesNotIncludeMarginInBodyOffset ) 42525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) top += parseInt( jQuery.curCSS(body, 'marginTop', true), 10 ) || 0, 42535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) left += parseInt( jQuery.curCSS(body, 'marginLeft', true), 10 ) || 0; 42545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return { top: top, left: left }; 42555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 42565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 42575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 42585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 42595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.fn.extend({ 42605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) position: function() { 42615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var left = 0, top = 0, results; 42625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 42635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( this[0] ) { 42645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Get *real* offsetParent 42655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var offsetParent = this.offsetParent(), 42665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 42675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Get correct offsets 42685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) offset = this.offset(), 42695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) parentOffset = /^body|html$/i.test(offsetParent[0].tagName) ? { top: 0, left: 0 } : offsetParent.offset(); 42705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 42715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Subtract element margins 42725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // note: when an element has margin: auto the offsetLeft and marginLeft 42735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // are the same in Safari causing offset.left to incorrectly be 0 42745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) offset.top -= num( this, 'marginTop' ); 42755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) offset.left -= num( this, 'marginLeft' ); 42765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 42775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Add offsetParent borders 42785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) parentOffset.top += num( offsetParent, 'borderTopWidth' ); 42795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) parentOffset.left += num( offsetParent, 'borderLeftWidth' ); 42805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 42815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Subtract the two offsets 42825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) results = { 42835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) top: offset.top - parentOffset.top, 42845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) left: offset.left - parentOffset.left 42855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 42865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 42875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 42885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return results; 42895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 42905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 42915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) offsetParent: function() { 42925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var offsetParent = this[0].offsetParent || document.body; 42935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while ( offsetParent && (!/^body|html$/i.test(offsetParent.tagName) && jQuery.css(offsetParent, 'position') == 'static') ) 42945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) offsetParent = offsetParent.offsetParent; 42955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery(offsetParent); 42965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 42975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 42985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 42995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 43005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Create scrollLeft and scrollTop methods 43015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.each( ['Left', 'Top'], function(i, name) { 43025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var method = 'scroll' + name; 43035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 43045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.fn[ method ] = function(val) { 43055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!this[0]) return null; 43065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 43075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return val !== undefined ? 43085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 43095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Set the scroll offset 43105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.each(function() { 43115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this == window || this == document ? 43125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) window.scrollTo( 43135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) !i ? val : jQuery(window).scrollLeft(), 43145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) i ? val : jQuery(window).scrollTop() 43155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ) : 43165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this[ method ] = val; 43175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }) : 43185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 43195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Return the scroll offset 43205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this[0] == window || this[0] == document ? 43215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) self[ i ? 'pageYOffset' : 'pageXOffset' ] || 43225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.boxModel && document.documentElement[ method ] || 43235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) document.body[ method ] : 43245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this[0][ method ]; 43255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 43265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 43275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Create innerHeight, innerWidth, outerHeight and outerWidth methods 43285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.each([ "Height", "Width" ], function(i, name){ 43295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 43305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var tl = i ? "Left" : "Top", // top or left 43315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) br = i ? "Right" : "Bottom", // bottom or right 43325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) lower = name.toLowerCase(); 43335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 43345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // innerHeight and innerWidth 43355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.fn["inner" + name] = function(){ 43365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this[0] ? 43375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.css( this[0], lower, false, "padding" ) : 43385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) null; 43395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 43405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 43415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // outerHeight and outerWidth 43425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.fn["outer" + name] = function(margin) { 43435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this[0] ? 43445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.css( this[0], lower, false, margin ? "margin" : "border" ) : 43455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) null; 43465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 43475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 43485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var type = name.toLowerCase(); 43495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 43505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.fn[ type ] = function( size ) { 43515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Get window width or height 43525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this[0] == window ? 43535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode 43545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) document.compatMode == "CSS1Compat" && document.documentElement[ "client" + name ] || 43555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) document.body[ "client" + name ] : 43565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 43575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Get document width or height 43585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this[0] == document ? 43595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Either scroll[Width/Height] or offset[Width/Height], whichever is greater 43605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Math.max( 43615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) document.documentElement["client" + name], 43625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) document.body["scroll" + name], document.documentElement["scroll" + name], 43635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) document.body["offset" + name], document.documentElement["offset" + name] 43645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ) : 43655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 43665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Get or set width or height on the element 43675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) size === undefined ? 43685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Get width or height on the element 43695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) (this.length ? jQuery.css( this[0], type ) : null) : 43705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 43715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Set the width or height on the element (default to pixels if value is unitless) 43725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.css( type, typeof size === "string" ? size : size + "px" ); 43735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 43745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 43755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 43765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)})(); 4377