future

    (none of these things are definite.  i just like to keep a list of ideas that i've bounced around with various people)

    - have a toFront and toBack method available on Connection (and on return value from jsPlumb.select method).
    would require some notion of what the default zindex was. how best to do that?

    - expose "rehomeEndpoint" method on jsPlumb (and 'rehome' on Endpoint); this takes an Endpoint and moves it
    to a different parent. should take an optional second method to provide the Container to use.

    - text on path (see demo)?

    - performance tests: 
        - single SVG element, many paths (what are mouse interaction/zindex ramifications?)
        - single canvas (have to paint nodes). 
        - VML groups.

    - type selector that takes some data and decides which types to apply to a 
    connection or endpoint.



    FAQ

        http://jsfiddle.net/sporritt/S4Fxk/12/   (connect to intermediate endpoint)
        http://jsfiddle.net/sporritt/ZUm7p/50/  (connect list items)

        extending a connector:
        jsPlumb.Connectors.Flowchart2 = function(params) {
            jsPlumb.Connectors.Flowchart.apply(this, arguments);
            var _c = this._compute;
            this._compute = function(paintInfo, params) {
                paintInfo.endStubX += 30;
                _c(paintInfo, params);
            }

        };

        ---

        makeTarget when elements verlap:

        https://groups.google.com/forum/?fromgroups#!topic/jsplumb/C9d217E34oo

        dropOptions: {
                          hoverClass: "dragHover",
                          over: function(event, ui){
                              $('.w').not(self.$el).droppable("disable");
                          },
                          out: function(event, ui){
                              $('.w').droppable("enable");
                          }
                      }
        
        ---

        CSS to disable drag highlight:
        
        http://stackoverflow.com/questions/826782/css-rule-to-disable-text-selection-highlighting


    Performance
    -----------

    What takes most of the time?

        - jsBezier 

            jsBezier load test with 100 000 curves took tens of milliseconds, so we can discount this.

        - DOM relayouts

            adding individual elements to the DOM, one for each connection/endpoint, causes dom relayouts.
            is it possible to batch element creation using document fragments instead?

        - getting offsets/size info

            are there too many calls to updateOffset/getSize ?   

            would i be better off just lifting a decent .offset function from somewhere?  then i could
            take CSS3 transforms into account, and margins, and scroll.

        - anchorManager

            is the redraw routine in anchor manager optimized?

        - native calls

            would there be any gain in introducing a layer that used native methods like getElementById,
            querySelector, querySelectorAll, and set CSS properties direvtly?  does el.classList exist in all
            browsers?  does it work on SVG elements?  does it work on VML elements?

        - 


1.3.16

    - add "perimeter" anchors: basically helper methods that create a set of dynamic anchors that together approximate the perimeter of some shape.  so if you had circles, for instance, it would be straightforward to get a set of anchors that travel around the circumference of each one.  or ellipses. whatever.  also look into the possibility of jsPlumb interacting directly with SVG/VML elements to determine their perimeter.        
		
		
	-  multiple paint styles, referenced by name.  a simple case in on example app i saw could be "up", which paints green,
	and "down" which paints red.  then you could have "fat" and "skinny" for the bandwidth, for example.  this would be backed with an API that behaved like classes on DOM elements -
	you could have multiple assigned at once and jsPlumb would merge them all together.

        (done, implemented as the 'types' concept)


1.3.11

	- add jsPlumb.selectEndpoints(...); behaves the same way as .select, but for Endpoints


1.3.9
    - do not set jsplumb scope on draggables when it's just some div you are making draggable. (issue 245) DONE

1.3.5
       
    - refactor assigning endpoint styles into a common helper method    DONE    
    - oncontextmenu event bind  DONE
    
1.3.6

	- mix of standard anchors on one end and continuous on the other does not paint  (done)
	- arrow overlay on flowchart sometimes jumps  (done)
	- random drag log entries  (done)
	- importDefaults({ some defaults })  method on jsPlumb (like a bulk import) DONE
    - draggable by parent issue from google code DONE

possible future enhancements

    - beforeDrag interceptor
    - straight connector with continuous anchors disappears when horizontal or vertical (fixed?)
    - single SVG element/single VML group/single Canvas per page?
    - qunit: add helper methods to simulate mousedown and drag.  then write some functional tests.
    - image overlay?
    - make AnchorManager the source of knowledge about connections (remove connections by scope etc)   

    - z-index: make a highlighted connection or one which is connected to an element that is being dragged come to the top over other connections.  have a toFront and toBack method available on Connection (and on return value from jsPlumb.select method)

    - jsPlumb should handle scope, dragActive etc. then can support multiple scopes.

    - paint style "profiles": labelled paint styles, with inheritance. so hover, as an example, could extend from some normal state, and just override a couple of values.  or you might have different "types" of connections, the paint styles for which could extend some default.