Simple chained selects. You can choose from two different versions. Normal version uses uses classnames of select options to decide content of child select. It does not make any external AJAX(J) queries. Remote version makes external query and builds the child select from returned JSON response.
Given a group of select fields with the same options, SelectUnique will remove an option from the other fields when it’s selected, and put it back when it’s changed.