From: Ariel Flesler <aflesler@gmail.com>
Date: Tue, 13 May 2008 01:45:58 +0000 (+0000)
Subject: jquery: removing unnecessary trailing and leading spaces & tabs.
X-Git-Url: http://git.asbjorn.it/?a=commitdiff_plain;h=3f5ff3097c315456fe92c9b1e4578590e1eb8648;p=jquery.git

jquery: removing unnecessary trailing and leading spaces & tabs.
---

diff --git a/src/ajax.js b/src/ajax.js
index e0ab7f4..244397f 100644
--- a/src/ajax.js
+++ b/src/ajax.js
@@ -1,7 +1,7 @@
 jQuery.fn.extend({
 	// Keep a copy of the old load
 	_load: jQuery.fn.load,
-	
+
 	load: function( url, params, callback ) {
 		if ( typeof url != 'string' )
 			return this._load( url );
@@ -71,8 +71,8 @@ jQuery.fn.extend({
 				jQuery.makeArray(this.elements) : this;
 		})
 		.filter(function(){
-			return this.name && !this.disabled && 
-				(this.checked || /select|textarea/i.test(this.nodeName) || 
+			return this.name && !this.disabled &&
+				(this.checked || /select|textarea/i.test(this.nodeName) ||
 					/text|hidden|password/i.test(this.type));
 		})
 		.map(function(i, elem){
@@ -103,7 +103,7 @@ jQuery.extend({
 			callback = data;
 			data = null;
 		}
-		
+
 		return jQuery.ajax({
 			type: "GET",
 			url: url,
@@ -159,7 +159,7 @@ jQuery.extend({
 			_default: "*/*"
 		}
 	},
-	
+
 	// Last-Modified header cache for next request
 	lastModified: {},
 
@@ -248,7 +248,7 @@ jQuery.extend({
 
 				// Attach handlers for all browsers
 				script.onload = script.onreadystatechange = function(){
-					if ( !done && (!this.readyState || 
+					if ( !done && (!this.readyState ||
 							this.readyState == "loaded" || this.readyState == "complete") ) {
 						done = true;
 						success();
@@ -301,7 +301,7 @@ jQuery.extend({
 			xml.abort();
 			return false;
 		}
-		
+
 		if ( s.global )
 			jQuery.event.trigger("ajaxSend", [xml, s]);
 
@@ -310,13 +310,13 @@ jQuery.extend({
 			// The transfer is complete and the data is available, or the request timed out
 			if ( !requestDone && xml && (xml.readyState == 4 || isTimeout == "timeout") ) {
 				requestDone = true;
-				
+
 				// clear poll interval
 				if (ival) {
 					clearInterval(ival);
 					ival = null;
 				}
-				
+
 				status = isTimeout == "timeout" && "timeout" ||
 					!jQuery.httpSuccess( xml ) && "error" ||
 					s.ifModified && jQuery.httpNotModified( xml, s.url ) && "notmodified" ||
@@ -339,13 +339,13 @@ jQuery.extend({
 					try {
 						modRes = xml.getResponseHeader("Last-Modified");
 					} catch(e) {} // swallow exception thrown by FF if header is not available
-	
+
 					if ( s.ifModified && modRes )
 						jQuery.lastModified[s.url] = modRes;
 
 					// JSONP handles its own success callback
 					if ( !jsonp )
-						success();	
+						success();
 				} else
 					jQuery.handleError(s, xml, status);
 
@@ -357,10 +357,10 @@ jQuery.extend({
 					xml = null;
 			}
 		};
-		
+
 		if ( s.async ) {
 			// don't attach the handler to the request, just poll it instead
-			var ival = setInterval(onreadystatechange, 13); 
+			var ival = setInterval(onreadystatechange, 13);
 
 			// Timeout checker
 			if ( s.timeout > 0 )
@@ -369,20 +369,20 @@ jQuery.extend({
 					if ( xml ) {
 						// Cancel the request
 						xml.abort();
-	
+
 						if( !requestDone )
 							onreadystatechange( "timeout" );
 					}
 				}, s.timeout);
 		}
-			
+
 		// Send the data
 		try {
 			xml.send(s.data);
 		} catch(e) {
 			jQuery.handleError(s, xml, null, e);
 		}
-		
+
 		// firefox 1.5 doesn't fire statechange for sync requests
 		if ( !s.async )
 			onreadystatechange();
@@ -410,7 +410,7 @@ jQuery.extend({
 			if ( s.global && ! --jQuery.active )
 				jQuery.event.trigger( "ajaxStop" );
 		}
-		
+
 		// return XMLHttpRequest to allow aborting the request etc.
 		return xml;
 	},
diff --git a/src/core.js b/src/core.js
index d23d450..a0533b1 100644
--- a/src/core.js
+++ b/src/core.js
@@ -11,7 +11,7 @@
 
 // Map over jQuery in case of overwrite
 var _jQuery = window.jQuery,
-// Map over the $ in case of overwrite	
+// Map over the $ in case of overwrite
 	_$ = window.$;
 
 var jQuery = window.jQuery = window.$ = function( selector, context ) {
@@ -26,7 +26,7 @@ var quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/,
 // Is it a simple selector
 	isSimple = /^.[^:#\[\.]*$/,
 
-// Will speed up references to undefined, and allows munging its name.	
+// Will speed up references to undefined, and allows munging its name.
 	undefined;
 
 jQuery.fn = jQuery.prototype = {
@@ -78,10 +78,10 @@ jQuery.fn = jQuery.prototype = {
 		// Shortcut for document ready
 		} else if ( jQuery.isFunction( selector ) )
 			return jQuery( document )[ jQuery.fn.ready ? "ready" : "load" ]( selector );
-		
+
 		return this.setArray(jQuery.makeArray(selector));
 	},
-	
+
 	// The current version of jQuery being used
 	jquery: "@VERSION",
 
@@ -89,7 +89,7 @@ jQuery.fn = jQuery.prototype = {
 	size: function() {
 		return this.length;
 	},
-	
+
 	// The number of elements contained in the matched element set
 	length: 0,
 
@@ -104,7 +104,7 @@ jQuery.fn = jQuery.prototype = {
 			// Return just the object
 			this[ num ];
 	},
-	
+
 	// Take an array of elements and push it onto the stack
 	// (returning the new matched element set)
 	pushStack: function( elems ) {
@@ -117,7 +117,7 @@ jQuery.fn = jQuery.prototype = {
 		// Return the newly-formed element set
 		return ret;
 	},
-	
+
 	// Force the current matched set of elements to become
 	// the specified array of elements (destroying the stack in the process)
 	// You should use pushStack() in order to do this, but maintain the stack
@@ -126,7 +126,7 @@ jQuery.fn = jQuery.prototype = {
 		// is a super-fast way to populate an object with array-like properties
 		this.length = 0;
 		Array.prototype.push.apply( this, elems );
-		
+
 		return this;
 	},
 
@@ -137,13 +137,13 @@ jQuery.fn = jQuery.prototype = {
 		return jQuery.each( this, callback, args );
 	},
 
-	// Determine the position of an element within 
+	// Determine the position of an element within
 	// the matched set of elements
 	index: function( elem ) {
 		var ret = -1;
 
 		// Locate the position of the desired element
-		return jQuery.inArray( 
+		return jQuery.inArray(
 			// If it receives a jQuery object, the first element is used
 			elem && elem.jquery ? elem[0] : elem
 		, this );
@@ -151,7 +151,7 @@ jQuery.fn = jQuery.prototype = {
 
 	attr: function( name, value, type ) {
 		var options = name;
-		
+
 		// Look for the case where we're accessing a style value
 		if ( name.constructor == String )
 			if ( value === undefined )
@@ -161,7 +161,7 @@ jQuery.fn = jQuery.prototype = {
 				options = {};
 				options[ name ] = value;
 			}
-		
+
 		// Check to see if we're setting style values
 		return this.each(function(i){
 			// Set all the styles
@@ -244,7 +244,7 @@ jQuery.fn = jQuery.prototype = {
 				this.insertBefore( elem, this.firstChild );
 		});
 	},
-	
+
 	before: function() {
 		return this.domManip(arguments, false, false, function(elem){
 			this.parentNode.insertBefore( elem, this );
@@ -279,8 +279,8 @@ jQuery.fn = jQuery.prototype = {
 				// using cloneNode. Calling detachEvent on the
 				// clone will also remove the events from the orignal
 				// In order to get around this, we use innerHTML.
-				// Unfortunately, this means some modifications to 
-				// attributes in IE that are actually only stored 
+				// Unfortunately, this means some modifications to
+				// attributes in IE that are actually only stored
 				// as properties will not be copied (such as the
 				// the name attribute on an input).
 				var clone = this.cloneNode(true),
@@ -298,7 +298,7 @@ jQuery.fn = jQuery.prototype = {
 			if ( this[ expando ] != undefined )
 				this[ expando ] = null;
 		});
-		
+
 		// Copy the events from the original to the clone
 		if ( events === true )
 			this.find("*").andSelf().each(function(i){
@@ -340,9 +340,9 @@ jQuery.fn = jQuery.prototype = {
 	},
 
 	add: function( selector ) {
-		return this.pushStack( jQuery.unique( jQuery.merge( 
+		return this.pushStack( jQuery.unique( jQuery.merge(
 			this.get(),
-			typeof selector == 'string' ? 
+			typeof selector == 'string' ?
 				jQuery( selector ) :
 				jQuery.makeArray( selector )
 		)));
@@ -355,7 +355,7 @@ jQuery.fn = jQuery.prototype = {
 	hasClass: function( selector ) {
 		return this.is( "." + selector );
 	},
-	
+
 	val: function( value ) {
 		if ( value == undefined ) {
 
@@ -368,7 +368,7 @@ jQuery.fn = jQuery.prototype = {
 						values = [],
 						options = elem.options,
 						one = elem.type == "select-one";
-					
+
 					// Nothing was selected
 					if ( index < 0 )
 						return null;
@@ -380,18 +380,18 @@ jQuery.fn = jQuery.prototype = {
 						if ( option.selected ) {
 							// Get the specifc value for the option
 							value = jQuery.browser.msie && !option.attributes.value.specified ? option.text : option.value;
-							
+
 							// We don't need an array for one selects
 							if ( one )
 								return value;
-							
+
 							// Multi-Selects return an array
 							values.push( value );
 						}
 					}
-					
+
 					return values;
-					
+
 				// Everything else, we just grab the value
 				} else
 					return (this[0].value || "").replace(/\r/g, "");
@@ -426,7 +426,7 @@ jQuery.fn = jQuery.prototype = {
 				this.value = value;
 		});
 	},
-	
+
 	html: function( value ) {
 		return value == undefined ?
 			(this.length ?
@@ -463,7 +463,7 @@ jQuery.fn = jQuery.prototype = {
 
 		if ( value === undefined ) {
 			var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);
-			
+
 			if ( data === undefined && this.length )
 				data = jQuery.data( this[0], key );
 
@@ -481,9 +481,9 @@ jQuery.fn = jQuery.prototype = {
 			jQuery.removeData( this, key );
 		});
 	},
-	
+
 	domManip: function( args, table, reverse, callback ) {
-		var clone = this.length > 1, elems; 
+		var clone = this.length > 1, elems;
 
 		return this.each(function(){
 			if ( !elems ) {
@@ -572,8 +572,8 @@ jQuery.extend = jQuery.fn.extend = function() {
 		if ( (options = arguments[ i ]) != null )
 			// Extend the base object
 			for ( var name in options ) {
-				var src = target[ name ], copy = options[ name ]; 
-				
+				var src = target[ name ], copy = options[ name ];
+
 				// Prevent never-ending loop
 				if ( target === copy )
 					continue;
@@ -611,10 +611,10 @@ jQuery.extend({
 
 	// See test/unit/core.js for details concerning this function.
 	isFunction: function( fn ) {
-		return !!fn && typeof fn != "string" && !fn.nodeName && 
+		return !!fn && typeof fn != "string" && !fn.nodeName &&
 			fn.constructor != Array && /function/i.test( fn + "" );
 	},
-	
+
 	// check if an element is in a (or is an) XML document
 	isXMLDoc: function( elem ) {
 		return elem.documentElement && !elem.body ||
@@ -645,9 +645,9 @@ jQuery.extend({
 	nodeName: function( elem, name ) {
 		return elem.nodeName && elem.nodeName.toUpperCase() == name.toUpperCase();
 	},
-	
+
 	cache: {},
-	
+
 	data: function( elem, name, data ) {
 		elem = elem == window ?
 			windowData :
@@ -656,24 +656,24 @@ jQuery.extend({
 		var id = elem[ expando ];
 
 		// Compute a unique ID for the element
-		if ( !id ) 
+		if ( !id )
 			id = elem[ expando ] = ++uuid;
 
 		// Only generate the data cache if we're
 		// trying to access or manipulate it
 		if ( name && !jQuery.cache[ id ] )
 			jQuery.cache[ id ] = {};
-		
+
 		// Prevent overriding the named cache with undefined values
 		if ( data !== undefined )
 			jQuery.cache[ id ][ name ] = data;
-		
-		// Return the named cache data, or the ID for the element	
+
+		// Return the named cache data, or the ID for the element
 		return name ?
 			jQuery.cache[ id ][ name ] :
 			id;
 	},
-	
+
 	removeData: function( elem, name ) {
 		elem = elem == window ?
 			windowData :
@@ -717,7 +717,7 @@ jQuery.extend({
 	// args is for internal usage only
 	each: function( object, callback, args ) {
 		var name, i = 0, length = object.length;
-		
+
 		if ( args ) {
 			if ( length == undefined ) {
 				for ( name in object )
@@ -735,18 +735,18 @@ jQuery.extend({
 					if ( callback.call( object[ name ], name, object[ name ] ) === false )
 						break;
 			} else
-				for ( var value = object[0]; 
+				for ( var value = object[0];
 					i < length && callback.call( value, i, value ) !== false; value = object[++i] ){}
 		}
 
 		return object;
 	},
-	
+
 	prop: function( elem, value, type, i, name ) {
 			// Handle executable functions
 			if ( jQuery.isFunction( value ) )
 				value = value.call( elem, i );
-				
+
 			// Handle passing in a number to a CSS property
 			return value && value.constructor == Number && type == "curCSS" && !exclude.test( name ) ?
 				value + "px" :
@@ -767,7 +767,7 @@ jQuery.extend({
 			if (elem.nodeType == 1)
 				elem.className = classNames != undefined ?
 					jQuery.grep(elem.className.split(/\s+/), function(className){
-						return !jQuery.className.has( classNames, className );	
+						return !jQuery.className.has( classNames, className );
 					}).join(" ") :
 					"";
 		},
@@ -797,7 +797,7 @@ jQuery.extend({
 	css: function( elem, name, force ) {
 		if ( name == "width" || name == "height" ) {
 			var val, props = { position: "absolute", visibility: "hidden", display:"block" }, which = name == "width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ];
-		
+
 			function getWH() {
 				val = name == "width" ? elem.offsetWidth : elem.offsetHeight;
 				var padding = 0, border = 0;
@@ -807,15 +807,15 @@ jQuery.extend({
 				});
 				val -= Math.round(padding + border);
 			}
-		
+
 			if ( jQuery(elem).is(":visible") )
 				getWH();
 			else
 				jQuery.swap( elem, props, getWH );
-			
+
 			return Math.max(0, val);
 		}
-		
+
 		return jQuery.curCSS( elem, name, force );
 	},
 
@@ -826,7 +826,7 @@ jQuery.extend({
 		function color( elem ) {
 			if ( !jQuery.browser.safari )
 				return false;
-			
+
 			// getComputedStyle is cached
 			var ret = getComputedStyle( elem, null );
 			return !ret || ret.getPropertyValue("color") == "";
@@ -846,7 +846,7 @@ jQuery.extend({
 			style.outline = "0 solid black";
 			style.outline = save;
 		}
-		
+
 		// Make sure we're using the right name for getting the float value
 		if ( name.match( /float/i ) )
 			name = styleFloat;
@@ -929,12 +929,12 @@ jQuery.extend({
 
 		return ret;
 	},
-	
+
 	clean: function( elems, context ) {
 		var ret = [];
 		context = context || document;
 		// !context.createElement fails in IE with an error but returns typeof 'object'
-		if (typeof context.createElement == 'undefined') 
+		if (typeof context.createElement == 'undefined')
 			context = context.ownerDocument || context[0] && context[0].ownerDocument || document;
 
 		jQuery.each(elems, function(i, elem){
@@ -943,7 +943,7 @@ jQuery.extend({
 
 			if ( elem.constructor == Number )
 				elem += '';
-			
+
 			// Convert html string into DOM nodes
 			if ( typeof elem == "string" ) {
 				// Fix "XHTML"-style tags in all browsers
@@ -960,58 +960,58 @@ jQuery.extend({
 					// option or optgroup
 					!tags.indexOf("<opt") &&
 					[ 1, "<select multiple='multiple'>", "</select>" ] ||
-					
+
 					!tags.indexOf("<leg") &&
 					[ 1, "<fieldset>", "</fieldset>" ] ||
-					
+
 					tags.match(/^<(thead|tbody|tfoot|colg|cap)/) &&
 					[ 1, "<table>", "</table>" ] ||
-					
+
 					!tags.indexOf("<tr") &&
 					[ 2, "<table><tbody>", "</tbody></table>" ] ||
-					
+
 				 	// <thead> matched above
 					(!tags.indexOf("<td") || !tags.indexOf("<th")) &&
 					[ 3, "<table><tbody><tr>", "</tr></tbody></table>" ] ||
-					
+
 					!tags.indexOf("<col") &&
 					[ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ] ||
 
 					// IE can't serialize <link> and <script> tags normally
 					jQuery.browser.msie &&
 					[ 1, "div<div>", "</div>" ] ||
-					
+
 					[ 0, "", "" ];
 
 				// Go to html and back, then peel off extra wrappers
 				div.innerHTML = wrap[1] + elem + wrap[2];
-				
+
 				// Move to the right depth
 				while ( wrap[0]-- )
 					div = div.lastChild;
-				
+
 				// Remove IE's autoinserted <tbody> from table fragments
 				if ( jQuery.browser.msie ) {
-					
+
 					// String was a <table>, *may* have spurious <tbody>
 					var tbody = !tags.indexOf("<table") && tags.indexOf("<tbody") < 0 ?
 						div.firstChild && div.firstChild.childNodes :
-						
+
 						// String was a bare <thead> or <tfoot>
 						wrap[1] == "<table>" && tags.indexOf("<tbody") < 0 ?
 							div.childNodes :
 							[];
-				
+
 					for ( var j = tbody.length - 1; j >= 0 ; --j )
 						if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length )
 							tbody[ j ].parentNode.removeChild( tbody[ j ] );
-					
-					// IE completely kills leading whitespace when innerHTML is used	
-					if ( /^\s/.test( elem ) )	
+
+					// IE completely kills leading whitespace when innerHTML is used
+					if ( /^\s/.test( elem ) )
 						div.insertBefore( context.createTextNode( elem.match(/^\s*/)[0] ), div.firstChild );
-				
+
 				}
-				
+
 				elem = jQuery.makeArray( div.childNodes );
 			}
 
@@ -1078,7 +1078,7 @@ jQuery.extend({
 				// convert the value to a string (all browsers do this but IE) see #1070
 				elem.setAttribute( name, "" + value );
 
-			if ( msie && special && notxml ) 
+			if ( msie && special && notxml )
 				return elem.getAttribute( name, 2 );
 
 			return elem.getAttribute( name );
@@ -1092,7 +1092,7 @@ jQuery.extend({
 			if ( set ) {
 				// IE has trouble with opacity if it does not have layout
 				// Force it by setting the zoom level
-				elem.zoom = 1; 
+				elem.zoom = 1;
 
 				// Set the alpha filter to set the opacity
 				elem.filter = (elem.filter || "").replace( /alpha\([^)]*\)/, "" ) +
@@ -1113,7 +1113,7 @@ jQuery.extend({
 
 		return elem[ name ];
 	},
-	
+
 	trim: function( text ) {
 		return (text || "").replace( /^\s+|\s+$/g, "" );
 	},
@@ -1224,11 +1224,11 @@ jQuery.browser = {
 var styleFloat = jQuery.browser.msie ?
 	"styleFloat" :
 	"cssFloat";
-	
+
 jQuery.extend({
 	// Check to see if the W3C box model is being used
 	boxModel: !jQuery.browser.msie || document.compatMode == "CSS1Compat",
-	
+
 	props: {
 		"for": "htmlFor",
 		"class": "className",
@@ -1282,7 +1282,7 @@ jQuery.each({
 jQuery.each({
 	removeAttr: function( name ) {
 		jQuery.attr( this, name, "" );
-		if (this.nodeType == 1) 
+		if (this.nodeType == 1)
 			this.removeAttribute( name );
 	},
 
@@ -1313,7 +1313,7 @@ jQuery.each({
 	empty: function() {
 		// Remove element nodes and prevent memory leaks
 		jQuery( ">*", this ).remove();
-		
+
 		// Remove any remaining nodes
 		while ( this.firstChild )
 			this.removeChild( this.firstChild );
@@ -1326,25 +1326,25 @@ jQuery.each({
 
 jQuery.each([ "Height", "Width" ], function(i, name){
 	var type = name.toLowerCase();
-	
+
 	jQuery.fn[ type ] = function( size ) {
 		// Get window width or height
 		return this[0] == window ?
 			// Opera reports document.body.client[Width/Height] properly in both quirks and standards
-			jQuery.browser.opera && document.body[ "client" + name ] || 
-			
+			jQuery.browser.opera && document.body[ "client" + name ] ||
+
 			// Safari reports inner[Width/Height] just fine (Mozilla and Opera include scroll bar widths)
 			jQuery.browser.safari && window[ "inner" + name ] ||
-			
+
 			// Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode
 			document.compatMode == "CSS1Compat" && document.documentElement[ "client" + name ] || document.body[ "client" + name ] :
-		
+
 			// Get document width or height
 			this[0] == document ?
 				// Either scroll[Width/Height] or offset[Width/Height], whichever is greater
-				Math.max( 
-					Math.max(document.body["scroll" + name], document.documentElement["scroll" + name]), 
-					Math.max(document.body["offset" + name], document.documentElement["offset" + name]) 
+				Math.max(
+					Math.max(document.body["scroll" + name], document.documentElement["scroll" + name]),
+					Math.max(document.body["offset" + name], document.documentElement["offset" + name])
 				) :
 
 				// Get or set width or height on the element
diff --git a/src/dimensions.js b/src/dimensions.js
index f052b55..42e3f1d 100644
--- a/src/dimensions.js
+++ b/src/dimensions.js
@@ -3,23 +3,23 @@ jQuery.each([ "Height", "Width" ], function(i, name){
 
 	var tl = name == "Height" ? "Top"    : "Left",  // top or left
 		br = name == "Height" ? "Bottom" : "Right"; // bottom or right
-	
+
 	// innerHeight and innerWidth
 	jQuery.fn["inner" + name] = function(){
-		return this[ name.toLowerCase() ]() + 
-			num(this, "padding" + tl) + 
+		return this[ name.toLowerCase() ]() +
+			num(this, "padding" + tl) +
 			num(this, "padding" + br);
 	};
-	
+
 	// outerHeight and outerWidth
 	jQuery.fn["outer" + name] = function(margin) {
-		return this["inner" + name]() + 
+		return this["inner" + name]() +
 			num(this, "border" + tl + "Width") +
 			num(this, "border" + br + "Width") +
-			(!!margin ? 
+			(!!margin ?
 				num(this, "margin" + tl) + num(this, "margin" + br) : 0);
 	};
-	
+
 });
 
 function num(elem, prop) {
diff --git a/src/event.js b/src/event.js
index 40815ec..2bdf9ab 100644
--- a/src/event.js
+++ b/src/event.js
@@ -1,6 +1,6 @@
 /*
  * A number of helper functions used for managing events.
- * Many of the ideas behind this code orignated from 
+ * Many of the ideas behind this code orignated from
  * Dean Edwards' addEvent library.
  */
 jQuery.event = {
@@ -19,19 +19,19 @@ jQuery.event = {
 		// Make sure that the function being executed has a unique ID
 		if ( !handler.guid )
 			handler.guid = this.guid++;
-			
-		// if data is passed, bind to handler 
-		if( data != undefined ) { 
-			// Create temporary function pointer to original handler 
-			var fn = handler; 
-
-			// Create unique handler function, wrapped around original handler 
-			handler = this.proxy( fn, function() { 
-				// Pass arguments and context to original handler 
-				return fn.apply(this, arguments); 
+
+		// if data is passed, bind to handler
+		if( data != undefined ) {
+			// Create temporary function pointer to original handler
+			var fn = handler;
+
+			// Create unique handler function, wrapped around original handler
+			handler = this.proxy( fn, function() {
+				// Pass arguments and context to original handler
+				return fn.apply(this, arguments);
 			});
 
-			// Store data in unique handler 
+			// Store data in unique handler
 			handler.data = data;
 		}
 
@@ -47,7 +47,7 @@ jQuery.event = {
 		// This is to prevent a memory leak with non-native
 		// event in IE.
 		handle.elem = elem;
-			
+
 		// Handle multiple events separated by a space
 		// jQuery(...).bind("mouseover mouseout", fn);
 		jQuery.each(types.split(/\s+/), function(index, type) {
@@ -62,7 +62,7 @@ jQuery.event = {
 			// Init the event handler queue
 			if (!handlers) {
 				handlers = events[type] = {};
-	
+
 				// Check for a special event handler
 				// Only use addEventListener/attachEvent if the special
 				// events handler returns false
@@ -81,7 +81,7 @@ jQuery.event = {
 			// Keep track of which events have been used, for global triggering
 			jQuery.event.global[type] = true;
 		});
-		
+
 		// Nullify elem to prevent memory leaks in IE
 		elem = null;
 	},
@@ -108,19 +108,19 @@ jQuery.event = {
 					handler = types.handler;
 					types = types.type;
 				}
-				
+
 				// Handle multiple events seperated by a space
 				// jQuery(...).unbind("mouseover mouseout", fn);
 				jQuery.each(types.split(/\s+/), function(index, type){
 					// Namespaced event handlers
 					var parts = type.split(".");
 					type = parts[0];
-					
+
 					if ( events[type] ) {
 						// remove the given handler for the given type
 						if ( handler )
 							delete events[type][handler.guid];
-			
+
 						// remove all handlers for the given type
 						else
 							for ( handler in events[type] )
@@ -179,14 +179,14 @@ jQuery.event = {
 			var val, ret, fn = jQuery.isFunction( elem[ type ] || null ),
 				// Check to see if we need to provide a fake event, or not
 				event = !data[0] || !data[0].preventDefault;
-			
+
 			// Pass along a fake event
 			if ( event ) {
-				data.unshift({ 
-					type: type, 
-					target: elem, 
-					preventDefault: function(){}, 
-					stopPropagation: function(){}, 
+				data.unshift({
+					type: type,
+					target: elem,
+					preventDefault: function(){},
+					stopPropagation: function(){},
 					timeStamp: now()
 				});
 				data[0][expando] = true; // no need to fix fake event
@@ -198,8 +198,8 @@ jQuery.event = {
 				data[0].exclusive = true;
 
 			// Trigger the event, it is assumed that "handle" is a function
-			var handle = jQuery.data(elem, "handle"); 
-			if ( handle ) 
+			var handle = jQuery.data(elem, "handle");
+			if ( handle )
 				val = handle.apply( elem, data );
 
 			// Handle triggering native .onfoo handlers (and on links since we don't call .click() for links)
@@ -258,7 +258,7 @@ jQuery.event = {
 				// So that we can later remove it
 				event.handler = handler;
 				event.data = handler.data;
-				
+
 				ret = handler.apply( this, arguments );
 
 				if ( val !== false )
@@ -275,21 +275,21 @@ jQuery.event = {
 	},
 
 	fix: function(event) {
-		if ( event[expando] == true ) 
+		if ( event[expando] == true )
 			return event;
-		
-		// store a copy of the original event object 
+
+		// store a copy of the original event object
 		// and "clone" to set read-only properties
 		var originalEvent = event;
 		event = { originalEvent: originalEvent };
 		var 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 timeStamp toElement type view wheelDelta which".split(" ");
 		for ( var i=props.length; i; i-- )
 			event[ props[i] ] = originalEvent[ props[i] ];
-		
+
 		// Mark it as fixed
 		event[expando] = true;
-		
-		// add preventDefault and stopPropagation since 
+
+		// add preventDefault and stopPropagation since
 		// they will not work on the clone
 		event.preventDefault = function() {
 			// if preventDefault exists run it on the original event
@@ -305,14 +305,14 @@ jQuery.event = {
 			// otherwise set the cancelBubble property of the original event to true (IE)
 			originalEvent.cancelBubble = true;
 		};
-		
+
 		// Fix timeStamp
 		event.timeStamp = event.timeStamp || now();
-		
+
 		// Fix target property, if necessary
 		if ( !event.target )
 			event.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either
-				
+
 		// check if target is a textnode (safari)
 		if ( event.target.nodeType == 3 )
 			event.target = event.target.parentNode;
@@ -327,11 +327,11 @@ jQuery.event = {
 			event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc.clientLeft || 0);
 			event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc.clientTop || 0);
 		}
-			
+
 		// Add which for key events
 		if ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) )
 			event.which = event.charCode || event.keyCode;
-		
+
 		// Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)
 		if ( !event.metaKey && event.ctrlKey )
 			event.metaKey = event.ctrlKey;
@@ -340,17 +340,17 @@ jQuery.event = {
 		// Note: button is not normalized, so don't use it
 		if ( !event.which && event.button )
 			event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));
-			
+
 		return event;
 	},
-	
+
 	proxy: function( fn, proxy ){
-		// Set the guid of unique handler to the same of original handler, so it can be removed 
+		// Set the guid of unique handler to the same of original handler, so it can be removed
 		proxy.guid = fn.guid = fn.guid || proxy.guid || this.guid++;
 		// So proxy can be declared as an argument
 		return proxy;
 	},
-	
+
 	special: {
 		ready: {
 			setup: function() {
@@ -358,23 +358,23 @@ jQuery.event = {
 				bindReady();
 				return;
 			},
-			
+
 			teardown: function() { return; }
 		},
-		
+
 		mouseenter: {
 			setup: function() {
 				if ( jQuery.browser.msie ) return false;
 				jQuery(this).bind("mouseover", jQuery.event.special.mouseenter.handler);
 				return true;
 			},
-		
+
 			teardown: function() {
 				if ( jQuery.browser.msie ) return false;
 				jQuery(this).unbind("mouseover", jQuery.event.special.mouseenter.handler);
 				return true;
 			},
-			
+
 			handler: function(event) {
 				// If we actually just moused on to a sub-element, ignore it
 				if ( withinElement(event, this) ) return true;
@@ -383,20 +383,20 @@ jQuery.event = {
 				return jQuery.event.handle.apply(this, arguments);
 			}
 		},
-	
+
 		mouseleave: {
 			setup: function() {
 				if ( jQuery.browser.msie ) return false;
 				jQuery(this).bind("mouseout", jQuery.event.special.mouseleave.handler);
 				return true;
 			},
-		
+
 			teardown: function() {
 				if ( jQuery.browser.msie ) return false;
 				jQuery(this).unbind("mouseout", jQuery.event.special.mouseleave.handler);
 				return true;
 			},
-			
+
 			handler: function(event) {
 				// If we actually just moused on to a sub-element, ignore it
 				if ( withinElement(event, this) ) return true;
@@ -414,7 +414,7 @@ jQuery.fn.extend({
 			jQuery.event.add( this, type, fn || data, fn && data );
 		});
 	},
-	
+
 	one: function( type, data, fn ) {
 		var one = jQuery.event.proxy( fn || data, function(event) {
 			jQuery(this).unbind(event, one);
@@ -452,10 +452,10 @@ jQuery.fn.extend({
 		return this.click( jQuery.event.proxy( fn, function(event) {
 			// Figure out which function to execute
 			this.lastToggle = ( this.lastToggle || 0 ) % i;
-			
+
 			// Make sure that clicks stop
 			event.preventDefault();
-			
+
 			// and execute the function
 			return args[ this.lastToggle++ ].apply( this, arguments ) || false;
 		}));
@@ -464,7 +464,7 @@ jQuery.fn.extend({
 	hover: function(fnOver, fnOut) {
 		return this.bind('mouseenter', fnOver).bind('mouseleave', fnOut);
 	},
-	
+
 	ready: function(fn) {
 		// Attach the listeners
 		bindReady();
@@ -473,12 +473,12 @@ jQuery.fn.extend({
 		if ( jQuery.isReady )
 			// Execute the function immediately
 			fn.call( document, jQuery );
-			
+
 		// Otherwise, remember the function for later
 		else
 			// Add the function to the wait list
 			jQuery.readyList.push( function() { return fn.call(this, jQuery); } );
-	
+
 		return this;
 	}
 });
@@ -492,18 +492,18 @@ jQuery.extend({
 		if ( !jQuery.isReady ) {
 			// Remember that the DOM is ready
 			jQuery.isReady = true;
-			
+
 			// If there are functions bound, to execute
 			if ( jQuery.readyList ) {
 				// Execute all of them
 				jQuery.each( jQuery.readyList, function(){
 					this.call( document );
 				});
-				
+
 				// Reset the list of functions
 				jQuery.readyList = null;
 			}
-		
+
 			// Trigger any bound ready events
 			jQuery(document).triggerHandler("ready");
 		}
@@ -520,7 +520,7 @@ function bindReady(){
 	if ( document.addEventListener && !jQuery.browser.opera)
 		// Use the handy event callback
 		document.addEventListener( "DOMContentLoaded", jQuery.ready, false );
-	
+
 	// If IE is used and is not in a frame
 	// Continually check to see if the document is ready
 	if ( jQuery.browser.msie && window == top ) (function(){
@@ -573,9 +573,9 @@ function bindReady(){
 }
 
 jQuery.each( ("blur,focus,load,resize,scroll,unload,click,dblclick," +
-	"mousedown,mouseup,mousemove,mouseover,mouseout,change,select," + 
+	"mousedown,mouseup,mousemove,mouseover,mouseout,change,select," +
 	"submit,keydown,keypress,keyup,error").split(","), function(i, name){
-	
+
 	// Handle event binding
 	jQuery.fn[name] = function(fn){
 		return fn ? this.bind(name, fn) : this.trigger(name);
diff --git a/src/fx.js b/src/fx.js
index 3404ddb..37c4680 100644
--- a/src/fx.js
+++ b/src/fx.js
@@ -4,7 +4,7 @@ jQuery.fn.extend({
 			this.animate({
 				height: "show", width: "show", opacity: "show"
 			}, speed, callback) :
-			
+
 			this.filter(":hidden").each(function(){
 				this.style.display = this.oldblock || "";
 				if ( jQuery.css(this,"display") == "none" ) {
@@ -17,13 +17,13 @@ jQuery.fn.extend({
 				}
 			}).end();
 	},
-	
+
 	hide: function(speed,callback){
 		return speed ?
 			this.animate({
 				height: "hide", width: "hide", opacity: "hide"
 			}, speed, callback) :
-			
+
 			this.filter(":visible").each(function(){
 				this.oldblock = this.oldblock || jQuery.css(this,"display");
 				this.style.display = "none";
@@ -32,7 +32,7 @@ jQuery.fn.extend({
 
 	// Save the old toggle function
 	_toggle: jQuery.fn.toggle,
-	
+
 	toggle: function( fn, fn2 ){
 		return jQuery.isFunction(fn) && jQuery.isFunction(fn2) ?
 			this._toggle.apply( this, arguments ) :
@@ -44,11 +44,11 @@ jQuery.fn.extend({
 					jQuery(this)[ jQuery(this).is(":hidden") ? "show" : "hide" ]();
 				});
 	},
-	
+
 	slideDown: function(speed,callback){
 		return this.animate({height: "show"}, speed, callback);
 	},
-	
+
 	slideUp: function(speed,callback){
 		return this.animate({height: "hide"}, speed, callback);
 	},
@@ -56,19 +56,19 @@ jQuery.fn.extend({
 	slideToggle: function(speed, callback){
 		return this.animate({height: "toggle"}, speed, callback);
 	},
-	
+
 	fadeIn: function(speed, callback){
 		return this.animate({opacity: "show"}, speed, callback);
 	},
-	
+
 	fadeOut: function(speed, callback){
 		return this.animate({opacity: "hide"}, speed, callback);
 	},
-	
+
 	fadeTo: function(speed,to,callback){
 		return this.animate({opacity: to}, speed, callback);
 	},
-	
+
 	animate: function( prop, speed, easing, callback ) {
 		var optall = jQuery.speed(speed, easing, callback);
 
@@ -78,7 +78,7 @@ jQuery.fn.extend({
 
 			var opt = jQuery.extend({}, optall), p,
 				hidden = jQuery(this).is(":hidden"), self = this;
-			
+
 			for ( p in prop ) {
 				if ( prop[p] == "hide" && hidden || prop[p] == "show" && !hidden )
 					return jQuery.isFunction(opt.complete) && opt.complete.call(this);
@@ -96,7 +96,7 @@ jQuery.fn.extend({
 				this.style.overflow = "hidden";
 
 			opt.curAnim = jQuery.extend({}, prop);
-			
+
 			jQuery.each( prop, function(name, val){
 				var e = new jQuery.fx( self, opt, name );
 
@@ -131,7 +131,7 @@ jQuery.fn.extend({
 			return true;
 		});
 	},
-	
+
 	queue: function(type, fn){
 		if ( jQuery.isFunction(type) || ( type && type.constructor == Array )) {
 			fn = type;
@@ -146,7 +146,7 @@ jQuery.fn.extend({
 				queue(this, type, fn);
 			else {
 				queue(this, type).push( fn );
-			
+
 				if ( queue(this, type).length == 1 )
 					fn.call(this);
 			}
@@ -181,11 +181,11 @@ jQuery.fn.extend({
 
 var queue = function( elem, type, array ) {
 	if ( elem ){
-	
+
 		type = type || "fx";
-	
+
 		var q = jQuery.data( elem, type + "queue" );
-	
+
 		if ( !q || array )
 			q = jQuery.data( elem, type + "queue", jQuery.makeArray(array) );
 
@@ -207,19 +207,19 @@ jQuery.fn.dequeue = function(type){
 };
 
 jQuery.extend({
-	
+
 	speed: function(speed, easing, fn) {
 		var opt = speed && speed.constructor == Object ? speed : {
-			complete: fn || !fn && easing || 
+			complete: fn || !fn && easing ||
 				jQuery.isFunction( speed ) && speed,
 			duration: speed,
 			easing: fn && easing || easing && easing.constructor != Function && easing
 		};
 
-		opt.duration = (opt.duration && opt.duration.constructor == Number ? 
-			opt.duration : 
+		opt.duration = (opt.duration && opt.duration.constructor == Number ?
+			opt.duration :
 			jQuery.fx.speeds[opt.duration]) || jQuery.fx.speeds.def;
-	
+
 		// Queueing
 		opt.old = opt.complete;
 		opt.complete = function(){
@@ -228,10 +228,10 @@ jQuery.extend({
 			if ( jQuery.isFunction( opt.old ) )
 				opt.old.call( this );
 		};
-	
+
 		return opt;
 	},
-	
+
 	easing: {
 		linear: function( p, n, firstNum, diff ) {
 			return firstNum + diff * p;
@@ -240,7 +240,7 @@ jQuery.extend({
 			return ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;
 		}
 	},
-	
+
 	timers: [],
 	timerId: null,
 
@@ -300,7 +300,7 @@ jQuery.fx.prototype = {
 		if ( jQuery.timerId == null ) {
 			jQuery.timerId = setInterval(function(){
 				var timers = jQuery.timers;
-				
+
 				for ( var i = 0; i < timers.length; i++ )
 					if ( !timers[i]() )
 						timers.splice(i--, 1);
@@ -326,7 +326,7 @@ jQuery.fx.prototype = {
 		// flash of content
 		if ( this.prop == "width" || this.prop == "height" )
 			this.elem.style[this.prop] = "1px";
-		
+
 		// Start by showing the element
 		jQuery(this.elem).show();
 	},
@@ -361,7 +361,7 @@ jQuery.fx.prototype = {
 				if ( this.options.display != null ) {
 					// Reset the overflow
 					this.elem.style.overflow = this.options.overflow;
-				
+
 					// Reset the display
 					this.elem.style.display = this.options.display;
 					if ( jQuery.css(this.elem, "display") == "none" )
@@ -403,7 +403,7 @@ jQuery.fx.prototype = {
 
 jQuery.extend( jQuery.fx, {
 	speeds:{
-		slow: 600,  
+		slow: 600,
  		fast: 200,
  		// Default speed
  		def: 400
@@ -412,15 +412,15 @@ jQuery.extend( jQuery.fx, {
 		scrollLeft: function(fx){
 			fx.elem.scrollLeft = fx.now;
 		},
-	
+
 		scrollTop: function(fx){
 			fx.elem.scrollTop = fx.now;
 		},
-	
+
 		opacity: function(fx){
 			jQuery.attr(fx.elem.style, "opacity", fx.now);
 		},
-	
+
 		_default: function(fx){
 			fx.elem.style[ fx.prop ] = fx.now + fx.unit;
 		}
diff --git a/src/offset.js b/src/offset.js
index 07a55cd..4de37a0 100644
--- a/src/offset.js
+++ b/src/offset.js
@@ -3,24 +3,24 @@
 // http://jquery.com/plugins/project/dimensions
 jQuery.fn.offset = function() {
 	var left = 0, top = 0, elem = this[0], results;
-	
+
 	if ( elem ) with ( jQuery.browser ) {
-		var parent       = elem.parentNode, 
+		var parent       = elem.parentNode,
 		    offsetChild  = elem,
-		    offsetParent = elem.offsetParent, 
+		    offsetParent = elem.offsetParent,
 		    doc          = elem.ownerDocument,
 		    safari2      = safari && parseInt(version) < 522 && !/adobeair/i.test(userAgent),
 		    css          = jQuery.curCSS,
 		    fixed        = css(elem, "position") == "fixed";
-	
+
 		// Use getBoundingClientRect if available
 		if ( elem.getBoundingClientRect ) {
 			var box = elem.getBoundingClientRect();
-		
+
 			// Add the document scroll offsets
 			add(box.left + Math.max(doc.documentElement.scrollLeft, doc.body.scrollLeft),
 				box.top  + Math.max(doc.documentElement.scrollTop,  doc.body.scrollTop));
-		
+
 			// IE adds the HTML element's border, by default it is medium which is 2px
 			// IE 6 and 7 quirks mode the border width is overwritable by the following css html { border: 0; }
 			// IE 7 standards mode, the border is always 2px
@@ -28,54 +28,54 @@ jQuery.fn.offset = function() {
 			// However, in IE6 and 7 quirks mode the clientLeft and clientTop properties are not updated when overwriting it via CSS
 			// Therefore this method will be off by 2px in IE while in quirksmode
 			add( -doc.documentElement.clientLeft, -doc.documentElement.clientTop );
-	
+
 		// Otherwise loop through the offsetParents and parentNodes
 		} else {
-		
+
 			// Initial element offsets
 			add( elem.offsetLeft, elem.offsetTop );
-			
+
 			// Get parent offsets
 			while ( offsetParent ) {
 				// Add offsetParent offsets
 				add( offsetParent.offsetLeft, offsetParent.offsetTop );
-			
+
 				// Mozilla and Safari > 2 does not include the border on offset parents
 				// However Mozilla adds the border for table or table cells
 				if ( mozilla && !/^t(able|d|h)$/i.test(offsetParent.tagName) || safari && !safari2 )
 					border( offsetParent );
-					
+
 				// Add the document scroll offsets if position is fixed on any offsetParent
 				if ( !fixed && css(offsetParent, "position") == "fixed" )
 					fixed = true;
-			
+
 				// Set offsetChild to previous offsetParent unless it is the body element
 				offsetChild  = /^body$/i.test(offsetParent.tagName) ? offsetChild : offsetParent;
 				// Get next offsetParent
 				offsetParent = offsetParent.offsetParent;
 			}
-		
+
 			// Get parent scroll offsets
 			while ( parent && parent.tagName && !/^body|html$/i.test(parent.tagName) ) {
 				// Remove parent scroll UNLESS that parent is inline or a table to work around Opera inline/table scrollLeft/Top bug
 				if ( !/^inline|table.*$/i.test(css(parent, "display")) )
 					// Subtract parent scroll offsets
 					add( -parent.scrollLeft, -parent.scrollTop );
-			
+
 				// Mozilla does not add the border for a parent that has overflow != visible
 				if ( mozilla && css(parent, "overflow") != "visible" )
 					border( parent );
-			
+
 				// Get next parent
 				parent = parent.parentNode;
 			}
-		
+
 			// Safari <= 2 doubles body offsets with a fixed position element/offsetParent or absolutely positioned offsetChild
 			// Mozilla doubles body offsets with a non-absolutely positioned offsetChild
-			if ( (safari2 && (fixed || css(offsetChild, "position") == "absolute")) || 
+			if ( (safari2 && (fixed || css(offsetChild, "position") == "absolute")) ||
 				(mozilla && css(offsetChild, "position") != "absolute") )
 					add( -doc.body.offsetLeft, -doc.body.offsetTop );
-			
+
 			// Add the document scroll offsets if position is fixed
 			if ( fixed )
 				add(Math.max(doc.documentElement.scrollLeft, doc.body.scrollLeft),
@@ -102,33 +102,33 @@ jQuery.fn.offset = function() {
 jQuery.fn.extend({
 	position: function() {
 		var left = 0, top = 0, elem = this[0], offset, parentOffset, offsetParent, results;
-		
+
 		if (elem) {
 			// Get *real* offsetParent
 			offsetParent = this.offsetParent();
-			
+
 			// Get correct offsets
 			offset       = this.offset();
 			parentOffset = offsetParent.offset();
-			
+
 			// Subtract element margins
 			offset.top  -= parseInt( jQuery.curCSS(elem, 'marginTop', true) ) || 0;
 			offset.left -= parseInt( jQuery.curCSS(elem, 'marginLeft', true) ) || 0;
-			
+
 			// Add offsetParent borders
 			parentOffset.top  += parseInt( jQuery.curCSS(offsetParent[0], 'borderTopWidth', true) ) || 0;
 			parentOffset.left += parseInt( jQuery.curCSS(offsetParent[0], 'borderLeftWidth', true) ) || 0;
-			
+
 			// Subtract the two offsets
 			results = {
 				top:  offset.top  - parentOffset.top,
 				left: offset.left - parentOffset.left
 			};
 		}
-		
+
 		return results;
 	},
-	
+
 	offsetParent: function() {
 		var offsetParent = this[0].offsetParent;
 		while ( offsetParent && (!/^body|html$/i.test(offsetParent.tagName) && jQuery.css(offsetParent, 'position') == 'static') )
@@ -142,19 +142,19 @@ jQuery.fn.extend({
 jQuery.each( ['Left', 'Top'], function(i, name) {
 	jQuery.fn[ 'scroll' + name ] = function(val) {
 		if (!this[0]) return;
-		
+
 		return val != undefined ?
-		
+
 			// Set the scroll offset
 			this.each(function() {
 				this == window || this == document ?
-					window.scrollTo( 
+					window.scrollTo(
 						name == 'Left' ? val : jQuery(window)[ 'scrollLeft' ](),
 						name == 'Top'  ? val : jQuery(window)[ 'scrollTop'  ]()
 					) :
 					this[ 'scroll' + name ] = val;
 			}) :
-			
+
 			// Return the scroll offset
 			this[0] == window || this[0] == document ?
 				self[ (name == 'Left' ? 'pageXOffset' : 'pageYOffset') ] ||
diff --git a/src/selector.js b/src/selector.js
index 446cbbc..7840442 100644
--- a/src/selector.js
+++ b/src/selector.js
@@ -64,7 +64,7 @@ jQuery.extend({
 			animated: function(a){return jQuery.grep(jQuery.timers,function(fn){return a==fn.elem;}).length;}
 		}
 	},
-	
+
 	// The regular expressions that power the parsing engine
 	parse: [
 		// Match: [@value='test'], [@foo]
@@ -118,7 +118,7 @@ jQuery.extend({
 			// An attempt at speeding up child selectors that
 			// point to a specific element tag
 				re = quickChild,
-				
+
 				m = re.exec(t);
 
 			if ( m ) {
@@ -151,12 +151,12 @@ jQuery.extend({
 								var id = jQuery.data(n);
 
 								if ( m == "~" && merge[id] ) break;
-								
+
 								if (!nodeName || n.nodeName.toUpperCase() == nodeName ) {
 									if ( m == "~" ) merge[id] = true;
 									r.push( n );
 								}
-								
+
 								if ( m == "+" ) break;
 							}
 					}
@@ -190,7 +190,7 @@ jQuery.extend({
 					// Optimize for the case nodeName#idName
 					var re2 = quickID;
 					var m = re2.exec(t);
-					
+
 					// Re-organize the results, so that they're consistent
 					if ( m ) {
 						m = [ 0, m[2], m[3], m[1] ];
@@ -210,7 +210,7 @@ jQuery.extend({
 					if ( m[1] == "#" && elem && elem.getElementById && !jQuery.isXMLDoc(elem) ) {
 						// Optimization for HTML document case
 						var oid = elem.getElementById(m[2]);
-						
+
 						// Do a quick check for the existence of the actual ID attribute
 						// to avoid selecting by the name attribute in IE
 						// also check to insure id is a string to avoid selecting an element with the name of 'id' inside a form
@@ -332,10 +332,10 @@ jQuery.extend({
 
 			else if ( m[1] == "[" ) {
 				var tmp = [], type = m[3];
-				
+
 				for ( var i = 0, rl = r.length; i < rl; i++ ) {
 					var a = r[i], z = a[ jQuery.props[m[2]] || m[2] ];
-					
+
 					if ( z == null || /href|src|selected/.test(m[2]) )
 						z = jQuery.attr(a,m[2]) || '';
 
@@ -347,7 +347,7 @@ jQuery.extend({
 						 (type == "*=" || type == "~=") && z.indexOf(m[5]) >= 0) ^ not )
 							tmp.push( a );
 				}
-				
+
 				r = tmp;
 
 			// We can get a speed boost by handling nth-child here
@@ -359,7 +359,7 @@ jQuery.extend({
 						!/\D/.test(m[3]) && "0n+" + m[3] || m[3]),
 					// calculate the numbers (first)n+(last) including if they are negative
 					first = (test[1] + (test[2] || 1)) - 0, last = test[3] - 0;
- 
+
 				// loop through all the elements left in the jQuery object
 				for ( var i = 0, rl = r.length; i < rl; i++ ) {
 					var node = r[i], parentNode = node.parentNode, id = jQuery.data(parentNode);
@@ -419,7 +419,7 @@ jQuery.extend({
 		}
 		return matched;
 	},
-	
+
 	nth: function(cur,result,dir,elem){
 		result = result || 1;
 		var num = 0;
@@ -430,7 +430,7 @@ jQuery.extend({
 
 		return cur;
 	},
-	
+
 	sibling: function( n, elem ) {
 		var r = [];