>Also a public holidays table with Holiday id (I'll store the possible holidays in a lookup table) and holiday date.
>
>Also a vacation table with staff id, start date and end date.
>
>Does that sound OK? Any ideas for improvement?
As far as I can see, you got that right. Maybe dragging an icon would be too much - doubleclick (or even a simple click, unless there's something else you want to do with the click) should be enough to flip between available/unavailable.
You'd need a couple of view forms, to show everyone for one day or week, to show the whole week for one guy, or one office for a given period - you figure it out, what's the information they want to see quickly.