public YearControl(CalendarYear data)
		{
			InitializeComponent();
			Data = data;
			Months = new List<MonthControl>();
			WeekDaysPanels = new List<Panel>();
			Text = Data.Year.ToString();
			Resize += YearControl_Resize;
		}
		public void Load()
		{
			Configured = false;
			Years.Clear();
			Files.Clear();

			if (!Directory.Exists(PartFolderPath)) return;

			var configFile = Path.Combine(PartFolderPath, CalendarPartConfigFileName);
			if (!File.Exists(configFile)) return;

			try
			{
				var document = new XmlDocument();
				document.Load(configFile);
				var node = document.SelectSingleNode(@"/Config/Name");
				if (node != null)
				{
					Name = node.InnerText;
					Configured = true;
				}
				node = document.SelectSingleNode(@"/Config/Enabled");
				if (node != null)
				{
					bool temp;
					if (Boolean.TryParse(node.InnerText, out temp))
						Enabled = temp;
				}
			}
			catch { }

			if (!Configured || !Enabled) return;

			foreach (var yearFolderPath in Directory.GetDirectories(PartFolderPath))
			{
				int temp;
				if (!int.TryParse(Path.GetFileName(yearFolderPath), out temp)) continue;
				var year = new CalendarYear(this);
				year.RootFolderPath = yearFolderPath;
				year.Year = temp;
				Files.AddRange(Directory.GetFiles(year.RootFolderPath).Select(filePath => new FileInfo(filePath)));
				Years.Add(year);
			}
			foreach (var year in Years)
			{
				year.LoadSweepPeriods();
				year.LoadMonths();
			}
		}
		public CalendarMonth(CalendarYear parent)
		{
			Parent = parent;
			Days = new List<CalendarDay>();
		}