private string GetDisplayValueFromModel(HoursOfOperationModel model)
		{
			var monday = model[DayOfWeek.Monday] ?? new DayOfOperation();
			var tuesday = model[DayOfWeek.Tuesday] ?? new DayOfOperation();
			var wednesday = model[DayOfWeek.Wednesday] ?? new DayOfOperation();
			var thursday = model[DayOfWeek.Thursday] ?? new DayOfOperation();
			var friday = model[DayOfWeek.Friday] ?? new DayOfOperation();
			var saturday = model[DayOfWeek.Saturday] ?? new DayOfOperation();
			var sunday = model[DayOfWeek.Sunday] ?? new DayOfOperation();

			return string.Format("Open 24 Hours: {0} \n\n" +			                     

			                     "Monday {15} \n\t" +
			                     "Open: {3} \n\t" +
			                     "Close: {4} \n" +

			                     "Tuesday {16} \n\t" +
			                     "Open: {5} \n\t" +
			                     "Close: {6} \n" +

			                     "Wednesday {17} \n\t" +
			                     "Open: {7} \n\t" +
			                     "Close: {8} \n" +

								 "Thursday {18} \n\t" +
			                     "Open: {9} \n\t" +
			                     "Close: {10}\n" +

								 "Friday {19} \n\t" +
			                     "Open: {11} \n\t" +
			                     "Close: {12} \n" +

								 "Saturday {20} \n\t" +
			                     "Open: {13} \n\t" +
			                     "Close: {14} \n" +

								 "Sunday {21} \n\t" +
			                     "Open: {1} \n\t" +
			                     "Close: {2} \n"

			                     , model.OpenTwentyFourHours
								 , sunday.IsClosed ? "" : sunday.OpeningTime
								 , sunday.IsClosed ? "" : sunday.ClosingTime
								 , monday.IsClosed ? "" : monday.OpeningTime
								 , monday.IsClosed ? "" : monday.ClosingTime
								 , tuesday.IsClosed ? "" : tuesday.OpeningTime
								 , tuesday.IsClosed ? "" : tuesday.ClosingTime
								 , wednesday.IsClosed ? "" : wednesday.OpeningTime
								 , wednesday.IsClosed ? "" : wednesday.ClosingTime
								 , thursday.IsClosed ? "" : thursday.OpeningTime
								 , thursday.IsClosed ? "" : thursday.ClosingTime
								 , friday.IsClosed ? "" : friday.OpeningTime
								 , friday.IsClosed ? "" : friday.ClosingTime
								 , saturday.IsClosed ? "" : saturday.OpeningTime
								 , saturday.IsClosed ? "" : saturday.ClosingTime
								 , monday.IsClosed ? "(Closed)" : ""
								 , tuesday.IsClosed ? "(Closed)" : ""
								 , wednesday.IsClosed ? "(Closed)" : ""
								 , thursday.IsClosed ? "(Closed)" : ""
								 , friday.IsClosed ? "(Closed)" : ""
								 , saturday.IsClosed ? "(Closed)" : ""
								 , sunday.IsClosed ? "(Closed)" : "");
		}		
		protected override void OnLoad(EventArgs e)
		{
			if (!Sitecore.Context.ClientPage.IsEvent)
			{
				//get the current value
				var model = new HoursOfOperationModel(Value);

				//set the values on the textbox control
				var hoursOfOperationTextBox = FindControl(GetID("HoursOfOperationTextBox")) as Memo;
				hoursOfOperationTextBox.Value = GetDisplayValueFromModel(model);
			}

			base.OnLoad(e);
		}
		private HoursOfOperationModel CreateModelFromDialogValues()
		{
			var model = new HoursOfOperationModel
				            {
					            OpenTwentyFourHours = OpenTwentyFourHoursRaw != null && OpenTwentyFourHoursRaw.Value == "1",
				            };

			model.Days.Add(new DayOfOperation
				               {
					               ClosingTime =
						               MondayClosingTimeSelectRaw != null
							               ? MondayClosingTimeSelectRaw.Value
							               : "",
					               IsClosed =
						               MondayClosedCheckboxRaw != null &&
						               MondayClosedCheckboxRaw.Value == "1",
					               OpeningTime =
						               MondayOpeningTimeSelectRaw != null
							               ? MondayOpeningTimeSelectRaw.Value
							               : "",
					               DayOfWeek = DayOfWeek.Monday
				               });

			model.Days.Add(new DayOfOperation
				               {
					               ClosingTime =
						               TuesdayClosingTimeSelectRaw != null
							               ? TuesdayClosingTimeSelectRaw.Value
							               : "",
					               IsClosed =
						               TuesdayClosedCheckboxRaw != null &&
						               TuesdayClosedCheckboxRaw.Value == "1",
					               OpeningTime =
						               TuesdayOpeningTimeSelectRaw != null
							               ? TuesdayOpeningTimeSelectRaw.Value
							               : "",
					               DayOfWeek = DayOfWeek.Tuesday
				               });

			model.Days.Add(new DayOfOperation
				               {
					               ClosingTime =
						               WednesdayClosingTimeSelectRaw != null
							               ? WednesdayClosingTimeSelectRaw.Value
							               : "",
					               IsClosed =
						               WednesdayClosedCheckboxRaw != null &&
						               WednesdayClosedCheckboxRaw.Value == "1",
					               OpeningTime =
						               WednesdayOpeningTimeSelectRaw != null
							               ? WednesdayOpeningTimeSelectRaw.Value
							               : "",
					               DayOfWeek = DayOfWeek.Wednesday
				               });

			model.Days.Add(new DayOfOperation
				               {
					               ClosingTime =
						               ThursdayClosingTimeSelectRaw != null
							               ? ThursdayClosingTimeSelectRaw.Value
							               : "",
					               IsClosed =
						               ThursdayClosedCheckboxRaw != null &&
						               ThursdayClosedCheckboxRaw.Value == "1",
					               OpeningTime =
						               ThursdayOpeningTimeSelectRaw != null
							               ? ThursdayOpeningTimeSelectRaw.Value
							               : "",
					               DayOfWeek = DayOfWeek.Thursday
				               });

			model.Days.Add(new DayOfOperation
				               {
					               ClosingTime =
						               FridayClosingTimeSelectRaw != null
							               ? FridayClosingTimeSelectRaw.Value
							               : "",
					               IsClosed =
						               FridayClosedCheckboxRaw != null &&
						               FridayClosedCheckboxRaw.Value == "1",
					               OpeningTime =
						               FridayOpeningTimeSelectRaw != null
							               ? FridayOpeningTimeSelectRaw.Value
							               : "",
					               DayOfWeek = DayOfWeek.Friday
				               });

			model.Days.Add(new DayOfOperation
				               {
					               ClosingTime =
						               SaturdayClosingTimeSelectRaw != null
							               ? SaturdayClosingTimeSelectRaw.Value
							               : "",
					               IsClosed =
						               SaturdayClosedCheckboxRaw != null &&
						               SaturdayClosedCheckboxRaw.Value == "1",
					               OpeningTime =
						               SaturdayOpeningTimeSelectRaw != null
							               ? SaturdayOpeningTimeSelectRaw.Value
							               : "",
					               DayOfWeek = DayOfWeek.Saturday
				               });

			model.Days.Add(new DayOfOperation
				               {
					               ClosingTime =
						               SundayClosingTimeSelectRaw != null
							               ? SundayClosingTimeSelectRaw.Value
							               : "",
					               IsClosed =
						               SundayClosedCheckboxRaw != null &&
						               SundayClosedCheckboxRaw.Value == "1",
					               OpeningTime =
						               SundayOpeningTimeSelectRaw != null
							               ? SundayOpeningTimeSelectRaw.Value
							               : "",
					               DayOfWeek = DayOfWeek.Sunday
				               });
			
			return model;
		}
		protected override void OnLoad(EventArgs e)
		{
			base.OnLoad(e);


			if (Context.ClientPage.IsEvent) return;

			var itemUri = WebUtil.GetQueryString("itemUri");
			var fieldName = WebUtil.GetQueryString("fieldName");

			if(!ItemUri.IsItemUri(itemUri) || string.IsNullOrWhiteSpace(fieldName))
				return;
				
			var item = Database.GetItem(ItemUri.Parse(itemUri));

			if(item == null)
				return;

			var model = new HoursOfOperationModel(item[fieldName]);

			OpenTwentyFourHoursRaw.Value = model.OpenTwentyFourHours ? "1" : "0";			

			if (model[DayOfWeek.Monday] != null)
			{
				MondayOpeningTimeSelectRaw.Value = model[DayOfWeek.Monday].OpeningTime;
				MondayClosingTimeSelectRaw.Value = model[DayOfWeek.Monday].ClosingTime;
				MondayClosedCheckboxRaw.Value = model[DayOfWeek.Monday].IsClosed ? "1" : "0";
			}

			if (model[DayOfWeek.Tuesday] != null)
			{
				TuesdayOpeningTimeSelectRaw.Value = model[DayOfWeek.Tuesday].OpeningTime;
				TuesdayClosingTimeSelectRaw.Value = model[DayOfWeek.Tuesday].ClosingTime;
				TuesdayClosedCheckboxRaw.Value = model[DayOfWeek.Tuesday].IsClosed ? "1" : "0";
			}

			if (model[DayOfWeek.Wednesday] != null)
			{
				WednesdayOpeningTimeSelectRaw.Value = model[DayOfWeek.Wednesday].OpeningTime;
				WednesdayClosingTimeSelectRaw.Value = model[DayOfWeek.Wednesday].ClosingTime;
				WednesdayClosedCheckboxRaw.Value = model[DayOfWeek.Wednesday].IsClosed ? "1" : "0";
			}

			if (model[DayOfWeek.Thursday] != null)
			{
				ThursdayOpeningTimeSelectRaw.Value = model[DayOfWeek.Thursday].OpeningTime;
				ThursdayClosingTimeSelectRaw.Value = model[DayOfWeek.Thursday].ClosingTime;
				ThursdayClosedCheckboxRaw.Value = model[DayOfWeek.Thursday].IsClosed ? "1" : "0";
			}

			if (model[DayOfWeek.Friday] != null)
			{
				FridayOpeningTimeSelectRaw.Value = model[DayOfWeek.Friday].OpeningTime;
				FridayClosingTimeSelectRaw.Value = model[DayOfWeek.Friday].ClosingTime;
				FridayClosedCheckboxRaw.Value = model[DayOfWeek.Friday].IsClosed ? "1" : "0";
			}

			if (model[DayOfWeek.Saturday] != null)
			{
				SaturdayOpeningTimeSelectRaw.Value = model[DayOfWeek.Saturday].OpeningTime;
				SaturdayClosingTimeSelectRaw.Value = model[DayOfWeek.Saturday].ClosingTime;
				SaturdayClosedCheckboxRaw.Value = model[DayOfWeek.Saturday].IsClosed ? "1" : "0";
			}

			if (model[DayOfWeek.Sunday] != null)
			{
				SundayOpeningTimeSelectRaw.Value = model[DayOfWeek.Sunday].OpeningTime;
				SundayClosingTimeSelectRaw.Value = model[DayOfWeek.Sunday].ClosingTime;
				SundayClosedCheckboxRaw.Value = model[DayOfWeek.Sunday].IsClosed ? "1" : "0";
			}
		}		
		private string SerializeModelToRawValue(HoursOfOperationModel model)
		{
			var serializer = new XmlSerializer(typeof(HoursOfOperationModel));
			var stringwriter = new StringWriter();

			serializer.Serialize(stringwriter, model);

			return stringwriter.ToString();
		}