sub ReadBaseFile{
  open(READTXTFILE,"<$basehead$_[0]");
  if ($osname eq "UNIX") {
    flock(READTXTFILE,$_[1]) if ($_[1]); 
  }
  @readtxtfile=<READTXTFILE>;
  if ($osname eq "UNIX") {
    flock(READTXTFILE,8) if ($_[1]);
  }
  close(READTXTFILE);
  return @readtxtfile;
}

sub GetFileName {
  @baserec=ReadBaseFile("!base.cht",2);
  foreach (@baserec) {
   ($bsnn,$bsfile)=split(/\|/,$_);
     if ($bsnn eq $_[0]) {
        return $bsfile;
     }
  }
  return "NOFILE";
}

sub ReadInfoForReg {
   $fname=&GetFileName($_[0]);
   $numberfile=$fname;
   if ($fname ne "NOFILE") {
      $e="e";
      $fname="$fname$e.rg";
      open(BASEF,"<$basehead$fname");
      @lines=<BASEF>;
      close(BASEF);
      ($bsfn,$bssn,$bsnik,$bspol,$bsmail,$bshp,$bsicq,$bscity,$bspr,$bspass1,$bspass2,$bsip,$bsdate,$bstime,$bsicons,$bshide,$bscolor,$bslast)=split(/\|/,$lines[0]);
   }
   return $fname;
}

sub write_to_base {
      open(BASEF,">$basehead$_[0]");
      print BASEF "$bsfn\|$bssn\|$bsnik\|$bspol\|$bsmail\|$bshp\|$bsicq\|$bscity\|$bspr\|$bspass1\|$bspass2\|$bsip\|$bsdate\|$bstime\|$bsicons\|$bshide\|$bscolor|emp\|emp\|emp\|emp\|emp\|\n";
      close(BASEF);
}

sub write_stat{
   $fname=&GetFileName($_[0]);
   if ($fname ne "NOFILE") {
      $e="e";
      $fname="$fname$e.rg";
      &write_to_base($fname);
   }
   return $fname;
}

sub new_reg{
    $bsnik=&get_var('NIK','\n|"|<|>|\&|;| |\?|Ўь');
    &checkempty($bsnik,"Не укзан ник.");
    $bsnik=~ tr/a-z/A-Z/;$bsnik=~ tr/а-я/А-Я/;
    $bsnik=substr($bsnik,0,15);
    $temp1=&GetFileName($bsnik);
    if ($temp1 ne "NOFILE") {
         &error("С этим ником уже зарегистрировались.");
         exit;
    }
    $bsfn=&get_var('FN','\n|"|<|>|\&|;| |\?|Ўь');
    &checkempty($bsfn,"Не укзано имя.");
    $bssn=&get_var('SN','\n|"|<|>|\&|;| |\?|Ўь');
    $bspol=&get_var('POL','\n|"|<|>|\&|;| |\?|Ўь');
    $bsmale=&get_var('EMAIL','\n|"|<|>|\&|;| |\?|Ўь');
    $bshp=&get_var('HP','\n|"|<|>|\&|;| |\?|Ўь');
    $bsicq=&get_var('ICQ','\n|"|<|>|\&|;| |\?|Ўь');
    $bscity=&get_var('CITY','\n|"|<|>|\&|;| |\?|Ўь');
    &checkempty($bscity,"Не укзан город.");
    $bspass1=&get_var('PASS','\n|"|<|>|\&|;| |\?|Ўь');
    $bscolor=&get_var('COLOR','\n|"|<|>|\&|;| |\?|Ўь');
    &checkempty($bspass1,"Введите другой пароль.");
    $bspass2=&get_var('CHKPASS','\n|"|<|>|\&|;| |\?|Ўь');
    $bsicon="emp";
    $temp8=&get_var('hideinf','\n|"|<|>|\&|;| |\?|Ўь');;
    &error("Пароли не совпадают !") if ($bspass1 ne $bspass2);
    $bshide="open";
    $bshide="close" if ($temp8 eq "ON");
    $bspr="R";$bstime=$timen;$bsdate=$daten;$bsip=$userip;

    &ReadRecFile;
    $temp1=sprintf("%07d",$nextrec);
    $e="e";

    open(DATAF,">>$basehead\!base.cht");
    print DATAF "$bsnik\|$temp1\|\n";
    close(DATAF);

    &write_to_base("$temp1$e.rg");

    &WriteRecFile;
    print "\n";
print <<FORM;
<html><head><title>$roomtitle регистрация</title>
</head><body bgcolor=$messageback $sdtbgimg text=$messageword vlink=#FFFF00 link=#FFFF00 alink=#FF0000>
<center><hr><h2>Поздравляю !</h2><h3>Вы успешно зарегистрированы.<br></h3>
</center>
</body></html>
FORM
  exit;
}

