Always look at the bright side of AS2.0 prototyping?

Hi, I have difficulties to understand the meaning and every line of it, cus I’m not a pro yet. Can U help me, teach me what it does and how?

Here it is:



Path = function(){
    this.init.apply(this,arguments);
}

Path.prototype.init = function(start_x, start_y){
    this._segments = [];
    this._length = 0;
    if (arguments.length) this.moveTo(start_x, start_y);
    else this.moveTo(0,0);
}

Path.prototype.moveTo = function(start_x, start_y){
    this._position = {_x:start_x, _y:start_y};
    return this;
}

Path.prototype.lineTo = function(end_x, end_y){
    var dx = end_x-this._position._x;
    var dy = end_y-this._position._y;
    var d = Math.sqrt(dx*dx+dy*dy);
    this._segments[this._segments.length] = {d:d, start:this._position, end:{_x:end_x, _y:end_y}, type:"L"};
    this._length += d;
    this._position = {_x:end_x, _y:end_y};
    return this;
}

Path.prototype.przesun = function(obj, t, orient){
    if (t<0) t = 0;
    else if (t>1) t=1;
    var pos = this._length*t;
    var seg, currPos = 0;
    var L = this._segments.length+1;
    for (var i=1; i<L; ++i){
        seg = this._segments[i-1];
        if (i == L || (currPos + seg.d) >= pos) break;
        currPos += seg.d;
    };
    t = (pos-currPos)/seg.d;
    switch(seg.type){
        case "L": // line
            var dx = seg.end._x - seg.start._x;
            var dy = seg.end._y - seg.start._y;
            obj._x = seg.start._x + dx*t;
            obj._y = seg.start._y + dy*t;
            if (orient) obj._rotation = Math.atan2(dy, dx)*180/Math.PI;
            break;
    };
    return this;
};