+jQuery.winnow = function( elements, qualifier, keep ) {
+ if(jQuery.isFunction( qualifier )) {
+ return jQuery.grep(elements, function(elem, i) {
+ return !!qualifier.call( elem, i ) === keep;
+ });
+ } else if( qualifier.nodeType ) {
+ return jQuery.grep(elements, function(elem, i) {
+ return (elem === qualifier) === keep;
+ })
+ } else if( typeof qualifier === "string" ) {
+ var filtered = jQuery.grep(elements, function(elem) { return elem.nodeType === 1 });
+
+ if(isSimple.test( qualifier )) return jQuery.multiFilter(qualifier, filtered, !keep);
+ else qualifier = jQuery.multiFilter( qualifier, elements );
+ }
+
+ return jQuery.grep(elements, function(elem, i) {
+ return (jQuery.inArray( elem, qualifier ) >= 0) === keep;
+ });
+}
+