
var BPDragIcon = {
  CurrentIcon:new Object(),
  Init:function(){
  },
  Prep:function(markup){
    BPDragIcon.Destroy();
    var obj = window.top.document.createElement("div");
    obj.innerHTML = markup;
    obj.style.position = "absolute";
    BPDragIcon.CurrentIcon = obj;
    IFrameManager.AttachDocumentEventGlobal("mousedown",_bpdd_mouseDn);
    IFrameManager.AttachDocumentEventGlobal("mousemove",_bpdd_mouseMv);
    IFrameManager.AttachDocumentEventGlobal("mouseup",_bpdd_mouseUp);
    _bpdd_movecount = 0;
  },
  Destroy:function(){
    try{
    IFrameManager.DetachDocumentEventGlobal("mousedown",_bpdd_mouseDn);
    IFrameManager.DetachDocumentEventGlobal("mousemove",_bpdd_mouseMv);
    IFrameManager.DetachDocumentEventGlobal("mouseup",_bpdd_mouseUp);
    _bpdd_movecount = 0;
    BPDragIcon.IsDragging = false;
    }catch(e){}
    try{
      window.top.document.body.removeChild(BPDragIcon.CurrentIcon);
    }catch(e){}
  },
  IsDragging:false,
  OnStartDrag:new Function(),
//  OnDrag:new Function(),
  OnEndDrag:new Function(),
  FixMousePosition:function(event,pos){
//    var x = pos.X + (doc.parentWindow.screenLeft - window.top.screenLeft);
//    var y = pos.Y + (doc.parentWindow.screenTop - window.top.screenTop);
//    var frm = IFrameManager.FindFrameByTarget(event);
    var framewin = IFrameManager.FindTargetWindow(event);
    if(!framewin) return pos;
    var x = pos.X + (framewin.screenLeft - window.top.screenLeft);
    var y = pos.Y + (framewin.screenTop - window.top.screenTop);
    return new Position(x,y);
  },
  IconOffset:new Position(-15,-25)
};

var _bpdd_dragstarted = false;
function _bpdd_mouseDn(event){
  BPDragIcon.IsDragging = true;
  _bpdd_dragstarted = false;
  _bpdd_movecount = 0;
}
//var currentDoc = document;
var _bpdd_movecount = 0;
function _bpdd_mouseMv(event){
  if(!BPDragIcon.CurrentIcon) return;
  if(!BPDragIcon.IsDragging) return;
  var icon = BPDragIcon.CurrentIcon;
  if(!_bpdd_dragstarted)_bpdd_movecount++;
  var mPosFrame = GetMousePosition(event);
  var mPosTop = BPDragIcon.FixMousePosition(event, mPosFrame);
  if(_bpdd_movecount > 4){ // make sure they're not just clicking
    icon.style.visibility = "visible";
    window.top.document.body.appendChild(icon);
    _bpdd_movecount = 0;
    _bpdd_dragstarted = true;
    var edoc = IFrameManager.GetEventDocument(event);
    if(BPDragIcon.OnStartDrag) 
      BPDragIcon.OnStartDrag(event,edoc,mPosTop,mPosFrame);
  }
  BPDragIcon.IconOffset.AddTo(mPosTop);
  icon.style.left = mPosTop.X + "px";
  icon.style.top = mPosTop.Y + "px";
}
function _bpdd_mouseUp(event){
  _bpdd_movecount = 0;
  _bpdd_dragstarted = false;
  BPDragIcon.IsDragging = false;
  var mPosFrame = GetMousePosition(event);
  var mPosTop = BPDragIcon.FixMousePosition(event, mPosFrame);
  var edoc = IFrameManager.GetEventDocument(event);
  try{
    window.top.document.body.removeChild(BPDragIcon.CurrentIcon);
  }catch(e){}
  if(BPDragIcon.OnEndDrag)BPDragIcon.OnEndDrag(event, edoc, mPosTop, mPosFrame);
}
