#!/usr/bin/perl
use lib '.';

# Блоги

use CGI; 
use DBI::DBD;
#use utf8;
#use Encode;

require "proc.pm";
#require "chkcook.pm";
#require "anket2.pm";

$in = new CGI; 

require "comm.pm";

my %prioritet=('ch'=>["ru","en","eo"],
              'ru'=>["ch","en","eo"],
              'en'=>["eo","ch","ru"],
              'eo'=>["en","ch","ru"]);
my $image_url='../htdocs/images/blogs';
my $redactor_mail='np@chuvash.org';
$mail="/usr/sbin/sendmail";

my $a=$in->param("a");
my $vok;

my $host=$ENV{'HTTP_HOST'};
if ($host=~/ru\.chuvash\./) {
  require "lang/russian.pm";
  }
elsif ($host=~/en\.chuvash\./) {
  require "lang/english.pm";
  }
elsif ($host=~/eo\.chuvash\./) {
  require "lang/esperanto.pm";
  }
else {
  require "lang/chuvash.pm";
  }
$prf="ch" if $prf eq "";

my @emot=split(/,/,$lng{"Nastroenie_Types"});

&db_con;

if ($ENV{'REQUEST_METHOD'} eq 'POST') { #Здесь блокировка 
  &test_ip_ban($rem_addr);
  }

$cookie = $ENV{'HTTP_COOKIE'};
@cook=split(/\;/,$cookie);
foreach (@cook) {
  my $gm=(split(/\=/,$_))[0];
  $gm=~s/^\s+//g;
  if ($gm eq "User") {
    $user_c=(split(/\=/,$_))[1];} 
  elsif ($gm eq "Sas") {
    $sas_c=(split(/\=/,$_))[1];} 
  elsif ($gm eq "Saytsa") {
    $saytsa=(split(/\=/,$_))[1];} 
  }

$ck_=$dbh->quote($user_c);

if ($user_c ne '') {
  $qu=qq~SELECT l.name,group_,email,id FROM all_login l,all_users u WHERE l.name=u.name and code=$ck_~;
  my $myd= $dbh->prepare($qu);
  ($myd->execute) or &error("$DBI::errstr $qu");
  ($user,$group,$uemail,$user_id)=$myd->fetchrow_array;
  }

$group=0 if $group eq "";


$shead->{"Serach_CGI"}='blog';


#$n=7;

if ($a eq "") {
  &viewblog;
  }
elsif ($a eq "main") {
  &main;
  }
elsif ($a eq "samha") {
  &samha;
  }
elsif ($a eq "sr") {
  &search;
  }
elsif ($a eq "comm") { #Комментарии/полный просмотр записи
  &comm;
  }
elsif ($a eq "a" || $a eq "add") { #Добавить
  &addblog;
  }
elsif ($a eq "addcomms") { #Добавить комментарий
  &addcomms('all_blogs');
  }
elsif ($a eq "as") { #Добавить/запись
  &addblogs;
  }
elsif ($a eq "frends") { #записи друзей
  &frends;
  }
elsif ($a eq "up") { # мала хапартасси
  &up;
  }
elsif ($a eq "upla") { # мала хапартасси
  &upla;
  }
elsif ($a eq "e") { # редактирование
  &eblog;
  }
elsif ($a eq "es") { # Запись редактирования
  &eblogs;
  }
elsif ($a eq "d") { # Удаление записи
  &delblog;
  }
elsif ($a eq "commdelq") { # Шухăша хуратасси
  &commdelq;
  }
elsif ($a eq "commdel") { # �_�_а�>���_и�� запи�_и
  $type=1;
  $jump='/blogs/comments/__ID__.html';
  &commdel;
  }
elsif ($a eq "commed") { # �_�_а�>���_и�� запи�_и
  $type=1;
  $jump='/blogs/comments/__ID__.html';
  &commed;
  }
elsif ($a eq "commeds") { # �_�_а�>���_и�� запи�_и
  $type=1;
  $jump='/blogs/comments/__ID__.html';
  &commeds;
  }
elsif ($a eq "art_adds") { # Шухăша хуратасси
  &art_adds;
  }

else {
  $vok=1;
  print "Content-Type:text/html\n\n";
  $act="Неизвестная операция";
  &headprint;
  print qq~<h2>Данная функция еще не реализована. Заходите попозже - она вскоре появится!</h2>~;
  }

if ($vok==1) {
  &bottomprint($shead);
  }

##################################################################################

sub main { # - Кун кĕнекисенчи тĕп страница

use URI::Escape;

$vok=1;
&headprint($lng{"All_Blog_Notes"});
my $UTIME=60449600;
my $UCOMM=2592000;


# -- Ci numay sirakansen spisokna tavassi

  $qu=qq~SELECT u.id,u.name,count(b.user_id) cnt,p.avatar,u.rname,r.rname FROM all_blogs b 
       LEFT JOIN all_users u ON b.user_id=u.id 
       LEFT JOIN all_par p ON b.user_id=p.user_id
       LEFT JOIN all_users_rname r ON u.id=r.user_id

       WHERE hupla!=1 AND UNIX_TIMESTAMP(now())-UNIX_TIMESTAMP(b.added)<$UTIME AND b.user_id!=0
       GROUP BY b.user_id ORDER BY cnt desc LIMIT 0,9~;
  $myd=$dbh->prepare($qu) or &error("$DBI::errstr $qu");
  ($myd->execute) or &error("$DBI::errstr $qu");
  $list=$myd->fetchall_arrayref;

  my $active_user_list;
  foreach (@$list) {
    my $bloglink=@$_[1];
    $bloglink=~s/(.)/unpack("H2",$1)/eg;

    my $avimg=qq~@$_[0].@$_[3]~;
    $avimg="0.gif" if @$_[3] eq "";
    
    my $user_nm_=@$_[1];
    $user_nm_=@$_[4] if @$_[4] ne "";
    $user_nm_=@$_[5] if @$_[5] ne "";

    $active_user_list.=qq~<div style='margin-bottom:5px;line-height: 11pt;' ><a href='/cgi-bin/user.cgi?a=vv&anketa=@$_[1]'><img src='/images/avatar/32/$avimg' style='padding-right: 5px;float:left;width:32px;height:32px;' 
      border='0'><b style='font-weight: normal;text-shadow: 0px 0px 1px rgb(77, 131, 201);'>$user_nm_</b></a><br><span class='small'><b>@$_[2]</b> $lng{"siru"}</b></span></div>
    <div class='clear'>&nbsp;</div>~;
    }

  # Aktuallisem
  $qu="select b.id,subj,b.text_,cat,cat_adv,b.added,comment,nastr,nastr_adv,music,b.ip,u.name,u.id,
       sum(case when c.blog_id = b.id then 1 else 0 end),p.blog_name,p.avatar,link,views from all_blogs b 
       left join all_users u on u.id=b.user_id left join all_blog_comments c on b.id=c.blog_id and c.type=1 
       left join all_par p on b.user_id=p.user_id where rec=1 GROUP BY b.id order by b.refresh desc limit 0,5";
  $myd=$dbh->prepare($qu) or &error("$DBI::errstr $qu");
  ($myd->execute) or &error("$DBI::errstr <br><br>".$qu);
  my $actual=$myd->fetchall_arrayref;

  foreach (@$actual)  {
    if (@$_[15] eq "") {
      @$_[20]='0.gif';
      }
    else {
      @$_[20]=qq~@$_[12].@$_[15]~;
      }
    }

  # Sennisem
  $qu="select b.id,subj,b.text_,cat,cat_adv,DATE_FORMAT(b.added,'%d.%m.%Y %H:%i'),comment,nastr,nastr_adv,music,b.ip,u.name,u.id,
       sum(case when c.blog_id = b.id then 1 else 0 end),p.blog_name,p.avatar,link,views from all_blogs b 
       left join all_users u on u.id=b.user_id left join all_blog_comments c on b.id=c.blog_id and c.type=1 
       left join all_par p on b.user_id=p.user_id WHERE hupla!=1 AND nopub_$prf=0 group by b.id order by b.added desc limit 0,10";
  $myd=$dbh->prepare($qu) or &error("$DBI::errstr $qu");
  ($myd->execute) or &error("$DBI::errstr <br><br>".$qu);
  my $bnew=$myd->fetchall_arrayref;

  my ($newblogs,$taglist);

  foreach (@$bnew)  {
    my $img;
    if (@$_[15] eq "") {
      $img='0.gif';
      }
    else {
      $img=qq~@$_[12].@$_[15]~;
      }
    my $uri_name=@$_[1];
    $uri_name=&fix_uri_name($uri_name);
    my $link='content/'.uri_escape(qq~@$_[0]-$uri_name.html~);

    $newblogs.=qq~<p class='blog_line'><span class='blog_comm_block'>@$_[5]</span><span 
    class='blog_line_avatar'><img src='/images/avatar/32/$img' width='19' height='19'></span><a href='/$link'>@$_[1]</a></p>\n~;

    }
  $newblogs.=qq~<div style='text-align:right;margin:10px 10px 0px 0px;'><a href='/blogs/2.html'>$lng{"User_Kunkeneki_Itti"}</a></div>~;
  
  # Тематиксем

  $qu="SELECT t.id,t.cnt,count(t.id) FROM all_blog_tagsem ts 
       LEFT JOIN all_blogs b ON ts.blog_id=b.id 
       LEFT JOIN all_blog_tags t ON t.id=ts.tag_id 
       WHERE to_days(now())-to_days(b.added)<91 GROUP BY t.id ORDER BY count(t.id) desc, b.added desc LIMIT 0,6";
  my $myd= $dbh->prepare($qu);
  ($myd->execute) or &error("$DBI::errstr $qu");
  $tg=$myd->fetchall_arrayref;

  $myd=$dbh->prepare($qu) or &error("$DBI::errstr");
  ($myd->execute) or &error("$DBI::errstr ".$qu);
  my $tgs=$myd->fetchall_arrayref;

  my $ttcnt=0;
  my @twidth=(0,33,34,33);
  my @pulna;
  foreach (@$tgs) {
    my ($tname,$tcnt)=&get_tag_lng(@$_[0]);
    $ttcnt++;

    $taglist.=qq~<div class='blog_tags_block' style='width:$twidth[$ttcnt]\%;'>
    <h4 class='blog_tags_head'><a href='/blogs/tags/@$_[0].html'>$tname</a></h4>~;
    my $blogs_idds=0;
    $blogs_idds=join ",",@pulna if @pulna>0;
    $qu=qq~SELECT b.id,b.subj,u.id,u.name,u.rname,r.rname,b.top_image,p.avatar FROM all_blog_tagsem ts 
       LEFT JOIN all_blogs b ON ts.blog_id=b.id 
       LEFT JOIN all_users u ON b.user_id=u.id 
       LEFT JOIN all_users_rname r ON r.user_id=u.id
       LEFT JOIN all_par p ON b.user_id=p.user_id 
       WHERE ts.tag_id=@$_[0] AND b.id not in ($blogs_idds) AND hupla=0 AND nopub_$prf=0 ORDER BY b.id DESC LIMIT 0,1~;
    my $myd= $dbh->prepare($qu);
    ($myd->execute) or &error("$DBI::errstr $qu");
    my @tg_top=$myd->fetchrow_array;
    push @pulna,$tg_top[0];

    $blogs_idds=join ",",@pulna if @pulna>0;
    $qu=qq~SELECT b.id,b.subj,u.id,u.name,u.rname,r.rname,b.top_image,p.avatar FROM all_blog_tagsem ts 
       LEFT JOIN all_blogs b ON ts.blog_id=b.id 
       LEFT JOIN all_users u ON b.user_id=u.id 
       LEFT JOIN all_users_rname r ON r.user_id=u.id 
       LEFT JOIN all_par p ON b.user_id=p.user_id 
       WHERE ts.tag_id=@$_[0] AND b.id not in ($blogs_idds) AND hupla=0 AND nopub_$prf=0 ORDER BY b.id DESC LIMIT 0,3~;
    my $myd= $dbh->prepare($qu);
    ($myd->execute) or &error("$DBI::errstr $qu");
    my $tg_blogs=$myd->fetchall_arrayref;

    my $image_src=qq~0.jpg~;
    if ($tg_top[6] ne "" && $tg_top[6] ne "none") {
      $image_src=qq~$tg_top[0].$tg_top[6]~;
      }
    my $img;
    if ($tg_top[7] eq "") {
      $img='0.gif';
      }
    else {
      $img=qq~$tg_top[2].$tg_top[7]~;
      }
    my $uri_name=$tg_top[1];
    $uri_name=&fix_uri_name($uri_name);

    my $t_link='content/'.uri_escape(qq~$tg_top[0]-$uri_name.html~);
    
    $taglist.=qq~<img src='/images/blogs/$image_src' width='100%'>
    <p style='min-height:32px;font-size:13pt;'><span 
    class='blog_line_avatar'><img src='/images/avatar/32/$img' width='19' height='19'></span><a href='/$t_link'>$tg_top[1]</a></p>~;


    foreach my $ii (@$tg_blogs) {
      my $img;
      if (@$ii[7] eq "") {
        $img='0.gif';
        }
      else {
        $img=qq~@$ii[2].@$ii[7]~;
        }

      my $uri_name=@$ii[1];
      $uri_name=&fix_uri_name($uri_name);

      my $link='content/'.uri_escape(qq~@$ii[0]-$uri_name.html~);

      $taglist.=qq~<div>
      <p style='font-size:11pt;min-height:32px;'><span 
    class='blog_line_avatar'><img src='/images/avatar/32/$img' width='19' height='19'></span><a href='/$link'>@$ii[1]</a></p></div>~;
      push @pulna,@$ii[0];
      }

#    $taglist.=qq~<h3 style='margin:5px 0px 0px 0px;padding:5px 5px 5px 34px;font-size:14px;background-color:#f6e8bb;color:#b16f1c;height:19px;overflow:hidden;'>
#<div style='width:25px;float:right;margin-left:10px;margin-right:0px;background:#ffffdd url(/images/note.gif) left top no-repeat;padding:2px 5px 2px 27px;text-align:left;font-family:Arial;font-size:14px;font-weight:normal;'>@$_[1]</div>
#<a href='/blogs/tags/@$_[0].html'>$tname</a></h3>\n~;
    $taglist.=qq~</div>~;

    if ($ttcnt==3) {
      $taglist.=qq~<div class='clear'></div>~;
      $ttcnt=0;
      }
    }

  # Commentlakansem
  $qu=qq~SELECT b.id,subj,b.text_,cat,cat_adv,b.added,comment,nastr,nastr_adv,music,b.ip,u.name,u.id,
       sum(case when c.blog_id = b.id then 1 else 0 end) sm,p.blog_name,p.avatar,link,views from all_blogs b 
       left join all_users u on u.id=b.user_id left join all_blog_comments c on b.id=c.blog_id and c.type=1 
       left join all_par p on b.user_id=p.user_id 
       WHERE hupla!=1 AND UNIX_TIMESTAMP(now())-UNIX_TIMESTAMP(b.refresh)<$UCOMM AND to_days(now())-to_days(b.added)<=170 AND nopub_$prf=0 
       GROUP BY b.id ORDER BY views desc limit 0,10~;
  $myd=$dbh->prepare($qu) or &error("$DBI::errstr $qu");
  ($myd->execute) or &error("$DBI::errstr <br><br>".$qu);
  my $bcomm=$myd->fetchall_arrayref;

  my $commblogs;

  foreach (@$bcomm)  {
    my $img;
    if (@$_[15] eq "") {
      $img='0.gif';
      }
    else {
      $img=qq~@$_[12].@$_[15]~;
      }
    $commblogs.=qq~<p class='blog_line'><span class='blog_comm_block'>@$_[17]</span><span 
    class='blog_line_avatar'><img src='/images/avatar/32/$img' width='19' height='19'></span><a href='/blogs/comments/@$_[0].html'>@$_[1]</a></p>\n~;


#    $commblogs.=qq~<h3 style='margin:5px 0px 0px 0px;padding:5px;font-size:14px;background-color:#f6e8bb;color:#b16f1c;height:19px;overflow:hidden;'>
#<div style='width:25px;float:right;margin-left:10px;margin-right:0px;background:#ffffdd url(/images/bcomm.gif) left top no-repeat;padding:2px 5px 2px 27px;text-align:left;font-family:Arial;font-size:14px;font-weight:normal;'>@$_[13]</div>
#<span style='float:left;margin-right:10px;'><img src='/images/avatar/32/$img' width='19' height='19'></span><a href='/blogs/comments/@$_[0].html'>@$_[1]</a></h3>\n~;

    }

print qq~
<div style='padding:10px;text-align:right;height:48px;'><!-- Pusmallisem -->
<span style='float:right;'><a href='/blogs/rss'><img src='/images/rss_circle.png' width='48' height='48' style='padding:0 0 10px 10px;'></a></span>
<span style='float:right;'><a href='/blogs/add'><img src='/images/plus_48.png' width='48' height='48' style='padding:0 0 10px 10px;'></a></span>
<span style='float:right;'><a href='/blogs/samha'><img src='/images/klubok.gif' width='48' height='48' style='padding:0 0 10px 10px;'></a></span>
<span style='float:right;'><a href='/blogs/stats'><img src='/images/statistics_48.png' width='48' height='48' style='padding:0 0 10px 10px;'></a></span>
<div style='clear'>&nbsp;</div><!-- /Pusmallisem --></div>

<div style='border-top:1px solid #d3b035;padding-top:1px;margin-bottom:15px;'><div style='height:20px;background:white url(/images/comm_up.gif) left top repeat-x;border-top:1px solid #b16f1c;'>&nbsp;</div></div><!-- Ayalti yer -->
<div style='float:right;text-align:left;border:1px solid rgba(158, 89, 1, 0.26);;width:180px; padding:5px;'> 
<!-- Numay sirakansen yise -->
<h3 style='margin:0px 0px 2px 0px;padding:5px;font-size:16px;color:#b16f1c;'>$lng{"Blog_Numay_Siru"}</h3>
<div style='border-top:1px solid #d3b035;padding-top:1px;margin-bottom:5px;'><div style='height:10px;background:white url(/images/comm_up.gif) left top repeat-x;border-top:1px solid #b16f1c;'>&nbsp;</div></div>
$active_user_list
<!-- /Numay sirakansen yise -->
</div>
<!--div class='hipar_head_top' style='background-color:white;margin-right:198px;'>
   <h2 class='hipar_head' style='letter-spacing:1px;font-family:"Ubuntu Condensed",sans-serif;color:#fdebc0;background:#a75b3f url(/blog-h2.gif) left top repeat-x;'>$lng{"Actual_Notes"}</h2></div-->
<div style='margin-right:198px;margin-top:5px;overflow:hidden;height:234px;'>
<h3 style='margin:0px 0px 2px 0px;padding:5px;font-size:12pt; font-weight:normal;background-color:#f6e8bb;color:#b16f1c;height:19px;overflow:hidden;'>
<span style='float:left;margin-right:10px;' title=''><img src='/images/avatar/32/$actual->[0]->[20]' width='19' height='19'></span><a href='/blogs/comments/$actual->[0]->[0].html'>$actual->[0]->[1]</a></h3>
<div style='border-top:1px solid #d3b035;padding-top:1px;margin-bottom:5px;'><div style='height:10px;background:white url(/images/comm_up.gif) left top repeat-x;border-top:1px solid #b16f1c;'>&nbsp;</div></div>
<div style='padding-left:25px;'>$actual->[0]->[2]</div>
</div>
<div style='border-bottom:1px solid #b16f1c;text-align:right;margin-top:10px;padding-bottom:5px; padding-right:5px;margin-right:198px;'><a href='/blogs/comments/$actual->[0]->[0].html'>$lng{"Add_Blog_Comments"} ($actual->[0]->[13])</a></div>
<h3 style='margin:5px 0px 0px 0px;padding:5px;font-size:12pt; font-weight:normal;background-color:#f6e8bb;color:#b16f1c;height:19px;overflow:hidden;margin-right:198px;'>
<span style='float:left;margin-right:10px;'><img src='/images/avatar/32/$actual->[1]->[20]' width='19' height='19'></span><a href='/blogs/comments/$actual->[1]->[0].html'>$actual->[1]->[1]</a></h3>
<h3 style='margin:5px 0px 0px 0px;padding:5px;font-size:12pt; font-weight:normal;background-color:#f6e8bb;color:#b16f1c;height:19px;overflow:hidden;margin-right:198px;'>
<span style='float:left;margin-right:10px;'><img src='/images/avatar/32/$actual->[2]->[20]' width='19' height='19'></span><a href='/blogs/comments/$actual->[2]->[0].html'>$actual->[2]->[1]</a></h3>
<h3 style='margin:5px 0px 0px 0px;padding:5px;font-size:12pt; font-weight:normal;background-color:#f6e8bb;color:#b16f1c;height:19px;overflow:hidden;margin-right:198px;'>
<span style='float:left;margin-right:10px;'><img src='/images/avatar/32/$actual->[3]->[20]' width='19' height='19'></span><a href='/blogs/comments/$actual->[3]->[0].html'>$actual->[3]->[1]</a></h3>
<h3 style='margin:5px 0px 0px 0px;padding:5px;font-size:12pt; font-weight:normal;background-color:#f6e8bb;color:#b16f1c;height:19px;overflow:hidden;margin-right:198px;'>
<span style='float:left;margin-right:10px;'><img src='/images/avatar/32/$actual->[4]->[20]' width='19' height='19'></span><a href='/blogs/comments/$actual->[4]->[0].html'>$actual->[4]->[1]</a></h3>

   <h3 class='blog_main_head'>$lng{"Blog_New_Notes"}</h3>
   $newblogs
   <h3 class='blog_main_head'>$lng{"Blog_Themes"}</h3>
   $taglist
   <h3 class='blog_main_head'>$lng{"Blog_Numay_Suhas"}</h3>
$commblogs
~;

}

