private void ReserversCount_ValueChanged(object sender, EventArgs e)
        {
            int oldCount = Reservers.Count;
            int newCount = (int)ReserversCount.Value;

            int diff = Math.Abs(newCount - oldCount);

            if (newCount > oldCount)
            {
                for (int i = 0; i < diff; ++i)
                {
                    CreateReserver(oldCount + i, true);
                }
            }
            else if (newCount < oldCount)
            {
                for (int i = 0; i < diff; ++i)
                {
                    ReserverView reserver = Reservers.Last();

                    reserver.ZoomOut();
                    Reservers.RemoveAt(Reservers.Count - 1);
                    ReserversPanel.Controls.Remove(reserver);
                    reserver.Dispose();
                }
            }
        }
        private void Browser_AutoChanged(object sender, EventArgs e)
        {
            ReserverView reserver = sender as ReserverView;

            if (reserver.Browser.Auto)
            {
                PutOrderToBrowser(reserver.Browser);
            }
        }
        private void CreateReserver(int number, bool runtime)
        {
            ReserverView reserver = new ReserverView();

            reserver.RealBrowserNumber = number;
            reserver.Browser.DelayInfo = DelayInfo;
            reserver.Platforms         = Platforms;
            reserver.DateCheckers      = DateCheckers;

            reserver.Browser.Proxy = Proxies.OrderBy(prx => prx.Value).FirstOrDefault().Key;

            if (reserver.Browser.Proxy != null)
            {
                Proxies[reserver.Browser.Proxy]++;
            }

            reserver.Browser.OnPausedChanged         += Browser_OnPausedChanged;
            reserver.Browser.OnReservedManually      += Browser_OnReservedManually;
            reserver.Browser.OnReserved              += Browser_OnReserved;
            reserver.Browser.OnDateTimeSelected      += MainForm_OnDateTimeSelected;
            reserver.Browser.OnManualReactionWaiting += MainForm_OnManualReactionWaiting;
            reserver.Browser.OnOrderChanged          += Browser_OnOrderChanged;
            reserver.Browser.OnIterationSkipped      += Browser_OnIterationSkipped;
            reserver.Browser.OnIterationFailure      += Browser_OnIterationFailure;
            reserver.Browser.OnIterationLogRequired  += Browser_OnIterationLogRequired;

            reserver.AutoChanged += Browser_AutoChanged;

            int locationX = Reservers.Count == 0 ? ReserversPanel.Location.X :
                            Reservers.Max(view => view.Location.X + view.Width);

            reserver.Location = new Point(
                locationX + RESERVERS_SPACE,
                RESERVERS_SPACE
                );

            if (runtime)
            {
                BrowserSettings settings = SavedBrowserSettings.FirstOrDefault(setting => setting.BrowserNumber == number);

                if (settings != null)
                {
                    reserver.ApplySettings(settings);
                }
                else
                {
                    reserver.ApplySettings(ExportCommonSettings());
                }
            }

            Logger.CreateLogFilesForBrowser(number);

            Reservers.Add(reserver);
            ReserversPanel.Controls.Add(reserver);
        }
        private void PutOrderToBrowser(ReservationOrder order)
        {
            ReserverView found = Reservers.FirstOrDefault(
                reserver => reserver.Browser.Auto && reserver.Browser.Order == null && !reserver.Browser.Selected
                );

            if (found != null)
            {
                found.Browser.Order   = order;
                found.Browser.Checker = FindDateCheckerByOrder(order);
            }
        }