sub ReadRecFile{
   @data=&ReadBaseFile("!rec.cht",2);
   $nextrec=$data[0];$nextrec=~ s/\n//g;
}

sub WriteRecFile{
   $nextrec++;
   open(DATAF,">$basehead\!rec.cht");
   print DATAF "$nextrec\n";
   close(DATAF);
}

sub MakeReg{
      $fname=&ReadInfoForReg($_[0]);
      if ($fname ne "NOFILE"){
           $bspr="R";
           &write_to_base($fname);
      }
}

sub MakeKiller{
      $fname=&ReadInfoForReg($_[0]);
      if ($fname ne "NOFILE"){
           $bspr="K";
           &write_to_base($fname);
      }
}

sub Return_Reg_Info{
      $fname=&ReadInfoForReg($_[0]);
      if ($fname eq "NOFILE"){
          &error("Информации на данного юзера нет !");
          exit 0;
      }

      if ($bshide eq "close"){
          &error("Информации на данного человека скрыта!");
          exit 0;
      }

$temp1="Женский";
$temp1="Мужской" if ($bspol eq "М");
$body = "<body $stdbgimg bgcolor=$messageback text=$messageword vlink=#00FFFF link=#00FFFF alink=#00FFFF>";
print <<FORM;

<html>
<head type="refresh">
<title>$roomtitle - Информация</title>
<meta name="Author" content="EastWood">
<link rel="stylesheet" TYPE="text/css" HREF="$cssurl">
</head>
$body
<p align="center"><font color="#FF0000"><strong>Информация о зарегистривонном
 пользователе.</strong></font></p>
<table border=0 cellpadding=0 cellspacing=0 width=100%>
     <tr><td width=50%><div align=right><p><br>
      Ник:&nbsp;&nbsp;&nbsp;&nbsp; </td>
      <td width=50%><br>$bsnik</td></tr>
     <tr><td width=50%><div align=right><p><br>
      Имя:&nbsp;&nbsp;&nbsp;&nbsp; </td>
      <td width="50%"><br>$bsfn</td>
    </tr>
    <tr>
      <td width=50%><div align=right><p><br>
      Фамилия:&nbsp;&nbsp;&nbsp;&nbsp; </td>
      <td width=50%><br>$bssn</td>
    </tr>
    <tr>
      <td width=50%><div align=right><p><br>
      Пол:&nbsp;&nbsp;&nbsp;&nbsp; </td>
      <td width=50%><br>$temp1</td>
    </tr>
    <tr>
      <td width=50%><div align=right><p><br>
      E-Mail:&nbsp;&nbsp;&nbsp;&nbsp; </td>
      <td width=50%><br><a href="mailto:$bsmail">$bsmail</a></td>
    </tr>
    <tr>
      <td width=50%><div align=right><p><br>
      HomePage:&nbsp;&nbsp;&nbsp;&nbsp; </td>
      <td width=50%><br><a href="http://$bshp">http://$bshp</a></td>
    </tr>
    <tr>
      <td width=50%><div align=right><p><br>
      ICQ:&nbsp;&nbsp;&nbsp;&nbsp; </td>
      <td width=50%><br>$bsicq</td>
    </tr>
    <tr>
      <td width=50%><div align=right><p><br>
      Город:&nbsp;&nbsp;&nbsp;&nbsp; </td>
      <td width=50%><br>$bscity</td>
    </tr>
    <tr>
      <td width=50%><div align=right><p><br>
      Последнее посещение:&nbsp;&nbsp;&nbsp;&nbsp; </td>
      <td width=50%><br>$bsdate $bstime</td>
    </tr>
 </table>
</body>
</html>
FORM

}

