web/wp-content/themes/selecta/ocmx/scripts/jquery.js
author ymh
Fri, 12 Mar 2010 13:29:04 +0000
changeset 1 0d28b7c10758
permissions -rw-r--r--
First commit
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
0d28b7c10758 First commit
ymh
parents:
diff changeset
     1
/*!
0d28b7c10758 First commit
ymh
parents:
diff changeset
     2
 * jQuery JavaScript Library v1.3.1
0d28b7c10758 First commit
ymh
parents:
diff changeset
     3
 * http://jquery.com/
0d28b7c10758 First commit
ymh
parents:
diff changeset
     4
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
     5
 * Copyright (c) 2009 John Resig
0d28b7c10758 First commit
ymh
parents:
diff changeset
     6
 * Dual licensed under the MIT and GPL licenses.
0d28b7c10758 First commit
ymh
parents:
diff changeset
     7
 * http://docs.jquery.com/License
0d28b7c10758 First commit
ymh
parents:
diff changeset
     8
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
     9
 * Date: 2009-01-21 20:42:16 -0500 (Wed, 21 Jan 2009)
0d28b7c10758 First commit
ymh
parents:
diff changeset
    10
 * Revision: 6158
0d28b7c10758 First commit
ymh
parents:
diff changeset
    11
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
    12
(function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
    13
0d28b7c10758 First commit
ymh
parents:
diff changeset
    14
var 
0d28b7c10758 First commit
ymh
parents:
diff changeset
    15
	// Will speed up references to window, and allows munging its name.
0d28b7c10758 First commit
ymh
parents:
diff changeset
    16
	window = this,
0d28b7c10758 First commit
ymh
parents:
diff changeset
    17
	// Will speed up references to undefined, and allows munging its name.
0d28b7c10758 First commit
ymh
parents:
diff changeset
    18
	undefined,
0d28b7c10758 First commit
ymh
parents:
diff changeset
    19
	// Map over jQuery in case of overwrite
0d28b7c10758 First commit
ymh
parents:
diff changeset
    20
	_jQuery = window.jQuery,
0d28b7c10758 First commit
ymh
parents:
diff changeset
    21
	// Map over the $ in case of overwrite
0d28b7c10758 First commit
ymh
parents:
diff changeset
    22
	_$ = window.$,
0d28b7c10758 First commit
ymh
parents:
diff changeset
    23
0d28b7c10758 First commit
ymh
parents:
diff changeset
    24
	jQuery = window.jQuery = window.$ = function( selector, context ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    25
		// The jQuery object is actually just the init constructor 'enhanced'
0d28b7c10758 First commit
ymh
parents:
diff changeset
    26
		return new jQuery.fn.init( selector, context );
0d28b7c10758 First commit
ymh
parents:
diff changeset
    27
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
    28
0d28b7c10758 First commit
ymh
parents:
diff changeset
    29
	// A simple way to check for HTML strings or ID strings
0d28b7c10758 First commit
ymh
parents:
diff changeset
    30
	// (both of which we optimize for)
0d28b7c10758 First commit
ymh
parents:
diff changeset
    31
	quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,
0d28b7c10758 First commit
ymh
parents:
diff changeset
    32
	// Is it a simple selector
0d28b7c10758 First commit
ymh
parents:
diff changeset
    33
	isSimple = /^.[^:#\[\.,]*$/;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    34
0d28b7c10758 First commit
ymh
parents:
diff changeset
    35
jQuery.fn = jQuery.prototype = {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    36
	init: function( selector, context ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    37
		// Make sure that a selection was provided
0d28b7c10758 First commit
ymh
parents:
diff changeset
    38
		selector = selector || document;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    39
0d28b7c10758 First commit
ymh
parents:
diff changeset
    40
		// Handle $(DOMElement)
0d28b7c10758 First commit
ymh
parents:
diff changeset
    41
		if ( selector.nodeType ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    42
			this[0] = selector;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    43
			this.length = 1;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    44
			this.context = selector;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    45
			return this;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    46
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    47
		// Handle HTML strings
0d28b7c10758 First commit
ymh
parents:
diff changeset
    48
		if ( typeof selector === "string" ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    49
			// Are we dealing with HTML string or an ID?
0d28b7c10758 First commit
ymh
parents:
diff changeset
    50
			var match = quickExpr.exec( selector );
0d28b7c10758 First commit
ymh
parents:
diff changeset
    51
0d28b7c10758 First commit
ymh
parents:
diff changeset
    52
			// Verify a match, and that no context was specified for #id
0d28b7c10758 First commit
ymh
parents:
diff changeset
    53
			if ( match && (match[1] || !context) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    54
0d28b7c10758 First commit
ymh
parents:
diff changeset
    55
				// HANDLE: $(html) -> $(array)
0d28b7c10758 First commit
ymh
parents:
diff changeset
    56
				if ( match[1] )
0d28b7c10758 First commit
ymh
parents:
diff changeset
    57
					selector = jQuery.clean( [ match[1] ], context );
0d28b7c10758 First commit
ymh
parents:
diff changeset
    58
0d28b7c10758 First commit
ymh
parents:
diff changeset
    59
				// HANDLE: $("#id")
0d28b7c10758 First commit
ymh
parents:
diff changeset
    60
				else {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    61
					var elem = document.getElementById( match[3] );
0d28b7c10758 First commit
ymh
parents:
diff changeset
    62
0d28b7c10758 First commit
ymh
parents:
diff changeset
    63
					// Handle the case where IE and Opera return items
0d28b7c10758 First commit
ymh
parents:
diff changeset
    64
					// by name instead of ID
0d28b7c10758 First commit
ymh
parents:
diff changeset
    65
					if ( elem && elem.id != match[3] )
0d28b7c10758 First commit
ymh
parents:
diff changeset
    66
						return jQuery().find( selector );
0d28b7c10758 First commit
ymh
parents:
diff changeset
    67
0d28b7c10758 First commit
ymh
parents:
diff changeset
    68
					// Otherwise, we inject the element directly into the jQuery object
0d28b7c10758 First commit
ymh
parents:
diff changeset
    69
					var ret = jQuery( elem || [] );
0d28b7c10758 First commit
ymh
parents:
diff changeset
    70
					ret.context = document;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    71
					ret.selector = selector;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    72
					return ret;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    73
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    74
0d28b7c10758 First commit
ymh
parents:
diff changeset
    75
			// HANDLE: $(expr, [context])
0d28b7c10758 First commit
ymh
parents:
diff changeset
    76
			// (which is just equivalent to: $(content).find(expr)
0d28b7c10758 First commit
ymh
parents:
diff changeset
    77
			} else
0d28b7c10758 First commit
ymh
parents:
diff changeset
    78
				return jQuery( context ).find( selector );
0d28b7c10758 First commit
ymh
parents:
diff changeset
    79
0d28b7c10758 First commit
ymh
parents:
diff changeset
    80
		// HANDLE: $(function)
0d28b7c10758 First commit
ymh
parents:
diff changeset
    81
		// Shortcut for document ready
0d28b7c10758 First commit
ymh
parents:
diff changeset
    82
		} else if ( jQuery.isFunction( selector ) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
    83
			return jQuery( document ).ready( selector );
0d28b7c10758 First commit
ymh
parents:
diff changeset
    84
0d28b7c10758 First commit
ymh
parents:
diff changeset
    85
		// Make sure that old selector state is passed along
0d28b7c10758 First commit
ymh
parents:
diff changeset
    86
		if ( selector.selector && selector.context ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    87
			this.selector = selector.selector;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    88
			this.context = selector.context;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    89
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    90
0d28b7c10758 First commit
ymh
parents:
diff changeset
    91
		return this.setArray(jQuery.makeArray(selector));
0d28b7c10758 First commit
ymh
parents:
diff changeset
    92
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
    93
0d28b7c10758 First commit
ymh
parents:
diff changeset
    94
	// Start with an empty selector
0d28b7c10758 First commit
ymh
parents:
diff changeset
    95
	selector: "",
0d28b7c10758 First commit
ymh
parents:
diff changeset
    96
0d28b7c10758 First commit
ymh
parents:
diff changeset
    97
	// The current version of jQuery being used
0d28b7c10758 First commit
ymh
parents:
diff changeset
    98
	jquery: "1.3.1",
0d28b7c10758 First commit
ymh
parents:
diff changeset
    99
0d28b7c10758 First commit
ymh
parents:
diff changeset
   100
	// The number of elements contained in the matched element set
0d28b7c10758 First commit
ymh
parents:
diff changeset
   101
	size: function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   102
		return this.length;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   103
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   104
0d28b7c10758 First commit
ymh
parents:
diff changeset
   105
	// Get the Nth element in the matched element set OR
0d28b7c10758 First commit
ymh
parents:
diff changeset
   106
	// Get the whole matched element set as a clean array
0d28b7c10758 First commit
ymh
parents:
diff changeset
   107
	get: function( num ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   108
		return num === undefined ?
0d28b7c10758 First commit
ymh
parents:
diff changeset
   109
0d28b7c10758 First commit
ymh
parents:
diff changeset
   110
			// Return a 'clean' array
0d28b7c10758 First commit
ymh
parents:
diff changeset
   111
			jQuery.makeArray( this ) :
0d28b7c10758 First commit
ymh
parents:
diff changeset
   112
0d28b7c10758 First commit
ymh
parents:
diff changeset
   113
			// Return just the object
0d28b7c10758 First commit
ymh
parents:
diff changeset
   114
			this[ num ];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   115
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   116
0d28b7c10758 First commit
ymh
parents:
diff changeset
   117
	// Take an array of elements and push it onto the stack
0d28b7c10758 First commit
ymh
parents:
diff changeset
   118
	// (returning the new matched element set)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   119
	pushStack: function( elems, name, selector ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   120
		// Build a new jQuery matched element set
0d28b7c10758 First commit
ymh
parents:
diff changeset
   121
		var ret = jQuery( elems );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   122
0d28b7c10758 First commit
ymh
parents:
diff changeset
   123
		// Add the old object onto the stack (as a reference)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   124
		ret.prevObject = this;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   125
0d28b7c10758 First commit
ymh
parents:
diff changeset
   126
		ret.context = this.context;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   127
0d28b7c10758 First commit
ymh
parents:
diff changeset
   128
		if ( name === "find" )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   129
			ret.selector = this.selector + (this.selector ? " " : "") + selector;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   130
		else if ( name )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   131
			ret.selector = this.selector + "." + name + "(" + selector + ")";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   132
0d28b7c10758 First commit
ymh
parents:
diff changeset
   133
		// Return the newly-formed element set
0d28b7c10758 First commit
ymh
parents:
diff changeset
   134
		return ret;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   135
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   136
0d28b7c10758 First commit
ymh
parents:
diff changeset
   137
	// Force the current matched set of elements to become
0d28b7c10758 First commit
ymh
parents:
diff changeset
   138
	// the specified array of elements (destroying the stack in the process)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   139
	// You should use pushStack() in order to do this, but maintain the stack
0d28b7c10758 First commit
ymh
parents:
diff changeset
   140
	setArray: function( elems ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   141
		// Resetting the length to 0, then using the native Array push
0d28b7c10758 First commit
ymh
parents:
diff changeset
   142
		// is a super-fast way to populate an object with array-like properties
0d28b7c10758 First commit
ymh
parents:
diff changeset
   143
		this.length = 0;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   144
		Array.prototype.push.apply( this, elems );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   145
0d28b7c10758 First commit
ymh
parents:
diff changeset
   146
		return this;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   147
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   148
0d28b7c10758 First commit
ymh
parents:
diff changeset
   149
	// Execute a callback for every element in the matched set.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   150
	// (You can seed the arguments with an array of args, but this is
0d28b7c10758 First commit
ymh
parents:
diff changeset
   151
	// only used internally.)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   152
	each: function( callback, args ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   153
		return jQuery.each( this, callback, args );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   154
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   155
0d28b7c10758 First commit
ymh
parents:
diff changeset
   156
	// Determine the position of an element within
0d28b7c10758 First commit
ymh
parents:
diff changeset
   157
	// the matched set of elements
0d28b7c10758 First commit
ymh
parents:
diff changeset
   158
	index: function( elem ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   159
		// Locate the position of the desired element
0d28b7c10758 First commit
ymh
parents:
diff changeset
   160
		return jQuery.inArray(
0d28b7c10758 First commit
ymh
parents:
diff changeset
   161
			// If it receives a jQuery object, the first element is used
0d28b7c10758 First commit
ymh
parents:
diff changeset
   162
			elem && elem.jquery ? elem[0] : elem
0d28b7c10758 First commit
ymh
parents:
diff changeset
   163
		, this );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   164
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   165
0d28b7c10758 First commit
ymh
parents:
diff changeset
   166
	attr: function( name, value, type ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   167
		var options = name;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   168
0d28b7c10758 First commit
ymh
parents:
diff changeset
   169
		// Look for the case where we're accessing a style value
0d28b7c10758 First commit
ymh
parents:
diff changeset
   170
		if ( typeof name === "string" )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   171
			if ( value === undefined )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   172
				return this[0] && jQuery[ type || "attr" ]( this[0], name );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   173
0d28b7c10758 First commit
ymh
parents:
diff changeset
   174
			else {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   175
				options = {};
0d28b7c10758 First commit
ymh
parents:
diff changeset
   176
				options[ name ] = value;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   177
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   178
0d28b7c10758 First commit
ymh
parents:
diff changeset
   179
		// Check to see if we're setting style values
0d28b7c10758 First commit
ymh
parents:
diff changeset
   180
		return this.each(function(i){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   181
			// Set all the styles
0d28b7c10758 First commit
ymh
parents:
diff changeset
   182
			for ( name in options )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   183
				jQuery.attr(
0d28b7c10758 First commit
ymh
parents:
diff changeset
   184
					type ?
0d28b7c10758 First commit
ymh
parents:
diff changeset
   185
						this.style :
0d28b7c10758 First commit
ymh
parents:
diff changeset
   186
						this,
0d28b7c10758 First commit
ymh
parents:
diff changeset
   187
					name, jQuery.prop( this, options[ name ], type, i, name )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   188
				);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   189
		});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   190
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   191
0d28b7c10758 First commit
ymh
parents:
diff changeset
   192
	css: function( key, value ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   193
		// ignore negative width and height values
0d28b7c10758 First commit
ymh
parents:
diff changeset
   194
		if ( (key == 'width' || key == 'height') && parseFloat(value) < 0 )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   195
			value = undefined;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   196
		return this.attr( key, value, "curCSS" );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   197
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   198
0d28b7c10758 First commit
ymh
parents:
diff changeset
   199
	text: function( text ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   200
		if ( typeof text !== "object" && text != null )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   201
			return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   202
0d28b7c10758 First commit
ymh
parents:
diff changeset
   203
		var ret = "";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   204
0d28b7c10758 First commit
ymh
parents:
diff changeset
   205
		jQuery.each( text || this, function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   206
			jQuery.each( this.childNodes, function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   207
				if ( this.nodeType != 8 )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   208
					ret += this.nodeType != 1 ?
0d28b7c10758 First commit
ymh
parents:
diff changeset
   209
						this.nodeValue :
0d28b7c10758 First commit
ymh
parents:
diff changeset
   210
						jQuery.fn.text( [ this ] );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   211
			});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   212
		});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   213
0d28b7c10758 First commit
ymh
parents:
diff changeset
   214
		return ret;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   215
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   216
0d28b7c10758 First commit
ymh
parents:
diff changeset
   217
	wrapAll: function( html ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   218
		if ( this[0] ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   219
			// The elements to wrap the target around
0d28b7c10758 First commit
ymh
parents:
diff changeset
   220
			var wrap = jQuery( html, this[0].ownerDocument ).clone();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   221
0d28b7c10758 First commit
ymh
parents:
diff changeset
   222
			if ( this[0].parentNode )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   223
				wrap.insertBefore( this[0] );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   224
0d28b7c10758 First commit
ymh
parents:
diff changeset
   225
			wrap.map(function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   226
				var elem = this;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   227
0d28b7c10758 First commit
ymh
parents:
diff changeset
   228
				while ( elem.firstChild )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   229
					elem = elem.firstChild;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   230
0d28b7c10758 First commit
ymh
parents:
diff changeset
   231
				return elem;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   232
			}).append(this);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   233
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   234
0d28b7c10758 First commit
ymh
parents:
diff changeset
   235
		return this;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   236
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   237
0d28b7c10758 First commit
ymh
parents:
diff changeset
   238
	wrapInner: function( html ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   239
		return this.each(function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   240
			jQuery( this ).contents().wrapAll( html );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   241
		});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   242
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   243
0d28b7c10758 First commit
ymh
parents:
diff changeset
   244
	wrap: function( html ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   245
		return this.each(function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   246
			jQuery( this ).wrapAll( html );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   247
		});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   248
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   249
0d28b7c10758 First commit
ymh
parents:
diff changeset
   250
	append: function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   251
		return this.domManip(arguments, true, function(elem){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   252
			if (this.nodeType == 1)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   253
				this.appendChild( elem );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   254
		});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   255
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   256
0d28b7c10758 First commit
ymh
parents:
diff changeset
   257
	prepend: function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   258
		return this.domManip(arguments, true, function(elem){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   259
			if (this.nodeType == 1)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   260
				this.insertBefore( elem, this.firstChild );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   261
		});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   262
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   263
0d28b7c10758 First commit
ymh
parents:
diff changeset
   264
	before: function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   265
		return this.domManip(arguments, false, function(elem){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   266
			this.parentNode.insertBefore( elem, this );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   267
		});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   268
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   269
0d28b7c10758 First commit
ymh
parents:
diff changeset
   270
	after: function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   271
		return this.domManip(arguments, false, function(elem){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   272
			this.parentNode.insertBefore( elem, this.nextSibling );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   273
		});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   274
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   275
0d28b7c10758 First commit
ymh
parents:
diff changeset
   276
	end: function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   277
		return this.prevObject || jQuery( [] );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   278
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   279
0d28b7c10758 First commit
ymh
parents:
diff changeset
   280
	// For internal use only.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   281
	// Behaves like an Array's .push method, not like a jQuery method.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   282
	push: [].push,
0d28b7c10758 First commit
ymh
parents:
diff changeset
   283
0d28b7c10758 First commit
ymh
parents:
diff changeset
   284
	find: function( selector ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   285
		if ( this.length === 1 && !/,/.test(selector) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   286
			var ret = this.pushStack( [], "find", selector );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   287
			ret.length = 0;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   288
			jQuery.find( selector, this[0], ret );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   289
			return ret;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   290
		} else {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   291
			var elems = jQuery.map(this, function(elem){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   292
				return jQuery.find( selector, elem );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   293
			});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   294
0d28b7c10758 First commit
ymh
parents:
diff changeset
   295
			return this.pushStack( /[^+>] [^+>]/.test( selector ) ?
0d28b7c10758 First commit
ymh
parents:
diff changeset
   296
				jQuery.unique( elems ) :
0d28b7c10758 First commit
ymh
parents:
diff changeset
   297
				elems, "find", selector );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   298
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   299
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   300
0d28b7c10758 First commit
ymh
parents:
diff changeset
   301
	clone: function( events ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   302
		// Do the clone
0d28b7c10758 First commit
ymh
parents:
diff changeset
   303
		var ret = this.map(function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   304
			if ( !jQuery.support.noCloneEvent && !jQuery.isXMLDoc(this) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   305
				// IE copies events bound via attachEvent when
0d28b7c10758 First commit
ymh
parents:
diff changeset
   306
				// using cloneNode. Calling detachEvent on the
0d28b7c10758 First commit
ymh
parents:
diff changeset
   307
				// clone will also remove the events from the orignal
0d28b7c10758 First commit
ymh
parents:
diff changeset
   308
				// In order to get around this, we use innerHTML.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   309
				// Unfortunately, this means some modifications to
0d28b7c10758 First commit
ymh
parents:
diff changeset
   310
				// attributes in IE that are actually only stored
0d28b7c10758 First commit
ymh
parents:
diff changeset
   311
				// as properties will not be copied (such as the
0d28b7c10758 First commit
ymh
parents:
diff changeset
   312
				// the name attribute on an input).
0d28b7c10758 First commit
ymh
parents:
diff changeset
   313
				var clone = this.cloneNode(true),
0d28b7c10758 First commit
ymh
parents:
diff changeset
   314
					container = document.createElement("div");
0d28b7c10758 First commit
ymh
parents:
diff changeset
   315
				container.appendChild(clone);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   316
				return jQuery.clean([container.innerHTML])[0];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   317
			} else
0d28b7c10758 First commit
ymh
parents:
diff changeset
   318
				return this.cloneNode(true);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   319
		});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   320
0d28b7c10758 First commit
ymh
parents:
diff changeset
   321
		// Need to set the expando to null on the cloned set if it exists
0d28b7c10758 First commit
ymh
parents:
diff changeset
   322
		// removeData doesn't work here, IE removes it from the original as well
0d28b7c10758 First commit
ymh
parents:
diff changeset
   323
		// this is primarily for IE but the data expando shouldn't be copied over in any browser
0d28b7c10758 First commit
ymh
parents:
diff changeset
   324
		var clone = ret.find("*").andSelf().each(function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   325
			if ( this[ expando ] !== undefined )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   326
				this[ expando ] = null;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   327
		});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   328
0d28b7c10758 First commit
ymh
parents:
diff changeset
   329
		// Copy the events from the original to the clone
0d28b7c10758 First commit
ymh
parents:
diff changeset
   330
		if ( events === true )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   331
			this.find("*").andSelf().each(function(i){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   332
				if (this.nodeType == 3)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   333
					return;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   334
				var events = jQuery.data( this, "events" );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   335
0d28b7c10758 First commit
ymh
parents:
diff changeset
   336
				for ( var type in events )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   337
					for ( var handler in events[ type ] )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   338
						jQuery.event.add( clone[ i ], type, events[ type ][ handler ], events[ type ][ handler ].data );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   339
			});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   340
0d28b7c10758 First commit
ymh
parents:
diff changeset
   341
		// Return the cloned set
0d28b7c10758 First commit
ymh
parents:
diff changeset
   342
		return ret;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   343
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   344
0d28b7c10758 First commit
ymh
parents:
diff changeset
   345
	filter: function( selector ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   346
		return this.pushStack(
0d28b7c10758 First commit
ymh
parents:
diff changeset
   347
			jQuery.isFunction( selector ) &&
0d28b7c10758 First commit
ymh
parents:
diff changeset
   348
			jQuery.grep(this, function(elem, i){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   349
				return selector.call( elem, i );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   350
			}) ||
0d28b7c10758 First commit
ymh
parents:
diff changeset
   351
0d28b7c10758 First commit
ymh
parents:
diff changeset
   352
			jQuery.multiFilter( selector, jQuery.grep(this, function(elem){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   353
				return elem.nodeType === 1;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   354
			}) ), "filter", selector );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   355
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   356
0d28b7c10758 First commit
ymh
parents:
diff changeset
   357
	closest: function( selector ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   358
		var pos = jQuery.expr.match.POS.test( selector ) ? jQuery(selector) : null;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   359
0d28b7c10758 First commit
ymh
parents:
diff changeset
   360
		return this.map(function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   361
			var cur = this;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   362
			while ( cur && cur.ownerDocument ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   363
				if ( pos ? pos.index(cur) > -1 : jQuery(cur).is(selector) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   364
					return cur;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   365
				cur = cur.parentNode;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   366
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   367
		});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   368
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   369
0d28b7c10758 First commit
ymh
parents:
diff changeset
   370
	not: function( selector ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   371
		if ( typeof selector === "string" )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   372
			// test special case where just one selector is passed in
0d28b7c10758 First commit
ymh
parents:
diff changeset
   373
			if ( isSimple.test( selector ) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   374
				return this.pushStack( jQuery.multiFilter( selector, this, true ), "not", selector );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   375
			else
0d28b7c10758 First commit
ymh
parents:
diff changeset
   376
				selector = jQuery.multiFilter( selector, this );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   377
0d28b7c10758 First commit
ymh
parents:
diff changeset
   378
		var isArrayLike = selector.length && selector[selector.length - 1] !== undefined && !selector.nodeType;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   379
		return this.filter(function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   380
			return isArrayLike ? jQuery.inArray( this, selector ) < 0 : this != selector;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   381
		});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   382
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   383
0d28b7c10758 First commit
ymh
parents:
diff changeset
   384
	add: function( selector ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   385
		return this.pushStack( jQuery.unique( jQuery.merge(
0d28b7c10758 First commit
ymh
parents:
diff changeset
   386
			this.get(),
0d28b7c10758 First commit
ymh
parents:
diff changeset
   387
			typeof selector === "string" ?
0d28b7c10758 First commit
ymh
parents:
diff changeset
   388
				jQuery( selector ) :
0d28b7c10758 First commit
ymh
parents:
diff changeset
   389
				jQuery.makeArray( selector )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   390
		)));
0d28b7c10758 First commit
ymh
parents:
diff changeset
   391
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   392
0d28b7c10758 First commit
ymh
parents:
diff changeset
   393
	is: function( selector ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   394
		return !!selector && jQuery.multiFilter( selector, this ).length > 0;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   395
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   396
0d28b7c10758 First commit
ymh
parents:
diff changeset
   397
	hasClass: function( selector ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   398
		return !!selector && this.is( "." + selector );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   399
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   400
0d28b7c10758 First commit
ymh
parents:
diff changeset
   401
	val: function( value ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   402
		if ( value === undefined ) {			
0d28b7c10758 First commit
ymh
parents:
diff changeset
   403
			var elem = this[0];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   404
0d28b7c10758 First commit
ymh
parents:
diff changeset
   405
			if ( elem ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   406
				if( jQuery.nodeName( elem, 'option' ) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   407
					return (elem.attributes.value || {}).specified ? elem.value : elem.text;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   408
				
0d28b7c10758 First commit
ymh
parents:
diff changeset
   409
				// We need to handle select boxes special
0d28b7c10758 First commit
ymh
parents:
diff changeset
   410
				if ( jQuery.nodeName( elem, "select" ) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   411
					var index = elem.selectedIndex,
0d28b7c10758 First commit
ymh
parents:
diff changeset
   412
						values = [],
0d28b7c10758 First commit
ymh
parents:
diff changeset
   413
						options = elem.options,
0d28b7c10758 First commit
ymh
parents:
diff changeset
   414
						one = elem.type == "select-one";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   415
0d28b7c10758 First commit
ymh
parents:
diff changeset
   416
					// Nothing was selected
0d28b7c10758 First commit
ymh
parents:
diff changeset
   417
					if ( index < 0 )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   418
						return null;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   419
0d28b7c10758 First commit
ymh
parents:
diff changeset
   420
					// Loop through all the selected options
0d28b7c10758 First commit
ymh
parents:
diff changeset
   421
					for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   422
						var option = options[ i ];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   423
0d28b7c10758 First commit
ymh
parents:
diff changeset
   424
						if ( option.selected ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   425
							// Get the specifc value for the option
0d28b7c10758 First commit
ymh
parents:
diff changeset
   426
							value = jQuery(option).val();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   427
0d28b7c10758 First commit
ymh
parents:
diff changeset
   428
							// We don't need an array for one selects
0d28b7c10758 First commit
ymh
parents:
diff changeset
   429
							if ( one )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   430
								return value;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   431
0d28b7c10758 First commit
ymh
parents:
diff changeset
   432
							// Multi-Selects return an array
0d28b7c10758 First commit
ymh
parents:
diff changeset
   433
							values.push( value );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   434
						}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   435
					}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   436
0d28b7c10758 First commit
ymh
parents:
diff changeset
   437
					return values;				
0d28b7c10758 First commit
ymh
parents:
diff changeset
   438
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   439
0d28b7c10758 First commit
ymh
parents:
diff changeset
   440
				// Everything else, we just grab the value
0d28b7c10758 First commit
ymh
parents:
diff changeset
   441
				return (elem.value || "").replace(/\r/g, "");
0d28b7c10758 First commit
ymh
parents:
diff changeset
   442
0d28b7c10758 First commit
ymh
parents:
diff changeset
   443
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   444
0d28b7c10758 First commit
ymh
parents:
diff changeset
   445
			return undefined;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   446
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   447
0d28b7c10758 First commit
ymh
parents:
diff changeset
   448
		if ( typeof value === "number" )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   449
			value += '';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   450
0d28b7c10758 First commit
ymh
parents:
diff changeset
   451
		return this.each(function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   452
			if ( this.nodeType != 1 )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   453
				return;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   454
0d28b7c10758 First commit
ymh
parents:
diff changeset
   455
			if ( jQuery.isArray(value) && /radio|checkbox/.test( this.type ) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   456
				this.checked = (jQuery.inArray(this.value, value) >= 0 ||
0d28b7c10758 First commit
ymh
parents:
diff changeset
   457
					jQuery.inArray(this.name, value) >= 0);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   458
0d28b7c10758 First commit
ymh
parents:
diff changeset
   459
			else if ( jQuery.nodeName( this, "select" ) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   460
				var values = jQuery.makeArray(value);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   461
0d28b7c10758 First commit
ymh
parents:
diff changeset
   462
				jQuery( "option", this ).each(function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   463
					this.selected = (jQuery.inArray( this.value, values ) >= 0 ||
0d28b7c10758 First commit
ymh
parents:
diff changeset
   464
						jQuery.inArray( this.text, values ) >= 0);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   465
				});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   466
0d28b7c10758 First commit
ymh
parents:
diff changeset
   467
				if ( !values.length )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   468
					this.selectedIndex = -1;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   469
0d28b7c10758 First commit
ymh
parents:
diff changeset
   470
			} else
0d28b7c10758 First commit
ymh
parents:
diff changeset
   471
				this.value = value;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   472
		});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   473
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   474
0d28b7c10758 First commit
ymh
parents:
diff changeset
   475
	html: function( value ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   476
		return value === undefined ?
0d28b7c10758 First commit
ymh
parents:
diff changeset
   477
			(this[0] ?
0d28b7c10758 First commit
ymh
parents:
diff changeset
   478
				this[0].innerHTML :
0d28b7c10758 First commit
ymh
parents:
diff changeset
   479
				null) :
0d28b7c10758 First commit
ymh
parents:
diff changeset
   480
			this.empty().append( value );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   481
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   482
0d28b7c10758 First commit
ymh
parents:
diff changeset
   483
	replaceWith: function( value ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   484
		return this.after( value ).remove();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   485
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   486
0d28b7c10758 First commit
ymh
parents:
diff changeset
   487
	eq: function( i ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   488
		return this.slice( i, +i + 1 );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   489
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   490
0d28b7c10758 First commit
ymh
parents:
diff changeset
   491
	slice: function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   492
		return this.pushStack( Array.prototype.slice.apply( this, arguments ),
0d28b7c10758 First commit
ymh
parents:
diff changeset
   493
			"slice", Array.prototype.slice.call(arguments).join(",") );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   494
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   495
0d28b7c10758 First commit
ymh
parents:
diff changeset
   496
	map: function( callback ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   497
		return this.pushStack( jQuery.map(this, function(elem, i){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   498
			return callback.call( elem, i, elem );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   499
		}));
0d28b7c10758 First commit
ymh
parents:
diff changeset
   500
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   501
0d28b7c10758 First commit
ymh
parents:
diff changeset
   502
	andSelf: function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   503
		return this.add( this.prevObject );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   504
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   505
0d28b7c10758 First commit
ymh
parents:
diff changeset
   506
	domManip: function( args, table, callback ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   507
		if ( this[0] ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   508
			var fragment = (this[0].ownerDocument || this[0]).createDocumentFragment(),
0d28b7c10758 First commit
ymh
parents:
diff changeset
   509
				scripts = jQuery.clean( args, (this[0].ownerDocument || this[0]), fragment ),
0d28b7c10758 First commit
ymh
parents:
diff changeset
   510
				first = fragment.firstChild,
0d28b7c10758 First commit
ymh
parents:
diff changeset
   511
				extra = this.length > 1 ? fragment.cloneNode(true) : fragment;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   512
0d28b7c10758 First commit
ymh
parents:
diff changeset
   513
			if ( first )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   514
				for ( var i = 0, l = this.length; i < l; i++ )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   515
					callback.call( root(this[i], first), i > 0 ? extra.cloneNode(true) : fragment );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   516
			
0d28b7c10758 First commit
ymh
parents:
diff changeset
   517
			if ( scripts )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   518
				jQuery.each( scripts, evalScript );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   519
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   520
0d28b7c10758 First commit
ymh
parents:
diff changeset
   521
		return this;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   522
		
0d28b7c10758 First commit
ymh
parents:
diff changeset
   523
		function root( elem, cur ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   524
			return table && jQuery.nodeName(elem, "table") && jQuery.nodeName(cur, "tr") ?
0d28b7c10758 First commit
ymh
parents:
diff changeset
   525
				(elem.getElementsByTagName("tbody")[0] ||
0d28b7c10758 First commit
ymh
parents:
diff changeset
   526
				elem.appendChild(elem.ownerDocument.createElement("tbody"))) :
0d28b7c10758 First commit
ymh
parents:
diff changeset
   527
				elem;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   528
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   529
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   530
};
0d28b7c10758 First commit
ymh
parents:
diff changeset
   531
0d28b7c10758 First commit
ymh
parents:
diff changeset
   532
// Give the init function the jQuery prototype for later instantiation
0d28b7c10758 First commit
ymh
parents:
diff changeset
   533
jQuery.fn.init.prototype = jQuery.fn;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   534
0d28b7c10758 First commit
ymh
parents:
diff changeset
   535
function evalScript( i, elem ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   536
	if ( elem.src )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   537
		jQuery.ajax({
0d28b7c10758 First commit
ymh
parents:
diff changeset
   538
			url: elem.src,
0d28b7c10758 First commit
ymh
parents:
diff changeset
   539
			async: false,
0d28b7c10758 First commit
ymh
parents:
diff changeset
   540
			dataType: "script"
0d28b7c10758 First commit
ymh
parents:
diff changeset
   541
		});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   542
0d28b7c10758 First commit
ymh
parents:
diff changeset
   543
	else
0d28b7c10758 First commit
ymh
parents:
diff changeset
   544
		jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   545
0d28b7c10758 First commit
ymh
parents:
diff changeset
   546
	if ( elem.parentNode )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   547
		elem.parentNode.removeChild( elem );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   548
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   549
0d28b7c10758 First commit
ymh
parents:
diff changeset
   550
function now(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   551
	return +new Date;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   552
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   553
0d28b7c10758 First commit
ymh
parents:
diff changeset
   554
jQuery.extend = jQuery.fn.extend = function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   555
	// copy reference to target object
0d28b7c10758 First commit
ymh
parents:
diff changeset
   556
	var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   557
0d28b7c10758 First commit
ymh
parents:
diff changeset
   558
	// Handle a deep copy situation
0d28b7c10758 First commit
ymh
parents:
diff changeset
   559
	if ( typeof target === "boolean" ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   560
		deep = target;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   561
		target = arguments[1] || {};
0d28b7c10758 First commit
ymh
parents:
diff changeset
   562
		// skip the boolean and the target
0d28b7c10758 First commit
ymh
parents:
diff changeset
   563
		i = 2;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   564
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   565
0d28b7c10758 First commit
ymh
parents:
diff changeset
   566
	// Handle case when target is a string or something (possible in deep copy)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   567
	if ( typeof target !== "object" && !jQuery.isFunction(target) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   568
		target = {};
0d28b7c10758 First commit
ymh
parents:
diff changeset
   569
0d28b7c10758 First commit
ymh
parents:
diff changeset
   570
	// extend jQuery itself if only one argument is passed
0d28b7c10758 First commit
ymh
parents:
diff changeset
   571
	if ( length == i ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   572
		target = this;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   573
		--i;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   574
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   575
0d28b7c10758 First commit
ymh
parents:
diff changeset
   576
	for ( ; i < length; i++ )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   577
		// Only deal with non-null/undefined values
0d28b7c10758 First commit
ymh
parents:
diff changeset
   578
		if ( (options = arguments[ i ]) != null )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   579
			// Extend the base object
0d28b7c10758 First commit
ymh
parents:
diff changeset
   580
			for ( var name in options ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   581
				var src = target[ name ], copy = options[ name ];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   582
0d28b7c10758 First commit
ymh
parents:
diff changeset
   583
				// Prevent never-ending loop
0d28b7c10758 First commit
ymh
parents:
diff changeset
   584
				if ( target === copy )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   585
					continue;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   586
0d28b7c10758 First commit
ymh
parents:
diff changeset
   587
				// Recurse if we're merging object values
0d28b7c10758 First commit
ymh
parents:
diff changeset
   588
				if ( deep && copy && typeof copy === "object" && !copy.nodeType )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   589
					target[ name ] = jQuery.extend( deep, 
0d28b7c10758 First commit
ymh
parents:
diff changeset
   590
						// Never move original objects, clone them
0d28b7c10758 First commit
ymh
parents:
diff changeset
   591
						src || ( copy.length != null ? [ ] : { } )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   592
					, copy );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   593
0d28b7c10758 First commit
ymh
parents:
diff changeset
   594
				// Don't bring in undefined values
0d28b7c10758 First commit
ymh
parents:
diff changeset
   595
				else if ( copy !== undefined )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   596
					target[ name ] = copy;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   597
0d28b7c10758 First commit
ymh
parents:
diff changeset
   598
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   599
0d28b7c10758 First commit
ymh
parents:
diff changeset
   600
	// Return the modified object
0d28b7c10758 First commit
ymh
parents:
diff changeset
   601
	return target;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   602
};
0d28b7c10758 First commit
ymh
parents:
diff changeset
   603
0d28b7c10758 First commit
ymh
parents:
diff changeset
   604
// exclude the following css properties to add px
0d28b7c10758 First commit
ymh
parents:
diff changeset
   605
var	exclude = /z-?index|font-?weight|opacity|zoom|line-?height/i,
0d28b7c10758 First commit
ymh
parents:
diff changeset
   606
	// cache defaultView
0d28b7c10758 First commit
ymh
parents:
diff changeset
   607
	defaultView = document.defaultView || {},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   608
	toString = Object.prototype.toString;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   609
0d28b7c10758 First commit
ymh
parents:
diff changeset
   610
jQuery.extend({
0d28b7c10758 First commit
ymh
parents:
diff changeset
   611
	noConflict: function( deep ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   612
		window.$ = _$;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   613
0d28b7c10758 First commit
ymh
parents:
diff changeset
   614
		if ( deep )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   615
			window.jQuery = _jQuery;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   616
0d28b7c10758 First commit
ymh
parents:
diff changeset
   617
		return jQuery;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   618
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   619
0d28b7c10758 First commit
ymh
parents:
diff changeset
   620
	// See test/unit/core.js for details concerning isFunction.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   621
	// Since version 1.3, DOM methods and functions like alert
0d28b7c10758 First commit
ymh
parents:
diff changeset
   622
	// aren't supported. They return false on IE (#2968).
0d28b7c10758 First commit
ymh
parents:
diff changeset
   623
	isFunction: function( obj ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   624
		return toString.call(obj) === "[object Function]";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   625
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   626
0d28b7c10758 First commit
ymh
parents:
diff changeset
   627
	isArray: function( obj ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   628
		return toString.call(obj) === "[object Array]";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   629
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   630
0d28b7c10758 First commit
ymh
parents:
diff changeset
   631
	// check if an element is in a (or is an) XML document
0d28b7c10758 First commit
ymh
parents:
diff changeset
   632
	isXMLDoc: function( elem ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   633
		return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" ||
0d28b7c10758 First commit
ymh
parents:
diff changeset
   634
			!!elem.ownerDocument && jQuery.isXMLDoc( elem.ownerDocument );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   635
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   636
0d28b7c10758 First commit
ymh
parents:
diff changeset
   637
	// Evalulates a script in a global context
0d28b7c10758 First commit
ymh
parents:
diff changeset
   638
	globalEval: function( data ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   639
		data = jQuery.trim( data );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   640
0d28b7c10758 First commit
ymh
parents:
diff changeset
   641
		if ( data ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   642
			// Inspired by code by Andrea Giammarchi
0d28b7c10758 First commit
ymh
parents:
diff changeset
   643
			// http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html
0d28b7c10758 First commit
ymh
parents:
diff changeset
   644
			var head = document.getElementsByTagName("head")[0] || document.documentElement,
0d28b7c10758 First commit
ymh
parents:
diff changeset
   645
				script = document.createElement("script");
0d28b7c10758 First commit
ymh
parents:
diff changeset
   646
0d28b7c10758 First commit
ymh
parents:
diff changeset
   647
			script.type = "text/javascript";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   648
			if ( jQuery.support.scriptEval )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   649
				script.appendChild( document.createTextNode( data ) );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   650
			else
0d28b7c10758 First commit
ymh
parents:
diff changeset
   651
				script.text = data;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   652
0d28b7c10758 First commit
ymh
parents:
diff changeset
   653
			// Use insertBefore instead of appendChild  to circumvent an IE6 bug.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   654
			// This arises when a base node is used (#2709).
0d28b7c10758 First commit
ymh
parents:
diff changeset
   655
			head.insertBefore( script, head.firstChild );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   656
			head.removeChild( script );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   657
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   658
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   659
0d28b7c10758 First commit
ymh
parents:
diff changeset
   660
	nodeName: function( elem, name ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   661
		return elem.nodeName && elem.nodeName.toUpperCase() == name.toUpperCase();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   662
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   663
0d28b7c10758 First commit
ymh
parents:
diff changeset
   664
	// args is for internal usage only
0d28b7c10758 First commit
ymh
parents:
diff changeset
   665
	each: function( object, callback, args ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   666
		var name, i = 0, length = object.length;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   667
0d28b7c10758 First commit
ymh
parents:
diff changeset
   668
		if ( args ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   669
			if ( length === undefined ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   670
				for ( name in object )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   671
					if ( callback.apply( object[ name ], args ) === false )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   672
						break;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   673
			} else
0d28b7c10758 First commit
ymh
parents:
diff changeset
   674
				for ( ; i < length; )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   675
					if ( callback.apply( object[ i++ ], args ) === false )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   676
						break;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   677
0d28b7c10758 First commit
ymh
parents:
diff changeset
   678
		// A special, fast, case for the most common use of each
0d28b7c10758 First commit
ymh
parents:
diff changeset
   679
		} else {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   680
			if ( length === undefined ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   681
				for ( name in object )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   682
					if ( callback.call( object[ name ], name, object[ name ] ) === false )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   683
						break;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   684
			} else
0d28b7c10758 First commit
ymh
parents:
diff changeset
   685
				for ( var value = object[0];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   686
					i < length && callback.call( value, i, value ) !== false; value = object[++i] ){}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   687
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   688
0d28b7c10758 First commit
ymh
parents:
diff changeset
   689
		return object;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   690
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   691
0d28b7c10758 First commit
ymh
parents:
diff changeset
   692
	prop: function( elem, value, type, i, name ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   693
		// Handle executable functions
0d28b7c10758 First commit
ymh
parents:
diff changeset
   694
		if ( jQuery.isFunction( value ) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   695
			value = value.call( elem, i );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   696
0d28b7c10758 First commit
ymh
parents:
diff changeset
   697
		// Handle passing in a number to a CSS property
0d28b7c10758 First commit
ymh
parents:
diff changeset
   698
		return typeof value === "number" && type == "curCSS" && !exclude.test( name ) ?
0d28b7c10758 First commit
ymh
parents:
diff changeset
   699
			value + "px" :
0d28b7c10758 First commit
ymh
parents:
diff changeset
   700
			value;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   701
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   702
0d28b7c10758 First commit
ymh
parents:
diff changeset
   703
	className: {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   704
		// internal only, use addClass("class")
0d28b7c10758 First commit
ymh
parents:
diff changeset
   705
		add: function( elem, classNames ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   706
			jQuery.each((classNames || "").split(/\s+/), function(i, className){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   707
				if ( elem.nodeType == 1 && !jQuery.className.has( elem.className, className ) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   708
					elem.className += (elem.className ? " " : "") + className;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   709
			});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   710
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   711
0d28b7c10758 First commit
ymh
parents:
diff changeset
   712
		// internal only, use removeClass("class")
0d28b7c10758 First commit
ymh
parents:
diff changeset
   713
		remove: function( elem, classNames ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   714
			if (elem.nodeType == 1)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   715
				elem.className = classNames !== undefined ?
0d28b7c10758 First commit
ymh
parents:
diff changeset
   716
					jQuery.grep(elem.className.split(/\s+/), function(className){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   717
						return !jQuery.className.has( classNames, className );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   718
					}).join(" ") :
0d28b7c10758 First commit
ymh
parents:
diff changeset
   719
					"";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   720
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   721
0d28b7c10758 First commit
ymh
parents:
diff changeset
   722
		// internal only, use hasClass("class")
0d28b7c10758 First commit
ymh
parents:
diff changeset
   723
		has: function( elem, className ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   724
			return elem && jQuery.inArray( className, (elem.className || elem).toString().split(/\s+/) ) > -1;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   725
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   726
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   727
0d28b7c10758 First commit
ymh
parents:
diff changeset
   728
	// A method for quickly swapping in/out CSS properties to get correct calculations
0d28b7c10758 First commit
ymh
parents:
diff changeset
   729
	swap: function( elem, options, callback ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   730
		var old = {};
0d28b7c10758 First commit
ymh
parents:
diff changeset
   731
		// Remember the old values, and insert the new ones
0d28b7c10758 First commit
ymh
parents:
diff changeset
   732
		for ( var name in options ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   733
			old[ name ] = elem.style[ name ];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   734
			elem.style[ name ] = options[ name ];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   735
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   736
0d28b7c10758 First commit
ymh
parents:
diff changeset
   737
		callback.call( elem );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   738
0d28b7c10758 First commit
ymh
parents:
diff changeset
   739
		// Revert the old values
0d28b7c10758 First commit
ymh
parents:
diff changeset
   740
		for ( var name in options )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   741
			elem.style[ name ] = old[ name ];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   742
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   743
0d28b7c10758 First commit
ymh
parents:
diff changeset
   744
	css: function( elem, name, force ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   745
		if ( name == "width" || name == "height" ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   746
			var val, props = { position: "absolute", visibility: "hidden", display:"block" }, which = name == "width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   747
0d28b7c10758 First commit
ymh
parents:
diff changeset
   748
			function getWH() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   749
				val = name == "width" ? elem.offsetWidth : elem.offsetHeight;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   750
				var padding = 0, border = 0;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   751
				jQuery.each( which, function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   752
					padding += parseFloat(jQuery.curCSS( elem, "padding" + this, true)) || 0;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   753
					border += parseFloat(jQuery.curCSS( elem, "border" + this + "Width", true)) || 0;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   754
				});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   755
				val -= Math.round(padding + border);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   756
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   757
0d28b7c10758 First commit
ymh
parents:
diff changeset
   758
			if ( jQuery(elem).is(":visible") )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   759
				getWH();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   760
			else
0d28b7c10758 First commit
ymh
parents:
diff changeset
   761
				jQuery.swap( elem, props, getWH );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   762
0d28b7c10758 First commit
ymh
parents:
diff changeset
   763
			return Math.max(0, val);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   764
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   765
0d28b7c10758 First commit
ymh
parents:
diff changeset
   766
		return jQuery.curCSS( elem, name, force );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   767
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   768
0d28b7c10758 First commit
ymh
parents:
diff changeset
   769
	curCSS: function( elem, name, force ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   770
		var ret, style = elem.style;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   771
0d28b7c10758 First commit
ymh
parents:
diff changeset
   772
		// We need to handle opacity special in IE
0d28b7c10758 First commit
ymh
parents:
diff changeset
   773
		if ( name == "opacity" && !jQuery.support.opacity ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   774
			ret = jQuery.attr( style, "opacity" );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   775
0d28b7c10758 First commit
ymh
parents:
diff changeset
   776
			return ret == "" ?
0d28b7c10758 First commit
ymh
parents:
diff changeset
   777
				"1" :
0d28b7c10758 First commit
ymh
parents:
diff changeset
   778
				ret;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   779
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   780
0d28b7c10758 First commit
ymh
parents:
diff changeset
   781
		// Make sure we're using the right name for getting the float value
0d28b7c10758 First commit
ymh
parents:
diff changeset
   782
		if ( name.match( /float/i ) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   783
			name = styleFloat;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   784
0d28b7c10758 First commit
ymh
parents:
diff changeset
   785
		if ( !force && style && style[ name ] )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   786
			ret = style[ name ];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   787
0d28b7c10758 First commit
ymh
parents:
diff changeset
   788
		else if ( defaultView.getComputedStyle ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   789
0d28b7c10758 First commit
ymh
parents:
diff changeset
   790
			// Only "float" is needed here
0d28b7c10758 First commit
ymh
parents:
diff changeset
   791
			if ( name.match( /float/i ) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   792
				name = "float";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   793
0d28b7c10758 First commit
ymh
parents:
diff changeset
   794
			name = name.replace( /([A-Z])/g, "-$1" ).toLowerCase();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   795
0d28b7c10758 First commit
ymh
parents:
diff changeset
   796
			var computedStyle = defaultView.getComputedStyle( elem, null );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   797
0d28b7c10758 First commit
ymh
parents:
diff changeset
   798
			if ( computedStyle )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   799
				ret = computedStyle.getPropertyValue( name );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   800
0d28b7c10758 First commit
ymh
parents:
diff changeset
   801
			// We should always get a number back from opacity
0d28b7c10758 First commit
ymh
parents:
diff changeset
   802
			if ( name == "opacity" && ret == "" )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   803
				ret = "1";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   804
0d28b7c10758 First commit
ymh
parents:
diff changeset
   805
		} else if ( elem.currentStyle ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   806
			var camelCase = name.replace(/\-(\w)/g, function(all, letter){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   807
				return letter.toUpperCase();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   808
			});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   809
0d28b7c10758 First commit
ymh
parents:
diff changeset
   810
			ret = elem.currentStyle[ name ] || elem.currentStyle[ camelCase ];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   811
0d28b7c10758 First commit
ymh
parents:
diff changeset
   812
			// From the awesome hack by Dean Edwards
0d28b7c10758 First commit
ymh
parents:
diff changeset
   813
			// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
0d28b7c10758 First commit
ymh
parents:
diff changeset
   814
0d28b7c10758 First commit
ymh
parents:
diff changeset
   815
			// If we're not dealing with a regular pixel number
0d28b7c10758 First commit
ymh
parents:
diff changeset
   816
			// but a number that has a weird ending, we need to convert it to pixels
0d28b7c10758 First commit
ymh
parents:
diff changeset
   817
			if ( !/^\d+(px)?$/i.test( ret ) && /^\d/.test( ret ) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   818
				// Remember the original values
0d28b7c10758 First commit
ymh
parents:
diff changeset
   819
				var left = style.left, rsLeft = elem.runtimeStyle.left;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   820
0d28b7c10758 First commit
ymh
parents:
diff changeset
   821
				// Put in the new values to get a computed value out
0d28b7c10758 First commit
ymh
parents:
diff changeset
   822
				elem.runtimeStyle.left = elem.currentStyle.left;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   823
				style.left = ret || 0;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   824
				ret = style.pixelLeft + "px";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   825
0d28b7c10758 First commit
ymh
parents:
diff changeset
   826
				// Revert the changed values
0d28b7c10758 First commit
ymh
parents:
diff changeset
   827
				style.left = left;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   828
				elem.runtimeStyle.left = rsLeft;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   829
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   830
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   831
0d28b7c10758 First commit
ymh
parents:
diff changeset
   832
		return ret;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   833
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   834
0d28b7c10758 First commit
ymh
parents:
diff changeset
   835
	clean: function( elems, context, fragment ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   836
		context = context || document;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   837
0d28b7c10758 First commit
ymh
parents:
diff changeset
   838
		// !context.createElement fails in IE with an error but returns typeof 'object'
0d28b7c10758 First commit
ymh
parents:
diff changeset
   839
		if ( typeof context.createElement === "undefined" )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   840
			context = context.ownerDocument || context[0] && context[0].ownerDocument || document;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   841
0d28b7c10758 First commit
ymh
parents:
diff changeset
   842
		// If a single string is passed in and it's a single tag
0d28b7c10758 First commit
ymh
parents:
diff changeset
   843
		// just do a createElement and skip the rest
0d28b7c10758 First commit
ymh
parents:
diff changeset
   844
		if ( !fragment && elems.length === 1 && typeof elems[0] === "string" ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   845
			var match = /^<(\w+)\s*\/?>$/.exec(elems[0]);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   846
			if ( match )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   847
				return [ context.createElement( match[1] ) ];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   848
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   849
0d28b7c10758 First commit
ymh
parents:
diff changeset
   850
		var ret = [], scripts = [], div = context.createElement("div");
0d28b7c10758 First commit
ymh
parents:
diff changeset
   851
0d28b7c10758 First commit
ymh
parents:
diff changeset
   852
		jQuery.each(elems, function(i, elem){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   853
			if ( typeof elem === "number" )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   854
				elem += '';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   855
0d28b7c10758 First commit
ymh
parents:
diff changeset
   856
			if ( !elem )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   857
				return;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   858
0d28b7c10758 First commit
ymh
parents:
diff changeset
   859
			// Convert html string into DOM nodes
0d28b7c10758 First commit
ymh
parents:
diff changeset
   860
			if ( typeof elem === "string" ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   861
				// Fix "XHTML"-style tags in all browsers
0d28b7c10758 First commit
ymh
parents:
diff changeset
   862
				elem = elem.replace(/(<(\w+)[^>]*?)\/>/g, function(all, front, tag){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   863
					return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i) ?
0d28b7c10758 First commit
ymh
parents:
diff changeset
   864
						all :
0d28b7c10758 First commit
ymh
parents:
diff changeset
   865
						front + "></" + tag + ">";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   866
				});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   867
0d28b7c10758 First commit
ymh
parents:
diff changeset
   868
				// Trim whitespace, otherwise indexOf won't work as expected
0d28b7c10758 First commit
ymh
parents:
diff changeset
   869
				var tags = jQuery.trim( elem ).toLowerCase();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   870
0d28b7c10758 First commit
ymh
parents:
diff changeset
   871
				var wrap =
0d28b7c10758 First commit
ymh
parents:
diff changeset
   872
					// option or optgroup
0d28b7c10758 First commit
ymh
parents:
diff changeset
   873
					!tags.indexOf("<opt") &&
0d28b7c10758 First commit
ymh
parents:
diff changeset
   874
					[ 1, "<select multiple='multiple'>", "</select>" ] ||
0d28b7c10758 First commit
ymh
parents:
diff changeset
   875
0d28b7c10758 First commit
ymh
parents:
diff changeset
   876
					!tags.indexOf("<leg") &&
0d28b7c10758 First commit
ymh
parents:
diff changeset
   877
					[ 1, "<fieldset>", "</fieldset>" ] ||
0d28b7c10758 First commit
ymh
parents:
diff changeset
   878
0d28b7c10758 First commit
ymh
parents:
diff changeset
   879
					tags.match(/^<(thead|tbody|tfoot|colg|cap)/) &&
0d28b7c10758 First commit
ymh
parents:
diff changeset
   880
					[ 1, "<table>", "</table>" ] ||
0d28b7c10758 First commit
ymh
parents:
diff changeset
   881
0d28b7c10758 First commit
ymh
parents:
diff changeset
   882
					!tags.indexOf("<tr") &&
0d28b7c10758 First commit
ymh
parents:
diff changeset
   883
					[ 2, "<table><tbody>", "</tbody></table>" ] ||
0d28b7c10758 First commit
ymh
parents:
diff changeset
   884
0d28b7c10758 First commit
ymh
parents:
diff changeset
   885
				 	// <thead> matched above
0d28b7c10758 First commit
ymh
parents:
diff changeset
   886
					(!tags.indexOf("<td") || !tags.indexOf("<th")) &&
0d28b7c10758 First commit
ymh
parents:
diff changeset
   887
					[ 3, "<table><tbody><tr>", "</tr></tbody></table>" ] ||
0d28b7c10758 First commit
ymh
parents:
diff changeset
   888
0d28b7c10758 First commit
ymh
parents:
diff changeset
   889
					!tags.indexOf("<col") &&
0d28b7c10758 First commit
ymh
parents:
diff changeset
   890
					[ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ] ||
0d28b7c10758 First commit
ymh
parents:
diff changeset
   891
0d28b7c10758 First commit
ymh
parents:
diff changeset
   892
					// IE can't serialize <link> and <script> tags normally
0d28b7c10758 First commit
ymh
parents:
diff changeset
   893
					!jQuery.support.htmlSerialize &&
0d28b7c10758 First commit
ymh
parents:
diff changeset
   894
					[ 1, "div<div>", "</div>" ] ||
0d28b7c10758 First commit
ymh
parents:
diff changeset
   895
0d28b7c10758 First commit
ymh
parents:
diff changeset
   896
					[ 0, "", "" ];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   897
0d28b7c10758 First commit
ymh
parents:
diff changeset
   898
				// Go to html and back, then peel off extra wrappers
0d28b7c10758 First commit
ymh
parents:
diff changeset
   899
				div.innerHTML = wrap[1] + elem + wrap[2];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   900
0d28b7c10758 First commit
ymh
parents:
diff changeset
   901
				// Move to the right depth
0d28b7c10758 First commit
ymh
parents:
diff changeset
   902
				while ( wrap[0]-- )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   903
					div = div.lastChild;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   904
0d28b7c10758 First commit
ymh
parents:
diff changeset
   905
				// Remove IE's autoinserted <tbody> from table fragments
0d28b7c10758 First commit
ymh
parents:
diff changeset
   906
				if ( !jQuery.support.tbody ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   907
0d28b7c10758 First commit
ymh
parents:
diff changeset
   908
					// String was a <table>, *may* have spurious <tbody>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   909
					var tbody = !tags.indexOf("<table") && tags.indexOf("<tbody") < 0 ?
0d28b7c10758 First commit
ymh
parents:
diff changeset
   910
						div.firstChild && div.firstChild.childNodes :
0d28b7c10758 First commit
ymh
parents:
diff changeset
   911
0d28b7c10758 First commit
ymh
parents:
diff changeset
   912
						// String was a bare <thead> or <tfoot>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   913
						wrap[1] == "<table>" && tags.indexOf("<tbody") < 0 ?
0d28b7c10758 First commit
ymh
parents:
diff changeset
   914
							div.childNodes :
0d28b7c10758 First commit
ymh
parents:
diff changeset
   915
							[];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   916
0d28b7c10758 First commit
ymh
parents:
diff changeset
   917
					for ( var j = tbody.length - 1; j >= 0 ; --j )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   918
						if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   919
							tbody[ j ].parentNode.removeChild( tbody[ j ] );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   920
0d28b7c10758 First commit
ymh
parents:
diff changeset
   921
					}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   922
0d28b7c10758 First commit
ymh
parents:
diff changeset
   923
				// IE completely kills leading whitespace when innerHTML is used
0d28b7c10758 First commit
ymh
parents:
diff changeset
   924
				if ( !jQuery.support.leadingWhitespace && /^\s/.test( elem ) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   925
					div.insertBefore( context.createTextNode( elem.match(/^\s*/)[0] ), div.firstChild );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   926
				