sub samha {
  my $head;
  $shead->{"JavaScript"}=qq~<link rel="stylesheet" href="/style_tag.css" type="text/css" />~;
$vok=1;
&headprint($lng{"All_Blog_Samha"},$shead);

  $qu="SELECT cnt,ch,ru,eo,en,id FROM all_blog_tags";
  my $myd= $dbh->prepare($qu);
  ($myd->execute) or &error("$DBI::errstr $qu");
  my $tl=$myd->fetchall_arrayref;

print qq~<div style='padding:10px;text-align:right;height:48px;'><!-- Pusmallisem -->
<span style='float:right;'><a href='/blogs/rss'><img src='/images/rss_circle.png' width='48' height='48' style='padding:0 0 10px 10px;'></a></span>
<span style='float:right;'><a href='/blogs/add'><img src='/images/plus_48.png' width='48' height='48' style='padding:0 0 10px 10px;'></a></span>
<span style='float:right;'><a href='/blogs/stats'><img src='/images/statistics_48.png' width='48' height='48' style='padding:0 0 10px 10px;'></a></span>
<div style='clear'>&nbsp;</div><!-- /Pusmallisem --></div>
<div style='border-top:1px solid #d3b035;padding-top:1px;margin-bottom:15px;'><div style='height:20px;background:white url(/images/comm_up.gif) left top repeat-x;border-top:1px solid #b16f1c;'>&nbsp;</div></div><!-- Ayalti yer -->
~;

  foreach (@$tl) {
#    next if @$_[0]==1;
    my $lv=1;
    if (@$_[0]>100) {
      $lv=16;
      }
    elsif (@$_[0]>50) {
      $lv=15;
      }
    elsif (@$_[0]>30) {
      $lv=14;
      }
    elsif (@$_[0]>20) {
      $lv=13;
      }
    elsif (@$_[0]>15) {
      $lv=12;
      }
    elsif (@$_[0]>12) {
      $lv=11;
      }
    elsif (@$_[0]>10) {
      $lv=10;
      }
    elsif (@$_[0]>9) {
      $lv=9;
      }
    elsif (@$_[0]>8) {
      $lv=8;
      }
    elsif (@$_[0]>7) {
      $lv=7;
      }
    elsif (@$_[0]>6) {
      $lv=6;
      }
    elsif (@$_[0]>5) {
      $lv=5;
      }
    elsif (@$_[0]>4) {
      $lv=4;
      }
    elsif (@$_[0]>3) {
      $lv=3;
      }
    elsif (@$_[0]>2) {
      $lv=2;
      }

    my @tmp=(@$_[1],@$_[2],@$_[3],@$_[4]);
    my $name=&get_tag_nosql(\@tmp);
    my $title=$name;
    $name=~s/ +/\&nbsp\;/gs;
    print qq~<a href='/blogs/tags/@$_[5].html' class='taglist tlevel$lv' title='$title (@$_[0])'>$name</a> ~;
    }
  }


sub viewblog {
use utf8;
use Encode;


$vok=1;
my $u=$in->param("u");
my $tag=$in->param("tag");
$tag="" if $tag=~/\D/;
my $uu=$u;
$uu=~s/(..)/pack("C",hex($1))/eg;

my $p=$in->param("p");
$p=0 if $p<0 || $p=~/\D/;

my ($b_nm,$b_op,$b_nt);

if ($u ne "") {
  $us_=$dbh->quote($uu);

  #$us_=$dbh->quote($user);
  $qu="select u.id,blog_name,blog_opis,blog_notes FROM all_users u left join all_par p on u.id=p.user_id where name=".$us_;
  $myd=$dbh->prepare($qu) or &error("$DBI::errstr $qu");
  ($myd->execute) or &error("$DBI::errstr $qu");
  ($aa,$b_nm,$b_op,$b_nt)=$myd->fetchrow_array;

  $qu="select id from all_users where name=".$us_;
  print HH $qu."\n";
  $myd=$dbh->prepare($qu) or &error("$DBI::errstr $qu"); 
  ($myd->execute) or &error("$DBI::errstr $qu");
  $us=$myd->fetchrow_array;
  if ($us eq "") {
    print "Location: /cgi-bin/user.cgi?a=jump&m=".$lng{"Login_Error_Not_Name"}."&url=/cgi-bin/blog.cgi\n\n";
    return;
    }

  $lng{"User_Blog_Name"}=~s/__USER__/$uu/gs;
  $b_nm=$lng{"User_Blog_Name"} if $b_nm eq "";
#  $act=$lng{"Blog"}." \"".$b_nm."\"";
  $act=$b_nm;
#  $b_op="<br>".$lng{"User_Blog_Not_Opis"}."<br><br>" if $b_op eq "";
  $n=$b_nt;
  $n=10 if $n<5 || $n>20;
  }
else {
  $act=$lng{"All_Blog_Notes"};
  $b_op=$lng{"All_Blog_Opis"};
  $n=10;
  }
&headprint($act);

my ($count,$pages);

if ($us ne "") {
  $qu="select count(*) FROM all_blogs b,all_users u WHERE b.user_id=u.id and name=".$us_."  AND nopub_${prf}=0 ORDER BY added DESC";
  print HH $qu."\n";
  $myd=$dbh->prepare($qu) or &error("$DBI::errstr $qu");
  ($myd->execute) or &error("$DBI::errstr $qu");
  $count=$myd->fetchrow_array;

  $pages=int($count/$n);
  $pages++ if int($count/$n)!=$count/$n;
  $p=$pages if $p>$pages;
  $p=1 if $p<1;
  $st=$p*$n-$n;
  $st=0 if $st<0;

  #$qu="select b.id,subj,text_,cat,cat_adv,added,comment,nastr,nastr_adv,music,b.ip,u.name,u.id from all_blogs b,all_users u where b.user_id=u.id and name=".$us_." order by u.id desc limit ".$st.",".$n;
  $qu="SELECT b.id,subj,b.text_,cat,cat_adv,DATE_FORMAT(b.added,'%d.%m.%Y %H:%i'),comment,nastr,nastr_adv,music,b.ip,u.name,u.id,
       sum(case when c.blog_id = b.id then 1 else 0 end),p.blog_name,p.avatar,link,views,r.rname,u.rname,b.top_image,b.user_name,index_pur FROM all_blogs b 
       left join all_users u on u.id=b.user_id left join all_blog_comments c on b.id=c.blog_id and c.type=1 
       LEFT JOIN all_users_rname r ON u.id=r.user_id
       left join all_par p on b.user_id=p.user_id WHERE name=".$us_." AND nopub_${prf}=0 GROUP BY b.id order by b.added desc limit ".$st.",".$n;
  }
elsif ($tag ne "") {
  my $hupla=" WHERE hupla=0";
  $hupla="" if $group>3;
  $qu="select count(*) from all_blogs b
               LEFT JOIN all_blog_tagsem t ON t.blog_id=b.id WHERE hupla=0 AND nopub_${prf}=0 AND tag_id=".$tag;
  $myd=$dbh->prepare($qu) or &error("$DBI::errstr $qu");
  ($myd->execute) or &error("$DBI::errstr $qu");
  $count=$myd->fetchrow_array;

  $pages=int($count/$n);
  $pages++ if int($count/$n)!=$count/$n;
  $p=$pages if $p>$pages;
  $p=1 if $p<1;
  $st=$p*$n-$n;
  $st=0 if $st<0;

  #$qu="select b.id,subj,text_,cat,cat_adv,added,comment,nastr,nastr_adv,music,b.ip,u.name,u.id from all_blogs b,all_users u where b.user_id=u.id and name=".$us_." order by u.id desc limit ".$st.",".$n;
  $qu="SELECT b.id,subj,b.text_,cat,cat_adv,DATE_FORMAT(b.added,'%d.%m.%Y %H:%i'),comment,nastr,nastr_adv,music,b.ip,u.name,u.id,
       sum(case when c.blog_id = b.id then 1 else 0 end),p.blog_name,p.avatar,link,views,r.rname,u.rname,b.top_image,b.user_name,index_pur FROM all_blogs b 
       left join all_users u on u.id=b.user_id left join all_blog_comments c on b.id=c.blog_id and c.type=1 
       left join all_par p on b.user_id=p.user_id 
       LEFT JOIN all_users_rname r ON u.id=r.user_id
       LEFT JOIN all_blog_tagsem t ON t.blog_id=b.id 
       WHERE t.tag_id=$tag AND nopub_${prf}=0 GROUP BY b.id order by b.added desc limit ".$st.",".$n;
  }
else {
  my $hupla=" WHERE hupla=0 AND nopub_${prf}=0";
  $hupla="" if $group>3;

  $qu="select count(*) from all_blogs".$hupla;
  $myd=$dbh->prepare($qu) or &error("$DBI::errstr $qu");
  ($myd->execute) or &error("$DBI::errstr $qu");
  $count=$myd->fetchrow_array;

  $pages=int($count/$n);
  $pages++ if int($count/$n)!=$count/$n;
  $p=$pages if $p>$pages;
  $p=1 if $p<1;
  $st=$p*$n-$n;
  $st=0 if $st<0;
  
  #$qu="select b.id,subj,text_,cat,cat_adv,added,comment,nastr,nastr_adv,music,b.ip,u.name,u.id from all_blogs b, all_users u where u.id=b.user_id order by b.id desc limit ".$st.",".$n;

  $qu="SELECT b.id,subj,b.text_,cat,cat_adv,DATE_FORMAT(b.added,'%d.%m.%Y %H:%i'),comment,nastr,nastr_adv,music,b.ip,u.name,u.id,
       sum(case when c.blog_id = b.id then 1 else 0 end),p.blog_name,p.avatar,link,views,r.rname,u.rname,b.top_image,b.user_name,index_pur FROM all_blogs b 
       left join all_users u on u.id=b.user_id left join all_blog_comments c on b.id=c.blog_id and c.type=1
       LEFT JOIN all_users_rname r ON u.id=r.user_id
       left join all_par p on b.user_id=p.user_id $hupla GROUP BY b.id order by b.added desc limit ".$st.",".$n;
  }

$myd=$dbh->prepare($qu) or &error("$DBI::errstr $qu");
($myd->execute) or &error("$DBI::errstr <br><br>".$qu);
my $ii=$myd->fetchall_arrayref;

#my $blinks_out;
#my @blinkb;
#push @blinkb,qq~<a style='color:#d3b035;' href="/blogs/rss/$u">RSS</a>~;
#if ($us ne "") {
#  push @blinkb,qq~<a style='color:#d3b035;' href="/blogs/frends/$u" title='$lng{"Blog_Frends"}'>$lng{"Blog_Frends"}</a>~;
#  
#  }
#if ($user ne "") {
#  push @blinkb,qq~<a style='color:#d3b035;' href="/cgi-bin/blog.cgi?a=a" title='$lng{"Add_Blog_Notes"}'>$lng{"Add_Blog_Notes"}</a>~;
#  }
#
#if ($user eq $uu && $user ne "") {
#  push @blinkb,qq~<a style='color:#d3b035;' href="/cgi-bin/pr.cgi?a=bpr&pr=1" title='$lng{"Nastroyki"}'>$lng{"Nastroyki"}</a>~;
#  }
#$blinks_out=join " :: ",@blinkb;
#

if ($user eq $uu && $user ne "")  {
print qq~<div style='padding:10px;text-align:right;height:48px;'><!-- Pusmallisem -->
<span style='float:right;'><a href='/blogs/rss/$u'><img src='/images/rss_circle.png' width='48' height='48' style='padding:0 0 10px 10px;'></a></span>
<span style='float:right;'><a href='/cgi-bin/pr.cgi?a=bpr&pr=1'><img src='/images/configure.png' width='48' height='48' style='padding:0 0 10px 10px;'></a></span>
<span style='float:right;'><a href='/blogs/samha/$u'><img src='/images/klubok.gif' width='48' height='48' style='padding:0 0 10px 10px;'></a></span>
<span style='float:right;'><a href='/blogs/stats'><img src='/images/statistics_48.png' width='48' height='48' style='padding:0 0 10px 10px;'></a></span>
<span style='float:right;'><a href='/blogs/add'><img src='/images/plus_48.png' width='48' height='48' style='padding:0 0 10px 10px;'></a></span>
<div style='clear'>&nbsp;</div><!-- /Pusmallisem --></div>
<div style='border-top:1px solid #d3b035;padding-top:1px;margin-bottom:15px;'><div style='height:20px;background:white url(/images/comm_up.gif) left top repeat-x;border-top:1px solid #b16f1c;'>&nbsp;</div></div><!-- Ayalti yer -->~;
  }


#print qq~<div class='hipar_head_top' style='background-color:white;'><div class='calendar_hipar'></div>
#   <h2 class='hipar_head'><span style="color:red">$act</span></a>
#  <div class='tags' style='color:#d3b035;'><span style='font-family:Courier New;'>&#9632;</span>&nbsp;$blinks_out</div></h2></div>
#~;
#if ($b_op ne "") {
#  print qq~<div class='blog_teplen_anlanatru'>$b_op</div>~;
#  }


#print qq~<br><table width='100%' cellpadding="0" cellspacing="0" border='0' class='aa'>~;
&outblog($ii);
#print qq~</table>~;

if ($pages>1) {
  if ($u ne "") {
    $u_out=qq~/$u~;
    }
  elsif ($tag ne '') {
    $u_out=qq~/tags/$tag~;
    }
  print qq~<div class='encyc_tags'><b>$lng{"Pages"}</b>:~;
  my $sn=$p-5;
  $sn=1 if $sn<1;
  my $en=$p+5;
  $en=$pages if $en>$pages;
  print " <a href='/blogs$u_out/1.html'>1</a>,\n" if $sn>1;
  print "... " if $sn>2;
  
  for (my $ii=$sn;$ii<$en+1;$ii++) {
    if ($ii!=$p) {
      print " <a href='/blogs$u_out/$ii.html'>".$ii."</a>";
      }
    else {print " \[".$ii."\]"}
    print "," if $ii!=$pages;
    }
  print " ..." if $en<$pages-1;
  print " <a href='/blogs$u_out/$pages.html'>".$pages."</a>" if $en<$pages;
  print qq~</div>~;
  }

}


