Using the Date Widget with Drupal's Form API

I recently had to use the Date module in a custom booking form that was constructed using Drupal's awesome Form API. Now I'm sure someone is going to come along and prove me wrong but I couldn't find any documentation on the available widget types, form properties or much of anything to be honest. I did find a few wrong examples that were doing some weird hacks like overwriting #process.