var goLine;
var goScale;
var goMoveScale;
var goX, goY;
var isPoint = false;


function initGO(canvas, width, height){
    r = Raphael(canvas, width, height);
}

function createGO(path, scale, area){
    r.clear();
    goLine = r.path(path).attr({stroke: "#ff0000", "stroke-width": 2, "stroke-linecap": "round"});
    if(area == 'true'){
        goLine.attr("fill", "#ffff00");
        goLine.attr("fill-opacity", "0.4");
    }
    isPoint = false;
    if(goLine.getTotalLength() == 0){
        isPoint = true;
        path = path.substring(1);
        var ind = path.indexOf(' ');
        var x = parseInt(path.substring(0, ind));
        var y = parseInt(path.substring(ind+1));
        var discattr = {fill: "#ff0000", stroke: "none"};
        goLine = r.circle(x, y, 4).attr(discattr);
    }

    goScale = scale;
    goMoveScale = scale;
    goX = 0;
    goY = 0;
}

function scaleGO(scale){
    if(goLine){
        var t = goMoveScale/scale;
        var sx = goX*t;
        var sy = goY*t;
        goLine.translate(sx-goX, sy-goY);
        goX = sx;
        goY = sy;
        goMoveScale = scale;
        if(!isPoint){
            var k = goScale/scale;
            goLine.scale(k,k);
        }
    }
}

function translateGO(x, y, scale){
    if(goLine){
        goMoveScale = scale
        goX += x;
        goY += y;
        goLine.translate(x,y);
    }
}


