A multi-purpose auto-completing form select replacement which queries a server using AJAX for a list or tree of value/name pairs matching the users selection or text input.
Large result sets can be paged using links below the list, which will trigger an AJAX update when clicked. Alternatively results can be returned in a hierarchical tree fashion, which the user can browse by expanding or contracting nodes. Expanding a new node will force another AJAX update. Results should be cached so that opening the same node or typing the same prefix will return cached results rather than touching the server again.