Index: trunk/BNS/bns.cpp
===================================================================
--- trunk/BNS/bns.cpp	(revision 1248)
+++ trunk/BNS/bns.cpp	(revision 1249)
@@ -80,5 +80,5 @@
       QString refSys      = settings.value(QString("refSys_%1").arg(ic)).toString();
 
-      _caster.push_back(new t_bnscaster(mountpoint, outFileName, refSys));
+      _caster.push_back(new t_bnscaster(mountpoint, outFileName, refSys, ic));
       connect(_caster.back(), SIGNAL(error(const QByteArray)),
               this, SLOT(slotError(const QByteArray)));
Index: trunk/BNS/bnsabout.html
===================================================================
--- trunk/BNS/bnsabout.html	(revision 1248)
+++ trunk/BNS/bnsabout.html	(revision 1249)
@@ -21,5 +21,5 @@
 The Bundesamt fuer Geodaesie und Kartographie (BKG) may not be held liable for damages of any kind, direct or consequential, which may result from the use of this software.<br>
 <br>
-BKG, Frankfurt, Germany, November 2008<br>
+BKG, Frankfurt, Germany, December 2008<br>
 E-Mail: <a><u>euref-ip@bkg.bund.de</u></a>.<br>
 </p>
Index: trunk/BNS/bnscaster.cpp
===================================================================
--- trunk/BNS/bnscaster.cpp	(revision 1248)
+++ trunk/BNS/bnscaster.cpp	(revision 1249)
@@ -23,9 +23,10 @@
 ////////////////////////////////////////////////////////////////////////////
 t_bnscaster::t_bnscaster(const QString& mountpoint, const QString& outFileName,
-                         const QString& refSys) {
+                         const QString& refSys, const int ic) {
 
   _mountpoint         = mountpoint;
   _outSocket          = 0;
   _outSocketOpenTrial = 0;
+  _ic = ic;
 
   QSettings settings;
@@ -95,6 +96,15 @@
   QSettings settings;
   _outSocket = new QTcpSocket();
-  _outSocket->connectToHost(settings.value("outHost").toString(),
-                            settings.value("outPort").toInt());
+  QString password;
+  if (_ic == 1) {
+    _outSocket->connectToHost(settings.value("outHost1").toString(),
+                              settings.value("outPort1").toInt());
+    password = settings.value("password1").toString();
+  } 
+  if (_ic == 2) {
+    _outSocket->connectToHost(settings.value("outHost2").toString(),
+                              settings.value("outPort2").toInt());
+    password = settings.value("password2").toString();
+  }
 
   const int timeOut = 5000;  // 5 seconds
@@ -105,6 +115,4 @@
     return;
   }
-
-  QString password   = settings.value("password").toString();
 
   QByteArray msg = "SOURCE " + password.toAscii() + " /" + 
Index: trunk/BNS/bnscaster.h
===================================================================
--- trunk/BNS/bnscaster.h	(revision 1248)
+++ trunk/BNS/bnscaster.h	(revision 1249)
@@ -8,5 +8,5 @@
  public:
   t_bnscaster(const QString& mountpoint, const QString& outFileName, 
-              const QString& refSys);
+              const QString& refSys, int ic);
   virtual ~t_bnscaster();
   void open();
@@ -28,4 +28,5 @@
   QTextStream* _outStream;
   bool         _crdTrafo;
+  int          _ic;
 };
 
Index: trunk/BNS/bnshelp.html
===================================================================
--- trunk/BNS/bnshelp.html	(revision 1248)
+++ trunk/BNS/bnshelp.html	(revision 1249)
@@ -275,5 +275,8 @@
 <p><a name="ephc"><h4>4.7. Ephemeris Corrections</h4></p>
 <p>
