I am thinking about creating a website that as part of its functionality will allow users to create visio-style diagrams. Are there any Javascript libraries/frameworks that already provide this functionality? Or libraries/frameworks for other in-browser technologies such as flash, silverlight etc?
I know there are lots of graphic libraries that are capable of doing the drawing part, but I would like something that did higher level functionality such as supporting user interactions to:
add shapes, move them around with the mouse, delete them, resize them etc.
link shapes with lines (straight or bezier curves) and have the lines move with the shapes
Edit the lines by adding or removing control points
add text to a shape
automated diagram layout (not so essential, but nice to have)