void CContourSliderManager::OnMouseMove( UINT nFlags, CPoint point)
{
	Base::OnMouseMove(nFlags, point);

	bool xChange = false; 
	bool yChange = false;

	int tempXPos = m_xPos;
	int tempYPos = m_yPos;
	int tempHeight = m_height;
	int tempWidth = m_width;

	m_nOperation = OperationNone;

	CWin* pWin;
	CBody* pBody = FindFirstBody();

	if ( pBody == NULL )
		return;

	pWin = pBody->GetWndInfo();

	// kde nastala udalost
	CDblPoint currPoint = PtToGL(*pWin, point, false); 

	/*POSITION pos = FindBodyHeadPosition(currPoint, FIND_MESH_ELEMENT);

	if ( !pos )
		return;*/

	// kde nastala udalost OnMouseLDown
	CDblPoint startPoint = PtToGL(*pWin, m_mouseStart, false);

	CBodyMesh *pBodyMesh = (CBodyMesh*) FindBody(pBody->GetID());
	tag_BODYSIZE TrBody = pBodyMesh->GetTrBodySize();

	// indexy dlazdice, ve ktere nastala udalost
	CPoint tilePoint;

	tilePoint.x = currPoint.x / m_tileSizeX / pWin->GetSx() + m_sizeX / 2;
	tilePoint.y = currPoint.y / m_tileSizeY / pWin->GetSy() + m_sizeY / 2;

	
	if (!m_resizing)
	{
		//MOVING////////////////////////
		if(	tilePoint.x > m_xPos + 0.5 &&
			tilePoint.x < m_xPos + m_width - 0.5 &&
			tilePoint.y > m_yPos + 0.5 &&
			tilePoint.y < m_yPos+m_height - 0.5)
		{
			m_nOperation = OperationMove;
		}
		//HORIZONTAL RESIZING
		else
		if(	((tilePoint.x <= m_xPos + 0.5 &&
			tilePoint.x >= m_xPos - 0.5) ||
			(tilePoint.x <= m_xPos + m_width + 0.5 &&
			tilePoint.x >= m_xPos + m_width - 0.5)) &&
			(tilePoint.y >= m_yPos + 0.5 &&
			tilePoint.y <= m_yPos+m_height - 0.5))
		{
			if(tilePoint.x <= m_xPos + 0.5)
				leftOrUp = true;
			else
				leftOrUp = false;

			m_nOperation = OperationResizeHorizontal;
		}
		//VERTICAL RESIZING
		/*else
		if (((tilePoint.y <= m_yPos + 0.5 &&
			tilePoint.y >= m_yPos - 0.5) ||
			(tilePoint.y <= m_yPos + m_height + 0.5 &&
			tilePoint.y >= m_yPos + m_height - 0.5)) &&
			(tilePoint.x >= m_xPos + 0.5 &&
			tilePoint.x <= m_xPos + m_width - 0.5))
		{
			if(tilePoint.y <=m_yPos+0.5)
				leftOrUp = true;
			else
				leftOrUp = false;

			m_nOperation = OperationResizeVertical;
		}
		//DIAGONAL RESIZING-TOP LEFT
		else
		if (tilePoint.y <= m_yPos + m_height + 0.5 &&
			tilePoint.y >= m_yPos + m_height - 0.5 &&
			tilePoint.x <= m_xPos + 0.5 &&
			tilePoint.x >= m_xPos - 0.5)
		{
			leftOrUp = true;
			m_nOperation = OperationResizeDiagonal;
		}
		//DIAGONAL RESIZING - BOOTOM RIGHT
		else
		if (tilePoint.y <= m_yPos + 0.5 &&
			tilePoint.y >= m_yPos - 0.5 &&
			tilePoint.x <= m_xPos + m_width + 0.5 &&
			tilePoint.x >= m_xPos + m_width - 0.5)
		{
			leftOrUp = false;
			m_nOperation = OperationResizeDiagonal;
		}
		//DIAGONAL RESIZING - TOP RIGHT
		else 
		if (tilePoint.y <= m_yPos + m_height + 0.5 &&
			tilePoint.y >= m_yPos + m_height - 0.5 &&
			tilePoint.x <= m_xPos + m_width + 0.5 &&
			tilePoint.x >= m_xPos + m_width - 0.5)
		{
			leftOrUp = false;
			m_nOperation = OperationResizeDiagonalOther;
		}
		//DIAGONAL RESIZING - BOTTOM LEFT
		else 
		if (tilePoint.y <= m_yPos + 0.5 &&
			tilePoint.y >= m_yPos - 0.5 &&
			tilePoint.x <= m_xPos + 0.5 &&
			tilePoint.x >= m_xPos - 0.5)
		{
			leftOrUp = true;
			m_nOperation = OperationResizeDiagonalOther;
		}*/
	}

	if (m_mouseDown)
	{		
		m_xPos += (currPoint.x - startPoint.x) / m_tileSizeX / pWin->GetSx();
		m_yPos += (currPoint.y - startPoint.y) / m_tileSizeY / pWin->GetSy();
		
		Invalidate();
	}
	else
	if (m_resizingHorizontal)
	{
		if(leftOrUp)
		{
			m_xPos += (currPoint.x - startPoint.x) / m_tileSizeX / pWin->GetSx();
			m_width -= (currPoint.x - startPoint.x) / m_tileSizeX / pWin->GetSx();
		}
		else
		{
			m_width += (currPoint.x - startPoint.x) / m_tileSizeX / pWin->GetSx();
		}
		
		Invalidate();
	}
	else
	if (m_resizingVertical)
	{
		if(leftOrUp)
		{
			m_yPos += (currPoint.y - startPoint.y) / m_tileSizeY / pWin->GetSy();
			m_height -= (currPoint.y - startPoint.y) / m_tileSizeY / pWin->GetSy();
		}
		else
		{
			m_height += (currPoint.y - startPoint.y)/m_tileSizeY/pWin->GetSy();
		}
		
		Invalidate();
	}
	else
	if (m_resizingDiagonal)//TOP LEFT TO BOOTOM RIGHT
	{
		if (leftOrUp)
		{
			m_height += (currPoint.y - startPoint.y)/m_tileSizeY/pWin->GetSy();
			m_xPos += (currPoint.x - startPoint.x)/m_tileSizeX/pWin->GetSx();
			m_width -= (currPoint.x - startPoint.x)/m_tileSizeX/pWin->GetSx();
		}
		else
		{
			m_yPos += (currPoint.y - startPoint.y)/m_tileSizeY/pWin->GetSy();
			m_height -= (currPoint.y - startPoint.y)/m_tileSizeY/pWin->GetSy();
			m_width += (currPoint.x - startPoint.x)/m_tileSizeX/pWin->GetSx();
		}
		
		Invalidate();
	}
	else
	if (m_resizingDiagonalOther)//TOP RIGHT TO BOOTM LEFT
	{
		if (leftOrUp)
		{
			m_yPos += (currPoint.y - startPoint.y)/m_tileSizeY/pWin->GetSy();
			m_height -= (currPoint.y - startPoint.y)/m_tileSizeY/pWin->GetSy();
			m_xPos += (currPoint.x - startPoint.x)/m_tileSizeX/pWin->GetSx();
			m_width -= (currPoint.x - startPoint.x)/m_tileSizeX/pWin->GetSx();
		}
		else
		{
			m_width += (currPoint.x - startPoint.x)/m_tileSizeX/pWin->GetSx();
			m_height += (currPoint.y - startPoint.y)/m_tileSizeY/pWin->GetSy();
		}
		//m_mouseStart = point;
		Invalidate();
	}

	if (m_width < m_minWidth)
	{
		m_width = tempWidth;
		m_xPos = tempXPos;
	}
	else
	{
		m_mouseStart.x = point.x;
	}

	if (m_height < m_minHeight)
	{
		m_height = tempHeight;
		m_yPos = tempYPos;
	}
	else
	{
		m_mouseStart.y = point.y;
	}
	
	if (tilePoint.x < 0 || m_xPos <0)
	{
		m_xPos=0;
		m_width = tempWidth;
		xChange = true;
	}
	else
	if (tilePoint.x > m_sizeX ||m_xPos > m_sizeX - m_width)
	{
		m_width = tempWidth;
		m_xPos = m_sizeX-m_width;
		xChange = true;
	}

	if(tilePoint.y < 0 || m_yPos<0)
	{
		m_yPos=0;
		m_height = tempHeight;
		yChange = true;
	}
	else
	if (tilePoint.y > m_sizeY || m_yPos > m_sizeY - m_height)
	{
		m_height = tempHeight;
		m_yPos = m_sizeY-m_height;
		yChange = true;
	}

	if (!xChange)
		m_mouseStart.x = point.x;

	if (!yChange)
		m_mouseStart.y = point.y;
}