-BNS can upload the resulting stream(s) of clock and orbit corrections to Broadcast Ephemeris to an NTRIP Broadcaster. Both EUREF and IGS operate an NTRIP broadcaster at <u>http://www.euref-ip.net/home</u> and <u>http://www.igs-ip.net/home</u> which can be used for stream upload. The stream's format is RTCM Version 3.x. Note that it only carries the thentative message Types 4056 and 4057 for combined orbit and clock corrections to GPS and GLONASS Broadcast Ephemeris.
+BNS can upload the resulting stream(s) of clock and orbit corrections to Broadcast Ephemeris to an NTRIP Broadcaster. Both EUREF and IGS operate an NTRIP broadcaster at <u>http://www.euref-ip.net/home</u> and <u>http://www.igs-ip.net/home</u> which can be used for stream upload. The stream's format is RTCM Version 3.x. Note that it only carries the premature message Types 4056 and 4057 for combined orbit and clock corrections to GPS and GLONASS Broadcast Ephemeris.
+</p>
+<p>
+BNS allows to configure two Ephemeris Corrections streams refering do different reference systems for upload to different NTRIP broadcasters. You may use this functionality for parallel support of a backup NTRIP broadcaster or for simultaneous support of two reference systems.
 </p>
 
@@ -330,5 +333,5 @@
 </p>
 <p>
-Contact [igs-ip@bkg.bund.de] if you would like to see further transformations implemented in BNS.
+Contact [igs-ip@bkg.bund.de] if you would like to see further Helmert transformation parameters implemented in BNS to support other national or regional reference system.
 <p>
 
Index: trunk/BNS/bnswindow.cpp
===================================================================
--- trunk/BNS/bnswindow.cpp	(revision 1248)
+++ trunk/BNS/bnswindow.cpp	(revision 1249)
@@ -167,21 +167,34 @@
   _clkPortLineEdit->setMaximumWidth(9*ww);
 
-  _outHostLineEdit    = new QLineEdit(settings.value("outHost").toString());
-  _outHostLineEdit->setWhatsThis(tr("BNS can stream clock and orbit corrections to Broadcast Ephemeris in RTCM Version 3 format. Specify the host IP of an NTRIP Broadcaster to upload the stream. An empty option field means that you don't want to upload corrections."));
-  _outPortLineEdit    = new QLineEdit(settings.value("outPort").toString());
-  _outPortLineEdit->setWhatsThis(tr("Specify the IP port of an NTRIP Broadcaster to upload the stream. Default is port 80."));
-  _outPortLineEdit->setMaximumWidth(9*ww);
-  _passwordLineEdit   = new QLineEdit(settings.value("password").toString());
-  _passwordLineEdit->setWhatsThis(tr("Specify the stream upload password protecting the mounpoint on an NTRIP Broadcaster."));
-  _passwordLineEdit->setMaximumWidth(9*ww);
-  _passwordLineEdit->setEchoMode(QLineEdit::Password);
+  _outHost_1_LineEdit    = new QLineEdit(settings.value("outHost1").toString());
+  _outHost_1_LineEdit->setWhatsThis(tr("BNS can stream clock and orbit corrections to Broadcast Ephemeris in RTCM Version 3 format. Specify the host IP of an NTRIP Broadcaster to upload the stream. An empty option field means that you don't want to upload corrections."));
+//_outHost_1_LineEdit->setMaximumWidth(9*ww); // weber
+  _outPort_1_LineEdit    = new QLineEdit(settings.value("outPort1").toString());
+  _outPort_1_LineEdit->setWhatsThis(tr("Specify the IP port of an NTRIP Broadcaster to upload the stream. Default is port 80."));
+  _outPort_1_LineEdit->setMaximumWidth(9*ww);
+  _password_1_LineEdit   = new QLineEdit(settings.value("password1").toString());
+  _password_1_LineEdit->setWhatsThis(tr("Specify the stream upload password protecting the mounpoint on an NTRIP Broadcaster."));
+  _password_1_LineEdit->setMaximumWidth(9*ww);
+  _password_1_LineEdit->setEchoMode(QLineEdit::Password);
+
+  _outHost_2_LineEdit    = new QLineEdit(settings.value("outHost2").toString());
+  _outHost_2_LineEdit->setWhatsThis(tr("BNS can stream clock and orbit corrections to Broadcast Ephemeris in RTCM Version 3 format. Specify the host IP of an NTRIP Broadcaster to upload the stream. An empty option field means that you don't want to upload corrections."));
+//_outHost_2_LineEdit->setMaximumWidth(9*ww); // weber
+  _outPort_2_LineEdit    = new QLineEdit(settings.value("outPort2").toString());
+  _outPort_2_LineEdit->setWhatsThis(tr("Specify the IP port of an NTRIP Broadcaster to upload the stream. Default is port 80."));
+  _outPort_2_LineEdit->setMaximumWidth(9*ww);
+  _password_2_LineEdit   = new QLineEdit(settings.value("password2").toString());
+  _password_2_LineEdit->setWhatsThis(tr("Specify the stream upload password protecting the mounpoint on an NTRIP Broadcaster."));
+  _password_2_LineEdit->setMaximumWidth(9*ww);
+  _password_2_LineEdit->setEchoMode(QLineEdit::Password);
+
   _mountpoint_1_LineEdit = new QLineEdit(settings.value("mountpoint_1").toString());
   _mountpoint_1_LineEdit->setWhatsThis(tr("Specify the mounpoint for stream upload to an NTRIP Broadcaster."));
