Внерамочная, автозагружаемая, автономная функция таскания чего угодно куда хочешь. (с) я
function DragElems(elemtype) {
var x =0;
var y =0;
var oX =0;
var oY =0;
var pX =0;
var pY =0;
var obj =0;
var z =0;
var mouse=0;
var refresh = function(e) {
e = e || window.event;
if (e.type == 'mousedown') {
set(e);
oX = x;
oY = y;
obj.style.curor = 'move';
obj.style.zIndex = z++;
pos();
}
if (e.type == 'mouseup') {
obj.style.cursor = 'auto';
obj.style.border = "0";
}
if (e.type == 'mousemove') {
set(e);
obj.style.curor = "move";
obj.style.left = (x-oX+pX)+"px";
obj.style.top = (y-oY+pY)+"px";
}
};
var pos = function() {
pX = pY = 0;
var o = obj;
if(o.offsetParent) {
do {
pX += o.offsetLeft;
pY += o.offsetTop;
} while((o = o.offsetParent));
}
};
var set = function(e) {
if(e.pageX || e.pageY) {
x = e.pageX;
y = e.pageY;
}
else if(e.clientX || e.clientY) {
x = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
y = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
}
};
var show = function() {
obj.style.border = "1px solid grey";
mouse = 1;
};
// автолодер
(function() {
var elems = document.getElementsByTagName(elemtype);
for(var i = 0; i < elems.length; i++) {
addEvent(elems[i], "mousedown",
function(e) {
obj = e.srcElement || e.target;
refresh(e);
z = 1;
mouse = window.setTimeout(show, 2000);
}
);
addEvent(elems[i], "mouseup",
function(e){
window.clearTimeout(mouse);
refresh(e);
mouse = 0;
}
);
addEvent(elems[i], "mousemove", function(e) {
if(mouse == 1)
refresh(e);
}
);
}
})(elemtype);
};