mover = new Object();

mover.isResizeDown	= false;
mover.isResizeRight	= false;
mover.isDown			= false;
mover.deltaX  			= 0;
mover.deltaY  			= 0;
mover.smoothX 			= 3;
mover.smoothY 			= 3;
mover.baseX				= 0;
mover.baseY				= 0;
var superWindowObj;

function moveHandler( event){
	if( 	event.clientX < o_desktop.left + 20 ||
			event.clientX > o_desktop.left + o_desktop.width - 20||
			event.clientY < o_desktop.top ||
			event.clientY > o_desktop.top + o_desktop.height - 20){
		upHandler();
		document.getElementById("lyrMover").style.display = "none";
	}
   if(mover.isDown){
      mover.deltaX += event.screenX - mover.baseX;
      mover.deltaY += event.screenY - mover.baseY;
      
      if( 	mover.deltaX > mover.smoothX || 
      		mover.deltaY > mover.smoothY || 
      		mover.deltaX < -mover.smoothX || 
      		mover.deltaY < -mover.smoothY){

         objToMove.moveBy(mover.deltaX, mover.deltaY);

         mover.deltaX = 0;
         mover.deltaY = 0;
      }
      mover.baseX = event.screenX;
      mover.baseY = event.screenY;
   }
   return false;
}

function upHandler(){
	if(o_winManager.windowInFocus)
		f_positionMover( o_winManager.windowInFocus.dWin, o_winManager.windowInFocus.dWin.mainType);

	document.getElementById("lyrMover").onmousemove 	= null;
	document.getElementById("lyrMover").onmouseup 		= null;
   var tempString = "";
   mover.isDown = false;
   objToMove.top  = parseInt(selectedLayer.style.top);
   objToMove.left = parseInt(selectedLayer.style.left);

   if(top.o_winManager.windowInFocus.dWin.top > o_desktop.top + o_desktop.height || top.o_winManager.windowInFocus.dWin.top < o_desktop.top){
      top.o_winManager.windowInFocus.dWin.moveTo(top.o_winManager.windowInFocus.dWin.left, o_desktop.top);
      if(top.o_winManager.windowInFocus.dWin.menu)
         top.o_winManager.windowInFocus.dWin.menu.f_fixPosition();
   }
   if(top.o_winManager.windowInFocus.dWin.left > o_desktop.left + o_desktop.width || top.o_winManager.windowInFocus.dWin.left < o_desktop.left){
      top.o_winManager.windowInFocus.dWin.moveTo(o_desktop.left, top.o_winManager.windowInFocus.dWin.top);
      if(top.o_winManager.windowInFocus.dWin.menu)
         top.o_winManager.windowInFocus.dWin.menu.f_fixPosition();
   }

   if(objToMove.menu != null)
      objToMove.menu.f_fixPosition();
}

function frameDown( superWindowObj, windowType, event){
	
	document.getElementById("lyrMover").style.width 	= "100%";
	document.getElementById("lyrMover").style.height 	= "100%";
	document.getElementById("lyrMover").style.top 		= 0;
	document.getElementById("lyrMover").style.left 		= 0;

   document.getElementById("lyrMover").onmousemove 	= moveHandler;
   document.getElementById("lyrMover").onmouseup 		= function(){
   	upHandler();
   	f_positionMover(top.selectedWindowFromMover, top.selectedWindowTypeFromMover, null)
   };

   if(superWindowObj.isMaximized)
      return;

   if(superWindowObj.parentWindow != o_winManager.windowInFocus){
      o_winManager.focusManager( "focus", superWindowObj.parentWindow);
   }

   top.superWindowObj = superWindowObj;
   selectedFrame  = superWindowObj.movementHooker.htmlFrameObj;
   selectedLayer  = superWindowObj.movementHooker.htmlLayerObj;
   objToMove      = superWindowObj;
	
   mover.isDown = true;
   mover.baseX = event.screenX;
   mover.baseY = event.screenY;
   
   clientTop    = o_desktop.top - 1;
   clientLeft   = o_desktop.left;
   clientWidth  = o_desktop.width + clientLeft;
   clientHeight = o_desktop.height + clientTop;
   return false;
}