###################################################################################

sub frends {

my $u=$in->param("u");
my $uu=$u;
$uu=~s/(..)/pack("C",hex($1))/eg;

my $p=$in->param("p");

my ($b_nm,$b_nt);
if ($u ne "") {
  $us_=$dbh->quote($uu);

  #$us_=$dbh->quote($user);
  $qu="select u.id,blog_name,blog_notes from all_users u left join all_par p on u.id=p.user_id where name=".$us_;
  $myd=$dbh->prepare($qu) or &error("$DBI::errstr $qu");
  ($myd->execute) or &error("$DBI::errstr $qu");
  ($aa,$b_nm,$b_nt)=$myd->fetchrow_array;

  $qu="select id from all_users where name=".$us_;
  $myd=$dbh->prepare($qu) or &error("$DBI::errstr $qu"); 
  ($myd->execute) or &error("$DBI::errstr $qu");
  $us=$myd->fetchrow_array;
  $lng{"User_Blog_Name"}=~s/__USER__/$uu/gs;
  $b_nm=$lng{"User_Blog_Name"} if $b_nm eq "";
  $n=$b_nt;
  $n=10 if $n<5 || $n>20;
  }
else {
  $us_=$dbh->quote($user);
  $uu=$user;
  $n=10;
  }

$qu="select id from all_users where name=".$us_;
$myd=$dbh->prepare($qu) or &error("$DBI::errstr $qu");
($myd->execute) or &error("$DBI::errstr $qu");
my $us=$myd->fetchrow_array;
#$user="" if $us eq "";

if ($us ne "") {
  $vok=1; 
  $lng{"Frend_Notes"}=~s/__NAME__/$uu/gs;
  &headprint($lng{"Frend_Notes"});
  #$qu="select count(*) from all_blogs b,all_users u where b.user_id=u.id and name=".$us_;
  $qu="select count(*) from all_blogs b,all_users u,all_frends f where b.user_id=f.frend and f.user_id=u.id and u.name=".$us_;
  $myd=$dbh->prepare($qu) or &error("$DBI::errstr $qu");
  ($myd->execute) or &error("$DBI::errstr $qu");
  $count=$myd->fetchrow_array;
  $pages=int($count/$n);
  $pages++ if int($count/$n)!=$count/$n;
  $p=$pages if $p>$pages;
  $p=1 if $p<1;
  $st=$p*$n-$n;
  $st=0 if $st<0;

  $qu="SELECT b.id,subj,b.text_,cat,cat_adv,DATE_FORMAT(b.added,'%d.%m.%Y %H:%i'),comment,nastr,nastr_adv,music,b.ip,u.name,u.id,
       sum(case when c.blog_id = b.id then 1 else 0 end),p.blog_name,p.avatar,link,views,u.rname,u.rname,b.top_image,b.user_name,index_pur FROM all_blogs b 
       left join all_frends f on b.user_id=f.frend left join all_users u on u.id=f.user_id 
       left join all_users u2 on u2.id=f.frend left join all_blog_comments c on b.id=c.blog_id and c.type=1
       left join all_par p on b.user_id=p.user_id where u.name=".$us_." group by b.id order by b.id desc limit ".$st.",".$n;
  }
else {
  print "Location:/blogs\n\n";
  return;
  }

$myd=$dbh->prepare($qu) or &error("$DBI::errstr $qu");
($myd->execute) or &error("$DBI::errstr $qu");
my $ii=$myd->fetchall_arrayref;

print qq~
<img src='/ball_whi.gif'> \[ <a href="/cgi-bin/blog.cgi?a=a">$lng{"Add_Blog_Notes"}</a> \]
~ if $user ne "";

print qq~
\[ <a href="/blogs/$u">$b_nm</a> \]
~ if $us ne "";

print qq~<br>~ if $user ne "" || $us ne "";

print qq~<table width='100%' cellpadding="0" cellspacing="0" border='0' class='aa'>~;
&outblog($ii);
print qq~</table>~;

if ($pages>1) {
  $u_out=qq~/$u~ if $u ne "";
  print "<img src='/ball_whi.gif'> ".$lng{"pages"}.":";
  my $sn=$p-5;
  $sn=1 if $sn<1;
  my $en=$p+5;
  $en=$pages if $en>$pages;
  print " <a href='/blogs/frends$u_out/1.html'>1</a>,\n" if $sn>1;
  print "... " if $sn>2;
  
  for (my $ii=$sn;$ii<$en+1;$ii++) {
    if ($ii!=$p) {
      print " <a href='/blogs/frends$u_out/$ii.html'>".$ii."</a>";
      }
    else {print " \[".$ii."\]"}
    print "," if $ii!=$pages;
    }
  print " ..." if $en<$pages-1;
  print " <a href='/blogs/frends$u_out/$pages.html'>".$pages."</a>" if $en<$pages;
  }

}

##########################################################################################

sub outblog {
my $ii=shift;
my $it=shift;
my $i=0;
foreach (@$ii) {
  $i++;
  my $avout;
  if (@$_[15] ne "") {
    $avout="<center><img src='/images/avatar/@$_[12].@$_[15]'></center>";
    }
#  print qq~<tr><td>~;

  my $user_link_1=qq~<a href='/cgi-bin/user.cgi?u=@$_[11]'>~;
  my $user_link_2=qq~</a>~;
  if (@$_[12]==0) {
    $user_link_1='';$user_link_2='';
    }

  my ($icon_out,$B_out,$BOUT_out);
  my @BS; my @VLNS;
  if (@$_[15] ne "") {
    $icon_out=qq~<span class='blog_line_avatar'>$user_link_1<img border='0' src='/images/avatar/32/@$_[12].@$_[15]'>$user_link_2</span>~;
    }
  else {
    $icon_out=qq~<span class='blog_line_avatar'>$user_link_1<img border='0' src='/images/avatar/32/0.gif'>$user_link_2</span>~;
    }

  my $user_name_out=@$_[11];
  $user_name_out=@$_[19] if @$_[19] ne "";
  $user_name_out=@$_[18] if @$_[18] ne "";
  $user_name_out=@$_[21] if $user_name_out eq "";

  push @BS,@$_[5];
  if ((@$_[11] eq $user && $user ne '') || $group>2) {
    if ($it!=1) {
      push @BS,qq~<a style='color:#d3b035;' href="/cgi-bin/blog.cgi?a=e&id=@$_[0]">$lng{"edit"}</a>~;
      push @BS,qq~<a style='color:#d3b035;' href="/cgi-bin/blog.cgi?a=d&id=@$_[0]" onclick="return confirmLink(this, 'удалить?')">$lng{"del"}</a>~;
      }
    else {
      push @VLNS,qq~<a style='color:#d3b035;' href="/cgi-bin/blog.cgi?a=e&id=@$_[0]" title='$lng{"edit"}'><img src='/images/blog-edit.png' width='20' height='20' alt='$lng{"edit"}'></a>~;
      push @VLNS,qq~<a style='color:#d3b035;' href="/cgi-bin/blog.cgi?a=d&id=@$_[0]" onclick="return confirmLink(this, 'удалить?')" title='$lng{"del"}'><img src='/images/blog-del.png' width='20' height='20' alt='$lng{"del"}'></a>~;
      }
    }
  if ($group>2) {
    if ($it!=1) {
      push @BS,qq~<a style='color:#d3b035;' href="/cgi-bin/blog.cgi?a=upla&id=@$_[0]">$lng{"blog_up"}</a>~;
      }
    else {
      push @VLNS,qq~<a style='color:#d3b035;' href="/cgi-bin/blog.cgi?a=upla&id=@$_[0]" title='$lng{"blog_up"}'><img src='/images/blog-up.png' width='20' height='20' alt='$lng{"blog_up"}'></a>~;
      }
    }
  
  push @BS,qq~<b>@$_[17]</b> $lng{"Blog_View_All"}~;
  $B_out=join " | ",@BS;
  $BOUT_out=join " ",@VLNS;

  if ($it!=1) {
    print qq~
<h1 class='ch1'>$icon_out<a href="/blogs/comments/@$_[0].html">@$_[1]</a></h1><div class='tags' style='color:#d3b035;padding-bottom:3px;'><span 
   style='font-family:Courier New;'>&#9632;</span>&nbsp;&nbsp;$B_out</div>~;
    }
  else {
#$qu="select b.id,subj,b.text_,cat,cat_adv,DATE_FORMAT(b.added,'%d.%m.%Y %H:%i'),comment,nastr,nastr_adv,music,b.ip,u.name,u.id,
#       sum(case when c.blog_id = b.id then 1 else 0 end),p.blog_name,p.avatar,link,views,r.rname,u.rname,b.top_image 
#       FROM all_blogs b 
    
    print qq~<div style='margin-bottom: 25px;'>$icon_out$user_link_1<span style='font-size: 18pt;line-height: 34px;'>$user_name_out</span>$user_link_2<span 
       style='font-size: 14pt; margin-left: 30px; letter-spacing: 1px;'>@$_[5]</span><span 
       style='font-size: 14pt; margin-left: 30px; letter-spacing: 1px;'><b>@$_[17]</b> $lng{"Blog_View_All"}</span><span style='margin-left: 10px;float: right; margin-top: 12px;'>$BOUT_out</span><div class='clear'></div></div>~;
    }

  if ($it!=1) {
    @$_[2]=~s/(<(.+?)>)/&nodot($1)/ges;
    @$_[2]=~s/(.{1000}.*?[\.\!\?]).+/$1<!-- Dalee --><p style='margin-top:15px;'><a href="\/blogs\/comments\/@$_[0].html"><span class='laterbtn'><b>$lng{"Later"}...<\/b><\/span><\/a><\/p>/s;
#    @$_[2]=~s/(.{1000}.*?[\.\!\?]).+/$1<br><!-- Dalee --><a href="\/blogs\/comments\/@$_[0].html"><b>$lng{"Later"}...<\/b><\/a>/s;
    #��⠭�������� ������ ���
    my $tg=&set_ends(@$_[2]);
    my @o=split (/\,/,$tg);
    my $t3;
    @o=reverse (@o);
    foreach (@o) {
      if ($_!~/^(|br|img|!\-\-)$/i) {
        $t3.="<\/$_>";
        }
      }
    @$_[2]=~s/(\<\!\-\- Dalee \-\-\>\<p)/${t3}$1/;
    @$_[2]=~s/_P-а-N_С-h-a_/\./gs;
    @$_[2]=~s/_Y-i-T_u-u-U_/\?/gs;
    @$_[2]=~s/_K-a-S_H-k-A_/\!/gs;
    }
  @$_[2].=qq~<div style='font-size:10px'><br>$lng{"Blog_Source"}: <a href='@$_[16]' target='_blank'>@$_[16]</a></div>~ if @$_[16] ne "";

  my $noindex_start=qq~<noindex>~;
  my $noindex_end=qq~</noindex>~;
  if (@$_[22]==1) {
    $noindex_start='';
    $noindex_end='';
    }

  print qq~
</span></h3>
<div class='blog'>$noindex_start@$_[2]<div style='padding-bottom:20px;' class='clear'>&nbsp;</div>$noindex_end~;
if ($it==1) {
  print qq~<div style='font-size: 10pt;background-color: #f7ff0017;padding: 15px;margin-bottom: 15px;border-radius: 5px;color: #eb9a5e;font-family: "Liberation Serif",sans-serif;font-style: italic;'>$lng{"Blog_Author_Kileshu"}</div><div>      


<script type="text/javascript">(function(w,doc) {
if (!w.__utlWdgt ) {
    w.__utlWdgt = true;
    var d = doc, s = d.createElement('script'), g = 'getElementsByTagName';
    s.type = 'text/javascript'; s.charset='UTF-8'; s.async = true;
    s.src = ('https:' == w.location.protocol ? 'https' : 'http')  + '://w.uptolike.com/widgets/v1/uptolike.js';
    var h=d[g]('body')[0];
    h.appendChild(s);
}})(window,document);
</script>
<noindex><div data-mobile-view="true" style='text-align: right;' data-share-size="30" data-like-text-enable="false" data-background-alpha="0.0" data-pid="1420470" data-mode="share" data-background-color="#ffffff" data-share-shape="rectangle" data-share-counter-size="12" data-icon-color="#ffffff" data-mobile-sn-ids="vk.tw.ok.tm.vb." data-text-color="#ffffff" data-buttons-color="#ffffff" data-counter-background-color="#ffffff" data-share-counter-type="separate" data-orientation="horizontal" data-following-enable="false" data-sn-ids="tw.vk.ok.tm." data-preview-mobile="false" data-selection-enable="true" data-exclude-show-more="true" data-share-style="10" data-counter-background-alpha="1.0" data-top-button="false" class="uptolike-buttons" ></div></noindex>
      <div class='clear'> </div>
      </div>
~;
  }

print qq~</div><!--</td></tr><tr><td style='padding-bottom:14px;'-->~;
  if (@$_[6]==1) {
    print qq~<div style='text-align:right;'><span class='small'>\[<a href="/blogs/comments/@$_[0].html">$lng{"Add_Blog_Comments"}</a>~;
    print qq~ (@$_[13])~ if @$_[13]>0;
    print qq~\] </span></div>~;
    }
#  print qq~</td></tr-->~;
  }
}

