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