PIXI Drawing Boilderplate - David Komer

Fully working except bug with erase :\

HTML

<script src="http://code.jquery.com/jquery-2.1.3.min.js"></script>
<script src="http://hammerjs.github.io/dist/hammer.min.js"></script>
<script src="http://cdn.jsdelivr.net/pixi.js/2.2.0/pixi.js"></script>
<div id="sketchpad"></div>

<p/>
Erase Mode: <input type="checkbox" name="eraseMode" value="eraseMode" id="eraseMode" />

CSS

body {
    margin: 0;
    padding: 0;
    background-color: #ccc;
}

#sketchpad {
    background-color: #fff;
    width: 800px;
    height: 600px;
    margin: 0 auto;
}

JavaScript

/* 
    Globals
*/
var stage;
var renderer;
var drawLayer;
var targetWidth = 800;
var targetHeight = 600;
var externalBrushName = 'http://i.imgur.com/13BWFp8.png';
var externalBrushColor = 0xFF0000;

/*
    Utils
*/

function globalToLocalPosition(globalPosition, element) { // see http://www.html5gamedevs.com/topic/11347-batch-rendertexturerender/?p=66365
    var offset = getOffset(element);
    return {
        x: globalPosition.x - offset.left,
        y: globalPosition.y - offset.top
    };
}

function getOffset(el) {
    var _x = 0;
    var _y = 0;
    while (el && !isNaN(el.offsetLeft) && !isNaN(el.offsetTop)) {
        _x += el.offsetLeft - el.scrollLeft;
        _y += el.offsetTop - el.scrollTop;
        el = el.offsetParent;
    }
    return { left: _x, top: _y};
}


/*
    Brush Pool
*/
function BrushPool(_brushName, _brushColor) {
    this.brushName = _brushName;
    this.brushColor = _brushColor;
    this.sprites = [];
}

BrushPool.makeSprite = function(brushName, brushColor) {
    var childSprite;
    childSprite = new PIXI.Sprite(PIXI.TextureCache[brushName]);
    childSprite.tint = brushColor;
    childSprite.anchor.x = .5;
    childSprite.anchor.y = .5;
    return(childSprite);
}

BrushPool.prototype.grow = function(num) {
    var idx;

    for(idx = 0; idx < num; idx++) {
        this.sprites.push(BrushPool.makeSprite(this.brushName, this.brushColor));
    }
}

BrushPool.prototype.growTo = function(num) {
    var diff = num - this.sprites.length;

    if(diff > 0) {
        this.grow(diff);
    }
}

BrushPool.prototype.getBrush = function(idx, point) {
    var spr = this.sprites[idx];
    spr.x = point.x;
    spr.y = point.y;
    return(spr);
}


/*
    Draw Layer - see http://www.html5gamedevs.com/topic/11347-batch-rendertexturerender/?p=66012
*/

DrawLayer.prototype = new PIXI.DisplayObjectContainer();
DrawLayer.prototype.constructor = DrawLayer;

function DrawLayer(width, height) {
    PIXI.DisplayObjectContainer.call(this);

   ...