<body docProcLang="JavaLikeCalc.JavaScript">
<h1>Protocol of violations <?dp return tr("Protocol of violations"); ?></h1>
<TABLE border="1" cellpadding="2" cellspacing="0" width="100%" class="data">
  <TR><TH colspan="5" align="left">Violations at <?dp return tr("Violations at %1").replace("%1",SYS.strftime(bTime)+" — "+SYS.strftime(time));?></TH></TR>
  <TR><TH>Date</TH><TH>Time</TH><TH>Source</TH><TH>Violation</TH><TH>Value</TH>
   <?dp return "<TH>"+tr("Date")+"</TH><TH>"+tr("Time")+"</TH><TH>"+tr("Source")+"</TH><TH>"+tr("Violation")+"</TH><TH>"+tr("Value")+"</TH>"; ?>
  </TR>
  <TR docAMess="@@messCat@@" docRevers="1">
<?dp
	srcO = mCat.match("^al(.+):([^\\.]+)|^(.*):al");
	tVl = "";

	//From remote station
	if(srcO.length == 4)
		for(off2 = 0, isFirst = true; (tVl2=srcO[3].parse(0,":",off2)).length; tVl += (tVl.length?".":"")+tVl2, isFirst = false) {
			if(!isFirst)	continue;
			if(!sourceCache[tVl2].isEVal())	tVl2 = sourceCache[tVl2];
			else {
				req = SYS.XMLNode("get").setAttr("path","/Transport/%2fsub%2fehost").setAttr("upRiseSYS",1);
				SYS.cntrReq(req);
				for(iTr = 0; req.childSize() && iTr < req.childGet(0).childSize(); iTr++)
					if(req.childGet(0).childGet(iTr).text() == tVl2) {
						tVl2 = sourceCache[tVl2] = req.childGet(1).childGet(iTr).text();
						break;
					}
			}
		}

	return "<TD><center style='white-space: nowrap;'>"+SYS.strftime(mTime,"%d %m")+"</center></TD>"+
		"<TD><center style='white-space: nowrap;'>"+SYS.strftime(mTime,"%H:%M:%S")+"</center></TD>"+
		"<TD><center>"+Special.FLibSYS.strEnc2HTML((tVl.length?tVl+" > ":"") + mVal.parse(0,":"))+"</center></TD>"+
		"<TD>"+Special.FLibSYS.strEnc2HTML(mVal.parse(1,":"))+"</TD>"+
		"<TD>"+Special.FLibSYS.strEnc2HTML(mVal.parse(2,":"))+"</TD>";
?>
  </TR>
</TABLE>
</body>