function przesunDoPunktuKlikcniecia(zdarzenie) {
    zdarzenie = (zdarzenie) ? zdarzenie : event;
    if (zdarzenie.shiftKey) {
        var wspolrzedne = nazwaOdpowiedniejFunkcji(zdarzenie);   // zastpi faktyczn nazw funkcji 
                                                                 // okrelajcej wsprzdne
        przesunDo("strzalka", wspolrzedne.lewo, wspolrzedne.gora);
    }
}

document.onmousedown = nazwaOdpowiedniejFunkcji;

----------

function okreslWspolrzedneNaStronie(zdarzenie) {
    var wspolrzedne = {lewo:0, gora:0};
    if (zdarzenie.pageX) {
        wspolrzedne.lewo = zdarzenie.pageX;
        wspolrzedne.gora = zdarzenie.pageY;
    } else if (zdarzenie.clientX) {
        wspolrzedne.left = 
            zdarzenie.clientX + document.body.scrollLeft - document.body.clientLeft;
        wspolrzedne.top = 
            zdarzenie.clientY + document.body.scrollTop - document.body.clientTop;
        // jeli to konieczne, to uwzgldniamy obszar elementu html
        if (document.body.parentElement && document.body.parentElement.clientLeft) {
            var rodzicBody = document.body.parentElement;
            wspolrzedne.lewo += rodzicBody.scrollLeft - rodzicBody.clientLeft;
            wspolrzedne.gora += rodzicBody.scrollTop - rodzicBody.clientTop;
        }
    }
    return wspolrzedne;
}

----------

function okreslWspolrzedneWElemencie(zdarzenie) {
    var element = (zdarzenie.target) ? zdarzenie.target : zdarzenie.srcElement;
    var wspolrzedne = {lewo:0, gora:0};
    if (zdarzenie.layerX) {
        var obramowanie = {lewe:parseInt(stylElementu("pasekPostepow", 
                            "borderLeftWidth", "border-left-width")),
                           gorne:parseInt(stylElementu("pasekPostepow", 
                            "borderTopWidth", "border-top-width"))};
        wspolrzedne.lewo = zdarzenie.layerX - obramowanie.lewe;
        wspolrzedne.gora = zdarzenie.layerY - obramowanie.gorne;
    } else if (zdarzenie.offsetX) {
        wspolrzedne.lewo = zdarzenie.offsetX;
        wspolrzedne.gora = zdarzenie.offsetY;
    }
    zdarzenie.cancelBubble = true;
    return wspolrzedne;
}

function stylElementu(IdElem, WlasnoscStyluIE, WlasnoscStyluCSS) {
    var elem = document.getElementById(IdElem);
    if (elem.currentStyle) {
        return elem.currentStyle[WlasnoscStyluIE];
    } else if (window.getComputedStyle) {
        var styl = window.getComputedStyle(elem, "");
        return styl.getPropertyValue(WlasnoscStyluCSS);
    }
    return "";
}
