Anche se non ho capito bene perche' funziona (la if aggiunta nella funzione drag(e) e' piuttosto "strana"), ho risolto la cosa modificando in questo modo le 3 funzioni di drag e impostandole direttamente tra gli eventi del div
//funzioni per il trascinamento dell'oggetto
function set_drag(e){
if (!e) var e = window.event;
oggetto=e.target||e.srcElement;
//if (!oggetto) var oggetto=e.srcElement;
oggetto.style.zIndex=10;
document.onmousemove=drag;
ready_to_drag=true;
doubleclickXPoint=e.clientX;
doubleclickYPoint=e.clientY;
}
function drag(e){
if (!e) var e = window.event;
currentXPosition=e.clientX;
currentYPosition=e.clientY;
if (doubleclickXPoint > currentXPosition){
newXCoord = doubleclickXPoint-currentXPosition;
}else{
newXCoord = currentXPosition-doubleclickXPoint;
}
if (doubleclickYPoint > currentYPosition){
newYCoord = doubleclickYPoint-currentYPosition;
}else{
newYCoord = currentYPosition-doubleclickYPoint;
}
if (ready_to_drag){
oggetto=e.target||e.srcElement;
oggetto.style.left=newXCoord;
oggetto.style.top=newYCoord;
}
}
function unset_drag(e){
if (!e) var e = window.event;
oggetto=e.target||e.srcElement;
document.onmousemove = null;
ready_to_drag=false;
}