All pastes #798574 Raw Edit

Mine

public text v1 · immutable
#798574 ·published 2007-11-26 21:45 UTC
rendered paste body
var dragObject  = null;
var mouseOffset = null;

var zIndex = 1;

function setFocus(selectedWindow) {
    zIndex = zIndex + 1;
    selectedWindow.style.zIndex = zIndex;
}

function mouseCoords(ev){
    if(ev.pageX || ev.pageY){
        return {x:ev.pageX, y:ev.pageY};
    }
    return {
        x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
        y:ev.clientY + document.body.scrollTop  - document.body.clientTop
    };
}
function getMouseOffset(target, ev){
    ev = ev || window.event;
    
    var docPos    = getPosition(target);
    var mousePos  = mouseCoords(ev);
    return {x:mousePos.x - docPos.x, y:mousePos.y - docPos.y};
}

function getPosition(e){
    var left = 0;
    var top  = 0;
    
    while (e.offsetParent){
        left += e.offsetLeft;
        top  += e.offsetTop;
        e     = e.offsetParent;
    }
    
    left += e.offsetLeft;
    top  += e.offsetTop;
    
    return {x:left, y:top};
}

function mouseMove(ev){
    ev = ev || window.event;
    var mousePos = mouseCoords(ev);
    if(dragObject){      
        dragObject.style.position = 'absolute';
        dragObject.style.top      = mousePos.y - mouseOffset.y + "px";
        dragObject.style.left     = mousePos.x - mouseOffset.x + "px";
        return false;
    }
}
function mouseUp(){
    dragObject = null;
}

function makeDraggable(item, dragSource){   
    if(!item) return;
    if (dragSource) {
        dragSource.onmousedown = function(ev){
            setFocus(item);
            dragObject  = item;
            mouseOffset = getMouseOffset(this, ev);
            return false;
        }
    } else {
        item.onmousedown = function(ev){
            setFocus(this);
            dragObject  = this;
            mouseOffset = getMouseOffset(this, ev);
            return false;
        }
    }
}

var outputTxt = "";

function trace(txt){
    outputTxt += txt + "<br/>";
    document.getElementById("console").innerHTML = outputTxt;
}

document.onmousemove = mouseMove;
document.onmouseup   = mouseUp;