var dragObject = new Object();

function initDrag()
{
}

function dragWindow( event, id )
{
   // Local Variables
   var el = document.getElementById( id );
   var x, y;
	

   if ( el != null )
   {
	
      // Get the current mouse co-ordinates
      if ( browser.engine != "MSIE" )
      {

         x = event.clientX + window.scrollX;
         y = event.clientY + window.scrollY;
      }
      else
      {

         // Grab Focus
         setWindowFocus( id );

         x = window.event.clientX + document.documentElement.scrollLeft +
                 document.body.scrollLeft;
         y = window.event.clientY + document.documentElement.scrollTop + 
                 document.body.scrollTop;
      }
		
		
      // Initialise the drag object
      dragObject.element = el;
      dragObject.startX = x;
      dragObject.startY = y;
      dragObject.startLeft = parseInt( el.style.left ); 
      dragObject.startRight = parseInt( el.style.right ); 
      dragObject.startTop = parseInt( el.style.top ); 
      dragObject.startBottom = parseInt( el.style.bottom ); 

      // Attach events to the document to handle the rest of the drag and drop event
      if ( browser.engine != "MSIE" )
      {
         document.addEventListener( "mousemove", moveWindow, true );
         document.addEventListener( "mouseup", dropWindow, true );
         event.preventDefault( );
      }
      else
      {
         document.attachEvent( "onmousemove", moveWindow );
         document.attachEvent( "onmouseup", dropWindow );
         window.event.cancelBubble = true;
         window.event.returnValue = false;
      }

		
   }
}

function moveWindow( event )
{
   // Local Variables
   var x, y;
	
   if ( dragObject.element != null )
   {
      // Get the current mouse co-ordinates
      if ( browser.engine != "MSIE" )
      {
         x = event.clientX + window.scrollX;
         y = event.clientY + window.scrollY;
      }
      else
      {
         x = window.event.clientX + document.documentElement.scrollLeft +
                document.body.scrollLeft;
         y = window.event.clientY + document.documentElement.scrollTop + 
                document.body.scrollTop;
      }

      // Move the window
      if ( ! isNaN( dragObject.startLeft ) )
		{
         dragObject.element.style.left = ( dragObject.startLeft + x - dragObject.startX ) + "px"; 
		}
		


      if ( ! isNaN( dragObject.startRight ) )
         dragObject.element.style.right = ( dragObject.startRight - x + dragObject.startX ) + "px"; 

      if ( ! isNaN( dragObject.startTop ) )
         dragObject.element.style.top =( dragObject.startTop  + y - dragObject.startY ) + "px";

      if ( ! isNaN( dragObject.startBottom ) )
         dragObject.element.style.bottom =( dragObject.startBottom - y + dragObject.startY ) + "px";

      // Cancel the default event handling
      if ( browser.engine != "MSIE" )
      {
         event.preventDefault();
      }
      else
      {
         window.event.cancelBubble = true;
         window.event.returnValue = false;
      }
   }
}


function dropWindow( event )
{
   // Clear the drag element
   dragObject.element = null;

   // Detach the event handlers and drop the floating element
   if ( browser.engine != "MSIE" )
   {
      document.removeEventListener( "mousemove", moveWindow, true );
      document.removeEventListener( "mouseup", dropWindow, true );
   }
   else
   {
      document.detachEvent( "onmousemove", moveWindow );
      document.detachEvent( "onmouseup", dropWindow );
   }
}
