private void LoadStrategy()
		{
			SlideHeaders.Clear();
			SourcePrograms.Clear();
			Lengths.Clear();
			Stations.Clear();
			CustomDemos.Clear();
			Dayparts.Clear();
			Times.Clear();

			if (ResourceManager.Instance.MediaListsFile.ExistsLocal())
			{
				var document = new XmlDocument();
				document.Load(ResourceManager.Instance.MediaListsFile.LocalPath);

				XmlNode node = document.SelectSingleNode(String.Format(@"/{0}Strategy", XmlRootPrefix));
				if (node != null)
				{
					foreach (XmlNode childeNode in node.ChildNodes)
					{
						switch (childeNode.Name)
						{
							case "SlideHeader":
								foreach (XmlAttribute attribute in childeNode.Attributes)
								{
									switch (attribute.Name)
									{
										case "Value":
											if (!string.IsNullOrEmpty(attribute.Value) && !SlideHeaders.Contains(attribute.Value))
												SlideHeaders.Add(attribute.Value);
											break;
									}
								}
								break;
							case "FlexFlightDatesAllowed":
								{
									bool temp;
									if (Boolean.TryParse(childeNode.InnerText, out temp))
										FlexFlightDatesAllowed = temp;
								}
								break;
							case "Daypart":
								var daypart = new Daypart();
								foreach (XmlAttribute attribute in childeNode.Attributes)
								{
									switch (attribute.Name)
									{
										case "Name":
											daypart.Name = attribute.Value;
											break;
										case "Code":
											daypart.Code = attribute.Value;
											break;
									}
								}
								if (!string.IsNullOrEmpty(daypart.Name))
									Dayparts.Add(daypart);
								break;
							case "CustomDemo":
								foreach (XmlAttribute attribute in childeNode.Attributes)
									switch (attribute.Name)
									{
										case "Value":
											if (!CustomDemos.Contains(attribute.Value))
												CustomDemos.Add(attribute.Value);
											break;
									}
								break;
							case "Lenght":
								foreach (XmlAttribute attribute in childeNode.Attributes)
								{
									switch (attribute.Name)
									{
										case "Value":
											if (!string.IsNullOrEmpty(attribute.Value) && !SlideHeaders.Contains(attribute.Value))
												Lengths.Add(attribute.Value);
											break;
									}
								}
								break;
							case "Station":
								var station = new Station();
								foreach (XmlAttribute attribute in childeNode.Attributes)
								{
									switch (attribute.Name)
									{
										case "Name":
											station.Name = attribute.Value;
											break;
										case "Logo":
											if (!string.IsNullOrEmpty(attribute.Value))
												station.Logo = new Bitmap(new MemoryStream(Convert.FromBase64String(attribute.Value)));
											break;
									}
								}
								if (!string.IsNullOrEmpty(station.Name))
									Stations.Add(station);
								break;
							case "Program":
								var sourceProgram = new SourceProgram();
								GetProgramProperties(childeNode, ref sourceProgram);
								if (!string.IsNullOrEmpty(sourceProgram.Name))
									SourcePrograms.Add(sourceProgram);
								break;
							case "Status":
								foreach (XmlAttribute attribute in childeNode.Attributes)
									switch (attribute.Name)
									{
										case "Value":
											if (!Statuses.Contains(attribute.Value))
												Statuses.Add(attribute.Value);
											break;
									}
								break;
							case "BroadcastMonthTemplate":
								var monthTemplate = new MediaMonthTemplate();
								monthTemplate.Deserialize(childeNode);
								MonthTemplatesMondayBased.Add(monthTemplate);
								MonthTemplatesSundayBased.Add(monthTemplate);
								break;
							case "DefaultWeeklyScheduleSettings":
								DefaultWeeklyScheduleSettings.Deserialize(childeNode);
								break;
							case "DefaultMonthlyScheduleSettings":
								DefaultMonthlyScheduleSettings.Deserialize(childeNode);
								break;
							case "DefaultSnapshotSettings":
								DefaultSnapshotSettings.Deserialize(childeNode);
								break;
							case "DefaultSnapshotSummarySettings":
								DefaultSnapshotSummarySettings.Deserialize(childeNode);
								break;
							case "DefaultOptionsSettings":
								DefaultOptionsSettings.Deserialize(childeNode);
								break;
							case "DefaultOptionsSummarySettings":
								DefaultOptionsSummarySettings.Deserialize(childeNode);
								break;
							case "DefaultBroadcastCalendarSettings":
								DefaultBroadcastCalendarSettings.Deserialize(childeNode);
								break;
							case "DefaultCustomCalendarSettings":
								DefaultCustomCalendarSettings.Deserialize(childeNode);
								break;
						}
					}
				}
			}

			if (SourcePrograms.Count > 0)
			{
				Times.AddRange(SourcePrograms.Select(x => x.Time).Distinct().ToArray());
				Days.AddRange(SourcePrograms.Select(x => x.Day).Distinct().ToArray());
			}
		}
		private void GetProgramProperties(XmlNode node, ref SourceProgram sourceProgram)
		{
			foreach (XmlAttribute attribute in node.Attributes)
			{
				switch (attribute.Name)
				{
					case "Name":
						sourceProgram.Name = attribute.Value;
						break;
					case "Station":
						sourceProgram.Station = attribute.Value;
						break;
					case "Daypart":
						sourceProgram.Daypart = attribute.Value;
						break;
					case "Day":
						sourceProgram.Day = attribute.Value;
						break;
					case "Time":
						sourceProgram.Time = attribute.Value;
						break;
				}
			}
			foreach (XmlNode childNode in node.ChildNodes)
				switch (childNode.Name)
				{
					case "Demo":
						var demo = new Demo();
						foreach (XmlAttribute attribute in childNode.Attributes)
						{
							switch (attribute.Name)
							{
								case "Source":
									demo.Source = attribute.Value;
									break;
								case "DemoType":
									int tempInt;
									if (Int32.TryParse(attribute.Value, out tempInt))
										demo.DemoType = (DemoType)tempInt;
									break;
								case "Name":
									demo.Name = attribute.Value;
									break;
								case "Value":
									demo.Value = attribute.Value;
									break;
							}
						}
						if (!String.IsNullOrEmpty(demo.Name) && !String.IsNullOrEmpty(demo.Source) && !String.IsNullOrEmpty(demo.Value))
							sourceProgram.Demos.Add(demo);
						break;
				}
		}