rem: } else if ( t.indexOf(',') == 0 || t.indexOf('|') == 0 ) { if ( ret[0] == context ) ret.shift(); done = $.merge( done, ret ); r = ret = [context]; 
add: } else if ( t.indexOf(',') == 0 || t.indexOf('|') == 0 ) { if ( ret[0] == context ) ret.shift(); done = $.merge( done, ret ); r = ret = [context]; 
context: $.Select = function( t, context ) {	context = context || $.context || document;	if ( t.constructor != String ) return [t];		if ( t.indexOf("//") == 0 ) {		context = context.documentElement;		t = t.substr(2,t.length);	} else if ( t.indexOf("/") == 0 ) {		context = context.documentElement;		t = t.substr(1,t.length);		// FIX Assume the root element is right :(		if ( t.indexOf('/') )			t = t.substr(t.indexOf('/'),t.length);	}		var ret = [context];  var done = [];	var last = null;    while ( t.length > 0 && last != t ) {    var r = [];		last = t;        t = $.cleanSpaces(t);        var re = new RegExp( "^//", "i" );    t = t.replace( re, "" );    if ( t.indexOf('..') == 0 || t.indexOf('/..') == 0 ) {			if ( t.indexOf('/') == 0 )				t = t.substr(1,t.length);      r = $.map( ret, function(a){ return a.parentNode; } );			t = t.substr(2,t.length);			t = $.cleanSpaces(t);    } else if ( t.indexOf('>') == 0 || t.indexOf('/') == 0 ) {      r = $.map( ret, function(a){ return ( a.childNodes.length > 0 ? $.sibling( a.firstChild ) : null ); } );			t = t.substr(1,t.length);			t = $.cleanSpaces(t);    } else if ( t.indexOf('+') == 0 ) {      r = $.map( ret, function(a){ return $.sibling(a).next; } );			t = t.substr(1,t.length);			t = $.cleanSpaces(t);    } else if ( t.indexOf('~') == 0 ) {      r = $.map( ret, function(a){        var r = [];        var s = $.sibling(a);        if ( s.n > 0 )          for ( var i = s.n; i < s.length; i++ )            r[r.length] = s[i];        return r;      } );			t = t.substr(1,t.length);			t = $.cleanSpaces(t);    } else if ( t.indexOf(',') == 0 || t.indexOf('|') == 0 ) {      if ( ret[0] == context ) ret.shift();      done = $.merge( done, ret );      r = ret = [context];			t = " " + t.substr(1,t.length);    } else {      var re = new RegExp( "^([#.]?)([a-z0-9\\*_-]*)", "i" );      var m = re.exec(t);						if ( m[1] == "#" ) { // Ummm, should make this work in all XML docs				var oid = document.getElementById(m[2]);				r = oid ? [oid] : [];        t = t.replace( re, "" );			} else {			  if ( m[2] == "" || m[1] == "." ) m[2] = "*";			  for ( var i = 0; i < ret.length; i++ ) {				  var o = ret[i];				  if ( o ) {					  switch( m[2] ) {						  case '*':							  r = $.merge( $.getAll(o), r );						  break;						  case 'text': case 'radio': case 'checkbox': case 'hidden':						  case 'button': case 'submit': case 'image': case 'password':						  case 'reset': case 'file':							  r = $.merge( $.grep( $.tag(o,"input"), 										  function(a){ return a.type == m[2] }), r );						  break;						  case 'input':							  r = $.merge( $.tag(o,"input"), r );							  r = $.merge( $.tag(o,"select"), r );							  r = $.merge( $.tag(o,"textarea"), r );						  break;						  default:							  r = $.merge( r, $.tag(o,m[2]) );						  break;					  }				  }			  }			}    }		var val = $.filter(t,r);		ret = r = val.r;		t = $.cleanSpaces(val.t);  }  if ( ret && ret[0] == context ) ret.shift();  done = $.merge( done, ret );  return done;};
meta: 1375	/local1/tlutelli/issta_data/temp/all_js/javascript/2006_temp/2006/1375/130b8a1c030ae7888934fcd8dee6695eac271fcb/jquery.js/clean/jquery/jquery.js