#!/usr/bin/perl

$filerazdel="razdel.blt";
$filehdr="header.blt";
$fileend="end.blt";

#Get data from memory --------
if ($ENV{'REQUEST_METHOD'} eq "POST")
    {
      read(STDIN, $bufer, $ENV{'CONTENT_LENGTH'});
    }
else
    {
      $bufer=$ENV{'QUERY_STRING'};
    }    
#End -------------------------
# Decode data ----------------
@pairs = split(/&/, $bufer);
foreach $pair (@pairs)
      {
	      	
	        ($name, $value) = split(/=/, $pair);
	        $name =~ tr/+/ /;
	        $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
	        $value =~ tr/+/ /;
	        $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
	        
	        $FORM{$name} = $value;
      }      
# End ------------------------   

&html;
if($FORM{action} eq "add2"){&add2;}
if($bufer eq ""){&empty;}
elsif($FORM{action} eq "add"){&add;}
else{&razdel;}
&htmlend;









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

sub add2
  {
  	if ($FORM{razdel} ne ""){$file="$FORM{razdel}.blt";}
  	else{&error;}
  	if ($FORM{name} eq ""){&error;} 
  	if ($FORM{url} eq ""){&error;}
  	if ($FORM{sol} eq ""){&error;}
  	else{$FORM{sol}=~ s/\n/<br>/g;}
  	open (FILE,">>$file");
  	print FILE "$FORM{name}\:\:$FORM{url}\:\:$FORM{sol}\n";
  	close (FILE);
  	print "Ссылка добавлена";
  	
  }	

sub add
  {
  	open (RAZDEL,"$filerazdel");
  	@RAZDEL=<RAZDEL>;
  	close(RAZDEL);
  	
  	print "<b>Добавте вашу ссылку</b>";
  	print "<table width=400><form action=show.pl method=POST>";
  	print "<tr><td>";
  	print "<input type=hidden name=action value=add2>";
  	print "Раздел: <br>";
  	if($FORM{razdel} eq "")
  	  {
	  	print "<select name=razdel><option value=\"\">Выберите раздел";
	  	foreach $pair (@RAZDEL)
	  	  {
	  	  	($kod,$op)=split("=",$pair);
	  	  	print "<option value=$kod>$op";
	  	  }
	  }
	else 
	  {
	  	foreach $pair (@RAZDEL)
	  	  {
	  	  	($kod,$op)=split("=",$pair);
	  	  	if($kod eq $FORM{razdel})
	  	  		{
	  	  			print "$op";
	  	  			print "<input type=hidden name=razdel value=$kod>";
	  	  		}
	  	  }
	  	
	  }  	  
	print "</select><br><br>";  		
  	print "Название сайта:<br><input type=text size=35 name=name><br><br>";
  	print "URL - сайта:<br><small>http://</small><input type=text size=30 name=url><br><br>";
  	print "Описание:<br><textarea cols=40 rows=5 name=sol></textarea><br><br>";
  	print "<input type=submit value=Добавить>&nbsp;<input type=reset value=Очистить>";
  	print "</td></tr>";
  	print "</form></table>";
  }	

sub razdel
  {
  	
  	if($FORM{razdel} ne ""){$file="$FORM{razdel}.blt";}
  	else{exit;}
  	open(FILE,"$file");
  	@DATA=<FILE>;
  	close (FILE);
  	
  	print "<table width=400>";
  	print "<tr><td align=center><b>ССЫЛКИ</b></td></tr>";
  	foreach $pair(@DATA)
  	  {
  	  	($name,$url,$sol)=split("::",$pair);
  	  	print "<tr><td>\n";
  	  	print "<b>$name</b><br>";
  	  	print "Url - <a href=http://$url>$url</a><br>";
  	  	print "$sol<br><br>";
  	  	print "</td></tr>\n";
  	  }	
  	print "</table>";
  	print "<br><br><br>";
  	&empty;
  }	


sub empty
  {
  	open (RAZDEL,"$filerazdel");
  	@RAZDEL=<RAZDEL>;
  	close(RAZDEL);
  	
  	print "<B>РАЗДЕЛЫ</B><br><br>";
  	print "<table width=300>";
  	for($i=0;$i<=@RAZDEL;$i++)
  	  {
  	  	($kod,$zn)=split("=",@RAZDEL[$i]);
  	  	print "<tr><td align=center>\n";
  	  	print "<a href=show.pl?razdel=$kod>$zn</a>";
  	  	print "</td><td align=center>\n";
  	  	$i++;
  	  	($kod,$zn)=split("=",@RAZDEL[$i]);
  	  	print "<a href=show.pl?razdel=$kod>$zn</a>";
  	  	print "</td></tr>\n";
  	  }	
	print <<EOF;  
	  <tr>
	        <td align=center width=50%></td>
	        <td align=center><font size=-1><br><br><br>
	          <a href=show.pl?action=add&razdel=$FORM{razdel}>Добавить ссылку</a><br>
	          <a href=admin.pl>Администировать</a>
	        </font></td>
	  </tr>
EOF
  	print "</table>";
  }
  
sub html
  {
  	print "Content-type: text/html\n\n";
  	open (HEADER,"$filehdr");
  	while (<HEADER>)
  	  {print "$_";}
  	close (HEADER); 
  	print "<center>";
  }
  
sub htmlend
  {
  	print "</center>";
  	open (SOF,"$fileend");
  	while (<SOF>)
  	  {print "$_";}
  	close (SOF); 
  	
  }	  	  