private void UpdateTimesheetDetailListViewItem(TimesheetDate timesheetDate)
        {
            const string noExistsError = "UpdateTimesheetDateListViewItem() failed in an attempt " +
                                         "to update the Timesheet's Detail ListItem in the ListView because it does not exist; " +
                                         "use InsertDayTypesListViewItem() instead.";

            ListViewItem listViewItem;

            if (!GetTimesheetDetailListViewItem(timesheetDate, out listViewItem))
            {
                throw new InvalidOperationException(noExistsError);
            }
            else
            {
                listViewItem.StateImageIndex = timesheetDate.Timesheet.TimesheetSent ? DefaultImageList.Instance.GetLockedIconIndex() : -1;
                listViewItem.ImageIndex      = DefaultImageList.Instance.GetCalendarIconIndex();

                listViewItem.Text             = Dates.GetMMDDYYYY(timesheetDate.Date);
                listViewItem.SubItems[1].Text = timesheetDate.Date.DayOfWeek.ToString();
                listViewItem.SubItems[2].Text = timesheetDate.DayType.Name;
                listViewItem.SubItems[3].Text = timesheetDate.BillableHours.ToString();
                listViewItem.SubItems[4].Text = timesheetDate.GetFormattedRatePerHour();
                listViewItem.SubItems[5].Text = timesheetDate.GetFormattedInvoiceAmount();
                listViewItem.SubItems[6].Text = timesheetDate.Notes;
            }
        }
        protected override void Initialize()
        {
            base.Initialize();

            TimesheetDate timesheetDate = this.Tag;

            // Text...
            StringBuilder stringBuilder = new StringBuilder(Dates.GetYYYYMMDD(timesheetDate.Date, '-'));

            stringBuilder.AppendFormat(" ({0})", timesheetDate.GetFormattedInvoiceAmount());
            this.Text = stringBuilder.ToString();
        }
        /// <summary>
        /// This member creates ListViewItems for Timsheets.
        /// </summary>
        /// <param name="timesheet">The Timesheet from which the ListViewItems will be created.</param>
        /// <returns>A ListViewItem object.</returns>
        private ListViewItem CreateTimesheetDetailListViewItem(TimesheetDate timesheetDate)
        {
            ListViewItem listViewItem = new ListViewItem(Dates.GetMMDDYYYY(timesheetDate.Date));

            Timesheet timesheet = timesheetDate.Timesheet;

            if (timesheet.IsSplitTimesheet)
            {
                if (timesheetDate.IsWeekday)
                {
                    listViewItem.ForeColor = (timesheetDate.IsValidDate && timesheetDate.BillableHours == 0) ? Color.DarkRed : Color.Red;
                }
                else
                {
                    listViewItem.ForeColor = Color.Red;
                }
            }
            else
            {
                if (timesheetDate.IsValidDate)
                {
                    if (timesheetDate.IsWeekday && timesheetDate.BillableHours == 0)
                    {
                        listViewItem.ForeColor = Color.DarkRed;
                    }
                }
            }

            listViewItem.Font = (timesheetDate.IsValidDate) ? listViewItem.Font : new Font(listViewItem.Font, FontStyle.Strikeout);

            listViewItem.StateImageIndex = timesheetDate.Timesheet.TimesheetSent ? DefaultImageList.Instance.GetLockedIconIndex() : -1;
            listViewItem.ImageIndex      = DefaultImageList.Instance.GetCalendarIconIndex();

            listViewItem.SubItems.Add(timesheetDate.Date.DayOfWeek.ToString());
            listViewItem.SubItems.Add(timesheetDate.DayType.Name);
            listViewItem.SubItems.Add(timesheetDate.BillableHours.ToString());
            listViewItem.SubItems.Add(timesheetDate.GetFormattedRatePerHour());
            listViewItem.SubItems.Add(timesheetDate.GetFormattedInvoiceAmount());
            listViewItem.SubItems.Add(timesheetDate.Notes);

            listViewItem.Tag = timesheetDate;

            return(listViewItem);
        }
		/// <summary>
		/// This member creates ListViewItems for Timsheets.
		/// </summary>
		/// <param name="timesheet">The Timesheet from which the ListViewItems will be created.</param>
		/// <returns>A ListViewItem object.</returns>
		private ListViewItem CreateTimesheetDetailListViewItem(TimesheetDate timesheetDate) {
			ListViewItem listViewItem = new ListViewItem(Dates.GetMMDDYYYY(timesheetDate.Date));

			Timesheet timesheet = timesheetDate.Timesheet;

			if (timesheet.IsSplitTimesheet) {
				if (timesheetDate.IsWeekday) {
					listViewItem.ForeColor = (timesheetDate.IsValidDate && timesheetDate.BillableHours == 0) ? Color.DarkRed : Color.Red;
				} else {
					listViewItem.ForeColor = Color.Red;
				}
			} else {
				if (timesheetDate.IsValidDate) {
					if (timesheetDate.IsWeekday && timesheetDate.BillableHours == 0) {
						listViewItem.ForeColor = Color.DarkRed;
					}
				}
			}

			listViewItem.Font = (timesheetDate.IsValidDate) ? listViewItem.Font : new Font(listViewItem.Font, FontStyle.Strikeout);			 
			
			listViewItem.StateImageIndex = timesheetDate.Timesheet.TimesheetSent ? DefaultImageList.Instance.GetLockedIconIndex() : -1;
			listViewItem.ImageIndex = DefaultImageList.Instance.GetCalendarIconIndex();

			listViewItem.SubItems.Add(timesheetDate.Date.DayOfWeek.ToString());
			listViewItem.SubItems.Add(timesheetDate.DayType.Name);
			listViewItem.SubItems.Add(timesheetDate.BillableHours.ToString());
			listViewItem.SubItems.Add(timesheetDate.GetFormattedRatePerHour());
			listViewItem.SubItems.Add(timesheetDate.GetFormattedInvoiceAmount());
			listViewItem.SubItems.Add(timesheetDate.Notes);

			listViewItem.Tag = timesheetDate;

			return listViewItem;
		}
		private void UpdateTimesheetDetailListViewItem(TimesheetDate timesheetDate) {
			const string noExistsError = "UpdateTimesheetDateListViewItem() failed in an attempt " +
				"to update the Timesheet's Detail ListItem in the ListView because it does not exist; " +
				"use InsertDayTypesListViewItem() instead.";

			ListViewItem listViewItem;
			if (!GetTimesheetDetailListViewItem(timesheetDate, out listViewItem)) {
				throw new InvalidOperationException(noExistsError);
			} else {
				listViewItem.StateImageIndex = timesheetDate.Timesheet.TimesheetSent ? DefaultImageList.Instance.GetLockedIconIndex() : -1;
				listViewItem.ImageIndex = DefaultImageList.Instance.GetCalendarIconIndex();

				listViewItem.Text = Dates.GetMMDDYYYY(timesheetDate.Date);
				listViewItem.SubItems[1].Text = timesheetDate.Date.DayOfWeek.ToString();
				listViewItem.SubItems[2].Text = timesheetDate.DayType.Name;
				listViewItem.SubItems[3].Text = timesheetDate.BillableHours.ToString();
				listViewItem.SubItems[4].Text = timesheetDate.GetFormattedRatePerHour();
				listViewItem.SubItems[5].Text = timesheetDate.GetFormattedInvoiceAmount();
				listViewItem.SubItems[6].Text = timesheetDate.Notes;
			}
		}