Suggestions on best JavaScript library for 2D drawing

I need to develop a flow charting like feature for a new application.
(i.e. Drawing/sizing simple 2D shapes like squares or circles,
connecting them with straight or curved lines and being able to drag
and drop the shapes while maintaining the connectors. I also need to
be able to annotate that shapes with text.) I want to use javascript
for this instead of Flash.

Does anybody have a suggestion for/experience with a javascript
library that would provide this functionality?

I've looked at Dojo, jQuery, ExtJS, Raphael (

Any advice is greatly appreciated.