/* x_drag.js compiled from X 4.0 with XC 0.27b. Distributed by GNU LGPL. For copyrights, license, documentation and more visit Cross-Browser.com */
function xDisableDrag(id, last)
{
if (!window._xDrgMgr)
return;
var ele = xGetElementById(id);
ele.xDraggable = false;
ele.xODS = null;
ele.xOD = null;
ele.xODE = null;
xRemoveEventListener(ele, 'mousedown', _xOMD, false);
if (_xDrgMgr.mm && last)
{
_xDrgMgr.mm = false;
xRemoveEventListener(document, 'mousemove', _xOMM, false);
}
}
var _xDrgMgr = {ele:null, mm:false};
function xEnableDrag(id,fS,fD,fE)
{
var ele = xGetElementById(id);
ele.xDraggable = true;
ele.xODS = fS;
ele.xOD = fD;
ele.xODE = fE;
xAddEventListener(ele, 'mousedown', _xOMD, false);
if (!_xDrgMgr.mm)
{
_xDrgMgr.mm = true;
xAddEventListener(document, 'mousemove', _xOMM, false);
}
}
function _xOMD(e)
{
var evt = new xEvent(e);
var ele = evt.target;
while(ele && !ele.xDraggable)
{
ele = xParent(ele);
}
if (ele)
{
xPreventDefault(e);
ele.xDPX = evt.pageX;
ele.xDPY = evt.pageY;
_xDrgMgr.ele = ele;
xAddEventListener(document, 'mouseup', _xOMU, false);
if (ele.xODS)
{
ele.xODS(ele, evt.pageX, evt.pageY);
}
}
}
function _xOMM(e)
{
var evt = new xEvent(e);
if (_xDrgMgr.ele)
{
xPreventDefault(e);
var ele = _xDrgMgr.ele;
var dx = evt.pageX - ele.xDPX;
var dy = evt.pageY - ele.xDPY;
ele.xDPX = evt.pageX;
ele.xDPY = evt.pageY;
if (ele.xOD)
{
ele.xOD(ele, dx, dy);
}
else
{
xMoveTo(ele, xLeft(ele) + dx, xTop(ele) + dy);
}
}
}
function _xOMU(e)
{
if (_xDrgMgr.ele)
{
xPreventDefault(e);
xRemoveEventListener(document, 'mouseup', _xOMU, false);
if (_xDrgMgr.ele.xODE)
{
var evt = new xEvent(e);
_xDrgMgr.ele.xODE(_xDrgMgr.ele, evt.pageX, evt.pageY);
}
_xDrgMgr.ele = null;
}
}
