protected virtual void ProcessRequest(HttpListenerContext context)
        {
            HttpListenerRequest  request  = context.Request;
            HttpListenerResponse response = context.Response;

            response.ContentType = "text/html";

            string requestedPage = request.RawUrl.TrimStart(new char[] { '/', '\\' });

            AirportStatUtils.AirportStatsLogger(Log.FromPool(requestedPage).WithCodepoint());

            int index = requestedPage.IndexOf("?");

            if (index > 0)
            {
                requestedPage = requestedPage.Substring(0, index);
            }
            requestedPage = requestedPage.Replace("%20", " ");
            int    day            = int.TryParse(request.QueryString["day"], out int value) ? value : -1;
            string aircraft       = request.QueryString["aircraft"];
            string dataset        = request.QueryString["dataset"];
            string airlineName    = request.QueryString["airline"];
            string responseString = string.Empty;

            switch (requestedPage.ToUpperInvariant())
            {
            case "AIRCRAFTSTATS":
                if (!string.IsNullOrWhiteSpace(aircraft) && AircraftConfigManager.FindByAnyName(aircraft, false) != null)
                {
                    responseString += Page.GetAircraftStats(AircraftConfigManager.FindByAnyName(aircraft, false));
                }
                else
                {
                    responseString += AirportStatUtils.InvalidAircraftType();
                }
                break;

            case "AIRLINES":
                responseString += Page.GetAirlineStats(true);
                break;

            case "AIRPORTSTATS.CSS":
                responseString      += new ResourceManager("TBFlash.AirportStats.Resource1", Assembly.GetExecutingAssembly()).GetString("AirportStats1");
                response.ContentType = "text/css";
                break;

            case "AIRPORTSTATS.JS":
                responseString      += new ResourceManager("TBFlash.AirportStats.Resource1", Assembly.GetExecutingAssembly()).GetString("AirportStats");
                response.ContentType = "text/javascript";
                break;

            case "ALLAIRLINES":
                responseString += Page.GetAirlineStats();
                break;

            case "CHART.MIN.CSS":
                responseString      += new ResourceManager("TBFlash.AirportStats.Resource1", Assembly.GetExecutingAssembly()).GetString("Chart_min");
                response.ContentType = "text/css";
                break;

            case "CHART.MIN.JS":
                responseString      += new ResourceManager("TBFlash.AirportStats.Resource1", Assembly.GetExecutingAssembly()).GetString("Chart_min1");
                response.ContentType = "text/javascript";
                break;

            case "CHARTDATA":
                responseString      += Page.GetChartData(dataset, airlineName);
                response.ContentType = "application/json";
                break;

            case "DAILY STATS":
                responseString += day == -1
                        ? Page.GetAirlineData()
                        : Page.GetFlightData(day);
                break;

            case "FAVICON.ICO":
                break;

            case "FUELFUTURES":
                responseString += Page.GetFuelFutures();
                break;

            case "INFORMATION":
                responseString += AirportStatUtils.InformationDialog();
                break;

            case "JQUERY.MIN.JS":
                responseString      += new ResourceManager("TBFlash.AirportStats.Resource1", Assembly.GetExecutingAssembly()).GetString("jquery_min");
                response.ContentType = "text/javascript";
                break;

            case "JQUERY-UI.MIN.JS":
                responseString      += new ResourceManager("TBFlash.AirportStats.Resource1", Assembly.GetExecutingAssembly()).GetString("jquery_ui_min1");
                response.ContentType = "text/javascript";
                break;

            case "JQUERY-UI.MIN.CSS":
                responseString      += new ResourceManager("TBFlash.AirportStats.Resource1", Assembly.GetExecutingAssembly()).GetString("jquery_ui_min");
                response.ContentType = "text/css";
                break;

            default:
                Airline airline = AirlineManager.FindByName(requestedPage);
                if (airline != null)
                {
                    responseString += day == -1
                            ? Page.GetAirlineData(airline)
                            : Page.GetFlightData(day, airline);
                }
                else
                {
                    responseString += Page.GetAirlineData();
                }
                break;
            }

            byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString);
            response.ContentLength64 = buffer.Length;
            Stream outputStream = response.OutputStream;

            outputStream.Write(buffer, 0, buffer.Length);
            outputStream.Close();
        }