diff --git a/.gitattributes b/.gitattributes
index a90577832eef179efd92e61ecb5a043b86fa5333..90aa49cc0d51a5dba65a5634398e2a4ab51cfd4c 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -3221,6 +3221,7 @@ MAC/Navigator2/panels/objects/Observations/lofar_Obs_state.pnl -text
 MAC/Navigator2/panels/objects/Processes/ObsSW_CEP.pnl -text
 MAC/Navigator2/panels/objects/Processes/ObsSW_Main.pnl -text
 MAC/Navigator2/panels/objects/Processes/ObsSW_Station.pnl -text
+MAC/Navigator2/panels/objects/Processes/SWControler_small.pnl -text
 MAC/Navigator2/panels/objects/Processes/adder.pnl -text
 MAC/Navigator2/panels/objects/Processes/circularBuffer.pnl -text
 MAC/Navigator2/panels/objects/Processes/controller_small.pnl -text
@@ -3237,6 +3238,7 @@ MAC/Navigator2/panels/objects/Test/Action.pnl -text
 MAC/Navigator2/panels/objects/Test/Event.pnl -text
 MAC/Navigator2/panels/objects/compass.pnl -text
 MAC/Navigator2/panels/objects/connectionBroken.pnl -text
+MAC/Navigator2/panels/objects/datastreamLevel.pnl -text
 MAC/Navigator2/panels/objects/lofar_colors.pnl -text
 MAC/Navigator2/panels/objects/lofar_logger.pnl -text
 MAC/Navigator2/panels/objects/lofar_self_state.pnl -text
@@ -3248,6 +3250,7 @@ MAC/Navigator2/panels/objects/navigator_progressBar.pnl -text
 MAC/Navigator2/panels/objects/navigator_typeSelector.pnl -text
 MAC/Navigator2/panels/objects/navigator_viewSelection.pnl -text
 MAC/Navigator2/panels/objects/show_legenda.pnl -text
+MAC/Navigator2/panels/objects/swlevel.pnl -text
 MAC/Navigator2/pictures/16_empty.gif -text svneol=unset#image/gif
 MAC/Navigator2/pictures/16_hand_right.gif -text svneol=unset#image/gif
 MAC/Navigator2/pictures/253.bmp -text svneol=unset#image/bmp