-  _mountpoint_1_LineEdit->setMaximumWidth(9*ww);
+  _mountpoint_1_LineEdit->setMaximumWidth(12*ww);
   _mountpoint_2_LineEdit = new QLineEdit(settings.value("mountpoint_2").toString());
   _mountpoint_2_LineEdit->setWhatsThis(tr("Specify the mounpoint for stream upload to an NTRIP Broadcaster."));
-  _mountpoint_2_LineEdit->setMaximumWidth(9*ww);
+  _mountpoint_2_LineEdit->setMaximumWidth(12*ww);
   _refSys_1_ComboBox = new QComboBox;
-  _refSys_1_ComboBox->setMaximumWidth(10*ww);
+  _refSys_1_ComboBox->setMaximumWidth(12*ww);
   _refSys_1_ComboBox->setEditable(false);
   _refSys_1_ComboBox->addItems(QString("IGS05,ETRF2000").split(","));
@@ -192,5 +205,5 @@
   _refSys_1_ComboBox->setWhatsThis(tr("Select the target reference system for outgoing clock and orbit corrections."));
   _refSys_2_ComboBox = new QComboBox;
-  _refSys_2_ComboBox->setMaximumWidth(10*ww);
+  _refSys_2_ComboBox->setMaximumWidth(12*ww);
   _refSys_2_ComboBox->setEditable(false);
   _refSys_2_ComboBox->addItems(QString("IGS05,ETRF2000").split(","));
@@ -321,36 +334,53 @@
   tab_co->setLayout(layout_co);
 
