/*****************************************************************************
 *
 * File     : Sizer.js
 * 
 * Project  : WMS Viewer Client
 * 
 * Contents : 
 *
 * Author: Milan Trninic
 *
 * Copyright 1999-2005 Galdos Systems, Inc.
 * All rights reserved.
 * 
 ***|***************************|***********************|*******************|*/

/************************************************************************
*
*	Global declarations
*
*
*************************************************************************/

/************************************************************************
*
*	function:	Sizer
*
*	purpose:	Constructor
*
*************************************************************************/
function Sizer()
{
	// method assignments
	this.init = Sizer.init;
	this.onDragStartAdapter = Sizer.onDragStartAdapter;
	this.onDragStart = Sizer.onDragStart;
	this.onDragAdapter = Sizer.onDragAdapter;
	this.onDrag = Sizer.onDrag;
	this.onDragEndAdapter = Sizer.onDragEndAdapter;
	this.onDragEnd = Sizer.onDragEnd;
	
	// instance field declarations
	this._position;

	// initialization
	this.init();
}

/************************************************************************
*
*	function:	init
*
*	purpose:	initialization
*
*************************************************************************/
function Sizer.init()
{
	var uiElement = document.getElementById("sizer");

	uiElement.setAttribute("dataTransfer", this);
	uiElement.attachEvent("ondrag", Sizer.onDragAdapter);
	uiElement.attachEvent("ondragstart", Sizer.onDragStartAdapter);
	uiElement.attachEvent("ondragend", Sizer.onDragEndAdapter);
}

/************************************************************************
*
*	function:	onDragStart
*
*	purpose:	
*
*************************************************************************/
function Sizer.onDragStart(event)
{
	this._position = new Point(event.screenX, event.screenY);
	document.body.style.cursor = "w-resize";
}

/************************************************************************
*
*	function:	onDragEnd
*
*	purpose:	
*
*************************************************************************/
function Sizer.onDragEnd(event)
{
	this._position = null;
	document.body.style.cursor = "default";
}

/************************************************************************
*
*	function:	onDrag
*
*	purpose:	
*
*************************************************************************/
function Sizer.onDrag(event)
{
	if (this._position == null)
	{
		this._position = new Point(event.screenX, event.screenY);
		return;
	}
	var delta = event.screenX - this._position.getX();
	var resultSize = _resultPanel.getSize();
	var controlSize = _controlPanel.getSize();
	
	_resultPanel.setSize(resultSize.getX() - delta, resultSize.getY());
	_controlPanel.setSize(controlSize.getX() + delta, controlSize.getY());
	
	this._position.setX(event.screenX);
	this._position.setY(event.screenY);
	
}

/************************************************************************
*
*	function:	Event handler adapters
*
*	purpose:	
*
*************************************************************************/
function Sizer.onDragAdapter(){target(event, Sizer).onDrag(event);}
function Sizer.onDragStartAdapter(){target(event, Sizer).onDragStart(event);}
function Sizer.onDragEndAdapter(){target(event, Sizer).onDragEnd(event);}

