right-rails 1.0.6 → 1.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +7 -0
- data/lib/right_rails.rb +2 -2
- data/public/javascripts/right/autocompleter-src.js +1 -1
- data/public/javascripts/right/autocompleter.js +1 -1
- data/public/javascripts/right/calendar-src.js +1 -0
- data/public/javascripts/right/calendar.js +27 -27
- data/public/javascripts/right/colorpicker-src.js +1 -0
- data/public/javascripts/right/colorpicker.js +7 -7
- data/public/javascripts/right/i18n/fi.js +43 -0
- data/public/javascripts/right/i18n/it.js +42 -0
- data/public/javascripts/right/lightbox-src.js +12 -7
- data/public/javascripts/right/lightbox.js +9 -9
- data/public/javascripts/right/rails-src.js +3 -1
- data/public/javascripts/right/rails.js +5 -5
- data/public/javascripts/right/sizzle-src.js +1127 -0
- data/public/javascripts/right/sizzle.js +30 -0
- data/public/javascripts/right/sortable-src.js +1 -1
- data/public/javascripts/right/sortable.js +1 -1
- data/public/javascripts/right/tabs-src.js +8 -8
- data/public/javascripts/right/tabs.js +2 -2
- data/public/javascripts/right-olds-src.js +4 -4
- data/public/javascripts/right-olds.js +3 -3
- data/public/javascripts/right-safe-src.js +84 -83
- data/public/javascripts/right-safe.js +1 -1
- data/public/javascripts/right-src.js +84 -37
- data/public/javascripts/right.js +75 -74
- metadata +9 -7
@@ -0,0 +1,1127 @@
|
|
1
|
+
/**
|
2
|
+
* Sizzle engine support for RightJS
|
3
|
+
*
|
4
|
+
* Copyright (C) 2010 Nikolay Nemshilov
|
5
|
+
*/
|
6
|
+
/*!
|
7
|
+
* Sizzle CSS Selector Engine - v1.0
|
8
|
+
* Copyright 2009, The Dojo Foundation
|
9
|
+
* Released under the MIT, BSD, and GPL Licenses.
|
10
|
+
* More information: http://sizzlejs.com/
|
11
|
+
*/
|
12
|
+
|
13
|
+
/**
|
14
|
+
* sizzle initialization script
|
15
|
+
*
|
16
|
+
* Copyright (C) 2010 Nikolay Nemshilov
|
17
|
+
*/
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
(function(){
|
22
|
+
|
23
|
+
var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
|
24
|
+
done = 0,
|
25
|
+
toString = Object.prototype.toString,
|
26
|
+
hasDuplicate = false,
|
27
|
+
baseHasDuplicate = true;
|
28
|
+
|
29
|
+
// Here we check if the JavaScript engine is using some sort of
|
30
|
+
// optimization where it does not always call our comparision
|
31
|
+
// function. If that is the case, discard the hasDuplicate value.
|
32
|
+
// Thus far that includes Google Chrome.
|
33
|
+
[0, 0].sort(function(){
|
34
|
+
baseHasDuplicate = false;
|
35
|
+
return 0;
|
36
|
+
});
|
37
|
+
|
38
|
+
var Sizzle = function(selector, context, results, seed) {
|
39
|
+
results = results || [];
|
40
|
+
context = context || document;
|
41
|
+
|
42
|
+
var origContext = context;
|
43
|
+
|
44
|
+
if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
|
45
|
+
return [];
|
46
|
+
}
|
47
|
+
|
48
|
+
if ( !selector || typeof selector !== "string" ) {
|
49
|
+
return results;
|
50
|
+
}
|
51
|
+
|
52
|
+
var parts = [], m, set, checkSet, extra, prune = true, contextXML = Sizzle.isXML(context),
|
53
|
+
soFar = selector, ret, cur, pop, i;
|
54
|
+
|
55
|
+
// Reset the position of the chunker regexp (start from head)
|
56
|
+
do {
|
57
|
+
chunker.exec("");
|
58
|
+
m = chunker.exec(soFar);
|
59
|
+
|
60
|
+
if ( m ) {
|
61
|
+
soFar = m[3];
|
62
|
+
|
63
|
+
parts.push( m[1] );
|
64
|
+
|
65
|
+
if ( m[2] ) {
|
66
|
+
extra = m[3];
|
67
|
+
break;
|
68
|
+
}
|
69
|
+
}
|
70
|
+
} while ( m );
|
71
|
+
|
72
|
+
if ( parts.length > 1 && origPOS.exec( selector ) ) {
|
73
|
+
if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
|
74
|
+
set = posProcess( parts[0] + parts[1], context );
|
75
|
+
} else {
|
76
|
+
set = Expr.relative[ parts[0] ] ?
|
77
|
+
[ context ] :
|
78
|
+
Sizzle( parts.shift(), context );
|
79
|
+
|
80
|
+
while ( parts.length ) {
|
81
|
+
selector = parts.shift();
|
82
|
+
|
83
|
+
if ( Expr.relative[ selector ] ) {
|
84
|
+
selector += parts.shift();
|
85
|
+
}
|
86
|
+
|
87
|
+
set = posProcess( selector, set );
|
88
|
+
}
|
89
|
+
}
|
90
|
+
} else {
|
91
|
+
// Take a shortcut and set the context if the root selector is an ID
|
92
|
+
// (but not if it'll be faster if the inner selector is an ID)
|
93
|
+
if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
|
94
|
+
Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
|
95
|
+
ret = Sizzle.find( parts.shift(), context, contextXML );
|
96
|
+
context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0];
|
97
|
+
}
|
98
|
+
|
99
|
+
if ( context ) {
|
100
|
+
ret = seed ?
|
101
|
+
{ expr: parts.pop(), set: makeArray(seed) } :
|
102
|
+
Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
|
103
|
+
set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set;
|
104
|
+
|
105
|
+
if ( parts.length > 0 ) {
|
106
|
+
checkSet = makeArray(set);
|
107
|
+
} else {
|
108
|
+
prune = false;
|
109
|
+
}
|
110
|
+
|
111
|
+
while ( parts.length ) {
|
112
|
+
cur = parts.pop();
|
113
|
+
pop = cur;
|
114
|
+
|
115
|
+
if ( !Expr.relative[ cur ] ) {
|
116
|
+
cur = "";
|
117
|
+
} else {
|
118
|
+
pop = parts.pop();
|
119
|
+
}
|
120
|
+
|
121
|
+
if ( pop == null ) {
|
122
|
+
pop = context;
|
123
|
+
}
|
124
|
+
|
125
|
+
Expr.relative[ cur ]( checkSet, pop, contextXML );
|
126
|
+
}
|
127
|
+
} else {
|
128
|
+
checkSet = parts = [];
|
129
|
+
}
|
130
|
+
}
|
131
|
+
|
132
|
+
if ( !checkSet ) {
|
133
|
+
checkSet = set;
|
134
|
+
}
|
135
|
+
|
136
|
+
if ( !checkSet ) {
|
137
|
+
Sizzle.error( cur || selector );
|
138
|
+
}
|
139
|
+
|
140
|
+
if ( toString.call(checkSet) === "[object Array]" ) {
|
141
|
+
if ( !prune ) {
|
142
|
+
results.push.apply( results, checkSet );
|
143
|
+
} else if ( context && context.nodeType === 1 ) {
|
144
|
+
for ( i = 0; checkSet[i] != null; i++ ) {
|
145
|
+
if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {
|
146
|
+
results.push( set[i] );
|
147
|
+
}
|
148
|
+
}
|
149
|
+
} else {
|
150
|
+
for ( i = 0; checkSet[i] != null; i++ ) {
|
151
|
+
if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
|
152
|
+
results.push( set[i] );
|
153
|
+
}
|
154
|
+
}
|
155
|
+
}
|
156
|
+
} else {
|
157
|
+
makeArray( checkSet, results );
|
158
|
+
}
|
159
|
+
|
160
|
+
if ( extra ) {
|
161
|
+
Sizzle( extra, origContext, results, seed );
|
162
|
+
Sizzle.uniqueSort( results );
|
163
|
+
}
|
164
|
+
|
165
|
+
return results;
|
166
|
+
};
|
167
|
+
|
168
|
+
Sizzle.uniqueSort = function(results){
|
169
|
+
if ( sortOrder ) {
|
170
|
+
hasDuplicate = baseHasDuplicate;
|
171
|
+
results.sort(sortOrder);
|
172
|
+
|
173
|
+
if ( hasDuplicate ) {
|
174
|
+
for ( var i = 1; i < results.length; i++ ) {
|
175
|
+
if ( results[i] === results[i-1] ) {
|
176
|
+
results.splice(i--, 1);
|
177
|
+
}
|
178
|
+
}
|
179
|
+
}
|
180
|
+
}
|
181
|
+
|
182
|
+
return results;
|
183
|
+
};
|
184
|
+
|
185
|
+
Sizzle.matches = function(expr, set){
|
186
|
+
return Sizzle(expr, null, null, set);
|
187
|
+
};
|
188
|
+
|
189
|
+
Sizzle.find = function(expr, context, isXML){
|
190
|
+
var set;
|
191
|
+
|
192
|
+
if ( !expr ) {
|
193
|
+
return [];
|
194
|
+
}
|
195
|
+
|
196
|
+
for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
|
197
|
+
var type = Expr.order[i], match;
|
198
|
+
|
199
|
+
if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {
|
200
|
+
var left = match[1];
|
201
|
+
match.splice(1,1);
|
202
|
+
|
203
|
+
if ( left.substr( left.length - 1 ) !== "\\" ) {
|
204
|
+
match[1] = (match[1] || "").replace(/\\/g, "");
|
205
|
+
set = Expr.find[ type ]( match, context, isXML );
|
206
|
+
if ( set != null ) {
|
207
|
+
expr = expr.replace( Expr.match[ type ], "" );
|
208
|
+
break;
|
209
|
+
}
|
210
|
+
}
|
211
|
+
}
|
212
|
+
}
|
213
|
+
|
214
|
+
if ( !set ) {
|
215
|
+
set = context.getElementsByTagName("*");
|
216
|
+
}
|
217
|
+
|
218
|
+
return {set: set, expr: expr};
|
219
|
+
};
|
220
|
+
|
221
|
+
Sizzle.filter = function(expr, set, inplace, not){
|
222
|
+
var old = expr, result = [], curLoop = set, match, anyFound,
|
223
|
+
isXMLFilter = set && set[0] && Sizzle.isXML(set[0]);
|
224
|
+
|
225
|
+
while ( expr && set.length ) {
|
226
|
+
for ( var type in Expr.filter ) {
|
227
|
+
if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {
|
228
|
+
var filter = Expr.filter[ type ], found, item, left = match[1];
|
229
|
+
anyFound = false;
|
230
|
+
|
231
|
+
match.splice(1,1);
|
232
|
+
|
233
|
+
if ( left.substr( left.length - 1 ) === "\\" ) {
|
234
|
+
continue;
|
235
|
+
}
|
236
|
+
|
237
|
+
if ( curLoop === result ) {
|
238
|
+
result = [];
|
239
|
+
}
|
240
|
+
|
241
|
+
if ( Expr.preFilter[ type ] ) {
|
242
|
+
match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
|
243
|
+
|
244
|
+
if ( !match ) {
|
245
|
+
anyFound = found = true;
|
246
|
+
} else if ( match === true ) {
|
247
|
+
continue;
|
248
|
+
}
|
249
|
+
}
|
250
|
+
|
251
|
+
if ( match ) {
|
252
|
+
for ( var i = 0; (item = curLoop[i]) != null; i++ ) {
|
253
|
+
if ( item ) {
|
254
|
+
found = filter( item, match, i, curLoop );
|
255
|
+
var pass = not ^ !!found;
|
256
|
+
|
257
|
+
if ( inplace && found != null ) {
|
258
|
+
if ( pass ) {
|
259
|
+
anyFound = true;
|
260
|
+
} else {
|
261
|
+
curLoop[i] = false;
|
262
|
+
}
|
263
|
+
} else if ( pass ) {
|
264
|
+
result.push( item );
|
265
|
+
anyFound = true;
|
266
|
+
}
|
267
|
+
}
|
268
|
+
}
|
269
|
+
}
|
270
|
+
|
271
|
+
if ( found !== undefined ) {
|
272
|
+
if ( !inplace ) {
|
273
|
+
curLoop = result;
|
274
|
+
}
|
275
|
+
|
276
|
+
expr = expr.replace( Expr.match[ type ], "" );
|
277
|
+
|
278
|
+
if ( !anyFound ) {
|
279
|
+
return [];
|
280
|
+
}
|
281
|
+
|
282
|
+
break;
|
283
|
+
}
|
284
|
+
}
|
285
|
+
}
|
286
|
+
|
287
|
+
// Improper expression
|
288
|
+
if ( expr === old ) {
|
289
|
+
if ( anyFound == null ) {
|
290
|
+
Sizzle.error( expr );
|
291
|
+
} else {
|
292
|
+
break;
|
293
|
+
}
|
294
|
+
}
|
295
|
+
|
296
|
+
old = expr;
|
297
|
+
}
|
298
|
+
|
299
|
+
return curLoop;
|
300
|
+
};
|
301
|
+
|
302
|
+
Sizzle.error = function( msg ) {
|
303
|
+
throw "Syntax error, unrecognized expression: " + msg;
|
304
|
+
};
|
305
|
+
|
306
|
+
var Expr = Sizzle.selectors = {
|
307
|
+
order: [ "ID", "NAME", "TAG" ],
|
308
|
+
match: {
|
309
|
+
ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
|
310
|
+
CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
|
311
|
+
NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,
|
312
|
+
ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
|
313
|
+
TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,
|
314
|
+
CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+\-]*)\))?/,
|
315
|
+
POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,
|
316
|
+
PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/
|
317
|
+
},
|
318
|
+
leftMatch: {},
|
319
|
+
attrMap: {
|
320
|
+
"class": "className",
|
321
|
+
"for": "htmlFor"
|
322
|
+
},
|
323
|
+
attrHandle: {
|
324
|
+
href: function(elem){
|
325
|
+
return elem.getAttribute("href");
|
326
|
+
}
|
327
|
+
},
|
328
|
+
relative: {
|
329
|
+
"+": function(checkSet, part){
|
330
|
+
var isPartStr = typeof part === "string",
|
331
|
+
isTag = isPartStr && !/\W/.test(part),
|
332
|
+
isPartStrNotTag = isPartStr && !isTag;
|
333
|
+
|
334
|
+
if ( isTag ) {
|
335
|
+
part = part.toLowerCase();
|
336
|
+
}
|
337
|
+
|
338
|
+
for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
|
339
|
+
if ( (elem = checkSet[i]) ) {
|
340
|
+
while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
|
341
|
+
|
342
|
+
checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?
|
343
|
+
elem || false :
|
344
|
+
elem === part;
|
345
|
+
}
|
346
|
+
}
|
347
|
+
|
348
|
+
if ( isPartStrNotTag ) {
|
349
|
+
Sizzle.filter( part, checkSet, true );
|
350
|
+
}
|
351
|
+
},
|
352
|
+
">": function(checkSet, part){
|
353
|
+
var isPartStr = typeof part === "string",
|
354
|
+
elem, i = 0, l = checkSet.length;
|
355
|
+
|
356
|
+
if ( isPartStr && !/\W/.test(part) ) {
|
357
|
+
part = part.toLowerCase();
|
358
|
+
|
359
|
+
for ( ; i < l; i++ ) {
|
360
|
+
elem = checkSet[i];
|
361
|
+
if ( elem ) {
|
362
|
+
var parent = elem.parentNode;
|
363
|
+
checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;
|
364
|
+
}
|
365
|
+
}
|
366
|
+
} else {
|
367
|
+
for ( ; i < l; i++ ) {
|
368
|
+
elem = checkSet[i];
|
369
|
+
if ( elem ) {
|
370
|
+
checkSet[i] = isPartStr ?
|
371
|
+
elem.parentNode :
|
372
|
+
elem.parentNode === part;
|
373
|
+
}
|
374
|
+
}
|
375
|
+
|
376
|
+
if ( isPartStr ) {
|
377
|
+
Sizzle.filter( part, checkSet, true );
|
378
|
+
}
|
379
|
+
}
|
380
|
+
},
|
381
|
+
"": function(checkSet, part, isXML){
|
382
|
+
var doneName = done++, checkFn = dirCheck, nodeCheck;
|
383
|
+
|
384
|
+
if ( typeof part === "string" && !/\W/.test(part) ) {
|
385
|
+
part = part.toLowerCase();
|
386
|
+
nodeCheck = part;
|
387
|
+
checkFn = dirNodeCheck;
|
388
|
+
}
|
389
|
+
|
390
|
+
checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML);
|
391
|
+
},
|
392
|
+
"~": function(checkSet, part, isXML){
|
393
|
+
var doneName = done++, checkFn = dirCheck, nodeCheck;
|
394
|
+
|
395
|
+
if ( typeof part === "string" && !/\W/.test(part) ) {
|
396
|
+
part = part.toLowerCase();
|
397
|
+
nodeCheck = part;
|
398
|
+
checkFn = dirNodeCheck;
|
399
|
+
}
|
400
|
+
|
401
|
+
checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML);
|
402
|
+
}
|
403
|
+
},
|
404
|
+
find: {
|
405
|
+
ID: function(match, context, isXML){
|
406
|
+
if ( typeof context.getElementById !== "undefined" && !isXML ) {
|
407
|
+
var m = context.getElementById(match[1]);
|
408
|
+
// Check parentNode to catch when Blackberry 4.6 returns
|
409
|
+
// nodes that are no longer in the document #6963
|
410
|
+
return m && m.parentNode ? [m] : [];
|
411
|
+
}
|
412
|
+
},
|
413
|
+
NAME: function(match, context){
|
414
|
+
if ( typeof context.getElementsByName !== "undefined" ) {
|
415
|
+
var ret = [], results = context.getElementsByName(match[1]);
|
416
|
+
|
417
|
+
for ( var i = 0, l = results.length; i < l; i++ ) {
|
418
|
+
if ( results[i].getAttribute("name") === match[1] ) {
|
419
|
+
ret.push( results[i] );
|
420
|
+
}
|
421
|
+
}
|
422
|
+
|
423
|
+
return ret.length === 0 ? null : ret;
|
424
|
+
}
|
425
|
+
},
|
426
|
+
TAG: function(match, context){
|
427
|
+
return context.getElementsByTagName(match[1]);
|
428
|
+
}
|
429
|
+
},
|
430
|
+
preFilter: {
|
431
|
+
CLASS: function(match, curLoop, inplace, result, not, isXML){
|
432
|
+
match = " " + match[1].replace(/\\/g, "") + " ";
|
433
|
+
|
434
|
+
if ( isXML ) {
|
435
|
+
return match;
|
436
|
+
}
|
437
|
+
|
438
|
+
for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
|
439
|
+
if ( elem ) {
|
440
|
+
if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n]/g, " ").indexOf(match) >= 0) ) {
|
441
|
+
if ( !inplace ) {
|
442
|
+
result.push( elem );
|
443
|
+
}
|
444
|
+
} else if ( inplace ) {
|
445
|
+
curLoop[i] = false;
|
446
|
+
}
|
447
|
+
}
|
448
|
+
}
|
449
|
+
|
450
|
+
return false;
|
451
|
+
},
|
452
|
+
ID: function(match){
|
453
|
+
return match[1].replace(/\\/g, "");
|
454
|
+
},
|
455
|
+
TAG: function(match, curLoop){
|
456
|
+
return match[1].toLowerCase();
|
457
|
+
},
|
458
|
+
CHILD: function(match){
|
459
|
+
if ( match[1] === "nth" ) {
|
460
|
+
// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
|
461
|
+
var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(
|
462
|
+
match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" ||
|
463
|
+
!/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
|
464
|
+
|
465
|
+
// calculate the numbers (first)n+(last) including if they are negative
|
466
|
+
match[2] = (test[1] + (test[2] || 1)) - 0;
|
467
|
+
match[3] = test[3] - 0;
|
468
|
+
}
|
469
|
+
|
470
|
+
// TODO: Move to normal caching system
|
471
|
+
match[0] = done++;
|
472
|
+
|
473
|
+
return match;
|
474
|
+
},
|
475
|
+
ATTR: function(match, curLoop, inplace, result, not, isXML){
|
476
|
+
var name = match[1].replace(/\\/g, "");
|
477
|
+
|
478
|
+
if ( !isXML && Expr.attrMap[name] ) {
|
479
|
+
match[1] = Expr.attrMap[name];
|
480
|
+
}
|
481
|
+
|
482
|
+
if ( match[2] === "~=" ) {
|
483
|
+
match[4] = " " + match[4] + " ";
|
484
|
+
}
|
485
|
+
|
486
|
+
return match;
|
487
|
+
},
|
488
|
+
PSEUDO: function(match, curLoop, inplace, result, not){
|
489
|
+
if ( match[1] === "not" ) {
|
490
|
+
// If we're dealing with a complex expression, or a simple one
|
491
|
+
if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) {
|
492
|
+
match[3] = Sizzle(match[3], null, null, curLoop);
|
493
|
+
} else {
|
494
|
+
var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
|
495
|
+
if ( !inplace ) {
|
496
|
+
result.push.apply( result, ret );
|
497
|
+
}
|
498
|
+
return false;
|
499
|
+
}
|
500
|
+
} else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
|
501
|
+
return true;
|
502
|
+
}
|
503
|
+
|
504
|
+
return match;
|
505
|
+
},
|
506
|
+
POS: function(match){
|
507
|
+
match.unshift( true );
|
508
|
+
return match;
|
509
|
+
}
|
510
|
+
},
|
511
|
+
filters: {
|
512
|
+
enabled: function(elem){
|
513
|
+
return elem.disabled === false && elem.type !== "hidden";
|
514
|
+
},
|
515
|
+
disabled: function(elem){
|
516
|
+
return elem.disabled === true;
|
517
|
+
},
|
518
|
+
checked: function(elem){
|
519
|
+
return elem.checked === true;
|
520
|
+
},
|
521
|
+
selected: function(elem){
|
522
|
+
// Accessing this property makes selected-by-default
|
523
|
+
// options in Safari work properly
|
524
|
+
elem.parentNode.selectedIndex;
|
525
|
+
return elem.selected === true;
|
526
|
+
},
|
527
|
+
parent: function(elem){
|
528
|
+
return !!elem.firstChild;
|
529
|
+
},
|
530
|
+
empty: function(elem){
|
531
|
+
return !elem.firstChild;
|
532
|
+
},
|
533
|
+
has: function(elem, i, match){
|
534
|
+
return !!Sizzle( match[3], elem ).length;
|
535
|
+
},
|
536
|
+
header: function(elem){
|
537
|
+
return (/h\d/i).test( elem.nodeName );
|
538
|
+
},
|
539
|
+
text: function(elem){
|
540
|
+
return "text" === elem.type;
|
541
|
+
},
|
542
|
+
radio: function(elem){
|
543
|
+
return "radio" === elem.type;
|
544
|
+
},
|
545
|
+
checkbox: function(elem){
|
546
|
+
return "checkbox" === elem.type;
|
547
|
+
},
|
548
|
+
file: function(elem){
|
549
|
+
return "file" === elem.type;
|
550
|
+
},
|
551
|
+
password: function(elem){
|
552
|
+
return "password" === elem.type;
|
553
|
+
},
|
554
|
+
submit: function(elem){
|
555
|
+
return "submit" === elem.type;
|
556
|
+
},
|
557
|
+
image: function(elem){
|
558
|
+
return "image" === elem.type;
|
559
|
+
},
|
560
|
+
reset: function(elem){
|
561
|
+
return "reset" === elem.type;
|
562
|
+
},
|
563
|
+
button: function(elem){
|
564
|
+
return "button" === elem.type || elem.nodeName.toLowerCase() === "button";
|
565
|
+
},
|
566
|
+
input: function(elem){
|
567
|
+
return (/input|select|textarea|button/i).test(elem.nodeName);
|
568
|
+
}
|
569
|
+
},
|
570
|
+
setFilters: {
|
571
|
+
first: function(elem, i){
|
572
|
+
return i === 0;
|
573
|
+
},
|
574
|
+
last: function(elem, i, match, array){
|
575
|
+
return i === array.length - 1;
|
576
|
+
},
|
577
|
+
even: function(elem, i){
|
578
|
+
return i % 2 === 0;
|
579
|
+
},
|
580
|
+
odd: function(elem, i){
|
581
|
+
return i % 2 === 1;
|
582
|
+
},
|
583
|
+
lt: function(elem, i, match){
|
584
|
+
return i < match[3] - 0;
|
585
|
+
},
|
586
|
+
gt: function(elem, i, match){
|
587
|
+
return i > match[3] - 0;
|
588
|
+
},
|
589
|
+
nth: function(elem, i, match){
|
590
|
+
return match[3] - 0 === i;
|
591
|
+
},
|
592
|
+
eq: function(elem, i, match){
|
593
|
+
return match[3] - 0 === i;
|
594
|
+
}
|
595
|
+
},
|
596
|
+
filter: {
|
597
|
+
PSEUDO: function(elem, match, i, array){
|
598
|
+
var name = match[1], filter = Expr.filters[ name ];
|
599
|
+
|
600
|
+
if ( filter ) {
|
601
|
+
return filter( elem, i, match, array );
|
602
|
+
} else if ( name === "contains" ) {
|
603
|
+
return (elem.textContent || elem.innerText || Sizzle.getText([ elem ]) || "").indexOf(match[3]) >= 0;
|
604
|
+
} else if ( name === "not" ) {
|
605
|
+
var not = match[3];
|
606
|
+
|
607
|
+
for ( var j = 0, l = not.length; j < l; j++ ) {
|
608
|
+
if ( not[j] === elem ) {
|
609
|
+
return false;
|
610
|
+
}
|
611
|
+
}
|
612
|
+
|
613
|
+
return true;
|
614
|
+
} else {
|
615
|
+
Sizzle.error( "Syntax error, unrecognized expression: " + name );
|
616
|
+
}
|
617
|
+
},
|
618
|
+
CHILD: function(elem, match){
|
619
|
+
var type = match[1], node = elem;
|
620
|
+
switch (type) {
|
621
|
+
case 'only':
|
622
|
+
case 'first':
|
623
|
+
while ( (node = node.previousSibling) ) {
|
624
|
+
if ( node.nodeType === 1 ) {
|
625
|
+
return false;
|
626
|
+
}
|
627
|
+
}
|
628
|
+
if ( type === "first" ) {
|
629
|
+
return true;
|
630
|
+
}
|
631
|
+
node = elem;
|
632
|
+
case 'last':
|
633
|
+
while ( (node = node.nextSibling) ) {
|
634
|
+
if ( node.nodeType === 1 ) {
|
635
|
+
return false;
|
636
|
+
}
|
637
|
+
}
|
638
|
+
return true;
|
639
|
+
case 'nth':
|
640
|
+
var first = match[2], last = match[3];
|
641
|
+
|
642
|
+
if ( first === 1 && last === 0 ) {
|
643
|
+
return true;
|
644
|
+
}
|
645
|
+
|
646
|
+
var doneName = match[0],
|
647
|
+
parent = elem.parentNode;
|
648
|
+
|
649
|
+
if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {
|
650
|
+
var count = 0;
|
651
|
+
for ( node = parent.firstChild; node; node = node.nextSibling ) {
|
652
|
+
if ( node.nodeType === 1 ) {
|
653
|
+
node.nodeIndex = ++count;
|
654
|
+
}
|
655
|
+
}
|
656
|
+
parent.sizcache = doneName;
|
657
|
+
}
|
658
|
+
|
659
|
+
var diff = elem.nodeIndex - last;
|
660
|
+
if ( first === 0 ) {
|
661
|
+
return diff === 0;
|
662
|
+
} else {
|
663
|
+
return ( diff % first === 0 && diff / first >= 0 );
|
664
|
+
}
|
665
|
+
}
|
666
|
+
},
|
667
|
+
ID: function(elem, match){
|
668
|
+
return elem.nodeType === 1 && elem.getAttribute("id") === match;
|
669
|
+
},
|
670
|
+
TAG: function(elem, match){
|
671
|
+
return (match === "*" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match;
|
672
|
+
},
|
673
|
+
CLASS: function(elem, match){
|
674
|
+
return (" " + (elem.className || elem.getAttribute("class")) + " ")
|
675
|
+
.indexOf( match ) > -1;
|
676
|
+
},
|
677
|
+
ATTR: function(elem, match){
|
678
|
+
var name = match[1],
|
679
|
+
result = Expr.attrHandle[ name ] ?
|
680
|
+
Expr.attrHandle[ name ]( elem ) :
|
681
|
+
elem[ name ] != null ?
|
682
|
+
elem[ name ] :
|
683
|
+
elem.getAttribute( name ),
|
684
|
+
value = result + "",
|
685
|
+
type = match[2],
|
686
|
+
check = match[4];
|
687
|
+
|
688
|
+
return result == null ?
|
689
|
+
type === "!=" :
|
690
|
+
type === "=" ?
|
691
|
+
value === check :
|
692
|
+
type === "*=" ?
|
693
|
+
value.indexOf(check) >= 0 :
|
694
|
+
type === "~=" ?
|
695
|
+
(" " + value + " ").indexOf(check) >= 0 :
|
696
|
+
!check ?
|
697
|
+
value && result !== false :
|
698
|
+
type === "!=" ?
|
699
|
+
value !== check :
|
700
|
+
type === "^=" ?
|
701
|
+
value.indexOf(check) === 0 :
|
702
|
+
type === "$=" ?
|
703
|
+
value.substr(value.length - check.length) === check :
|
704
|
+
type === "|=" ?
|
705
|
+
value === check || value.substr(0, check.length + 1) === check + "-" :
|
706
|
+
false;
|
707
|
+
},
|
708
|
+
POS: function(elem, match, i, array){
|
709
|
+
var name = match[2], filter = Expr.setFilters[ name ];
|
710
|
+
|
711
|
+
if ( filter ) {
|
712
|
+
return filter( elem, i, match, array );
|
713
|
+
}
|
714
|
+
}
|
715
|
+
}
|
716
|
+
};
|
717
|
+
|
718
|
+
var origPOS = Expr.match.POS,
|
719
|
+
fescape = function(all, num){
|
720
|
+
return "\\" + (num - 0 + 1);
|
721
|
+
};
|
722
|
+
|
723
|
+
for ( var type in Expr.match ) {
|
724
|
+
Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) );
|
725
|
+
Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) );
|
726
|
+
}
|
727
|
+
|
728
|
+
var makeArray = function(array, results) {
|
729
|
+
array = Array.prototype.slice.call( array, 0 );
|
730
|
+
|
731
|
+
if ( results ) {
|
732
|
+
results.push.apply( results, array );
|
733
|
+
return results;
|
734
|
+
}
|
735
|
+
|
736
|
+
return array;
|
737
|
+
};
|
738
|
+
|
739
|
+
// Perform a simple check to determine if the browser is capable of
|
740
|
+
// converting a NodeList to an array using builtin methods.
|
741
|
+
// Also verifies that the returned array holds DOM nodes
|
742
|
+
// (which is not the case in the Blackberry browser)
|
743
|
+
try {
|
744
|
+
Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;
|
745
|
+
|
746
|
+
// Provide a fallback method if it does not work
|
747
|
+
} catch(e){
|
748
|
+
makeArray = function(array, results) {
|
749
|
+
var ret = results || [], i = 0;
|
750
|
+
|
751
|
+
if ( toString.call(array) === "[object Array]" ) {
|
752
|
+
Array.prototype.push.apply( ret, array );
|
753
|
+
} else {
|
754
|
+
if ( typeof array.length === "number" ) {
|
755
|
+
for ( var l = array.length; i < l; i++ ) {
|
756
|
+
ret.push( array[i] );
|
757
|
+
}
|
758
|
+
} else {
|
759
|
+
for ( ; array[i]; i++ ) {
|
760
|
+
ret.push( array[i] );
|
761
|
+
}
|
762
|
+
}
|
763
|
+
}
|
764
|
+
|
765
|
+
return ret;
|
766
|
+
};
|
767
|
+
}
|
768
|
+
|
769
|
+
var sortOrder, siblingCheck;
|
770
|
+
|
771
|
+
if ( document.documentElement.compareDocumentPosition ) {
|
772
|
+
sortOrder = function( a, b ) {
|
773
|
+
if ( a === b ) {
|
774
|
+
hasDuplicate = true;
|
775
|
+
return 0;
|
776
|
+
}
|
777
|
+
|
778
|
+
if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {
|
779
|
+
return a.compareDocumentPosition ? -1 : 1;
|
780
|
+
}
|
781
|
+
|
782
|
+
return a.compareDocumentPosition(b) & 4 ? -1 : 1;
|
783
|
+
};
|
784
|
+
} else {
|
785
|
+
sortOrder = function( a, b ) {
|
786
|
+
var ap = [], bp = [], aup = a.parentNode, bup = b.parentNode,
|
787
|
+
cur = aup, al, bl;
|
788
|
+
|
789
|
+
// The nodes are identical, we can exit early
|
790
|
+
if ( a === b ) {
|
791
|
+
hasDuplicate = true;
|
792
|
+
return 0;
|
793
|
+
|
794
|
+
// If the nodes are siblings (or identical) we can do a quick check
|
795
|
+
} else if ( aup === bup ) {
|
796
|
+
return siblingCheck( a, b );
|
797
|
+
|
798
|
+
// If no parents were found then the nodes are disconnected
|
799
|
+
} else if ( !aup ) {
|
800
|
+
return -1;
|
801
|
+
|
802
|
+
} else if ( !bup ) {
|
803
|
+
return 1;
|
804
|
+
}
|
805
|
+
|
806
|
+
// Otherwise they're somewhere else in the tree so we need
|
807
|
+
// to build up a full list of the parentNodes for comparison
|
808
|
+
while ( cur ) {
|
809
|
+
ap.unshift( cur );
|
810
|
+
cur = cur.parentNode;
|
811
|
+
}
|
812
|
+
|
813
|
+
cur = bup;
|
814
|
+
|
815
|
+
while ( cur ) {
|
816
|
+
bp.unshift( cur );
|
817
|
+
cur = cur.parentNode;
|
818
|
+
}
|
819
|
+
|
820
|
+
al = ap.length;
|
821
|
+
bl = bp.length;
|
822
|
+
|
823
|
+
// Start walking down the tree looking for a discrepancy
|
824
|
+
for ( var i = 0; i < al && i < bl; i++ ) {
|
825
|
+
if ( ap[i] !== bp[i] ) {
|
826
|
+
return siblingCheck( ap[i], bp[i] );
|
827
|
+
}
|
828
|
+
}
|
829
|
+
|
830
|
+
// We ended someplace up the tree so do a sibling check
|
831
|
+
return i === al ?
|
832
|
+
siblingCheck( a, bp[i], -1 ) :
|
833
|
+
siblingCheck( ap[i], b, 1 );
|
834
|
+
};
|
835
|
+
|
836
|
+
siblingCheck = function( a, b, ret ) {
|
837
|
+
if ( a === b ) {
|
838
|
+
return ret;
|
839
|
+
}
|
840
|
+
|
841
|
+
var cur = a.nextSibling;
|
842
|
+
|
843
|
+
while ( cur ) {
|
844
|
+
if ( cur === b ) {
|
845
|
+
return -1;
|
846
|
+
}
|
847
|
+
|
848
|
+
cur = cur.nextSibling;
|
849
|
+
}
|
850
|
+
|
851
|
+
return 1;
|
852
|
+
};
|
853
|
+
}
|
854
|
+
|
855
|
+
// Utility function for retreiving the text value of an array of DOM nodes
|
856
|
+
Sizzle.getText = function( elems ) {
|
857
|
+
var ret = "", elem;
|
858
|
+
|
859
|
+
for ( var i = 0; elems[i]; i++ ) {
|
860
|
+
elem = elems[i];
|
861
|
+
|
862
|
+
// Get the text from text nodes and CDATA nodes
|
863
|
+
if ( elem.nodeType === 3 || elem.nodeType === 4 ) {
|
864
|
+
ret += elem.nodeValue;
|
865
|
+
|
866
|
+
// Traverse everything else, except comment nodes
|
867
|
+
} else if ( elem.nodeType !== 8 ) {
|
868
|
+
ret += Sizzle.getText( elem.childNodes );
|
869
|
+
}
|
870
|
+
}
|
871
|
+
|
872
|
+
return ret;
|
873
|
+
};
|
874
|
+
|
875
|
+
// Check to see if the browser returns elements by name when
|
876
|
+
// querying by getElementById (and provide a workaround)
|
877
|
+
(function(){
|
878
|
+
// We're going to inject a fake input element with a specified name
|
879
|
+
var form = document.createElement("div"),
|
880
|
+
id = "script" + (new Date()).getTime();
|
881
|
+
form.innerHTML = "<a name='" + id + "'/>";
|
882
|
+
|
883
|
+
// Inject it into the root element, check its status, and remove it quickly
|
884
|
+
var root = document.documentElement;
|
885
|
+
root.insertBefore( form, root.firstChild );
|
886
|
+
|
887
|
+
// The workaround has to do additional checks after a getElementById
|
888
|
+
// Which slows things down for other browsers (hence the branching)
|
889
|
+
if ( document.getElementById( id ) ) {
|
890
|
+
Expr.find.ID = function(match, context, isXML){
|
891
|
+
if ( typeof context.getElementById !== "undefined" && !isXML ) {
|
892
|
+
var m = context.getElementById(match[1]);
|
893
|
+
return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : [];
|
894
|
+
}
|
895
|
+
};
|
896
|
+
|
897
|
+
Expr.filter.ID = function(elem, match){
|
898
|
+
var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
|
899
|
+
return elem.nodeType === 1 && node && node.nodeValue === match;
|
900
|
+
};
|
901
|
+
}
|
902
|
+
|
903
|
+
root.removeChild( form );
|
904
|
+
root = form = null; // release memory in IE
|
905
|
+
})();
|
906
|
+
|
907
|
+
(function(){
|
908
|
+
// Check to see if the browser returns only elements
|
909
|
+
// when doing getElementsByTagName("*")
|
910
|
+
|
911
|
+
// Create a fake element
|
912
|
+
var div = document.createElement("div");
|
913
|
+
div.appendChild( document.createComment("") );
|
914
|
+
|
915
|
+
// Make sure no comments are found
|
916
|
+
if ( div.getElementsByTagName("*").length > 0 ) {
|
917
|
+
Expr.find.TAG = function(match, context){
|
918
|
+
var results = context.getElementsByTagName(match[1]);
|
919
|
+
|
920
|
+
// Filter out possible comments
|
921
|
+
if ( match[1] === "*" ) {
|
922
|
+
var tmp = [];
|
923
|
+
|
924
|
+
for ( var i = 0; results[i]; i++ ) {
|
925
|
+
if ( results[i].nodeType === 1 ) {
|
926
|
+
tmp.push( results[i] );
|
927
|
+
}
|
928
|
+
}
|
929
|
+
|
930
|
+
results = tmp;
|
931
|
+
}
|
932
|
+
|
933
|
+
return results;
|
934
|
+
};
|
935
|
+
}
|
936
|
+
|
937
|
+
// Check to see if an attribute returns normalized href attributes
|
938
|
+
div.innerHTML = "<a href='#'></a>";
|
939
|
+
if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
|
940
|
+
div.firstChild.getAttribute("href") !== "#" ) {
|
941
|
+
Expr.attrHandle.href = function(elem){
|
942
|
+
return elem.getAttribute("href", 2);
|
943
|
+
};
|
944
|
+
}
|
945
|
+
|
946
|
+
div = null; // release memory in IE
|
947
|
+
})();
|
948
|
+
|
949
|
+
if ( document.querySelectorAll ) {
|
950
|
+
(function(){
|
951
|
+
var oldSizzle = Sizzle, div = document.createElement("div");
|
952
|
+
div.innerHTML = "<p class='TEST'></p>";
|
953
|
+
|
954
|
+
// Safari can't handle uppercase or unicode characters when
|
955
|
+
// in quirks mode.
|
956
|
+
if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
|
957
|
+
return;
|
958
|
+
}
|
959
|
+
|
960
|
+
Sizzle = function(query, context, extra, seed){
|
961
|
+
context = context || document;
|
962
|
+
|
963
|
+
// Only use querySelectorAll on non-XML documents
|
964
|
+
// (ID selectors don't work in non-HTML documents)
|
965
|
+
if ( !seed && context.nodeType === 9 && !Sizzle.isXML(context) ) {
|
966
|
+
try {
|
967
|
+
return makeArray( context.querySelectorAll(query), extra );
|
968
|
+
} catch(e){}
|
969
|
+
}
|
970
|
+
|
971
|
+
return oldSizzle(query, context, extra, seed);
|
972
|
+
};
|
973
|
+
|
974
|
+
for ( var prop in oldSizzle ) {
|
975
|
+
Sizzle[ prop ] = oldSizzle[ prop ];
|
976
|
+
}
|
977
|
+
|
978
|
+
div = null; // release memory in IE
|
979
|
+
})();
|
980
|
+
}
|
981
|
+
|
982
|
+
(function(){
|
983
|
+
var div = document.createElement("div");
|
984
|
+
|
985
|
+
div.innerHTML = "<div class='test e'></div><div class='test'></div>";
|
986
|
+
|
987
|
+
// Opera can't find a second classname (in 9.6)
|
988
|
+
// Also, make sure that getElementsByClassName actually exists
|
989
|
+
if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) {
|
990
|
+
return;
|
991
|
+
}
|
992
|
+
|
993
|
+
// Safari caches class attributes, doesn't catch changes (in 3.2)
|
994
|
+
div.lastChild.className = "e";
|
995
|
+
|
996
|
+
if ( div.getElementsByClassName("e").length === 1 ) {
|
997
|
+
return;
|
998
|
+
}
|
999
|
+
|
1000
|
+
Expr.order.splice(1, 0, "CLASS");
|
1001
|
+
Expr.find.CLASS = function(match, context, isXML) {
|
1002
|
+
if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
|
1003
|
+
return context.getElementsByClassName(match[1]);
|
1004
|
+
}
|
1005
|
+
};
|
1006
|
+
|
1007
|
+
div = null; // release memory in IE
|
1008
|
+
})();
|
1009
|
+
|
1010
|
+
function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
|
1011
|
+
for ( var i = 0, l = checkSet.length; i < l; i++ ) {
|
1012
|
+
var elem = checkSet[i];
|
1013
|
+
if ( elem ) {
|
1014
|
+
elem = elem[dir];
|
1015
|
+
var match = false;
|
1016
|
+
|
1017
|
+
while ( elem ) {
|
1018
|
+
if ( elem.sizcache === doneName ) {
|
1019
|
+
match = checkSet[elem.sizset];
|
1020
|
+
break;
|
1021
|
+
}
|
1022
|
+
|
1023
|
+
if ( elem.nodeType === 1 && !isXML ){
|
1024
|
+
elem.sizcache = doneName;
|
1025
|
+
elem.sizset = i;
|
1026
|
+
}
|
1027
|
+
|
1028
|
+
if ( elem.nodeName.toLowerCase() === cur ) {
|
1029
|
+
match = elem;
|
1030
|
+
break;
|
1031
|
+
}
|
1032
|
+
|
1033
|
+
elem = elem[dir];
|
1034
|
+
}
|
1035
|
+
|
1036
|
+
checkSet[i] = match;
|
1037
|
+
}
|
1038
|
+
}
|
1039
|
+
}
|
1040
|
+
|
1041
|
+
function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
|
1042
|
+
for ( var i = 0, l = checkSet.length; i < l; i++ ) {
|
1043
|
+
var elem = checkSet[i];
|
1044
|
+
if ( elem ) {
|
1045
|
+
elem = elem[dir];
|
1046
|
+
var match = false;
|
1047
|
+
|
1048
|
+
while ( elem ) {
|
1049
|
+
if ( elem.sizcache === doneName ) {
|
1050
|
+
match = checkSet[elem.sizset];
|
1051
|
+
break;
|
1052
|
+
}
|
1053
|
+
|
1054
|
+
if ( elem.nodeType === 1 ) {
|
1055
|
+
if ( !isXML ) {
|
1056
|
+
elem.sizcache = doneName;
|
1057
|
+
elem.sizset = i;
|
1058
|
+
}
|
1059
|
+
if ( typeof cur !== "string" ) {
|
1060
|
+
if ( elem === cur ) {
|
1061
|
+
match = true;
|
1062
|
+
break;
|
1063
|
+
}
|
1064
|
+
|
1065
|
+
} else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
|
1066
|
+
match = elem;
|
1067
|
+
break;
|
1068
|
+
}
|
1069
|
+
}
|
1070
|
+
|
1071
|
+
elem = elem[dir];
|
1072
|
+
}
|
1073
|
+
|
1074
|
+
checkSet[i] = match;
|
1075
|
+
}
|
1076
|
+
}
|
1077
|
+
}
|
1078
|
+
|
1079
|
+
Sizzle.contains = document.compareDocumentPosition ? function(a, b){
|
1080
|
+
return !!(a.compareDocumentPosition(b) & 16);
|
1081
|
+
} : function(a, b){
|
1082
|
+
return a !== b && (a.contains ? a.contains(b) : true);
|
1083
|
+
};
|
1084
|
+
|
1085
|
+
Sizzle.isXML = function(elem){
|
1086
|
+
// documentElement is verified for cases where it doesn't yet exist
|
1087
|
+
// (such as loading iframes in IE - #4833)
|
1088
|
+
var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;
|
1089
|
+
return documentElement ? documentElement.nodeName !== "HTML" : false;
|
1090
|
+
};
|
1091
|
+
|
1092
|
+
var posProcess = function(selector, context){
|
1093
|
+
var tmpSet = [], later = "", match,
|
1094
|
+
root = context.nodeType ? [context] : context;
|
1095
|
+
|
1096
|
+
// Position selectors must be done after the filter
|
1097
|
+
// And so must :not(positional) so we move all PSEUDOs to the end
|
1098
|
+
while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
|
1099
|
+
later += match[0];
|
1100
|
+
selector = selector.replace( Expr.match.PSEUDO, "" );
|
1101
|
+
}
|
1102
|
+
|
1103
|
+
selector = Expr.relative[selector] ? selector + "*" : selector;
|
1104
|
+
|
1105
|
+
for ( var i = 0, l = root.length; i < l; i++ ) {
|
1106
|
+
Sizzle( selector, root[i], tmpSet );
|
1107
|
+
}
|
1108
|
+
|
1109
|
+
return Sizzle.filter( later, tmpSet );
|
1110
|
+
};
|
1111
|
+
|
1112
|
+
// EXPOSE
|
1113
|
+
|
1114
|
+
window.Sizzle = Sizzle;
|
1115
|
+
|
1116
|
+
})();
|
1117
|
+
|
1118
|
+
|
1119
|
+
RightJS([RightJS.Document, RightJS.Element]).each('include', {
|
1120
|
+
first: function(rule) {
|
1121
|
+
return this.find(rule)[0];
|
1122
|
+
},
|
1123
|
+
|
1124
|
+
find: function(rule) {
|
1125
|
+
return RightJS(Sizzle(rule, this._)).map(RightJS.$);
|
1126
|
+
}
|
1127
|
+
});
|