-  // Caster Tab
-  // ----------
-  QWidget* tab_cas = new QWidget();
-  tabs->addTab(tab_cas, "Ephemeris Corrections");
-
-  QGridLayout* layout_cas = new QGridLayout;
-  layout_cas->setColumnMinimumWidth(0, 9*ww);
-
-  layout_cas->addWidget(new QLabel("Host"),       0, 0, Qt::AlignLeft);
-  layout_cas->addWidget(_outHostLineEdit,         0, 1, 1, 2);
-  layout_cas->addWidget(new QLabel("Port"),       0, 3, Qt::AlignRight);
-  layout_cas->addWidget(_outPortLineEdit,         0, 4);
-  layout_cas->addWidget(new QLabel("Password"),   0, 5, Qt::AlignRight);
-  layout_cas->addWidget(_passwordLineEdit,        0, 6);
-
-  layout_cas->addWidget(new QLabel("Mountpoint 1"),            1, 0, Qt::AlignLeft);
-  layout_cas->addWidget(_mountpoint_1_LineEdit,                1, 1);
-  layout_cas->addWidget(new QLabel("  System"),                1, 2, Qt::AlignRight);
-  layout_cas->addWidget(_refSys_1_ComboBox,                    1, 3);
-  layout_cas->addWidget(new QLabel("  Save (full path)"),      1, 4, Qt::AlignRight);
-  layout_cas->addWidget(_outFile_1_LineEdit,                   1, 5, 1, 8);
-
-  layout_cas->addWidget(new QLabel("Mountpoint 2"),            2, 0, Qt::AlignLeft);
-  layout_cas->addWidget(_mountpoint_2_LineEdit,                2, 1);
-  layout_cas->addWidget(new QLabel("  System"),                2, 2, Qt::AlignRight);
-  layout_cas->addWidget(_refSys_2_ComboBox,                    2, 3);
-  layout_cas->addWidget(new QLabel("  Save (full path)"),      2, 4, Qt::AlignRight);
-  layout_cas->addWidget(_outFile_2_LineEdit,                   2, 5, 1, 8);
-
-  layout_cas->addWidget(new QLabel("Produce broadcast ephemeris corrections, upload to caster, reference system, local storage."), 3, 0, 1, 8, Qt::AlignLeft);
-
-  tab_cas->setLayout(layout_cas);
+  // Caster Tab I
+  // ------------
+  QWidget* tab_cas1 = new QWidget();
+  tabs->addTab(tab_cas1, "Ephemeris Corrections I");
+
+  QGridLayout* layout_cas1 = new QGridLayout;
+  layout_cas1->setColumnMinimumWidth(0, 9*ww);
+  layout_cas1->addWidget(new QLabel("Host"),             0, 0);
+  layout_cas1->addWidget(_outHost_1_LineEdit,            0, 1, 1, 3);
+  layout_cas1->addWidget(new QLabel("Port"),             0, 4, Qt::AlignRight);
+  layout_cas1->addWidget(_outPort_1_LineEdit,            0, 5);
+  layout_cas1->addWidget(new QLabel("Mountpoint"),       1, 0);
+  layout_cas1->addWidget(_mountpoint_1_LineEdit,         1, 1);
+  layout_cas1->addWidget(new QLabel("Password"),         1, 2, Qt::AlignRight);
+  layout_cas1->addWidget(_password_1_LineEdit,           1, 3);
+  layout_cas1->addWidget(new QLabel(" "),                1, 4);
+  layout_cas1->addWidget(new QLabel(" "),                1, 5);
+  layout_cas1->addWidget(new QLabel("System"),           2, 0);
+  layout_cas1->addWidget(_refSys_1_ComboBox,             2, 1);
+  layout_cas1->addWidget(new QLabel("Save (full path)"), 2, 2, Qt::AlignRight);
+  layout_cas1->addWidget(_outFile_1_LineEdit,            2, 3, 1, 10);
+  layout_cas1->addWidget(new QLabel("Produce broadcast ephemeris corrections, upload to caster, reference system, local storage."), 3, 0, 1, 10);
+
+  tab_cas1->setLayout(layout_cas1);
+
+  // Caster Tab II
+  // -------------
+  QWidget* tab_cas2 = new QWidget();
+  tabs->addTab(tab_cas2, "Ephemeris Corrections II");
+
+  QGridLayout* layout_cas2 = new QGridLayout;
+  layout_cas2->setColumnMinimumWidth(0, 9*ww);
+  layout_cas2->addWidget(new QLabel("Host"),             0, 0);
+  layout_cas2->addWidget(_outHost_2_LineEdit,            0, 1, 1, 3);
+  layout_cas2->addWidget(new QLabel("Port"),             0, 4, Qt::AlignRight);
+  layout_cas2->addWidget(_outPort_2_LineEdit,            0, 5);
+  layout_cas2->addWidget(new QLabel("Mountpoint"),       1, 0);
+  layout_cas2->addWidget(_mountpoint_2_LineEdit,         1, 1);
+  layout_cas2->addWidget(new QLabel("Password"),         1, 2, Qt::AlignRight);
+  layout_cas2->addWidget(_password_2_LineEdit,           1, 3);
+  layout_cas2->addWidget(new QLabel(" "),                1, 4);
+  layout_cas2->addWidget(new QLabel(" "),                1, 5);
+  layout_cas2->addWidget(new QLabel("System"),           2, 0);
+  layout_cas2->addWidget(_refSys_2_ComboBox,             2, 1);
+  layout_cas2->addWidget(new QLabel("Save (full path)"), 2, 2, Qt::AlignRight);
+  layout_cas2->addWidget(_outFile_2_LineEdit,            2, 3, 1, 10);
+  layout_cas2->addWidget(new QLabel("Produce broadcast ephemeris corrections, upload to caster, reference system, local storage."), 3, 0, 1, 10);
+
+  tab_cas2->setLayout(layout_cas2);
 
   // RINEX Tab
