/* 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;
    }
  }