var SpinningSquare = Container.expand(function () {
	var self = Container.call(this);
	var squareGraphics = self.createAsset('square', 'Spinning Square', 0.5, 0.5);
	squareGraphics.tint = Math.random() * 0xFFFFFF;
	squareGraphics.blendMode = 1;
	self.rotationSpeed = 0.01;
	self.rotate = function () {
		self.rotation += self.rotationSpeed;
	};
	self.originalX = 0;
	self.originalY = 0;
	self.velocityX = 0;
	self.velocityY = 0;
});
var Game = Container.expand(function () {
	var self = Container.call(this);
	var spinningSquares = [];
	var lastTouchTime = LK.ticks;
	for (var i = 0; i < 2000; i++) {
		var spinningSquare = self.addChild(new SpinningSquare());
		spinningSquare.x = Math.random() * 2048;
		spinningSquare.y = Math.random() * 2732;
		spinningSquare.rotation = Math.atan2(spinningSquare.y - 2732 / 2, spinningSquare.x - 2048 / 2);
		spinningSquare.originalX = spinningSquare.x;
		spinningSquare.originalY = spinningSquare.y;
		spinningSquares.push(spinningSquare);
	}
	self.drag = function (obj) {
		var event = obj.event;
		var pos = event.getLocalPosition(self);
		lastTouchTime = LK.ticks;
		for (var i = 0; i < spinningSquares.length; i++) {
			var dx = spinningSquares[i].x - pos.x;
			var dy = spinningSquares[i].y - pos.y;
			var distance = Math.sqrt(dx * dx + dy * dy);
			if (distance < 200) {
				spinningSquares[i].bounceBack = true;
				spinningSquares[i].bounceBackX = dx * 1.5;
				spinningSquares[i].bounceBackY = dy * 1.5;
			}
		}
	};
	stage.on('down', self.drag);
	stage.on('move', self.drag);
	LK.on('tick', function () {
		for (var i = 0; i < spinningSquares.length; i++) {
			spinningSquares[i].rotate();
			if (spinningSquares[i].bounceBack) {
				spinningSquares[i].x += spinningSquares[i].bounceBackX * 0.1;
				spinningSquares[i].y += spinningSquares[i].bounceBackY * 0.1;
				spinningSquares[i].bounceBackX *= 0.9;
				spinningSquares[i].bounceBackY *= 0.9;
				if (Math.abs(spinningSquares[i].bounceBackX) < .025 && Math.abs(spinningSquares[i].bounceBackY) < .025) {
					if (LK.ticks - lastTouchTime > 60) {
						spinningSquares[i].bounceBack = false;
					}
				}
			}
			if (!spinningSquares[i].bounceBack) {
				var dx = spinningSquares[i].originalX - spinningSquares[i].x;
				var dy = spinningSquares[i].originalY - spinningSquares[i].y;
				spinningSquares[i].velocityX += dx * 0.01;
				spinningSquares[i].velocityY += dy * 0.01;
				spinningSquares[i].x += spinningSquares[i].velocityX;
				spinningSquares[i].y += spinningSquares[i].velocityY;
				spinningSquares[i].velocityX *= 0.9;
				spinningSquares[i].velocityY *= 0.9;
			}
		}
	});
});
 var SpinningSquare = Container.expand(function () {
	var self = Container.call(this);
	var squareGraphics = self.createAsset('square', 'Spinning Square', 0.5, 0.5);
	squareGraphics.tint = Math.random() * 0xFFFFFF;
	squareGraphics.blendMode = 1;
	self.rotationSpeed = 0.01;
	self.rotate = function () {
		self.rotation += self.rotationSpeed;
	};
	self.originalX = 0;
	self.originalY = 0;
	self.velocityX = 0;
	self.velocityY = 0;
});
var Game = Container.expand(function () {
	var self = Container.call(this);
	var spinningSquares = [];
	var lastTouchTime = LK.ticks;
	for (var i = 0; i < 2000; i++) {
		var spinningSquare = self.addChild(new SpinningSquare());
		spinningSquare.x = Math.random() * 2048;
		spinningSquare.y = Math.random() * 2732;
		spinningSquare.rotation = Math.atan2(spinningSquare.y - 2732 / 2, spinningSquare.x - 2048 / 2);
		spinningSquare.originalX = spinningSquare.x;
		spinningSquare.originalY = spinningSquare.y;
		spinningSquares.push(spinningSquare);
	}
	self.drag = function (obj) {
		var event = obj.event;
		var pos = event.getLocalPosition(self);
		lastTouchTime = LK.ticks;
		for (var i = 0; i < spinningSquares.length; i++) {
			var dx = spinningSquares[i].x - pos.x;
			var dy = spinningSquares[i].y - pos.y;
			var distance = Math.sqrt(dx * dx + dy * dy);
			if (distance < 200) {
				spinningSquares[i].bounceBack = true;
				spinningSquares[i].bounceBackX = dx * 1.5;
				spinningSquares[i].bounceBackY = dy * 1.5;
			}
		}
	};
	stage.on('down', self.drag);
	stage.on('move', self.drag);
	LK.on('tick', function () {
		for (var i = 0; i < spinningSquares.length; i++) {
			spinningSquares[i].rotate();
			if (spinningSquares[i].bounceBack) {
				spinningSquares[i].x += spinningSquares[i].bounceBackX * 0.1;
				spinningSquares[i].y += spinningSquares[i].bounceBackY * 0.1;
				spinningSquares[i].bounceBackX *= 0.9;
				spinningSquares[i].bounceBackY *= 0.9;
				if (Math.abs(spinningSquares[i].bounceBackX) < .025 && Math.abs(spinningSquares[i].bounceBackY) < .025) {
					if (LK.ticks - lastTouchTime > 60) {
						spinningSquares[i].bounceBack = false;
					}
				}
			}
			if (!spinningSquares[i].bounceBack) {
				var dx = spinningSquares[i].originalX - spinningSquares[i].x;
				var dy = spinningSquares[i].originalY - spinningSquares[i].y;
				spinningSquares[i].velocityX += dx * 0.01;
				spinningSquares[i].velocityY += dy * 0.01;
				spinningSquares[i].x += spinningSquares[i].velocityX;
				spinningSquares[i].y += spinningSquares[i].velocityY;
				spinningSquares[i].velocityX *= 0.9;
				spinningSquares[i].velocityY *= 0.9;
			}
		}
	});
});