/// <summary>
        /// sending routine for registered data:
        /// It's called by the delay-timer "_SendDelayTimer"
        /// </summary>
        private void sendToEDDN()
        {
            try
            {
                String    UserID;
                Schema_v2 Data = new Schema_v2();
                String    TimeStamp;
                String    commodity;

                TimeStamp = DateTime.Now.ToString("s", CultureInfo.InvariantCulture) + DateTime.Now.ToString("zzz", CultureInfo.InvariantCulture);

                UserID = Form1.RegulatedNoiseSettings.GetUserID();

                // test or real ?
                if (Form1.RegulatedNoiseSettings.UseEddnTestSchema)
                {
                    Data.SchemaRef = "http://schemas.elite-markets.net/eddn/commodity/2/test";
                }
                else
                {
                    Data.SchemaRef = "http://schemas.elite-markets.net/eddn/commodity/2";
                }

                // fill the header
                Data.Header = new Schema_v2.Header_Class()
                {
                    SoftwareName     = "RegulatedNoise__DJ",
                    SoftwareVersion  = Form1.RegulatedNoiseSettings.getVersionString(),
                    GatewayTimestamp = TimeStamp,
                    UploaderID       = UserID
                };

                // prepare the message object
                Data.Message = new Schema_v2.Message_Class()
                {
                    SystemName  = "",
                    StationName = "",
                    Timestamp   = TimeStamp,
                    Commodities = new Schema_v2.Commodity_Class[_SendItems.Count]
                };

                // collect the commodity data
                for (int i = 0; i <= Data.Message.Commodities.GetUpperBound(0); i++)
                {
                    CsvRow Row = (CsvRow)_SendItems.Dequeue();

                    commodity = _caller.getCommodityBasename(Row.CommodityName);

                    // if it's a user added commodity send it anyhow to see that there's a unknown commodity
                    if (commodity.Equals(Program.COMMODITY_NOT_SET))
                    {
                        commodity = Row.CommodityName;
                    }

                    Data.Message.Commodities[i] = new Schema_v2.Commodity_Class()
                    {
                        Name        = commodity,
                        BuyPrice    = (Int32)Math.Floor(Row.BuyPrice),
                        SellPrice   = (Int32)Math.Floor(Row.SellPrice),
                        Demand      = (Int32)Math.Floor(Row.Demand),
                        DemandLevel = (Row.DemandLevel == "") ? null : Row.DemandLevel,
                        Supply      = (Int32)Math.Floor(Row.Supply),
                        SupplyLevel = (Row.SupplyLevel == "") ? null : Row.SupplyLevel,
                    };

                    if (i == 0)
                    {
                        Data.Message.SystemName  = Row.SystemName;
                        Data.Message.StationName = Row.StationName;
                    }
                }

                using (var client = new WebClient())
                {
                    try
                    {
                        Debug.Print(JsonConvert.SerializeObject(Data, new JsonSerializerSettings()
                        {
                            NullValueHandling = NullValueHandling.Ignore
                        }));

                        client.UploadString("http://eddn-gateway.elite-markets.net:8080/upload/", "POST", JsonConvert.SerializeObject(Data, new JsonSerializerSettings()
                        {
                            NullValueHandling = NullValueHandling.Ignore
                        }));
                    }
                    catch (WebException ex)
                    {
                        _logger.Log("Error uploading Json (v2)", true);
                        _logger.Log(ex.ToString(), true);
                        _logger.Log(ex.Message, true);
                        _logger.Log(ex.StackTrace, true);
                        if (ex.InnerException != null)
                        {
                            _logger.Log(ex.InnerException.ToString(), true);
                        }

                        using (WebResponse response = ex.Response)
                        {
                            using (Stream data = response.GetResponseStream())
                            {
                                if (data != null)
                                {
                                    StreamReader sr = new StreamReader(data);
                                    MsgBox.Show(sr.ReadToEnd(), "Error while uploading to EDDN (v2)");
                                }
                            }
                        }
                    }
                    finally
                    {
                        client.Dispose();
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.Log("Error uploading Json (v2)", true);
                _logger.Log(ex.ToString(), true);
                _logger.Log(ex.Message, true);
                _logger.Log(ex.StackTrace, true);
                if (ex.InnerException != null)
                {
                    _logger.Log(ex.InnerException.ToString(), true);
                }

                cErr.showError(ex, "Error in EDDN-Sending-Thread (v2)");
            }
        }
        /// <summary>
        /// sending routine for registered data:
        /// It's called by the delay-timer "_SendDelayTimer"
        /// </summary>
        private void sendToEDDN()
        {
            try
            {
                String          UserID;
                Schema_v2       Data            = new Schema_v2();
                String          TimeStamp;
                String          commodity;

                TimeStamp = DateTime.Now.ToString("s", CultureInfo.InvariantCulture) + DateTime.Now.ToString("zzz", CultureInfo.InvariantCulture);

                UserID = Program.DBCon.getIniValue<String>(IBE.MTSettings.tabSettings.DB_GROUPNAME, "UserName", Guid.NewGuid().ToString(), false, true);

                // test or real ?
                if (Program.DBCon.getIniValue<Boolean>(IBE.MTSettings.tabSettings.DB_GROUPNAME, "UseEddnTestSchema", false.ToString(), true))
                    Data.SchemaRef = "http://schemas.elite-markets.net/eddn/commodity/2/test";
                else
                    Data.SchemaRef = "http://schemas.elite-markets.net/eddn/commodity/2";

                // fill the header
                Data.Header = new Schema_v2.Header_Class() {SoftwareName        = "RegulatedNoise__DJ",
                                                            SoftwareVersion     = VersionHelper.Parts(System.Reflection.Assembly.GetExecutingAssembly().GetName().Version, 3),
                                                            GatewayTimestamp    = TimeStamp,
                                                            UploaderID          = UserID};

                // prepare the message object
                Data.Message    = new Schema_v2.Message_Class() {SystemName     = "",
                                                                 StationName    = "",
                                                                 Timestamp      = TimeStamp,
                                                                 Commodities    = new Schema_v2.Commodity_Class[_SendItems.Count]};

                // collect the commodity data
                for (int i = 0; i <= Data.Message.Commodities.GetUpperBound(0); i++)
                {
                    CsvRow Row      = (CsvRow)_SendItems.Dequeue();

                    commodity = Row.CommodityName;

                    // if it's a user added commodity send it anyhow to see that there's a unknown commodity
                    if(commodity.Equals(Program.COMMODITY_NOT_SET))
                        commodity = Row.CommodityName;

                    Data.Message.Commodities[i] = new Schema_v2.Commodity_Class()  {Name            = commodity,
                                                                                    BuyPrice        = (Int32)Math.Floor(Row.BuyPrice),
                                                                                    SellPrice       = (Int32)Math.Floor(Row.SellPrice),
                                                                                    Demand          = (Int32)Math.Floor(Row.Demand),
                                                                                    DemandLevel     = (Row.DemandLevel == "") ? null : Row.DemandLevel,
                                                                                    Supply          = (Int32)Math.Floor(Row.Supply),
                                                                                    SupplyLevel     = (Row.SupplyLevel == "") ? null : Row.SupplyLevel,
                                                                                    };

                    if(i==0){
                        Data.Message.SystemName     = Row.SystemName;
                        Data.Message.StationName    = Row.StationName;

                    }

                }

                using (var client = new WebClient())
                {
                    try
                    {
                        Debug.Print(JsonConvert.SerializeObject(Data, new JsonSerializerSettings() {NullValueHandling = NullValueHandling.Ignore}));

                        client.UploadString("http://eddn-gateway.elite-markets.net:8080/upload/", "POST", JsonConvert.SerializeObject(Data, new JsonSerializerSettings() {NullValueHandling = NullValueHandling.Ignore}));
                    }
                    catch (WebException ex)
                    {
                        _logger.Log("Error uploading Json (v2)", true);
                        _logger.Log(ex.ToString(), true);
                        _logger.Log(ex.Message, true);
                        _logger.Log(ex.StackTrace, true);
                        if (ex.InnerException != null)
                            _logger.Log(ex.InnerException.ToString(), true);

                        using (WebResponse response = ex.Response)
                        {
                            using (Stream data = response.GetResponseStream())
                            {
                                if (data != null)
                                {
                                    StreamReader sr = new StreamReader(data);
                                    MsgBox.Show(sr.ReadToEnd(), "Error while uploading to EDDN (v2)");
                                }
                            }
                        }
                    }
                    finally
                    {
                        client.Dispose();
                    }
                }

            }
            catch (Exception ex)
            {
                _logger.Log("Error uploading Json (v2)", true);
                _logger.Log(ex.ToString(), true);
                _logger.Log(ex.Message, true);
                _logger.Log(ex.StackTrace, true);
                if (ex.InnerException != null)
                    _logger.Log(ex.InnerException.ToString(), true);

                cErr.showError(ex, "Error in EDDN-Sending-Thread (v2)");
            }
        }