diff --git a/MAC/Navigator2/panels/objects/Processes/SWControler_small.pnl b/MAC/Navigator2/panels/objects/Processes/SWControler_small.pnl
new file mode 100644
index 0000000000000000000000000000000000000000..6205f372621c6fd2d61c0a83cd8abd430d9202c6
--- /dev/null
+++ b/MAC/Navigator2/panels/objects/Processes/SWControler_small.pnl
@@ -0,0 +1,144 @@
+V 11
+1
+LANG:1 0 
+PANEL,-1 -1 388 166 N "_3DFace" 2
+"$name"
+"$station"
+"main()
+{
+  station = $station;
+  baseDP = station+\":LOFAR_\"+$name;
+
+  // some controllers are observationbased and are only active if there is actually an observation running
+  // these should be reloaded if the active observation changes, the name of the observation (temp place) will also change
+  // So we have to be triggered:
+  if ($name == \"ObservationControl\" ||    // MCU
+      $name == \"OnlineControl\" ||    // CCU
+      $name == \"PythonControl\" ||    // CCU
+      $name == \"CalibrationControl\" ||    // Station
+      $name == \"BeamControl\" ||    // Station
+      $name == \"TBBControl\") {    // Station
+
+    if (dpExists(\"MCU001:LOFAR_PermSW_MACScheduler.activeObservations\")) {
+      if (dpConnect(\"observationChanged\", \"MCU001:LOFAR_PermSW_MACScheduler.activeObservations:_online.._value\",
+                                          \"MCU001:LOFAR_PermSW_MACScheduler.activeObservations:_online.._invalid\") == -1) {
+        LOG_ERROR(\"Observation_small.pnl:main|Couldn't connect to: MCU001:LOFAR_PermSW_MACScheduler.activeObservations\");
+      }
+    } else {
+      if (!isStandalone()) LOG_ERROR(\"Observation_small.pnl:main|Couldn't find DP to connect to: MCU001:LOFAR_PermSW_MACScheduler.activeObservations\");
+    }
+  }	else {
+    reload();
+  }
+}
+
+private void observationChanged(string dp1, dyn_string observations,
+                                string dp2, bool invalid) {
+
+  DebugN(\"Observations: \" + observations);
+  // for now the object will only show the controller for the first observation
+  if (dynlen(observations) >= 1) {
+    firstObservation = observations[1];
+    // get real name from claimmanager
+    obsDP=claimManager_nameToRealName(\"LOFAR_ObsSW_\"+firstObservation);
+    baseDP = station+\":\"+obsDP+\"_\"+$name;
+    DebugN(\"baseDP: \"+baseDP);
+    reload();
+  }
+}
+  
+private void reload() {
+  
+  // check if the required datapoint for this view are enabled and accessible
+  if (dpExists(baseDP+\".process.startTime\")) {
+    if (dpConnect(\"updateSWController\", baseDP +\".process.startTime:_online.._value\",
+                                        baseDP +\".process.stopTime:_online.._value\",
+                                        baseDP +\".process.stopTime:_online.._invalid\",
+                                        baseDP +\".process.startTime:_online.._invalid\") == -1) {
+      LOG_ERROR(\"SWControler_small.pnl:main|Couldn't connect to: \"+baseDP+\" \"+getLastError());
+    }
+  } else {
+    LOG_ERROR(\"SWControler_small.pnl:main|Couldn't find DP to connect to: \"+baseDP);
+    setValue(\"process\", \"backCol\", \"Lofar_dpdoesnotexist\");
+
+  }	
+}
+
+updateSWController(string dp1, time start,
+                   string dp2, time stop,
+                   string dp3, bool stopInvalid,
+                   string dp4, bool startInvalid)
+{
+  setValue(\"process\",\"toolTipText\",baseDP);
+  if (! startInvalid) {
+      setValue(\"process\", \"backCol\", \"_Window\");
+      if (stopInvalid) {
+        setValue(\"process\", \"backCol\", \"green\");
+      } else if (start > stop) {
+        setValue(\"process\", \"backCol\", \"green\");
+      } else if (stop >= start) {
+        setValue(\"process\", \"backCol\", \"red\");
+      }        
+    } else {
+      setValue(\"process\", \"backCol\", \"Lofar_invalid\");
+    }
+}" 0
+ E E E E 1 -1 -1 0  0 0
+""0  1
+E "#uses \"navPanel.ctl\"
+string station = \"\";
+string baseDP=\"\";
+string obsDP=\"\";
+string firstObservation=\"\";" 0
+ 2
+"CBRef" "1"
+"EClose" E
+""
+DISPLAY_LAYER, 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
+LAYER, 0 
+1
+LANG:1 0 
+6 0
+"process"
+""
+1 230 150 E E E 1 E 1 E N {0,0,0} E N {255,255,255} E E
+ E E
+0 0 0 0 0 0
+E E E
+0
+1
+LANG:1 0 
+
+1
+"dashclr"N "_Transparent"
+E E 0 1 1 2 1 E 1 0 1 0 -10 1 E 0 10 14 19
+0
+LAYER, 1 
+1
+LANG:1 0 
+0
+LAYER, 2 
+1
+LANG:1 0 
+0
+LAYER, 3 
+1
+LANG:1 0 
+0
+LAYER, 4 
+1
+LANG:1 0 
+0
+LAYER, 5 
+1
+LANG:1 0 
+0
+LAYER, 6 
+1
+LANG:1 0 
+0
+LAYER, 7 
+1
+LANG:1 0 
+0
+0
diff --git a/MAC/Navigator2/panels/objects/datastreamLevel.pnl b/MAC/Navigator2/panels/objects/datastreamLevel.pnl
new file mode 100644
index 0000000000000000000000000000000000000000..cf5f0af7e4088b966e874aa241a52434183732f3
--- /dev/null
+++ b/MAC/Navigator2/panels/objects/datastreamLevel.pnl
@@ -0,0 +1,396 @@
+V 11
+1
+LANG:1 0 
+PANEL,-1 -1 251 88 N "_3DFace" 1
+"$station"
+"main()
+{
+  //Point to show the datastreamlevel of a certain station
+  
+  station = $station;
+  
+  baseDP = station+\":LOFAR_PIC_StationInfo\";
+  
+  if (dpExists(baseDP)) {
+    showDatastreams();
+  }
+}" 0
+ E E E E 1 -1 -1 0  0 0
+""0  1
+E "#uses \"navPanel.ctl\"
+string station = \"\";
+string baseDP=\"\";
+
+int filled0=0;
+int filled1=0;
+
+
+// ****************************************
+// Name: showDatastreams   
+// ****************************************
+//    Connects to the given datapoint .datastream0 && 1 it's historical data (if any)
+//    and logs all
+//           
+// ****************************************
+showDatastreams()
+{
+  LOG_TRACE(\"datastreamLevel.pnl:showLevels| Entered for DP:\" ,baseDP);
+	
+  string dpStream0 = baseDP+\".datastream0\";
+  string dpStream1 = baseDP+\".datastream1\";
+  string systemName = dpSubStr(dpStream0,DPSUB_SYS);
+  string bareDP     = dpSubStr(dpStream0,DPSUB_DP_EL_CONF_DET_ATT);
+
+  if(dpExists(dpStream0)) {
+    // gather the historical data:
+    dyn_dyn_anytype tab;
+    int z;
+    time tStart;
+    time tStop;
+    tStop = getCurrentTime();
+    tStart = tStop - 15*3600; // 15 hours of history
+	
+    string query=\"\";
+            
+    if (systemName != MainDBName) {     
+      query = \"SELECT ALL '_original.._value','_original.._stime' FROM '\" + dpStream0 + \"' REMOTE'\"+systemName +\"' TIMERANGE(\\\"\" +
+              formatTime(\"%Y.%m.%d %H:%M:%S\",tStart) + \"\\\",\\\"\" +
+              formatTime(\"%Y.%m.%d %H:%M:%S\",tStop) + \"\\\",1,0) LAST 5\";
+    } else {
+      query = \"SELECT ALL '_original.._value','_original.._stime' FROM '\" + dpStream0 + \"' TIMERANGE(\\\"\" +
+              formatTime(\"%Y.%m.%d %H:%M:%S\",tStart) + \"\\\",\\\"\" +
+              formatTime(\"%Y.%m.%d %H:%M:%S\",tStop) + \"\\\",1,0) LAST 5\";
+    }
+
+    LOG_DEBUG(\"datastreamLevel.pnl:showLevelsQuery: \" + query);
+    dpQuery(query, tab);
+    LOG_DEBUG(\"datastreamLevel.pnl:showLevels|Found: \" + tab + \" length: \" + dynlen(tab));
+	 	 
+	 	
+    for(z=2;z<dynlen(tab);z++) {
+      addStream(0,tab[z][2],tab[z][3]);
+    }
+	
+    // connect to levels
+    if (dpConnect(\"updateStream0\",dpStream0,
+                                  dpStream0+\":_original.._stime\",
+                                  dpStream0+\":_online.._invalid\") == -1) {
+      LOG_ERROR(\"datastreamLevel.pnl:showLevels|Couldn't connect to \"+dpStream0+ \" \" + getLastError());
+    }
+  } else {
+    LOG_DEBUG(\"statstreamLevel.pnl:showLevels|error connecting to: \"+ dpStream0);
+  }    
+
+  if(dpExists(dpStream1)) {
+    // gather the historical data:
+    dyn_dyn_anytype tab;
+    int z;
+    time tStart;
+    time tStop;
+    tStop = getCurrentTime();
+    tStart = tStop - 15*3600; // 15 hours of history
+	
+    string query=\"\";
+            
+    if (systemName != MainDBName) {     
+      query = \"SELECT ALL '_original.._value','_original.._stime' FROM '\" + dpStream1 + \"' REMOTE'\"+systemName +\"' TIMERANGE(\\\"\" +
+              formatTime(\"%Y.%m.%d %H:%M:%S\",tStart) + \"\\\",\\\"\" +
+              formatTime(\"%Y.%m.%d %H:%M:%S\",tStop) + \"\\\",1,0) LAST 5\";
+    } else {
+      query = \"SELECT ALL '_original.._value','_original.._stime' FROM '\" + dpStream1 + \"' TIMERANGE(\\\"\" +
+              formatTime(\"%Y.%m.%d %H:%M:%S\",tStart) + \"\\\",\\\"\" +
+              formatTime(\"%Y.%m.%d %H:%M:%S\",tStop) + \"\\\",1,0) LAST 5\";
+    }
+
+    LOG_DEBUG(\"datastreamLevel.pnl:showLevelsQuery: \" + query);
+    dpQuery(query, tab);
+    LOG_DEBUG(\"datastreamLevel.pnl:showLevels|Found: \" + tab + \" length: \" + dynlen(tab));
+	 	 
+	 	
+    for(z=2;z<dynlen(tab);z++) {
+      addStream(1,tab[z][2],tab[z][3]);
+    }
+	
+    // connect to levels
+    if (dpConnect(\"updateStream1\",dpStream1,
+                                  dpStream1+\":_original.._stime\",
+                                  dpStream1+\":_online.._invalid\") == -1) {
+      LOG_ERROR(\"datastreamLevel.pnl:showLevels|Couldn't connect to \"+dpStream1+ \" \" + getLastError());
+    }
+  } else {
+    LOG_DEBUG(\"datastreamLevel.pnl:showLevels|error connecting to: \"+ dpStream1);
+  }    
+}
+
+// ****************************************
+// Name: updateStream0
+// ****************************************
+//    callback for showStreams
+//           
+// ****************************************
+updateStream0(string dp1, bool stream,
+              string dp2, string changed,
+              string dp3, bool invalid)
+{
+  LOG_TRACE(\"datastreamLevel.pnl:showStream0|stream: \"+stream);
+  addStream(0,stream,changed);
+}
+
+// ****************************************
+// Name: updateStream1
+// ****************************************
+//    callback for showStreams
+//           
+// ****************************************
+updateStream1(string dp1, bool stream,
+              string dp2, string changed,
+              string dp3, bool invalid)
+{
+  LOG_TRACE(\"datastreamLevel.pnl:showStream1|Stream: \"+stream);
+  addStream(1,stream,changed);
+}
+// ****************************************
+// Name: addStream   
+// ****************************************
+//    fill the 15 timestamped datastreamLevel for this Database
+//           
+// ****************************************
+addStream(int streamnr,int stream,string changed)
+{
+  
+  LOG_TRACE(\"dataStreamLlevel.pnl:addlevel|streamnr -stream: \" + streamnr + \" - \"+stream);
+
+  string toolTip = changed+\"<br>  stream: \"+stream;
+  
+  string streamcolor=\"\";
+  if (!stream) {
+    streamcolor=\"red\";
+  } else if (stream) {
+    streamcolor=\"green\";
+  }
+
+  string oldstream=\"white\";
+  string oldToolTip = \"\";
+  if (streamnr == 0) {
+    for (int i=5-filled0; i< 5 ;i++) {
+      // get the original color and tooltip from the next right point and move it to this point
+      getValue(\"stream0-\"+(i+1)+\"_text\",\"backCol\",oldstream);
+      setValue(\"stream0-\"+(i)+\"_text\",\"backCol\",oldstream);
+      getValue(\"stream0-\"+(i+1)+\"_text\",\"toolTipText\",oldToolTip);
+      setValue(\"stream0-\"+(i)+\"_text\",\"toolTipText\",oldToolTip);
+    }
+    // set new values
+    setValue(\"stream0-5_text\",\"backCol\",streamcolor);
+    setValue(\"stream0-5_text\",\"toolTipText\",toolTip);
+    if (filled0 < 5) filled0++;
+  } else if (streamnr == 1) {
+    for (int i=5-filled1; i< 5 ;i++) {
+      // get the original color and tooltip from the next right point and move it to this point
+      getValue(\"stream1-\"+(i+1)+\"_text\",\"backCol\",oldstream);
+      setValue(\"stream1-\"+(i)+\"_text\",\"backCol\",oldstream);
+      getValue(\"stream1-\"+(i+1)+\"_text\",\"toolTipText\",oldToolTip);
+      setValue(\"stream1-\"+(i)+\"_text\",\"toolTipText\",oldToolTip);
+    }
+    // set new values
+    setValue(\"stream1-5_text\",\"backCol\",streamcolor);
+    setValue(\"stream1-5_text\",\"toolTipText\",toolTip);
+    if (filled1 < 5) filled1++;
+  }
+}" 0
+ 2
+"CBRef" "1"
+"EClose" E
+""
+DISPLAY_LAYER, 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
+LAYER, 0 
+1
+LANG:1 0 
+6 0
+"stream0-1_text"
+""
+1 230 150 E E E 1 E 1 E N {0,0,0} E N {255,255,255} E E
+ E E
+0 0 0 0 0 0
+E E E
+0
+1
+LANG:1 0 
+
+1
+"dashclr"N "_Transparent"
+E E 0 1 1 2 1 E 1 0 1 -230 -140 1 E 230 150 234 159
+6 2
+"stream0-2_text"
+""
+1 230 150 E E E 1 E 1 E N {0,0,0} E N {255,255,255} E E
+ E E
+2 0 0 0 0 0
+E E E
+0
+1
+LANG:1 0 
+
+1
+"dashclr"N "_Transparent"
+E E 0 1 1 2 1 E 1 0 1 -225 -140 1 E 230 150 234 159
+6 3
+"stream0-3_text"
+""
+1 230 150 E E E 1 E 1 E N {0,0,0} E N {255,255,255} E E
+ E E
+3 0 0 0 0 0
+E E E
+0
+1
+LANG:1 0 
+
+1
+"dashclr"N "_Transparent"
+E E 0 1 1 2 1 E 1 0 1 -220 -140 1 E 230 150 234 159
+6 4
+"stream0-4_text"
+""
+1 230 150 E E E 1 E 1 E N {0,0,0} E N {255,255,255} E E
+ E E
+4 0 0 0 0 0
+E E E
+0
+1
+LANG:1 0 
+
+1
+"dashclr"N "_Transparent"
+E E 0 1 1 2 1 E 1 0 1 -215 -140 1 E 230 150 234 159
+6 5
+"stream0-5_text"
+""
+1 230 150 E E E 1 E 1 E N {0,0,0} E N {255,255,255} E E
+ E E
+5 0 0 0 0 0
+E E E
+0
+1
+LANG:1 0 
+
+1
+"dashclr"N "_Transparent"
+E E 0 1 1 2 1 E 1 0 1 -210 -140 1 E 230 150 234 159
+6 8
+"stream1-1_text"
+""
+1 230 150 E E E 1 E 1 E N {0,0,0} E N {255,255,255} E E
+ E E
+8 0 0 0 0 0
+E E E
+0
+1
+LANG:1 0 
+
+1
+"dashclr"N "_Transparent"
+E E 0 1 1 2 1 E 1 0 1 -195 -140 1 E 230 150 234 159
+6 9
+"stream1-2_text"
+""
+1 230 150 E E E 1 E 1 E N {0,0,0} E N {255,255,255} E E
+ E E
+9 0 0 0 0 0
+E E E
+0
+1
+LANG:1 0 
+
+1
+"dashclr"N "_Transparent"
+E E 0 1 1 2 1 E 1 0 1 -190 -140 1 E 230 150 234 159
+6 10
+"stream1-3_text"
+""
+1 230 150 E E E 1 E 1 E N {0,0,0} E N {255,255,255} E E
+ E E
+10 0 0 0 0 0
+E E E
+0
+1
+LANG:1 0 
+
+1
+"dashclr"N "_Transparent"
+E E 0 1 1 2 1 E 1 0 1 -185 -140 1 E 230 150 234 159
+6 11
+"stream1-4_text"
+""
+1 230 150 E E E 1 E 1 E N {0,0,0} E N {255,255,255} E E
+ E E
+11 0 0 0 0 0
+E E E
+0
+1
+LANG:1 0 
+
+1
+"dashclr"N "_Transparent"
+E E 0 1 1 2 1 E 1 0 1 -180 -140 1 E 230 150 234 159
+6 12
+"stream1-5_text"
+""
+1 230 150 E E E 1 E 1 E N {0,0,0} E N {255,255,255} E E
+ E E
+12 0 0 0 0 0
+E E E
+0
+1
+LANG:1 0 
+
+1
+"dashclr"N "_Transparent"
+E E 0 1 1 2 1 E 1 0 1 -175 -140 1 E 230 150 234 159
+2 16
+"PRIMITIVE_TEXT1"
+""
+1 70 80 E E E 1 E 1 E N "_WindowText" E N "_Window" E E
+ E E
+16 0 0 0 0 0
+E E E
+0
+1
+LANG:1 0 
+
+1
+"dashclr"N "_Transparent"
+E E 0 1 1 2 1 E U  0 E 70 80 71 93
+0 2 2 "0s" 0 0 0 192 0 0  70 80 1
+1
+LANG:1 34 MS Shell Dlg 2,8,-1,5,50,0,0,0,0,0
+0 1
+LANG:1 0 
+0
+LAYER, 1 
+1
+LANG:1 0 
+0
+LAYER, 2 
+1
+LANG:1 0 
+0
+LAYER, 3 
+1
+LANG:1 0 
+0
+LAYER, 4 
+1
+LANG:1 0 
+0
+LAYER, 5 
+1
+LANG:1 0 
+0
+LAYER, 6 
+1
+LANG:1 0 
+0
+LAYER, 7 
+1
+LANG:1 0 
+0
+0
diff --git a/MAC/Navigator2/panels/objects/swlevel.pnl b/MAC/Navigator2/panels/objects/swlevel.pnl
new file mode 100644
index 0000000000000000000000000000000000000000..9862b8576df20dd0a7265ed36f3a32c9444bbdae
--- /dev/null
+++ b/MAC/Navigator2/panels/objects/swlevel.pnl
@@ -0,0 +1,414 @@
+V 11
+1
+LANG:1 0 
+PANEL,-1 -1 251 88 N "_3DFace" 1
+"$station"
+"main()
+{
+  //Point to show the swlevel of a certain station
+  
+  station = $station;
+  station_text.text = station;
+  
+  baseDP = station+\":LOFAR_PermSW_SoftwareMonitor\";
+  
+  if (dpExists(baseDP)) {
+    showLevels();
+  } else {
+    station_text.foreCol(\"Lofar_dpdoesnotexist\");
+  }
+}
+" 0
+ E E E E 1 -1 -1 0  0 0
+""0  1
+E "#uses \"navPanel.ctl\"
+string station = \"\";
+string baseDP=\"\";
+
+int filled=0;
+
+
+// ****************************************
+// Name: showLogging   
+// ****************************************
+//    Connects to the given datapoint .logMsg it's historical data (if any)
+//    and logs all
+//           
+// ****************************************
+showLevels()
+{
+  LOG_TRACE(\"swlevel.pnl:showLevels| Entered for DP:\" ,baseDP);
+	
+  string dpLvl = baseDP+\".SWLevel\";
+  string systemName = dpSubStr(dpLvl,DPSUB_SYS);
+  string bareDP     = dpSubStr(dpLvl,DPSUB_DP_EL_CONF_DET_ATT);
+
+  if(dpExists(dpLvl)) {
+    // gather the historical data:
+    dyn_dyn_anytype tab;
+    int z;
+    time tStart;
+    time tStop;
+    tStop = getCurrentTime();
+    tStart = tStop - 15*3600; // 15 hours of history
+	
+    string query=\"\";
+            
+    if (systemName != MainDBName) {     
+      query = \"SELECT ALL '_original.._value','_original.._stime' FROM '\" + dpLvl + \"' REMOTE'\"+systemName +\"' TIMERANGE(\\\"\" +
+              formatTime(\"%Y.%m.%d %H:%M:%S\",tStart) + \"\\\",\\\"\" +
+              formatTime(\"%Y.%m.%d %H:%M:%S\",tStop) + \"\\\",1,0) LAST 15\";
+    } else {
+      query = \"SELECT ALL '_original.._value','_original.._stime' FROM '\" + dpLvl + \"' TIMERANGE(\\\"\" +
+              formatTime(\"%Y.%m.%d %H:%M:%S\",tStart) + \"\\\",\\\"\" +
+              formatTime(\"%Y.%m.%d %H:%M:%S\",tStop) + \"\\\",1,0) LAST 15\";
+    }
+
+    LOG_DEBUG(\"swlevel.pnl:showLevelsQuery: \" + query);
+    dpQuery(query, tab);
+    LOG_DEBUG(\"swlevel.pnl:showLevels|Found: \" + tab + \" length: \" + dynlen(tab));
+	 	 
+	 	
+    for(z=2;z<dynlen(tab);z++) {
+      addLevel(tab[z][2],tab[z][3]);
+    }
+	
+    // connect to levels
+    if (dpConnect(\"updateLevel\",dpLvl,
+                                dpLvl+\":_original.._stime\",
+                                dpLvl+\":_online.._invalid\") == -1) {
+      LOG_ERROR(\"swlevel.pnl:showLevels|Couldn't connect to \"+dpLvl+ \" \" + getLastError());
+    }
+  } else {
+    LOG_DEBUG(\"swlevel.pnl:showLevels|error connecting to: \"+ dpLvl);
+  }    
+}
+
+// ****************************************
+// Name: updateLevel   
+// ****************************************
+//    callback for showLevels
+//           
+// ****************************************
+updateLevel(string dp1, int lvl,
+            string dp2, string changed,
+            string dp3, bool invalid)
+{
+  LOG_TRACE(\"swlevel.pnl:showLevelsg|Level: \"+lvl);
+  if (invalid) {
+    station_text.foreCol(\"Lofar_invalid\");
+  } else {
+    station_text.foreCol(\"_WindowText\");
+    addLevel(lvl,changed);
+  }
+}
+
+// ****************************************
+// Name: addLevel   
+// ****************************************
+//    fill the 15 timestamped SWlevels for this Database
+//           
+// ****************************************
+addLevel(int lvl,string changed)
+{
+  LOG_TRACE(\"swlevel.pnl:addlevel|lvl: \" + lvl);
+
+  string toolTip = changed+\"<br>  level: \"+lvl;
+  
+  string lvlcolor=\"\";
+  if (lvl == 0) {
+    lvlcolor=\"red\";
+  } else if (lvl == 1) {
+    lvlcolor=\"{255,170,0}\";     //orange
+  } else if (lvl >= 2 && lvl < 6) {
+    lvlcolor=\"yellow\";
+  } else if (lvl == 6) {
+    lvlcolor=\"green\";
+  } else {
+    lvlcolor = \"white\";
+  }
+
+  string oldlvl=\"white\";
+  string oldToolTip = \"\";
+  for (int i=15-filled; i< 15 ;i++) {
+    // get the original color and tooltip from the next right point and move it to this point
+    getValue(\"level\"+(i+1)+\"_text\",\"backCol\",oldlvl);
+    setValue(\"level\"+(i)+\"_text\",\"backCol\",oldlvl);
+    getValue(\"level\"+(i+1)+\"_text\",\"toolTipText\",oldToolTip);
+    setValue(\"level\"+(i)+\"_text\",\"toolTipText\",oldToolTip);
+  }
+  // set new values
+  setValue(\"level15_text\",\"backCol\",lvlcolor);
+  setValue(\"level15_text\",\"toolTipText\",toolTip);
+  if (filled < 15) filled++;
+}
+
+
+" 0
+ 2
+"CBRef" "1"
+"EClose" E
+""
+DISPLAY_LAYER, 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
+LAYER, 0 
+1
+LANG:1 0 
+6 0
+"level1_text"
+""
+1 230 150 E E E 1 E 1 E N {0,0,0} E N {255,255,255} E E
+ E E
+0 0 0 0 0 0
+E E E
+0
+1
+LANG:1 0 
+
+1
+"dashclr"N "_Transparent"
+E E 0 1 1 2 1 E 1 0 1 -180 -140 1 E 230 150 234 159
+2 1
+"station_text"
+""
+1 10 9 E E E 1 E 1 E N "_WindowText" E N "_Transparent" E E
+ E E
+1 0 0 0 0 0
+E E E
+0
+1
+LANG:1 0 
+
+1
+"dashclr"N "_Transparent"
+E E 0 1 1 2 1 E U  0 E 10 9 38 22
+0 2 2 "0s" 0 0 0 192 0 0  10 9 1
+1
+LANG:1 34 MS Shell Dlg 2,8,-1,5,50,0,0,0,0,0
+0 1
+LANG:1 5 cs001
+6 2
+"level2_text"
+""
+1 230 150 E E E 1 E 1 E N {0,0,0} E N {255,255,255} E E
+ E E
+2 0 0 0 0 0
+E E E
+0
+1
+LANG:1 0 
+
+1
+"dashclr"N "_Transparent"
+E E 0 1 1 2 1 E 1 0 1 -175 -140 1 E 230 150 234 159
+6 3
+"level3_text"
+""
+1 230 150 E E E 1 E 1 E N {0,0,0} E N {255,255,255} E E
+ E E
+3 0 0 0 0 0
+E E E
+0
+1
+LANG:1 0 
+
+1
+"dashclr"N "_Transparent"
+E E 0 1 1 2 1 E 1 0 1 -170 -140 1 E 230 150 234 159
+6 4
+"level4_text"
+""
+1 230 150 E E E 1 E 1 E N {0,0,0} E N {255,255,255} E E
+ E E
+4 0 0 0 0 0
+E E E
+0
+1
+LANG:1 0 
+
+1
+"dashclr"N "_Transparent"
+E E 0 1 1 2 1 E 1 0 1 -165 -140 1 E 230 150 234 159
+6 5
+"level5_text"
+""
+1 230 150 E E E 1 E 1 E N {0,0,0} E N {255,255,255} E E
+ E E
+5 0 0 0 0 0
+E E E
+0
+1
+LANG:1 0 
+
+1
+"dashclr"N "_Transparent"
+E E 0 1 1 2 1 E 1 0 1 -160 -140 1 E 230 150 234 159
+6 6
+"level6_text"
+""
+1 230 150 E E E 1 E 1 E N {0,0,0} E N {255,255,255} E E
+ E E
+6 0 0 0 0 0
+E E E
+0
+1
+LANG:1 0 
+
+1
+"dashclr"N "_Transparent"
+E E 0 1 1 2 1 E 1 0 1 -155 -140 1 E 230 150 234 159
+6 7
+"level7_text"
+""
+1 230 150 E E E 1 E 1 E N {0,0,0} E N {255,255,255} E E
+ E E
+7 0 0 0 0 0
+E E E
+0
+1
+LANG:1 0 
+
+1
+"dashclr"N "_Transparent"
+E E 0 1 1 2 1 E 1 0 1 -150 -140 1 E 230 150 234 159
+6 8
+"level8_text"
+""
+1 230 150 E E E 1 E 1 E N {0,0,0} E N {255,255,255} E E
+ E E
+8 0 0 0 0 0
+E E E
+0
+1
+LANG:1 0 
+
+1
+"dashclr"N "_Transparent"
+E E 0 1 1 2 1 E 1 0 1 -145 -140 1 E 230 150 234 159
+6 9
+"level9_text"
+""
+1 230 150 E E E 1 E 1 E N {0,0,0} E N {255,255,255} E E
+ E E
+9 0 0 0 0 0
+E E E
+0
+1
+LANG:1 0 
+
+1
+"dashclr"N "_Transparent"
+E E 0 1 1 2 1 E 1 0 1 -140 -140 1 E 230 150 234 159
+6 10
+"level10_text"
+""
+1 230 150 E E E 1 E 1 E N {0,0,0} E N {255,255,255} E E
+ E E
+10 0 0 0 0 0
+E E E
+0
+1
+LANG:1 0 
+
+1
+"dashclr"N "_Transparent"
+E E 0 1 1 2 1 E 1 0 1 -135 -140 1 E 230 150 234 159
+6 11
+"level11_text"
+""
+1 230 150 E E E 1 E 1 E N {0,0,0} E N {255,255,255} E E
+ E E
+11 0 0 0 0 0
+E E E
+0
+1
+LANG:1 0 
+
+1
+"dashclr"N "_Transparent"
+E E 0 1 1 2 1 E 1 0 1 -130 -140 1 E 230 150 234 159
+6 12
+"level12_text"
+""
+1 230 150 E E E 1 E 1 E N {0,0,0} E N {255,255,255} E E
+ E E
+12 0 0 0 0 0
+E E E
+0
+1
+LANG:1 0 
+
+1
+"dashclr"N "_Transparent"
+E E 0 1 1 2 1 E 1 0 1 -125 -140 1 E 230 150 234 159
+6 13
+"level13_text"
+""
+1 230 150 E E E 1 E 1 E N {0,0,0} E N {255,255,255} E E
+ E E
+13 0 0 0 0 0
+E E E
+0
+1
+LANG:1 0 
+
+1
+"dashclr"N "_Transparent"
+E E 0 1 1 2 1 E 1 0 1 -120 -140 1 E 230 150 234 159
+6 14
+"level14_text"
+""
+1 230 150 E E E 1 E 1 E N {0,0,0} E N {255,255,255} E E
+ E E
+14 0 0 0 0 0
+E E E
+0
+1
+LANG:1 0 
+
+1
+"dashclr"N "_Transparent"
+E E 0 1 1 2 1 E 1 0 1 -115 -140 1 E 230 150 234 159
+6 15
+"level15_text"
+""
+1 230 150 E E E 1 E 1 E N {0,0,0} E N {255,255,255} E E
+ E E
+15 0 0 0 0 0
+E E E
+0
+1
+LANG:1 0 
+
+1
+"dashclr"N "_Transparent"
+E E 0 1 1 2 1 E 1 0 1 -110 -140 1 E 230 150 234 159
+0
+LAYER, 1 
+1
+LANG:1 0 
+0
+LAYER, 2 
+1
+LANG:1 0 
+0
+LAYER, 3 
+1
+LANG:1 0 
+0
+LAYER, 4 
+1
+LANG:1 0 
+0
+LAYER, 5 
+1
+LANG:1 0 
+0
+LAYER, 6 
+1
+LANG:1 0 
+0
+LAYER, 7 
+1
+LANG:1 0 
+0
+0