function dividerDown(superWindowObj, windowType, event){
   eventHookerBase   = superWindowObj;
   eventHooker       = superWindowObj.outerWin.htmlFrameObj;
   resizedFrameLeft  = superWindowObj.innerWin1.htmlFrameObj;
   resizedFrameRight = superWindowObj.innerWin2.htmlFrameObj;
   selectedLayerLeft = superWindowObj.innerWin1.htmlLayerObj;
   selectedLayerRight= superWindowObj.innerWin2.htmlLayerObj;
   objToResizeLeft   = superWindowObj.innerWin1;
   objToResizeRight  = superWindowObj.innerWin2;
   objToHook         = superWindowObj.resizeDivider;

   mover.isDown 		= true;

   mover.baseX 		= event.screenX;
   
	document.getElementById("lyrMidResizer").style.width 		= "100%";
	document.getElementById("lyrMidResizer").style.height 	= "100%";
	document.getElementById("lyrMidResizer").style.top 		= 0;
	document.getElementById("lyrMidResizer").style.left 		= 0;
	
	document.getElementById("lyrMidResizer").onmousemove 		= dividerHandler;
	document.getElementById("lyrMidResizer").onmouseup 		= function(){upDividerHandler();f_positionMidResizer(top.selectedWindowFromMover, top.selectedWindowTypeFromMover, null)};
   
   clientTop    = o_desktop.top - 1;
   clientLeft   = o_desktop.left;
   clientWidth  = o_desktop.width + clientLeft;
   clientHeight = o_desktop.height + clientTop;
}

function dividerHandler(event){
   if(mover.isDown){
      mover.deltaX += event.screenX - mover.baseX;
      
      if( mover.deltaX > mover.smoothX || mover.deltaX < -mover.smoothX ){
         if(parseInt(selectedLayerLeft.style.width) + mover.deltaX  < 0 ||
            parseInt(selectedLayerRight.style.width) - mover.deltaX < 0 )
            mover.deltaX = 0;

         selectedLayerLeft.style.width  = parseInt(selectedLayerLeft.style.width) 	+ mover.deltaX;
         selectedLayerRight.style.left  = parseInt(selectedLayerRight.style.left) 	+ mover.deltaX;
         selectedLayerRight.style.width = parseInt(selectedLayerRight.style.width) 	- mover.deltaX;

         mover.deltaX = 0;
      }
      
      eventHookerBase.resizeDivider.style.left = parseInt(selectedLayerLeft.style.left) + parseInt(selectedLayerLeft.style.width);
      
      mover.baseX = event.screenX;
   }
}

function upDividerHandler(){
   mover.isDown = false;
	
	document.getElementById("lyrMidResizer").onmousemove 		= null;
	document.getElementById("lyrMidResizer").onmouseup 		= null;
	document.getElementById("lyrMidResizer").style.display 	= "none";
}

function resizeRight(superWindowObj, windowType, event){

   if(superWindowObj.isMaximized)
      return;
   if(superWindowObj.parentWindow && superWindowObj.parentWindow.visibility && superWindowObj.parentWindow.visibility == "hidden"){
      return;
   }
   
   winType        = windowType;
   resizedFrame   = superWindowObj.outerWin.htmlFrameObj;
   selectedLayer  = superWindowObj.outerWin.htmlLayerObj;
   objToResize    = superWindowObj;
   objToHook      = objToResize.resizeHookerRight;

   mover.isDown = true;
   mover.isResizeRight = true;
   
   mover.baseX = event.screenX;
   mover.baseY = 0;
   
	document.getElementById("lyrSideResizer").style.width 	= "100%";
	document.getElementById("lyrSideResizer").style.height 	= "100%";
	document.getElementById("lyrSideResizer").style.top 		= 0;
	document.getElementById("lyrSideResizer").style.left 		= 0;

   document.getElementById("lyrSideResizer").onmousemove 	= resizeHandler;
   document.getElementById("lyrSideResizer").onmouseup 		= function(){upResizeHandler();f_positionSideResizer(top.selectedWindowFromMover, top.selectedWindowTypeFromMover, null)};

   if(windowType == top.DOCKER_WINDOW){
      clientLeft   = o_desktop.left - objToResize.width;
      clientWidth  = o_desktop.width + objToResize.width;
   }
   if(windowType == top.DESKTOP_WINDOW){
      clientLeft   = o_desktop.left;
      clientWidth  = o_desktop.width + clientLeft;
   }
   clientTop    = o_desktop.top - 1;
   clientHeight = o_desktop.height + clientTop;
}