sub DeleteUser{
  $temp="!base.cht";
  @baserec=ReadBaseFile($temp,2);
  open(BS,">$basehead$temp");
  foreach (@baserec) {
   ($bsnn,$bsfile)=split(/\|/,$_);
     if ($bsnn ne $_[0]) {
       print BS "$_";
     } else {
         $e="e.rg";
         unlink("$basehead$bsfile$e");
       }
  }
  close(BS);
}


sub Return_All_Users{
  @baserec=ReadBaseFile("!base.cht",2);
  @baserec=sort @baserec;
  print "\n";
  print "<html><head><title>$roomtitle - All Users.</title>\n";
  print "<link rel='stylesheet' TYPE='text/css' HREF='$cssurl'>\n";
  print "</head><body bgcolor=$messageback text=#FFFFDD vlink=#FFFF00 link=#FFFF00 alink=#FF0000>\n";
  print "<center>$adv<h2>Чат!</h2><hr><br>Зарегистрированные пользователи.<br><br>\n";
print <<HTML;
<script language="JavaScript">
<!--
fucntion SendMail(name){
   forn="&for="+name;
   sndurl="$cgiurl?cf=sndmail$userinfo"+forn;
   document.location=sndurl;
//   window.open(sndurl,"SNDMAIL","toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=1");
}
//-->
</script>
HTML
  $count=0;
  foreach (@baserec) {
   ($bsnn,$bsfile)=split(/\|/,$_);
   $temp=$bsnn;$count++;
   print "<a href=\"$cgiurl?cf=infoabout\&usern=$temp\">$bsnn</a>";
##   print "   <small><small>(<a href=javascript:SendMail('$temp')>оствить сообщение</a>)</small></small>";
   print "<br>";
  }
  print "<br>Всего: $count";
  print "</center></body>\n";
  print "</html>\n";
}

