1 Raphael
.fn
.connection=function(a
,b
,c
){var d
=this,e
={draw:function(){for(var f
=a
.getBBox(),g
=b
.getBBox(),h
=0,i
=0,j
=[{x
:f
.x
+f
.width
/2,y:f.y-h},{x:f.x+f.width/2,y
:f
.y
+f
.height
+h
},{x
:f
.x
-h
,y
:f
.y
+f
.height
/2},{x:f.x+f.width+h,y:f.y+f.height/2},{x
:g
.x
+g
.width
/2,y:g.y-i},{x:g.x+g.width/2,y
:g
.y
+g
.height
+i
},{x
:g
.x
-i
,y
:g
.y
+g
.height
/2},{x:g.x+g.width+i,y:g.y+g.height/2}],k
={},l
=[],m
=0;m
<4;m
++)for(var n
=4;n
<8;n
++){var o
=Math
.abs(j
[m
].x
-j
[n
].x
),p
=Math
.abs(j
[m
].y
-j
[n
].y
);(m
==n
-4||(3!=m
&&6!=n
||j
[m
].x
<j
[n
].x
)&&(2!=m
&&7!=n
||j
[m
].x
>j
[n
].x
)&&(0!=m
&&5!=n
||j
[m
].y
>j
[n
].y
)&&(1!=m
&&4!=n
||j
[m
].y
<j
[n
].y
))&&(l
.push(o
+p
),k
[l
[l
.length
-1].toFixed(3)]=[m
,n
])}var q
=0==l
.length
?[0,4]:k
[Math
.min
.apply(Math
,l
).toFixed(3)],r
=j
[q
[0]].x
,s
=j
[q
[0]].y
,t
=j
[q
[1]].x
,u
=j
[q
[1]].y
,o
=Math
.max(Math
.abs(r
-t
)/2,10),p=Math.max(Math.abs(s-u)/2,10),v
=[r
,r
,r
-o
,r
+o
][q
[0]].toFixed(3),w
=[s
-p
,s
+p
,s
,s
][q
[0]].toFixed(3),x
=[0,0,0,0,t
,t
,t
-o
,t
+o
][q
[1]].toFixed(3),y
=[0,0,0,0,s
+p
,s
-p
,u
,u
][q
[1]].toFixed(3),z
=["M",r
.toFixed(3),s
.toFixed(3),"C",v
,w
,x
,y
,t
.toFixed(3),u
.toFixed(3)].join(",");if(c
&&c
.directed
){var A
=Math
.sqrt((u
-y
)*(u
-y
)+(t
-x
)*(t
-x
)),B=function(a
,b
){return-a
*(b
||5)/A},C=[{x:(B(t-x)+B(u-y)+t).toFixed(3),y:(B(u-y)+B(t-x)+u).toFixed(3)},{x:(B(t-x)-B(u-y)+t).toFixed(3),y:(B(u-y)-B(t-x)+u).toFixed(3)}];z=z+",M"+C[0].x+","+C[0].y+",L"+t+","+u+",L"+C[1].x+","+C[1].y}var D="attr";e.fg&&e.fg[D]({path:z})||(e.fg=d.path(z).attr({stroke:c&&c.stroke||"#000",fill:"none"}).toBack()),e.bg&&e.bg[D]({path:z})||c&&c.fill&&(e.bg=c.fill.split&&d.path(z).attr({stroke:c.fill.split("|")[0],fill:"none","stroke-width":c.fill.split("|")[1]||3}).toBack()),c&&c.label&&(e.label&&e.label.attr({x:(r+t)/2,y
:(s
+u
)/2})||(e.label=d.text((r+t)/2,(s
+u
)/2,c
.label
).attr({fill
:"#000","font-size":c
["font-size"]||"12px"}))),c
&&c
.label
&&c
["label-style"]&&e
.label
&&e
.label
.attr(c
["label-style"]),c
&&c
.callback
&&c
.callback(e
)}};return e
.draw(),e
};