I need to implement a particular network graph in javascript. I've looked at InfoVis Toolkit and Protovis, but I'd have to implement a custom layout for them and a lot of custom code. I'm not sure they add much value. This widget needs to be super efficient as it will go on many highly visited webpages, I don't want the widget slowing anything down.
The nodes of this graph are html-rich. Dropdowns, input elements, popups, etc. So div's make a lot of sense for each node. I could simply create the divs in javascript using AJAX to read the data from my server. Implement the layout mechanism in javascript and animate everything when adding/updating/deleting nodes through jQuery.
The only thing I can think of preventing me from only using jQuery is the connections between the nodes. How do I draw them? I might be able to use something like Raphael underneath the nodes and coordinate between the node positions and Raphael, but after very briefly looking at Raphael, it looks tricky.
Is there another simpler way to draw the connections between the nodes? IE support is important at least for IE8. Preferably the lines can be curved and patterned (dotted lines, double lines, etc) to represent different types of connections.
UPDATE: I don't mind paying for a solution, like mxGraph which was suggested. The solution so far, which exists only in mind, is to create transparent PNG images of the various connections. Since the nodes in my situation are in somewhat of a grid, there's a maximum number of different connection images (will be pretty large though) and since they're transparent, they can be layered on top of each other. Make sense?