if ( node.nodeIndex == last ) 
if ( last == 0 || node.nodeIndex == last ) 
	filter: function(t,r,not) {		var last;		// Look for common filter expressions		while ( t  && t != last ) {			last = t;			var p = jQuery.parse, m;			for ( var i = 0; p[i]; i++ ) {				m = p[i].exec( t );				if ( m ) {					// Remove what we just matched					t = t.substring( m[0].length );					m[2] = m[2].replace(/\\/g, "");					break;				}			}			if ( !m )				break;			// :not() is a special case that can be optimized by			// keeping it out of the expression list			if ( m[1] == ":" && m[2] == "not" )				r = jQuery.filter(m[3], r, true).r;			// We can get a big speed boost by filtering by class here			else if ( m[1] == "." )				r = jQuery.classFilter(r, m[2], not);			else if ( m[1] == "@" ) {				var tmp = [], type = m[3];								for ( var i = 0, rl = r.length; i < rl; i++ ) {					var a = r[i], z = a[ jQuery.props[m[2]] || m[2] ];										if ( z == null || /href|src/.test(m[2]) )						z = jQuery.attr(a,m[2]);					if ( (type == "" && !!z ||						 type == "=" && z == m[5] ||						 type == "!=" && z != m[5] ||						 type == "^=" && z && !z.indexOf(m[5]) ||						 type == "$=" && z.substr(z.length - m[5].length) == m[5] ||						 type == "*=" && z.indexOf(m[5]) >= 0) ^ not )							tmp.push( a );				}								r = tmp;			// We can get a speed boost by handling nth-child here			} else if ( m[1] == ":" && m[2] == "nth-child" ) {				var num = jQuery.mergeNum++, tmp = [],					test = /(\d*)n\+?(\d*)/.exec(						m[3] == "even" && "2n" || m[3] == "odd" && "2n+1" ||						!/\D/.test(m[3]) && "n+" + m[3] || m[3]),					first = (test[1] || 1) - 0, last = test[2] - 0;				for ( var i = 0, rl = r.length; i < rl; i++ ) {					var node = r[i], parentNode = node.parentNode;					if ( num != parentNode.mergeNum ) {						var c = 1;						for ( var n = parentNode.firstChild; n; n = n.nextSibling )							if ( n.nodeType == 1 )								n.nodeIndex = c++;						parentNode.mergeNum = num;					}					var add = false;					if ( first == 1 ) {						if ( node.nodeIndex == last )							add = true;					} else if ( (node.nodeIndex + last) % first == 0 )						add = true;					if ( add ^ not )						tmp.push( node );				}				r = tmp;			// Otherwise, find the expression to execute			} else {				var f = jQuery.expr[m[1]];				if ( typeof f != "string" )					f = jQuery.expr[m[1]][m[2]];				// Build a custom macro to enclose it				eval("f = function(a,i){return " + f + "}");				// Execute it against the current filter				r = jQuery.grep( r, f, not );			}		}		// Return an array of filtered elements (r)		// and the modified expression string (t)		return { r: r, t: t };	},
6056	/local1/tlutelli/issta_data/temp/all_js/javascript/2007_temp/2007/6056/88c88f0704e70299cd3101a40b29cb37b79276d0/selector.js/clean/src/selector/selector.js