Copied code for click() in mouseup/down().

This is bad code, because it's just copy/paste. I'll have to refactor
this later. The big insight gained, however, is that the code
used in mouseclick _is_ applicable to the mouseup and mousedown events,
if I properly separate the steps. Also, I get the highlight of the
word 'for free' (i.e. I don't need to code up a mousemove() handler).

The other big insight is that my handling for diagnols is not complete!

UGH!