sub set_ends {
my $v1=shift;
my $t1=1;
my $out="";
my $i=1;
  while ($t1==1) {
    $i++;
    if ($i==200) {
      #print "OUT=".$out;
      return ($out);
      }
    if ($v1=~/<([^\/\>\< ]+)( .+?|)>/) {
      $tag=$1;
      if ($v1=~/<\/$tag( .+?|)>/) {
        $v1=~s/<$tag( .+?|)>//;
        $v1=~s/<\/$tag( .+?|)>//;
        #print " YES ";
        }
      else {
        $v1=~s/<$tag( .+?|)>//;
        $v1=~s/<\/$tag( .+?|)>//;
        $out.=$tag.",";
        #print " NO ";
        }
      }
    else {
      $t1=0;
      }
    #print "Tag=".$tag."<br>";
    }
      #print "OUT=".$out;

return ($out);
  }

sub nodot {
  my $a=shift;
  $a=~s/\./_P-а-N_С-h-a_/g;
  $a=~s/\?/_Y-i-T_u-u-U_/g;
  $a=~s/\!/_K-a-S_H-k-A_/g;
  return ($a);
  }

########################################################################################

sub no_add_article {
  my $us_=shift;
  my $uer=shift;
  my $us=shift;

  print qq~<form action='/cgi-bin/blog.cgi' method='POST'>
<input type='hidden' name='a' value='art_adds'>
<input type='hidden' name='user' value='$user'>
<input type='hidden' name='user_id' value='$us'>
<div style='margin: 10px 0px 30px;padding: 15px;background-color: #fcb7b7;border-radius: 10px;border: 1px solid #ff8181;box-shadow: 5px 5px 5px #ffbfbf;text-shadow: 0 0 3px white;
 color: #7c2929;text-align: justify;text-indent: 30px;'>$lng{"Add_Article_Hupa"}</div>
$lng{"Saltav"}: <input type='text' style='width:500px;' name='saltav' value=''>
<input type='submit' value='$lng{"Send_Button"}'>
</form>
~;
  }

sub art_adds {
  $user=$in->param("user");
  $user_id=$in->param("user_id");
  $saltav=$in->param("saltav");

  $us_=$dbh->quote($user);

  #Çыру ярасси
  my $user_u=Encode::decode_utf8($user);

  $sbj_=qq~\[$prf\]-\[Chuvash.org\] Статья ҫырма ҫĕнĕ ЗАЯВКА~;
  $saltav=qq~Çĕнĕ заявка:\nЯт: «$user_u»\nСӑлтав:\n------------------------------------------\n$saltav~;
  
  open (ff, "|$mail -t"); 
  print ff "From: noreply\@chuvash.org\nTo: $redactor_mail\nContent-type: text/plain; charset=\"UTF-8\"\n";
  $saltav=~s/\r//g;
  #$mess=~s/\n/<br>\n/g;
  print ff "Subject: ".$sbj_."\n\n".$saltav."\n";
  close (ff);

  print "Location: /cgi-bin/user.cgi?a=jump&m=".$lng{"Send_Add_Article"}."&url=/blogs\n\n";
  }


sub addblog {

$us_=$dbh->quote($user);

$qu=qq~SELECT id,articled FROM all_users WHERE name=$us_~;
$myd=$dbh->prepare($qu) or &error("$DBI::errstr $qu");
($myd->execute) or &error("$DBI::errstr $qu");
my ($us,$articled)=$myd->fetchrow_array;

if ($articled==0) {
  $vok=1;
  &headprint($lng{"Add_Blog"});
  &no_add_article($us_,$user,$us);
  return;
  }

$vok=1;
&headprint($lng{"Add_Blog"});
if ($us eq "") {
  print qq~Ошибка: Не найден ваш дневник<br>
  ~;
  return;
  }
#Если дневник есть.
if (not $comm) {
  $comm_out=" checked";
  }
else {
  $comm_out=" checked" if $comm eq "on";
  }
my $nast_out;
for (my $i=0;$i<@emot;$i++) {
  my $sel="";
  $sel=" selected" if $i==$nast;
  $nast_out.=qq~<option value=$i>$emot[$i]</option>~;
  }

if (keys %error) {
  print "<span style='color:red'>Ошибки:</span><span style='color:yellow;font-style:italic'>";
  foreach my $var (sort keys %error) {
    print "<li style='list-style:none inside none;'>".$var.": ".$error{$var}."\n";
    }
  print "</span><br>";
  }
print qq~
<script>
function checkLength(obj) {
        var minSymbols=2000;
	var text=document.getElementById(obj).value;
	var CurSim=text.length;
	if (CurSim<minSymbols) {
  	  document.getElementById("cur_comm_sym").style.color="red";
	  }
	else {
  	  document.getElementById("cur_comm_sym").style.color="";
	  }
	document.getElementById("cur_comm_sym").innerHTML=CurSim;
	}
function b_img_usas() {
  document.getElementById("b_img_btns").style.display='';
  document.getElementById("b_img_hup_link").style.display='';
  document.getElementById("b_img_us_link").style.display='none';
  }
function b_img_hupas() {
  document.getElementById("b_img_btns").style.display='none';
  document.getElementById("b_img_hup_link").style.display='none';
  document.getElementById("b_img_us_link").style.display='';
  }

</script>
<table class='form' width='100%'>
<form id="editform" name="editform" action='/cgi-bin/blog.cgi' method='POST'>
<input type='hidden' name='a' value='as'>
<tr><td><div><b>$lng{"Blog_Subject"}</b>:</div></td><td colspan='2'><input type='text' style='width:100%;' name='subj' value='$subj'></td></tr>
<tr><td valign=top><div><b>$lng{"Blog_Text"}</b>:<br><br>
<span id="my-buttons">
$lng{"Spec_Bottoms"}
</span>
</div></td><td colspan='2' style='width:450px;'>
<span id="my-buttons" style='line-height: 27px;'>
<A href="javascript:insertTags('<b>','</b>','');" class='btn' title="Жирный шрифт"><b>B</b></a>
<A href="javascript:insertTags('<i>','</i>','');" class='btn' title="Курсив"><i>I</i></a>
<A href="javascript:insertTags('<u>','</u>','');" class='btn' title="Подчеркивание"><u>U</u></a>
<A href="javascript:insertTags('<s>','</s>','');" class='btn' title="Зачеркнуто"><s>T</s></a>
<A href="javascript:insertTags('<h3>','</h3>','');" class='btn' title="Большой заголовок">Заг1</a>
<A href="javascript:insertTags('<h4>','</h4>','');" class='btn' title="Средний заголовок">Заг2</a>
<A href="javascript:insertTags('<h5>','</h5>','');" class='btn' title="Малый заголовок">Заг3</a>
<A href="javascript:insertTags('<pre>','</pre>','');" class='btn' title="Форматированный текст">#</a>
<A href="javascript:insertTags('<sub>','</sub>','');" class='btn' title="Нижний текст">X<sub>2</sub></a>
<A href="javascript:insertTags('<sup>','</sup>','');" class='btn' title="Верхний текст">X<sup>2</sup></a>
<span class='b_img_us'>
<a href="javascript:b_img_usas();" id='b_img_us_link' class='btn' title="Вставка картинки">Картинка</a>
<a href="javascript:b_img_hupas();" id='b_img_hup_link' style='display:none;' class='btn' title="Вставка картинки">Картинка</a>
<span id='b_img_btns' style='display:none;'><A href="javascript:insertTags('<img class=\\\'img_blog img_100\\\' src=\\\'','\\\'>','');b_img_hupas();" class='btn' title="Сарлакӑшпе">Сарлакӑшпе</a><br /><A 
href="javascript:insertTags('<img class=\\\'img_right\\\' src=\\\'','\\\'>','');b_img_hupas();" class='btn' title="Сылтӑмалла">Сылтӑмалла</a></span>
</span>
<a href="javascript:insertTags('<blockquote>','</blockquote>','');" class='btn' title="Цитата">Цитата</a>
<A href="javascript:insertTags('http://','','');" class='btn' title="http://">http://</a>
</span><br>
<textarea name='comm' id='blog' style='width:100%;height:300px' onkeyup='checkLength("blog");' onChange='this.onkeyup("blog");'>$text</textarea>
  <div style='text-align:right;width:100%'>$lng{"Comm_Current_Symbols"} <b><span id='cur_comm_sym'>0</span></b> $lng{"symbol"}</div></td></tr>
<tr><td></td><td colspan='2'><div><input type='checkbox' name='text'$comm_out> - $lng{"Enable_Comments"}</div></td></tr>
<tr><td></td><td colspan='2'><input type='submit' value='$lng{"Send_Button"}'>&nbsp;&nbsp;&nbsp;<input type='reset' value='$lng{"Blog_Reset_Buttom"}'></td></tr>
</tr>
</form>
</table>
<div>
$lng{"Quick_Help_Add_Blog"}
</div>
~;
}

