protected void ConfigureRoomRateSelectControl()
    {
        string strSelectedRoom = (string)Session["SelectedRoom"];

        HotelAvailabilityRS objHotelAvailabilityRS = (HotelAvailabilityRS)Session["HotelAvailabilityRS"];
        HotelDescriptiveInfoRS objHotelDescriptiveInfoRS = (HotelDescriptiveInfoRS)Session["HotelDescriptiveInfoRS"];

        StayCriteriaSelection objStayCriteriaSelection = (StayCriteriaSelection)Session[Constants.Sessions.StayCriteriaSelection];
        RoomRateSelection[] objRoomRateSelections = (RoomRateSelection[])Session["RoomRateSelections"];

        ShowMoreRatesIndicator[] objShowMoreRatesIndicators = (ShowMoreRatesIndicator[])Session["ShowMoreRatesIndicators"];

        RoomOccupantSelection objRoomOccupantSelection = new RoomOccupantSelection();

        bool IsRoomRateDescriptionModel;

        if (ConfigurationManager.AppSettings["EnableRoomRateDescriptionModel"] == "1")
            IsRoomRateDescriptionModel = true;
        else
            IsRoomRateDescriptionModel = false;

        for (int i = 0; i < objStayCriteriaSelection.RoomOccupantSelections.Length; i++)
        {
            if (objStayCriteriaSelection.RoomOccupantSelections[i].RoomRefID == strSelectedRoom)
            {
                objRoomOccupantSelection = objStayCriteriaSelection.RoomOccupantSelections[i];
                break;
            }

        }

        RoomRateSelection objRoomRateSelection = new RoomRateSelection();

        for (int i = 0; i < objRoomRateSelections.Length; i++)
        {
            if (objRoomRateSelections[i].RoomRefID == strSelectedRoom)
            {
                objRoomRateSelection = objRoomRateSelections[i];
                break;
            }

        }

        HotelRoomAvailInfo objHotelRoomAvailInfo = new HotelRoomAvailInfo();

        for (int i = 0; i < objHotelAvailabilityRS.HotelRoomAvailInfos.Length; i++)
        {
            if (objHotelAvailabilityRS.HotelRoomAvailInfos[i].SegmentRefID == strSelectedRoom)
            {
                objHotelRoomAvailInfo = objHotelAvailabilityRS.HotelRoomAvailInfos[i];
                break;
            }

        }

        HotelDescriptiveInfo objHotelDescriptiveInfo = new HotelDescriptiveInfo();

        if (objHotelDescriptiveInfoRS.HotelDescriptiveInfos.Length != 0)
        {
            objHotelDescriptiveInfo = objHotelDescriptiveInfoRS.HotelDescriptiveInfos[0];
        }

        if (ConfigurationManager.AppSettings["EnableRoomRateGridModel"] != "1")
        {
            string strRoomSelectorItemControlPath = ConfigurationManager.AppSettings["RoomSelectorItemControl.ascx"];
            string strRoomTypeSelectorItemControlPath = ConfigurationManager.AppSettings["RoomTypeSelectorItemControl.ascx"];
            string strRatePlanSelectorItemControlPath = ConfigurationManager.AppSettings["RatePlanSelectorItemControl.ascx"];

            ucRoomRateSelectorControl.Clear();

            ucRoomRateSelectorControl.ID = "RoomRateSelector";
            ucRoomRateSelectorControl.RoomRefID = strSelectedRoom;
            ucRoomRateSelectorControl.HotelRoomAvailInfo = objHotelRoomAvailInfo;
            ucRoomRateSelectorControl.RoomOccupantSelection = objRoomOccupantSelection;

            for (int i = 0; i < objStayCriteriaSelection.RoomOccupantSelections.Length; i++)
            {
                RoomSelectorItemControl ucRoomSelectorItemControl = (RoomSelectorItemControl)LoadControl(strRoomSelectorItemControlPath);
                ucRoomRateSelectorControl.AddRoomSelectorItem(ucRoomSelectorItemControl);

                ucRoomSelectorItemControl.ID = "RoomSelectorItem" + objStayCriteriaSelection.RoomOccupantSelections[i].RoomRefID;
                ucRoomSelectorItemControl.RoomRefID = objStayCriteriaSelection.RoomOccupantSelections[i].RoomRefID;
                ucRoomSelectorItemControl.RoomRefIDMenuText = (String)GetGlobalResourceObject("SiteResources", "RoomSelectorMenuText") + " " + objStayCriteriaSelection.RoomOccupantSelections[i].RoomRefID;

                if (objStayCriteriaSelection.RoomOccupantSelections[i].RoomRefID == strSelectedRoom)
                    ucRoomSelectorItemControl.Selected = true;
                else
                    ucRoomSelectorItemControl.Selected = false;
            }

            if (objHotelRoomAvailInfo.RoomTypes != null)
            {
                for (int i = 0; i < objHotelRoomAvailInfo.RoomTypes.Length; i++)
                {
                    bool bRatesAvailable = false;

                    for (int j = 0; j < objHotelRoomAvailInfo.RoomRates.Length; j++)
                    {
                        if (objHotelRoomAvailInfo.RoomRates[j].RoomTypeCode == objHotelRoomAvailInfo.RoomTypes[i].Code)
                        {
                            if (!IsRoomRateDescriptionModel)
                            {
                                bRatesAvailable = true;
                                break;
                            }

                            else
                            {
                                if (objHotelRoomAvailInfo.RoomRates[j].DescriptionStatus == RoomRateDescriptionStatus.Active)
                                {
                                    bRatesAvailable = true;
                                    break;
                                }

                                for (int k = 0; k < objHotelRoomAvailInfo.RatePlans.Length; k++)
                                {
                                    if (objHotelRoomAvailInfo.RatePlans[k].Code == objHotelRoomAvailInfo.RoomRates[j].RatePlanCode)
                                    {
                                        if (objHotelRoomAvailInfo.RatePlans[k].Type == RatePlanType.Negotiated || objHotelRoomAvailInfo.RatePlans[k].Type == RatePlanType.Consortia)
                                        {
                                            bRatesAvailable = true;
                                        }

                                        break;
                                    }

                                }

                                if (bRatesAvailable)
                                    break;
                            }

                        }

                    }

                    if (!bRatesAvailable)
                        continue;

                    RoomTypeSelectorItemControl ucRoomTypeSelectorItemControl = (RoomTypeSelectorItemControl)LoadControl(strRoomTypeSelectorItemControlPath);
                    ucRoomRateSelectorControl.AddRoomTypeSelectorItem(ucRoomTypeSelectorItemControl);

                    ucRoomTypeSelectorItemControl.ID = "RoomTypeSelectorItem" + objHotelRoomAvailInfo.RoomTypes[i].Code;
                    ucRoomTypeSelectorItemControl.RoomRefID = strSelectedRoom;

                    for (int j = 0; j < objHotelDescriptiveInfo.RoomTypes.Length; j++)
                    {
                        if (objHotelDescriptiveInfo.RoomTypes[j].Code == objHotelRoomAvailInfo.RoomTypes[i].Code)
                        {
                            ucRoomTypeSelectorItemControl.RoomType = objHotelDescriptiveInfo.RoomTypes[j];
                            break;
                        }

                    }

                    ucRoomTypeSelectorItemControl.ShowMoreRates = false;

                    for (int j = 0; j < objShowMoreRatesIndicators.Length; j++)
                    {
                        if (objShowMoreRatesIndicators[j].RoomRefID == ucRoomTypeSelectorItemControl.RoomRefID && objShowMoreRatesIndicators[j].RoomTypeCode == ucRoomTypeSelectorItemControl.RoomType.Code)
                        {
                            ucRoomTypeSelectorItemControl.ShowMoreRates = true;
                            break;
                        }

                    }

                    ucRoomTypeSelectorItemControl.Clear();

                    for (int k = 0; k < objHotelRoomAvailInfo.RoomRates.Length; k++)
                    {
                        if (objHotelRoomAvailInfo.RoomRates[k].RoomTypeCode == ucRoomTypeSelectorItemControl.RoomType.Code)
                        {
                            bool bListRatePlan = true;

                            if (IsRoomRateDescriptionModel && objHotelRoomAvailInfo.RoomRates[k].DescriptionStatus == RoomRateDescriptionStatus.Inactive)
                            {
                                for (int l = 0; l < objHotelRoomAvailInfo.RatePlans.Length; l++)
                                {
                                    if (objHotelRoomAvailInfo.RatePlans[l].Code == objHotelRoomAvailInfo.RoomRates[k].RatePlanCode)
                                    {
                                        if (objHotelRoomAvailInfo.RatePlans[l].Type != RatePlanType.Negotiated && objHotelRoomAvailInfo.RatePlans[l].Type != RatePlanType.Consortia)
                                        {
                                            bListRatePlan = false;
                                        }

                                        break;
                                    }

                                }

                            }

                            if (!bListRatePlan)
                                continue;

                            RatePlanSelectorItemControl ucRatePlanSelectorItemControl = (RatePlanSelectorItemControl)LoadControl(strRatePlanSelectorItemControlPath);
                            ucRoomTypeSelectorItemControl.AddRatePlanSelectorItem(ucRatePlanSelectorItemControl);

                            ucRatePlanSelectorItemControl.ID = "RatePlanSelectorItem" + objHotelRoomAvailInfo.RoomRates[k].RatePlanCode;
                            ucRatePlanSelectorItemControl.RoomRefID = strSelectedRoom;
                            ucRatePlanSelectorItemControl.RoomRate = objHotelRoomAvailInfo.RoomRates[k];
                            ucRatePlanSelectorItemControl.CreditCardCodes = objHotelDescriptiveInfo.CreditCardCodes;
                            ucRatePlanSelectorItemControl.Selected = false;

                            for (int m = 0; m < objHotelRoomAvailInfo.RatePlans.Length; m++)
                            {
                                if (objHotelRoomAvailInfo.RatePlans[m].Code == objHotelRoomAvailInfo.RoomRates[k].RatePlanCode)
                                {
                                    ucRatePlanSelectorItemControl.RatePlan = objHotelRoomAvailInfo.RatePlans[m];
                                    break;
                                }

                            }

                            if (objRoomRateSelection.RoomTypeCode == ucRatePlanSelectorItemControl.RoomRate.RoomTypeCode && objRoomRateSelection.RatePlanCode == ucRatePlanSelectorItemControl.RoomRate.RatePlanCode)
                                ucRatePlanSelectorItemControl.Selected = true;
                        }

                    }

                }

            }

        }

        else
        {
            AvailabilityCalendar objAvailabilityCalendar = new AvailabilityCalendar();

            for (int i = 0; i < objHotelAvailabilityRS.HotelRoomAvailInfos.Length; i++)
            {
                if (objHotelAvailabilityRS.HotelRoomAvailInfos[i].SegmentRefID == strSelectedRoom)
                {
                    objAvailabilityCalendar = objHotelAvailabilityRS.HotelRoomAvailInfos[i].AvailabilityCalendar;
                    break;
                }

            }

            DateTime dtRateGridStartDate = (DateTime)Session["RateGridStartDate"];

            string strRoomSelectorItemControlPath = ConfigurationManager.AppSettings["RoomSelectorItemControl.ascx"];
            string strRoomTypeSelectorGridItemControlPath = ConfigurationManager.AppSettings["RoomTypeSelectorGridItemControl.ascx"];
            string strRatePlanSelectorGridItemControlPath = ConfigurationManager.AppSettings["RatePlanSelectorGridItemControl.ascx"];

            ucRoomRateSelectorGridControl.Clear();

            ucRoomRateSelectorGridControl.ID = "RoomRateSelector";
            ucRoomRateSelectorGridControl.RoomRefID = strSelectedRoom;
            ucRoomRateSelectorGridControl.HotelRoomAvailInfo = objHotelRoomAvailInfo;
            ucRoomRateSelectorGridControl.RoomOccupantSelection = objRoomOccupantSelection;
            ucRoomRateSelectorGridControl.GridTodayDate = TZNet.ToLocal(WbsUiHelper.GetTimeZone(objStayCriteriaSelection.HotelCode), DateTime.UtcNow).Date;
            ucRoomRateSelectorGridControl.GridStartDate = dtRateGridStartDate.Date;
            ucRoomRateSelectorGridControl.GridNumberDays = this.NumberDaysInRateGrid;

            for (int i = 0; i < objStayCriteriaSelection.RoomOccupantSelections.Length; i++)
            {
                RoomSelectorItemControl ucRoomSelectorItemControl = (RoomSelectorItemControl)LoadControl(strRoomSelectorItemControlPath);
                ucRoomRateSelectorGridControl.AddRoomSelectorItem(ucRoomSelectorItemControl);

                ucRoomSelectorItemControl.ID = "RoomSelectorItem" + objStayCriteriaSelection.RoomOccupantSelections[i].RoomRefID;
                ucRoomSelectorItemControl.RoomRefID = objStayCriteriaSelection.RoomOccupantSelections[i].RoomRefID;
                ucRoomSelectorItemControl.RoomRefIDMenuText = (String)GetGlobalResourceObject("SiteResources", "RoomSelectorMenuText") + " " + objStayCriteriaSelection.RoomOccupantSelections[i].RoomRefID;

                if (objStayCriteriaSelection.RoomOccupantSelections[i].RoomRefID == strSelectedRoom)
                    ucRoomSelectorItemControl.Selected = true;
                else
                    ucRoomSelectorItemControl.Selected = false;
            }

            if (objHotelRoomAvailInfo.RoomTypes != null && objAvailabilityCalendar.RoomRates != null)
            {
                for (int i = 0; i < objHotelRoomAvailInfo.RoomTypes.Length; i++)
                {
                    bool bRatesAvailable = false;

                    for (int j = 0; j < objAvailabilityCalendar.RoomRates.Length; j++)
                    {
                        if (objAvailabilityCalendar.RoomRates[j].RoomTypeCode == objHotelRoomAvailInfo.RoomTypes[i].Code)
                        {
                            if (!IsRoomRateDescriptionModel)
                            {
                                bRatesAvailable = true;
                                break;
                            }

                            else
                            {
                                if (objAvailabilityCalendar.RoomRates[j].DescriptionStatus == RoomRateDescriptionStatus.Active)
                                {
                                    bRatesAvailable = true;
                                    break;
                                }

                                for (int k = 0; k < objHotelRoomAvailInfo.RatePlans.Length; k++)
                                {
                                    if (objHotelRoomAvailInfo.RatePlans[k].Code == objAvailabilityCalendar.RoomRates[j].RatePlanCode)
                                    {
                                        if (objHotelRoomAvailInfo.RatePlans[k].Type == RatePlanType.Negotiated || objHotelRoomAvailInfo.RatePlans[k].Type == RatePlanType.Consortia)
                                        {
                                            bRatesAvailable = true;
                                        }

                                        break;
                                    }

                                }

                                if (bRatesAvailable)
                                    break;
                            }

                        }

                    }

                    if (!bRatesAvailable)
                        continue;

                    RoomTypeSelectorGridItemControl ucRoomTypeSelectorGridItemControl = (RoomTypeSelectorGridItemControl)LoadControl(strRoomTypeSelectorGridItemControlPath);
                    ucRoomRateSelectorGridControl.AddRoomTypeSelectorGridItem(ucRoomTypeSelectorGridItemControl);

                    ucRoomTypeSelectorGridItemControl.ID = "RoomTypeSelectorItem" + objHotelRoomAvailInfo.RoomTypes[i].Code;
                    ucRoomTypeSelectorGridItemControl.RoomRefID = strSelectedRoom;
                    ucRoomTypeSelectorGridItemControl.GridTodayDate = ucRoomRateSelectorGridControl.GridTodayDate;
                    ucRoomTypeSelectorGridItemControl.GridStartDate = ucRoomRateSelectorGridControl.GridStartDate;
                    ucRoomTypeSelectorGridItemControl.GridNumberDays = ucRoomRateSelectorGridControl.GridNumberDays;
                    ucRoomTypeSelectorGridItemControl.GridSelectedStartDate = objStayCriteriaSelection.ArrivalDate;
                    ucRoomTypeSelectorGridItemControl.GridSelectedEndDate = objStayCriteriaSelection.DepartureDate.AddDays(-1);

                    for (int j = 0; j < objHotelDescriptiveInfo.RoomTypes.Length; j++)
                    {
                        if (objHotelDescriptiveInfo.RoomTypes[j].Code == objHotelRoomAvailInfo.RoomTypes[i].Code)
                        {
                            ucRoomTypeSelectorGridItemControl.RoomType = objHotelDescriptiveInfo.RoomTypes[j];
                            break;
                        }

                    }

                    ucRoomTypeSelectorGridItemControl.ShowMoreRates = false;

                    for (int j = 0; j < objShowMoreRatesIndicators.Length; j++)
                    {
                        if (objShowMoreRatesIndicators[j].RoomRefID == ucRoomTypeSelectorGridItemControl.RoomRefID && objShowMoreRatesIndicators[j].RoomTypeCode == ucRoomTypeSelectorGridItemControl.RoomType.Code)
                        {
                            ucRoomTypeSelectorGridItemControl.ShowMoreRates = true;
                            break;
                        }

                    }

                    ucRoomTypeSelectorGridItemControl.Clear();

                    for (int k = 0; k < objAvailabilityCalendar.RoomRates.Length; k++)
                    {
                        if (objAvailabilityCalendar.RoomRates[k].RoomTypeCode == ucRoomTypeSelectorGridItemControl.RoomType.Code)
                        {
                            bool bListRatePlan = true;

                            if (IsRoomRateDescriptionModel && objAvailabilityCalendar.RoomRates[k].DescriptionStatus == RoomRateDescriptionStatus.Inactive)
                            {
                                for (int l = 0; l < objHotelRoomAvailInfo.RatePlans.Length; l++)
                                {
                                    if (objHotelRoomAvailInfo.RatePlans[l].Code == objAvailabilityCalendar.RoomRates[k].RatePlanCode)
                                    {
                                        if (objHotelRoomAvailInfo.RatePlans[l].Type != RatePlanType.Negotiated && objHotelRoomAvailInfo.RatePlans[l].Type != RatePlanType.Consortia)
                                        {
                                            bListRatePlan = false;
                                        }

                                        break;
                                    }

                                }

                            }

                            if (!bListRatePlan)
                                continue;

                            RatePlanSelectorGridItemControl ucRatePlanSelectorGridItemControl = (RatePlanSelectorGridItemControl)LoadControl(strRatePlanSelectorGridItemControlPath);
                            ucRoomTypeSelectorGridItemControl.AddRatePlanSelectorGridItem(ucRatePlanSelectorGridItemControl);

                            ucRatePlanSelectorGridItemControl.ID = "RatePlanSelectorItem" + objAvailabilityCalendar.RoomRates[k].RatePlanCode;
                            ucRatePlanSelectorGridItemControl.RoomRefID = strSelectedRoom;
                            ucRatePlanSelectorGridItemControl.GridStartDate = ucRoomTypeSelectorGridItemControl.GridStartDate;
                            ucRatePlanSelectorGridItemControl.GridNumberDays = ucRoomTypeSelectorGridItemControl.GridNumberDays;
                            ucRatePlanSelectorGridItemControl.GridRoomRate = objAvailabilityCalendar.RoomRates[k];
                            ucRatePlanSelectorGridItemControl.GridRoomRateStartDate = objAvailabilityCalendar.StartDate.Date;
                            ucRatePlanSelectorGridItemControl.ArrivalDate = objStayCriteriaSelection.ArrivalDate.Date;
                            ucRatePlanSelectorGridItemControl.TotalStayNights = ((TimeSpan)(objStayCriteriaSelection.DepartureDate.Date.Subtract(objStayCriteriaSelection.ArrivalDate.Date))).Days;
                            ucRatePlanSelectorGridItemControl.CreditCardCodes = objHotelDescriptiveInfo.CreditCardCodes;
                            ucRatePlanSelectorGridItemControl.Available = false;
                            ucRatePlanSelectorGridItemControl.Selected = false;

                            for (int m = 0; m < objHotelRoomAvailInfo.RatePlans.Length; m++)
                            {
                                if (objHotelRoomAvailInfo.RatePlans[m].Code == objAvailabilityCalendar.RoomRates[k].RatePlanCode)
                                {
                                    ucRatePlanSelectorGridItemControl.RatePlan = objHotelRoomAvailInfo.RatePlans[m];
                                    break;
                                }

                            }

                            for (int m = 0; m < objHotelRoomAvailInfo.RoomRates.Length; m++)
                            {
                                if (objHotelRoomAvailInfo.RoomRates[m].RoomTypeCode == objAvailabilityCalendar.RoomRates[k].RoomTypeCode && objHotelRoomAvailInfo.RoomRates[m].RatePlanCode == objAvailabilityCalendar.RoomRates[k].RatePlanCode)
                                {
                                    ucRatePlanSelectorGridItemControl.Available = true;
                                    ucRatePlanSelectorGridItemControl.RoomRate = objHotelRoomAvailInfo.RoomRates[m];
                                    break;
                                }

                            }

                            for (int m = 0; m < objAvailabilityCalendar.RatePlans.Length; m++)
                            {
                                if (objAvailabilityCalendar.RatePlans[m].RatePlanCode == objAvailabilityCalendar.RoomRates[k].RatePlanCode)
                                {
                                    ucRatePlanSelectorGridItemControl.GridRatePlan = objAvailabilityCalendar.RatePlans[m];
                                    break;
                                }

                            }

                            if (objRoomRateSelection.RoomTypeCode == objAvailabilityCalendar.RoomRates[k].RoomTypeCode && objRoomRateSelection.RatePlanCode == objAvailabilityCalendar.RoomRates[k].RatePlanCode)
                                ucRatePlanSelectorGridItemControl.Selected = true;
                        }

                    }

                }

            }

        }

        return;
    }
    private void ConfigureAddOnPackageSelectorControl()
    {
        string strSelectedRoom = (string)Session["SelectedRoom"];

        HotelAvailabilityRS objHotelAvailabilityRS = (HotelAvailabilityRS)Session["HotelAvailabilityRS"];
        HotelDescriptiveInfoRS objHotelDescriptiveInfoRS = (HotelDescriptiveInfoRS)Session["HotelDescriptiveInfoRS"];

        StayCriteriaSelection objStayCriteriaSelection = (StayCriteriaSelection)Session[Constants.Sessions.StayCriteriaSelection];
        RoomRateSelection[] objRoomRateSelections = (RoomRateSelection[])Session["RoomRateSelections"];
        AddOnPackageSelection[] objAddOnPackageSelections = (AddOnPackageSelection[])Session["AddOnPackageSelections"];

        RoomOccupantSelection objRoomOccupantSelection = new RoomOccupantSelection();

        for (int i = 0; i < objStayCriteriaSelection.RoomOccupantSelections.Length; i++)
        {
            if (objStayCriteriaSelection.RoomOccupantSelections[i].RoomRefID == strSelectedRoom)
            {
                objRoomOccupantSelection = objStayCriteriaSelection.RoomOccupantSelections[i];
                break;
            }

        }

        RoomRateSelection objRoomRateSelection = new RoomRateSelection();

        for (int i = 0; i < objRoomRateSelections.Length; i++)
        {
            if (objRoomRateSelections[i].RoomRefID == strSelectedRoom)
            {
                objRoomRateSelection = objRoomRateSelections[i];
                break;
            }

        }

        HotelRoomAvailInfo objHotelRoomAvailInfo = new HotelRoomAvailInfo();

        for (int i = 0; i < objHotelAvailabilityRS.HotelRoomAvailInfos.Length; i++)
        {
            if (objHotelAvailabilityRS.HotelRoomAvailInfos[i].SegmentRefID == strSelectedRoom)
            {
                objHotelRoomAvailInfo = objHotelAvailabilityRS.HotelRoomAvailInfos[i];
                break;
            }

        }

        List<AddOnPackageSelection> lAddOnPackageSelections = new List<AddOnPackageSelection>();

        for (int i = 0; i < objAddOnPackageSelections.Length; i++)
        {
            if (objAddOnPackageSelections[i].RoomRefID == strSelectedRoom)
            {
                lAddOnPackageSelections.Add(objAddOnPackageSelections[i]);
            }

        }

        HotelDescriptiveInfo objHotelDescriptiveInfo = new HotelDescriptiveInfo();

        if (objHotelDescriptiveInfoRS.HotelDescriptiveInfos.Length != 0)
        {
            objHotelDescriptiveInfo = objHotelDescriptiveInfoRS.HotelDescriptiveInfos[0];
        }

        int intNumberStayNights = ((TimeSpan)objStayCriteriaSelection.DepartureDate.Subtract(objStayCriteriaSelection.ArrivalDate)).Days;

        string strRoomSelectorItemControlPath = ConfigurationManager.AppSettings["RoomSelectorItemControl.ascx"];
        string strAddOnPackageSelectorItemControlPath = ConfigurationManager.AppSettings["AddOnPackageSelectorItemControl.ascx"];

        ucAddOnPackageSelectorControl.Clear();

        ucAddOnPackageSelectorControl.ID = "AddOnPackageSelector";
        ucAddOnPackageSelectorControl.RoomRefID = strSelectedRoom;
        ucAddOnPackageSelectorControl.RoomOccupantSelection = objRoomOccupantSelection;

        for (int i = 0; i < objStayCriteriaSelection.RoomOccupantSelections.Length; i++)
        {
            RoomSelectorItemControl ucRoomSelectorItemControl = (RoomSelectorItemControl)LoadControl(strRoomSelectorItemControlPath);
            ucAddOnPackageSelectorControl.AddRoomSelectorItem(ucRoomSelectorItemControl);

            ucRoomSelectorItemControl.ID = "RoomSelectorItem" + objStayCriteriaSelection.RoomOccupantSelections[i].RoomRefID;
            ucRoomSelectorItemControl.RoomRefID = objStayCriteriaSelection.RoomOccupantSelections[i].RoomRefID;
            ucRoomSelectorItemControl.RoomRefIDMenuText = (String)GetGlobalResourceObject("SiteResources", "RoomSelectorMenuText") + " " + objStayCriteriaSelection.RoomOccupantSelections[i].RoomRefID;

            if (objStayCriteriaSelection.RoomOccupantSelections[i].RoomRefID == strSelectedRoom)
                ucRoomSelectorItemControl.Selected = true;
            else
                ucRoomSelectorItemControl.Selected = false;
        }

        for (int i = 0; i < objHotelRoomAvailInfo.RatePlans.Length; i++)
        {
            if (objHotelRoomAvailInfo.RatePlans[i].Code == objRoomRateSelection.RatePlanCode)
            {
                for (int j = 0; j < objHotelRoomAvailInfo.RatePlans[i].Packages.Length; j++)
                {
                    if (objHotelRoomAvailInfo.RatePlans[i].Packages[j].RoomTypeCode == "" || objHotelRoomAvailInfo.RatePlans[i].Packages[j].RoomTypeCode == objRoomRateSelection.RoomTypeCode)
                    {
                        AddOnPackageSelectorItemControl ucAddOnPackageSelectorItemControl = (AddOnPackageSelectorItemControl)LoadControl(strAddOnPackageSelectorItemControlPath);
                        ucAddOnPackageSelectorControl.AddAddOnPackageSelectorItem(ucAddOnPackageSelectorItemControl);

                        ucAddOnPackageSelectorItemControl.ID = "AddOnPackageSelectorItemControl" + ((int)(j + 1)).ToString();
                        ucAddOnPackageSelectorItemControl.RoomRefID = strSelectedRoom;
                        ucAddOnPackageSelectorItemControl.NumberAdults = objRoomOccupantSelection.NumberAdults;
                        ucAddOnPackageSelectorItemControl.NumberStayNights = intNumberStayNights;

                        for (int k = 0; k < objHotelDescriptiveInfo.Packages.Length; k++)
                        {
                            if (objHotelDescriptiveInfo.Packages[k].Code == objHotelRoomAvailInfo.RatePlans[i].Packages[j].Code)
                            {
                                ucAddOnPackageSelectorItemControl.PackageDescription = objHotelDescriptiveInfo.Packages[k];
                                break;
                            }

                        }

                        ucAddOnPackageSelectorItemControl.PackageRate = objHotelRoomAvailInfo.RatePlans[i].Packages[j];

                        ucAddOnPackageSelectorItemControl.PackageQuantity = 0;
                        ucAddOnPackageSelectorItemControl.Selected = false;

                        for (int k = 0; k < objAddOnPackageSelections.Length; k++)
                        {
                            if (objAddOnPackageSelections[k].RoomRefID == strSelectedRoom && objAddOnPackageSelections[k].PackageCode == objHotelRoomAvailInfo.RatePlans[i].Packages[j].Code)
                            {
                                ucAddOnPackageSelectorItemControl.PackageQuantity = objAddOnPackageSelections[k].Quantity;
                                ucAddOnPackageSelectorItemControl.Selected = true;
                                break;
                            }

                        }

                    }

                }

                break;
            }

        }

        return;
    }
    private void ConfigureCancelRoomSelectorControl()
    {
        HotelDescriptiveInfoRS objHotelDescriptiveInfoRS = (HotelDescriptiveInfoRS)Session["HotelDescriptiveInfoRS"];

          HotelDescriptiveInfo objHotelDescriptiveInfo = new HotelDescriptiveInfo();

          if (objHotelDescriptiveInfoRS.HotelDescriptiveInfos.Length != 0)
          {
         objHotelDescriptiveInfo = objHotelDescriptiveInfoRS.HotelDescriptiveInfos[0];
          }

          string strCancelRoomSelectorItemControlPath = ConfigurationManager.AppSettings["CancelRoomSelectorItemControl.ascx"];
          string strCancelAddOnPackageItemControlPath = ConfigurationManager.AppSettings["CancelAddOnPackageItemControl.ascx"];

          ucCancelRoomSelectorControl.Clear();

          ucCancelRoomSelectorControl.ID = "CancelRoomSelectorControl";
          ucCancelRoomSelectorControl.HotelDescriptiveInfo = objHotelDescriptiveInfo;
          ucCancelRoomSelectorControl.BookingReadSegments = HotelBookingReadSegments;
          ucCancelRoomSelectorControl.Mode = bIsCancelled ? SelectionMode.NonModifiable : SelectionMode.Edit;

          for (int si = 0; si < HotelBookingReadSegments.Length; si++)
          {
         int intNumberStayNights = ((TimeSpan)HotelBookingReadSegments[si].DepartureDate.Subtract(HotelBookingReadSegments[si].ArrivalDate)).Days;

         RoomOccupantSelection objRoomOccupantSelection = new RoomOccupantSelection();

         objRoomOccupantSelection.RoomRefID = ((int)(si + 1)).ToString();
         objRoomOccupantSelection.NumberRooms = HotelBookingReadSegments[si].NumRooms;
         objRoomOccupantSelection.NumberAdults = HotelBookingReadSegments[si].NumAdults;
         objRoomOccupantSelection.NumberChildren = HotelBookingReadSegments[si].NumChildren;

         CancelRoomSelectorItemControl ucCancelRoomSelectorItemControl = (CancelRoomSelectorItemControl)LoadControl(strCancelRoomSelectorItemControlPath);
         ucCancelRoomSelectorControl.AddCancelRoomSelectorItem(ucCancelRoomSelectorItemControl);

         ucCancelRoomSelectorItemControl.Clear();

         ucCancelRoomSelectorItemControl.ID = "CancelRoomSelectorItem" + ((int)(si + 1)).ToString();
         ucCancelRoomSelectorItemControl.RoomRefID = ((int)(si + 1)).ToString();
         ucCancelRoomSelectorItemControl.RoomOccupantSelection = objRoomOccupantSelection;
         ucCancelRoomSelectorItemControl.RoomType = HotelBookingReadSegments[si].RoomType;
         ucCancelRoomSelectorItemControl.RatePlan = HotelBookingReadSegments[si].RatePlan;
         ucCancelRoomSelectorItemControl.Rates = HotelBookingReadSegments[si].Rates;
         ucCancelRoomSelectorItemControl.CancelPolicy = HotelBookingReadSegments[si].CancelPolicy;
         ucCancelRoomSelectorItemControl.HotelCode = HotelBookingReadSegments[si].HotelCode;
         ucCancelRoomSelectorItemControl.ArrivalDate = HotelBookingReadSegments[si].ArrivalDate.Date;
         ucCancelRoomSelectorItemControl.ConfirmationNumber = HotelBookingReadSegments[si].ConfirmationNumber;
         ucCancelRoomSelectorItemControl.Selected = false;
         ucCancelRoomSelectorItemControl.SelectionMode = bIsCancelled ? SelectionMode.NonModifiable : SelectionMode.Edit;

         for (int i = 0; i < CancelDetailsEntryInfo.SelectedConfirmationNumbersToCancel.Length; i++)
         {
            if (HotelBookingReadSegments[si].ConfirmationNumber == CancelDetailsEntryInfo.SelectedConfirmationNumbersToCancel[i])
               ucCancelRoomSelectorItemControl.Selected = true;
         }

         for (int pi = 0; pi < HotelBookingReadSegments[si].PackageRates.Length; pi++)
         {
            CancelAddOnPackageItemControl ucCancelAddOnPackageItemControl = (CancelAddOnPackageItemControl)LoadControl(strCancelAddOnPackageItemControlPath);
            ucCancelRoomSelectorItemControl.AddCancelAddOnPackageItem(ucCancelAddOnPackageItemControl);

            ucCancelAddOnPackageItemControl.ID = "CancelAddOnPackageItem" + ((int)(pi + 1)).ToString();
            ucCancelAddOnPackageItemControl.RoomRefID = ((int)(si + 1)).ToString();
            ucCancelAddOnPackageItemControl.NumberStayNights = intNumberStayNights;
            ucCancelAddOnPackageItemControl.PackageQuantity = HotelBookingReadSegments[si].PackageRates[pi].Quantity;
            ucCancelAddOnPackageItemControl.PackageRate = HotelBookingReadSegments[si].PackageRates[pi];
         }

          }

          return;
    }
    private static RoomRateSelection GetRoomRateSelection(RoomOccupantSelection objRoomOccupantSelection, RoomRateSelection[] objRoomRateSelections)
    {
        for (int i = 0; i < objRoomRateSelections.Length; i++)
        {
            if (objRoomRateSelections[i].RoomRefID == objRoomOccupantSelection.RoomRefID)
                return objRoomRateSelections[i];
        }

        return null;
    }
    private void UpdateStayCriteriaSelection()
    {
        StayCriteriaSelection objStayCriteriaSelection = new StayCriteriaSelection();

        objStayCriteriaSelection.ArrivalDate = DateTime.Parse(calDateHiddenFieldArr.Value);
        objStayCriteriaSelection.DepartureDate = DateTime.Parse(calDateHiddenFieldDep.Value);

        if (ConfigurationManager.AppSettings["StayCriteriaSelectorControl.UseStayNights"] == "1")
        {
            objStayCriteriaSelection.DepartureDate = objStayCriteriaSelection.ArrivalDate.AddDays(Convert.ToInt32(ddlStayNights.SelectedValue));
        }

        if (_StayCriteriaSelectorMode == StayCriteriaSelectorMode.New)
        {
            objStayCriteriaSelection.CountryCode = ddlCountryList.SelectedValue;
            objStayCriteriaSelection.AreaID = ddlAreaList.SelectedValue;
            objStayCriteriaSelection.HotelCode = ddlHotelList.SelectedValue;
        }

        else if (_StayCriteriaSelectorMode == StayCriteriaSelectorMode.Change)
        {
            objStayCriteriaSelection.CountryCode = _StayCriteriaSelection.CountryCode;
            objStayCriteriaSelection.AreaID = _StayCriteriaSelection.AreaID;
            objStayCriteriaSelection.HotelCode = _StayCriteriaSelection.HotelCode;
        }

        objStayCriteriaSelection.PromotionCode = tbPromotionCode.Text;

        List<RoomOccupantSelection> lRoomOccupantSelections = new List<RoomOccupantSelection>();

        for (int i = 1; i <= Convert.ToInt32(ddlRoom.SelectedValue); i++)
        {
            RoomOccupantSelection objRoomOccupantSelection = new RoomOccupantSelection();
            lRoomOccupantSelections.Add(objRoomOccupantSelection);

            objRoomOccupantSelection.RoomRefID = i.ToString();
            objRoomOccupantSelection.NumberRooms = 1;

            Panel objRoomPanel = (Panel)panRoom.FindControl("panRoom" + i.ToString());

            DropDownList objAdultsDDL = (DropDownList)objRoomPanel.FindControl("ddlAdults" + i.ToString());
            objRoomOccupantSelection.NumberAdults = Convert.ToInt32(objAdultsDDL.SelectedValue);

            DropDownList objChildrenDDL = (DropDownList)objRoomPanel.FindControl("ddlChildren" + i.ToString());
            objRoomOccupantSelection.NumberChildren = Convert.ToInt32(objChildrenDDL.SelectedValue);
        }

        objStayCriteriaSelection.RoomOccupantSelections = lRoomOccupantSelections.ToArray();

        _StayCriteriaSelection = objStayCriteriaSelection;

        return;
    }