/// <summary>
        /// Called by the ASP.NET page framework to notify server controls
        /// that use composition-based implementation to create any child
        /// controls they contain in preparation for posting back or rendering.
        /// </summary>
        protected override void CreateChildControls()
        {
            _calendarView = new SPCalendarView
            {
                Width = new Unit(100, UnitType.Percentage)
            };

            _xmlCalendar = GetCalendarXML();

            if (_xmlCalendar != null)
            {
                _xmlCalendar.Decorate(_calendarView);
            }

            if (Page.Request.QueryString["CalendarPeriod"] != null)
            {
                const string month    = "month";
                const string day      = "day";
                const string week     = "week";
                const string timeline = "timeline";

                switch (Page.Request.QueryString["CalendarPeriod"].ToLower())
                {
                case month:
                    _calendarView.ViewType = month;
                    break;

                case day:
                    _calendarView.ViewType = day;
                    break;

                case week:
                    _calendarView.ViewType = week;
                    break;

                case timeline:
                    _calendarView.ViewType = timeline;
                    break;
                }
            }

            _calendarView.EnableViewState = true;
            Controls.Add(_calendarView);
            base.CreateChildControls();
        }
        /// <summary>
        /// Gets the XML calendar.
        /// </summary>
        /// <returns>A SPSCalendarXML definition</returns>
        private SPSCalendarXML GetCalendarXML()
        {
            XmlSerializer serializer = new XmlSerializer(typeof(SPSCalendarXML));

            _xmlTransformed = Transform().ToString();

            if (!string.IsNullOrEmpty(_xmlTransformed))
            {
                try
                {
                    TextReader     reader   = new StringReader(_xmlTransformed);
                    SPSCalendarXML calendar = (SPSCalendarXML)serializer.Deserialize(reader);
                    return(calendar);
                }
                catch (Exception ex)
                {
                    TrapError(GetType(), SPSLocalization.GetResourceString("SPSFW_Err_XmlCalendar"), ex);
                }
            }
            return(null);
        }