Tools to create registration site with calendar and jQuery/ajax I belong to a volunteer organization that uses a painful .NET site for signing up for shifts (for example, you can change registrations for anyone, not just yourself), so I'm looking to create a Drupal site that can handle this process much easier and also allow admins to make changes without having to pay someone to make changes when needed.

You can see the current site below.  Each column is a day, the numbers (140, 148, etc.) are the stations, and the second column is the position. At one glance, you can see who is signed up on a given day and at which station. This is just one small part of the entire page, which is a calendar view of a whole month.

What I would like to do is create a "Register" button for each slot that uses ajax when clicked that would register the user for the shift and replace the button with the user's name (after doing some validation, such as making sure the user isn't signed up for another slot at the same time, they have permission for that slot, etc.). 

The trickiest part is creating the custom form and then displaying it in the calendar.  As with any Drupal site that needs a calendar, I'm looking at the Calendar and Full Calendar modules.  Both seem to require nodes with date fields and Views displays to show a calendar, so I'm guessing I would need to create something like a Shift entity with a date field and then create the node via the ajax code.  The bigger question is how to create the custom form and display it in the appropriate date in the calendar.  Is it a matter of creating a custom Views display handler for the form, or is there a simpler way? Once I figure that part out, the rest will be pretty easy.

Thanks.
Creating the form should be as easy as simply  as creating a content type and populate it with your needed fields. This content type will have the date,  the stations, etc etc.

Then, using views will be as easy as list your nodes. If you need to display them in a calendar you can customize your view using third modules, calendars or customizing your own view.

Good luck :-)