public static void SetSelectedDate(this DateTime?equivalentDateTime, WeatherNotesWindow window)
        {
            if (equivalentDateTime.HasValue)
            {
                DateTime dateTime = equivalentDateTime.Value;

                window.LblSelectedDayTitle.Content = dateTime.GetDateTimeTitle();

                dateTime.SetSelectedDayWeatherNotes(window.CalendarData, window.TbxSelectedDayNotes, window.LblSelectedDayWeather);
            }
        }
        public static void GenerateWeatherFromDateTime(this DateTime dateTime, WeatherNotesWindow window, RoutedEventArgs e)
        {
            DayData day;

            WeatherData[] weatherDatas = null;

            if (window.CalendarData.ContainsKey(dateTime))
            {
                day = window.CalendarData[dateTime];

                if (!day.WeatherGenerated)
                {
                    weatherDatas = WeatherGenerator.GenerateWeather(dateTime, day.Weather);
                    day.Weather  = weatherDatas[0];
                }
            }
            else
            {
                weatherDatas = WeatherGenerator.GenerateWeather(dateTime);

                day = new DayData(dateTime, window.TbxSelectedDayNotes.Text, weatherDatas[0]);

                window.CalendarData.Add(dateTime, day);
            }

            DateTime prevDate = dateTime.AddDays(-1);

            if (!day.WeatherGenerated && window.CalendarData.ContainsKey(prevDate))
            {
                DayData prevDay = window.CalendarData[prevDate];

                if (prevDay.WeatherGenerated)
                {
                    day.Weather.Temperature = (day.Weather.Temperature + prevDay.Weather.Temperature) / 2.0;
                    day.Weather.Precipitation.SnowAccumulation = day.Weather.Precipitation.SnowAccumulation + prevDay.Weather.Precipitation.SnowAccumulation;
                    PrecipitationData.MeltSnowOverDay(day.Weather);
                }
            }

            day.WeatherGenerated = true;

            window.CalendarData.SetDictionaryWeatherDatas(dateTime, weatherDatas);

            //dateTime.SetSelectedDayWeatherNotes(window.CalendarData, window.TbxSelectedDayNotes, window.LblSelectedDayWeather);

            e.Handled = true;
        }
        public static void SetDailyNoteboxText(this DateTime?equivalentDateTime, WeatherNotesWindow window, TextChangedEventArgs e)
        {
            if (equivalentDateTime.HasValue && window.TbxSelectedDayNotes.Text != DEFAULT_DAILY_NOTES_TEXT)
            {
                DateTime dateTime = equivalentDateTime.Value;

                if (window.CalendarData.ContainsKey(dateTime))
                {
                    window.CalendarData[dateTime].Notes = window.TbxSelectedDayNotes.Text;
                }
                else
                {
                    window.CalendarData.Add(dateTime, new DayData(dateTime, window.TbxSelectedDayNotes.Text));
                }

                e.Handled = true;
            }
        }
        public static void ClearWeatherFromDateTime(this DateTime dateTime, WeatherNotesWindow window, RoutedEventArgs e)
        {
            DayData day;

            WeatherData[] weatherDatas = null;

            if (window.CalendarData.ContainsKey(dateTime))
            {
                day = window.CalendarData[dateTime];

                if (day.WeatherGenerated)
                {
                    day.Weather = null;
                }

                day.WeatherGenerated = false;
            }

            window.CalendarData.SetDictionaryWeatherDatas(dateTime, weatherDatas);

            //dateTime.SetSelectedDayWeatherNotes(window.CalendarData, window.TbxSelectedDayNotes, window.LblSelectedDayWeather);

            e.Handled = true;
        }
        public static void ClearWeatherToDate(this DateTime startTime, DateTime endTime, WeatherNotesWindow window, RoutedEventArgs e)
        {
            for (DateTime time = startTime; time < endTime; time = time.AddDays(1))
            {
                time.ClearWeatherFromDateTime(window, e);
            }

            startTime.SetSelectedDayWeatherNotes(window.CalendarData, window.TbxSelectedDayNotes, window.LblSelectedDayWeather);
        }
 public static void SetCurrentDateLabel(this DateTime currentDate, WeatherNotesWindow window)
 {
     window.LblCurrentDayTitle.Content = CURRENT_DAY_PREFIX + currentDate.GetDateTimeTitle(false);
 }