This is the best idea I could come up with, mainly because it is SO simple to write and administer, and it makes recreating it using the server very easy. Each block is a positioned element, and requires the same styles as I give them dynamically. It also needs the onclick="delEvent(this,'row1','xmlPartID');" attribute.
To make matters easy, the XML format is:
<event uniqueID="SSuniqueXML0" type="">
<from>12</from>
<to>42</to>
</event>
The numbers stored in from and to are measurements in pixels from the left edge of that row, where 3 pixels = 15 minutes.
To place server generated blocks, use
left:<from>px;width(<to>-<from>)px;clip:rect(0px,(<to>-<from>)px,21px,0px);
as well as the other styles required (see the source for the example block in the first row)
Click on the time event blocks to delete them.
This is a DOM script and will work in Internet Explorer 5+ (Win/Mac), Netscape 6+, Opera 7+, Konqueror 3+, Safari, OmniWeb 4.5+, ICEbrowser, OpenTV and Netgem browser. It could theoretically be made to work in Internet Explorer 4 and Netscape 4, but the extra programming required would prove unnecessary, as virtually no-one still uses these old, dead browsers, and Netscape 4 would probably just crash anyway (as usual!).