anchor.diff:  
   ////////////////////////////////////////////////////////////////////////////////
   
  +procedure TBlkRozp.Mount();
  +begin
  + Self.RozpStav.finish := Now + EncodeTime(0, 0, Self._MOUNT_TO_ACTIVE_TIME_SEC, 0);
  + Self.status := TRozpStatus.mounting;
  +end;
  +
  +procedure TBlkRozp.Activate();
  +begin
  + Self.RozpStav.finish := Now + EncodeTime(0, 0, Self._ACTIVE_TO_DISABLE_TIME_SEC, 0);
  + Self.status := TRozpStatus.active;
  +end;
  +
  +procedure TBlkRozp.Prolong();
  +begin
  + Self.RozpStav.finish := Now + EncodeTime(0, 0, Self._ACTIVE_TO_DISABLE_TIME_SEC, 0);
  +end;
  +
  +////////////////////////////////////////////////////////////////////////////////
  +
  +procedure TBlkRozp.GetPtData(json:TJsonObject; includeState:boolean);
  +begin
  + inherited;
  + TBlk.RCStoJSON(Self.RozpSettings.RCSAddrs[0], json['rcs']);
  + if (includeState) then
  +   Self.GetPtState(json['blokStav']);
  +end;
  +
  +procedure TBlkRozp.GetPtState(json:TJsonObject);
  +begin
  + case (Self.status) of
  +  TRozpStatus.disabled: json['stav'] := 'vypnuto';
  +  TRozpStatus.not_selected: json['stav'] := 'not_selected';
  +  TRozpStatus.mounting: json['stav'] := 'mounting';
  +  TRozpStatus.active: json['stav'] := 'active';
  + end;
  +end;
  +
  +procedure TBlkRozp.PostPtState(reqJson:TJsonObject; respJson:TJsonObject);
  +begin
  + if (reqJson.Contains('stav')) then
  +  begin
  +   if (Self.status = TRozpStatus.disabled) then
  +    begin
  +     PTUtils.PtErrorToJson(respJson.A['errors'].AddObject, '403', 'Forbidden', 'Nelze nastavit neaktivni rozpojovac');
  +     inherited;
  +     Exit();
  +    end;
  +
  +   if (reqJson.S['stav'] = 'mounting') then
  +     Self.Mount()
  +   else if (reqJson.S['stav'] = 'active') then
  +     Self.Activate()
  +   else if (reqJson.S['stav'] = 'not_selected') then
  +     Self.status := TRozpStatus.not_selected;
  +  end;
  +
  + inherited;
  +end;
  +
  +////////////////////////////////////////////////////////////////////////////////
  +
   end.//unit
  
positive.code: 
     ENTER: begin
       case (Self.status) of
         TRozpStatus.not_selected : begin
           // vybrat rozpojovac
           Self.RozpStav.finish := Now + EncodeTime(0, 0, Self._MOUNT_TO_ACTIVE_TIME_SEC, 0);
           Self.status := TRozpStatus.mounting;
         end;
         TRozpStatus.mounting     : begin
           // zapnout rozpojovac
           Self.RozpStav.finish := Now + EncodeTime(0, 0, Self._ACTIVE_TO_DISABLE_TIME_SEC, 0);
           Self.status := TRozpStatus.active;
         end;
         TRozpStatus.active       : begin
           // prodlouzit dobu rozpojovace
           Self.RozpStav.finish := Now + EncodeTime(0, 0, Self._ACTIVE_TO_DISABLE_TIME_SEC, 0);
         end;
       end;//case
      end;//case TPanelButton.left
  
     ESCAPE: begin
  
negative.code:    procedure SetStatus(status:TRozpStatus);
     procedure UpdateOutput();
  
     procedure Mount();
     procedure Activate();
     procedure Prolong();
  
    public
      constructor Create(index:Integer);
      destructor Destroy(); override;
  