function dir(el, prop, until) {
		var matched = [], cur = el[prop];

		if (typeof until != 'string' && until instanceof DomQuery) {
			until = until[0];
		}

		while (cur && cur.nodeType !== 9) {
			if (until !== undefined) {
				if (cur === until) {
					break;
				}

				if (typeof until == 'string' && DomQuery(cur).is(until)) {
					break;
				}
			}

			if (cur.nodeType === 1) {
				matched.push(cur);
			}

			cur = cur[prop];
		}

		return matched;
	}
Filters out items from the input array by calling the specified function for each item.
If the function returns false the item will be excluded if it returns true it will be included.

@static
@method grep
@param {Array} array Array of items to loop though.
@param {function} callback Function to call for each item. Include/exclude depends on it's return value.
@return {Array} New array with values imported and filtered based in input.
@example
// Filter out some items, this will return an array with 4 and 5
var items = DomQuery.grep([1, 2, 3, 4, 5], function(v) {return v > 3;});