function resizeDown(superWindowObj, windowType, event){
   if(superWindowObj.isMaximized)
      return;
   
   winType        = windowType;   
   resizedFrame   = superWindowObj.outerWin.htmlFrameObj;
   selectedLayer  = superWindowObj.outerWin.htmlLayerObj;
   objToResize    = superWindowObj;
   objToHook      = objToResize.resizeHookerRight;

   mover.isDown = true;
   mover.isResizeDown = true;

   mover.baseX = 0;
   mover.baseY = event.screenY;
   
	document.getElementById("lyrBottomResizer").style.width 		= "100%";
	document.getElementById("lyrBottomResizer").style.height 	= "100%";
	document.getElementById("lyrBottomResizer").style.top 		= 0;
	document.getElementById("lyrBottomResizer").style.left 		= 0;

   document.getElementById("lyrBottomResizer").onmousemove 		= resizeHandler;
   document.getElementById("lyrBottomResizer").onmouseup 		= function(){upResizeHandler();f_positionBotResizer(top.selectedWindowFromMover, top.selectedWindowTypeFromMover, null)};

   clientTop    = o_desktop.top - 1;
   clientLeft   = o_desktop.left;
   clientWidth  = o_desktop.width + clientLeft;
   clientHeight = o_desktop.height + clientTop;
}

function resize(superWindowObj, windowType, event, mod){
   if(superWindowObj.isMaximized)
      return;

   winType        = windowType;
   resizedFrame   = superWindowObj.outerWin.htmlFrameObj;
   selectedLayer  = superWindowObj.outerWin.htmlLayerObj;
   objToResize    = superWindowObj;
   objToHook      = objToResize.resizeHookerDownRight;

   mover.isDown = true;

   mover.baseX = event.screenX;
   mover.baseY = event.screenY;
   
	document.getElementById("lyrResizer" + mod).style.width 		= "100%";
	document.getElementById("lyrResizer" + mod).style.height 	= "100%";
	document.getElementById("lyrResizer" + mod).style.top 		= 0;
	document.getElementById("lyrResizer" + mod).style.left 		= 0;

   document.getElementById("lyrResizer" + mod).onmousemove 		= resizeHandler;
   document.getElementById("lyrResizer" + mod).onmouseup 		= function(){upResizeHandler();f_positionResizer(top.selectedWindowFromMover, top.selectedWindowTypeFromMover, null)};

   clientTop    = o_desktop.top - 1;
   clientLeft   = o_desktop.left;
   clientWidth  = o_desktop.width 	+ clientLeft;
   clientHeight = o_desktop.height 	+ clientTop;
}

function resizeHandler( event){
		
	if( 	event.clientX < o_desktop.left + 2 ||
			event.clientX > o_desktop.left + o_desktop.width - 2||
			event.clientY < o_desktop.top ||
			event.clientY > o_desktop.top + o_desktop.height - 2){
			upResizeHandler();
	}
	
   if(mover.isDown){
      mover.deltaX += event.screenX - mover.baseX;
      mover.deltaY += event.screenY - mover.baseY;
      
      if( mover.deltaX > mover.smoothX || mover.deltaY > mover.smoothY || mover.deltaX < -mover.smoothX || mover.deltaY < -mover.smoothY){
         if(objToResize.width + mover.deltaX < top.WINDOW_MIN_WIDTH || mover.isResizeDown)
            mover.deltaX = 0;

         if(objToResize.height + mover.deltaY < top.WINDOW_MIN_HEIGHT || mover.isResizeRight)
            mover.deltaY = 0;

         objToResize.resizeBy( mover.deltaX, mover.deltaY);
         
         mover.deltaX = 0;
         mover.deltaY = 0;
      }

      mover.baseX = event.screenX;
      mover.baseY = event.screenY;
      
      if(winType == top.EXPLORER_WINDOW)
         objToResize.resizeDivider.style.height = parseInt(objToResize.innerWin1.htmlLayerObj.style.height) + 2 * objToResize.innerBorderWidth;
   }
}

function upResizeHandler(){
//   if(objToResize.mainType == top.DOCKER_WINDOW){
//      top.o_desktop.update2();
//   }
	document.getElementById("lyrBottomResizer").onmousemove 		= null;
	document.getElementById("lyrBottomResizer").onmouseup 		= null;
	document.getElementById("lyrBottomResizer").style.display 	= "none";

	document.getElementById("lyrSideResizer").onmousemove 		= null;
	document.getElementById("lyrSideResizer").onmouseup 			= null;
	document.getElementById("lyrSideResizer").style.display 		= "none";
	
	document.getElementById("lyrResizer1").onmousemove 			= null;
	document.getElementById("lyrResizer1").onmouseup 				= null;
	document.getElementById("lyrResizer1").style.display 			= "none";
	
	document.getElementById("lyrResizer2").onmousemove 			= null;
	document.getElementById("lyrResizer2").onmouseup 				= null;
	document.getElementById("lyrResizer2").style.display 			= "none";
	
	document.getElementById("lyrMover").style.display 				= "none";
	
   mover.isDown 				= false;
   mover.isResizeDown 		= false;
   mover.isResizeRight 		= false;
}