The USA Hockey Skills CD-ROM is an application designed for Coaches, Players and Parents involved in Youth Hockey. It functions as both a learning tool for and an encyclopedia of hockey fundamentals for all ages. The program consists of approximately 400 skills broken into different categories. The majority of skills are presented in video form along with a text description. Skills may also be a static image or full text article. Each skill has an associated multiple-choice question that appears along with the video. Users are able to search for content by keyword and/or category (skating, passing, etc.), age group (under 8, under 10, etc.), or number of players involved. Each video skill listed features an “add to playlist” button that enables the user to create a custom playlist. The disc also features a “Glossary” of hockey terms.
presentation builder This is the home screen for the DVD. The menu in the upper-right links to an index, the extras (two games and a glossary), an "about" section, and a help section. The main menu on the left is a modified "accordian" style menu containing the categorized skills, the user's saved playlists, recently viewed skills, and the USA Hockey Tutorials, which is a pre-selected set of skills for each age group. The background image changes each time the home screen loads.

ism sit screenEach section and sub-section of the main menu animates open and closed. The contents of the menu are read in dynamically from two XML files. The index file shows the structure of the menu subsections for the skills the hockey tutorials, with each skill represented by an id. The ids are then cross-referenced with a data file that contains all of the detailed information for every skill, including a skill type, title, age group, and number of players required to practice the skill. In addition, each skill contains an associated media file (flv, swf, or jpeg) if applicable, a text description, and a multiple-choice quiz. The index file also contains a list of keywords and associated ids, which is used for the search feature.

When the user selects a skill, it loads in the content viewer and the skill is highlighted in the menu. All of the skills in a sub-category play sequentially, and as each skill loads in the viewer, the menu highlights the appropriate skill. Skills are automatically added to the recently viewed section of the menu, and the user has the option of adding any skill to his custom playlist.

animated ism lettersItems in the menu can be filtered by age. Updates made to the filter are reflected in the menu immediately.
ism logos example oneThe user may create and save any number of video playlists. When an item is added to a playlist, then it may be removed or repositioned within the queue. Skills play sequentially in a playlist. The user may also jump directly to a category or subcategory in the browse skills section of the menu from within a playlist by clicking the category or subcategory associated with a particular skill. Playlist information is saved in a shared object on the user's hard drive.
ism executive staff memberWhen the user chooses to save or load a playlist, he is presented with a modal window containing all of his playlists. If he is saving or updating a playlist, he may give it a new name or overwrite an existing one. The user may also choose to delete an existing playlist at any time. Modal windows are managed by a class that I created to follow the Singleton design pattern, so windows created by any number of callers are funneled through a single manager, which handles the display of all modal windows in queue. Modal windows may be generic alerts and confirms, or one of a few special windows like the "ModalPlaylist" seen here.
ism menuSearches may be simple keyword searches, or more complex searches, such as the one shown here. In an advanced search, the user may or may not choose to type keywords, the results of which may be further filtered. If he chooses not to enter any keywords, the search will return all skills that match the selected ages, types, and number of players. Keyword searches are executed against a list of keywords defined in the index XML file. Advanced searches are filtered against the detailed data XML that contains all of the information about the age, type, and players associated with each skill. The index and data XML files are approximately 1 and 2 MB, respectively. I initally tried to use an XPath implementation, but keyword searches took up to 2 seconds on my machine. I then parsed the XML data into native AS objects and arrays, and I wrote prototype array functions that reduced the longest search time for any keyword to 13 milliseconds on my machine.
ism menuWhen the user selects a skill, it loads into the content viewer along with a text description of the skill and a multiple choice quiz question.
ism menuSkill descriptions appear in a textfield below the video. All skill descriptions are printable, and the printed descriptions may flow over multiple pages.
ism menu ism menuThe user has one chance to answer a quiz question. Subsequent views of the skill will indicate that the user has already answered the question. A correct answer results in a display of "CORRECT!" and an incorrect answer reveals the correct answer. A running tally of the correct answers and the number of attempts updates when the user makes his selection.
ism menuVideos have three viewing modes: normal, fullscreen, and fullscreen with no controls.
ism menuWhen skill titles are too long to fit in the title textfield, title names are trimmed to the appropriate size and ellipses are appended. The user may choose to loop a skill video. If the skill does not loop, the player automatically loads the next video in the queue. The user may also skip to the next video in the queue by clicking the next button. Clicking the back button will cause the video to rewind, or it will load the previous video in the queue if the current time of the video is less than one second.
ism menuA complete index of video skills may be loaded by clicking "VIEW INDEX" in the upper-right menu. The contents of the index are created dynamically, and are linked to the main menu. The user may open the main menu to a particular category or subcategory by selecting an item in the index.
ism menuThe glossary and help sections are scrolling blocks of text with anchored links. Both the glossary and the help are printable and print over multiple pages.