{

      м       н    он     о     н
     лл     ол     л     о    ол       о                  ммммммммм
     оол    ллн  ооВн   олн   олн     он          ммммпппп         ппппммм
      ллл  ооВл м ллл   ллл   ллн     л      ммппп ммммм                  пплм
      ооВн ллп мммм ппм ллВ   лВл    Вн    мп   лллллллллм                   он
       ллл л млллллВм лооллн  ллл  ллл    он   олл мммм плн                   л
       оолоноллллллллнонлВлл ооВл лолн    л     плм лллл п                    он
        лВл лолп  пллл нллпп ппплн лВ    он         оллВн n f u s i o n . . .  л
        ооноллн    оВлно ммлллмм оолн     л         лВллл                      л
         лно лн    оллн лллпплллл лл      он      млллллллм                    л
         оо лолм  мллл о он  олВлнон       л                                  он
          п оллллллВлн  лллммлВлл п       лп " s i m p l y   t h e  b e s t " л
          мл плпллллп лм ппппппп м       лп       infusion external usered   он
         ллллмммм мммллпллл ллллллл    мп     мм     started on o2/3/98      л
        олллл  ллмммммммВмммллВллллн ппппппппп  пппмммм                  мммп
         ллл  олллллВллллллллВллллл                    пппппмммммммммпппп
          пплллплллллллммлллллллпп
                   мммммммм
  млллллллллллллллммммммммммлллллллллллллллм
 оллллллллллллмлллллм  ллллл   лллллллллллллн
 лллллллллллллплллллп  ллллл лллллллллллллллл
 ллллллллллл лмммммммл лллллллллллллллллллллл
 ллллллллллллолллллллн лллллл  л л лллллллллл
 лллллллллнол ллллллл n f u s i o nнолллллллл
 лллллллллл    ппппп   ллллл ллллл  ллллллллл

}
{::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Program userEdit;
{::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Uses Crt,Dos,skaShit,textUnit,genSubs,genTypes,dosMem,Control,configRt;
{::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
{$I .\ART\USEREDIT.ART}
{$I .\ART\FADEANSI.PAS}
{::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Type
 uSmallRec   = Record
               handle   : Mstr;
               acslevel : integer;
               end;
 uSmallArray = array[1..500] of uSmallRec;
 uInfoRec    = record
               totalUsers  : word;
               currentUser : word;
               lastUser    : word;
               lastPos     : 12..17;
               end;
{::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Const
 userFunc : array[1..2,1..19] of String = ((
 '  nick  :      :','  name..:......:','  pass  :......:','..phone.........',
 '..birth         ','  aphilz        ','..skillz........','  sop note      ',
 '..priv. note....','  acs level     ','..acs flags.....','  u/d level     ',
 '  u/d points....','  scrn lines    ','  total calls   ',': u/d k ratio   ',
 ': u/d f ratio...',': jah votes     ',': nah votes.....'),(
  {=======================================================================}
 '  nick          ','  name          ','  pass          ','  phone         ',
 '  birth         ','  aphilz        ','  skillz        ','  sop note      ',
 '  priv. note    ','  acs level     ','  acs flags     ','  u/d level     ',
 '  u/d points    ','  scrn lines    ','  total calls   ','  u/d k ratio   ',
 '  u/d f ratio   ','  jah votes     ','  nah votes     '));
  {=======================================================================}
 barFunc : array[1..7] of string = (
 '  validate  ','  blacklist  ','  default  ','  edit sig  ','  view .inf''s  ',
 '  insert  ','  quit  ');
  {=======================================================================}
 userXY : array[1..2,1..19] of byte = (
 (6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,28,28,28,28),
 (8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,19,20,21,22));
  {=======================================================================}
 barXY : array[1..7] of byte = (2,13,25,35,46,60,69);
  {=======================================================================}
{::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Var
   uSmall  : ^uSmallArray;
   uInfo   : uInfoRec;
   uData   : UserRec;
   curBar  : array[1..3] of word;
   Last    : array[1..3] of word;
   curHalf : 1..3;
{::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Procedure uInitMem;
begin
Dos_GetMem(uSmall,SizeOf(uSmall^) + 1);
end;
{::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Procedure uNewUsers;
begin
loadtextscreen('temp.$$$');
skawrite('|CR|08ў |07error - run USERINIT.EXE to make new users datafile ...|CR|CR');
halt(5);
end;
{::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Procedure uLoadUsers;
var uCount : 1..500;
        uF : file of userRec;
begin
readcfg(false);
if not exist(cfg.datadir+'USERS') then uNewUsers;
assign(uF,cfg.datadir+'USERS.');
reset(uF);
seek(uF,1);
 for uCount := 1 to fileSize(uF)-1 do begin
  read(uF,uData);
  uSmall^[uCount].handle   := uData.Handle;
  uSmall^[uCount].AcsLevel := uData.Level
 end;
close(uF);
uInfo.totalUsers := uCount;
end;
{::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Procedure uDrawScreens(scrn : byte);
begin

 if (scrn=1) then
   begin
    FadeDown;
    clrscr;
    SavePal;
    FadeWhite;
    move(fade,mem[$b800:0000],sizeof(fade));
    Unfade;
    delay(1000);
    FadeWhite;
    delay(300);
    Move(UserMain,mem[$b800:0000],sizeof(UserMain));
    UnFade;
   cursor_(false);
   end;

end;
{::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Procedure uDrawBars(bar : byte);
begin
 if (bar=1) then
   begin
   gotoxy(userXY[1,last[1]],UserXY[2,last[1]]);
   skawrite('|B0|07'+userFunc[1,last[1]]);
   gotoxy(userXY[1,curbar[1]],UserXY[2,curbar[1]]);
   skawrite('|B3|00'+userFunc[2,curbar[1]]);
   end else
 if (bar=2) then
   begin
   gotoxy(barXY[last[2]],25);
   skawrite('|B0|03'+barFunc[last[2]]);
   gotoxy(barXY[curbar[2]],25);
   skawrite('|B3|08'+barFunc[curBar[2]]);
   end;
end;
{::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Procedure uSelectUser;
var uCount : word;
begin
end;
{::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Procedure uSelectFunc;
var Done : boolean;
    key  : char;
begin
 repeat
 key := bioskey;
 case key of
 #27  : done := true;
 #9   : begin
        if (curHalf=1) then curHalf := 2 else curHalf := 1;
        end;
 #200 : begin
        if (curhalf = 1) then
           begin
           last[1] := CurBar[1];
           dec(CurBar[1]);
           if (last[1]<16) and (CurBar[1]<1) then CurBar[1] := 15 else
           if (last[1]>=16) and (curBar[1]=15) then curBar[1] := 19;
           uDrawBars(1);
           end else
        if (curhalf = 2) then
           begin
           last[2] := curBar[2];
           dec(CurBar[2]);
           if (CurBar[2]<1) then CurBar[2] := 7;
           uDrawBars(2);
           end;
          end;
 #208 : begin
         if (curHalf = 1) then
           begin
           last[1] := CurBar[1];
           inc(curBar[1]);
           if (last[1]<16)  and (curBar[1]>15) then curBar[1] := 1 else
           if (last[1]>=16) and (curBar[1]>19) then curBar[1] := 16;
           uDrawBars(1);
           end else
         if (curHalf = 2) then
           begin
           last[2] := curBar[2];
            inc(curBar[2]);
            if (curBar[2] > 7) then curBar[2] := 1;
            uDrawBars(2);
           end;
        end;
 #205 : begin
         if (curHalf=1) then
           begin
           Last[1] := curBar[1];
           if (curBar[1]=12) then curBar[1] := 16;
           if (curBar[1]=13) then curBar[1] := 17;
           if (curBar[1]=14) then curBar[1] := 18;
           if (curBar[1]=15) then curBar[1] := 19;
           uDrawBars(1);
           end else
         if (curHalf = 2) then
           begin
           last[2] := curBar[2];
            inc(curBar[2]);
            if (curBar[2] > 7) then curBar[2] := 1;
           uDrawBars(2);
           end;
        end;
 #203 : begin
         if (curHalf=1) then
           begin
           last[1] := curBar[1];
           if (curBar[1]=16) then curBar[1] := 12;
           if (curBar[1]=17) then curBar[1] := 13;
           if (curBar[1]=18) then curBar[1] := 14;
           if (curBar[1]=19) then curBar[1] := 15;
           uDrawBars(1);
           end else
           if (curhalf = 2) then
           begin
           last[2] := curBar[2];
           dec(CurBar[2]);
           if (CurBar[2]<1) then CurBar[2] := 7;
           uDrawBars(2);
           end;
        end;
 end;
 until (done=true);
end;
{::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Procedure uMainProc;
begin
uInfo.currentUser := 1;
uInfo.lastUser    := 1;
uSelectUser;
uSelectFunc;
end;
{::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Procedure uInitProc;
begin
uInitMem;
SaveTextScreen('temp.$$$');
uLoadUsers;
uDrawScreens(1);
CurBar[1] := 1;CurBar[2] := 1;
CurHalf := 1;Last[1] := 1;Last[2] := 1;
uDrawBars(1);uDrawBars(2);
end;
{::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Procedure uTerminate;
begin
cursor_(true);
loadtextscreen('temp.$$$');
skawrite('|B0|CR|07-|08ФФФФФФФФФФФФ|07(|15(|03infusion bbs knocka editor|15)|07)|08ФФФФФФФФФФФФ-|07-|CR');
skawrite('|07-(c)skaboy101 & _esc_ 1998 .. (life has never been *this* good...)|CR');
skawrite('|08user #1 - '+uSmall^[1].handle);
end;
{::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
begin
cursor_(false);
uInitProc;
uMainProc;
uTerminate;
end.