Canvas2Dw3D = function(object, width, height)  {
    this.object = object;
    this.numberOfPoints = this.object.length;
    this.width = width;
    this.height = height;
    this.origo2D = [this.width / 2, this.height / 2];

    this.element = document.createElement("canvas");
    this.element.width = this.width;
    this.element.height = this.height;
    this.context = this.element.getContext("2d");
    this.context.strokeStyle = "rgb(0, 255, 0)"; 

    this.parentElement = null;

    this.drawObject();
}

Canvas2Dw3D.prototype.drawObject = function() {
    var c, p, q;
    for (c in this.object) {
        p = this.object[c];
        q = this.object[(c+1)%this.numberOfPoints];
        this.drawLine([p[0], p[1]], [q[0], q[1]]);
    }
}

Canvas2Dw3D.prototype.drawLine = function(xy1, xy2) {
    with (this.context) {
        beginPath();
        moveTo(-xy1[0]+this.origo2D[0], -xy1[1]+this.origo2D[1]);
        lineTo(-xy2[0]+this.origo2D[0], -xy2[1]+this.origo2D[1]);
        stroke();
    }
}

Canvas2Dw3D.prototype.setParentElement = function(obj) {
    obj.appendChild(this.element);
    this.parentElement = obj;
}

HTMLElement.prototype.appendCanvas2Dw3DChild = function(obj) {
    obj.setParentElement(this);
}
