A javascript virtual keyboard derived from http://www.greywyvern.com/code/javascript/keyboard, with a number of additions: