The functions you see cannot get any smaller than they are.
The
code is quite difficult to read because indentation is so random and there are a bunch of global variables with very short names. There certainly is room for optimizations at many places (and smaller doesn't necessarily mean faster). I'll just point out one thing that confuses me: setTimeout("startTIME()",1). I don't understand why people do this. Passing a string makes the interpreter eval() it. Just pass the actual function: setTimeout(startTIME,1).
To update the timer, a event is set that updates the timer periodically. This event occurs every 1 millisecond. And because javascript is client side, this is inevitable.
I could make an option to update the timer in a lesser frequency (perhaps every 10 ms) but that would make it less precise.
Why do you think it's inevitable (and what does client side have to do with it)?
Yes, it would make it less precise, but only because you're doing something dumb in addTime(). If you used simply (pseudo-code) "currentTime - startTime" to get the elapsed time -- instead of "$('clock').innerHTML" -- it would be more accurate and it wouldn't matter what the timer is showing. You could update it once every 100ms and only display the seconds like qqwref suggested (I think it's a good idea) without losing precision.