@@ -530,28 +560,29 @@
 void bnsWindow::slotSaveOptions() {
   QSettings settings;
-  settings.setValue("proxyHost",  _proxyHostLineEdit->text());
-  settings.setValue("proxyPort",  _proxyPortLineEdit->text());
-  settings.setValue("logFile",    _logFileLineEdit->text());
-  settings.setValue("fileAppend", _fileAppendCheckBox->checkState());
-  settings.setValue("refSys_1",     _refSys_1_ComboBox->currentText());
-  settings.setValue("refSys_2",     _refSys_2_ComboBox->currentText());
-  settings.setValue("inpEcho",    _inpEchoLineEdit->text());
-  settings.setValue("ephHost",    _ephHostLineEdit->text());
-  settings.setValue("ephPort",    _ephPortLineEdit->text());
-  settings.setValue("ephEcho",    _ephEchoLineEdit->text());
-  settings.setValue("clkPort",    _clkPortLineEdit->text());
-  settings.setValue("outHost",    _outHostLineEdit->text());
-  settings.setValue("outPort",    _outPortLineEdit->text());
-  settings.setValue("mountpoint_1", _mountpoint_1_LineEdit->text());
-  settings.setValue("mountpoint_2", _mountpoint_2_LineEdit->text());
-  settings.setValue("outFile_1",    _outFile_1_LineEdit->text());
-  settings.setValue("outFile_2",    _outFile_2_LineEdit->text());
-  settings.setValue("password",   _passwordLineEdit->text());
-  settings.setValue("rnxPath",    _rnxPathLineEdit->text());
-  settings.setValue("rnxIntr",    _rnxIntrComboBox->currentText());
-  settings.setValue("rnxSampl",   _rnxSamplSpinBox->value());
-  settings.setValue("sp3Path",    _sp3PathLineEdit->text());
-  settings.setValue("sp3Intr",    _sp3IntrComboBox->currentText());
-  settings.setValue("sp3Sampl",   _sp3SamplSpinBox->value());
+  settings.setValue("proxyHost",   _proxyHostLineEdit->text());
+  settings.setValue("proxyPort",   _proxyPortLineEdit->text());
+  settings.setValue("logFile",     _logFileLineEdit->text());
+  settings.setValue("fileAppend",  _fileAppendCheckBox->checkState());
+  settings.setValue("refSys_1",    _refSys_1_ComboBox->currentText());
+  settings.setValue("refSys_2",    _refSys_2_ComboBox->currentText());
+  settings.setValue("inpEcho",     _inpEchoLineEdit->text());
+  settings.setValue("ephHost",     _ephHostLineEdit->text());
+  settings.setValue("ephPort",     _ephPortLineEdit->text());
+  settings.setValue("ephEcho",     _ephEchoLineEdit->text());
+  settings.setValue("clkPort",     _clkPortLineEdit->text());
+  settings.setValue("outHost1",    _outHost_1_LineEdit->text());
+  settings.setValue("outPort1",    _outPort_1_LineEdit->text());
+  settings.setValue("mountpoint_1",_mountpoint_1_LineEdit->text());
+  settings.setValue("mountpoint_2",_mountpoint_2_LineEdit->text());
+  settings.setValue("outFile_1",   _outFile_1_LineEdit->text());
+  settings.setValue("outFile_2",   _outFile_2_LineEdit->text());
+  settings.setValue("password1",   _password_1_LineEdit->text());
+  settings.setValue("password2",   _password_2_LineEdit->text());
+  settings.setValue("rnxPath",     _rnxPathLineEdit->text());
+  settings.setValue("rnxIntr",     _rnxIntrComboBox->currentText());
+  settings.setValue("rnxSampl",    _rnxSamplSpinBox->value());
+  settings.setValue("sp3Path",     _sp3PathLineEdit->text());
+  settings.setValue("sp3Intr",     _sp3IntrComboBox->currentText());
+  settings.setValue("sp3Sampl",    _sp3SamplSpinBox->value());
 }
 
Index: trunk/BNS/bnswindow.h
===================================================================
--- trunk/BNS/bnswindow.h	(revision 1248)
+++ trunk/BNS/bnswindow.h	(revision 1249)
@@ -78,7 +78,10 @@
   QLineEdit* _clkPortLineEdit;
   QLineEdit* _logFileLineEdit;
-  QLineEdit* _outHostLineEdit;
-  QLineEdit* _outPortLineEdit;
-  QLineEdit* _passwordLineEdit;
+  QLineEdit* _outHost_1_LineEdit;
+  QLineEdit* _outPort_1_LineEdit;
+  QLineEdit* _password_1_LineEdit;
+  QLineEdit* _outHost_2_LineEdit;
+  QLineEdit* _outPort_2_LineEdit;
+  QLineEdit* _password_2_LineEdit;
   QLineEdit* _mountpoint_1_LineEdit;
   QLineEdit* _mountpoint_2_LineEdit;