0d28b7c10758 First commit
ymh
parents:
diff changeset
   927
				elem = jQuery.makeArray( div.childNodes );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   928
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   929
0d28b7c10758 First commit
ymh
parents:
diff changeset
   930
			if ( elem.nodeType )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   931
				ret.push( elem );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   932
			else
0d28b7c10758 First commit
ymh
parents:
diff changeset
   933
				ret = jQuery.merge( ret, elem );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   934
0d28b7c10758 First commit
ymh
parents:
diff changeset
   935
		});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   936
0d28b7c10758 First commit
ymh
parents:
diff changeset
   937
		if ( fragment ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   938
			for ( var i = 0; ret[i]; i++ ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   939
				if ( jQuery.nodeName( ret[i], "script" ) && (!ret[i].type || ret[i].type.toLowerCase() === "text/javascript") ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   940
					scripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   941
				} else {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   942
					if ( ret[i].nodeType === 1 )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   943
						ret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName("script"))) );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   944
					fragment.appendChild( ret[i] );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   945
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   946
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   947
			
0d28b7c10758 First commit
ymh
parents:
diff changeset
   948
			return scripts;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   949
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   950
0d28b7c10758 First commit
ymh
parents:
diff changeset
   951
		return ret;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   952
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   953
0d28b7c10758 First commit
ymh
parents:
diff changeset
   954
	attr: function( elem, name, value ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   955
		// don't set attributes on text and comment nodes
0d28b7c10758 First commit
ymh
parents:
diff changeset
   956
		if (!elem || elem.nodeType == 3 || elem.nodeType == 8)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   957
			return undefined;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   958
0d28b7c10758 First commit
ymh
parents:
diff changeset
   959
		var notxml = !jQuery.isXMLDoc( elem ),
0d28b7c10758 First commit
ymh
parents:
diff changeset
   960
			// Whether we are setting (or getting)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   961
			set = value !== undefined;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   962
0d28b7c10758 First commit
ymh
parents:
diff changeset
   963
		// Try to normalize/fix the name
0d28b7c10758 First commit
ymh
parents:
diff changeset
   964
		name = notxml && jQuery.props[ name ] || name;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   965
0d28b7c10758 First commit
ymh
parents:
diff changeset
   966
		// Only do all the following if this is a node (faster for style)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   967
		// IE elem.getAttribute passes even for style
0d28b7c10758 First commit
ymh
parents:
diff changeset
   968
		if ( elem.tagName ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   969
0d28b7c10758 First commit
ymh
parents:
diff changeset
   970
			// These attributes require special treatment
0d28b7c10758 First commit
ymh
parents:
diff changeset
   971
			var special = /href|src|style/.test( name );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   972
0d28b7c10758 First commit
ymh
parents:
diff changeset
   973
			// Safari mis-reports the default selected property of a hidden option
0d28b7c10758 First commit
ymh
parents:
diff changeset
   974
			// Accessing the parent's selectedIndex property fixes it
0d28b7c10758 First commit
ymh
parents:
diff changeset
   975
			if ( name == "selected" && elem.parentNode )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   976
				elem.parentNode.selectedIndex;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   977
0d28b7c10758 First commit
ymh
parents:
diff changeset
   978
			// If applicable, access the attribute via the DOM 0 way
0d28b7c10758 First commit
ymh
parents:
diff changeset
   979
			if ( name in elem && notxml && !special ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   980
				if ( set ){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   981
					// We can't allow the type property to be changed (since it causes problems in IE)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   982
					if ( name == "type" && jQuery.nodeName( elem, "input" ) && elem.parentNode )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   983
						throw "type property can't be changed";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   984
0d28b7c10758 First commit
ymh
parents:
diff changeset
   985
					elem[ name ] = value;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   986
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   987
0d28b7c10758 First commit
ymh
parents:
diff changeset
   988
				// browsers index elements by id/name on forms, give priority to attributes.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   989
				if( jQuery.nodeName( elem, "form" ) && elem.getAttributeNode(name) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   990
					return elem.getAttributeNode( name ).nodeValue;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   991
0d28b7c10758 First commit
ymh
parents:
diff changeset
   992
				// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
0d28b7c10758 First commit
ymh
parents:
diff changeset
   993
				// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
0d28b7c10758 First commit
ymh
parents:
diff changeset
   994
				if ( name == "tabIndex" ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   995
					var attributeNode = elem.getAttributeNode( "tabIndex" );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   996
					return attributeNode && attributeNode.specified
0d28b7c10758 First commit
ymh
parents:
diff changeset
   997
						? attributeNode.value
0d28b7c10758 First commit
ymh
parents:
diff changeset
   998
						: elem.nodeName.match(/(button|input|object|select|textarea)/i)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   999
							? 0
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1000
							: elem.nodeName.match(/^(a|area)$/i) && elem.href
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1001
								? 0
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1002
								: undefined;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1003
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1004
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1005
				return elem[ name ];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1006
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1007
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1008
			if ( !jQuery.support.style && notxml &&  name == "style" )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1009
				return jQuery.attr( elem.style, "cssText", value );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1010
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1011
			if ( set )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1012
				// convert the value to a string (all browsers do this but IE) see #1070
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1013
				elem.setAttribute( name, "" + value );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1014
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1015
			var attr = !jQuery.support.hrefNormalized && notxml && special
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1016
					// Some attributes require a special call on IE
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1017
					? elem.getAttribute( name, 2 )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1018
					: elem.getAttribute( name );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1019
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1020
			// Non-existent attributes return null, we normalize to undefined
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1021
			return attr === null ? undefined : attr;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1022
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1023
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1024
		// elem is actually elem.style ... set the style
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1025
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1026
		// IE uses filters for opacity
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1027
		if ( !jQuery.support.opacity && name == "opacity" ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1028
			if ( set ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1029
				// IE has trouble with opacity if it does not have layout
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1030
				// Force it by setting the zoom level
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1031
				elem.zoom = 1;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1032
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1033
				// Set the alpha filter to set the opacity
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1034
				elem.filter = (elem.filter || "").replace( /alpha\([^)]*\)/, "" ) +
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1035
					(parseInt( value ) + '' == "NaN" ? "" : "alpha(opacity=" + value * 100 + ")");
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1036
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1037
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1038
			return elem.filter && elem.filter.indexOf("opacity=") >= 0 ?
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1039
				(parseFloat( elem.filter.match(/opacity=([^)]*)/)[1] ) / 100) + '':
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1040
				"";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1041
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1042
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1043
		name = name.replace(/-([a-z])/ig, function(all, letter){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1044
			return letter.toUpperCase();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1045
		});
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1046
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1047
		if ( set )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1048
			elem[ name ] = value;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1049
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1050
		return elem[ name ];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1051
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1052
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1053
	trim: function( text ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1054
		return (text || "").replace( /^\s+|\s+$/g, "" );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1055
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1056
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1057
	makeArray: function( array ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1058
		var ret = [];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1059
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1060
		if( array != null ){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1061
			var i = array.length;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1062
			// The window, strings (and functions) also have 'length'
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1063
			if( i == null || typeof array === "string" || jQuery.isFunction(array) || array.setInterval )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1064
				ret[0] = array;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1065
			else
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1066
				while( i )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1067
					ret[--i] = array[i];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1068
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1069
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1070
		return ret;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1071
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1072
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1073
	inArray: function( elem, array ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1074
		for ( var i = 0, length = array.length; i < length; i++ )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1075
		// Use === because on IE, window == document
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1076
			if ( array[ i ] === elem )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1077
				return i;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1078
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1079
		return -1;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1080
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1081
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1082
	merge: function( first, second ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1083
		// We have to loop this way because IE & Opera overwrite the length
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1084
		// expando of getElementsByTagName
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1085
		var i = 0, elem, pos = first.length;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1086
		// Also, we need to make sure that the correct elements are being returned
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1087
		// (IE returns comment nodes in a '*' query)
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1088
		if ( !jQuery.support.getAll ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1089
			while ( (elem = second[ i++ ]) != null )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1090
				if ( elem.nodeType != 8 )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1091
					first[ pos++ ] = elem;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1092
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1093
		} else
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1094
			while ( (elem = second[ i++ ]) != null )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1095
				first[ pos++ ] = elem;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1096
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1097
		return first;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1098
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1099
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1100
	unique: function( array ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1101
		var ret = [], done = {};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1102
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1103
		try {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1104
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1105
			for ( var i = 0, length = array.length; i < length; i++ ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1106
				var id = jQuery.data( array[ i ] );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1107
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1108
				if ( !done[ id ] ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1109
					done[ id ] = true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1110
					ret.push( array[ i ] );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1111
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1112
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1113
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1114
		} catch( e ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1115
			ret = array;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1116
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1117
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1118
		return ret;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1119
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1120
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1121
	grep: function( elems, callback, inv ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1122
		var ret = [];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1123
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1124
		// Go through the array, only saving the items
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1125
		// that pass the validator function
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1126
		for ( var i = 0, length = elems.length; i < length; i++ )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1127
			if ( !inv != !callback( elems[ i ], i ) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1128
				ret.push( elems[ i ] );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1129
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1130
		return ret;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1131
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1132
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1133
	map: function( elems, callback ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1134
		var ret = [];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1135
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1136
		// Go through the array, translating each of the items to their
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1137
		// new value (or values).
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1138
		for ( var i = 0, length = elems.length; i < length; i++ ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1139
			var value = callback( elems[ i ], i );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1140
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1141
			if ( value != null )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1142
				ret[ ret.length ] = value;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1143
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1144
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1145
		return ret.concat.apply( [], ret );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1146
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1147
});
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1148
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1149
// Use of jQuery.browser is deprecated.
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1150
// It's included for backwards compatibility and plugins,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1151
// although they should work to migrate away.
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1152
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1153
var userAgent = navigator.userAgent.toLowerCase();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1154
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1155
// Figure out what browser is being used
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1156
jQuery.browser = {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1157
	version: (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1],
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1158
	safari: /webkit/.test( userAgent ),
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1159
	opera: /opera/.test( userAgent ),
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1160
	msie: /msie/.test( userAgent ) && !/opera/.test( userAgent ),
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1161
	mozilla: /mozilla/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1162
};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1163
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1164
jQuery.each({
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1165
	parent: function(elem){return elem.parentNode;},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1166
	parents: function(elem){return jQuery.dir(elem,"parentNode");},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1167
	next: function(elem){return jQuery.nth(elem,2,"nextSibling");},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1168
	prev: function(elem){return jQuery.nth(elem,2,"previousSibling");},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1169
	nextAll: function(elem){return jQuery.dir(elem,"nextSibling");},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1170
	prevAll: function(elem){return jQuery.dir(elem,"previousSibling");},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1171
	siblings: function(elem){return jQuery.sibling(elem.parentNode.firstChild,elem);},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1172
	children: function(elem){return jQuery.sibling(elem.firstChild);},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1173
	contents: function(elem){return jQuery.nodeName(elem,"iframe")?elem.contentDocument||elem.contentWindow.document:jQuery.makeArray(elem.childNodes);}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1174
}, function(name, fn){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1175
	jQuery.fn[ name ] = function( selector ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1176
		var ret = jQuery.map( this, fn );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1177
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1178
		if ( selector && typeof selector == "string" )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1179
			ret = jQuery.multiFilter( selector, ret );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1180
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1181
		return this.pushStack( jQuery.unique( ret ), name, selector );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1182
	};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1183
});
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1184
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1185
jQuery.each({
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1186
	appendTo: "append",
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1187
	prependTo: "prepend",
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1188
	insertBefore: "before",
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1189
	insertAfter: "after",
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1190
	replaceAll: "replaceWith"
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1191
}, function(name, original){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1192
	jQuery.fn[ name ] = function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1193
		var args = arguments;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1194
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1195
		return this.each(function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1196
			for ( var i = 0, length = args.length; i < length; i++ )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1197
				jQuery( args[ i ] )[ original ]( this );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1198
		});
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1199
	};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1200
});
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1201
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1202
jQuery.each({
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1203
	removeAttr: function( name ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1204
		jQuery.attr( this, name, "" );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1205
		if (this.nodeType == 1)
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1206
			this.removeAttribute( name );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1207
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1208
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1209
	addClass: function( classNames ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1210
		jQuery.className.add( this, classNames );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1211
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1212
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1213
	removeClass: function( classNames ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1214
		jQuery.className.remove( this, classNames );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1215
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1216
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1217
	toggleClass: function( classNames, state ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1218
		if( typeof state !== "boolean" )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1219
			state = !jQuery.className.has( this, classNames );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1220
		jQuery.className[ state ? "add" : "remove" ]( this, classNames );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1221
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1222
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1223
	remove: function( selector ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1224
		if ( !selector || jQuery.filter( selector, [ this ] ).length ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1225
			// Prevent memory leaks
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1226
			jQuery( "*", this ).add([this]).each(function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1227
				jQuery.event.remove(this);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1228
				jQuery.removeData(this);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1229
			});
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1230
			if (this.parentNode)
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1231
				this.parentNode.removeChild( this );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1232
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1233
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1234
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1235
	empty: function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1236
		// Remove element nodes and prevent memory leaks
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1237
		jQuery( ">*", this ).remove();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1238
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1239
		// Remove any remaining nodes
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1240
		while ( this.firstChild )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1241
			this.removeChild( this.firstChild );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1242
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1243
}, function(name, fn){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1244
	jQuery.fn[ name ] = function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1245
		return this.each( fn, arguments );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1246
	};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1247
});
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1248
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1249
// Helper function used by the dimensions and offset modules
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1250
function num(elem, prop) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1251
	return elem[0] && parseInt( jQuery.curCSS(elem[0], prop, true), 10 ) || 0;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1252
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1253
var expando = "jQuery" + now(), uuid = 0, windowData = {};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1254
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1255
jQuery.extend({
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1256
	cache: {},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1257
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1258
	data: function( elem, name, data ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1259
		elem = elem == window ?
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1260
			windowData :
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1261
			elem;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1262
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1263
		var id = elem[ expando ];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1264
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1265
		// Compute a unique ID for the element
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1266
		if ( !id )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1267
			id = elem[ expando ] = ++uuid;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1268
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1269
		// Only generate the data cache if we're
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1270
		// trying to access or manipulate it
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1271
		if ( name && !jQuery.cache[ id ] )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1272
			jQuery.cache[ id ] = {};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1273
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1274
		// Prevent overriding the named cache with undefined values
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1275
		if ( data !== undefined )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1276
			jQuery.cache[ id ][ name ] = data;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1277
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1278
		// Return the named cache data, or the ID for the element
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1279
		return name ?
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1280
			jQuery.cache[ id ][ name ] :
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1281
			id;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1282
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1283
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1284
	removeData: function( elem, name ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1285
		elem = elem == window ?
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1286
			windowData :
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1287
			elem;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1288
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1289
		var id = elem[ expando ];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1290
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1291
		// If we want to remove a specific section of the element's data
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1292
		if ( name ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1293
			if ( jQuery.cache[ id ] ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1294
				// Remove the section of cache data
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1295
				delete jQuery.cache[ id ][ name ];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1296
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1297
				// If we've removed all the data, remove the element's cache
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1298
				name = "";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1299
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1300
				for ( name in jQuery.cache[ id ] )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1301
					break;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1302
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1303
				if ( !name )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1304
					jQuery.removeData( elem );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1305
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1306
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1307
		// Otherwise, we want to remove all of the element's data
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1308
		} else {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1309
			// Clean up the element expando
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1310
			try {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1311
				delete elem[ expando ];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1312
			} catch(e){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1313
				// IE has trouble directly removing the expando
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1314
				// but it's ok with using removeAttribute
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1315
				if ( elem.removeAttribute )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1316
					elem.removeAttribute( expando );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1317
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1318
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1319
			// Completely remove the data cache
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1320
			delete jQuery.cache[ id ];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1321
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1322
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1323
	queue: function( elem, type, data ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1324
		if ( elem ){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1325
	
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1326
			type = (type || "fx") + "queue";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1327
	
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1328
			var q = jQuery.data( elem, type );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1329
	
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1330
			if ( !q || jQuery.isArray(data) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1331
				q = jQuery.data( elem, type, jQuery.makeArray(data) );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1332
			else if( data )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1333
				q.push( data );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1334
	
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1335
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1336
		return q;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1337
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1338
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1339
	dequeue: function( elem, type ){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1340
		var queue = jQuery.queue( elem, type ),
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1341
			fn = queue.shift();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1342
		
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1343
		if( !type || type === "fx" )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1344
			fn = queue[0];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1345
			
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1346
		if( fn !== undefined )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1347
			fn.call(elem);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1348
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1349
});
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1350
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1351
jQuery.fn.extend({
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1352
	data: function( key, value ){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1353
		var parts = key.split(".");
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1354
		parts[1] = parts[1] ? "." + parts[1] : "";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1355
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1356
		if ( value === undefined ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1357
			var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1358
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1359
			if ( data === undefined && this.length )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1360
				data = jQuery.data( this[0], key );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1361
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1362
			return data === undefined && parts[1] ?
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1363
				this.data( parts[0] ) :
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1364
				data;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1365
		} else
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1366
			return this.trigger("setData" + parts[1] + "!", [parts[0], value]).each(function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1367
				jQuery.data( this, key, value );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1368
			});
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1369
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1370
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1371
	removeData: function( key ){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1372
		return this.each(function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1373
			jQuery.removeData( this, key );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1374
		});
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1375
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1376
	queue: function(type, data){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1377
		if ( typeof type !== "string" ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1378
			data = type;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1379
			type = "fx";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1380
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1381
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1382
		if ( data === undefined )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1383
			return jQuery.queue( this[0], type );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1384
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1385
		return this.each(function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1386
			var queue = jQuery.queue( this, type, data );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1387
			
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1388
			 if( type == "fx" && queue.length == 1 )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1389
				queue[0].call(this);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1390
		});
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1391
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1392
	dequeue: function(type){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1393
		return this.each(function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1394
			jQuery.dequeue( this, type );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1395
		});
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1396
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1397
});/*!
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1398
 * Sizzle CSS Selector Engine - v0.9.3
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1399
 *  Copyright 2009, The Dojo Foundation
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1400
 *  Released under the MIT, BSD, and GPL Licenses.
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1401
 *  More information: http://sizzlejs.com/
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1402
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1403
(function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1404
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1405
var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]+['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[]+)+|[>+~])(\s*,\s*)?/g,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1406
	done = 0,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1407
	toString = Object.prototype.toString;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1408
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1409
var Sizzle = function(selector, context, results, seed) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1410
	results = results || [];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1411
	context = context || document;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1412
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1413
	if ( context.nodeType !== 1 && context.nodeType !== 9 )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1414
		return [];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1415
	
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1416
	if ( !selector || typeof selector !== "string" ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1417
		return results;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1418
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1419
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1420
	var parts = [], m, set, checkSet, check, mode, extra, prune = true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1421
	
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1422
	// Reset the position of the chunker regexp (start from head)
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1423
	chunker.lastIndex = 0;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1424
	
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1425
	while ( (m = chunker.exec(selector)) !== null ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1426
		parts.push( m[1] );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1427
		
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1428
		if ( m[2] ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1429
			extra = RegExp.rightContext;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1430
			break;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1431
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1432
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1433
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1434
	if ( parts.length > 1 && origPOS.exec( selector ) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1435
		if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1436
			set = posProcess( parts[0] + parts[1], context );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1437
		} else {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1438
			set = Expr.relative[ parts[0] ] ?
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1439
				[ context ] :
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1440
				Sizzle( parts.shift(), context );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1441
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1442
			while ( parts.length ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1443
				selector = parts.shift();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1444
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1445
				if ( Expr.relative[ selector ] )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1446
					selector += parts.shift();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1447
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1448
				set = posProcess( selector, set );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1449
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1450
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1451
	} else {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1452
		var ret = seed ?
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1453
			{ expr: parts.pop(), set: makeArray(seed) } :
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1454
			Sizzle.find( parts.pop(), parts.length === 1 && context.parentNode ? context.parentNode : context, isXML(context) );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1455
		set = Sizzle.filter( ret.expr, ret.set );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1456
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1457
		if ( parts.length > 0 ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1458
			checkSet = makeArray(set);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1459
		} else {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1460
			prune = false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1461
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1462
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1463
		while ( parts.length ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1464
			var cur = parts.pop(), pop = cur;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1465
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1466
			if ( !Expr.relative[ cur ] ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1467
				cur = "";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1468
			} else {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1469
				pop = parts.pop();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1470
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1471
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1472
			if ( pop == null ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1473
				pop = context;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1474
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1475
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1476
			Expr.relative[ cur ]( checkSet, pop, isXML(context) );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1477
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1478
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1479
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1480
	if ( !checkSet ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1481
		checkSet = set;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1482
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1483
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1484
	if ( !checkSet ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1485
		throw "Syntax error, unrecognized expression: " + (cur || selector);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1486
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1487
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1488
	if ( toString.call(checkSet) === "[object Array]" ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1489
		if ( !prune ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1490
			results.push.apply( results, checkSet );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1491
		} else if ( context.nodeType === 1 ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1492
			for ( var i = 0; checkSet[i] != null; i++ ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1493
				if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1494
					results.push( set[i] );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1495
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1496
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1497
		} else {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1498
			for ( var i = 0; checkSet[i] != null; i++ ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1499
				if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1500
					results.push( set[i] );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1501
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1502
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1503
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1504
	} else {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1505
		makeArray( checkSet, results );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1506
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1507
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1508
	if ( extra ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1509
		Sizzle( extra, context, results, seed );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1510
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1511
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1512
	return results;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1513
};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1514
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1515
Sizzle.matches = function(expr, set){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1516
	return Sizzle(expr, null, null, set);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1517
};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1518
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1519
Sizzle.find = function(expr, context, isXML){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1520
	var set, match;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1521
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1522
	if ( !expr ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1523
		return [];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1524
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1525
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1526
	for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1527
		var type = Expr.order[i], match;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1528
		
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1529
		if ( (match = Expr.match[ type ].exec( expr )) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1530
			var left = RegExp.leftContext;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1531
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1532
			if ( left.substr( left.length - 1 ) !== "\\" ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1533
				match[1] = (match[1] || "").replace(/\\/g, "");
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1534
				set = Expr.find[ type ]( match, context, isXML );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1535
				if ( set != null ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1536
					expr = expr.replace( Expr.match[ type ], "" );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1537
					break;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1538
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1539
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1540
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1541
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1542
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1543
	if ( !set ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1544
		set = context.getElementsByTagName("*");
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1545
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1546
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1547
	return {set: set, expr: expr};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1548
};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1549
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1550
Sizzle.filter = function(expr, set, inplace, not){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1551
	var old = expr, result = [], curLoop = set, match, anyFound;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1552
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1553
	while ( expr && set.length ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1554
		for ( var type in Expr.filter ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1555
			if ( (match = Expr.match[ type ].exec( expr )) != null ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1556
				var filter = Expr.filter[ type ], found, item;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1557
				anyFound = false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1558
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1559
				if ( curLoop == result ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1560
					result = [];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1561
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1562
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1563
				if ( Expr.preFilter[ type ] ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1564
					match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1565
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1566
					if ( !match ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1567
						anyFound = found = true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1568
					} else if ( match === true ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1569
						continue;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1570
					}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1571
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1572
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1573
				if ( match ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1574
					for ( var i = 0; (item = curLoop[i]) != null; i++ ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1575
						if ( item ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1576
							found = filter( item, match, i, curLoop );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1577
							var pass = not ^ !!found;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1578
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1579
							if ( inplace && found != null ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1580
								if ( pass ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1581
									anyFound = true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1582
								} else {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1583
									curLoop[i] = false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1584
								}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1585
							} else if ( pass ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1586
								result.push( item );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1587
								anyFound = true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1588
							}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1589
						}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1590
					}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1591
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1592
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1593
				if ( found !== undefined ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1594
					if ( !inplace ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1595
						curLoop = result;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1596
					}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1597
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1598
					expr = expr.replace( Expr.match[ type ], "" );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1599
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1600
					if ( !anyFound ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1601
						return [];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1602
					}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1603
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1604
					break;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1605
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1606
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1607
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1608
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1609
		expr = expr.replace(/\s*,\s*/, "");
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1610
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1611
		// Improper expression
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1612
		if ( expr == old ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1613
			if ( anyFound == null ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1614
				throw "Syntax error, unrecognized expression: " + expr;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1615
			} else {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1616
				break;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1617
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1618
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1619
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1620
		old = expr;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1621
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1622
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1623
	return curLoop;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1624
};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1625
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1626
var Expr = Sizzle.selectors = {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1627
	order: [ "ID", "NAME", "TAG" ],
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1628
	match: {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1629
		ID: /#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1630
		CLASS: /\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1631
		NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1632
		ATTR: /\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1633
		TAG: /^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1634
		CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1635
		POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1636
		PSEUDO: /:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1637
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1638
	attrMap: {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1639
		"class": "className",
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1640
		"for": "htmlFor"
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1641
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1642
	attrHandle: {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1643
		href: function(elem){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1644
			return elem.getAttribute("href");
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1645
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1646
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1647
	relative: {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1648
		"+": function(checkSet, part){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1649
			for ( var i = 0, l = checkSet.length; i < l; i++ ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1650
				var elem = checkSet[i];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1651
				if ( elem ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1652
					var cur = elem.previousSibling;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1653
					while ( cur && cur.nodeType !== 1 ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1654
						cur = cur.previousSibling;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1655
					}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1656
					checkSet[i] = typeof part === "string" ?
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1657
						cur || false :
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1658
						cur === part;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1659
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1660
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1661
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1662
			if ( typeof part === "string" ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1663
				Sizzle.filter( part, checkSet, true );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1664
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1665
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1666
		">": function(checkSet, part, isXML){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1667
			if ( typeof part === "string" && !/\W/.test(part) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1668
				part = isXML ? part : part.toUpperCase();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1669
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1670
				for ( var i = 0, l = checkSet.length; i < l; i++ ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1671
					var elem = checkSet[i];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1672
					if ( elem ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1673
						var parent = elem.parentNode;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1674
						checkSet[i] = parent.nodeName === part ? parent : false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1675
					}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1676
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1677
			} else {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1678
				for ( var i = 0, l = checkSet.length; i < l; i++ ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1679
					var elem = checkSet[i];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1680
					if ( elem ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1681
						checkSet[i] = typeof part === "string" ?
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1682
							elem.parentNode :
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1683
							elem.parentNode === part;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1684
					}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1685
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1686
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1687
				if ( typeof part === "string" ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1688
					Sizzle.filter( part, checkSet, true );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1689
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1690
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1691
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1692
		"": function(checkSet, part, isXML){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1693
			var doneName = "done" + (done++), checkFn = dirCheck;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1694
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1695
			if ( !part.match(/\W/) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1696
				var nodeCheck = part = isXML ? part : part.toUpperCase();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1697
				checkFn = dirNodeCheck;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1698
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1699
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1700
			checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1701
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1702
		"~": function(checkSet, part, isXML){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1703
			var doneName = "done" + (done++), checkFn = dirCheck;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1704
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1705
			if ( typeof part === "string" && !part.match(/\W/) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1706
				var nodeCheck = part = isXML ? part : part.toUpperCase();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1707
				checkFn = dirNodeCheck;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1708
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1709
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1710
			checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1711
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1712
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1713
	find: {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1714
		ID: function(match, context, isXML){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1715
			if ( typeof context.getElementById !== "undefined" && !isXML ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1716
				var m = context.getElementById(match[1]);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1717
				return m ? [m] : [];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1718
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1719
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1720
		NAME: function(match, context, isXML){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1721
			if ( typeof context.getElementsByName !== "undefined" && !isXML ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1722
				return context.getElementsByName(match[1]);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1723
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1724
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1725
		TAG: function(match, context){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1726
			return context.getElementsByTagName(match[1]);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1727
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1728
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1729
	preFilter: {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1730
		CLASS: function(match, curLoop, inplace, result, not){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1731
			match = " " + match[1].replace(/\\/g, "") + " ";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1732
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1733
			var elem;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1734
			for ( var i = 0; (elem = curLoop[i]) != null; i++ ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1735
				if ( elem ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1736
					if ( not ^ (" " + elem.className + " ").indexOf(match) >= 0 ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1737
						if ( !inplace )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1738
							result.push( elem );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1739
					} else if ( inplace ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1740
						curLoop[i] = false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1741
					}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1742
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1743
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1744
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1745
			return false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1746
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1747
		ID: function(match){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1748
			return match[1].replace(/\\/g, "");
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1749
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1750
		TAG: function(match, curLoop){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1751
			for ( var i = 0; curLoop[i] === false; i++ ){}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1752
			return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1753
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1754
		CHILD: function(match){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1755
			if ( match[1] == "nth" ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1756
				// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1757
				var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1758
					match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" ||
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1759
					!/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1760
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1761
				// calculate the numbers (first)n+(last) including if they are negative
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1762
				match[2] = (test[1] + (test[2] || 1)) - 0;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1763
				match[3] = test[3] - 0;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1764
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1765
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1766
			// TODO: Move to normal caching system
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1767
			match[0] = "done" + (done++);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1768
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1769
			return match;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1770
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1771
		ATTR: function(match){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1772
			var name = match[1].replace(/\\/g, "");
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1773
			
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1774
			if ( Expr.attrMap[name] ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1775
				match[1] = Expr.attrMap[name];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1776
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1777
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1778
			if ( match[2] === "~=" ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1779
				match[4] = " " + match[4] + " ";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1780
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1781
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1782
			return match;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1783
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1784
		PSEUDO: function(match, curLoop, inplace, result, not){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1785
			if ( match[1] === "not" ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1786
				// If we're dealing with a complex expression, or a simple one
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1787
				if ( match[3].match(chunker).length > 1 ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1788
					match[3] = Sizzle(match[3], null, null, curLoop);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1789
				} else {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1790
					var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1791
					if ( !inplace ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1792
						result.push.apply( result, ret );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1793
					}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1794
					return false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1795
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1796
			} else if ( Expr.match.POS.test( match[0] ) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1797
				return true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1798
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1799
			
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1800
			return match;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1801
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1802
		POS: function(match){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1803
			match.unshift( true );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1804
			return match;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1805
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1806
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1807
	filters: {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1808
		enabled: function(elem){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1809
			return elem.disabled === false && elem.type !== "hidden";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1810
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1811
		disabled: function(elem){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1812
			return elem.disabled === true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1813
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1814
		checked: function(elem){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1815
			return elem.checked === true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1816
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1817
		selected: function(elem){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1818
			// Accessing this property makes selected-by-default
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1819
			// options in Safari work properly
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1820
			elem.parentNode.selectedIndex;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1821
			return elem.selected === true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1822
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1823
		parent: function(elem){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1824
			return !!elem.firstChild;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1825
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1826
		empty: function(elem){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1827
			return !elem.firstChild;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1828
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1829
		has: function(elem, i, match){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1830
			return !!Sizzle( match[3], elem ).length;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1831
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1832
		header: function(elem){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1833
			return /h\d/i.test( elem.nodeName );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1834
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1835
		text: function(elem){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1836
			return "text" === elem.type;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1837
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1838
		radio: function(elem){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1839
			return "radio" === elem.type;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1840
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1841
		checkbox: function(elem){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1842
			return "checkbox" === elem.type;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1843
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1844
		file: function(elem){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1845
			return "file" === elem.type;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1846
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1847
		password: function(elem){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1848
			return "password" === elem.type;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1849
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1850
		submit: function(elem){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1851
			return "submit" === elem.type;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1852
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1853
		image: function(elem){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1854
			return "image" === elem.type;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1855
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1856
		reset: function(elem){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1857
			return "reset" === elem.type;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1858
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1859
		button: function(elem){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1860
			return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1861
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1862
		input: function(elem){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1863
			return /input|select|textarea|button/i.test(elem.nodeName);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1864
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1865
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1866
	setFilters: {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1867
		first: function(elem, i){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1868
			return i === 0;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1869
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1870
		last: function(elem, i, match, array){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1871
			return i === array.length - 1;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1872
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1873
		even: function(elem, i){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1874
			return i % 2 === 0;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1875
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1876
		odd: function(elem, i){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1877
			return i % 2 === 1;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1878
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1879
		lt: function(elem, i, match){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1880
			return i < match[3] - 0;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1881
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1882
		gt: function(elem, i, match){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1883
			return i > match[3] - 0;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1884
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1885
		nth: function(elem, i, match){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1886
			return match[3] - 0 == i;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1887
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1888
		eq: function(elem, i, match){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1889
			return match[3] - 0 == i;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1890
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1891
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1892
	filter: {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1893
		CHILD: function(elem, match){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1894
			var type = match[1], parent = elem.parentNode;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1895
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1896
			var doneName = match[0];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1897
			
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1898
			if ( parent && (!parent[ doneName ] || !elem.nodeIndex) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1899
				var count = 1;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1900
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1901
				for ( var node = parent.firstChild; node; node = node.nextSibling ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1902
					if ( node.nodeType == 1 ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1903
						node.nodeIndex = count++;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1904
					}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1905
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1906
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1907
				parent[ doneName ] = count - 1;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1908
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1909
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1910
			if ( type == "first" ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1911
				return elem.nodeIndex == 1;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1912
			} else if ( type == "last" ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1913
				return elem.nodeIndex == parent[ doneName ];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1914
			} else if ( type == "only" ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1915
				return parent[ doneName ] == 1;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1916
			} else if ( type == "nth" ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1917
				var add = false, first = match[2], last = match[3];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1918
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1919
				if ( first == 1 && last == 0 ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1920
					return true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1921
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1922
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1923
				if ( first == 0 ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1924
					if ( elem.nodeIndex == last ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1925
						add = true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1926
					}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1927
				} else if ( (elem.nodeIndex - last) % first == 0 && (elem.nodeIndex - last) / first >= 0 ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1928
					add = true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1929
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1930
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1931
				return add;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1932
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1933
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1934
		PSEUDO: function(elem, match, i, array){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1935
			var name = match[1], filter = Expr.filters[ name ];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1936
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1937
			if ( filter ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1938
				return filter( elem, i, match, array );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1939
			} else if ( name === "contains" ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1940
				return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1941
			} else if ( name === "not" ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1942
				var not = match[3];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1943
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1944
				for ( var i = 0, l = not.length; i < l; i++ ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1945
					if ( not[i] === elem ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1946
						return false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1947
					}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1948
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1949
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1950
				return true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1951
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1952
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1953
		ID: function(elem, match){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1954
			return elem.nodeType === 1 && elem.getAttribute("id") === match;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1955
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1956
		TAG: function(elem, match){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1957
			return (match === "*" && elem.nodeType === 1) || elem.nodeName === match;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1958
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1959
		CLASS: function(elem, match){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1960
			return match.test( elem.className );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1961
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1962
		ATTR: function(elem, match){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1963
			var result = Expr.attrHandle[ match[1] ] ? Expr.attrHandle[ match[1] ]( elem ) : elem[ match[1] ] || elem.getAttribute( match[1] ), value = result + "", type = match[2], check = match[4];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1964
			return result == null ?
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1965
				type === "!=" :
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1966
				type === "=" ?
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1967
				value === check :
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1968
				type === "*=" ?
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1969
				value.indexOf(check) >= 0 :
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1970
				type === "~=" ?
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1971
				(" " + value + " ").indexOf(check) >= 0 :
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1972
				!match[4] ?
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1973
				result :
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1974
				type === "!=" ?
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1975
				value != check :
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1976
				type === "^=" ?
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1977
				value.indexOf(check) === 0 :
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1978
				type === "$=" ?
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1979
				value.substr(value.length - check.length) === check :
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1980
				type === "|=" ?
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1981
				value === check || value.substr(0, check.length + 1) === check + "-" :
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1982
				false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1983
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1984
		POS: function(elem, match, i, array){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1985
			var name = match[2], filter = Expr.setFilters[ name ];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1986
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1987
			if ( filter ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1988
				return filter( elem, i, match, array );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1989
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1990
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1991
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1992
};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1993
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1994
var origPOS = Expr.match.POS;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1995
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1996
for ( var type in Expr.match ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1997
	Expr.match[ type ] = RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1998
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  1999
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2000
var makeArray = function(array, results) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2001
	array = Array.prototype.slice.call( array );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2002
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2003
	if ( results ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2004
		results.push.apply( results, array );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2005
		return results;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2006
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2007
	
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2008
	return array;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2009
};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2010
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2011
// Perform a simple check to determine if the browser is capable of
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2012
// converting a NodeList to an array using builtin methods.
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2013
try {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2014
	Array.prototype.slice.call( document.documentElement.childNodes );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2015
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2016
// Provide a fallback method if it does not work
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2017
} catch(e){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2018
	makeArray = function(array, results) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2019
		var ret = results || [];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2020
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2021
		if ( toString.call(array) === "[object Array]" ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2022
			Array.prototype.push.apply( ret, array );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2023
		} else {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2024
			if ( typeof array.length === "number" ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2025
				for ( var i = 0, l = array.length; i < l; i++ ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2026
					ret.push( array[i] );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2027
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2028
			} else {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2029
				for ( var i = 0; array[i]; i++ ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2030
					ret.push( array[i] );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2031
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2032
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2033
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2034
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2035
		return ret;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2036
	};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2037
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2038
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2039
// Check to see if the browser returns elements by name when
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2040
// querying by getElementById (and provide a workaround)
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2041
(function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2042
	// We're going to inject a fake input element with a specified name
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2043
	var form = document.createElement("form"),
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2044
		id = "script" + (new Date).getTime();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2045
	form.innerHTML = "<input name='" + id + "'/>";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2046
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2047
	// Inject it into the root element, check its status, and remove it quickly
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2048
	var root = document.documentElement;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2049
	root.insertBefore( form, root.firstChild );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2050
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2051
	// The workaround has to do additional checks after a getElementById
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2052
	// Which slows things down for other browsers (hence the branching)
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2053
	if ( !!document.getElementById( id ) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2054
		Expr.find.ID = function(match, context, isXML){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2055
			if ( typeof context.getElementById !== "undefined" && !isXML ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2056
				var m = context.getElementById(match[1]);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2057
				return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : [];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2058
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2059
		};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2060
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2061
		Expr.filter.ID = function(elem, match){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2062
			var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2063
			return elem.nodeType === 1 && node && node.nodeValue === match;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2064
		};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2065
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2066
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2067
	root.removeChild( form );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2068
})();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2069
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2070
(function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2071
	// Check to see if the browser returns only elements
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2072
	// when doing getElementsByTagName("*")
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2073
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2074
	// Create a fake element
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2075
	var div = document.createElement("div");
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2076
	div.appendChild( document.createComment("") );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2077
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2078
	// Make sure no comments are found
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2079
	if ( div.getElementsByTagName("*").length > 0 ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2080
		Expr.find.TAG = function(match, context){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2081
			var results = context.getElementsByTagName(match[1]);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2082
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2083
			// Filter out possible comments
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2084
			if ( match[1] === "*" ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2085
				var tmp = [];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2086
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2087
				for ( var i = 0; results[i]; i++ ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2088
					if ( results[i].nodeType === 1 ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2089
						tmp.push( results[i] );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2090
					}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2091
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2092
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2093
				results = tmp;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2094
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2095
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2096
			return results;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2097
		};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2098
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2099
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2100
	// Check to see if an attribute returns normalized href attributes
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2101
	div.innerHTML = "<a href='#'></a>";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2102
	if ( div.firstChild && div.firstChild.getAttribute("href") !== "#" ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2103
		Expr.attrHandle.href = function(elem){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2104
			return elem.getAttribute("href", 2);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2105
		};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2106
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2107
})();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2108
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2109
if ( document.querySelectorAll ) (function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2110
	var oldSizzle = Sizzle, div = document.createElement("div");
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2111
	div.innerHTML = "<p class='TEST'></p>";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2112
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2113
	// Safari can't handle uppercase or unicode characters when
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2114
	// in quirks mode.
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2115
	if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2116
		return;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2117
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2118
	
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2119
	Sizzle = function(query, context, extra, seed){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2120
		context = context || document;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2121
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2122
		// Only use querySelectorAll on non-XML documents
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2123
		// (ID selectors don't work in non-HTML documents)
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2124
		if ( !seed && context.nodeType === 9 && !isXML(context) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2125
			try {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2126
				return makeArray( context.querySelectorAll(query), extra );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2127
			} catch(e){}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2128
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2129
		
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2130
		return oldSizzle(query, context, extra, seed);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2131
	};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2132
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2133
	Sizzle.find = oldSizzle.find;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2134
	Sizzle.filter = oldSizzle.filter;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2135
	Sizzle.selectors = oldSizzle.selectors;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2136
	Sizzle.matches = oldSizzle.matches;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2137
})();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2138
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2139
if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2140
	Expr.order.splice(1, 0, "CLASS");
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2141
	Expr.find.CLASS = function(match, context) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2142
		return context.getElementsByClassName(match[1]);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2143
	};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2144
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2145
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2146
function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2147
	for ( var i = 0, l = checkSet.length; i < l; i++ ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2148
		var elem = checkSet[i];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2149
		if ( elem ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2150
			elem = elem[dir];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2151
			var match = false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2152
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2153
			while ( elem && elem.nodeType ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2154
				var done = elem[doneName];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2155
				if ( done ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2156
					match = checkSet[ done ];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2157
					break;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2158
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2159
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2160
				if ( elem.nodeType === 1 && !isXML )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2161
					elem[doneName] = i;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2162
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2163
				if ( elem.nodeName === cur ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2164
					match = elem;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2165
					break;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2166
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2167
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2168
				elem = elem[dir];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2169
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2170
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2171
			checkSet[i] = match;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2172
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2173
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2174
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2175
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2176
function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2177
	for ( var i = 0, l = checkSet.length; i < l; i++ ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2178
		var elem = checkSet[i];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2179
		if ( elem ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2180
			elem = elem[dir];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2181
			var match = false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2182
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2183
			while ( elem && elem.nodeType ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2184
				if ( elem[doneName] ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2185
					match = checkSet[ elem[doneName] ];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2186
					break;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2187
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2188
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2189
				if ( elem.nodeType === 1 ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2190
					if ( !isXML )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2191
						elem[doneName] = i;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2192
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2193
					if ( typeof cur !== "string" ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2194
						if ( elem === cur ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2195
							match = true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2196
							break;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2197
						}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2198
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2199
					} else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2200
						match = elem;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2201
						break;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2202
					}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2203
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2204
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2205
				elem = elem[dir];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2206
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2207
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2208
			checkSet[i] = match;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2209
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2210
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2211
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2212
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2213
var contains = document.compareDocumentPosition ?  function(a, b){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2214
	return a.compareDocumentPosition(b) & 16;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2215
} : function(a, b){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2216
	return a !== b && (a.contains ? a.contains(b) : true);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2217
};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2218
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2219
var isXML = function(elem){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2220
	return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" ||
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2221
		!!elem.ownerDocument && isXML( elem.ownerDocument );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2222
};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2223
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2224
var posProcess = function(selector, context){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2225
	var tmpSet = [], later = "", match,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2226
		root = context.nodeType ? [context] : context;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2227
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2228
	// Position selectors must be done after the filter
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2229
	// And so must :not(positional) so we move all PSEUDOs to the end
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2230
	while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2231
		later += match[0];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2232
		selector = selector.replace( Expr.match.PSEUDO, "" );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2233
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2234
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2235
	selector = Expr.relative[selector] ? selector + "*" : selector;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2236
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2237
	for ( var i = 0, l = root.length; i < l; i++ ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2238
		Sizzle( selector, root[i], tmpSet );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2239
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2240
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2241
	return Sizzle.filter( later, tmpSet );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2242
};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2243
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2244
// EXPOSE
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2245
jQuery.find = Sizzle;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2246
jQuery.filter = Sizzle.filter;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2247
jQuery.expr = Sizzle.selectors;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2248
jQuery.expr[":"] = jQuery.expr.filters;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2249
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2250
Sizzle.selectors.filters.hidden = function(elem){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2251
	return "hidden" === elem.type ||
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2252
		jQuery.css(elem, "display") === "none" ||
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2253
		jQuery.css(elem, "visibility") === "hidden";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2254
};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2255
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2256
Sizzle.selectors.filters.visible = function(elem){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2257
	return "hidden" !== elem.type &&
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2258
		jQuery.css(elem, "display") !== "none" &&
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2259
		jQuery.css(elem, "visibility") !== "hidden";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2260
};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2261
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2262
Sizzle.selectors.filters.animated = function(elem){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2263
	return jQuery.grep(jQuery.timers, function(fn){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2264
		return elem === fn.elem;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2265
	}).length;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2266
};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2267
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2268
jQuery.multiFilter = function( expr, elems, not ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2269
	if ( not ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2270
		expr = ":not(" + expr + ")";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2271
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2272
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2273
	return Sizzle.matches(expr, elems);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2274
};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2275
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2276
jQuery.dir = function( elem, dir ){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2277
	var matched = [], cur = elem[dir];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2278
	while ( cur && cur != document ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2279
		if ( cur.nodeType == 1 )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2280
			matched.push( cur );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2281
		cur = cur[dir];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2282
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2283
	return matched;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2284
};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2285
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2286
jQuery.nth = function(cur, result, dir, elem){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2287
	result = result || 1;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2288
	var num = 0;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2289
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2290
	for ( ; cur; cur = cur[dir] )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2291
		if ( cur.nodeType == 1 && ++num == result )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2292
			break;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2293
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2294
	return cur;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2295
};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2296
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2297
jQuery.sibling = function(n, elem){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2298
	var r = [];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2299
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2300
	for ( ; n; n = n.nextSibling ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2301
		if ( n.nodeType == 1 && n != elem )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2302
			r.push( n );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2303
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2304
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2305
	return r;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2306
};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2307
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2308
return;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2309
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2310
window.Sizzle = Sizzle;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2311
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2312
})();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2313
/*
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2314
 * A number of helper functions used for managing events.
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2315
 * Many of the ideas behind this code originated from
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2316
 * Dean Edwards' addEvent library.
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2317
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2318
jQuery.event = {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2319
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2320
	// Bind an event to an element
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2321
	// Original by Dean Edwards
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2322
	add: function(elem, types, handler, data) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2323
		if ( elem.nodeType == 3 || elem.nodeType == 8 )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2324
			return;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2325
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2326
		// For whatever reason, IE has trouble passing the window object
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2327
		// around, causing it to be cloned in the process
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2328
		if ( elem.setInterval && elem != window )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2329
			elem = window;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2330
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2331
		// Make sure that the function being executed has a unique ID
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2332
		if ( !handler.guid )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2333
			handler.guid = this.guid++;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2334
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2335
		// if data is passed, bind to handler
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2336
		if ( data !== undefined ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2337
			// Create temporary function pointer to original handler
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2338
			var fn = handler;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2339
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2340
			// Create unique handler function, wrapped around original handler
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2341
			handler = this.proxy( fn );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2342
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2343
			// Store data in unique handler
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2344
			handler.data = data;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2345
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2346
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2347
		// Init the element's event structure
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2348
		var events = jQuery.data(elem, "events") || jQuery.data(elem, "events", {}),
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2349
			handle = jQuery.data(elem, "handle") || jQuery.data(elem, "handle", function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2350
				// Handle the second event of a trigger and when
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2351
				// an event is called after a page has unloaded
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2352
				return typeof jQuery !== "undefined" && !jQuery.event.triggered ?
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2353
					jQuery.event.handle.apply(arguments.callee.elem, arguments) :
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2354
					undefined;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2355
			});
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2356
		// Add elem as a property of the handle function
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2357
		// This is to prevent a memory leak with non-native
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2358
		// event in IE.
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2359
		handle.elem = elem;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2360
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2361
		// Handle multiple events separated by a space
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2362
		// jQuery(...).bind("mouseover mouseout", fn);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2363
		jQuery.each(types.split(/\s+/), function(index, type) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2364
			// Namespaced event handlers
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2365
			var namespaces = type.split(".");
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2366
			type = namespaces.shift();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2367
			handler.type = namespaces.slice().sort().join(".");
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2368
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2369
			// Get the current list of functions bound to this event
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2370
			var handlers = events[type];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2371
			
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2372
			if ( jQuery.event.specialAll[type] )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2373
				jQuery.event.specialAll[type].setup.call(elem, data, namespaces);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2374
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2375
			// Init the event handler queue
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2376
			if (!handlers) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2377
				handlers = events[type] = {};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2378
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2379
				// Check for a special event handler
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2380
				// Only use addEventListener/attachEvent if the special
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2381
				// events handler returns false
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2382
				if ( !jQuery.event.special[type] || jQuery.event.special[type].setup.call(elem, data, namespaces) === false ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2383
					// Bind the global event handler to the element
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2384
					if (elem.addEventListener)
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2385
						elem.addEventListener(type, handle, false);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2386
					else if (elem.attachEvent)
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2387
						elem.attachEvent("on" + type, handle);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2388
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2389
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2390
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2391
			// Add the function to the element's handler list
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2392
			handlers[handler.guid] = handler;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2393
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2394
			// Keep track of which events have been used, for global triggering
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2395
			jQuery.event.global[type] = true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2396
		});
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2397
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2398
		// Nullify elem to prevent memory leaks in IE
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2399
		elem = null;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2400
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2401
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2402
	guid: 1,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2403
	global: {},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2404
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2405
	// Detach an event or set of events from an element
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2406
	remove: function(elem, types, handler) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2407
		// don't do events on text and comment nodes
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2408
		if ( elem.nodeType == 3 || elem.nodeType == 8 )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2409
			return;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2410
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2411
		var events = jQuery.data(elem, "events"), ret, index;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2412
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2413
		if ( events ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2414
			// Unbind all events for the element
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2415
			if ( types === undefined || (typeof types === "string" && types.charAt(0) == ".") )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2416
				for ( var type in events )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2417
					this.remove( elem, type + (types || "") );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2418
			else {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2419
				// types is actually an event object here
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2420
				if ( types.type ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2421
					handler = types.handler;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2422
					types = types.type;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2423
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2424
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2425
				// Handle multiple events seperated by a space
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2426
				// jQuery(...).unbind("mouseover mouseout", fn);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2427
				jQuery.each(types.split(/\s+/), function(index, type){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2428
					// Namespaced event handlers
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2429
					var namespaces = type.split(".");
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2430
					type = namespaces.shift();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2431
					var namespace = RegExp("(^|\\.)" + namespaces.slice().sort().join(".*\\.") + "(\\.|$)");
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2432
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2433
					if ( events[type] ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2434
						// remove the given handler for the given type
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2435
						if ( handler )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2436
							delete events[type][handler.guid];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2437
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2438
						// remove all handlers for the given type
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2439
						else
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2440
							for ( var handle in events[type] )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2441
								// Handle the removal of namespaced events
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2442
								if ( namespace.test(events[type][handle].type) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2443
									delete events[type][handle];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2444
									
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2445
						if ( jQuery.event.specialAll[type] )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2446
							jQuery.event.specialAll[type].teardown.call(elem, namespaces);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2447
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2448
						// remove generic event handler if no more handlers exist
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2449
						for ( ret in events[type] ) break;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2450
						if ( !ret ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2451
							if ( !jQuery.event.special[type] || jQuery.event.special[type].teardown.call(elem, namespaces) === false ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2452
								if (elem.removeEventListener)
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2453
									elem.removeEventListener(type, jQuery.data(elem, "handle"), false);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2454
								else if (elem.detachEvent)
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2455
									elem.detachEvent("on" + type, jQuery.data(elem, "handle"));
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2456
							}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2457
							ret = null;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2458
							delete events[type];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2459
						}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2460
					}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2461
				});
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2462
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2463
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2464
			// Remove the expando if it's no longer used
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2465
			for ( ret in events ) break;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2466
			if ( !ret ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2467
				var handle = jQuery.data( elem, "handle" );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2468
				if ( handle ) handle.elem = null;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2469
				jQuery.removeData( elem, "events" );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2470
				jQuery.removeData( elem, "handle" );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2471
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2472
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2473
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2474
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2475
	// bubbling is internal
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2476
	trigger: function( event, data, elem, bubbling ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2477
		// Event object or event type
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2478
		var type = event.type || event;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2479
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2480
		if( !bubbling ){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2481
			event = typeof event === "object" ?
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2482
				// jQuery.Event object
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2483
				event[expando] ? event :
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2484
				// Object literal
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2485
				jQuery.extend( jQuery.Event(type), event ) :
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2486
				// Just the event type (string)
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2487
				jQuery.Event(type);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2488
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2489
			if ( type.indexOf("!") >= 0 ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2490
				event.type = type = type.slice(0, -1);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2491
				event.exclusive = true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2492
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2493
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2494
			// Handle a global trigger
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2495
			if ( !elem ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2496
				// Don't bubble custom events when global (to avoid too much overhead)
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2497
				event.stopPropagation();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2498
				// Only trigger if we've ever bound an event for it
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2499
				if ( this.global[type] )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2500
					jQuery.each( jQuery.cache, function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2501
						if ( this.events && this.events[type] )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2502
							jQuery.event.trigger( event, data, this.handle.elem );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2503
					});
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2504
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2505
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2506
			// Handle triggering a single element
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2507
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2508
			// don't do events on text and comment nodes
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2509
			if ( !elem || elem.nodeType == 3 || elem.nodeType == 8 )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2510
				return undefined;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2511
			
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2512
			// Clean up in case it is reused
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2513
			event.result = undefined;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2514
			event.target = elem;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2515
			
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2516
			// Clone the incoming data, if any
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2517
			data = jQuery.makeArray(data);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2518
			data.unshift( event );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2519
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2520
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2521
		event.currentTarget = elem;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2522
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2523
		// Trigger the event, it is assumed that "handle" is a function
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2524
		var handle = jQuery.data(elem, "handle");
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2525
		if ( handle )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2526
			handle.apply( elem, data );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2527
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2528
		// Handle triggering native .onfoo handlers (and on links since we don't call .click() for links)
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2529
		if ( (!elem[type] || (jQuery.nodeName(elem, 'a') && type == "click")) && elem["on"+type] && elem["on"+type].apply( elem, data ) === false )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2530
			event.result = false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2531
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2532
		// Trigger the native events (except for clicks on links)
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2533
		if ( !bubbling && elem[type] && !event.isDefaultPrevented() && !(jQuery.nodeName(elem, 'a') && type == "click") ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2534
			this.triggered = true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2535
			try {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2536
				elem[ type ]();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2537
			// prevent IE from throwing an error for some hidden elements
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2538
			} catch (e) {}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2539
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2540
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2541
		this.triggered = false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2542
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2543
		if ( !event.isPropagationStopped() ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2544
			var parent = elem.parentNode || elem.ownerDocument;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2545
			if ( parent )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2546
				jQuery.event.trigger(event, data, parent, true);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2547
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2548
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2549
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2550
	handle: function(event) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2551
		// returned undefined or false
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2552
		var all, handlers;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2553
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2554
		event = arguments[0] = jQuery.event.fix( event || window.event );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2555
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2556
		// Namespaced event handlers
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2557
		var namespaces = event.type.split(".");
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2558
		event.type = namespaces.shift();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2559
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2560
		// Cache this now, all = true means, any handler
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2561
		all = !namespaces.length && !event.exclusive;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2562
		
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2563
		var namespace = RegExp("(^|\\.)" + namespaces.slice().sort().join(".*\\.") + "(\\.|$)");
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2564
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2565
		handlers = ( jQuery.data(this, "events") || {} )[event.type];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2566
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2567
		for ( var j in handlers ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2568
			var handler = handlers[j];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2569
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2570
			// Filter the functions by class
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2571
			if ( all || namespace.test(handler.type) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2572
				// Pass in a reference to the handler function itself
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2573
				// So that we can later remove it
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2574
				event.handler = handler;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2575
				event.data = handler.data;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2576
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2577
				var ret = handler.apply(this, arguments);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2578
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2579
				if( ret !== undefined ){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2580
					event.result = ret;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2581
					if ( ret === false ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2582
						event.preventDefault();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2583
						event.stopPropagation();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2584
					}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2585
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2586
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2587
				if( event.isImmediatePropagationStopped() )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2588
					break;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2589
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2590
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2591
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2592
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2593
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2594
	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(" "),
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2595
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2596
	fix: function(event) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2597
		if ( event[expando] )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2598
			return event;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2599
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2600
		// store a copy of the original event object
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2601
		// and "clone" to set read-only properties
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2602
		var originalEvent = event;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2603
		event = jQuery.Event( originalEvent );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2604
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2605
		for ( var i = this.props.length, prop; i; ){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2606
			prop = this.props[ --i ];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2607
			event[ prop ] = originalEvent[ prop ];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2608
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2609
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2610
		// Fix target property, if necessary
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2611
		if ( !event.target )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2612
			event.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2613
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2614
		// check if target is a textnode (safari)
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2615
		if ( event.target.nodeType == 3 )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2616
			event.target = event.target.parentNode;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2617
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2618
		// Add relatedTarget, if necessary
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2619
		if ( !event.relatedTarget && event.fromElement )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2620
			event.relatedTarget = event.fromElement == event.target ? event.toElement : event.fromElement;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2621
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2622
		// Calculate pageX/Y if missing and clientX/Y available
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2623
		if ( event.pageX == null && event.clientX != null ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2624
			var doc = document.documentElement, body = document.body;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2625
			event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc.clientLeft || 0);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2626
			event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc.clientTop || 0);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2627
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2628
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2629
		// Add which for key events
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2630
		if ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2631
			event.which = event.charCode || event.keyCode;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2632
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2633
		// Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2634
		if ( !event.metaKey && event.ctrlKey )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2635
			event.metaKey = event.ctrlKey;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2636
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2637
		// Add which for click: 1 == left; 2 == middle; 3 == right
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2638
		// Note: button is not normalized, so don't use it
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2639
		if ( !event.which && event.button )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2640
			event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2641
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2642
		return event;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2643
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2644
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2645
	proxy: function( fn, proxy ){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2646
		proxy = proxy || function(){ return fn.apply(this, arguments); };
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2647
		// Set the guid of unique handler to the same of original handler, so it can be removed
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2648
		proxy.guid = fn.guid = fn.guid || proxy.guid || this.guid++;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2649
		// So proxy can be declared as an argument
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2650
		return proxy;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2651
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2652
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2653
	special: {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2654
		ready: {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2655
			// Make sure the ready event is setup
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2656
			setup: bindReady,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2657
			teardown: function() {}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2658
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2659
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2660
	
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2661
	specialAll: {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2662
		live: {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2663
			setup: function( selector, namespaces ){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2664
				jQuery.event.add( this, namespaces[0], liveHandler );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2665
			},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2666
			teardown:  function( namespaces ){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2667
				if ( namespaces.length ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2668
					var remove = 0, name = RegExp("(^|\\.)" + namespaces[0] + "(\\.|$)");
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2669
					
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2670
					jQuery.each( (jQuery.data(this, "events").live || {}), function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2671
						if ( name.test(this.type) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2672
							remove++;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2673
					});
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2674
					
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2675
					if ( remove < 1 )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2676
						jQuery.event.remove( this, namespaces[0], liveHandler );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2677
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2678
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2679
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2680
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2681
};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2682
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2683
jQuery.Event = function( src ){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2684
	// Allow instantiation without the 'new' keyword
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2685
	if( !this.preventDefault )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2686
		return new jQuery.Event(src);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2687
	
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2688
	// Event object
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2689
	if( src && src.type ){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2690
		this.originalEvent = src;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2691
		this.type = src.type;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2692
	// Event type
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2693
	}else
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2694
		this.type = src;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2695
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2696
	// timeStamp is buggy for some events on Firefox(#3843)
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2697
	// So we won't rely on the native value
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2698
	this.timeStamp = now();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2699
	
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2700
	// Mark it as fixed
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2701
	this[expando] = true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2702
};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2703
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2704
function returnFalse(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2705
	return false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2706
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2707
function returnTrue(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2708
	return true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2709
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2710
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2711
// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2712
// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2713
jQuery.Event.prototype = {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2714
	preventDefault: function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2715
		this.isDefaultPrevented = returnTrue;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2716
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2717
		var e = this.originalEvent;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2718
		if( !e )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2719
			return;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2720
		// if preventDefault exists run it on the original event
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2721
		if (e.preventDefault)
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2722
			e.preventDefault();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2723
		// otherwise set the returnValue property of the original event to false (IE)
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2724
		e.returnValue = false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2725
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2726
	stopPropagation: function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2727
		this.isPropagationStopped = returnTrue;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2728
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2729
		var e = this.originalEvent;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2730
		if( !e )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2731
			return;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2732
		// if stopPropagation exists run it on the original event
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2733
		if (e.stopPropagation)
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2734
			e.stopPropagation();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2735
		// otherwise set the cancelBubble property of the original event to true (IE)
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2736
		e.cancelBubble = true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2737
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2738
	stopImmediatePropagation:function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2739
		this.isImmediatePropagationStopped = returnTrue;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2740
		this.stopPropagation();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2741
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2742
	isDefaultPrevented: returnFalse,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2743
	isPropagationStopped: returnFalse,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2744
	isImmediatePropagationStopped: returnFalse
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2745
};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2746
// Checks if an event happened on an element within another element
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2747
// Used in jQuery.event.special.mouseenter and mouseleave handlers
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2748
var withinElement = function(event) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2749
	// Check if mouse(over|out) are still within the same parent element
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2750
	var parent = event.relatedTarget;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2751
	// Traverse up the tree
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2752
	while ( parent && parent != this )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2753
		try { parent = parent.parentNode; }
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2754
		catch(e) { parent = this; }
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2755
	
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2756
	if( parent != this ){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2757
		// set the correct event type
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2758
		event.type = event.data;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2759
		// handle event if we actually just moused on to a non sub-element
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2760
		jQuery.event.handle.apply( this, arguments );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2761
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2762
};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2763
	
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2764
jQuery.each({ 
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2765
	mouseover: 'mouseenter', 
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2766
	mouseout: 'mouseleave'
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2767
}, function( orig, fix ){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2768
	jQuery.event.special[ fix ] = {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2769
		setup: function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2770
			jQuery.event.add( this, orig, withinElement, fix );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2771
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2772
		teardown: function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2773
			jQuery.event.remove( this, orig, withinElement );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2774
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2775
	};			   
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2776
});
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2777
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2778
jQuery.fn.extend({
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2779
	bind: function( type, data, fn ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2780
		return type == "unload" ? this.one(type, data, fn) : this.each(function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2781
			jQuery.event.add( this, type, fn || data, fn && data );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2782
		});
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2783
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2784
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2785
	one: function( type, data, fn ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2786
		var one = jQuery.event.proxy( fn || data, function(event) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2787
			jQuery(this).unbind(event, one);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2788
			return (fn || data).apply( this, arguments );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2789
		});
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2790
		return this.each(function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2791
			jQuery.event.add( this, type, one, fn && data);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2792
		});
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2793
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2794
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2795
	unbind: function( type, fn ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2796
		return this.each(function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2797
			jQuery.event.remove( this, type, fn );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2798
		});
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2799
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2800
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2801
	trigger: function( type, data ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2802
		return this.each(function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2803
			jQuery.event.trigger( type, data, this );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2804
		});
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2805
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2806
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2807
	triggerHandler: function( type, data ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2808
		if( this[0] ){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2809
			var event = jQuery.Event(type);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2810
			event.preventDefault();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2811
			event.stopPropagation();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2812
			jQuery.event.trigger( event, data, this[0] );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2813
			return event.result;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2814
		}		
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2815
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2816
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2817
	toggle: function( fn ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2818
		// Save reference to arguments for access in closure
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2819
		var args = arguments, i = 1;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2820
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2821
		// link all the functions, so any of them can unbind this click handler
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2822
		while( i < args.length )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2823
			jQuery.event.proxy( fn, args[i++] );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2824
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2825
		return this.click( jQuery.event.proxy( fn, function(event) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2826
			// Figure out which function to execute
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2827
			this.lastToggle = ( this.lastToggle || 0 ) % i;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2828
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2829
			// Make sure that clicks stop
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2830
			event.preventDefault();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2831
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2832
			// and execute the function
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2833
			return args[ this.lastToggle++ ].apply( this, arguments ) || false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2834
		}));
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2835
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2836
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2837
	hover: function(fnOver, fnOut) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2838
		return this.mouseenter(fnOver).mouseleave(fnOut);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2839
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2840
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2841
	ready: function(fn) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2842
		// Attach the listeners
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2843
		bindReady();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2844
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2845
		// If the DOM is already ready
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2846
		if ( jQuery.isReady )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2847
			// Execute the function immediately
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2848
			fn.call( document, jQuery );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2849
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2850
		// Otherwise, remember the function for later
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2851
		else
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2852
			// Add the function to the wait list
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2853
			jQuery.readyList.push( fn );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2854
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2855
		return this;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2856
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2857
	
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2858
	live: function( type, fn ){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2859
		var proxy = jQuery.event.proxy( fn );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2860
		proxy.guid += this.selector + type;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2861
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2862
		jQuery(document).bind( liveConvert(type, this.selector), this.selector, proxy );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2863
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2864
		return this;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2865
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2866
	
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2867
	die: function( type, fn ){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2868
		jQuery(document).unbind( liveConvert(type, this.selector), fn ? { guid: fn.guid + this.selector + type } : null );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2869
		return this;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2870
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2871
});
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2872
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2873
function liveHandler( event ){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2874
	var check = RegExp("(^|\\.)" + event.type + "(\\.|$)"),
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2875
		stop = true,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2876
		elems = [];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2877
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2878
	jQuery.each(jQuery.data(this, "events").live || [], function(i, fn){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2879
		if ( check.test(fn.type) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2880
			var elem = jQuery(event.target).closest(fn.data)[0];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2881
			if ( elem )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2882
				elems.push({ elem: elem, fn: fn });
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2883
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2884
	});
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2885
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2886
	jQuery.each(elems, function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2887
		if ( this.fn.call(this.elem, event, this.fn.data) === false )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2888
			stop = false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2889
	});
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2890
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2891
	return stop;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2892
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2893
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2894
function liveConvert(type, selector){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2895
	return ["live", type, selector.replace(/\./g, "`").replace(/ /g, "|")].join(".");
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2896
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2897
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2898
jQuery.extend({
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2899
	isReady: false,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2900
	readyList: [],
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2901
	// Handle when the DOM is ready
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2902
	ready: function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2903
		// Make sure that the DOM is not already loaded
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2904
		if ( !jQuery.isReady ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2905
			// Remember that the DOM is ready
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2906
			jQuery.isReady = true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2907
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2908
			// If there are functions bound, to execute
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2909
			if ( jQuery.readyList ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2910
				// Execute all of them
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2911
				jQuery.each( jQuery.readyList, function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2912
					this.call( document, jQuery );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2913
				});
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2914
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2915
				// Reset the list of functions
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2916
				jQuery.readyList = null;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2917
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2918
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2919
			// Trigger any bound ready events
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2920
			jQuery(document).triggerHandler("ready");
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2921
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2922
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2923
});
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2924
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2925
var readyBound = false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2926
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2927
function bindReady(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2928
	if ( readyBound ) return;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2929
	readyBound = true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2930
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2931
	// Mozilla, Opera and webkit nightlies currently support this event
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2932
	if ( document.addEventListener ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2933
		// Use the handy event callback
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2934
		document.addEventListener( "DOMContentLoaded", function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2935
			document.removeEventListener( "DOMContentLoaded", arguments.callee, false );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2936
			jQuery.ready();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2937
		}, false );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2938
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2939
	// If IE event model is used
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2940
	} else if ( document.attachEvent ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2941
		// ensure firing before onload,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2942
		// maybe late but safe also for iframes
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2943
		document.attachEvent("onreadystatechange", function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2944
			if ( document.readyState === "complete" ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2945
				document.detachEvent( "onreadystatechange", arguments.callee );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2946
				jQuery.ready();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2947
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2948
		});
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2949
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2950
		// If IE and not an iframe
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2951
		// continually check to see if the document is ready
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2952
		if ( document.documentElement.doScroll && typeof window.frameElement === "undefined" ) (function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2953
			if ( jQuery.isReady ) return;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2954
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2955
			try {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2956
				// If IE is used, use the trick by Diego Perini
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2957
				// http://javascript.nwbox.com/IEContentLoaded/
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2958
				document.documentElement.doScroll("left");
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2959
			} catch( error ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2960
				setTimeout( arguments.callee, 0 );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2961
				return;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2962
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2963
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2964
			// and execute any waiting functions
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2965
			jQuery.ready();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2966
		})();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2967
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2968
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2969
	// A fallback to window.onload, that will always work
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2970
	jQuery.event.add( window, "load", jQuery.ready );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2971
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2972
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2973
jQuery.each( ("blur,focus,load,resize,scroll,unload,click,dblclick," +
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2974
	"mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave," +
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2975
	"change,select,submit,keydown,keypress,keyup,error").split(","), function(i, name){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2976
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2977
	// Handle event binding
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2978
	jQuery.fn[name] = function(fn){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2979
		return fn ? this.bind(name, fn) : this.trigger(name);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2980
	};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2981
});
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2982
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2983
// Prevent memory leaks in IE
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2984
// And prevent errors on refresh with events like mouseover in other browsers
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2985
// Window isn't included so as not to unbind existing unload events
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2986
jQuery( window ).bind( 'unload', function(){ 
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2987
	for ( var id in jQuery.cache )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2988
		// Skip the window
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2989
		if ( id != 1 && jQuery.cache[ id ].handle )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2990
			jQuery.event.remove( jQuery.cache[ id ].handle.elem );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2991
}); 
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2992
(function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2993
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2994
	jQuery.support = {};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2995
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2996
	var root = document.documentElement,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2997
		script = document.createElement("script"),
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2998
		div = document.createElement("div"),
0d28b7c10758 First commit
ymh
parents:
diff changeset
  2999
		id = "script" + (new Date).getTime();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3000
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3001
	div.style.display = "none";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3002
	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>';
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3003
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3004
	var all = div.getElementsByTagName("*"),
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3005
		a = div.getElementsByTagName("a")[0];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3006
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3007
	// Can't get basic test support
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3008
	if ( !all || !all.length || !a ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3009
		return;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3010
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3011
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3012
	jQuery.support = {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3013
		// IE strips leading whitespace when .innerHTML is used
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3014
		leadingWhitespace: div.firstChild.nodeType == 3,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3015
		
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3016
		// Make sure that tbody elements aren't automatically inserted
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3017
		// IE will insert them into empty tables
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3018
		tbody: !div.getElementsByTagName("tbody").length,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3019
		
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3020
		// Make sure that you can get all elements in an <object> element
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3021
		// IE 7 always returns no results
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3022
		objectAll: !!div.getElementsByTagName("object")[0]
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3023
			.getElementsByTagName("*").length,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3024
		
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3025
		// Make sure that link elements get serialized correctly by innerHTML
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3026
		// This requires a wrapper element in IE
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3027
		htmlSerialize: !!div.getElementsByTagName("link").length,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3028
		
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3029
		// Get the style information from getAttribute
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3030
		// (IE uses .cssText insted)
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3031
		style: /red/.test( a.getAttribute("style") ),
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3032
		
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3033
		// Make sure that URLs aren't manipulated
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3034
		// (IE normalizes it by default)
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3035
		hrefNormalized: a.getAttribute("href") === "/a",
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3036
		
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3037
		// Make sure that element opacity exists
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3038
		// (IE uses filter instead)
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3039
		opacity: a.style.opacity === "0.5",
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3040
		
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3041
		// Verify style float existence
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3042
		// (IE uses styleFloat instead of cssFloat)
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3043
		cssFloat: !!a.style.cssFloat,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3044
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3045
		// Will be defined later
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3046
		scriptEval: false,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3047
		noCloneEvent: true,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3048
		boxModel: null
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3049
	};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3050
	
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3051
	script.type = "text/javascript";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3052
	try {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3053
		script.appendChild( document.createTextNode( "window." + id + "=1;" ) );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3054
	} catch(e){}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3055
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3056
	root.insertBefore( script, root.firstChild );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3057
	
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3058
	// Make sure that the execution of code works by injecting a script
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3059
	// tag with appendChild/createTextNode
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3060
	// (IE doesn't support this, fails, and uses .text instead)
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3061
	if ( window[ id ] ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3062
		jQuery.support.scriptEval = true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3063
		delete window[ id ];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3064
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3065
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3066
	root.removeChild( script );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3067
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3068
	if ( div.attachEvent && div.fireEvent ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3069
		div.attachEvent("onclick", function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3070
			// Cloning a node shouldn't copy over any
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3071
			// bound event handlers (IE does this)
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3072
			jQuery.support.noCloneEvent = false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3073
			div.detachEvent("onclick", arguments.callee);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3074
		});
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3075
		div.cloneNode(true).fireEvent("onclick");
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3076
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3077
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3078
	// Figure out if the W3C box model works as expected
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3079
	// document.body must exist before we can do this
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3080
	jQuery(function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3081
		var div = document.createElement("div");
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3082
		div.style.width = "1px";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3083
		div.style.paddingLeft = "1px";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3084
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3085
		document.body.appendChild( div );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3086
		jQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3087
		document.body.removeChild( div );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3088
	});
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3089
})();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3090
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3091
var styleFloat = jQuery.support.cssFloat ? "cssFloat" : "styleFloat";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3092
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3093
jQuery.props = {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3094
	"for": "htmlFor",
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3095
	"class": "className",
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3096
	"float": styleFloat,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3097
	cssFloat: styleFloat,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3098
	styleFloat: styleFloat,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3099
	readonly: "readOnly",
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3100
	maxlength: "maxLength",
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3101
	cellspacing: "cellSpacing",
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3102
	rowspan: "rowSpan",
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3103
	tabindex: "tabIndex"
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3104
};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3105
jQuery.fn.extend({
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3106
	// Keep a copy of the old load
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3107
	_load: jQuery.fn.load,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3108
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3109
	load: function( url, params, callback ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3110
		if ( typeof url !== "string" )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3111
			return this._load( url );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3112
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3113
		var off = url.indexOf(" ");
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3114
		if ( off >= 0 ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3115
			var selector = url.slice(off, url.length);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3116
			url = url.slice(0, off);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3117
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3118
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3119
		// Default to a GET request
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3120
		var type = "GET";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3121
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3122
		// If the second parameter was provided
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3123
		if ( params )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3124
			// If it's a function
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3125
			if ( jQuery.isFunction( params ) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3126
				// We assume that it's the callback
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3127
				callback = params;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3128
				params = null;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3129
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3130
			// Otherwise, build a param string
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3131
			} else if( typeof params === "object" ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3132
				params = jQuery.param( params );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3133
				type = "POST";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3134
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3135
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3136
		var self = this;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3137
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3138
		// Request the remote document
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3139
		jQuery.ajax({
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3140
			url: url,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3141
			type: type,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3142
			dataType: "html",
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3143
			data: params,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3144
			complete: function(res, status){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3145
				// If successful, inject the HTML into all the matched elements
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3146
				if ( status == "success" || status == "notmodified" )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3147
					// See if a selector was specified
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3148
					self.html( selector ?
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3149
						// Create a dummy div to hold the results
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3150
						jQuery("<div/>")
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3151
							// inject the contents of the document in, removing the scripts
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3152
							// to avoid any 'Permission Denied' errors in IE
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3153
							.append(res.responseText.replace(/<script(.|\s)*?\/script>/g, ""))
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3154
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3155
							// Locate the specified elements
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3156
							.find(selector) :
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3157
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3158
						// If not, just inject the full result
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3159
						res.responseText );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3160
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3161
				if( callback )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3162
					self.each( callback, [res.responseText, status, res] );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3163
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3164
		});
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3165
		return this;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3166
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3167
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3168
	serialize: function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3169
		return jQuery.param(this.serializeArray());
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3170
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3171
	serializeArray: function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3172
		return this.map(function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3173
			return this.elements ? jQuery.makeArray(this.elements) : this;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3174
		})
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3175
		.filter(function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3176
			return this.name && !this.disabled &&
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3177
				(this.checked || /select|textarea/i.test(this.nodeName) ||
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3178
					/text|hidden|password/i.test(this.type));
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3179
		})
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3180
		.map(function(i, elem){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3181
			var val = jQuery(this).val();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3182
			return val == null ? null :
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3183
				jQuery.isArray(val) ?
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3184
					jQuery.map( val, function(val, i){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3185
						return {name: elem.name, value: val};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3186
					}) :
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3187
					{name: elem.name, value: val};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3188
		}).get();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3189
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3190
});
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3191
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3192
// Attach a bunch of functions for handling common AJAX events
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3193
jQuery.each( "ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","), function(i,o){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3194
	jQuery.fn[o] = function(f){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3195
		return this.bind(o, f);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3196
	};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3197
});
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3198
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3199
var jsc = now();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3200
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3201
jQuery.extend({
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3202
  
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3203
	get: function( url, data, callback, type ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3204
		// shift arguments if data argument was ommited
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3205
		if ( jQuery.isFunction( data ) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3206
			callback = data;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3207
			data = null;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3208
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3209
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3210
		return jQuery.ajax({
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3211
			type: "GET",
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3212
			url: url,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3213
			data: data,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3214
			success: callback,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3215
			dataType: type
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3216
		});
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3217
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3218
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3219
	getScript: function( url, callback ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3220
		return jQuery.get(url, null, callback, "script");
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3221
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3222
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3223
	getJSON: function( url, data, callback ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3224
		return jQuery.get(url, data, callback, "json");
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3225
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3226
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3227
	post: function( url, data, callback, type ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3228
		if ( jQuery.isFunction( data ) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3229
			callback = data;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3230
			data = {};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3231
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3232
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3233
		return jQuery.ajax({
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3234
			type: "POST",
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3235
			url: url,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3236
			data: data,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3237
			success: callback,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3238
			dataType: type
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3239
		});
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3240
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3241
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3242
	ajaxSetup: function( settings ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3243
		jQuery.extend( jQuery.ajaxSettings, settings );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3244
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3245
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3246
	ajaxSettings: {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3247
		url: location.href,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3248
		global: true,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3249
		type: "GET",
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3250
		contentType: "application/x-www-form-urlencoded",
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3251
		processData: true,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3252
		async: true,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3253
		/*
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3254
		timeout: 0,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3255
		data: null,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3256
		username: null,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3257
		password: null,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3258
		*/
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3259
		// Create the request object; Microsoft failed to properly
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3260
		// implement the XMLHttpRequest in IE7, so we use the ActiveXObject when it is available
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3261
		// This function can be overriden by calling jQuery.ajaxSetup
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3262
		xhr:function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3263
			return window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3264
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3265
		accepts: {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3266
			xml: "application/xml, text/xml",
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3267
			html: "text/html",
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3268
			script: "text/javascript, application/javascript",
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3269
			json: "application/json, text/javascript",
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3270
			text: "text/plain",
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3271
			_default: "*/*"
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3272
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3273
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3274
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3275
	// Last-Modified header cache for next request
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3276
	lastModified: {},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3277
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3278
	ajax: function( s ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3279
		// Extend the settings, but re-extend 's' so that it can be
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3280
		// checked again later (in the test suite, specifically)
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3281
		s = jQuery.extend(true, s, jQuery.extend(true, {}, jQuery.ajaxSettings, s));
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3282
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3283
		var jsonp, jsre = /=\?(&|$)/g, status, data,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3284
			type = s.type.toUpperCase();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3285
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3286
		// convert data if not already a string
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3287
		if ( s.data && s.processData && typeof s.data !== "string" )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3288
			s.data = jQuery.param(s.data);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3289
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3290
		// Handle JSONP Parameter Callbacks
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3291
		if ( s.dataType == "jsonp" ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3292
			if ( type == "GET" ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3293
				if ( !s.url.match(jsre) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3294
					s.url += (s.url.match(/\?/) ? "&" : "?") + (s.jsonp || "callback") + "=?";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3295
			} else if ( !s.data || !s.data.match(jsre) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3296
				s.data = (s.data ? s.data + "&" : "") + (s.jsonp || "callback") + "=?";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3297
			s.dataType = "json";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3298
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3299
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3300
		// Build temporary JSONP function
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3301
		if ( s.dataType == "json" && (s.data && s.data.match(jsre) || s.url.match(jsre)) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3302
			jsonp = "jsonp" + jsc++;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3303
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3304
			// Replace the =? sequence both in the query string and the data
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3305
			if ( s.data )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3306
				s.data = (s.data + "").replace(jsre, "=" + jsonp + "$1");
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3307
			s.url = s.url.replace(jsre, "=" + jsonp + "$1");
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3308
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3309
			// We need to make sure
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3310
			// that a JSONP style response is executed properly
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3311
			s.dataType = "script";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3312
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3313
			// Handle JSONP-style loading
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3314
			window[ jsonp ] = function(tmp){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3315
				data = tmp;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3316
				success();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3317
				complete();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3318
				// Garbage collect
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3319
				window[ jsonp ] = undefined;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3320
				try{ delete window[ jsonp ]; } catch(e){}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3321
				if ( head )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3322
					head.removeChild( script );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3323
			};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3324
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3325
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3326
		if ( s.dataType == "script" && s.cache == null )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3327
			s.cache = false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3328
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3329
		if ( s.cache === false && type == "GET" ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3330
			var ts = now();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3331
			// try replacing _= if it is there
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3332
			var ret = s.url.replace(/(\?|&)_=.*?(&|$)/, "$1_=" + ts + "$2");
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3333
			// if nothing was replaced, add timestamp to the end
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3334
			s.url = ret + ((ret == s.url) ? (s.url.match(/\?/) ? "&" : "?") + "_=" + ts : "");
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3335
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3336
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3337
		// If data is available, append data to url for get requests
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3338
		if ( s.data && type == "GET" ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3339
			s.url += (s.url.match(/\?/) ? "&" : "?") + s.data;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3340
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3341
			// IE likes to send both get and post data, prevent this
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3342
			s.data = null;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3343
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3344
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3345
		// Watch for a new set of requests
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3346
		if ( s.global && ! jQuery.active++ )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3347
			jQuery.event.trigger( "ajaxStart" );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3348
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3349
		// Matches an absolute URL, and saves the domain
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3350
		var parts = /^(\w+:)?\/\/([^\/?#]+)/.exec( s.url );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3351
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3352
		// If we're requesting a remote document
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3353
		// and trying to load JSON or Script with a GET
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3354
		if ( s.dataType == "script" && type == "GET" && parts
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3355
			&& ( parts[1] && parts[1] != location.protocol || parts[2] != location.host )){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3356
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3357
			var head = document.getElementsByTagName("head")[0];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3358
			var script = document.createElement("script");
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3359
			script.src = s.url;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3360
			if (s.scriptCharset)
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3361
				script.charset = s.scriptCharset;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3362
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3363
			// Handle Script loading
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3364
			if ( !jsonp ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3365
				var done = false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3366
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3367
				// Attach handlers for all browsers
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3368
				script.onload = script.onreadystatechange = function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3369
					if ( !done && (!this.readyState ||
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3370
							this.readyState == "loaded" || this.readyState == "complete") ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3371
						done = true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3372
						success();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3373
						complete();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3374
						head.removeChild( script );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3375
					}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3376
				};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3377
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3378
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3379
			head.appendChild(script);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3380
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3381
			// We handle everything using the script element injection
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3382
			return undefined;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3383
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3384
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3385
		var requestDone = false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3386
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3387
		// Create the request object
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3388
		var xhr = s.xhr();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3389
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3390
		// Open the socket
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3391
		// Passing null username, generates a login popup on Opera (#2865)
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3392
		if( s.username )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3393
			xhr.open(type, s.url, s.async, s.username, s.password);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3394
		else
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3395
			xhr.open(type, s.url, s.async);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3396
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3397
		// Need an extra try/catch for cross domain requests in Firefox 3
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3398
		try {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3399
			// Set the correct header, if data is being sent
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3400
			if ( s.data )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3401
				xhr.setRequestHeader("Content-Type", s.contentType);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3402
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3403
			// Set the If-Modified-Since header, if ifModified mode.
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3404
			if ( s.ifModified )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3405
				xhr.setRequestHeader("If-Modified-Since",
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3406
					jQuery.lastModified[s.url] || "Thu, 01 Jan 1970 00:00:00 GMT" );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3407
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3408
			// Set header so the called script knows that it's an XMLHttpRequest
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3409
			xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3410
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3411
			// Set the Accepts header for the server, depending on the dataType
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3412
			xhr.setRequestHeader("Accept", s.dataType && s.accepts[ s.dataType ] ?
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3413
				s.accepts[ s.dataType ] + ", */*" :
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3414
				s.accepts._default );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3415
		} catch(e){}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3416
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3417
		// Allow custom headers/mimetypes and early abort
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3418
		if ( s.beforeSend && s.beforeSend(xhr, s) === false ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3419
			// Handle the global AJAX counter
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3420
			if ( s.global && ! --jQuery.active )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3421
				jQuery.event.trigger( "ajaxStop" );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3422
			// close opended socket
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3423
			xhr.abort();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3424
			return false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3425
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3426
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3427
		if ( s.global )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3428
			jQuery.event.trigger("ajaxSend", [xhr, s]);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3429
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3430
		// Wait for a response to come back
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3431
		var onreadystatechange = function(isTimeout){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3432
			// The request was aborted, clear the interval and decrement jQuery.active
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3433
			if (xhr.readyState == 0) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3434
				if (ival) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3435
					// clear poll interval
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3436
					clearInterval(ival);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3437
					ival = null;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3438
					// Handle the global AJAX counter
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3439
					if ( s.global && ! --jQuery.active )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3440
						jQuery.event.trigger( "ajaxStop" );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3441
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3442
			// The transfer is complete and the data is available, or the request timed out
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3443
			} else if ( !requestDone && xhr && (xhr.readyState == 4 || isTimeout == "timeout") ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3444
				requestDone = true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3445
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3446
				// clear poll interval
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3447
				if (ival) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3448
					clearInterval(ival);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3449
					ival = null;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3450
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3451
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3452
				status = isTimeout == "timeout" ? "timeout" :
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3453
					!jQuery.httpSuccess( xhr ) ? "error" :
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3454
					s.ifModified && jQuery.httpNotModified( xhr, s.url ) ? "notmodified" :
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3455
					"success";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3456
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3457
				if ( status == "success" ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3458
					// Watch for, and catch, XML document parse errors
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3459
					try {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3460
						// process the data (runs the xml through httpData regardless of callback)
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3461
						data = jQuery.httpData( xhr, s.dataType, s );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3462
					} catch(e) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3463
						status = "parsererror";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3464
					}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3465
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3466
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3467
				// Make sure that the request was successful or notmodified
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3468
				if ( status == "success" ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3469
					// Cache Last-Modified header, if ifModified mode.
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3470
					var modRes;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3471
					try {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3472
						modRes = xhr.getResponseHeader("Last-Modified");
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3473
					} catch(e) {} // swallow exception thrown by FF if header is not available
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3474
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3475
					if ( s.ifModified && modRes )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3476
						jQuery.lastModified[s.url] = modRes;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3477
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3478
					// JSONP handles its own success callback
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3479
					if ( !jsonp )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3480
						success();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3481
				} else
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3482
					jQuery.handleError(s, xhr, status);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3483
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3484
				// Fire the complete handlers
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3485
				complete();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3486
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3487
				if ( isTimeout )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3488
					xhr.abort();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3489
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3490
				// Stop memory leaks
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3491
				if ( s.async )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3492
					xhr = null;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3493
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3494
		};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3495
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3496
		if ( s.async ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3497
			// don't attach the handler to the request, just poll it instead
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3498
			var ival = setInterval(onreadystatechange, 13);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3499
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3500
			// Timeout checker
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3501
			if ( s.timeout > 0 )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3502
				setTimeout(function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3503
					// Check to see if the request is still happening
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3504
					if ( xhr && !requestDone )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3505
						onreadystatechange( "timeout" );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3506
				}, s.timeout);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3507
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3508
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3509
		// Send the data
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3510
		try {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3511
			xhr.send(s.data);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3512
		} catch(e) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3513
			jQuery.handleError(s, xhr, null, e);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3514
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3515
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3516
		// firefox 1.5 doesn't fire statechange for sync requests
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3517
		if ( !s.async )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3518
			onreadystatechange();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3519
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3520
		function success(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3521
			// If a local callback was specified, fire it and pass it the data
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3522
			if ( s.success )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3523
				s.success( data, status );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3524
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3525
			// Fire the global callback
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3526
			if ( s.global )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3527
				jQuery.event.trigger( "ajaxSuccess", [xhr, s] );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3528
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3529
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3530
		function complete(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3531
			// Process result
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3532
			if ( s.complete )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3533
				s.complete(xhr, status);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3534
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3535
			// The request was completed
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3536
			if ( s.global )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3537
				jQuery.event.trigger( "ajaxComplete", [xhr, s] );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3538
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3539
			// Handle the global AJAX counter
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3540
			if ( s.global && ! --jQuery.active )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3541
				jQuery.event.trigger( "ajaxStop" );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3542
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3543
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3544
		// return XMLHttpRequest to allow aborting the request etc.
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3545
		return xhr;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3546
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3547
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3548
	handleError: function( s, xhr, status, e ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3549
		// If a local callback was specified, fire it
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3550
		if ( s.error ) s.error( xhr, status, e );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3551
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3552
		// Fire the global callback
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3553
		if ( s.global )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3554
			jQuery.event.trigger( "ajaxError", [xhr, s, e] );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3555
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3556
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3557
	// Counter for holding the number of active queries
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3558
	active: 0,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3559
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3560
	// Determines if an XMLHttpRequest was successful or not
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3561
	httpSuccess: function( xhr ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3562
		try {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3563
			// IE error sometimes returns 1223 when it should be 204 so treat it as success, see #1450
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3564
			return !xhr.status && location.protocol == "file:" ||
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3565
				( xhr.status >= 200 && xhr.status < 300 ) || xhr.status == 304 || xhr.status == 1223;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3566
		} catch(e){}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3567
		return false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3568
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3569
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3570
	// Determines if an XMLHttpRequest returns NotModified
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3571
	httpNotModified: function( xhr, url ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3572
		try {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3573
			var xhrRes = xhr.getResponseHeader("Last-Modified");
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3574
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3575
			// Firefox always returns 200. check Last-Modified date
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3576
			return xhr.status == 304 || xhrRes == jQuery.lastModified[url];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3577
		} catch(e){}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3578
		return false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3579
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3580
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3581
	httpData: function( xhr, type, s ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3582
		var ct = xhr.getResponseHeader("content-type"),
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3583
			xml = type == "xml" || !type && ct && ct.indexOf("xml") >= 0,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3584
			data = xml ? xhr.responseXML : xhr.responseText;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3585
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3586
		if ( xml && data.documentElement.tagName == "parsererror" )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3587
			throw "parsererror";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3588
			
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3589
		// Allow a pre-filtering function to sanitize the response
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3590
		// s != null is checked to keep backwards compatibility
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3591
		if( s && s.dataFilter )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3592
			data = s.dataFilter( data, type );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3593
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3594
		// The filter can actually parse the response
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3595
		if( typeof data === "string" ){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3596
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3597
			// If the type is "script", eval it in global context
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3598
			if ( type == "script" )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3599
				jQuery.globalEval( data );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3600
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3601
			// Get the JavaScript object, if JSON is used.
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3602
			if ( type == "json" )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3603
				data = window["eval"]("(" + data + ")");
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3604
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3605
		
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3606
		return data;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3607
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3608
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3609
	// Serialize an array of form elements or a set of
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3610
	// key/values into a query string
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3611
	param: function( a ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3612
		var s = [ ];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3613
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3614
		function add( key, value ){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3615
			s[ s.length ] = encodeURIComponent(key) + '=' + encodeURIComponent(value);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3616
		};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3617
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3618
		// If an array was passed in, assume that it is an array
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3619
		// of form elements
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3620
		if ( jQuery.isArray(a) || a.jquery )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3621
			// Serialize the form elements
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3622
			jQuery.each( a, function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3623
				add( this.name, this.value );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3624
			});
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3625
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3626
		// Otherwise, assume that it's an object of key/value pairs
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3627
		else
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3628
			// Serialize the key/values
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3629
			for ( var j in a )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3630
				// If the value is an array then the key names need to be repeated
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3631
				if ( jQuery.isArray(a[j]) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3632
					jQuery.each( a[j], function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3633
						add( j, this );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3634
					});
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3635
				else
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3636
					add( j, jQuery.isFunction(a[j]) ? a[j]() : a[j] );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3637
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3638
		// Return the resulting serialization
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3639
		return s.join("&").replace(/%20/g, "+");
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3640
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3641
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3642
});
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3643
var elemdisplay = {},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3644
	timerId,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3645
	fxAttrs = [
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3646
		// height animations
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3647
		[ "height", "marginTop", "marginBottom", "paddingTop", "paddingBottom" ],
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3648
		// width animations
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3649
		[ "width", "marginLeft", "marginRight", "paddingLeft", "paddingRight" ],
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3650
		// opacity animations
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3651
		[ "opacity" ]
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3652
	];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3653
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3654
function genFx( type, num ){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3655
	var obj = {};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3656
	jQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3657
		obj[ this ] = type;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3658
	});
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3659
	return obj;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3660
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3661
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3662
jQuery.fn.extend({
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3663
	show: function(speed,callback){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3664
		if ( speed ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3665
			return this.animate( genFx("show", 3), speed, callback);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3666
		} else {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3667
			for ( var i = 0, l = this.length; i < l; i++ ){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3668
				var old = jQuery.data(this[i], "olddisplay");
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3669
				
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3670
				this[i].style.display = old || "";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3671
				
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3672
				if ( jQuery.css(this[i], "display") === "none" ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3673
					var tagName = this[i].tagName, display;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3674
					
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3675
					if ( elemdisplay[ tagName ] ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3676
						display = elemdisplay[ tagName ];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3677
					} else {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3678
						var elem = jQuery("<" + tagName + " />").appendTo("body");
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3679
						
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3680
						display = elem.css("display");
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3681
						if ( display === "none" )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3682
							display = "block";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3683
						
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3684
						elem.remove();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3685
						
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3686
						elemdisplay[ tagName ] = display;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3687
					}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3688
					
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3689
					this[i].style.display = jQuery.data(this[i], "olddisplay", display);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3690
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3691
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3692
			
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3693
			return this;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3694
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3695
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3696
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3697
	hide: function(speed,callback){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3698
		if ( speed ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3699
			return this.animate( genFx("hide", 3), speed, callback);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3700
		} else {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3701
			for ( var i = 0, l = this.length; i < l; i++ ){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3702
				var old = jQuery.data(this[i], "olddisplay");
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3703
				if ( !old && old !== "none" )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3704
					jQuery.data(this[i], "olddisplay", jQuery.css(this[i], "display"));
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3705
				this[i].style.display = "none";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3706
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3707
			return this;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3708
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3709
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3710
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3711
	// Save the old toggle function
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3712
	_toggle: jQuery.fn.toggle,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3713
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3714
	toggle: function( fn, fn2 ){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3715
		var bool = typeof fn === "boolean";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3716
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3717
		return jQuery.isFunction(fn) && jQuery.isFunction(fn2) ?
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3718
			this._toggle.apply( this, arguments ) :
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3719
			fn == null || bool ?
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3720
				this.each(function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3721
					var state = bool ? fn : jQuery(this).is(":hidden");
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3722
					jQuery(this)[ state ? "show" : "hide" ]();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3723
				}) :
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3724
				this.animate(genFx("toggle", 3), fn, fn2);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3725
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3726
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3727
	fadeTo: function(speed,to,callback){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3728
		return this.animate({opacity: to}, speed, callback);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3729
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3730
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3731
	animate: function( prop, speed, easing, callback ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3732
		var optall = jQuery.speed(speed, easing, callback);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3733
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3734
		return this[ optall.queue === false ? "each" : "queue" ](function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3735
		
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3736
			var opt = jQuery.extend({}, optall), p,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3737
				hidden = this.nodeType == 1 && jQuery(this).is(":hidden"),
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3738
				self = this;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3739
	
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3740
			for ( p in prop ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3741
				if ( prop[p] == "hide" && hidden || prop[p] == "show" && !hidden )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3742
					return opt.complete.call(this);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3743
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3744
				if ( ( p == "height" || p == "width" ) && this.style ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3745
					// Store display property
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3746
					opt.display = jQuery.css(this, "display");
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3747
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3748
					// Make sure that nothing sneaks out
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3749
					opt.overflow = this.style.overflow;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3750
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3751
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3752
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3753
			if ( opt.overflow != null )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3754
				this.style.overflow = "hidden";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3755
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3756
			opt.curAnim = jQuery.extend({}, prop);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3757
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3758
			jQuery.each( prop, function(name, val){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3759
				var e = new jQuery.fx( self, opt, name );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3760
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3761
				if ( /toggle|show|hide/.test(val) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3762
					e[ val == "toggle" ? hidden ? "show" : "hide" : val ]( prop );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3763
				else {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3764
					var parts = val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3765
						start = e.cur(true) || 0;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3766
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3767
					if ( parts ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3768
						var end = parseFloat(parts[2]),
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3769
							unit = parts[3] || "px";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3770
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3771
						// We need to compute starting value
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3772
						if ( unit != "px" ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3773
							self.style[ name ] = (end || 1) + unit;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3774
							start = ((end || 1) / e.cur(true)) * start;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3775
							self.style[ name ] = start + unit;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3776
						}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3777
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3778
						// If a +=/-= token was provided, we're doing a relative animation
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3779
						if ( parts[1] )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3780
							end = ((parts[1] == "-=" ? -1 : 1) * end) + start;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3781
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3782
						e.custom( start, end, unit );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3783
					} else
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3784
						e.custom( start, val, "" );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3785
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3786
			});
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3787
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3788
			// For JS strict compliance
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3789
			return true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3790
		});
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3791
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3792
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3793
	stop: function(clearQueue, gotoEnd){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3794
		var timers = jQuery.timers;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3795
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3796
		if (clearQueue)
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3797
			this.queue([]);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3798
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3799
		this.each(function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3800
			// go in reverse order so anything added to the queue during the loop is ignored
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3801
			for ( var i = timers.length - 1; i >= 0; i-- )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3802
				if ( timers[i].elem == this ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3803
					if (gotoEnd)
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3804
						// force the next step to be the last
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3805
						timers[i](true);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3806
					timers.splice(i, 1);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3807
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3808
		});
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3809
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3810
		// start the next in the queue if the last step wasn't forced
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3811
		if (!gotoEnd)
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3812
			this.dequeue();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3813
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3814
		return this;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3815
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3816
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3817
});
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3818
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3819
// Generate shortcuts for custom animations
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3820
jQuery.each({
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3821
	slideDown: genFx("show", 1),
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3822
	slideUp: genFx("hide", 1),
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3823
	slideToggle: genFx("toggle", 1),
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3824
	fadeIn: { opacity: "show" },
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3825
	fadeOut: { opacity: "hide" }
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3826
}, function( name, props ){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3827
	jQuery.fn[ name ] = function( speed, callback ){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3828
		return this.animate( props, speed, callback );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3829
	};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3830
});
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3831
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3832
jQuery.extend({
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3833
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3834
	speed: function(speed, easing, fn) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3835
		var opt = typeof speed === "object" ? speed : {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3836
			complete: fn || !fn && easing ||
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3837
				jQuery.isFunction( speed ) && speed,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3838
			duration: speed,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3839
			easing: fn && easing || easing && !jQuery.isFunction(easing) && easing
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3840
		};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3841
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3842
		opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3843
			jQuery.fx.speeds[opt.duration] || jQuery.fx.speeds._default;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3844
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3845
		// Queueing
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3846
		opt.old = opt.complete;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3847
		opt.complete = function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3848
			if ( opt.queue !== false )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3849
				jQuery(this).dequeue();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3850
			if ( jQuery.isFunction( opt.old ) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3851
				opt.old.call( this );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3852
		};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3853
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3854
		return opt;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3855
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3856
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3857
	easing: {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3858
		linear: function( p, n, firstNum, diff ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3859
			return firstNum + diff * p;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3860
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3861
		swing: function( p, n, firstNum, diff ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3862
			return ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3863
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3864
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3865
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3866
	timers: [],
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3867
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3868
	fx: function( elem, options, prop ){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3869
		this.options = options;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3870
		this.elem = elem;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3871
		this.prop = prop;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3872
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3873
		if ( !options.orig )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3874
			options.orig = {};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3875
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3876
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3877
});
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3878
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3879
jQuery.fx.prototype = {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3880
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3881
	// Simple function for setting a style value
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3882
	update: function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3883
		if ( this.options.step )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3884
			this.options.step.call( this.elem, this.now, this );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3885
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3886
		(jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3887
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3888
		// Set display property to block for height/width animations
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3889
		if ( ( this.prop == "height" || this.prop == "width" ) && this.elem.style )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3890
			this.elem.style.display = "block";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3891
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3892
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3893
	// Get the current size
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3894
	cur: function(force){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3895
		if ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3896
			return this.elem[ this.prop ];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3897
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3898
		var r = parseFloat(jQuery.css(this.elem, this.prop, force));
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3899
		return r && r > -10000 ? r : parseFloat(jQuery.curCSS(this.elem, this.prop)) || 0;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3900
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3901
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3902
	// Start an animation from one number to another
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3903
	custom: function(from, to, unit){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3904
		this.startTime = now();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3905
		this.start = from;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3906
		this.end = to;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3907
		this.unit = unit || this.unit || "px";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3908
		this.now = this.start;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3909
		this.pos = this.state = 0;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3910
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3911
		var self = this;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3912
		function t(gotoEnd){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3913
			return self.step(gotoEnd);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3914
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3915
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3916
		t.elem = this.elem;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3917
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3918
		if ( t() && jQuery.timers.push(t) == 1 ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3919
			timerId = setInterval(function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3920
				var timers = jQuery.timers;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3921
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3922
				for ( var i = 0; i < timers.length; i++ )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3923
					if ( !timers[i]() )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3924
						timers.splice(i--, 1);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3925
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3926
				if ( !timers.length ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3927
					clearInterval( timerId );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3928
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3929
			}, 13);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3930
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3931
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3932
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3933
	// Simple 'show' function
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3934
	show: function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3935
		// Remember where we started, so that we can go back to it later
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3936
		this.options.orig[this.prop] = jQuery.attr( this.elem.style, this.prop );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3937
		this.options.show = true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3938
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3939
		// Begin the animation
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3940
		// Make sure that we start at a small width/height to avoid any
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3941
		// flash of content
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3942
		this.custom(this.prop == "width" || this.prop == "height" ? 1 : 0, this.cur());
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3943
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3944
		// Start by showing the element
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3945
		jQuery(this.elem).show();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3946
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3947
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3948
	// Simple 'hide' function
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3949
	hide: function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3950
		// Remember where we started, so that we can go back to it later
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3951
		this.options.orig[this.prop] = jQuery.attr( this.elem.style, this.prop );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3952
		this.options.hide = true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3953
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3954
		// Begin the animation
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3955
		this.custom(this.cur(), 0);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3956
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3957
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3958
	// Each step of an animation
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3959
	step: function(gotoEnd){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3960
		var t = now();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3961
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3962
		if ( gotoEnd || t >= this.options.duration + this.startTime ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3963
			this.now = this.end;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3964
			this.pos = this.state = 1;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3965
			this.update();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3966
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3967
			this.options.curAnim[ this.prop ] = true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3968
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3969
			var done = true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3970
			for ( var i in this.options.curAnim )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3971
				if ( this.options.curAnim[i] !== true )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3972
					done = false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3973
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3974
			if ( done ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3975
				if ( this.options.display != null ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3976
					// Reset the overflow
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3977
					this.elem.style.overflow = this.options.overflow;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3978
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3979
					// Reset the display
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3980
					this.elem.style.display = this.options.display;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3981
					if ( jQuery.css(this.elem, "display") == "none" )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3982
						this.elem.style.display = "block";
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3983
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3984
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3985
				// Hide the element if the "hide" operation was done
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3986
				if ( this.options.hide )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3987
					jQuery(this.elem).hide();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3988
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3989
				// Reset the properties, if the item has been hidden or shown
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3990
				if ( this.options.hide || this.options.show )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3991
					for ( var p in this.options.curAnim )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3992
						jQuery.attr(this.elem.style, p, this.options.orig[p]);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3993
					
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3994
				// Execute the complete function
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3995
				this.options.complete.call( this.elem );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3996
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3997
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3998
			return false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  3999
		} else {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4000
			var n = t - this.startTime;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4001
			this.state = n / this.options.duration;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4002
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4003
			// Perform the easing function, defaults to swing
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4004
			this.pos = jQuery.easing[this.options.easing || (jQuery.easing.swing ? "swing" : "linear")](this.state, n, 0, 1, this.options.duration);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4005
			this.now = this.start + ((this.end - this.start) * this.pos);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4006
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4007
			// Perform the next step of the animation
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4008
			this.update();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4009
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4010
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4011
		return true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4012
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4013
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4014
};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4015
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4016
jQuery.extend( jQuery.fx, {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4017
	speeds:{
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4018
		slow: 600,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4019
 		fast: 200,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4020
 		// Default speed
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4021
 		_default: 400
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4022
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4023
	step: {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4024
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4025
		opacity: function(fx){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4026
			jQuery.attr(fx.elem.style, "opacity", fx.now);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4027
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4028
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4029
		_default: function(fx){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4030
			if ( fx.elem.style && fx.elem.style[ fx.prop ] != null )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4031
				fx.elem.style[ fx.prop ] = fx.now + fx.unit;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4032
			else
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4033
				fx.elem[ fx.prop ] = fx.now;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4034
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4035
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4036
});
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4037
if ( document.documentElement["getBoundingClientRect"] )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4038
	jQuery.fn.offset = function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4039
		if ( !this[0] ) return { top: 0, left: 0 };
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4040
		if ( this[0] === this[0].ownerDocument.body ) return jQuery.offset.bodyOffset( this[0] );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4041
		var box  = this[0].getBoundingClientRect(), doc = this[0].ownerDocument, body = doc.body, docElem = doc.documentElement,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4042
			clientTop = docElem.clientTop || body.clientTop || 0, clientLeft = docElem.clientLeft || body.clientLeft || 0,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4043
			top  = box.top  + (self.pageYOffset || jQuery.boxModel && docElem.scrollTop  || body.scrollTop ) - clientTop,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4044
			left = box.left + (self.pageXOffset || jQuery.boxModel && docElem.scrollLeft || body.scrollLeft) - clientLeft;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4045
		return { top: top, left: left };
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4046
	};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4047
else 
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4048
	jQuery.fn.offset = function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4049
		if ( !this[0] ) return { top: 0, left: 0 };
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4050
		if ( this[0] === this[0].ownerDocument.body ) return jQuery.offset.bodyOffset( this[0] );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4051
		jQuery.offset.initialized || jQuery.offset.initialize();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4052
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4053
		var elem = this[0], offsetParent = elem.offsetParent, prevOffsetParent = elem,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4054
			doc = elem.ownerDocument, computedStyle, docElem = doc.documentElement,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4055
			body = doc.body, defaultView = doc.defaultView,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4056
			prevComputedStyle = defaultView.getComputedStyle(elem, null),
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4057
			top = elem.offsetTop, left = elem.offsetLeft;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4058
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4059
		while ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4060
			computedStyle = defaultView.getComputedStyle(elem, null);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4061
			top -= elem.scrollTop, left -= elem.scrollLeft;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4062
			if ( elem === offsetParent ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4063
				top += elem.offsetTop, left += elem.offsetLeft;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4064
				if ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && /^t(able|d|h)$/i.test(elem.tagName)) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4065
					top  += parseInt( computedStyle.borderTopWidth,  10) || 0,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4066
					left += parseInt( computedStyle.borderLeftWidth, 10) || 0;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4067
				prevOffsetParent = offsetParent, offsetParent = elem.offsetParent;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4068
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4069
			if ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== "visible" )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4070
				top  += parseInt( computedStyle.borderTopWidth,  10) || 0,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4071
				left += parseInt( computedStyle.borderLeftWidth, 10) || 0;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4072
			prevComputedStyle = computedStyle;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4073
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4074
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4075
		if ( prevComputedStyle.position === "relative" || prevComputedStyle.position === "static" )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4076
			top  += body.offsetTop,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4077
			left += body.offsetLeft;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4078
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4079
		if ( prevComputedStyle.position === "fixed" )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4080
			top  += Math.max(docElem.scrollTop, body.scrollTop),
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4081
			left += Math.max(docElem.scrollLeft, body.scrollLeft);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4082
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4083
		return { top: top, left: left };
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4084
	};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4085
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4086
jQuery.offset = {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4087
	initialize: function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4088
		if ( this.initialized ) return;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4089
		var body = document.body, container = document.createElement('div'), innerDiv, checkDiv, table, td, rules, prop, bodyMarginTop = body.style.marginTop,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4090
			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>';
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4091
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4092
		rules = { position: 'absolute', top: 0, left: 0, margin: 0, border: 0, width: '1px', height: '1px', visibility: 'hidden' };
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4093
		for ( prop in rules ) container.style[prop] = rules[prop];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4094
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4095
		container.innerHTML = html;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4096
		body.insertBefore(container, body.firstChild);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4097
		innerDiv = container.firstChild, checkDiv = innerDiv.firstChild, td = innerDiv.nextSibling.firstChild.firstChild;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4098
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4099
		this.doesNotAddBorder = (checkDiv.offsetTop !== 5);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4100
		this.doesAddBorderForTableAndCells = (td.offsetTop === 5);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4101
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4102
		innerDiv.style.overflow = 'hidden', innerDiv.style.position = 'relative';
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4103
		this.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4104
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4105
		body.style.marginTop = '1px';
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4106
		this.doesNotIncludeMarginInBodyOffset = (body.offsetTop === 0);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4107
		body.style.marginTop = bodyMarginTop;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4108
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4109
		body.removeChild(container);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4110
		this.initialized = true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4111
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4112
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4113
	bodyOffset: function(body) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4114
		jQuery.offset.initialized || jQuery.offset.initialize();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4115
		var top = body.offsetTop, left = body.offsetLeft;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4116
		if ( jQuery.offset.doesNotIncludeMarginInBodyOffset )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4117
			top  += parseInt( jQuery.curCSS(body, 'marginTop',  true), 10 ) || 0,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4118
			left += parseInt( jQuery.curCSS(body, 'marginLeft', true), 10 ) || 0;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4119
		return { top: top, left: left };
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4120
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4121
};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4122
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4123
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4124
jQuery.fn.extend({
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4125
	position: function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4126
		var left = 0, top = 0, results;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4127
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4128
		if ( this[0] ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4129
			// Get *real* offsetParent
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4130
			var offsetParent = this.offsetParent(),
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4131
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4132
			// Get correct offsets
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4133
			offset       = this.offset(),
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4134
			parentOffset = /^body|html$/i.test(offsetParent[0].tagName) ? { top: 0, left: 0 } : offsetParent.offset();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4135
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4136
			// Subtract element margins
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4137
			// note: when an element has margin: auto the offsetLeft and marginLeft 
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4138
			// are the same in Safari causing offset.left to incorrectly be 0
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4139
			offset.top  -= num( this, 'marginTop'  );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4140
			offset.left -= num( this, 'marginLeft' );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4141
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4142
			// Add offsetParent borders
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4143
			parentOffset.top  += num( offsetParent, 'borderTopWidth'  );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4144
			parentOffset.left += num( offsetParent, 'borderLeftWidth' );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4145
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4146
			// Subtract the two offsets
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4147
			results = {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4148
				top:  offset.top  - parentOffset.top,
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4149
				left: offset.left - parentOffset.left
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4150
			};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4151
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4152
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4153
		return results;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4154
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4155
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4156
	offsetParent: function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4157
		var offsetParent = this[0].offsetParent || document.body;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4158
		while ( offsetParent && (!/^body|html$/i.test(offsetParent.tagName) && jQuery.css(offsetParent, 'position') == 'static') )
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4159
			offsetParent = offsetParent.offsetParent;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4160
		return jQuery(offsetParent);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4161
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4162
});
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4163
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4164
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4165
// Create scrollLeft and scrollTop methods
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4166
jQuery.each( ['Left', 'Top'], function(i, name) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4167
	var method = 'scroll' + name;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4168
	
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4169
	jQuery.fn[ method ] = function(val) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4170
		if (!this[0]) return null;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4171
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4172
		return val !== undefined ?
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4173
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4174
			// Set the scroll offset
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4175
			this.each(function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4176
				this == window || this == document ?
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4177
					window.scrollTo(
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4178
						!i ? val : jQuery(window).scrollLeft(),
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4179
						 i ? val : jQuery(window).scrollTop()
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4180
					) :
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4181
					this[ method ] = val;
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4182
			}) :
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4183
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4184
			// Return the scroll offset
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4185
			this[0] == window || this[0] == document ?
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4186
				self[ i ? 'pageYOffset' : 'pageXOffset' ] ||
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4187
					jQuery.boxModel && document.documentElement[ method ] ||
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4188
					document.body[ method ] :
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4189
				this[0][ method ];
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4190
	};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4191
});
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4192
// Create innerHeight, innerWidth, outerHeight and outerWidth methods
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4193
jQuery.each([ "Height", "Width" ], function(i, name){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4194
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4195
	var tl = i ? "Left"  : "Top",  // top or left
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4196
		br = i ? "Right" : "Bottom"; // bottom or right
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4197
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4198
	// innerHeight and innerWidth
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4199
	jQuery.fn["inner" + name] = function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4200
		return this[ name.toLowerCase() ]() +
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4201
			num(this, "padding" + tl) +
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4202
			num(this, "padding" + br);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4203
	};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4204
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4205
	// outerHeight and outerWidth
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4206
	jQuery.fn["outer" + name] = function(margin) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4207
		return this["inner" + name]() +
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4208
			num(this, "border" + tl + "Width") +
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4209
			num(this, "border" + br + "Width") +
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4210
			(margin ?
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4211
				num(this, "margin" + tl) + num(this, "margin" + br) : 0);
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4212
	};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4213
	
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4214
	var type = name.toLowerCase();
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4215
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4216
	jQuery.fn[ type ] = function( size ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4217
		// Get window width or height
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4218
		return this[0] == window ?
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4219
			// Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4220
			document.compatMode == "CSS1Compat" && document.documentElement[ "client" + name ] ||
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4221
			document.body[ "client" + name ] :
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4222
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4223
			// Get document width or height
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4224
			this[0] == document ?
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4225
				// Either scroll[Width/Height] or offset[Width/Height], whichever is greater
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4226
				Math.max(
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4227
					document.documentElement["client" + name],
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4228
					document.body["scroll" + name], document.documentElement["scroll" + name],
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4229
					document.body["offset" + name], document.documentElement["offset" + name]
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4230
				) :
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4231
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4232
				// Get or set width or height on the element
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4233
				size === undefined ?
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4234
					// Get width or height on the element
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4235
					(this.length ? jQuery.css( this[0], type ) : null) :
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4236
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4237
					// Set the width or height on the element (default to pixels if value is unitless)
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4238
					this.css( type, typeof size === "string" ? size : size + "px" );
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4239
	};
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4240
0d28b7c10758 First commit
ymh
parents:
diff changeset
  4241
});})();