private void ConfigureAvailCalSelectorControl()
    {
        HotelAvailabilityRS objHotelAvailabilityRS = (HotelAvailabilityRS)Session[Constants.Sessions.HotelAvailabilityCalendarRS];
          DateTime[] objAvailCalDateSelections = (DateTime[])Session["AvailCalDateSelections"];

          DateTime dtToday = TZNet.ToLocal(WbsUiHelper.GetTimeZone(StayCriteriaSelection.HotelCode), DateTime.UtcNow).Date;

          if (Step != BookingSteps.SelectStayDate)
          {
         ucAvailCalSelectorControl.AvailCalendarSelectorMode = AvailCalendarSelectorMode.ViewLink;
         ucAvailCalSelectorControl.Mode = (bIsConfirmed ? SelectionMode.NonModifiable : SelectionMode.Selected);
         ucAvailCalSelectorControl.AvailabilityCalendarInfo = new AvailabilityCalendarInfo[0];
         ucAvailCalSelectorControl.SelectedDates = objAvailCalDateSelections;
         ucAvailCalSelectorControl.StayCriteriaSelection = StayCriteriaSelection;
         ucAvailCalSelectorControl.Today = dtToday.Date;
          }

          else
          {
         AvailabilityCalendarInfo[] objAvailabilityCalendarInfos = new AvailabilityCalendarInfo[0];
         if (objHotelAvailabilityRS != null && objHotelAvailabilityRS.HotelRoomAvailInfos != null)
         {
            objAvailabilityCalendarInfos =
                new AvailabilityCalendarInfo[objHotelAvailabilityRS.HotelRoomAvailInfos.Length];

            for (int i = 0; i < objHotelAvailabilityRS.HotelRoomAvailInfos.Length; i++)
            {
               objAvailabilityCalendarInfos[i] = new AvailabilityCalendarInfo
                                                     {
                                                        SegmentRefID = objHotelAvailabilityRS.HotelRoomAvailInfos[i].SegmentRefID,
                                                        AvailabilityCalendar = objHotelAvailabilityRS.HotelRoomAvailInfos[i].AvailabilityCalendar
                                                     };
            }
         }

         ucAvailCalSelectorControl.AvailCalendarSelectorMode = AvailCalendarSelectorMode.ViewCalendar;
         ucAvailCalSelectorControl.Mode = SelectionMode.Edit;
         ucAvailCalSelectorControl.AvailabilityCalendarInfo = objAvailabilityCalendarInfos;
         ucAvailCalSelectorControl.SelectedDates = objAvailCalDateSelections;
         ucAvailCalSelectorControl.StayCriteriaSelection = StayCriteriaSelection;
         ucAvailCalSelectorControl.Today = dtToday.Date;
          }
    }
    private void ConfigureAvailCalSelectorControl()
    {
        if (ConfigurationManager.AppSettings["EnableRoomRateGridModel"] != "1")
        {
            StayCriteriaSelection objStayCriteriaSelection = (StayCriteriaSelection)Session[Constants.Sessions.StayCriteriaSelection];
            HotelAvailabilityRS objHotelAvailabilityRS = (HotelAvailabilityRS)Session["HotelAvailabilityCalendarRS"];
            DateTime[] objAvailCalDateSelections = (DateTime[])Session["AvailCalDateSelections"];

            DateTime dtToday = TZNet.ToLocal(WbsUiHelper.GetTimeZone(objStayCriteriaSelection.HotelCode), DateTime.UtcNow).Date;

            if ((bool)Session["AvailCalRequested"] == false)
            {
                ucAvailCalSelectorControl.AvailCalendarSelectorMode = AvailCalendarSelectorMode.ViewLink;
                ucAvailCalSelectorControl.AvailabilityCalendarInfo = new AvailabilityCalendarInfo[0];
                ucAvailCalSelectorControl.SelectedDates = objAvailCalDateSelections;
                ucAvailCalSelectorControl.StayCriteriaSelection = objStayCriteriaSelection;
                ucAvailCalSelectorControl.Today = dtToday.Date;
            }

            else
            {
                AvailabilityCalendarInfo[] objAvailabilityCalendarInfos = new AvailabilityCalendarInfo[objHotelAvailabilityRS.HotelRoomAvailInfos.Length];

                for (int i = 0; i < objHotelAvailabilityRS.HotelRoomAvailInfos.Length; i++)
                {
                    objAvailabilityCalendarInfos[i] = new AvailabilityCalendarInfo();
                    objAvailabilityCalendarInfos[i].SegmentRefID = objHotelAvailabilityRS.HotelRoomAvailInfos[i].SegmentRefID;
                    objAvailabilityCalendarInfos[i].AvailabilityCalendar = objHotelAvailabilityRS.HotelRoomAvailInfos[i].AvailabilityCalendar;
                }

                ucAvailCalSelectorControl.AvailCalendarSelectorMode = AvailCalendarSelectorMode.ViewCalendar;
                ucAvailCalSelectorControl.AvailabilityCalendarInfo = objAvailabilityCalendarInfos;
                ucAvailCalSelectorControl.SelectedDates = objAvailCalDateSelections;
                ucAvailCalSelectorControl.StayCriteriaSelection = objStayCriteriaSelection;
                ucAvailCalSelectorControl.Today = dtToday.Date;
            }

        }

        return;
    }
    private void ConfigureAvailCalSelectorControl()
    {
        StayCriteriaSelection objStayCriteriaSelection = (StayCriteriaSelection)Session[Constants.Sessions.StayCriteriaSelection];
        HotelAvailabilityRS objHotelAvailabilityRS = (HotelAvailabilityRS)Session["HotelAvailabilityCalendarRS"];
        DateTime[] objAvailCalDateSelections = (DateTime[])Session["AvailCalDateSelections"];

        DateTime dtToday = TZNet.ToLocal(WbsUiHelper.GetTimeZone(objStayCriteriaSelection.HotelCode), DateTime.UtcNow).Date;

        AvailabilityCalendarInfo[] objAvailabilityCalendarInfos = new AvailabilityCalendarInfo[objHotelAvailabilityRS.HotelRoomAvailInfos.Length];

        for (int i = 0; i < objHotelAvailabilityRS.HotelRoomAvailInfos.Length; i++)
        {
            objAvailabilityCalendarInfos[i] = new AvailabilityCalendarInfo();
            objAvailabilityCalendarInfos[i].SegmentRefID = objHotelAvailabilityRS.HotelRoomAvailInfos[i].SegmentRefID;
            objAvailabilityCalendarInfos[i].AvailabilityCalendar = objHotelAvailabilityRS.HotelRoomAvailInfos[i].AvailabilityCalendar;
        }

        ucAvailCalSelectorControl.AvailCalendarSelectorMode = AvailCalendarSelectorMode.ViewCalendar;
        ucAvailCalSelectorControl.AvailabilityCalendarInfo = objAvailabilityCalendarInfos;
        ucAvailCalSelectorControl.SelectedDates = objAvailCalDateSelections;
        ucAvailCalSelectorControl.StayCriteriaSelection = objStayCriteriaSelection;
        ucAvailCalSelectorControl.Today = dtToday.Date;

        return;
    }
    private string LowestAvailableRate(int intDayID, AvailabilityCalendarInfo[] objAvCalInfo, DateTime dtToday)
    {
        // Returns the lowest available room rate across all calendar instances for day identified

        decimal decLowestAvailableRate = 0;
        string strRateCurrencyCode = "";
        bool bRateLoaded = false;

        for (int si = 0; si < objAvCalInfo.Length; si++)
        {
            for (int i = 0; i < objAvCalInfo[si].AvailabilityCalendar.RoomRates.Length; i++)
            {
                for (int j = 0; j < objAvCalInfo[si].AvailabilityCalendar.RoomRates[i].Rates.Length; j++)
                {
                    if (objAvCalInfo[si].AvailabilityCalendar.RoomRates[i].Rates[j].DayNum == intDayID)
                    {
                        if (this.IsAvCalRoomRateAvailable(intDayID, objAvCalInfo[si].AvailabilityCalendar.RoomRates[i], objAvCalInfo[si].AvailabilityCalendar.RatePlans, objAvCalInfo[si].AvailabilityCalendar.StartDate, dtToday))
                        {
                            if (!bRateLoaded)
                            {
                                decLowestAvailableRate = objAvCalInfo[si].AvailabilityCalendar.RoomRates[i].Rates[j].Amount;
                                bRateLoaded = true;
                            }

                            else
                            {
                                if (objAvCalInfo[si].AvailabilityCalendar.RoomRates[i].Rates[j].Amount < decLowestAvailableRate)
                                    decLowestAvailableRate = objAvCalInfo[si].AvailabilityCalendar.RoomRates[i].Rates[j].Amount;
                            }

                            strRateCurrencyCode = this.RateCurrencyCode(objAvCalInfo[si].AvailabilityCalendar.RoomRates[i].RatePlanCode, objAvCalInfo[si].AvailabilityCalendar);
                            ConvertCurrencyCodeToHtmlEntity(ref strRateCurrencyCode);
                        }

                    }

                }

            }

        }

        if (bRateLoaded)
        {
            return strRateCurrencyCode + decLowestAvailableRate.ToString("F0");
        }

        return "";
    }
    private bool IsDayAvailable(int intDayID, AvailabilityCalendarInfo[] objAvCalInfo, DateTime dtToday)
    {
        // Returns true if at least one room rate is available in all calendar instances for day identified

        for (int i = 0; i < objAvCalInfo.Length; i++)
        {
            if (!this.IsAvCalDayAvailable(intDayID, objAvCalInfo[i].AvailabilityCalendar, dtToday))
                return false;
        }

        return true;
    }
    private bool HasRequestedRates(int intDayID, AvailabilityCalendarInfo[] objAvCalInfo, DateTime dtToday)
    {
        // Returns true if a requested (special) rate is available in any calendar instance for day identified

        for (int si = 0; si < objAvCalInfo.Length; si++)
        {
            for (int i = 0; i < objAvCalInfo[si].AvailabilityCalendar.RoomRates.Length; i++)
            {
                for (int j = 0; j < objAvCalInfo[si].AvailabilityCalendar.RoomRates[i].Rates.Length; j++)
                {
                    if (objAvCalInfo[si].AvailabilityCalendar.RoomRates[i].Rates[j].DayNum == intDayID)
                    {
                        for (int k = 0; k < objAvCalInfo[si].AvailabilityCalendar.RatePlans.Length; k++)
                        {
                            if (objAvCalInfo[si].AvailabilityCalendar.RatePlans[k].RatePlanCode == objAvCalInfo[si].AvailabilityCalendar.RoomRates[i].RatePlanCode)
                            {
                                if (objAvCalInfo[si].AvailabilityCalendar.RatePlans[k].RatePlanType == RatePlanType.Negotiated || objAvCalInfo[si].AvailabilityCalendar.RatePlans[k].RatePlanType == RatePlanType.Consortia)
                                    return true;
                            }

                        }

                    }

                }

            }

        }

        return false;
    }
    private int CalendarDay(int intDayID, AvailabilityCalendarInfo[] objAvCalInfo)
    {
        if (objAvCalInfo.Length == 0)
            return 0;

        return objAvCalInfo[0].AvailabilityCalendar.StartDate.AddDays(intDayID - 1).Day;
    }