document.onmousemove = mouseMove;
document.onmouseup   = mouseUp;

var dragObject  = null;
var mouseOffset = null;
var canMove= false;

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 mouseCoords(ev){
        ev = ev || window.event;
        if(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
        };
        }
               return {x:10, y:10};
}


function mouseMove(ev){
        ev           = ev || window.event;
        var mousePos = mouseCoords(ev);
        if(dragObject){
           if(canMove){
                dragObject.style.position = 'absolute';
                dragObject.style.top      = mousePos.y - mouseOffset.y;
                dragObject.style.left     = mousePos.x - mouseOffset.x;
        return false;
        }
        }
        if(typeof(OtherMouseMoveFunctions) == 'function')
            OtherMouseMoveFunctions(ev)
}
function mouseUp(){
        dragObject = null;
}

function makeDraggable(item){
        if(!item) return;
        item.onmousedown = function(ev){
                dragObject  = this;
                mouseOffset = getMouseOffset(this, ev);
                return false;
        }

}

function InitObjectMove(id){
  var movableobj= document.getElementById(id);
         makeDraggable(movableobj);
         canMove= true;
}

function StopObjectMove(id){

   canMove= false;
   dragObject= null;
}

 function windowInitMove(id){
    var DivResultsModalWindow= document.getElementById("customModalDialogWindow_"+ id);
         makeDraggable(DivResultsModalWindow);
         canMove= true;
         if(typeof(windowSubItemsInitMove)== 'function'){
            windowSubItemsInitMove("customModalDialogWindow_"+ id);
         }
       }


 function windowStopMove(id){
 canMove= false;
   dragObject= null;
 }
