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.