var Drag = {
obj : null,
init : function(o, oRoot)
{
  o.onmousedown	= Drag.start;
  o.root = oRoot && oRoot != null ? oRoot : o ;
},
start : function(e)
{
  var o = Drag.obj = this;
  e = Drag.fixE(e);
  var y = parseInt(o.root.offsetTop);
  var x = parseInt(o.root.offsetLeft);
  o.lastMouseX	= e.clientX;
  o.lastMouseY	= e.clientY;
  o.minMouseX	= e.clientX - x + minX ;
  o.maxMouseX	= e.clientX - x + maxX - o.root.offsetWidth;
  o.minMouseY	= e.clientY - y + minY;
  o.maxMouseY	= e.clientY - y + maxY - o.root.offsetHeight ;
  hideIFrame();
  with (o.root.style)  
  {
    opacity="0.5";
    filter="alpha(opacity=50)";
  }
  document.onmousemove	= Drag.drag;
  document.onmouseup		= Drag.end;
  return false;
},
drag : function(e)
{
  e = Drag.fixE(e);
  var o = Drag.obj;
  var ey	= e.clientY;
  var ex	= e.clientX;
  var y = parseInt(o.root.style.top);
  var x = parseInt(o.root.style.left);
  var nx, ny;
  ex = Math.min(ex, o.maxMouseX);
  ex = Math.max(ex, o.minMouseX);
  ey = Math.min(ey, o.maxMouseY);
  ey = Math.max(ey, o.minMouseY);
  nx = x + ex - o.lastMouseX;
  ny = y + ey - o.lastMouseY;
  with (Drag.obj.root.style)  
  {
    left=nx+"px";
    top=ny+"px";
  }
  Drag.obj.lastMouseX	= ex;
  Drag.obj.lastMouseY	= ey;
  return false;
},
end : function()
{
  document.onmousemove = null;
  document.onmouseup   = null;
  with (Drag.obj.root.style)  
  {
    opacity="1.0";
    filter="alpha(opacity=100)";
  }
  resizeIFrame(Drag.obj.root);
  Drag.obj = null;
},
fixE : function(e)
{
  if (typeof e == 'undefined') e = window.event;
  if (typeof e.layerX == 'undefined') e.layerX = e.offsetX;
  if (typeof e.layerY == 'undefined') e.layerY = e.offsetY;
  return e;
}
};
