The DHTML / Javascript Calendar in actionIn my work creating a fault logging system for a client wanting to improve their support services, I found the need to present editable date and time fields in an HTML form. Clearly free-text for this function is messy and horrible, so I wanted a pop-up DHTML date/time picker (aka calendar) to do the job for me. The support guy would just click on a little calendar icon next to the input field, then choose a date from a pretty popup.

I'd found a fairly cheap and nasty one which did the job. Although I don't like to name and shame, I will say that I was using a script called "My Date Time Picker" which had been written late in 2003 and which I'd gotten off HotScripts.com.

It worked. It produced horrible HTML and didn't use CSS at all, but it worked. I got half-way through attempting to modify its behaviour slightly to follow the principle of least astonishment by being a little more intuitive, when I realised that it was a nightmare and wondered just what the hell I was doing.

So I uncharacteristically left the script alone and went on a second surf around the web to find an alternative script to save me all the work, vaguely aware that I'd not searched for long the first time.

And what should I find but the answer to any desires any man or woman could ever have had for a DHTML date/time picker?

Enter dynarch

I'd actually run across dynarch's The DHTML / Javascript Calendar before, but seem to recall finding that it was a commercial product. That's probably because the owner signed an agreement to allow Zapatec to offer their own commercial version.

I've yet to determine the improvement shown by the pay-for version, as the open-source script is certainly a work of art. dynarch's script even 'interfaces' to a point with PHP, as it comes with a PHP wrapper which makes calling the date/time picker an absolute breeze.

Right through to the choice of skins (I'm using 'Aqua') the entire thing leaves the web developer end-user with barely any work to do whatsoever. So I'm happy.

Except that I'm starting to inevitably feel a little sorry for the script I dumped. :/