var getCss = function(o,key){
return o.currentStyle? o.currentStyle[key] : document.defaultView.getComputedStyle(o,false)[key];
var startDrag = function(bar, target, callback){
if(getCss(target, "left") !== "auto"){
params.left = getCss(target, "left");
if(getCss(target, "top") !== "auto"){
params.top = getCss(target, "top");
bar.onmousedown = function(event){
bar.onselectstart = function(){
params.currentX = e.clientX;
params.currentY = e.clientY;
document.onmouseup = function(){
if(getCss(target, "left") !== "auto"){
params.left = getCss(target, "left");
if(getCss(target, "top") !== "auto"){
params.top = getCss(target, "top");
document.onmousemove = function(event){
var e = event ? event: window.event;
var nowX = e.clientX, nowY = e.clientY;
var disX = nowX - params.currentX, disY = nowY - params.currentY;
target.style.left = parseInt(params.left) + disX + "px";
target.style.top = parseInt(params.top) + disY + "px";
if (typeof callback == "function") {
callback(parseInt(params.left) + disX, parseInt(params.top) + disY);