sub addblogs {

use utf8;
use Encode;

$us_=$dbh->quote($user);

$qu=qq~SELECT id,articled FROM all_users where name=$us_~;
$myd=$dbh->prepare($qu) or &error("$DBI::errstr $qu");
($myd->execute) or &error("$DBI::errstr $qu");
my ($us,$articled)=$myd->fetchrow_array;

if ($us eq "" || $articled==0) {
  print "Location: /cgi-bin/user.cgi?a=jump&m=".$lng{"No_Rights"}."&url=/blogs\n\n";
  return;
  }
#Если дневник есть.
$subj=$in->param("subj");
$text=$in->param("comm");
$nast=$in->param("nast");
$nasta=$in->param("nasta");
$music=$in->param("music");
$comm=$in->param("text");
$error{"0"}="Не заполнено поле ТЕМА" if $subj eq "";
$error{"1"}="Пустая запись" if $text eq "";
if (keys %error) {
  $comm="1" if $comm eq "";
  &addblog;
  }
else {
  $subj=~s/\</\&lt;/g;
  $subj=~s/\>/\&gt;/g;
  
  $text=Encode::decode_utf8($text);
  $subj=Encode::decode_utf8($subj);
  $text=&persasp($text);
  $subj=&persasp($subj);
  $text=Encode::encode_utf8($text);
  $subj=Encode::encode_utf8($subj);

  my $sj_=$dbh->quote($subj);
  $textsrc=$text;
  $text=controlhtml($text);

  $text=&platassi($text);

  
  $text=~s/(?<!'|"|\=)(http:\/\/[\.\/\%\#\&\?\-\_\=\+0-9a-zA-ZА-я]+)/&link_set($1)/ges;

  my $txt_=$dbh->quote($text);
  my $txtsrc_=$dbh->quote($textsrc);
  #my $ns_=$dbh->quote($nast);
  $nast=0 if $nast<0 || $nast>@emot;
  my $nasa_=$dbh->quote($nasta);
  my $ms_=$dbh->quote($music);
  if ($comm eq "on") {$comm=1} else {$comm=0}

  $ip = $ENV{'HTTP_X_FORWARDED_FOR'} || $ENV{'REMOTE_ADDR'};
  ($ip) = $ip =~ /^(.+?)(,|$)/;
  $ip=$dbh->quote($ip);

  my $qu="INSERT INTO all_blogs (user_id,subj,text_,added,comment,ip,refresh,text_src) values 
          ($us,$sj_,$txt_,now(),$comm,$ip,now(),$txtsrc_)";
  ($dbh->do("$qu")) or &error("$DBI::errstr $qu");
  
  my $vv=$user;
  $vv=~s/(.)/unpack("H2",$1)/eg;

  print "Location: /cgi-bin/user.cgi?a=jump&m=".$lng{"Article_Added"}."&url=/blogs/$vv\n\n";
  }
}



#######################################################################################

sub upla {
  $id=$in->param("id");
  
  if ($id eq "" || $id=~/\D/ || $group<3) {
    print "Location:/cgi-bin/blog.cgi\n\n";
    return;
    }
  $vok=1;
  $act="Редактировать запись";
  &headprint($lng{"Upla_Head"});
  my $out_tonews=qq~<option value='0'>$lng{"No_Send"}</option>~;
  my @tn_names=('',$lng{"Sumla_samah"},$lng{"Shuhash"},$lng{"Intervyu"},$lng{"Reclama"},$lng{"Tavlashu"},$lng{"Kasakla"});
  my $i=1;
  foreach ('blog','shuhash','intervyu','reclama','tavlashu','kasakla') {
    $out_tonews.=qq~<option value='$_'>$tn_names[$i]</option>~;$i++;
    }

  print qq~<form id="editform" name="editform" action="/cgi-bin/blog.cgi" method="POST" enctype="multipart/form-data">
  <input type='hidden' name='a' value='up'>
  <input type='hidden' name='id' value='$id'>
  $lng{"Upla_Img"}: <input type='file' name='file'><br>
  $lng{"Upla_Time"}: <input type='text' name='time'><br>
  $lng{"Upla_To_Chat"}: <input type='checkbox' name='chat' value='1'><br>
  $lng{"Upla_To_News"}: <select name='news'>$out_tonews</select><br>
  <input type='submit' value='$lng{"blog_up"}'>
  </form>
  ~;

  }

sub up {
  $id=$in->param("id");
  
  if ($id eq "" || $id=~/\D/ || $group<3) {
    print "Location:/cgi-bin/blog.cgi\n\n";
    return;
    }

  my $qu="SELECT b.id,b.text_,b.user_id,u.name,u.rname,r.rname,b.subj,b.top_image,b.user_name FROM all_blogs b LEFT JOIN all_users u ON u.id=b.user_id LEFT JOIN all_users_rname r ON r.user_id=b.user_id WHERE b.id=".$id;
  $myd=$dbh->prepare($qu) or &error("$DBI::errstr $qu");
  ($myd->execute) or &error("$DBI::errstr $qu");
  my @blog=$myd->fetchrow_array;

#  $vok=1;
#  print "Content-Type:text/html\n\n";
#  $act="Редактировать запись";
#  &headprint($act);

  my ($img,$tm_);
  $time=$in->param("time");
  if ($time=~/(\d{4})\.(\d{2})\.(\d{2}) (\d{2}\:\d{2})/) {
    $tm_=$dbh->quote(qq~$1-$2-$3 $4~);
    }
  else {
    $tm_='now()';
    }

  my $nimg = $in->upload("file"); 
  my @rash=('gif','jpg','png','jpeg','ico');

  if ($nimg) {
    my $fileName = $nimg; 
    $fileName =~ s!^.*(\\|\/)!!; #������� �������.
    $fileName =~ tr/A-Z/a-z/;
    $fileName =~ s/[^A-Za-z\-\_\.0-9]/0/gs;
    $fileName =~ /(.+)\.(.+?)$/;
    $img=$2; $yes=0;
    foreach (@rash) { $yes=1 if $_ eq $img;}
    $nimg="" if $yes!=1;
    }

  my $mess;
  if ($nimg ne "") {
    my $file_link=qq~$image_url/$blog[0].$img~;
    my $file_mini_link=qq~$image_url/mini/$blog[0].$img~;
    open (OUTFILE,">".$file_link) || &error ("Error: ".$!);;
    binmode(OUTFILE);
    while (my $bytesread = read($nimg, my $buffer, 1024)) { 
      print OUTFILE $buffer || &error ("Error: ".$!); 
      } 
    close (OUTFILE);

    use Image::Magick;
    use Image::Size;

    my $image2 = Image::Magick->new;
    my $x = $image2->Read($file_link);# || &error ("Error image read $image_url/$blog[0].$img:".$!);

    my ($globe_x, $globe_y) = Image::Size::imgsize($file_link);# || &error ("Error size read $blog[0].$img:".$!);
    if ($globe_x>0) {
      my $new_x=600;
      my $new_y=int(600*$globe_y/$globe_x);

      $x=$image2->Resize(width=>$new_x, height=>$new_y);
      $x=$image2->Write($file_link);
      
      $x=$image2->Resize(width=>64, height=>64);
      $x=$image2->Write($file_mini_link);
      }
    else {
      &error("Image size no read");
      }
    $mess=$lng{"Save_Upload_Image_Blog_Note"};
    }
  elsif ($blog[1]=~/(\<img[^\>]+\>)/i) {
    my $tmp=$1;
    if ($tmp=~/src=("|'|)([^ "']+)("|'|)/i) {
      my $bimage_url=$2;
      
      $img=$bimage_url;
      if ($img=~/^.+\.(.+)$/) {
        $img=~s/^.+\.(.+)$/$1/;
        }
      else {
        $img='jpg';
        }

      use LWP::Simple;
      use URI::Escape;
      my $out_img=get($bimage_url);
      my $file_link=qq~$image_url/$blog[0].$img~;
      $file_mini_link=qq~$image_url/mini/$blog[0].$img~;
      open (FIMG,">".$file_link) || &error ("Error: ".$!);
      binmode(FIMG);
      print FIMG $out_img;
      close (FIMG);

      use Image::Magick;
      use Image::Size;

      my $image2 = Image::Magick->new;
      my $x = $image2->Read("../htdocs/images/blogs/".$blog[0].".".$img);# || &error ("Error image read $image_url/$blog[0].$img:".$!);

      my ($globe_x, $globe_y) = Image::Size::imgsize($file_link);# || &error ("Error size read $blog[0].$img:".$!);
      
      $blog[7]=$img;

      if ($globe_x>0) {
        my $new_x=600;
        my $new_y=int(600*$globe_y/$globe_x);

        $x=$image2->Resize(width=>$new_x, height=>$new_y);
        $x=$image2->Write($file_link);

        $x=$image2->Resize(width=>64, height=>64);
        $x=$image2->Write($file_mini_link);
        }
      else {
        &error("Image size no read");
        }
      }
    else {
      $img='none';
      }
    }
  else {
    $img='none';
    }

  if ($mess eq "") {
    if ($img eq "none") {
      $mess=$lng{"Not_Image_Blog_Note"};
      }
    else {
      $mess=$lng{"Save_Image_Blog_Note"};
      }
    }

  my $img_=$dbh->quote($img);

  $qu="UPDATE all_blogs SET top_image=$img_,top_vahat=$tm_ WHERE id=".$id;
  ($dbh->do($qu)) or &error("$DBI::errstr ".$qu);
  

  my $user_nm=$blog[3];
  $user_nm=$blog[4] if $blog[4] ne "";
  $user_nm=$blog[5] if $blog[5] ne "";

  # --------------------------------------------------------------------------
  my $tonews=$in->param("news");
  my $tmp=0;
  foreach ('blog','shuhash','intervyu','reclama','tavlashu','kasakla') {
    if ($_ eq $tonews) {$tmp=1;last;}
    }
  $tonews='' if $tmp==0;
  if ($tonews ne "") {
    my $txt=$dbh->quote("$tonews=$id");
    my $nm=$dbh->quote($blog[3]);
    my $usr=1;
    #$usr=1 if $blog[2]!=0;
    if ($blog[2]==0) {
      $nm=$dbh->quote($blog[8]);
      $usr=0;
      }
    my $ip=$dbh->quote($ENV{"REMOTE_ADDR"});
    my $head_=$dbh->quote($blog[6]);


    $qu="INSERT INTO ".$prf."_news (icon,sect,text_,name,user,flag,ip,added,subj,refresh,url,img_opis,img_icon
                                   ,olng_ch,olng_en,olng_eo,olng_ru,text_src,photo,blog_id,nopay,exp_flag,img_tip) values 
        (0,0,$txt,$nm,$usr,0,$ip,now(),$head_,now(),'http://','','',0,0,0,0,$txt,0,$id,1,0,1)";
    ($dbh->do("$qu")) or &error("$DBI::errstr $qu");
    
    my $nid= $dbh -> {'mysql_insertid'}; 
    $nid=~s/0E0$//;

    $qu="SELECT l.tag_id FROM all_blog_tagsem l WHERE l.blog_id=".$id;
    $myd=$dbh->prepare($qu) or &error("$DBI::errstr $qu");
    ($myd->execute) or &error("$DBI::errstr $qu");
    my $tlist=$myd->fetchall_arrayref;

    foreach (@$tlist) {
      my ($tname,$tcnt)=&get_tag_lng(@$_[0]);
      my $tnm_=$dbh->quote($tname);

      my $qu="INSERT INTO ".$prf."_news_tags (news_id,name,vitem) values ($nid,$tnm_,1)";
      ($dbh->do("$qu")) or &error("$DBI::errstr $qu");
      }
    }

  #b.id,b.text_,b.user_id,u.name,u.rname,r.rname
  if ($in->param("chat")==1) {
    my ($chat_text,$chat_text_src);
    if ($img eq "none") {
  
      $chat_text=qq~<p>$lng{"Chat_New_Subj"}</p>
      <blockquote><img src='/images/blogs/0.jpg' style='float:left;width:100px;'><h4><a href='/blogs/comments/$blog[0].html'>$user_nm: $blog[6]</a></h4>
      <div class='clear'> </div></blockquote>~;
      
      $chat_text_src=qq~((blog|$user_nm|$blog[0]|$blog[6]|0))~;
      }
    else {
      my $user_nm=$blog[3];
      $user_nm=$blog[4] if $blog[4] ne "";
      $user_nm=$blog[5] if $blog[5] ne "";
  
      $chat_text=qq~<p style='color:#006FFF;'>$lng{"Chat_New_Subj"}</p>
      <blockquote><img src='/images/blogs/$blog[0].$blog[7]' style='float:left;width:100px;'><h4><a href='/blogs/comments/$blog[0].html'>$user_nm: $blog[6]</a></h4>
      <div class='clear'> </div></blockquote>~;
      
      $chat_text_src=qq~((blog|$user_nm|$blog[0]|$blog[6]|$blog[7]))~;
  
      }
  
    &add_chat($chat_text,$chat_text_src);
    }
  print "Location: /cgi-bin/user.cgi?a=jump&m=".$mess."&url=/blogs/comments/$id.html\n\n";
  }

#######################################################################################

