function find($selector, $idx=null, $lowercase=false)
	{
		$selectors = $this->parse_selector($selector);
		if (($count=count($selectors))===0) return array();
		$found_keys = array();

		// find each selector
		for ($c=0; $c<$count; ++$c)
		{
			// The change on the below line was documented on the sourceforge code tracker id 2788009
			// used to be: if (($levle=count($selectors[0]))===0) return array();
			if (($levle=count($selectors[$c]))===0) return array();
			if (!isset($this->_[HDOM_INFO_BEGIN])) return array();

			$head = array($this->_[HDOM_INFO_BEGIN]=>1);

			// handle descendant selectors, no recursive!
			for ($l=0; $l<$levle; ++$l)
			{
				$ret = array();
				foreach ($head as $k=>$v)
				{
					$n = ($k===-1) ? $this->dom->root : $this->dom->nodes[$k];
					//PaperG - Pass this optional parameter on to the seek function.
					$n->seek($selectors[$c][$l], $ret, $lowercase);
				}
				$head = $ret;
			}

			foreach ($head as $k=>$v)
			{
				if (!isset($found_keys[$k]))
				{
					$found_keys[$k] = 1;
				}
			}
		}

		// sort keys
		ksort($found_keys);

		$found = array();
		foreach ($found_keys as $k=>$v)
			$found[] = $this->dom->nodes[$k];

		// return nth-element or array
		if (is_null($idx)) return $found;
		else if ($idx<0) $idx = count($found) + $idx;
		return (isset($found[$idx])) ? $found[$idx] : null;
	}
function find($selector, $idx=null, $lowercase=false)
	{
		$selectors = $this->parse_selector($selector);
		if (($count=count($selectors))===0) return array();
		$found_keys = array();

		// find each selector
		for ($c=0; $c<$count; ++$c)
		{
			// The change on the below line was documented on the sourceforge code tracker id 2788009
			// used to be: if (($levle=count($selectors[0]))===0) return array();
			if (($levle=count($selectors[$c]))===0) return array();
			if (!isset($this->_[HDOM_INFO_BEGIN])) return array();

			$head = array($this->_[HDOM_INFO_BEGIN]=>1);

			// handle descendant selectors, no recursive!
			for ($l=0; $l<$levle; ++$l)
			{
				$ret = array();
				foreach ($head as $k=>$v)
				{
					$n = ($k===-1) ? $this->dom->root : $this->dom->nodes[$k];
					//PaperG - Pass this optional parameter on to the seek function.
					$n->seek($selectors[$c][$l], $ret, $lowercase);
				}
				$head = $ret;
			}

			foreach ($head as $k=>$v)
			{
				if (!isset($found_keys[$k]))
				{
					$found_keys[$k] = 1;
				}
			}
		}

		// sort keys
		ksort($found_keys);

		$found = array();
		foreach ($found_keys as $k=>$v)
			$found[] = $this->dom->nodes[$k];

		// return nth-element or array
		if (is_null($idx)) return $found;
		else if ($idx<0) $idx = count($found) + $idx;
		return (isset($found[$idx])) ? $found[$idx] : null;
	}
function find ( $ selector , $ idx = null , $ lowercase = false ) { $ selectors = $ this -> parse_selector ( $ selector ) ; if ( ( $ count = count ( $ selectors ) ) === 0 ) return array ( ) ; $ found_keys = array ( ) ; // find each selector
 for ( $ c = 0 ; $ c < $ count ; ++ $ c ) { // The change on the below line was documented on the sourceforge code tracker id 2788009
 // used to be: if (($levle=count($selectors[0]))===0) return array();
 if ( ( $ levle = count ( $ selectors [ $ c ] ) ) === 0 ) return array ( ) ; if ( ! isset ( $ this -> _ [ HDOM_INFO_BEGIN ] ) ) return array ( ) ; $ head = array ( $ this -> _ [ HDOM_INFO_BEGIN ] => 1 ) ; // handle descendant selectors, no recursive!
 for ( $ l = 0 ; $ l < $ levle ; ++ $ l ) { $ ret = array ( ) ; foreach ( $ head as $ k => $ v ) { $ n = ( $ k === - 1 ) ? $ this -> dom -> root : $ this -> dom -> nodes [ $ k ] ; //PaperG - Pass this optional parameter on to the seek function.
 $ n -> seek ( $ selectors [ $ c ] [ $ l ] , $ ret , $ lowercase ) ; } $ head = $ ret ; } foreach ( $ head as $ k => $ v ) { if ( ! isset ( $ found_keys [ $ k ] ) ) { $ found_keys [ $ k ] = 1 ; } } } // sort keys
 ksort ( $ found_keys ) ; $ found = array ( ) ; foreach ( $ found_keys as $ k => $ v ) $ found [ ] = $ this -> dom -> nodes [ $ k ] ; // return nth-element or array
 if ( is_null ( $ idx ) ) return $ found ; else if ( $ idx < 0 ) $ idx = count ( $ found ) + $ idx ; return ( isset ( $ found [ $ idx ] ) ) ? $ found [ $ idx ] : null ; }
PaperG - added ability for find to lowercase the value of the selector.
PaperG - added ability for find to lowercase the value of the selector .