function init(){function q(e){g=(e.clientX-u.x)/20;h=(e.clientY-u.y)/20+$(document).scrollTop()/20}function w(e){r=e.GetBody();return!0}var f=Box2D.Common.Math.b2Vec2,x=Box2D.Collision.b2AABB,c=Box2D.Dynamics.b2BodyDef,v=Box2D.Dynamics.b2Body,l=Box2D.Dynamics.b2FixtureDef,s=Box2D.Collision.Shapes.b2PolygonShape,y=Box2D.Collision.Shapes.b2CircleShape,t=Box2D.Dynamics.b2DebugDraw,z=Box2D.Dynamics.Joints.b2MouseJointDef,b=Box2D.Dynamics.Joints.b2RevoluteJointDef,d=new Box2D.Dynamics.b2World(new f(0,
10),!0),m,a,n=new b,o,b=new c;b.position.x=14;b.position.y=14;a=new l;a.shape=new s;a.shape.SetAsBox(0,0);a.density=0;a.friction=0.5;a.restitution=0.2;o=m=d.CreateBody(b);m.CreateFixture(a);for(var i=1;i<=40;i++){i==30?(b.type=v.b2_dynamicBody,a=new l,a.shape=new y(0.4),b.position.x=14,b.position.y=14+i*0.25,a.density=1):(b=new c,b.type=v.b2_dynamicBody,b.position.x=14,b.position.y=14+i*0.25,a=new l,a.shape=new s,a.shape.SetAsBox(0.01,0.1),a.density=10);a.friction=0.5;a.restitution=0.2;var j=d.CreateBody(b);
m=j.CreateFixture(a);n.Initialize(o,j,new f(14,14+i*0.25));d.CreateJoint(n);o=j}b.position.x=14;b.position.y=24.5;a=new l;a.shape=new s;c=[];c[0]=new f(0,0.5);c[1]=new f(0,0);c[2]=new f(0.5,0);c[3]=new f(0.5,0.5);a.shape.SetAsArray(c,4);a.density=0.25;a.friction=0.5;a.restitution=0.2;j=d.CreateBody(b);m=j.CreateFixture(a);n.Initialize(o,j,new f(14,24.5));d.CreateJoint(n);c=new t;c.SetSprite(document.getElementById("rope").getContext("2d"));c.SetDrawScale(20);c.SetFillAlpha(0.5);c.SetLineThickness(1);
c.SetFlags(t.e_shapeBit|t.e_jointBit);d.SetDebugDraw(c);window.setInterval(function(){if(p&&!k){var e;new f(g,h);e=new x;e.lowerBound.Set(g-0.001,h-0.001);e.upperBound.Set(g+0.001,h+0.001);r=null;d.QueryAABB(w,e);if(e=r){var a=new z;a.bodyA=d.GetGroundBody();a.bodyB=e;a.target.Set(g,h);a.collideConnected=!0;a.maxForce=300*e.GetMass();k=d.CreateJoint(a);e.SetAwake(!0)}}k&&(p?k.SetTarget(new f(g,h)):(d.DestroyJoint(k),k=null));d.Step(1/60,10,10);d.DrawDebugData()},1E3/60);var g,h,p,r,k,u=function(a){for(var b=
"",c=0,d=0;typeof a=="object"&&typeof a.tagName!="undefined";)if(d+=a.offsetTop,c+=a.offsetLeft,b=a.tagName.toUpperCase(),b=="BODY"&&(a=0),typeof a=="object"&&typeof a.offsetParent=="object")a=a.offsetParent;return{x:c,y:d}}(document.getElementById("rope"));document.addEventListener("mousedown",function(a){p=!0;q(a);document.addEventListener("mousemove",q,!0)},!0);document.addEventListener("mouseup",function(){document.removeEventListener("mousemove",q,!0);p=!1;h=g=void 0},!0)};