sub Get_Reg_Form {
@addwordcolor=&readtxtfile($addwordcolorfile);

$txthide="";
if ($_[2] eq "1"){
  if ($bshide eq "close"){$txthide="checked";}
}
print <<HTML;
<h3 align=center><font color=#FFFF00><strong>$_[0]</strong></font></h3>
<form method=POST action=$cgiurl?cf=$_[1]>
  <table border=0 cellpadding=0 cellspacing=0 width=100%>
    <tr>
      <td width=50%><div align=right><p><br>
      Ник:&nbsp;&nbsp;&nbsp;&nbsp; </td>
      <td width=50%><br>
HTML
if ($_[2] eq "0"){
  print "<input type=text name=NIK size=13><font color=#FF0000>*</font></td>";
}
if ($_[2] eq "1"){
  print "$bsnik<input type=hidden name=NIK value=$bsnik></td>";
}
print "</tr>";
print <<HTML;
    <tr>
      <td width=50%><div align=right><p><br>
      Имя:&nbsp;&nbsp;&nbsp;&nbsp; </td>
      <td width=50%><br>
      <input type=text name=FN size=20 value=$bsfn><font color=#FF0000>*</font></td>
    </tr>
    <tr>
      <td width=50%><div align=right><p><br>
      Фамилия:&nbsp;&nbsp;&nbsp;&nbsp; </td>
      <td width=50%><br>
      <input type=text name=SN size=20 value=$bssn></td>
    </tr>
    <tr>
      <td width=50%><div align=right><p><br>
      Пол:&nbsp;&nbsp;&nbsp;&nbsp; </td>
      <td width=50%><br>
HTML
if ($_[2] eq "0"){
print <<HTML;
      <select name=POL size=1>
        <option value=Ж>Женский</option>
        <option selected value=М>Мужской</option>
      </select></td>
    </tr>
HTML
}
if ($_[2] eq "1"){
$sel1="";$sel2="";
if ($bspol eq "М") {$sel2="selected"}
if ($bspol eq "Ж") {$sel1="selected"}
print <<HTML;
      <select name=POL size=1>
        <option $sel1 value=Ж>Женский</option>
        <option $sel2 value=М>Мужской</option>
      </select></td>
    </tr>
HTML
}
print <<HTML;
    <tr>
      <td width=50%><div align=right><p><br>
      E-mail:&nbsp;&nbsp;&nbsp;&nbsp; </td>
      <td width=50%><br>
      <input type=text name=EMAIL size=21 value=$bsmail></td>
    </tr>
    <tr>
      <td width=50%><div align=right><p><br>
      Homepage http://</td>
      <td width=11%><br>
      <input type=text name=HP size=21 value=$bshp></td>
    </tr>
    <tr>
      <td width=50%><div align=right><p><br>
      Номер ICQ:&nbsp;&nbsp;&nbsp;&nbsp; </td>
      <td width=50%><br>
      <input type=text name=ICQ size=12 value=$bsicq></td>
    </tr>
    <tr>
      <td width=50%><div align=right><p><br>
      Ваш город:&nbsp;&nbsp;&nbsp;&nbsp; </td>
      <td width=50%><br>
      <input type=text name=CITY size=14 value=$bscity><font color=#FF0000>*</font></td>
    </tr>
    <tr>
      <td width=50%><div align=right><p><br>
      Цвет:&nbsp;&nbsp;&nbsp;&nbsp; </td>
      <td width=50%><br>
HTML
srand;
$ram=int(rand($#addwordcolor+1));
local($temp)=0;
$temp2=" selected";
$temp2="" if ($_[2] eq "0");
print "<select name='COLOR'>\n";
foreach (@addwordcolor) {
   if ($_[2] eq "0"){
      $_ =~ s/>/ selected>/g if ($temp eq $ram);
   }
   if ($_[2] eq "1"){
      if ($_ =~/$bscolor/){
         $_ =~ s/>/ selected>/g;
         $temp2="";
      }
   }
   print "$_";
   $temp++;
}
print "<option value=\"000000\"$temp2>Случайный</select>\n";
print <<HTML;
    </td>
    </tr>
    <tr>
      <td width=100% colspan=2><div align=center><center><p><br>
      <input type=checkbox $txthide name=hideinf value=ON> скрыть информацию от
      других пользователей.</p>
HTML
if ($_[2] eq "0"){
print <<HTML;
      </center></div><div align=center><center><p><font color=#00FFFF><strong>Пароли
      должны совпадать и содержать не менее 3-ёх
      символов<br>
      Не используйте прозрачные символы такие как +,= и
      др.</strong></font></td>
    </tr>
    <tr align=center>
      <td width=50%><div align=right><p><br>
      Пароль:&nbsp;&nbsp;&nbsp;&nbsp; </td>
      <td width=50%><div align=left><p><br>
      <input type=password name=PASS size=14></td>
    </tr>
    <tr align=center>
      <td width=50%><div align=right><p><br>
      Подтверждение пароля:&nbsp;&nbsp;&nbsp;&nbsp; </td>
      <td width=50%><div align=left><p><br>
      <input type=password name=CHKPASS size=14></td>
    </tr>
HTML
   $btnval="Зарегистрироваться";
}
if ($_[2] eq "1"){
   $btnval="Изменить";
}
print <<HTML;
  </table>
  <strong><strong><div align=center><center><p><font color=#FF0000>*</font><font
  color=#00FFFF> - пункты для обязательного заполнения.</font></p>
  </center></div><div align=center><center><p><input type=reset value=Очистить
  name=B2></p>
  </center></div><div align=center><center><p><input type=submit
  value=$btnval name=B1></p>
  </center></div>
</form>
</strong></strong>
HTML
}

sub Registration{
$bsfn="";$bssn="";$bsnik="";$bspol="";$bsmail="";$bshp="";$bsicq="";
$bscity="";$bspr="";$bspass="";$bspass2="";$bsip="";$bsdate="";
$bstime="";$bsicons="";$bshide="";$bslast="";
$bsnik="";$bscolor="";
print <<FORM;

<html>
<head type=refresh>
<meta name=Author content=EastWood>
<META HTTP-EQUIV=Pragma CONTENT=no-cache>
<META HTTP-EQUIV=Cache-Control CONTENT=no-cache>
<link rel=stylesheet TYPE=text/css HREF=$cssurl>
<title>Шадринск - Регистрация</title>
</head>
<body bgcolor=#000000 text=#FFFFDD onLoad vlink=#FFFF00 link=#FFFF00
alink=#FF0000>
<center>$adv</center>
FORM
&Get_Reg_Form("Регистрация в чате","newreg","0");
print "</body></html>";
}

sub Info_For_Change{
$bsfn="";$bssn="";$bsnik="";$bspol="";$bsmail="";$bshp="";$bsicq="";
$bscity="";$bspr="";$bspass="";$bspass2="";$bsip="";$bsdate="";
$bstime="";$bsicons="";$bshide="";$bslast="";
$bsnik="";$bscolor="";

$user = $username;
$user=~ tr/a-z/A-Z/;$user=~ tr/а-я/А-Я/;
$fname=&ReadInfoForReg($user);
if ($fname eq "NOFILE"){
    &error("Информации на данного юзера нет !");
    exit 0;
}



print <<FORM;

<html>
<head type=refresh>
<meta name=Author content=EastWood>
<META HTTP-EQUIV=Pragma CONTENT=no-cache>
<META HTTP-EQUIV=Cache-Control CONTENT=no-cache>
<link rel=stylesheet TYPE=text/css HREF=$cssurl>
<title>Шадринск - Регистрация - Ваша инфа</title>
</head>
<body bgcolor=#000000 text=#FFFFDD onLoad vlink=#FFFF00 link=#FFFF00
alink=#FF0000>
<center>$adv</center>
FORM
&Get_Reg_Form("Ваша инфа","change$userinfo","1");
print "</body></html>";
}

sub change_reg{
    $bsnik=&get_var('NIK','\n|"|<|>|\&|;| |\?|Ўь');
    &checkempty($bsnik,"Не укзан ник.");
    $bsnik=~ tr/a-z/A-Z/;$bsnik=~ tr/а-я/А-Я/;
    $user = $username;
    $user=~ tr/a-z/A-Z/;$user=~ tr/а-я/А-Я/;
    if ($user ne $bsnik) {&error("Ник уже нельзя изменить.");}
    $fname=&ReadInfoForReg($user);
    if ($fname eq "NOFILE") {
         &error("Вы не зарегистрированы1!");
         exit;
    }
    $bsfn=&get_var('FN','\n|"|<|>|\&|;| |\?|Ўь');
    &checkempty($bsfn,"Не укзано имя.");
    $bssn=&get_var('SN','\n|"|<|>|\&|;| |\?|Ўь');
    $bspol=&get_var('POL','\n|"|<|>|\&|;| |\?|Ўь');
    $bsmail=&get_var('EMAIL','\n|"|<|>|\&|;| |\?|Ўь');
    $bshp=&get_var('HP','\n|"|<|>|\&|;| |\?|Ўь');
    $bsicq=&get_var('ICQ','\n|"|<|>|\&|;| |\?|Ўь');
    $bscity=&get_var('CITY','\n|"|<|>|\&|;| |\?|Ўь');
    $bscolor=&get_var('COLOR','\n|"|<|>|\&|;| |\?|Ўь');
    &checkempty($bscity,"Не укзан город.");
    $temp8=&get_var('hideinf','\n|"|<|>|\&|;| |\?|Ўь');;
    $bshide="open";
    $bshide="close" if ($temp8 eq "ON");
#    $bstime=$timen;$bsdate=$daten;$bsip=$userip;
#    $e="e";
#    $fname="$fname$e.rg";
    &write_to_base($fname);
print <<FORM;
<html><head><title>$roomtitle регистрация</title>
</head><body bgcolor=$messageback $sdtbgimg text=$messageword vlink=#FFFF00 link=#FFFF00 alink=#FF0000>
<center><hr><h2>Поздравляю !</h2><h3>Информация успешно изменена.<br></h3>
</center>
</body></html>
FORM
  exit;
}

sub get_sndmail_html{
  print "<html><head><title>$roomtitle - Обмен сообщениями.</title>\n";
  print "<link rel='stylesheet' TYPE='text/css' HREF='$cssurl'>\n";
  print "</head><body $stdbgimg bgcolor=$messageback text=#FFFFDD vlink=#FFFF00 link=#FFFF00 alink=#FF0000>\n";
  print "<center>$adv</center>\n";
  $for="";$val="";
  $for=&get_var('for','\n|"|<|>|\&|;| |\?|Ўь');
  $val="value=$for" if ($for ne "");
print <<FORM;
<form method="POST" action="$cgiurl?cf=set">
<input type=hidden name=username value=$username>
<input type=hidden name=key value=$KEY>
<input type=hidden name=idt value=$IDT>
  <div align="center"><center><table border="0" cellpadding="2" width="90%">
    <tr>
      <td width="50%"><div align="right"><p>Кому: </td>
      <td width="50%"><input type="text" name="FOR" $val size="23"></td>
    </tr>
    <tr>
      <td width="50%" valign="top"><div align="right"><p>Сообщение:</td>
      <td width="50%"><textarea rows="6" name="MSG" cols="22"></textarea></td>
    </tr>
    <tr>
      <td width="100%" valign="top" colspan="2"><div align="center"><center><p><input
      type="submit" value="Оставить" name="SBtn"></td>
    </tr>
  </table>
</center></div><center>[<a href=javascript:AllUser("true")>Список всех пользователей</a>]</center>
</form>
<script language="JavaScript">
<!--
function AllUser(t){
        aurl="$cgiurl?cf=alluser$userinfo";
        window.open(aurl,"AUSER","toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=1");
}
//-->
</script>
FORM
  print "</body></html>";
}

sub set_mail{
## MAIL SENDER
$foru=&get_var('FOR','\n|"|<|>|\&|;| |\?|Ўь');
&checkempty($foru,"Не укзано кому.");
$foru=~ tr/a-z/A-Z/;$foru=~ tr/а-я/А-Я/;
$fname=&GetFileName($foru);
if ($fname eq "NOFILE") {
    &error("Такого пользователя не существует.");
    exit;
}
$msg=&get_var('MSG','\n|Ўь');
$e=".msg";
$temp1="z$fname$e";
if (-e "$filehead$temp1") {
   open(EMSG,">>$filehead$temp1");
} else {
   open(EMSG,">$filehead$temp1");
}
print EMSG "$username\|$msg\|$daten\|$timen\|$userip\|end\|\n";
close(EMSG);
&default_html("Сообщение оставлено.");
}

sub get_mail{
$foru=$username;
$foru=~ tr/a-z/A-Z/;$foru=~ tr/а-я/А-Я/;
$fname=&GetFileName($foru);
if ($fname eq "NOFILE") {
    &error("Такого пользователя не существует.");
    exit;
}
$e=".msg";
$temp1="z$fname$e";
if (-e "$filehead$temp1") {
    $res="true";
} else {
    &default_html("Для вас сообщений нет.");
    exit;
}
@emsg=&readtxtfile($temp1);
print <<HTML;
<html><head><title>$roomtitle - служба офлайн переписки.</title>
<link rel='stylesheet' TYPE='text/css' HREF='$cssurl'>
</head><body bgcolor=$onlineback text=$onlineword vlink=#00FFFF link=#00FFFF alink=#00FFFF>
<center>$adv</center>
<hr>
<center><h3>Сообщения оставленные Вам в службе офлайн переписки.</h3></center>
<hr><br>
HTML
$num="1";
foreach (@emsg) {
 ($euser,$emsg,$edate,$etime,$eip,$eend)=split(/\|/,$_);
 print "<p align=left><h5>Сообщение - $num</h5><br>$emsg</p>";
 print "<p align=right><a href=$cgiurl?cf=sndmail\&$userinfo\&for=$euser target=_blank>$euser</a>";
 print "[$eip]" if ($userlevel>2);
 print "<br>$edate  $etime</p>";
 print "<hr width=\"50\%\">";
 $num++;
}
print "</body></html>";
unlink("$filehead$temp1");
}
