public SettingsOOF(bool initMessage)
 {
     if (initMessage)
     {
         Message = new OOFMessage[3];
     }
 }
            protected override void ParseResponseBody(ActiveSync.RequestBase request, ZPushConnection.Response response)
            {
                // Check capabilities
                if (response.Capabilities == null)
                {
                    SupportsTimes = null;
                }
                else if (response.Capabilities.Has(Constants.ZPUSH_CAPABILITY_OUT_OF_OFFICE_TIMES))
                {
                    SupportsTimes = true;
                }
                else if (response.Capabilities.Has(Constants.ZPUSH_CAPABILITY_OUT_OF_OFFICE))
                {
                    SupportsTimes = false;
                }
                else
                {
                    SupportsTimes = null;
                }

                // Parse contents
                XPathNavigator nav = response.Body.CreateNavigator().SelectSingleNode("/Settings/Oof/Get");

                State = (OOFState)nav.SelectSingleNode("OofState").ValueAsInt;
                From  = nav.SelectSingleNode("StartTime")?.ValueAsDateTime.ToLocalTime();
                Till  = nav.SelectSingleNode("EndTime")?.ValueAsDateTime.ToLocalTime();

                // Messages
                Message = new OOFMessage[3];
                foreach (XPathNavigator node in nav.Select("OofMessage"))
                {
                    // Target
                    OOFTarget target;
                    if (node.SelectSingleNode("AppliesToInternal") != null)
                    {
                        target = OOFTarget.Internal;
                    }
                    else if (node.SelectSingleNode("AppliesToExternalKnown") != null)
                    {
                        target = OOFTarget.ExternalKnown;
                    }
                    else if (node.SelectSingleNode("AppliesToExternalUnknown") != null)
                    {
                        target = OOFTarget.ExternalUnknown;
                    }
                    else
                    {
                        Logger.Instance.Warning(this, "Unknown OOF message: {0}", node.OuterXml);
                        continue;
                    }

                    // Message
                    OOFMessage oof = new OOFMessage();
                    oof.Message = node.SelectSingleNode("ReplyMessage")?.Value;

                    // Create the object
                    Message[(int)target] = oof;
                }
            }