/*(function(window){
    if (CanvasRenderingContext2D.prototype.ellipse == undefined) {
        CanvasRenderingContext2D.prototype.ellipse = function(x, y, radiusX, radiusY, rotation, startAngle, endAngle, antiClockwise) {
            this.save();
            this.translate(x, y);
            this.rotate(rotation);
            this.scale(radiusX, radiusY);
            this.arc(0, 0, 1, startAngle, endAngle, antiClockwise);
            this.restore();
        }
    }
    if(!supportsPath2D){
        function Path2D_(){
            this.commandArrays = [];
        }
        Path2D_.prototype.moveTo = function(x,y){
            this.commandArrays.push({type:'move',coord:[x,y]})
        };
        Path2D_.prototype.lineTo = function(x,y){
            this.commandArrays.push({type:'line',coord:[x,y]})
        };

        Path2D_.prototype.bezierCurveTo = function(cx,cy,cx2,cy2,x,y){
            this.commandArrays.push({type:'bezierCurve',coord:[cx,cy,cx2,cy2,x,y]})
        };

        Path2D_.prototype.drawToContext = function(ctx){
            var command,i, len = this.commandArrays.length;
            ctx.beginPath();
            for(i=0;i<len;i+=1){
                command = this.commandArrays[i];
                switch(command.type){
                    case "move":
                        ctx.moveTo(command.coord[0],command.coord[1]);
                        break;
                    case "line":
                        ctx.lineTo(command.coord[0],command.coord[1]);
                        break;
                    case "bezierCurve":
                        ctx.bezierCurveTo(command.coord[0],command.coord[1],command.coord[2],command.coord[3],command.coord[4],command.coord[5]);
                        break;
                }
            }
        };
        window.Path2D = Path2D_;
    }
}(window))*/