/*
 * Drag Klasse
 * Steuert das verschieben von Fenstern
 *
 * (c) 2006 3Kon Informationstechnologien GmbH
 *
 * @Author	Tilmann Fruntke <tfruntke@buschjena.de>
 * @date		07.09.2006
 */

var moveMyWindow = {
		moveObj: null,
		pObj : null,
		moveFace : null,
		mouseAddLeft : 0,
		mouseAddTop : 0,
		startMoving : function( sE, parentObj, divObj, maxLeft, maxTop, maxRight, maxBottom ) 
		{
		 addDebugMsg( "start moving object: " + divObj );
		 
		 /* valid object? */
		 addDebugMsg( "step by step 1" );
		 if ( divObj == null || typeof divObj == "undefined" ) 
		 {
		 	addDebugMsg( "no valid objects given, abort." );
		 	return null;
		 }
		 addDebugMsg( "step by step 2" );
	 
		 /* Object Details */
		 var thisLeft = parseInt( divObj.style.left );
		 var thisTop = parseInt( divObj.style.top );
		 var thisWidth = parseInt( divObj.style.width );
		 var thisHeight = parseInt( divObj.style.height );
		 addDebugMsg( "step by step 3" );
		 
		 /* compute mouse displacement  */
		 var ey	= sE.clientY;
  	 var ex	= sE.clientX;
		 
		 addDebugMsg( "step by step 4" );
		 
		 addDebugMsg( "mouse position while starting: " +ex + "/" + ey);
		 
		 moveMyWindow.mouseAddLeft = ex - thisLeft;
		 moveMyWindow.mouseAddTop = ey - thisTop;
		 
		 addDebugMsg( "moveMyWindow.mouseAddLeft: " + moveMyWindow.mouseAddLeft);
		 addDebugMsg( "moveMyWindow.mouseAddTop: " + moveMyWindow.mouseAddTop);
		 
		 /* create moving mask */
		 var moveMask = document.createElement('div');
  	 moveMask.className='myMovingDiv'; 
  	 moveMask.style.position='absolute'; 
  	 moveMask.style.width		=		thisWidth + "px"; 
  	 moveMask.style.height	=		thisHeight + "px" ;
		 moveMask.style.left		=		thisLeft + "px"; 
  	 moveMask.style.top			=		thisTop + "px" ;
		 moveMask.style.zIndex = 9999;

		 addDebugMsg( "old Object zIndex is " + divObj.zIndex );

		 parentObj.appendChild( moveMask );
		 
		 addDebugMsg( "step by step" );
		 
		 /* save movingMask */
		 moveMyWindow.moveObj = divObj;
		 moveMyWindow.moveFace = moveMask;
		 moveMyWindow.pObj = parentObj;
		 
		 /*moveMyWindow.maxLeft = maxLeft;
		 moveMyWindow.maxRight = maxRight;
		 moveMyWindow.maxTop = maxTop;
		 moveMyWindow.maxBottom = maxBottom;*/
		 
		 /* make moveObj invisible */
		 //moveMyWindow.moveObj.style.display="none";
		 
		 /* register Events */
		 document.onmousemove	= moveMyWindow.moveMoveMove;
		 document.onmouseup		= moveMyWindow.stopMoving;
		 
		 addDebugMsg( "all done.. ready to drag" );
		 
		},
		moveMoveMove : function ( e )
		{
		 	e = e ? e : window.event; /* IE fix */

  		var o = moveMyWindow.moveFace;
			//var mObj = moveMyWindow.moveObj;
  
  		var ey	= e.clientY;
  		var ex	= e.clientX;
			
			/* subdue the tiger ;) dont allow moving above the div borders */
			var newLeft = (ex - moveMyWindow.mouseAddLeft);
			var newTop = (ey - moveMyWindow.mouseAddTop);
			/*var newRight = newLeft + parseInt( mObj.style.width );
			var newBottom = newTop + parseInt( mObj.style.height );*/
			
			/*if (newLeft < moveMyWindow.maxLeft) newLeft = moveMyWindow.maxLeft;
			if (newTop < moveMyWindow.maxTop) newTop = moveMyWindow.maxTop;
			if (newRight > moveMyWindow.maxRight) newLeft = newRight - newLeft;
			if (newBottom > moveMyWindow.maxBottom) newTop = newBottom - newTop;*/
			
			if (newLeft < 0) newLeft = 0;
			if (newTop < 0) newTop = 0;
			
			
			o.style.left= newLeft + "px";
			o.style.top= newTop + "px";
		
			
			
		
  		return false;
		},
		stopMoving : function ()
		{
		 document.onmousemove	= null;
		 document.onmouseup		= null;
		 
		 var mF = moveMyWindow.moveFace;
		 var o = moveMyWindow.moveObj;
		 
		 /* Object Details */
		 var newLeft = parseInt( mF.style.left );
		 var newTop = parseInt( mF.style.top );
		 var newWidth = parseInt( mF.style.width );
		 var newHeight = parseInt( mF.style.height );
		 
		 o.style.left = newLeft + "px";
		 o.style.top = newTop + "px";
		 
		 /* setActive: temporaly workaround */
		 o.onclick();
		 
		 moveMyWindow.pObj.removeChild( mF );
		 
		 /* make moveObj visible */
		 //moveMyWindow.moveObj.style.display="block";

		 addDebugMsg( "stop moving object" );
		 
		 moveEventHandler();
		 
		}
};


/* login on debug manager */
registerStartedComponent( 'jdrag' );
