A standard autocompleter (Autocompleter.Local in scripty1 parlance). The choices are the fifty U.S. states. It should behave like a regular text box, with a few exceptions:
When the user has typed at least one character in the box, a list of completions should be offered.
If the value in the box matches a substring of a possible choice, case-insensitively, then that choice should appear in the menu.
If there are no such matches, the menu should not appear.
When the menu appears, it should be free of any highlights.
While the menu is shown, the UP and DOWN arrow keys should move the highlight between choices.
When an item is highlighted, it can be "chosen" with TAB or RETURN. In both cases, pressing the key should fill the text box with the proper value, then blur the field. If TAB was pressed, focus should move to the dummy button control.
Hovering over a menu item with the mouse should highlight that item. Clicking on a menu item should behave identically to pressing RETURN.
The matching substring of a given choice should be bold.