annotate jquery.js @ 22:f44ab359f4af

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