+3  A: 

Add a click event to the cell - e.g. click on the cell. Each click could then change the status of the cell. This status could then be store via ajax or using a submit button like on a form. Each cell could relate to a hidden form field which is where you status could be kept.

matpol
I would allow the user the left-click in order to change availability (yes or no) and right click with a context menu to set specific criteria. Most of the time people will just be yes/no.I would also definitely use ajax to update the database behind the scenes. Most calendar programs will make the changes instantly when they are entered and you may have problems with them "forgetting" to hit the submit button. Any "submit" button should just mean "Ok, I'm done, take me somewhere else now".
Sparafusile
Going to pursue this route - seems sensible, but I wasnt sure if it was possible. I've been explicitly told that a context menu for setting criteria isnt wanted - that would've been my original idea too. Updating behind the scenes seems required, however. Cheers :)
MoominTroll
+1  A: 

Maybe take some inspiration from google calendar. There you can select a timespan in the month view by click-dragging a range of days. I guess thats a faster way of entering longer timespans. (Like the lower part of the dragon)

Malcolm Frexner
and there is a week calender plugin that does just this. I dont know the link but its very popular on those 10 jquery plugins you must have type blogs so google is your friend.
adam
Click dragging works just fine now - its the implementation of having several "states" that was the problem - right now I'm binding to an on/off state from a checkbox
MoominTroll
@adam You're probably thinking of FullCalendar, but I'm not sure it would work here.
Ryan