void CXTPCalendarWeekViewGroup::FillHitTestEx(XTP_CALENDAR_HITTESTINFO_WEEK_VIEW* pHitTest)
{
	ASSERT(pHitTest && GetViewDay());
	if (pHitTest && GetViewDay())
	{
		GetViewDay()->FillHitTestEx(pHitTest);
		pHitTest->pViewGroup = this;
	}
}
void CXTPCalendarWeekView::AdjustLayout(CDC* pDC, const CRect& rcView, BOOL bCallPostAdjustLayout)
{
	if (!GetPaintManager() || !GetPaintManager()->GetWeekViewPart() ||
		!GetPaintManager()->GetWeekViewEventPart() || !pDC)
	{
		ASSERT(FALSE);
		return;
	}

	TBase::AdjustLayout(pDC, rcView, FALSE);

	AdjustFirstDayOfWeek();

	CXTPCalendarViewPart* pWVPart = GetPaintManager()->GetWeekViewPart();

	m_LayoutX.m_nDayHeaderHeight = pWVPart->GetTextExtent(pDC, _T("A")).cy + 7;
	m_Layout.m_nRowHeight = GetPaintManager()->GetWeekViewEventPart()->GetTextExtent(pDC, _T("(")).cy + 6;

	// Adjust Week's Grid

	CRect rcView2 = rcView;

	rcView2.DeflateRect(-1, -1, -1, -1);
	int nRows = 6/m_LayoutX.m_nGridColumns;
	ASSERT(6 % m_LayoutX.m_nGridColumns == 0);

	m_LayoutX.m_nDayWidth = rcView2.Width() / m_LayoutX.m_nGridColumns;
	m_LayoutX.m_nDayHeidht = rcView2.Height() / nRows;

	CalculateHeaderFormat(pDC, m_LayoutX.m_nDayWidth, &pWVPart->GetTextFont());

	int nDayIndex = 0;
	CRect rc(0, 0, 0, 0);

	for (int nDayCol = 0; nDayCol < m_LayoutX.m_nGridColumns; nDayCol++)
	{
		for (int nDayRow = 0; nDayRow < nRows; nDayRow++)
		{
			CXTPCalendarWeekViewDay* pDay = GetViewDay(nDayIndex);
			ASSERT(pDay);
			if (!pDay)
			{
				continue;
			}

			COleDateTime dtDayDate = GetViewDayDate(nDayIndex);

			rc.SetRect( rcView2.left + m_LayoutX.m_nDayWidth * nDayCol,
						rcView2.top + m_LayoutX.m_nDayHeidht* nDayRow,
						rcView2.left + m_LayoutX.m_nDayWidth + m_LayoutX.m_nDayWidth * nDayCol,
						rcView2.top + m_LayoutX.m_nDayHeidht + m_LayoutX.m_nDayHeidht * nDayRow);

			int nWday = dtDayDate.GetDayOfWeek();

			//Allow Sunday as 1st day of week
			//ASSERT(nWday != 1);
			//if (nWday == 7)
//Wrong code - this code give Sat and Sun in half-height - ignored working days assignment -
//e.g. Wed and Thu as free days!
			//if (nWday == m_nFirstDayOfWeekIndex + 5)
			if (nWday == 1 + (m_nFirstDayOfWeekIndex + 4) % 7)
			{
				CRect rc2 = rc;
				rc2.bottom = rc.top + rc.Height()/2;

				pDay->AdjustLayout(pDC, rc2);

				nDayIndex++;
				pDay = GetViewDay(nDayIndex);
				rc.top = rc2.bottom;
			}

			ASSERT(pDay);
			if (pDay)
			{
				pDay->AdjustLayout(pDC, rc);
			}

			nDayIndex++;
		}
	}

	//---------------------------------------------------------------------------
	if (bCallPostAdjustLayout)
	{
		OnPostAdjustLayout();
	}
}