(function (global) {
// NameSpace
global.Crazy = Crazy || {};
var Crazy = global.Crazy;
var ctx = null;
// The Labratory
Crazy.Lab = function () {
var canvas = document.createElement('canvas');
document.body.appendChild(canvas);
document.body.style.padding = 0;
document.body.style.margin = 0;
this.width = canvas.width = window.innerWidth;
this.height = canvas.height = window.innerHeight;
canvas.style.display = "block";
canvas.style.backgroundColor = "#f6f6f6";
ctx = this.ctx = canvas.getContext("2d");
}
Crazy.Lab.prototype.constructor = Crazy.Lab;
Crazy.Point = function (x, y) {
this.x = x;
this.y = y;
ctx.beginPath();
ctx.arc(x, y, 2, 0, Math.PI * 2, false);
ctx.fill();
}
Crazy.Point.prototype.constructor = Crazy.Point;
Crazy.Line = function (p1, p2) {
ctx.beginPath();
ctx.moveTo(p2.x, p2.y);
ctx.lineTo(p1.x, p1.y);
ctx.stroke();
}
Crazy.Line.prototype.constructor = Crazy.Line;
return Crazy;
})(this);
KGZ1bmN0aW9uIChnbG9iYWwpIHsKCi8vIE5hbWVTcGFjZQpnbG9iYWwuQ3JhenkgPSBDcmF6eSB8fCB7fTsKdmFyIENyYXp5ID0gZ2xvYmFsLkNyYXp5Owp2YXIgY3R4ID0gbnVsbDsKCi8vIFRoZSBMYWJyYXRvcnkKQ3JhenkuTGFiID0gZnVuY3Rpb24gKCkgewoKCSB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7CgoJIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY2FudmFzKTsKCSBkb2N1bWVudC5ib2R5LnN0eWxlLnBhZGRpbmcgPSAwOwoJIGRvY3VtZW50LmJvZHkuc3R5bGUubWFyZ2luID0gMDsKCgkgdGhpcy53aWR0aCA9IGNhbnZhcy53aWR0aCA9ICB3aW5kb3cuaW5uZXJXaWR0aDsKCSB0aGlzLmhlaWdodCA9IGNhbnZhcy5oZWlnaHQgPSAgd2luZG93LmlubmVySGVpZ2h0OwoKCgkgY2FudmFzLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwoJIGNhbnZhcy5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAiI2Y2ZjZmNiI7CgoJIGN0eCA9IHRoaXMuY3R4ID0gY2FudmFzLmdldENvbnRleHQoIjJkIik7CgoKfQoKQ3JhenkuTGFiLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IENyYXp5LkxhYjsKCgpDcmF6eS5Qb2ludCA9IGZ1bmN0aW9uICh4LCB5KSB7Cgl0aGlzLnggPSB4OwoJdGhpcy55ID0geTsKCgljdHguYmVnaW5QYXRoKCk7CgljdHguYXJjKHgsIHksIDIsIDAsIE1hdGguUEkgKiAyLCBmYWxzZSk7CgljdHguZmlsbCgpOwp9CgpDcmF6eS5Qb2ludC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBDcmF6eS5Qb2ludDsKCkNyYXp5LkxpbmUgPSBmdW5jdGlvbiAocDEsIHAyKSB7CgljdHguYmVnaW5QYXRoKCk7CgljdHgubW92ZVRvKHAyLngsIHAyLnkpOwoJY3R4LmxpbmVUbyhwMS54LCBwMS55KTsKCWN0eC5zdHJva2UoKTsKfQoKQ3JhenkuTGluZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBDcmF6eS5MaW5lOwpyZXR1cm4gQ3Jhenk7Cgp9KSh0aGlzKTs=