Click on object and left button pressed move the mouse

Source

<svg xmlns="http://www.w3.org/2000/svg" width="500" height="400">
<script><![CDATA[
var appui=false,cible="",xd2=0,yd2=0,xd1=0,yd1=0,objet="";
function bouger(evt)
{xm=evt.clientX;ym=evt.clientY;
if ((xm<=5)||(xm>=495)||(ym<=5)||(ym>=395)) {appui=false}
else
{if (((cible=="rectangle")||(cible=="cercle"))&&(appui==true))
{
tran=objet.getAttribute("transform");
j=1;for (var i=1;i<5;i++) {posi=tran.indexOf(" ",j+1);j=posi};
tran=tran.substring(0,posi);
depx=xm+xd1-xd2;depy=ym+yd1-yd2;
if (cible=="rectangle") 
{if (depx<0) {depx=0};if (depx>400) {depx=400};if (depy<0) {depy=0};if (depy>350) {depy=350}};
if (cible=="cercle") 
{if (depx<50) {depx=50};if (depx>450) {depx=450};if (depy<50) {depy=50};if (depy>350) {depy=350}};
poly=tran+" "+depx+" "+depy+")";
objet.setAttribute("transform",poly)}}}
function lacher(evt)
{appui=false}
function cliquer(evt)
{cible=evt.target.getAttribute("id");svgdoc=evt.target.ownerDocument;
if ((cible=="rectangle")||(cible=="cercle"))
{appui=true;
xm=evt.clientX;ym=evt.clientY;
objet=svgdoc.getElementById(cible);
tran=objet.getAttribute("transform");j=1;
for (var i=1;i<5;i++) {posi=tran.indexOf(" ",j+1);j=posi}
posi2=tran.lastIndexOf(" ");
tranx=tran.substring(posi,posi2);xd1=parseInt(tranx,10); 
longue=tran.toString().length-1;posi2=posi2+1;
trany=tran.substring(posi2,longue);yd1=parseInt(trany,10);
xd2=xm;yd2=ym}}
]]></script>
<g onmousemove="bouger(evt)" onmousedown="cliquer(evt)" onmouseup="lacher(evt)">
<rect x="0" y="0" width="500" height="400" style="stroke-width:1; stroke:#0E0E0E; fill:#EEEEEE"/>
<rect id="rectangle" x="0" y="0" width="100" height="50" transform="matrix(1 0 0 1 50 50)" style="stroke-width:1; stroke:#0E0E0E; fill:red"/>
<ellipse id="cercle" cx="0" cy="0" rx="50" ry="50" transform="matrix(1 0 0 1 300 200)" style="stroke-width:1; stroke:#0E0E0E; fill:green"/>
</g>
</svg>

 

Run with Adobe ASV3 ASV 6 beta Squiggle Firefox 1.5 Opera 9 beta