protected void btn_button_Click(object sender, EventArgs e)
    {
        BindSeason();

        if (!CheckSelectRooms())
        {
            Page.ClientScript.RegisterStartupScript(this.GetType(), "TourWarting", "<script language=javascript>alert('Please choose room number');</script>");
            return;
        }
        if (IsDate(this.txtDate.Text))
        {
            bool pricetype = true;

            if (rbtnPriceType.SelectedIndex == 1)
                pricetype = false;

            DateTime date = Convert.ToDateTime(this.txtDate.Text);
            ((TourSearchCondition)this.Transaction.CurrentSearchConditions).FlightDeptDate = date;
            TourProfile tourProfile = (TourProfile)((TourMaterial)SelectTourMaterial).Profile;

            TourOrderItem tourOrderItem = new TourOrderItem(tourProfile);
            AirMaterial am = null;
            for (int i = 0; i < ((TourMaterial)SelectTourMaterial).Items.Count; i++)
            {

                if (((TourMaterial)SelectTourMaterial).Items[i] is TourItinerary)
                    tourOrderItem.Add(((TourMaterial)SelectTourMaterial).Items[i]);
            }
            tourOrderItem.Destination = ((Terms.Product.Business.MVTourProfile)((TourMaterial)SelectTourMaterial).Profile).StartCity;
            tourOrderItem.SetBeginDate(date);
            tourOrderItem.ChildNumber = 0;//GetPersonNumber(this.TourTravelerChangeControl1.Childs);
            tourOrderItem.AdultNumber = 0;// GetPersonNumber(this.TourTravelerChangeControl1.Adults);
            tourOrderItem.ChildWithOutNumber = 0;// GetPersonNumber(this.TourTravelerChangeControl1.ChildsWithOut);
            tourOrderItem.SetEndDate(date.AddDays(tourProfile.Days - 1));

            Page.Session["IsSelectDate"] = true;

            this.Transaction.CurrentTransactionObject.Items.Clear();
            this.Transaction.CurrentTransactionObject.AddItem(tourOrderItem);

            List<TourOrderFareType> FareTypeList = new List<TourOrderFareType>();
            TourOrderFareType landType = new TourOrderFareType();
            List<TourRoom> tourRooms = new List<TourRoom>();//this.TourTravelerChangeControl1.GetTourRooms(tourProfile, date);
            TourRoom tourRoom = null;
            decimal totalPrice = 0M;

            if (pricetype)
                for (int i = 0; i < dlTourRoomTypeList.Items.Count; i++)
                {
                    DropDownList dllRooms = (DropDownList)dlTourRoomTypeList.Items[i].FindControl("dllRooms");

                    if (dllRooms != null && dllRooms.SelectedIndex > 0)
                    {
                        Label lblRoomType = (Label)dlTourRoomTypeList.Items[i].FindControl("lblRoomType");

                        for (int number = 0; number < Convert.ToInt32(dllRooms.SelectedValue); number++)
                        {
                            tourRoom = new TourRoom();
                            tourRoom.RoomType = lblRoomType.Text.ToString();
                            tourRoom.UnitPrice = (Decimal)tourProfile.GetPrice(date, tourRoom.RoomType, pricetype, false).GetAmount(TERMS.Common.PassengerType.Adult)
                                               + (Decimal)tourProfile.GetPrice(date, tourRoom.RoomType, pricetype, false).GetMarkup(TERMS.Common.PassengerType.Adult);
                            tourRoom.RoomIndex = number + 1;
                            tourRoom.Quantity = 0;
                            landType.AddTourRoom(tourRoom);
                        }
                    }
                }
            else
                for (int i = 0; i < dlTourRoomTypeList1.Items.Count; i++)
                {
                    DropDownList dllRooms = (DropDownList)dlTourRoomTypeList1.Items[i].FindControl("dllRooms");

                    if (dllRooms != null && dllRooms.SelectedIndex > 0)
                    {
                        Label lblRoomType = (Label)dlTourRoomTypeList1.Items[i].FindControl("lblRoomType");

                        for (int number = 0; number < Convert.ToInt32(dllRooms.SelectedValue); number++)
                        {
                            tourRoom = new TourRoom();
                            tourRoom.RoomType = lblRoomType.Text.ToString();
                            tourRoom.UnitPrice = (Decimal)tourProfile.GetPrice(date, tourRoom.RoomType, pricetype, false).GetAmount(TERMS.Common.PassengerType.Adult)
                                               + (Decimal)tourProfile.GetPrice(date, tourRoom.RoomType, pricetype, false).GetMarkup(TERMS.Common.PassengerType.Adult);
                            tourRoom.RoomIndex = number + 1;
                            tourRoom.Quantity = 0;
                            landType.AddTourRoom(tourRoom);
                        }
                    }
                }

            landType.Type = TourFareType.LAND;
            FareTypeList.Add(landType);
            decimal diffFare = 0.0m;
            if (((TourSearchCondition)this.Transaction.CurrentSearchConditions).IsLandOnly)
            {
            }
            else
            {
                bool HasError = false;
                ((TourSearchCondition)this.Transaction.CurrentSearchConditions).DeptCity = ddlUsaCity.SelectedValue;
                if (TourProduct.AirGroup.Profile.SearchRules.Count > 0)
                {
                    AirSearchRule airSearchRule = (AirSearchRule)TourProduct.AirGroup.Profile.SearchRules[0];
                    diffFare = m_airService.GetFareDiff(tourProfile.DefaultDepartureCity.Code, ddlUsaCity.SelectedValue, tourProfile.StartCity.Code, tourProfile.EndCity.Code, date, date.AddDays(tourProfile.Days), airSearchRule.Airlines[0].Code, airSearchRule.BookingClasses[0], out HasError);
                    tourOrderItem.AirLine = airSearchRule.Airlines[0].Code;
                    tourOrderItem.BookingClass = airSearchRule.BookingClasses[0];

                    if (HasError)
                    {
                        tourOrderItem.DepartureCity = tourProfile.DefaultDepartureCity.Code;//ȡ���ʧ�ܣ�����Ĭ�ϳ�����
                    }
                    else
                    {
                        tourOrderItem.DepartureCity = ddlUsaCity.SelectedValue;
                    }
                }
                else
                {
                    //todo
                }

                #region ��ƱaddOn ���ּ۸����ʹ���
                if (diffFare > 0)
                {
                    TourOrderFareType addOnType = new TourOrderFareType();

                    addOnType.Price = diffFare;
                    addOnType.Quantity = tourOrderItem.AdultNumber + tourOrderItem.ChildNumber;
                    addOnType.Type = TourFareType.ADDON;
                    totalPrice += addOnType.Quantity * addOnType.Price;
                    FareTypeList.Add(addOnType);
                }
                #endregion
            }

            tourOrderItem.TotalPrice = totalPrice;
            tourOrderItem.FareTypeList = FareTypeList;

            tourOrderItem.InsuranceMaterial = SetInsurance();//ȡ���գ�
            this.Response.Redirect("TourSelectAirForm.aspx?ReturnURL=" + ReturnURL + "&ConditionID=" + Request.Params["ConditionID"] + "&TourCode=" + SelectTourCode + "&PriceType=" + pricetype);
        }
        else
        {
            Page.ClientScript.RegisterStartupScript(this.GetType(), "TourWarting", "<script language=javascript>alert('Please choose departure date');</script>");
            return;
        }
    }
    public void DoContinueProcess()
    {
        if (PriceInfoControl1.ChkTourInsurance)
        {

            ((TourOrderItem)Utility.Transaction.CurrentTransactionObject.Items[0]).IsInsurance = true;
            InsuranceOrderItem insuranceOrderItem = new InsuranceOrderItem(null);

            insuranceOrderItem.InsuranceOrderName = ((TourOrderItem)Utility.Transaction.CurrentTransactionObject.Items[0]).InsuranceMaterial.InsuranceName;
            insuranceOrderItem.TotalPremiumAmount = Convert.ToDecimal(((TourOrderItem)Utility.Transaction.CurrentTransactionObject.Items[0]).InsuranceMaterial.PolicyQuote.PolicyInformation.Premium.TotalPremiumAmount * PriceInfoControl1.TotalPassengers);
            for (int i = 0; i < Utility.Transaction.CurrentTransactionObject.Items.Count; i++)
            {
                if (Utility.Transaction.CurrentTransactionObject.Items[i] is InsuranceOrderItem)
                    Utility.Transaction.CurrentTransactionObject.Items.Remove(Utility.Transaction.CurrentTransactionObject.Items[i]);
            }

            Utility.Transaction.CurrentTransactionObject.AddItem(insuranceOrderItem);

        }
        else
        {
            ((TourOrderItem)Utility.Transaction.CurrentTransactionObject.Items[0]).IsInsurance = false;
        }

        PriceInfoControl1.AddMarkup();

        TourProfile tourProfile = (TourProfile)((TourMaterial)SelectTourMaterial).Profile;

        ((TourOrderItem)Utility.Transaction.CurrentTransactionObject.Items[0]).AdultNumber = PriceInfoControl1.AdultNumber;
        ((TourOrderItem)Utility.Transaction.CurrentTransactionObject.Items[0]).ChildNumber = PriceInfoControl1.ChildNumber;
        ((TourOrderItem)Utility.Transaction.CurrentTransactionObject.Items[0]).ChildWithOutNumber = PriceInfoControl1.ChildWithOutNumber;

        #region ADD NEW
        List<TourOrderFareType> FareTypeList = new List<TourOrderFareType>();
        #region Land ���ּ۸����ʹ���
        TourOrderFareType landType = new TourOrderFareType();
        DateTime date = ((TourOrderItem)Utility.Transaction.CurrentTransactionObject.Items[0]).BeginDate;
        decimal totalPrice = 0.0m;

        List<TourRoom> tourRooms = this.PriceInfoControl1.GetTourRooms(tourProfile, date);
        for (int i = 0; i < tourRooms.Count; i++)
        {
            totalPrice += tourRooms[i].UnitPrice * tourRooms[i].Quantity;
            landType.AddTourRoom(tourRooms[i]);
        }
        landType.Price = totalPrice;
        landType.Quantity = 1;
        landType.Type = TourFareType.LAND;
        FareTypeList.Add(landType);
        #endregion

        decimal diffFare = 0.0m;
        if (((TourSearchCondition)this.Transaction.CurrentSearchConditions).IsLandOnly)
        {
        }
        else
        {
            #region ��ƱaddOn ���ּ۸����ʹ���
            if (diffFare > 0)
            {
                TourOrderFareType addOnType = new TourOrderFareType();

                addOnType.Price = diffFare;
                addOnType.Quantity = ((TourOrderItem)Utility.Transaction.CurrentTransactionObject.Items[0]).AdultNumber + ((TourOrderItem)Utility.Transaction.CurrentTransactionObject.Items[0]).ChildNumber;
                addOnType.Type = TourFareType.ADDON;
                totalPrice += addOnType.Quantity * addOnType.Price;
                FareTypeList.Add(addOnType);
            }
            #endregion
        }
        ((TourOrderItem)Utility.Transaction.CurrentTransactionObject.Items[0]).TotalPrice = totalPrice;
        ((TourOrderItem)Utility.Transaction.CurrentTransactionObject.Items[0]).FareTypeList = FareTypeList;
        #endregion
        if (this.chkConditions.Checked)
        {
            if (!PriceInfoControl1.ChkTourInsurance)
            {
                bool Flag = false;

                if (System.Configuration.ConfigurationManager.AppSettings["TourBookingInsurance"] != null)
                    Flag = Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings["TourBookingInsurance"]);

                if (Flag)
                {
                    string citycode = ((Terms.Product.Business.MVTourProfile)((TourMaterial)SelectTourMaterial).Profile).StartCity.Code;

                    if (TourCityIsRegion(citycode))
                    {
                        AddInsurance();
                    }
                }
            }

            Response.Redirect("~/Page/Tour/TourTravelerInfoForm.aspx?ReturnURL=" + ReturnURL + "&ConditionID=" + Request.Params["ConditionID"] + "&TourCode=" + SelectTourCode);
        }
        else
        {
            //����
            Page.ClientScript.RegisterStartupScript(this.GetType(), "Warting", "<script language=javascript>alert('Please read Terms & Conditions, And cancels elects');</script>");
            Page.ClientScript.RegisterStartupScript(this.GetType(), "alt", "if(document.getElementById('clickLink')!= null){document.getElementById('clickLink').click();}", true);
            return;
        }
    }