- if ( tb ) {
- for ( var n = tb.length-1; n >= 0 ; --n )
- if ( tb[n].nodeName.toUpperCase() == "TBODY" && !tb[n].childNodes.length )
- tb[n].parentNode.removeChild(tb[n]);
- }
- }
-
- arg = div.childNodes;
- }
-
-
- if ( arg.length != undefined && ( (jQuery.browser.safari && typeof arg == 'function') || !arg.nodeType ) ) // Safari reports typeof on a DOM NodeList to be a function
- for ( var n = 0; n < arg.length; n++ ) // Handles Array, jQuery, DOM NodeList collections
- r.push(arg[n]);
- else
- r.push( arg.nodeType ? arg : document.createTextNode(arg.toString()) );
- }
-
- return r;
- },
-
- nth: function(cur,result,dir){
- result = result || 1;
- var num = 0;
- for ( ; cur; cur = cur[dir] ) {
- if ( cur.nodeType == 1 ) num++;
- if ( num == result || result == "even" && num % 2 == 0 && num > 1 ||
- result == "odd" && num % 2 == 1 ) return cur;
- }
- },
-
- expr: {
- "": "m[2]== '*'||a.nodeName.toUpperCase()==m[2].toUpperCase()",
- "#": "a.getAttribute('id')==m[2]",
- ":": {
- // Position Checks
- lt: "i<m[3]-0",
- gt: "i>m[3]-0",
- nth: "m[3]-0==i",
- eq: "m[3]-0==i",
- first: "i==0",
- last: "i==r.length-1",
- even: "i%2==0",
- odd: "i%2",
-
- // Child Checks
- "nth-child": "jQuery.nth(a.parentNode.firstChild,m[3],'nextSibling')==a",
- "first-child": "jQuery.nth(a.parentNode.firstChild,1,'nextSibling')==a",
- "last-child": "jQuery.nth(a.parentNode.lastChild,1,'previousSibling')==a",
- "only-child": "jQuery.sibling(a.parentNode.firstChild).length==1",
-
- // Parent Checks
- parent: "a.childNodes.length",
- empty: "!a.childNodes.length",
-
- // Text Check
- contains: "jQuery.fn.text.apply([a]).indexOf(m[3])>=0",
-
- // Visibility
- visible: "a.type!='hidden'&&jQuery.css(a,'display')!='none'&&jQuery.css(a,'visibility')!='hidden'",
- hidden: "a.type=='hidden'||jQuery.css(a,'display')=='none'||jQuery.css(a,'visibility')=='hidden'",
-
- // Form attributes
- enabled: "!a.disabled",
- disabled: "a.disabled",
- checked: "a.checked",
- selected: "a.selected || jQuery.attr(a, 'selected')",
-
- // Form elements
- text: "a.type=='text'",
- radio: "a.type=='radio'",
- checkbox: "a.type=='checkbox'",
- file: "a.type=='file'",
- password: "a.type=='password'",
- submit: "a.type=='submit'",
- image: "a.type=='image'",
- reset: "a.type=='reset'",
- button: "a.type=='button'",
- input: "/input|select|textarea|button/i.test(a.nodeName)"
- },
- ".": "jQuery.className.has(a,m[2])",
- "@": {
- "=": "z==m[4]",
- "!=": "z!=m[4]",
- "^=": "z && !z.indexOf(m[4])",
- "$=": "z && z.substr(z.length - m[4].length,m[4].length)==m[4]",
- "*=": "z && z.indexOf(m[4])>=0",
- "": "z",
- _resort: function(m){
- return ["", m[1], m[3], m[2], m[5]];
- },
- _prefix: "z=jQuery.attr(a,m[3]);"
- },
- "[": "jQuery.find(m[2],a).length"
- },
-
- /**
- * All elements on a specified axis.
- *
- * @private
- * @name $.sibling
- * @type Array
- * @param Element elem The element to find all the siblings of (including itself).
- * @cat DOM/Traversing
- */
- sibling: function( n, elem ) {
- var r = [];
-
- for ( ; n; n = n.nextSibling ) {
- if ( n.nodeType == 1 && (!elem || n != elem) )
- r.push( n );
- }
-
- return r;
- },
-
- token: [
- "\\.\\.|/\\.\\.", "a.parentNode",
- ">|/", "jQuery.sibling(a.firstChild)",
- "\\+", "jQuery.nth(a,2,'nextSibling')",
- "~", function(a){
- var s = jQuery.sibling(a.parentNode.firstChild)
- return s.slice(0, jQuery.inArray(a,s));
- }
- ],
-
- /**
- * @name $.find
- * @type Array<Element>
- * @private
- * @cat Core
- */
- find: function( t, context ) {
- // Quickly handle non-string expressions
- if ( typeof t != "string" )
- return [ t ];
-
- // Make sure that the context is a DOM Element
- if ( context && context.nodeType == undefined )
- context = null;
-
- // Set the correct context (if none is provided)
- context = context || document;
-
- // Handle the common XPath // expression
- if ( !t.indexOf("//") ) {
- context = context.documentElement;
- t = t.substr(2,t.length);
-
- // And the / root expression
- } else if ( !t.indexOf("/") ) {
- context = context.documentElement;
- t = t.substr(1,t.length);
- if ( t.indexOf("/") >= 1 )
- t = t.substr(t.indexOf("/"),t.length);
- }