sub eblog {

$id=$in->param("id");

$error=2 if $user eq "";
$error=1 if $id eq "" || $id=~/\D/;

if ($error==0) {
  $us_=$dbh->quote($user);
  $qu="select u.id from all_users u,all_blogs b where u.id=b.user_id and b.id=".$id." and name=".$us_;
  $myd=$dbh->prepare($qu) or &error("$DBI::errstr $qu");
  ($myd->execute) or &error("$DBI::errstr $qu");
  my $us=$myd->fetchrow_array;
  $error=3 if $us eq "" && $group<3;
  }
if ($error!=0) {
  &main;
  return;
  }
else {
  $qu=qq~SELECT b.id,b.subj,b.text_src,b.comment,b.nastr,b.nastr_adv,b.music,b.hupla,b.rec,b.index_pur,b.user_id,u.name,b.user_name,
                b.nopub_ch,b.nopub_ru,b.nopub_en,b.nopub_eo
         FROM all_blogs b
         LEFT JOIN all_users u ON u.id=b.user_id
         WHERE b.id=$id~;
  $myd=$dbh->prepare($qu) or &error("$DBI::errstr $qu");
  ($myd->execute) or &error("$DBI::errstr $qu");
  my @b=$myd->fetchrow_array;
  $subj=$b[1] if $subj eq "";
  $b[2]=~s/<br>/\n/g;
  $text=$b[2] if $text eq "";
  if ($b[3]==1) {
    $b[3]="on";
    }
  else {
    $b[3]="4";
    }

  
  
  $comm=$b[3] if not $comm;
  $nast=$b[4] if $nast eq "";
  $nasta=$b[5] if $nasta eq "";
  $music=$b[6] if $music eq "";
  $indexpur=$b[9] if $indexpur eq "";
  $indexpur=0 if $indexpur!=1;
  $nopubch=$b[13] if $nopubch eq "";
  $nopubch=0 if $nopubch!=1;
  $nopubru=$b[14] if $nopubru eq "";
  $nopubru=0 if $nopubru!=1;
  $nopuben=$b[15] if $nopuben eq "";
  $nopuben=0 if $nopuben!=1;
  $nopubeo=$b[16] if $nopubeo eq "";
  $nopubeo=0 if $nopubeo!=1;

  $author_id=$b[10] if $author_id eq "";
  $author_name=$b[12] if $author_name eq "";

  $vok=1;
  $act="Редактировать запись";
  &headprint($act);

  $qu="select id from all_users where name=".$us_;
  $myd=$dbh->prepare($qu) or &error("$DBI::errstr $qu");
  ($myd->execute) or &error("$DBI::errstr $qu");
  my $us=$myd->fetchrow_array;
  if ($us eq "") {
    print qq~Ошибка: Не найден ваш дневник<br>
    ~;
    return;
    }
  #Если дневник есть.
  if (not $comm) {
    $comm_out=" checked";
    #print "YES";
    }
  else {
    $comm_out=" checked" if $comm eq "on";
    }
  my $nast_out;
  for (my $i=0;$i<@emot;$i++) {
    my $sel="";
    $sel=" selected" if $i==$nast;
    $nast_out.=qq~<option value=$i$sel>$emot[$i]</option>~;
    }

  if (keys %error) {
    print "<span style='color:red'>Ошибки:</span><span style='color:yellow;font-style:italic'>";
    foreach my $var (sort keys %error) {
      print "<li style='list-style:none inside none;'>".$var.": ".$error{$var}."\n";
      }
    print "</span><br>";
    }
  $text=~s/<a href=("|')(http:\/\/[\.\/\%\&\?\-\_\=\+0-9a-zA-ZА-я]+)\1>\2<\/a>/$2/g;

  # Moderator tuma irekle ses pay -----------------------------------------------------------------------------------------|||||------

  my ($hupla_out,$tag_out,$author_edit);
  if ($group>3) {
    my ($huplayal,$reccana,$nopub_ch,$nopub_ru,$nopub_en,$nopub_eo);
    $huplayal=" checked" if $b[7]==1;
    $reccana=" checked" if $b[8]==1;
    $indexpurri=" checked" if $b[9]==1;

    $nopub_ch=" checked" if $nopubch==1;
    $nopub_ru=" checked" if $nopubru==1;
    $nopub_en=" checked" if $nopuben==1;
    $nopub_eo=" checked" if $nopubeo==1;

    $author_edit=qq~<tr><td>$lng{"Author_Id"}:</td><td colspan='2'><input type='text' style='width:80px;' name='author_id' value='$author_id'> <b>$b[11]</b></td></tr>
    <tr><td>$lng{"Author_Name"}:</td><td colspan='2'><input type='text' style='width:450px;' name='author_name' value='$author_name'></td></tr>~;
    $hupla_out=qq~<tr><td></td>
    <td colspan='2'><div><input type='checkbox' name='hupla'$huplayal> - $lng{"Hupla_Siru"}</div></td></tr>
    <tr><td></td><td colspan='2'><div><input type='checkbox' name='rec'$reccana> - $lng{"Blog_Actual_Note"}</div></td></tr>
    <tr><td></td><td colspan='2'><div><input type='checkbox' name='indexpur'$indexpurri> - $lng{"Blog_Index_Yurat"}</div></td></tr>
    <tr><td></td><td colspan='2'><div style='margin-top: 15px;  padding:10px;  border:1px solid #e6cd99;  width: 455px;  box-sizing: border-box; 
      border-radius:3px;'><input type='checkbox' name='nopub_ch'$nopub_ch> - $lng{"Blog_No_Publication_Ch"}<br /><input 
      type='checkbox' name='nopub_ru'$nopub_ru> - $lng{"Blog_No_Publication_Ru"}<br /><input type='checkbox' name='nopub_en'$nopub_en> - $lng{"Blog_No_Publication_En"}<br /><input 
      type='checkbox' name='nopub_eo'$nopub_eo> - $lng{"Blog_No_Publication_Eo"}</div></td></tr>
        ~;

    if ($tags eq "") {

      $qu="select l.tag_id FROM all_blog_tagsem l WHERE l.blog_id=".$id;
      $myd=$dbh->prepare($qu) or &error("$DBI::errstr $qu");
      ($myd->execute) or &error("$DBI::errstr $qu");
      my $tlist=$myd->fetchall_arrayref;
      my @TL;
      foreach (@$tlist) {
        my ($tname,$tcnt)=&get_tag_lng(@$_[0]);
        push @TL,$tname;
        }
      $tags=join ",",@TL;
      }

    $tag_out=qq~<tr><td valign=top>$lng{"Blog_Tags"}:</td><td colspan='2'><textarea name='tags' style='width:450px;height:80px'>$tags</textarea></td></tr>~;
    
    }

  # Moderator tuma irekle ses pay -----------------------------------------------------------------------------------------||||------

  print qq~
<script>
function b_img_usas() {
  document.getElementById("b_img_btns").style.display='';
  document.getElementById("b_img_hup_link").style.display='';
  document.getElementById("b_img_us_link").style.display='none';
  }
function b_img_hupas() {
  document.getElementById("b_img_btns").style.display='none';
  document.getElementById("b_img_hup_link").style.display='none';
  document.getElementById("b_img_us_link").style.display='';
  }
</script>
<table class='form' width='100%'>
<form id="editform" name="editform" action='/cgi-bin/blog.cgi' method='POST'>
<input type='hidden' name='a' value='es'>
<input type='hidden' name='id' value='$id'>
<tr><td>$lng{"Blog_Note_Title"}:</td><td colspan='2'><input type='text' style='width:450px;' name='subj' value='$subj'></td></tr>
$author_edit
<tr><td valign=top>$lng{"Blog_Note"}:</td><td colspan='2'>
<span id="my-buttons" style='line-height: 27px;'>
<A href="javascript:insertTags('<b>','</b>','');" class='btn' title="Жирный шрифт"><b>B</b></a>
<A href="javascript:insertTags('<i>','</i>','');" class='btn' title="Курсив"><i>I</i></a>
<A href="javascript:insertTags('<u>','</u>','');" class='btn' title="Подчеркивание"><u>U</u></a>
<A href="javascript:insertTags('<s>','</s>','');" class='btn' title="Зачеркнуто"><s>T</s></a>
<A href="javascript:insertTags('<h3>','</h3>','');" class='btn' title="Большой заголовок">Заг1</a>
<A href="javascript:insertTags('<h4>','</h4>','');" class='btn' title="Средний заголовок">Заг2</a>
<A href="javascript:insertTags('<h5>','</h5>','');" class='btn' title="Малый заголовок">Заг3</a>
<A href="javascript:insertTags('<pre>','</pre>','');" class='btn' title="Форматированный текст">#</a>
<A href="javascript:insertTags('<sub>','</sub>','');" class='btn' title="Нижний текст">X<sub>2</sub></a>
<A href="javascript:insertTags('<sup>','</sup>','');" class='btn' title="Верхний текст">X<sup>2</sup></a>
<span class='b_img_us'>
<a href="javascript:b_img_usas();" id='b_img_us_link' class='btn' title="Вставка картинки">Картинка</a>
<a href="javascript:b_img_hupas();" id='b_img_hup_link' style='display:none;' class='btn' title="Вставка картинки">Картинка</a>
<span id='b_img_btns' style='display:none;'><A href="javascript:insertTags('<img class=\\\'img_blog img_100\\\' src=\\\'','\\\'>','');b_img_hupas();" class='btn' title="Сарлакӑшпе">Сарлакӑшпе</a><br /><A 
href="javascript:insertTags('<img class=\\\'img_right\\\' src=\\\'','\\\'>','');b_img_hupas();" class='btn' title="Сылтӑмалла">Сылтӑмалла</a></span>
</span>
<a href="javascript:insertTags('<blockquote>','</blockquote>','');" class='btn' title="Цитата">Цитата</a>
<A href="javascript:insertTags('http://','','');" class='btn' title="http://">http://</a>
</span><br>
<textarea name='comm' style='width:450px;height:300px'>$text</textarea></td></tr>
$tag_out
<tr><td></td><td colspan='2'><div><input type='checkbox' name='text'$comm_out> - $lng{"Enable_Comments"}</div></td></tr>
$hupla_out
<tr><td></td><td colspan='2'><input type='submit' value='$lng{"Send_Button"}'>&nbsp;&nbsp;&nbsp;<input type='reset' value='$lng{"Blog_Reset_Buttom"}'></td></tr>
</tr>
</form>
</table>
<h4 class='ch2'>Разрешенные тэги:</h4><p>
&lt;i&gt; &lt;b&gt; &lt;u&gt; &lt;s&gt; &lt;a&gt; &lt;img&gt; &lt;h1&gt; &lt;h2&gt; 
&lt;h3&gt; &lt;pre&gt; &lt;sub&gt; &lt;sup&gt; &lt;ul&gt; &lt;ol&gt; &lt;li&gt;<br>
(Все тэги должны быть оформлены по правилам. Если тэг требует закрытия - он должен быть закрыт)
</p>
  ~;
  }
}

#########################################################################################

sub eblogs {

use utf8;
use Encode;

$id=$in->param("id");

$error=2 if $user eq "";
$error=1 if $id eq "" || $id=~/\D/;

if ($error==0) {
  $us_=$dbh->quote($user);
  $qu="select u.id from all_users u,all_blogs b where u.id=b.user_id and b.id=".$id." and name=".$us_;
  $myd=$dbh->prepare($qu) or &error("$DBI::errstr $qu");
  ($myd->execute) or &error("$DBI::errstr $qu");
  my $us=$myd->fetchrow_array;
  $error=3 if $us eq "" && $group<3;
  }
if ($error!=0) {
  print "Location:/cgi-bin/blog.cgi\n\n";
  return;
  }
else {

  $qu="select id from all_users where name=".$us_;
  $myd=$dbh->prepare($qu) or &error("$DBI::errstr $qu");
  ($myd->execute) or &error("$DBI::errstr $qu");
  my $us=$myd->fetchrow_array;
  if ($us eq "") {
    print "Location:/cgi-bin/blog.cgi\n\n";
    return;
    }
  #Если дневник есть.
  $subj=$in->param("subj");
  $text=$in->param("comm");
  $nast=$in->param("nast");
  $nasta=$in->param("nasta");
  $music=$in->param("music");
  $comm=$in->param("text");
  $author_id=$in->param("author_id");
  $author_name=$in->param("author_name");

  $error{"0"}="Не заполнено поле ТЕМА" if $subj eq "";
  $error{"1"}="Пустая запись" if $text eq "";
  if (keys %error) {
    $comm="1" if $comm eq "";
    &eblog;
    }
  else {
    $subj=~s/\</\&lt;/g;
    $subj=~s/\>/\&gt;/g;
    
    $subj=Encode::decode_utf8($subj);
    $subj=&persasp($subj);
    $subj=Encode::encode_utf8($subj);

    my $sj_=$dbh->quote($subj);
    $text_src=$text;
    $text=controlhtml($text);

    $text=&platassi($text);

    $text=Encode::decode_utf8($text);
    $text=&persasp($text);
    $text=Encode::encode_utf8($text);
    
    #$text=~s/(?<!('|"))(http:\/\/[\.\/\%\&\?\-\_\=\+0-9a-zA-ZА-я]+)/<a href=\"$2\">$2<\/a>/g;
    $text=~s/(?<!'|")(http:\/\/[\.\/\#\%\&\?\-\_\=\+0-9a-zA-Z�_-�_]+)/&link_set($1)/ges;

    my $txt_=$dbh->quote($text);
    
    my $txtsrc_=$dbh->quote($text_src);
    $nast=0 if $nast<0 || $nast>@emot;
    my $nasa_=$dbh->quote($nasta);
    my $ms_=$dbh->quote($music);
    if ($comm eq "on") {$comm=1} else {$comm=0}
    
    $ip = $ENV{'HTTP_X_FORWARDED_FOR'} || $ENV{'REMOTE_ADDR'};
    ($ip) = $ip =~ /^(.+?)(,|$)/;

    $ip=$dbh->quote($ip);
  
    my $hupla_out;
    if ($group>3) {
      my $hup=$in->param("hupla");
      my $rec=$in->param("rec");
      my $indexpur=$in->param("indexpur");
      my $nopubch=$in->param("nopub_ch");
      my $nopubru=$in->param("nopub_ru");
      my $nopuben=$in->param("nopub_en");
      my $nopubeo=$in->param("nopub_eo");
      
      my $hupla=0;
      my $recom=0;
      my $indpur=0;
      $hupla=1 if $hup eq "on";
      $recom=1 if $rec eq "on";
      $indpur=1 if $indexpur eq "on";

      my $np_ch=0;
      my $np_ru=0;
      my $np_en=0;
      my $np_eo=0;
      $np_ch=1 if $nopubch eq "on";
      $np_ru=1 if $nopubru eq "on";
      $np_en=1 if $nopuben eq "on";
      $np_eo=1 if $nopubeo eq "on";


      #изменение авторов
      $author_id=0 if $author_id eq '' || $author_id=~/\D/;
      $anm_=$dbh->quote($author_name);
  
      $hupla_out=qq~, hupla=$hupla, rec=$recom, user_id=$author_id, user_name=$anm_, index_pur=$indpur, nopub_ch=$np_ch, nopub_ru=$np_ru, nopub_en=$np_en, nopub_eo=$np_eo~;

      my $tags=$in->param("tags");
      my @TLIST=split(/\,/,$tags);
      
      if ($tags ne "") {

        $qu="DELETE FROM all_blog_tagsem WHERE blog_id=".$id;
        ($dbh->do($qu)) or &error("$DBI::errstr ".$qu);

        foreach (@TLIST) {
          my $tid_=&edit_tags($_,"all_blog_tags",'all_blog_alias');

          $qu="INSERT INTO all_blog_tagsem (tag_id,blog_id) values ($tid_,$id)";
          ($dbh->do($qu)) or &error("$DBI::errstr ".$qu);
          }
        }
      
      }

    my $qu="UPDATE all_blogs SET subj=$sj_,text_=$txt_,text_src=$txtsrc_,edit=now(),comment=$comm,ip=$ip$hupla_out WHERE id=".$id;
    ($dbh->do("$qu")) or &error("$DBI::errstr $qu");
   
    my $vv=$user;
    $vv=~s/(.)/unpack("H2",$1)/eg;

    print "Location: /cgi-bin/user.cgi?a=jump&m=OK&url=/blogs/comments/$id.html\n\n";
    }
  }
}

#########################################################################################

sub delblog {


$id=$in->param("id");

$error=2 if $user eq "";
$error=1 if $id eq "" || $id=~/\D/;

if ($error==0) {
  $us_=$dbh->quote($user);

  my $qu=qq~SELECT b.id FROM all_users u,all_blogs b WHERE u.id=b.user_id and b.id=$id and name=$us_~;

  if ($group>3) {
    $qu=qq~SELECT b.id FROM all_blogs b WHERE b.id=$id~;
    }

  $myd=$dbh->prepare($qu) or &error("$DBI::errstr $qu");
  ($myd->execute) or &error("$DBI::errstr $qu");
  my $bid=$myd->fetchrow_array;

  if ($bid eq "") {
    print "Location: /cgi-bin/user.cgi?a=jump&m=Not us&url=/cgi-bin/blog.cgi\n\n";
    return;
    }
  }

if ($error==0) {
  $qu=qq~DELETE FROM all_blogs WHERE id=$id~;
  ($dbh->do($qu)) or &error("$DBI::errstr ".$qu);
  }
else {
  print "Location: /cgi-bin/user.cgi?a=jump&m=Not OK ($error)&url=/\n\n";
  exit;
  }

print "Location: /cgi-bin/blog.cgi\n\n";
}

#sub error {
#  print "Content-Type:text/html\n\n" if $vok!=1;
#  print "<font style='color:yellow; font:20pt Verdana;font-weight:bold;'>&nbsp;&nbsp;&nbsp;MySQL_Error:</font><font style='font:16pt Verdana;'> $_[0]</font><br><br><img src='/ball_whi.gif'><a href=\"/cgi-bin/am.cgi?to=Дракола\">Сообщите</a> нам об ошибке!";
#  if ($vok==1) {print "</td></tr></table>";
#    outp("dd.shtml");}
#  exit;
#  }

sub chname_ {
my $nn=$_[0];
my $ename=0;
my $nn_=$dbh->quote($nn);
$qu="select count(*) from all_users where name = $nn_"; 
my $myd= $dbh->prepare($qu);
($myd->execute) or &error("$DBI::errstr $qu");
my $kolvo=$myd->fetchrow_array;
$ename=1 if $kolvo>0;
return($ename);
  }

sub outp2 {
my $s_val=shift;
$s_val="../ggm/".$s_val;
open (F3, $s_val);
my @f5=<F3>;
close(F3);
foreach (@f5) {
  if (/<\!\-\-\#include virtual=\'\/ggm\-cgi\-bin\/(\w+)\.cgi\'\-\-\>\n/) {
    my $prc=$1;
    my $hst=$ENV{'HTTP_HOST'};
    $link="${hst}$ENV{'REQUEST_URI'}";
    $link=~s/^\//${hst}\//;
    $miurl=$url;
    $url=$link;
    require "${prc}.pm";
    $url=$miurl;
    } 
  elsif (/<!-- SCRIPT -->/) {print "<SCRIPT LANGUAGE=\"JavaScript\" SRC=\"/edit.js\"></SCRIPT>
\n"}  
  else { print $_;}
  }
}

######################################################################################################

sub comm {
my $id=$in->param("id");
my $p=$in->param("p");
my $jump=$in->param("jump");
my $type=$in->param("type");

if ($type==3) {
  $jump=~s/__ID__/$id/gs;
  print "Location: $jump\n\n";
  }

if ($id eq "" || $id=~/\D/) {
  print "Location: /blogs\n\n";
  return;
  }

my %langs_id=("cv"=>"https://chuvash.org",
      "ch"=>"https://chuvash.org",
      "en"=>"https://en.chuvash.org",
      "eo"=>"https://eo.chuvash.org",
      "ru"=>"https://ru.chuvash.org"
      );


$vok=1;
$lng{"Note_Comments"}=~s/__ID__/$id/gs;
$act=$lng{"Note_Comments"};

$shead->{"NoRight"}=1;


$p=0 if $p eq "" || $p=~/\D/;

my $nopub;
$nopub=qq~ AND nopub_${prf}=0~ if $group<3;

$qu="select b.id,subj,b.text_,cat,cat_adv,DATE_FORMAT(b.added,'%d.%m.%Y %H:%i'),comment,nastr,nastr_adv,music,b.ip,u.name,u.id,
       sum(case when c.blog_id = b.id then 1 else 0 end),p.blog_name,p.avatar,link,views,r.rname,u.rname,b.top_image,b.user_name,index_pur 
       FROM all_blogs b 
       LEFT JOIN all_users u on u.id=b.user_id 
       LEFT JOIN all_blog_comments c on b.id=c.blog_id and c.type=1
       LEFT JOIN all_par p on b.user_id=p.user_id 
       LEFT JOIN all_users_rname r ON u.id=r.user_id

       WHERE b.id=".$id.$nopub." GROUP BY b.id";

#$qu="select b.id,subj,text_,cat,cat_adv,added,comment,nastr,nastr_adv,music,b.ip,u.name,u.id,0,p.blog_name,p.avatar from all_blogs b, all_users u where u.id=b.user_id and b.id=".$id;
$myd=$dbh->prepare($qu) or &error("$DBI::errstr $qu");
($myd->execute) or &error("$DBI::errstr $qu");
my $ii=$myd->fetchall_arrayref;

my $user_head=$ii->[0]->[11];
my $uu=$user_head;
$uu=~s/(.)/unpack("H2",$1)/eg;

$user_head=$ii->[0]->[19] if $ii->[0]->[19] ne "";
$user_head=$ii->[0]->[18] if $ii->[0]->[18] ne "";
$user_head=$ii->[0]->[21] if $user_head eq "";

$shead->{"OGImage"}=$langs_id{$prf}."/images/blogs/".$ii->[0]->[0].".".$ii->[0]->[20] if $ii->[0]->[20] ne "";

my @ol=($ii->[0]->[0],$ii->[0]->[0],$ii->[0]->[0],$ii->[0]->[0]);
my %Onot=('ch'=>0,'en'=>1,'eo'=>2,'ru'=>3);
$ol[$Onot{$prf}]=0;

#Langs
my $olng;
my @LN=('ch','en','eo','ru');
for (my $n=0;$n<@ol;$n++) {
  if ($ol[$n] ne "" && $ol[$n]>0) {
    $olng->{$LN[$n]}->{"Link"}=qq~$langs_id{$LN[$n]}/blogs/comments/$ol[$n].html~;
    $olng->{$LN[$n]}->{"Name"}=$lng{"Language_Out_".$LN[$n]};
    }
  }
$shead->{"Other_Lang"}=$olng;

if ($ii->[0]->[0] eq '') {
  print "Location: /blogs\n\n";
  return;
  }

&headprint($user_head.': '.$ii->[0]->[1],$shead);

#$uu=~s/(..)/pack("C",hex($1))/eg;

$lng{"All_User_Blog_Notes"}=~s/__NAME__/$user_head/gs;
#print qq~<img src='/ball_whi.gif'> \[ <a href='/blogs/$uu'>$lng{"All_User_Blog_Notes"}</a> \]<br><br><table width='100%' cellpadding="0" cellspacing="0" border='0' class='aa'>~;
print qq~<table width='100%' cellpadding="0" cellspacing="0" border='0' class='aa'>~;
$ii->[0]->[17]++;
$ii->[0]->[2]=~s/\<\!\-\-\{\{iytam=(\d+),(ch|ru)\}\}\-\-\>/&bout_iytam($1,$2)/ie;

&outblog($ii,1);
print qq~</table>~;

$qu=qq~SELECT b.id,b.subj,DATE_FORMAT(b.added,'%Y.%m.%d'),b.top_image,u.name,u.id,r.rname,count(t.tag_id) nn,u.rname,b.user_name 
   FROM `all_blog_tagsem` t 
   LEFT JOIN `all_blogs` b ON t.blog_id=b.id
   LEFT JOIN all_users u on u.id=b.user_id 
   LEFT JOIN all_users_rname r ON u.id=r.user_id
   WHERE tag_id in (SELECT tag_id FROM all_blog_tagsem ts WHERE ts.blog_id=$id) AND b.id!=$id AND refresh>DATE_SUB(NOW(), INTERVAL 6 MONTH) 
   GROUP BY t.blog_id ORDER BY nn DESC,b.refresh DESC LIMIT 0,3~;
my $myd= $dbh->prepare($qu);
($myd->execute) or &error("$DBI::errstr $qu");
my $also=$myd->fetchall_arrayref;

print qq~<div style='margin-top:10px;margin-bottom:10px;'>
    <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- 728x90x2 -->
<ins class="adsbygoogle"
     style="display:inline-block;width:728px;height:90px"
     data-ad-client="ca-pub-1696718739327811"
     data-ad-slot="4229496696"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div>~;

if (@$also>0) {
  print qq~<div><h3 class='ch1'>$lng{"Also"}</h2></h2>~;
  my $ii=-1;
  my @mar_col=('margin-right:7px;','margin-right:5px;margin-left:5px;','margin-left:7px;');
  my @width_col=('33','34','33');

  foreach (@$also) {
    $ii++;
    my $image_src=qq~0.jpg~;
    if (@$_[3] ne "" && @$_[3] ne "none") {
      $image_src=qq~@$_[0].@$_[3]~;
      }
    my $buser_name=@$_[4];
    $buser_name=@$_[8] if @$_[8] ne "";
    $buser_name=@$_[6] if @$_[6] ne "";
    $buser_name=@$_[9] if $buser_name eq "";
    my $b_url=@$_[4];
    $b_url=~s/(.)/unpack("H2",$1)/eg;


    print qq~<div style='width:$width_col[$ii]%;float:left;'>
      <div style='$mar_col[$ii]'><a target='_blank' href='/blogs/comments/@$_[0].html' style='position:relative;text-shadow: 0px 0px 5px #FFF,0px 0px 3px #FFF,0px 0px 1px #FFF;'><img 
      src='/images/blogs/$image_src' border='0' style='box-shadow: 0px 0px 3px #7e7e7e; margin:5px; width: calc(100% - 10px);'>
      <span style='background-color: rgba(247, 249, 209, 0.5);position: absolute;bottom: 3px;font-family: "Ubuntu Condensed",sans-serif;width: calc(100% - 24px);display: block;margin: 5px;padding: 5px;text-align: right;color:#65480D;'>@$_[2]</span></a>
      <h3 class='video_block_name' style='margin-bottom: 0px;'><a target='_blank' href='/blogs/comments/@$_[0].html'>@$_[1]</a></h3>
      <div style='font-family: "Ubuntu Condensed",sans-serif;text-align: right;margin-right: 5px;'><a href='/blogs/$b_url'>$buser_name</a></div>
      </div>
      </div>~;
    }
  print qq~<div class="clear">&nbsp;</div>
  </div>~;
  }

my $pages=&out_comments (1,$id,$p); #���, id

if ($pages>1) {
  print "<div class='encyc_tags'><b>".$lng{"Pages"}."</b>:";
  my $sn=$p-5;
  $sn=1 if $sn<1;
  my $en=$p+5;
  $en=$pages if $en>$pages;
  print " <a href='/blogs/comments/$id/1.html'>1</a>,\n" if $sn>1;
  print "... " if $sn>2;
  
  for (my $ii=$sn;$ii<$en+1;$ii++) {
    if ($ii!=$p) {
      print " <a href='/blogs/comments/$id/$ii.html'>".$ii."</a>";
      }
    else {print " \[".$ii."\]"}
    print "," if $ii!=$pages;
    }
  print " ..." if $en<$pages-1;
  print " <a href='/blogs/comments/$id/$pages.html'>".$pages."</a>" if $en<$pages;
  print qq~</div>~;
  }

&comm_form($id,1,"/blogs/comments/__ID__.html",'blog.cgi') if $ii->[0]->[6]==1;

$qu="UPDATE all_blogs SET views=views+1 WHERE id=".$id;
($dbh->do($qu)) or &error("$DBI::errstr ".$qu);

}

###################################################################################################################

sub tag_edits {
  my $id = $in->param("id");

  if ($group<5 || $id eq "" || $id=~/\D/) {
    print "Location: /\n\n";
    return;
    }
  $ch= $in->param("ch");
  $ru= $in->param("ru");
  $eo= $in->param("eo");
  $en= $in->param("en");

  $ch_= $dbh->quote($ch);
  $ru_= $dbh->quote($ru);
  $eo_= $dbh->quote($eo);
  $en_= $dbh->quote($en);

  $qu="select count(*) from all_blog_tagsem where blog_id=".$id;
  my $myd= $dbh->prepare($qu);
  ($myd->execute) or &error("$DBI::errstr $qu");
  my $cnt_=$myd->fetchrow_array;
  $cnt_=0 if $cnt_ eq "";
  
  my $qu="UPDATE all_blog_tags SET `ch`=$ch_,`ru`=$ru_,eo=$eo_,en=$en_,cnt=$cnt_ WHERE id=".$id;
  ($dbh->do($qu)) or &error("$DBI::errstr ".$qu);

  print "Location: /cgi-bin/user.cgi?a=jump&m=".$lng{"Blog_Tag_Edit_OK"}."&url=/cgi-bin/user.cgi?a=v%26city=$id\n\n";

  }

sub tag_edit {
  my $id = $in->param("id");

  if ($group<5 || $id eq "" || $id=~/\D/) {
    print "Location: /\n\n";
    return;
    }
  $vok=1;
  &headprint($lng{'Blog_Tag_Edit_Head'});

  $qu="select ch,ru,eo,en,cnt from all_blog_tags where id=".$id;
  my $myd= $dbh->prepare($qu);
  ($myd->execute) or &error("$DBI::errstr $qu");
  my ($lng_ch,$lng_ru,$lng_eo,$lng_en,$tag_cnt)=$myd->fetchrow_array;

  $ch=$lng_ch if $ch eq "";
  $ru=$lng_ru if $ru eq "";
  $eo=$lng_eo if $eo eq "";
  $en=$lng_en if $en eq "";

  print qq~<table>
  <form artion='/cgi-bin/blog.cgi' method='POST'>
  <input name='a' value='tag_edits' type='hidden'>
  <input name='id' value='$id' type='hidden'>
  <tr><td><b>$lng{"Language_Out_cv"}</b>:</td><td><input type='text' name='ch' value='$ch'></td></tr>
  <tr><td><b>$lng{"Language_Out_ru"}</b>:</td><td><input type='text' name='ru' value='$ru'></td></tr>
  <tr><td><b>$lng{"Language_Out_en"}</b>:</td><td><input type='text' name='en' value='$en'></td></tr>
  <tr><td><b>$lng{"Language_Out_eo"}</b>:</td><td><input type='text' name='eo' value='$eo'></td></tr>
  <tr><td></td><td><input type='submit' value='$lng{"Blog_Tag_Edit_Send"}'></td></tr>
  </form>
  </table>~;

  }

sub tag_renames {
  my $id = $in->param("id");

  if ($group<5 || $id eq "" || $id=~/\D/) {
    print "Location: /\n\n";
    return;
    }

  my $ch = $in->param("ch");
  my $ru = $in->param("ru");
  my $eo = $in->param("eo");
  my $en = $in->param("en");

  $qu="select ch,ru,eo,en,cnt from all_city_tags where id=".$id;
  my $myd= $dbh->prepare($qu);
  ($myd->execute) or &error("$DBI::errstr $qu");
  my ($lng_ch,$lng_ru,$lng_eo,$lng_en,$tag_cnt)=$myd->fetchrow_array;
  my $aid;

  if ($ch ne "") {
    $aid=&tag_rename_lng($ch,$lng_ch,$id,'ch','all_blog_tags','all_blog_alias');
    }
  if ($ru ne "") {
    $aid=&tag_rename_lng($ru,$lng_ru,$id,'ru','all_blog_tags','all_blog_alias');
    }
  if ($en ne "") {
    $aid=&tag_rename_lng($en,$lng_en,$id,'en','all_blog_tags','all_blog_alias');
    }
  if ($eo ne "") {
    $aid=&tag_rename_lng($eo,$lng_eo,$id,'eo','all_blog_tags','all_blog_alias');
    }

  print "Location: /cgi-bin/user.cgi?a=jump&m=".$lng{"Blog_Tag_Reanme_OK"}."&url=/cgi-bin/user.cgi?a=v%26city=$aid\n\n";
  }

sub tag_rename_lng {
  my $ch=shift;
  my $lng_ch=shift;
  my $id=shift;
  my $plng=shift;
  my $tag_table=shift;
  my $alias_table=shift;

  my $alias=$dbh->quote($ch);
  my $ch_=$dbh->quote($lng_ch);
  my $plng_=$dbh->quote($plng);
  my $aid;

  #???????????? ??????? (???? ???????????? ????? ???)
  $qu="select id from $tag_table where id!=".$id." and $plng=".$alias." and $plng=".$ch_;
  my $myd= $dbh->prepare($qu);
  ($myd->execute) or &error("$DBI::errstr $qu");
  my $tid=$myd->fetchrow_array;
  
  if ($tid!=0) {
    $aid=$tid;
    }
  elsif ($ch ne $lng_ch) {

    $qu="select id from $tag_table where id!=".$id." and $plng=".$alias;
    my $myd= $dbh->prepare($qu);
    ($myd->execute) or &error("$DBI::errstr $qu");
    my $tid=$myd->fetchrow_array;
    
    if ($tid!=0) {
      $aid=$tid;
      }
    else {
      $qu="INSERT INTO $tag_table ($plng,cnt) values ($alias,1)";
      ($dbh->do($qu)) or &error("$DBI::errstr $qu");

      $aid= $dbh -> {'mysql_insertid'}; 
      $aid=~s/0E0$//;
      }
    $qu="INSERT INTO $alias_table (tag_id,name,lng) values ($aid,$ch_,$plng_)";
    ($dbh->do($qu)) or &error("$DBI::errstr $qu");
    }
  else {
    return($id);
    }

  my $cnt;
  #????? ???? ??????????? ??????? ????????.... ------------------------------------------------
  if ($tag_table eq "all_city_tags") {
    my $qu="UPDATE all_users SET beth_locat=$aid WHERE beth_locat=".$id;
    ($dbh->do($qu)) or &error("$DBI::errstr $qu");
    my $qu="UPDATE all_users SET live_locat=$aid WHERE live_locat=".$id;
    ($dbh->do($qu)) or &error("$DBI::errstr $qu");

    $qu="select count(*) from all_users where beth_locat=$aid or live_locat=".$aid;
    my $myd= $dbh->prepare($qu);
    ($myd->execute) or &error("$DBI::errstr $qu");
    $cnt=$myd->fetchrow_array;
    }
  elsif ($tag_table eq "all_nation_tags") {
    my $qu="UPDATE all_users SET nation=$aid WHERE nation=".$id;
    ($dbh->do($qu)) or &error("$DBI::errstr $qu");

    $qu="select count(*) from all_users where nation=".$aid;
    my $myd= $dbh->prepare($qu);
    ($myd->execute) or &error("$DBI::errstr $qu");
    $cnt=$myd->fetchrow_array;
    }
  # -------------------------------------------------------------------------------------------

  my $qu="UPDATE $tag_table SET cnt=$cnt WHERE id=".$aid;
  ($dbh->do($qu)) or &error("$DBI::errstr $qu");
  
  my $qu="DELETE FROM $tag_table WHERE id=".$id;
  ($dbh->do($qu)) or &error("$DBI::errstr $qu");

  return($aid);
  
  }

sub search {
  $sr = $in->param("sr");
  if ($sr eq "") {
    print qq~Location: /cgi-bin/index.cgi\n\n~;
    exit;
    }

  $sr=Encode::decode_utf8($sr);
  $sr = &persasp($sr);
  $sr=Encode::encode_utf8($sr);
  
  $shead->{"JavaScript"}=qq~<link rel="stylesheet" href="/style_index2_.css" type="text/css" media="screen" />~;
  $vok=1;
  &headprint($lng{"Blog"}.": ".$lng{"Search"},$shead);

  my $sr_=$dbh->quote($sr);

#  $qu="SELECT n.id,'','',user_id,text_,'',DATE_FORMAT(added,'\%d.\%m.\%Y \%H:\%i'),0,subj,top_image,'','',views 
  $qu="SELECT n.id,'','',user_id,text_,'',DATE_FORMAT(added,'\%d.\%m.\%Y \%H:\%i'),0,subj,top_image,'','',views 
       FROM all_blogs n 
       WHERE hupla=0 AND 
             MATCH (n.subj,n.text_) AGAINST ($sr_ IN BOOLEAN MODE) 
       ORDER BY MATCH (n.subj,n.text_) AGAINST ($sr_ IN BOOLEAN MODE), added DESC limit 0,30";
  my $myd= $dbh->prepare($qu);
  ($myd->execute) or &error("$DBI::errstr $qu");
  $news_=$myd->fetchall_arrayref;

  my @sr_list=split(/\s+/,$sr);
  foreach (@sr_list) {$_=~s/\*$/\\S\+/gs if $_=~/\*$/;}

  my $sr_str=join "|",@sr_list;
  $sr_str=Encode::decode_utf8($sr_str);

  require "search.pm";
    
  &out_sr_form("blog",$sr,3); #script,word,tip
  if (@$news_>0)  {
    my $news_out; my @news_data;
    foreach (@$news_) {
      
      my $text='';
      @$_[4]=Encode::decode_utf8(@$_[4]);
      @$_[4]=~s/<.+?>//gs;
  
      if (@$_[4]=~/(.{0,100})($sr_str)(.{0,100})/is) {
        if (length($1)==100) {
          $text='...'.$1;
          } else {$text=$1}
        $text.='<b>'.$2.'</b>';
        if (length($3)==100) {
          $text.=$3.'...';
          } else {$text.=$3}
        $text=qq~<p class='blog_line_search'>$text</p>~;
        }
      $text=Encode::encode_utf8($text);
      my $img_link=qq~/images/blogs/0.jpg~;
      if (@$_[9] ne '') {
        $img_link=qq~/images/blogs/@$_[0].@$_[9]~;
        }
  
      my $uri_name=@$_[8];
      $uri_name=&fix_uri_name($uri_name);

      push @news_data,qq~<p class='blog_line' style='height:auto'><span class='index_date_main index_date_right'>@$_[6]</span><span 
      class='blog_line_avatar'><img src='$img_link' width='32' height='32'></span><span style='margin-left: 48px;display: block;'><a href='/content/@$_[0]-~.uri_escape($uri_name).qq~.html'>@$_[8]</a></span></p>$text~;
      }
  
    $news_out=join "",@news_data;
    
    print $news_out;
    }
  else {
    print qq~<p>$lng{"No_Search"}</p>~;
    }
  &out_sr_help;
  }



sub tag_rename {
  my $id = $in->param("id");

  if ($group<5 || $id eq "" || $id=~/\D/) {
    print "Location: /\n\n";
    return;
    }
  $vok=1;
  &headprint($lng{"Blog_Tag_Rename_Head"});

  $qu="select ch,ru,eo,en,cnt from all_blog_tags where id=".$id;
  my $myd= $dbh->prepare($qu);
  ($myd->execute) or &error("$DBI::errstr $qu");
  my ($lng_ch,$lng_ru,$lng_eo,$lng_en,$tag_cnt)=$myd->fetchrow_array;

  $ch=$lng_ch if $ch eq "";
  $ru=$lng_ru if $ru eq "";
  $eo=$lng_eo if $eo eq "";
  $en=$lng_en if $en eq "";

  print qq~<table>
  <form artion='/cgi-bin/blog.cgi' method='POST'>
  <input name='a' value='tag_renames' type='hidden'>
  <input name='id' value='$id' type='hidden'>
  <tr><td><b>$lng{"Language_Out_cv"}</b>: <i>$lng_ch</i>;</td><td> $lng{"Tag_New_Name"}: <input type='text' name='ch' value='$ch'></td></tr>
  <tr><td><b>$lng{"Language_Out_ru"}</b>: <i>$lng_ru</i>;</td><td> $lng{"Tag_New_Name"}: <input type='text' name='ru' value='$ru'></td></tr>
  <tr><td><b>$lng{"Language_Out_en"}</b>: <i>$lng_en</i>;</td><td> $lng{"Tag_New_Name"}: <input type='text' name='en' value='$en'></td></tr>
  <tr><td><b>$lng{"Language_Out_eo"}</b>: <i>$lng_eo</i>;</td><td> $lng{"Tag_New_Name"}: <input type='text' name='eo' value='$eo'></td></tr>
  <tr><td></td><td><input type='submit' value='$lng{"Blog_Tag_Rename_Send"}'></td></tr>
  </form>
  </table>~;
  }

sub edit_tags {
my $name=shift;        #���
my $tag_table=shift;   #� ����� ������� ��������
my $alias_table=shift; #� ����� ������� ������� ����� ���������

$name=nosp($name); #����������� �����
$name=~s/^\s+//gs;
$name=~s/\s+$//gs;

$lng_=$dbh->quote($prf);
if ($name ne "") {
  my $tmp=$dbh->quote($name);

  $qu="select tag_id from ".$alias_table." where name=".$tmp." and lng=".$lng_;
  my $myd= $dbh->prepare($qu) or &error("$DBI::errstr $qu");
  ($myd->execute) or &error("$DBI::errstr ".$qu);
  my $als=$myd->fetchrow_array;
  if ($als ne "") {
    $bl_=$als;
    }
  else { #�� ��� �㫠 ������ ��.
    $qu="select id from ".$tag_table." where ".$prf."=".$tmp;
    my $myd= $dbh->prepare($qu) or &error("$DBI::errstr $qu");
    ($myd->execute) or &error("$DBI::errstr ".$qu);
    $bl_=$myd->fetchrow_array;

    if ($bl_ eq "") {#���⯠�
      $qu="INSERT INTO ".$tag_table." ($prf,cnt) values ($tmp,1)";
      ($dbh->do($qu)) or &error("$DBI::errstr ".$qu);
      $bl_= $dbh -> {'mysql_insertid'}; 
      $uid=~s/0E0$//;
      }
    else {
      $qu="UPDATE ".$tag_table." SET cnt=cnt+1 WHERE id=".$bl_;
      ($dbh->do($qu)) or &error("$DBI::errstr ".$qu);
      }
    }
  }
else {
  $bl_='NULL';
  }

return ($bl_);
}

sub get_tag_nosql {
my $tag=shift;
my @tdat=@$tag;
my %tgs;
$tgs{"ch"}=$tdat[0];
$tgs{"ru"}=$tdat[1];
$tgs{"en"}=$tdat[2];
$tgs{"eo"}=$tdat[3];
  
$tag=$tgs{$prf};
if ($tag eq "") {
  foreach (@{$prioritet{$prf}}) {
    if ($tgs{$_} ne "") {
      $tag=$tgs{$_};
      last;
      }
    }
  }
return($tag);
}

sub lilatassi {
  my $v1=shift;
  my @lines=$v1=~/    • (.+?)\<br\>/gs;
  foreach (@lines) {
    $_=qq~<li>$_</li>~;
    }
  my $v2=join "",@lines;

  return(qq~<br><ul>$v2</ul><br>~);
  }

sub olilatassi {
  my $v1=shift;
  my @lines=$v1=~/    \d+\. (.+?)\<br\>/gs;
  foreach (@lines) {
    $_=qq~<li>$_</li>~;
    }
  my $v2=join "",@lines;

  return(qq~<br><ol>$v2</ol><br>~);
  }


sub platassi {
  my $text=shift;

  $text=~s/[\r\n]//gs;

  #Список
  $text=~s/\<br\>((    • (.+?)\<br\>)+)/&lilatassi($1)/iges;
  $text=~s/\<br\>((    \d+\. (.+?)\<br\>)+)/&olilatassi($1)/iges;

  my @t_lines=split(/\<br\>/,$text);

  foreach (@t_lines) {
    $_="\&nbsp;" if /^$/;
    if ($_=~/^(:+) /) {
      my $ks=length($1);
      $_=~s/^(:+) //;
      $ks=$ks*40;
      if ($ks>0) {$ks=qq~ style='padding-left:${ks}px;'~}
      else {$ks=''}
      $_=qq~<p$ks>$_</p>~;
      }
    elsif (($_!~/^</) || ($_=~/^<((b|i|u|sup)>|img|a )/)) {
      $_=qq~<p>$_</p>~;
      }
    }
  $text=join "\n",@t_lines;

  return($text);
  }

sub fix_uri_name {
  my $name=shift;
  $name=~tr/\/\&\?/   /;
  return($name);
  }

sub bout_iytam {
  my $i_id=shift;
  my $i_prf=shift;
  
  return if $i_id eq "" || $i_id=~/\D/;
  my $ret_text;
  
  $qu=qq~SELECT name,teple,s_open,tip FROM ${i_prf}_sas_iytu where id=$i_id~;
  my $myd= $dbh->prepare($qu);
  ($myd->execute) or &error("$DBI::errstr $qu");
  my @iytam=$myd->fetchrow_array;

  $ret_text=qq~  <tr><td><h3 class='ch2'><a href='/iytam/$i_id.html'>$iytam[0]</a></h3>
  <blockquote>$iytam[1]</blockquote>~;

  $ret_text.=&iytam_out($i_id,$sas_c,300,$iytam[2],$iytam[3],$i_prf);
  $ret_text.=qq~</td></tr>~;
  return($ret_text);
  }

sub iytam_out {
  my $id=shift;
  my $sas_c=shift;
  my $hayu=shift;
  my $open=shift;
  my $tip=shift;
  my $i_prf=shift;
  $i_prf=$prf if $i_prf eq "";

  $hayu=350 if $hayu==0;
  my $out_text;

  my $sas_=$dbh->quote($sas_c);
  my $ip_=$dbh->quote($ENV{"REMOTE_ADDR"});

  $qu="select count(*) FROM ${i_prf}_sas_hurav where (ip=$ip_ OR coockie=$sas_) AND iytu_id=".$id;
  my $myd= $dbh->prepare($qu);
  ($myd->execute) or &error("$DBI::errstr $qu");
  my $sas=$myd->fetchrow_array;

  if ($sas==0 && $open==1)  {

    $qu="select id,name FROM ${i_prf}_sas_huravsem where iytu_id=".$id;
    my $myd= $dbh->prepare($qu);
    ($myd->execute) or &error("$DBI::errstr $qu");
    my $saslav=$myd->fetchall_hashref("id");
    my $ilang_out;

    if ($prf ne $i_prf) {
      $ilang_out=qq~<input type='hidden' name='lang' value='$i_prf'>\n~;
      }

    $out_text.=qq~
    <form action='/cgi-bin/index.cgi' method='POST'>
    <input type='hidden' name='a' value='iytams'>$ilang_out
    <input type='hidden' name='id' value='$id'>
    <div style='padding:10px;'>~;
    
    foreach my $iy (keys %{$saslav}) {
      if ($tip==0) {
        $out_text.=qq~<input type='radio' value='$saslav->{$iy}->{"id"}' name='sas'> $saslav->{$iy}->{"name"}<br />~;
        }
      else {
        $out_text.=qq~<input type='checkbox' value='$saslav->{$iy}->{"id"}' name='sas'> $saslav->{$iy}->{"name"}<br />~;
        }
      }
    
    $out_text.=qq~</div>
    <div style='padding:10px'><input type='submit' name='act' value='$lng{"Iytam_Sasala"}'> <input type='submit' name='act' value='$lng{"Iytam_Petemletu_Pah"}'></div>
    </form>
    ~;
    }
  else {

    $qu="select id,name FROM ${i_prf}_sas_huravsem where iytu_id=".$id;
    my $myd= $dbh->prepare($qu);
    ($myd->execute) or &error("$DBI::errstr $qu");
    my $saslav=$myd->fetchall_hashref("id");
    
    my $all;
    $all=' hurav!=0 AND ' if $group<3;

    $qu="select hurav,count(hurav) FROM ${i_prf}_sas_hurav WHERE ".$all." iytu_id=".$id." GROUP BY hurav";
    my $myd= $dbh->prepare($qu);
    ($myd->execute) or &error("$DBI::errstr $qu");
    my $sassem=$myd->fetchall_arrayref;
    my $all_sas=0; my $max_sas=0;

    foreach (@$sassem) {
      if (@$_[0]==0) {
        $saslav->{0}->{"count"}=@$_[1];
        $saslav->{0}->{"name"}=$lng{"Huravlaman"};
        }

      $saslav->{@$_[0]}->{"count"}=@$_[1];
      $all_sas+=@$_[1];
      $max_sas=@$_[1] if @$_[1]>$max_sas;
      }

    $out_text.=qq~<div style='padding:10px;'>~;

    foreach my $iy (keys %{$saslav}) {
      my $count=0;
      if (exists $saslav->{$iy}->{"count"}) {
        $count=$saslav->{$iy}->{"count"};
        }
      my $width=3;
      if ($max_sas>0) {
        $width+=int($hayu*$count/$max_sas); #Процент пёлтёмёр
        }
      $out_text.=qq~<div style='padding-bottom:5px;'><div style='width:250px;float:left;'><b>$saslav->{$iy}->{"name"}</b></div><div style='margin-right:5px;background-color:#f0d2ba;float:left;border:1px solid #e4af9f;width:${width}px'>&nbsp;</div>$count 
      <div class="clear"></div></div>\n~;
      }

    $out_text.=qq~</div>~;
    }
  return ($out_text);
  }

sub controlhtml {
  my $a=shift;
  $a=~s/\</\&lt;/g;
  $a=~s/\>/\&gt;/g;
  $a=~s/\n/<br>/g;
#  $a=~s/\&lt;(B|I|U|S|\.\.\.|h1|h2|h3|h4|h5)\&gt;(.+?)\&lt;\/\1\&gt;/<$1>$2<\/$1>/gis;
  $a=~s/\&lt;(B)\&gt;(.+?)\&lt;\/\1\&gt;/<$1>$2<\/$1>/gsi;
  $a=~s/\&lt;(I)\&gt;(.+?)\&lt;\/\1\&gt;/<$1>$2<\/$1>/gsi;
  $a=~s/\&lt;(U)\&gt;(.+?)\&lt;\/\1\&gt;/<$1>$2<\/$1>/gis;
  $a=~s/\&lt;(S)\&gt;(.+?)\&lt;\/\1\&gt;/<$1>$2<\/$1>/gis;
  $a=~s/\&lt;p(.+?)\&gt;(.+?)\&lt;\/p\&gt;/<p$1>$2<\/p>/gis;
  $a=~s/\&lt;(pre)\&gt;(.+?)\&lt;\/\1\&gt;/<$1>$2<\/$1>/gis;
  $a=~s/\&lt;(blockquote)(.*?)\&gt;(.+?)\&lt;\/\1\&gt;/<$1$2>$3<\/$1>/gis;
  $a=~s/\&lt;(h1)\&gt;(.+?)\&lt;\/\1\&gt;/<$1>$2<\/$1>/gis;
  $a=~s/\&lt;(h2)\&gt;(.+?)\&lt;\/\1\&gt;/<$1>$2<\/$1>/gis;
  $a=~s/\&lt;(h3)\&gt;(.+?)\&lt;\/\1\&gt;/<$1>$2<\/$1>/gis;
  $a=~s/\&lt;(h4)\&gt;(.+?)\&lt;\/\1\&gt;/<$1>$2<\/$1>/gis;
  $a=~s/\&lt;(center)\&gt;(.+?)\&lt;\/\1\&gt;/<$1>$2<\/$1>/gis;
  $a=~s/\&lt;(sub)\&gt;(.+?)\&lt;\/\1\&gt;/<$1>$2<\/$1>/gis;
  $a=~s/\&lt;(sup)\&gt;(.+?)\&lt;\/\1\&gt;/<$1>$2<\/$1>/gis;
  $a=~s/\&lt;(ul)\&gt;(.+?)\&lt;\/\1\&gt;/<$1>$2<\/$1>/gis;
  $a=~s/\&lt;(li)\&gt;(.+?)\&lt;\/\1\&gt;/<$1>$2<\/$1>/gis;
  $a=~s/\&lt;(small)\&gt;(.+?)\&lt;\/\1\&gt;/<$1>$2<\/$1>/gis;
  $a=~s/\&lt;(ol)\&gt;(.+?)\&lt;\/\1\&gt;/<$1>$2<\/$1>/gis;
  $a=~s/\&lt;!--(.+?)--\&gt;/<!--$1-->/gs;
  $a=~s/\&lt;(span)(.*?)\&gt;(.*?)\&lt;\/\1\&gt;/<$1$2>$3<\/$1>/gsi;
  $a=~s/\&lt;(div)(.+?)\&gt;(.+?)\&lt;\/\1\&gt;/<$1$2>$3<\/$1>/gsi;
  $a=~s/\&lt;img(.+?)\&gt;/&imgsrc($1)/gsie;
  $a=~s/\&lt;(div)(.*?)\&gt;(.+?)\&lt;\/\1\&gt;/<$1$2>$3<\/$1>/gsi;
  $a=~s/\&lt;(audio)(.*?)\&gt;\&lt;\/\1\&gt;/<$1$2><\/$1>/gsi;
  #��� �����-஫����
  $a=~s/(\&lt;object.+?\&gt;\s*((\&lt;param.+?\&gt;\&lt;\/param.+?\&gt;|\&lt;param.+?(\/|)\&gt;)\s*){1,}\&lt;embed.+?\&gt;.*?\&lt;\/embed\&gt;.*?\&lt;\/object\&gt;)/&video($1)/gsie;
  $a=~s/(\&lt;iframe.+?width="[\%\d]+".+?height="\d+".+?src="[^"]+?".+?\&lt;\/iframe\&gt;)/&video($1)/gsie;
  $a=~s/\&lt;(table)\&gt;(.+?)\&lt;\/\1\&gt;/<$1>$2<\/$1>/gsi;
  $a=~s/\&lt;(tr)\&gt;(.+?)\&lt;\/\1\&gt;/<$1>$2<\/$1>/gsi;
  $a=~s/\&lt;(td)\&gt;(.+?)\&lt;\/\1\&gt;/<$1>$2<\/$1>/gsi;
  $a=~s/\&lt;br *\/*\&gt;/<br \/>/gsi;
  $a=~s/\&lt;a(.+?)\&gt;(.+?)\&lt;\/a\&gt;/&asrc($1,$2)/gsie;
#  $a=&persasp($a);
  return ($a);
  }

sub link_set {
my $v1=shift;
my $v2=$v1;
if (length($v2)>60) {
  $v2=~s/^(.{35}).*(.{20})$/$1 ... $2/;
  }
return("<a href=\"$v1\">$v2<\/a>");
  }

sub video {
  my $text=shift;
  $text=~s/\&lt;/\</gsi;
  $text=~s/\&gt;/\>/gsi;
  return ($text);
  }

sub imgsrc {
  my $v=shift;
  my @alink=split(/ +/,$v);
  foreach (@alink) {
    if (/^src=/i && not /(jpg|png|gif|jpeg|tiff|svg|file|webp)('|"|)$/i) {
      $_='src=\'\'';
      }
    s/javascript/java_script/ig;
    }
  $v=join " ",@alink;
  return ("<img $v>")
  }

sub asrc {
  my $v=shift;
  my $t=shift;
  my @alink=split(/ +/,$v);
  foreach (@alink) {
    s/javascript/java_script/ig;
    }
  $v=join " ",@alink;
  return ("<a $v>$t<\/a>")
  }
