I couldn't help refactor this into modules; add blur/focus listeners; undo previous unnecessary change to split comments over many lines