function setStyle(B,A){for(i in A){try{B[i]=strict(A[i])}catch(C){}}}function pushProperties(C,A){for(var B in C){try{A[B]=strict(C[B])}catch(D){}}}function strict(A){return(typeof A=="number")?(A+"px"):A}function Vector2d(A,B){this.x=A;this.y=B}Vector2d.prototype.clone=function(){return new Vector2d(this.x,this.y)};Vector2d.prototype.toString=function(){return this.x+":"+this.y};Vector2d.prototype.add=function(A){return new Vector2d(this.x+A.x,this.y+A.y)};Vector2d.prototype.subtract=function(A){return new Vector2d(this.x-A.x,this.y-A.y)};Vector2d.prototype.multiplyScalar=function(A){return new Vector2d(this.x*A,this.y*A)};Vector2d.prototype.rotate=function(C){var A=Math.sin(C);var B=Math.cos(C);return new Vector2d(B*this.x-A*this.y,A*this.x+B*this.y)};Vector2d.prototype.getLength=function(){return Math.sqrt(this.x*this.x+this.y*this.y)};Vector2d.prototype.getSqrLength=function(){return this.x*this.x+this.y*this.y};Vector2d.prototype.getAngle=function(){return Math.atan2(this.y,this.x)};Vector2d.prototype.normalize=function(){var A=this.getLength();if(A>0){this.x/=A;this.y/=A}else{this.x=0;this.y=0}};Vector2d.prototype.truncate=function(A){var B=this.getLength();if(B>A){this.x*=A/B;this.y*=A/B}};function World(A){this.el=A;this.width=this.el.clientWidth||this.el.offsetWidth;this.height=this.el.clientHeight||this.el.offsetHeight;this.carts=[];this.obstacles=[];this.ticker=null;this.time=0}World.prototype.addCart=function(){var A=new Cart(this);this.carts.push(A)};World.prototype.addObstacle=function(A,F,C,E){var D=document.createElement("DIV");this.el.appendChild(D);setStyle(D.style,{position:"absolute",left:strict(A-C/2),top:strict(F-C/2),width:strict(C),height:strict(C),backgroundImage:"url("+E+")",backgroundRepeat:"no-repeat",backgroundPosition:"0 0"});var B=new Obstacle(this,A,F,C,D);this.obstacles.push(B)};World.prototype.attachObstacle=function(A,E,C,D){var B=new Obstacle(this,A,E,C,D);this.obstacles.push(B)};World.prototype.tick=function(){var A=this.carts.length;while(A--){this.carts[A].tick()}this.time++};World.prototype.start=function(){var A=this;this.ticker=setInterval(function(){A.tick()},50)};World.prototype.stop=function(){if(this.ticker){clearInterval(this.ticker)}};function Obstacle(D,A,E,B,C){this.world=D;this.el=C;this.size=B;this.offset=this.size/-2;this.radius=this.size/-2;this.position=new Vector2d(A,E)}function Cart(A){this.world=A;this.el=document.createElement("DIV");this.world.el.appendChild(this.el);this.status=0;this.size=30;this.offset=this.size/-2;this.mass=1;this.position=new Vector2d(0,0);this.orientation=0;this.speed=5;this.maxForce=5;this.maxSpeed=10;setStyle(this.el.style,{position:"absolute",width:strict(this.size),height:strict(this.size),backgroundImage:"url(home/carts.png)",backgroundRepeat:"no-repeat",backgroundPosition:"0 0"})}Cart.prototype.draw=function(){var E=this.world.width;var A=this.world.height;var D=Math.PI*2;this.position.x=(this.position.x+E)%E;this.position.y=(this.position.y+A)%A;this.orientation=(this.orientation+D)%D;var C=-30*(Math.round(this.orientation/D*36-1/36)%36);var B=-30*this.status;this.el.style.left=strict(this.position.x+this.offset);this.el.style.top=strict(this.position.y+this.offset);this.el.style.backgroundPosition=strict(C)+" "+strict(B)};Cart.prototype.moveTo=function(A,C,B){this.position.x=A;this.position.y=C;this.orientation=B;this.draw()};Cart.prototype.tick=function(){var E=this.world.obstacles.length;var B,F,J,I,C=null,G=200;while(E--){B=this.world.obstacles[E];F=B.position.subtract(this.position);F=F.rotate(-this.orientation);if(F.x>0&&Math.abs(F.y)<B.size&&F.x<2*B.size&&F.x<G){C=E;G=F.x;nearestPos=F.clone()}}if(C!=null){var A=new Vector2d(0,-100/nearestPos.x*(nearestPos.y>0?1:-1))}else{var A=new Vector2d(0.5,0);A=A.rotate(Math.random()*2*Math.PI)}A.truncate(this.maxForce);var D=A.multiplyScalar(1/this.mass);var H=new Vector2d(this.speed,0);H=H.add(D);H.truncate(this.maxSpeed);H=H.rotate(this.orientation);this.speed=H.getLength();this.position=this.position.add(H);this.orientation=H.getAngle();this.draw()};var world;window.onload=function(){setTimeout("Start()",100)};function Start(){var C=document.getElementById("world");world=new World(C);var B,A,E,D;for(B=0;B<4;B++){world.addCart();A=Math.random()*world.width;E=Math.random()*world.height;D=Math.random()*2*Math.PI;world.carts[B].status=B%4;world.carts[B].moveTo(A,E,D)}world.attachObstacle(180+63/2,50+63/2,63,document.getElementById("lnkIcons"));world.attachObstacle(350+150/2,200+150/2,150,document.getElementById("lnkWhatPulse"));world.attachObstacle(100+150/2,340+150/2,150,document.getElementById("lnkPics"));world.start()}