public PageAirlineEditAirliners(List<FleetAirliner> airliners)
        {
            Airliners = airliners;

            Loaded += PageAirlineEditAirliners_Loaded;

            DataContext = Airliners;

            Classes = new ObservableCollection<AirlinerClassMVVM>();
            Airliner = getMinimumAirliner();

            foreach (var aClass in Airliner.Airliner.Classes)
            {
                var maxCapacity = Airliner.Airliner.Type.TypeAirliner == AirlinerType.TypeOfAirliner.Passenger ? ((AirlinerPassengerType) Airliner.Airliner.Type).MaxSeatingCapacity : 100;

                var changeable = Airliner.Airliner.Classes.IndexOf(aClass) > 0;

                int maxSeats;

                if (Airliner.Airliner.Classes.Count == 3)
                {
                    if (Airliner.Airliner.Classes.IndexOf(aClass) == 1)
                    {
                        maxSeats = maxCapacity - 1 - Airliner.Airliner.Classes[2].RegularSeatingCapacity;
                    }
                    else
                    {
                        maxSeats = maxCapacity - 1 - Airliner.Airliner.Classes[1].RegularSeatingCapacity;
                    }
                }
                else
                {
                    maxSeats = maxCapacity - 1;
                }

                var amClass = new AirlinerClassMVVM(
                    aClass,
                    aClass.SeatingCapacity,
                    aClass.RegularSeatingCapacity,
                    maxSeats,
                    changeable);
                Classes.Add(amClass);
            }

            InitializeComponent();
        }
        private void btnLoadConfiguration_Click(object sender, RoutedEventArgs e)
        {
            var cbConfigurations = new ComboBox();
            cbConfigurations.SetResourceReference(StyleProperty, "ComboBoxTransparentStyle");
            cbConfigurations.SelectedValuePath = "Name";
            cbConfigurations.DisplayMemberPath = "Name";
            cbConfigurations.HorizontalAlignment = HorizontalAlignment.Left;
            cbConfigurations.Width = 200;

            foreach (
                AirlinerConfiguration confItem in
                    Configurations.GetConfigurations(Configuration.ConfigurationType.Airliner)
                        .Where(
                            a =>
                                ((AirlinerConfiguration) a).MinimumSeats <= Airliner.Airliner.GetTotalSeatCapacity()
                                && ((AirlinerConfiguration) a).Classes.Count
                                <= ((AirlinerPassengerType) Airliner.Airliner.Type).MaxAirlinerClasses))
            {
                cbConfigurations.Items.Add(confItem);
            }

            cbConfigurations.SelectedIndex = 0;

            if (PopUpSingleElement.ShowPopUp(
                Translator.GetInstance().GetString("PageAirlineWages", "1013"),
                cbConfigurations) == PopUpSingleElement.ButtonSelected.OK && cbConfigurations.SelectedItem != null)
            {
                Classes.Clear();

                var configuration = (AirlinerConfiguration) cbConfigurations.SelectedItem;

                foreach (var aClass in configuration.Classes)
                {
                    var nClass = new AirlinerClass(aClass.Type, aClass.SeatingCapacity);
                    var tClass = new AirlinerClassMVVM(
                        nClass,
                        aClass.SeatingCapacity,
                        aClass.RegularSeatingCapacity,
                        aClass.RegularSeatingCapacity);

                    foreach (var facility in aClass.GetFacilities())
                    {
                        tClass.Facilities.First(f => f.Type == facility.Type).SelectedFacility = facility;
                    }

                    foreach (
                        AirlinerFacility.FacilityType fType in Enum.GetValues(typeof (AirlinerFacility.FacilityType)))
                    {
                        if (!aClass.Facilities.Exists(f => f.Type == fType))
                        {
                            tClass.Facilities.First(f => f.Type == fType).SelectedFacility =
                                AirlinerFacilities.GetBasicFacility(fType);
                        }
                    }

                    Classes.Add(tClass);
                }
                var seatingDiff = ((AirlinerPassengerType) Airliner.Airliner.Type).MaxSeatingCapacity
                                  - configuration.MinimumSeats;

                var economyClass = Classes.First(
                    c => c.Type == AirlinerClass.ClassType.EconomyClass);

                economyClass.RegularSeatingCapacity += seatingDiff;

                var seatingFacility =
                    economyClass.Facilities.First(f => f.Type == AirlinerFacility.FacilityType.Seat).SelectedFacility;

                var extraSeats = (int) (seatingDiff/seatingFacility.SeatUses);

                economyClass.Seating += extraSeats;
            }
        }