#!/usr/bin/perl
#↑Perlまでのパスを指定(わからない場合はプロバイダに確認する)

#〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜#
#Copyright(C)2000 ohtan. All rights reserved.              #
#CmfLink ver1.05                                           #
#Build :2000/10/22                                         #
#Update:2000/12/17                                         #
#Home  :Counter Material Factory                           #
#       http://www.din.or.jp/~ohtan/                       #
#Mail  :ohtan@din.or.jp                                    #
#〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜#
#______________________[ 基本設定項目 ]_____________________

#1.管理用パスワード
$password = '81268504';
#2.GIF画像を入れるディレクトリ(images)までのURL(通常は変更不要、最後に/は入れない、http://からでもOK)
$imgdir = './images';
#3.このファイル(cmflink.cgi)までのURLをhttp://から指定
$mycgi = 'http://www.tetish.com/cgi-link/cmflink/cmflink.cgi';
#4.データログ格納用ディレクトリ(dat)までのパス(通常は変更不要、最後に/は入れない)
$datdir = './dat';
#5.デザインログ格納用ディレクトリ(tmp)までのパス(通常は変更不要、最後に/は入れない)
$tmpdir = './tmp';
#6.テーブル内(外側)の色(ここを変更した場合コーナー画像の色の修正が必要)
$tblcol = 'ffffff';
#7.jcode.plまでのパス(通常は変更不要)
$jcode = 'jcode.pl';
#8.cgi-lib.plまでのパス(通常は変更不要)
$cgilib = 'cgi-lib.pl';
#9.バナーを格納するディレクトリ(bnn)までのパス(通常は変更不要、最後に/は入れない)
$bnndir = './bnn';
#10.バナーを格納するディレクトリまでのURLをhttp://から(サイト登録の際に自動的に表示するURL、最後に/は入れない)
$bnnurl = 'http://.../link/bnn';

#_________[ デフォルト設定(ブラウザ上で変更可能) ]__________

#11.タイトル名
$title = 'LINK集';
#12.タイトル名の色
$tlcol = '4275bb';
#13.タイトルのフォントサイズ
$ttlsz = '18px';
#14.タイトルの下のコメント
$lnkcm = '他のサイトへのトビラ';
#15.タイトルに画像を使う時は画像までのURL
$imttl = '';
#16.背景色
$bgcol = '4275bb';
#17.テーブル内の背景色
$fmcol = '4275bb';
#18.テーブル内の文字色
$fmfnt = 'ffffff';
#19.テーブル内のフォントサイズ
$tblsz = '14px';
#20.テーブルのボーダー色
$bdcol = 'ffffff';
#21.フォントの種類
$fface = 'MS UI Gothic';
#22.戻り先URL
$hback = 'http://www.tetish.com.';
#23.LINK先の開き方(target)
$target = 'blank';
#24.LINK色
$nlink = 'ffffff'; #未訪問
$vlink = 'ffffff'; #訪問済
$alink = 'a8d0ff'; #アクティブ
#25.バナーサイズの固定
$wid = 88; #横
$hei = 30; #縦
#26.1ページの表示件数
$p_page = 10;
#27.サイトの表示順(0:新しい方から/1:古い方から)
$p_type = 0;

#_________[ 設定終了(以下変更はPerlの知識が必要) ]_________

$copyright = 'http://www.din.or.jp/~ohtan/';
$version = 'CmfLink(ver1.05)';

require "$jcode";

if ($ENV{'CONTENT_TYPE'} =~ m/^multipart\/form-data/) { &InputBnn; }

if ($ENV{'REQUEST_METHOD'} eq 'POST') {
    read(STDIN,$post,$ENV{'CONTENT_LENGTH'});
}
elsif ($ENV{'REQUEST_METHOD'} eq 'GET') {
    $post = $ENV{'QUERY_STRING'};
}

if ($post eq '') { &Err('MODEとIDが指定されていません'); }
else {
      @POST = split(/&/,$post);
      foreach $posts (@POST) {
         ($key,$val) = split(/=/,$posts);
          $val =~ tr/+/ /;
          $val =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
          $val =~ s/&/&amp;/g;
          $val =~ s/</&lt;/g;
          $val =~ s/>/&gt;/g;
          $val =~ s/"/&quot;/g;
          if ($key eq 'com') {
              $val =~ s/\r\n$//;
              $val =~ s/\r$//;
              $val =~ s/\n$//;
              $val =~ s/\r\n/<br>/g;
              $val =~ s/\r/<br>/g;
              $val =~ s/\n/<br>/g;
          }
          else {
              $val =~ s/\r\n//g;
              $val =~ s/\r//g;
              $val =~ s/\n//g;
          }
          $in{$key} = $val;
      }
      $getpass = $in{'pas'};
      $sitenme = $in{'stn'};
      $siteurl = $in{'url'};
      $sitebnn = $in{'bnn'};
      $sitecom = $in{'com'};
      $linknum = $in{'num'};
      $entmode = $in{'mode'};
      $linkid = $in{'id'};
      $ulnkid = $in{'uid'};
      $pagenum = $in{'pagenum'};
      $bannnum = $in{'bnm'};
      $psttitle = $in{'psttitle'};
      $pstlnkcm = $in{'pstlnkcm'};
      $psttlcol = $in{'psttlcol'};
      $psttlimg = $in{'psttlimg'};
      $pstbackg = $in{'pstbackg'};
      $pstfmcol = $in{'pstfmcol'};
      $pstfmfnt = $in{'pstfmfnt'};
      $pstfmbdr = $in{'pstfmbdr'};
      $pstfontf = $in{'pstfontf'};
      $psthmurl = $in{'psthmurl'};
      $psttrget = $in{'psttrget'};
      $pstnlink = $in{'pstnlink'};
      $pstvlink = $in{'pstvlink'};
      $pstalink = $in{'pstalink'};
      $pstbnwid = $in{'pstbnwid'};
      $pstbnhei = $in{'pstbnhei'};
      $pstttlsz = $in{'pstttlsz'};
      $psttblsz = $in{'psttblsz'};
      $pstpage = $in{'pstpage'};
      $psttype = $in{'p_type'};

      $datdir = "$datdir\/";
      $tmpdir = "$tmpdir\/";
      $datlog = "$linkid.dat";
      $tmplog = "$linkid.tmp";
      $backcgi = "$mycgi\?mode\=link\&id\=$linkid";
      $delbnn = "$mycgi\?mode\=ubn\&id\=$linkid";
      $upbnn = "$mycgi\?mode\=nbn\&id\=$linkid";
      $datafile = "$datdir$datlog";
      $designfile = "$tmpdir$tmplog";

      if    ($entmode eq 'link') {
             if ($linkid eq '') { &Err('リンクIDが不正です'); }
             &TmpList;
             $t = 0;
             foreach $tmc (@RTM) {
                if ($tmc =~ /$tmplog/) { last; }
                elsif ($#RTM == $t) { &Err('リンクIDが不正です'); }
                $t++;
             }
             &ReadDsn;
             &MainHtml;
      }
      elsif ($entmode eq 'new') {
             if ($getpass ne $password) { &Err('パスワードが違います'); }
             &NeworCus;
      }
      elsif ($entmode eq 'old') {
             if ($getpass ne $password) { &Err('パスワードが違います'); }
             &ReadDsn;
             &OldLink;
      }
      elsif ($entmode eq 'del') {
             if ($getpass ne $password) { &Err('パスワードが違います'); }
             &ReadDsn;
             &DelLink;
      }
      elsif ($entmode eq 'ctm') {
             if ($getpass ne $password) { &Err('パスワードが違います'); }
             &ReadDsn;
             &CtmLink;
      }
      elsif ($entmode eq 'mke') {
             if ($getpass ne $password) { &Err('パスワードが違います'); }
             &CtmLink;
      }
      elsif ($entmode eq 'ulk') {
             if ($getpass ne $password) { &Err('パスワードが違います'); }
             &ReadDsn;
             &UnLink;
      }
      elsif ($entmode eq 'nbn') { &UpBnn; }
      elsif ($entmode eq 'ubn') { &UnBnn; }
      elsif ($entmode eq 'pls') { &InputNew; }
      elsif ($entmode eq 'mns') { &InputDel; }
      elsif ($entmode eq 'cng') { &NeworCus; }
      elsif ($entmode eq 'ncg') { &InputCng; }
      elsif ($entmode eq 'cus') { &InputCtm; }
      elsif ($entmode eq 'unk') { &DeleteLk; }
      elsif ($entmode eq 'dbn') { &DeleteBn; }
      else { &Err('MODEが正しくありません'); }
}

sub Image {
    if ($imttl ne '') { $linkttl = "<img src=\"$imttl\">"; }
    else { $linkttl = $title; }

    if ($wid ne '') { $wid = " width=\"$wid\""; }
    if ($hei ne '') { $hei = " height=\"$hei\""; }
    if ($wid eq '' && $hei eq'') { $bnsize =''; }
    else { $bnsize = "$wid$hei"; }
}

sub ReadData {
    if (!-e $datafile) {
        open(MAKE, ">$datafile") || &Err('データログの作成に失敗しました');
        close(MAKE);
        chmod(0666, "$datafile");
    }
    &ReadDat;
    if (!$p_type) { @DATA = reverse @DATA; }
    if ($DATA[0] eq '') { $kensu = 0; } else { $kensu = $#DATA + 1; }
    @ENT = ('del','mns','old','ncg');
    if (!grep($entmode =~ /$_/i,@ENT)) {
        if ($pagenum eq '') { $u = 0; } else { $u = $pagenum; }
        if ($u > 0) { $f = $u; splice @DATA,0,$f--; }
    }
    if (!$p_type) { $d = $#DATA; } else { $d = 0; }
    $n = 0;
    foreach $data (@DATA) {
        $data =~ s/\r\n//g;
        $data =~ s/\r//g;
        $data =~ s/\n//g;
       ($rdnme,$rdurl,$rdbnn,$rdcom) = split(/<>/,$data);
        if (grep($entmode =~ /$_/i,@ENT)) {
            $html .= "    <tr><td valign=\"middle\" align=\"center\" width=\"5%\"><input type=\"radio\" name=\"num\" value=\"$d\"></td>\n";
            $html .= "        <td valign=\"middle\" width=\"95%\">[ <a href=\"$rdurl\" target=\"_$target\">$rdnme</a> ]<br>$rdcom</td></tr>\n";
            if (!$p_type) { $d--; } else { $d++; }
        }
        else {
            $rdnme =~ s/&lt;br&gt;/<br>/g;
            $rdnme =~ s/&lt;BR&gt;/<br>/g;
            if ($rdbnn eq 'none') {
                $html .= "    <tr><td valign=\"middle\" align=\"center\" width=\"250\" height=\"55\"><a href=\"$rdurl\" target=\"_$target\">$rdnme</a></td>\n";
            }
            else {
                $html .= "    <tr><td valign=\"middle\" align=\"center\" width=\"250\" height=\"55\"><a href=\"$rdurl\" target=\"_$target\"><img src=\"$rdbnn\" border=\"0\"$bnsize><br>$rdnme</a></td>\n";
            }
            $html .= "        <td valign=\"middle\" width=\"450\" height=\"55\">$rdcom</td></tr>\n";
            if (($p_page - 1) == $n) { last; } else { $u++; }
        }
        $n++;
    }
    if (!$n) { $html .= "    <tr><td colspan=\"2\" valign=\"middle\" align=\"center\">現在このLINK集にサイトは登録されていません</td></tr>\n"; }
    if ($u > 0 && $u <= $kensu) {
        if ($u < $kensu) { $u++; }
        $next = "    <form action=\"$mycgi\" method=\"POST\" enctype=\"x-www-form-urlencoded\">\n";
        $next .= "    <table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" width=\"700\">\n";
        $next .= "    <tr><td valign=\"middle\" align=\"center\">\n";
        $next .= "        <input type=\"hidden\" name=\"mode\" value=\"link\">\n";
        $next .= "        <input type=\"hidden\" name=\"id\" value=\"$linkid\">\n";
        $next .= "        <input type=\"hidden\" name=\"pagenum\" value=\"$u\">\n";
        if ($pagenum ne '') { $next .= "        <input type=\"button\" value=\"Back\" onClick=\"history.back()\">　　　\n"; }
        if ($u < $kensu) { $next .= "        <input type=\"submit\" value=\"Next\">\n"; }
        $next .= "        </td></tr>\n";
        $next .= "    </table></form>";
    }
}

sub AllList {
    &ReadTmp;
    $p_menu = "<select name=link size=1 onchange=location.href=this.form.link.options[this.form.link.selectedIndex].value>\n";
    $p_menu .= "           <option value=\"$backcgi\" selected>_______________[ その他のLINK集 ]_______________\n";
    $t = 0;
    foreach $idl (@IDL) {
       $p_menu .= "           <option value=\"$mycgi\?mode\=link\&id\=$idl\">[ $TTL[$t] ]\n";
       $t++;
    }
    $p_menu .= "           </select>";
}

sub MainHtml {
&AllList;
&Image;
$html = <<"_MAINUP_";
<html>
<head>
<title>$title</title>
<meta http-equiv="Content-Type" content="text/html;charset=x-sjis">
<style type="text/css"><!--
p.tl{color:#$tlcol;font-size:$ttlsz;font-family:$fface}
p{color:#$tlcol;font-size:$tblsz;font-family:$fface}
td{color:#$fmfnt;font-size:$tblsz;font-family:$fface}
input{color:#$fmfnt;background-color:#$fmcol;font-size:$tblsz;font-family:$fface}
select{color:#$fmfnt;background-color:#$fmcol;font-size:$tblsz;font-family:$fface}
a:link{color=#$nlink}
a:visited{color=#$vlink}
a:hover{background-color=#$alink}
a{text-decoration:none}
--></style>
</head>
<body bgcolor="#$bgcol" link="#$nlink" vlink="#$vlink" alink="#$alink">
<div align="center">
<table border="0" bgcolor="#$tblcol" cellspacing="0" cellpadding="0">
<tr><td bgcolor="#$bgcol"><img src="$imgdir/ul.gif"></td>
    <td><img src="$imgdir/dm.gif"></td>
    <td bgcolor="#$bgcol"><img src="$imgdir/ur.gif"></td></tr>
<tr><td><img src="$imgdir/dm.gif"></td>
    <td valign="middle" align="center">
    <form>
    <table border="0" cellspacing="0" cellpadding="3" width="700">
    <tr><td valign="middle" align="center">
        <p class="tl">$linkttl</p><p>$lnkcm</p><br></td></tr>
    <tr><td valign="middle">
        <p>$p_menu
           <a href="$hback" target="_top"><img src="$imgdir/home.gif" border="0" align="absmiddle"></a></p></td></tr>
    </table></form>
    <table border="3" bgcolor="#$fmcol" bordercolor="#$bdcol" cellspacing="0" cellpadding="3" width="700">
    <tr><td valign="middle" align="center" width="250">SiteName</td>
        <td valign="middle" align="center" width="450">Comment</td></tr>
_MAINUP_
&ReadData;
$html .= <<"_MAINLOW_";
    </table><p>$kensu件中$u件まで\表\示</p>
$next
    <form action="$mycgi" method="POST" enctype="x-www-form-urlencoded">
    <table border="0" cellspacing="0" cellpadding="0" width="700">
    <tr><td valign="middle" align="right">
        <p><select name="mode">
           <option selected>管理モード
           <option value="new">サイト追加
           <option value="old">サイト編集
           <option value="del">サイト削除
           <option value="ctm">画面編集
           <option value="mke">LINK作成
           <option value="ulk">LINK削除
           </select>
           <input type="password" name="pas" size="10">
           <input type="image" src="$imgdir/submit.gif" align="absmiddle" border="0">
           <input type="hidden" name="id" value="$linkid">
           <a href="$copyright" target="_blank"><img src="$imgdir/copyright.gif" border="0" align="absmiddle" alt="$version"></a></p></td></tr>
    </table></form></td>
    <td><img src="$imgdir/dm.gif"></td></tr>
<tr><td bgcolor="#$bgcol"><img src="$imgdir/dl.gif"></td>
    <td><img src="$imgdir/dm.gif"></td>
    <td bgcolor="#$bgcol"><img src="$imgdir/dr.gif"></td></tr>
</table></div>
</body>
</html>
_MAINLOW_
&Print;
}

sub NeworCus {
if ($entmode eq 'cng') {
    &ReadDat;
   ($rdnme,$rdurl,$rdbnn,$rdcom) = split(/<>/,$DATA[$linknum]);
    if ($rdbnn eq 'none') { $rdbnn = ''; }
    $rdcom =~ s/\n//g;
    $rdcom =~ s/<br>/\r/g;
    $rdnme = " value=\"$rdnme\"";
    $rdurl = " value=\"$rdurl\"";
    $rdbnn = " value=\"$rdbnn\"";
    $rdcom = "$rdcom";
    $menuttl = 'サイトの編集';
    $cngmode = 'ncg';
    $sitenum = "        <input type=\"hidden\" name=\"num\" value=\"$linknum\">";
    $deletbn = "        [ <a href=\"$delbnn\" target=\"_blank\">バナーの削除</a> ]　　";
    $b_his = "        <input type=\"button\" value=\"前の画面に戻る\" onClick=\"history.back()\">　　";
} else {
    $menuttl = 'サイトの追加';
    $cngmode = 'pls';
    $rdbnn = " value=\"$bnnurl\/\"";
}
&ReadDsn;
$html = <<"_NOC_";
<html>
<head>
<title>$menuttl</title>
<meta http-equiv="Content-Type" content="text/html;charset=x-sjis">
<style type="text/css"><!--
p{color:#$tlcol;font-size:$tblsz;font-family:$fface}
td{color:#$fmfnt;font-size:$tblsz;font-family:$fface}
input{color:#$fmfnt;background-color:#$fmcol;font-size:$tblsz;font-family:$fface;border:3 #$bdcol solid}
textarea{color:#$fmfnt;background-color:#$fmcol;font-size:$tblsz;font-family:$fface;border:3 #$bdcol solid}
a:link{color=#$nlink}
a:visited{color=#$vlink}
a:hover{background-color=#$alink}
a{text-decoration:none}
--></style>
</head>
<body onLoad="document.InputForm.stn.focus();" bgcolor="#$bgcol" link="#$nlink" vlink="#$vlink" alink="#$alink">
<div align="center">
<form action="$mycgi" method="POST" enctype="x-www-form-urlencoded" name="InputForm">
<table border="0" bgcolor="#$tblcol" cellspacing="0" cellpadding="0">
<tr><td bgcolor="#$bgcol"><img src="$imgdir/ul.gif"></td>
    <td><img src="$imgdir/dm.gif"></td>
    <td bgcolor="#$bgcol"><img src="$imgdir/ur.gif"></td></tr>
<tr><td><img src="$imgdir/dm.gif"></td>
    <td valign="middle" align="center"><p>$menuttl</p>
    <table border="3" bgcolor="#$fmcol" bordercolor="#$bdcol" cellspacing="0" cellpadding="3" width="700">
    <tr><td valign="middle" align="center">SiteName</td>
        <td valign="middle"><input name="stn" type="text" size="30"$rdnme></td></tr>
    <tr><td valign="middle" align="center">SiteURL</td>
        <td valign="middle"><input name="url" type="text" size="50"$rdurl></td></tr>
    <tr><td valign="middle" align="center">BannerURL</td>
        <td valign="middle"><input name="bnn" type="text" size="50"$rdbnn></td></tr>
    <tr><td valign="middle" align="center">Comment</td>
        <td valign="middle"><textarea wrap="soft" name="com" rows="3" cols="70">$rdcom</textarea>
        <br>(適当に改行し、100文字程度で入力して下さい)</td></tr>
    <tr><td colspan="2" valign="middle" align="center">
        <input type="hidden" name="mode" value="$cngmode">
        <input type="hidden" name="id" value="$linkid">
$sitenum
        <input type="submit" value="送信">　　
        <input type="reset" value="クリア">　　
$b_his
        [ <a href="$upbnn" target="_blank">バナーのアップロード</a> ]　　
$deletbn
        [ <a href="$backcgi">LINK集に戻る</a> ]</td></tr>
    </table></td>
    <td><img src="$imgdir/dm.gif"></td></tr>
<tr><td bgcolor="#$bgcol"><img src="$imgdir/dl.gif"></td>
    <td><img src="$imgdir/dm.gif"></td>
    <td bgcolor="#$bgcol"><img src="$imgdir/dr.gif"></td></tr>
</table></form></div>
</body>
</html>
_NOC_
&Print;
}

sub DelLink {
$html = <<"_DELUP_";
<html>
<head>
<title>サイトの削除</title>
<meta http-equiv="Content-Type" content="text/html;charset=x-sjis">
<style type="text/css"><!--
p{color:#$tlcol;font-size:$tblsz;font-family:$fface}
td{color:#$fmfnt;font-size:$tblsz;font-family:$fface}
input{color:#$fmfnt;background-color:#$fmcol;font-size:$tblsz;font-family:$fface;border:3 #$bdcol solid}
a:link{color=#$nlink}
a:visited{color=#$vlink}
a:hover{background-color=#$alink}
a{text-decoration:none}
--></style>
</head>
<body bgcolor="#$bgcol" link="#$nlink" vlink="#$vlink" alink="#$alink">
<div align="center">
<form action="$mycgi" method="POST" enctype="x-www-form-urlencoded">
<table border="0" bgcolor="#$tblcol" cellspacing="0" cellpadding="0">
<tr><td bgcolor="#$bgcol"><img src="$imgdir/ul.gif"></td>
    <td><img src="$imgdir/dm.gif"></td>
    <td bgcolor="#$bgcol"><img src="$imgdir/ur.gif"></td></tr>
<tr><td><img src="$imgdir/dm.gif"></td>
    <td valign="middle" align="center"><p>削除したいサイトを選んで送信ボタンを押して下さい</p>
    <table border="3" bgcolor="#$fmcol" bordercolor="#$bdcol" cellspacing="0" cellpadding="3" width="700">
_DELUP_
&ReadData;
$html .= <<"_DELLOW_";
    <tr><td colspan="2" valign="middle" align="center">
        <input type="hidden" name="mode" value="mns">
        <input type="hidden" name="id" value="$linkid">
        <input type="submit" value="送信" >　　
        <input type="reset" value="クリア">　　
        [ <a href="$delbnn" target="_blank">バナーの削除</a> ]　　
        [ <a href="$backcgi">LINK集に戻る</a> ]</td></tr>
    </table></td>
    <td><img src="$imgdir/dm.gif"></td></tr>
<tr><td bgcolor="#$bgcol"><img src="$imgdir/dl.gif"></td>
    <td><img src="$imgdir/dm.gif"></td>
    <td bgcolor="#$bgcol"><img src="$imgdir/dr.gif"></td></tr>
</table></form></div>
</body>
</html>
_DELLOW_
&Print;
}

sub OldLink {
$html = <<"_OLDUP_";
<html>
<head>
<title>サイトの編集</title>
<meta http-equiv="Content-Type" content="text/html;charset=x-sjis">
<style type="text/css"><!--
p{color:#$tlcol;font-size:$tblsz;font-family:$fface}
td{color:#$fmfnt;font-size:$tblsz;font-family:$fface}
input{color:#$fmfnt;background-color:#$fmcol;font-size:$tblsz;font-family:$fface;border:3 #$bdcol solid}
a:link{color=#$nlink}
a:visited{color=#$vlink}
a:hover{background-color=#$alink}
a{text-decoration:none}
--></style>
</head>
<body bgcolor="#$bgcol" link="#$nlink" vlink="#$vlink" alink="#$alink">
<div align="center">
<form action="$mycgi" method="POST" enctype="x-www-form-urlencoded">
<table border="0" bgcolor="#$tblcol" cellspacing="0" cellpadding="0">
<tr><td bgcolor="#$bgcol"><img src="$imgdir/ul.gif"></td>
    <td><img src="$imgdir/dm.gif"></td>
    <td bgcolor="#$bgcol"><img src="$imgdir/ur.gif"></td></tr>
<tr><td><img src="$imgdir/dm.gif"></td>
    <td valign="middle" align="center"><p>編集したいサイトを選んで送信ボタンを押して下さい</p>
    <table border="3" bgcolor="#$fmcol" bordercolor="#$bdcol" cellspacing="0" cellpadding="3" width="700">
_OLDUP_
&ReadData;
$html .= <<"_OLDLOW_";
    <tr><td colspan="2" valign="middle" align="center">
        <input type="hidden" name="mode" value="cng">
        <input type="hidden" name="id" value="$linkid">
        <input type="submit" value="送信" >　　　
        <input type="reset" value="クリア">　　　
        [ <a href="$backcgi">LINK集に戻る</a> ]</td></tr>
    </table></td>
    <td><img src="$imgdir/dm.gif"></td></tr>
<tr><td bgcolor="#$bgcol"><img src="$imgdir/dl.gif"></td>
    <td><img src="$imgdir/dm.gif"></td>
    <td bgcolor="#$bgcol"><img src="$imgdir/dr.gif"></td></tr>
</table></form></div>
</body>
</html>
_OLDLOW_
&Print;
}

sub CtmLink {
if (!$p_type) { $ck_a = ' checked'; $ck_b = ''; }
else { $ck_a = ''; $ck_b = ' checked'; }
if    ($entmode eq 'mke') {
       $menuttl = 'LINK集の新規作成';
       $idmenu = "    <tr><td valign=\"middle\" align=\"center\">リンクID<br>(半角英数字で入力)<br>(他のリンクIDと重複しないよう注意)</td>\n";
       $idmenu .= "        <td valign=\"middle\"><input name=\"id\" type=\"text\" size=\"10\"></td></tr>";
       $jv = 'id';
}
else {
       $menuttl = '画面の編集';
       $makeid = "        <input type=\"hidden\" name=\"id\" value=\"$linkid\">";
       $jv = 'psttitle';
       $idmenu = "    <tr><td valign=\"middle\" align=\"center\">このLINK集のURL</td>\n";
       $idmenu .= "        <td valign=\"middle\"><a href=\"$backcgi\" target=\"_blank\">$backcgi</a></td></tr>";
}
$html = <<"_CTM_";
<html>
<head>
<title>$menuttl</title>
<meta http-equiv="Content-Type" content="text/html;charset=x-sjis">
<style type="text/css"><!--
p{color:#$tlcol;font-size:$tblsz;font-family:$fface}
td{color:#$fmfnt;font-size:$tblsz;font-family:$fface}
input{color:#$fmfnt;background-color:#$fmcol;font-size:$tblsz;font-family:$fface;border:3 #$bdcol solid}
a:link{color=#$nlink}
a:visited{color=#$vlink}
a:hover{background-color=#$alink}
a{text-decoration:none}
--></style>
</head>
<body onLoad="document.InputForm.$jv.focus();" bgcolor="#$bgcol" link="#$nlink" vlink="#$vlink" alink="#$alink">
<div align="center">
<form action="$mycgi" method="POST" enctype="x-www-form-urlencoded" name="InputForm">
<table border="0" bgcolor="#$tblcol" cellspacing="0" cellpadding="0">
<tr><td bgcolor="#$bgcol"><img src="$imgdir/ul.gif"></td>
    <td><img src="$imgdir/dm.gif"></td>
    <td bgcolor="#$bgcol"><img src="$imgdir/ur.gif"></td></tr>
<tr><td><img src="$imgdir/dm.gif"></td>
    <td valign="middle" align="center"><p>$menuttl</p>
    <table border="3" bgcolor="#$fmcol" bordercolor="#$bdcol" cellspacing="0" cellpadding="3" width="700">
$idmenu
    <tr><td valign="middle" align="center">タイトル名</td>
        <td valign="middle"><input name="psttitle" type="text" size="30" value="$title"></td></tr>
    <tr><td valign="middle" align="center">タイトルの下のコメント</td>
        <td valign="middle"><input name="pstlnkcm" type="text" size="50" value="$lnkcm"></td></tr>
    <tr><td valign="middle" align="center" >タイトルの色</td>
        <td valign="middle"><input name="psttlcol" type="text" size="10" value="$tlcol"></td></tr>
    <tr><td valign="middle" align="center" >タイトルのフォントサイズ</td>
        <td valign="middle"><input name="pstttlsz" type="text" size="10" value="$ttlsz"></td></tr>
    <tr><td valign="middle" align="center">タイトル画像までのURL</td>
        <td valign="middle"><input name="psttlimg" type="text" size="50" value="$imttl"></td></tr>
    <tr><td valign="middle" align="center">全体の背景色</td>
        <td valign="middle"><input name="pstbackg" type="text" size="10" value="$bgcol"></td></tr>
    <tr><td valign="middle" align="center">テーブル内の背景色</td>
        <td valign="middle"><input name="pstfmcol" type="text" size="10" value="$fmcol"></td></tr>
    <tr><td valign="middle" align="center">テーブル内のフォント色</td>
        <td valign="middle"><input name="pstfmfnt" type="text" size="10" value="$fmfnt"></td></tr>
    <tr><td valign="middle" align="center" >テーブル内のフォントサイズ</td>
        <td valign="middle"><input name="psttblsz" type="text" size="10" value="$tblsz"></td></tr>
    <tr><td valign="middle" align="center">テーブル内のボーダー色</td>
        <td valign="middle"><input name="pstfmbdr" type="text" size="10" value="$bdcol"></td></tr>
    <tr><td valign="middle" align="center">フォントの種類</td>
        <td valign="middle"><input name="pstfontf" type="text" size="20" value="$fface"></td></tr>
    <tr><td valign="middle" align="center">戻り先URL</td>
        <td valign="middle"><input name="psthmurl" type="text" size="50" value="$hback"></td></tr>
    <tr><td valign="middle" align="center">LINK先の開き方<br>(target属性)</td>
        <td valign="middle"><input name="psttrget" type="text" size="10" value="$target"></td></tr>
    <tr><td valign="middle" align="center">LINK色</td>
        <td valign="middle"><input name="pstnlink" type="text" size="10" value="$nlink">：未訪問<br>
                            <input name="pstvlink" type="text" size="10" value="$vlink">：訪問済<br>
                            <input name="pstalink" type="text" size="10" value="$alink">：アクティブ</td></tr>
    <tr><td valign="middle" align="center">バナーのサイズ<br>(固定しないときは空欄)</td>
        <td valign="middle"><input name="pstbnwid" type="text" size="10" value="$wid">：横<br>
                            <input name="pstbnhei" type="text" size="10" value="$hei">：縦</td></tr>
    <tr><td valign="middle" align="center">1ページの\表\示件数<br>(1ページにすべて\表\示する時は空欄)</td>
        <td valign="middle"><input name="pstpage" type="text" size="10" value="$p_page"></td></tr>
    <tr><td valign="middle" align="center">サイトの\表\示順</td>
        <td valign="middle"><input name="p_type" type="radio" value="0"$ck_a>：新しい方から
                            <input name="p_type" type="radio" value="1"$ck_b>：古い方から</td></tr>
    <tr><td colspan="2" valign="middle" align="center">
        <input type="hidden" name="mode" value="cus">
$makeid
        <input type="submit" value="送信">　　　　
        <input type="reset" value="クリア">　　　　
        [ <a href="$backcgi">LINK集に戻る</a> ]</td></tr>
    </table></td>
    <td><img src="$imgdir/dm.gif"></td></tr>
<tr><td bgcolor="#$bgcol"><img src="$imgdir/dl.gif"></td>
    <td><img src="$imgdir/dm.gif"></td>
    <td bgcolor="#$bgcol"><img src="$imgdir/dr.gif"></td></tr>
</table></form></div>
</body>
</html>
_CTM_
&Print;
}

sub UnLink {
$html = <<"_ULUP_";
<html>
<head>
<title>LINKの削除</title>
<meta http-equiv="Content-Type" content="text/html;charset=x-sjis">
<style type="text/css"><!--
p{color:#$tlcol;font-size:$tblsz;font-family:$fface}
td{color:#$fmfnt;font-size:$tblsz;font-family:$fface}
input{color:#$fmfnt;background-color:#$fmcol;font-size:$tblsz;font-family:$fface;border:3 #$bdcol solid}
a:link{color=#$nlink}
a:visited{color=#$vlink}
a:hover{background-color=#$alink}
a{text-decoration:none}
--></style>
</head>
<body bgcolor="#$bgcol" link="#$nlink" vlink="#$vlink" alink="#$alink">
<div align="center">
<form action="$mycgi" method="POST" enctype="x-www-form-urlencoded">
<table border="0" bgcolor="#$tblcol" cellspacing="0" cellpadding="0">
<tr><td bgcolor="#$bgcol"><img src="$imgdir/ul.gif"></td>
    <td><img src="$imgdir/dm.gif"></td>
    <td bgcolor="#$bgcol"><img src="$imgdir/ur.gif"></td></tr>
<tr><td><img src="$imgdir/dm.gif"></td>
    <td valign="middle" align="center"><p>削除したいLINK集を選んで送信ボタンを押して下さい</p>
    <table border="3" bgcolor="#$fmcol" bordercolor="#$bdcol" cellspacing="0" cellpadding="3" width="700">
_ULUP_
&ReadTmp;
$u = 0;
foreach $idl (@IDL) {
   $html .= "    <tr><td valign=\"middle\" align=\"center\" width=\"5%\"><input type=\"radio\" name=\"uid\" value=\"$idl\"></td>\n";
   $html .= "        <td valign=\"middle\" width=\"95%\">[ $TTL[$u] ]</td></tr>\n";
   $u++;
}
$html .= <<"_ULLOW_";
    <tr><td colspan="2" valign="middle" align="center">
        <input type="hidden" name="mode" value="unk">
        <input type="hidden" name="id" value="$linkid">
        <input type="submit" value="送信" >　　　
        <input type="reset" value="クリア">　　　
        [ <a href="$backcgi">LINK集に戻る</a> ]</td></tr>
    </table></td>
    <td><img src="$imgdir/dm.gif"></td></tr>
<tr><td bgcolor="#$bgcol"><img src="$imgdir/dl.gif"></td>
    <td><img src="$imgdir/dm.gif"></td>
    <td bgcolor="#$bgcol"><img src="$imgdir/dr.gif"></td></tr>
</table></form></div>
</body>
</html>
_ULLOW_
&Print;
}

sub UpBnn {
&ReadDsn;
$html = <<"_UBN_";
<html>
<head>
<title>バナーのアップロード</title>
<meta http-equiv="Content-Type" content="text/html;charset=x-sjis">
<style type="text/css"><!--
p{color:#$tlcol;font-size:$tblsz;font-family:$fface}
td{color:#$fmfnt;font-size:$tblsz;font-family:$fface}
input{color:#$fmfnt;background-color:#$fmcol;font-size:$tblsz;font-family:$fface;border:3 #$bdcol solid}
--></style>
</head>
<body onLoad="document.InputForm.iname.focus();" bgcolor="#$bgcol">
<div align="center">
<form action="$mycgi" method="POST" enctype="multipart/form-data" name="InputForm">
<table border="0" bgcolor="#$tblcol" cellspacing="0" cellpadding="0">
<tr><td bgcolor="#$bgcol"><img src="$imgdir/ul.gif"></td>
    <td><img src="$imgdir/dm.gif"></td>
    <td bgcolor="#$bgcol"><img src="$imgdir/ur.gif"></td></tr>
<tr><td><img src="$imgdir/dm.gif"></td>
    <td valign="middle" align="center"><p>バナーのアップロード</p>
    <table border="3" bgcolor="#$fmcol" bordercolor="#$bdcol" cellspacing="0" cellpadding="3" width="500">
    <tr><td valign="middle" align="center">FileName</td>
        <td valign="middle"><input name="iname" type="text" size="30"> (半角英数字で入力)</td></tr>
    <tr><td valign="middle" align="center">UploadImage</td>
        <td valign="middle"><input name="ifile" type="file" size="70"></td></tr>
    <tr><td colspan="2" valign="middle" align="center">
        <input type="hidden" name="id" value="$linkid">
        <input type="submit" value="送信">　　　
        <input type="reset" value="クリア"></td></tr>
    </table></td>
    <td><img src="$imgdir/dm.gif"></td></tr>
<tr><td bgcolor="#$bgcol"><img src="$imgdir/dl.gif"></td>
    <td><img src="$imgdir/dm.gif"></td>
    <td bgcolor="#$bgcol"><img src="$imgdir/dr.gif"></td></tr>
</table></form></div>
</body>
</html>
_UBN_
&Print;
}

sub UnBnn {
&Image;
&BnnList;
$n = 0;
foreach $img (@IMG) {
   $bnlist .= "    <tr><td valign=\"middle\" align=\"center\" width=\"5%\"><input type=\"radio\" name=\"bnm\" value=\"$n\"></td>\n";
   $bnlist .= "        <td valign=\"middle\" width=\"95%\"><img src=\"$bnndir/$img\"$bnsize>\[ $img \]</td></tr>\n";
   $n++;
}
if (!$n) { $bnlist = "    <tr><td colspan=\"2\" valign=\"middle\" align=\"center\">現在登録されているバナーはありません</td></tr>\n"; }
&ReadDsn;
$html = <<"_DBN_";
<html>
<head>
<title>バナーの削除</title>
<meta http-equiv="Content-Type" content="text/html;charset=x-sjis">
<style type="text/css"><!--
p{color:#$tlcol;font-size:$tblsz;font-family:$fface}
td{color:#$fmfnt;font-size:$tblsz;font-family:$fface}
input{color:#$fmfnt;background-color:#$fmcol;font-size:$tblsz;font-family:$fface;border:3 #$bdcol solid}
--></style>
</head>
<body bgcolor="#$bgcol" link="#$nlink" vlink="#$vlink" alink="#$alink">
<div align="center">
<form action="$mycgi" method="POST" enctype="x-www-form-urlencoded">
<table border="0" bgcolor="#$tblcol" cellspacing="0" cellpadding="0">
<tr><td bgcolor="#$bgcol"><img src="$imgdir/ul.gif"></td>
    <td><img src="$imgdir/dm.gif"></td>
    <td bgcolor="#$bgcol"><img src="$imgdir/ur.gif"></td></tr>
<tr><td><img src="$imgdir/dm.gif"></td>
    <td valign="middle" align="center"><p>削除したいバナーを選んで送信ボタンを押して下さい</p>
    <table border="3" bgcolor="#$fmcol" bordercolor="#$bdcol" cellspacing="0" cellpadding="3" width="500">
$bnlist
    <tr><td colspan="2" valign="middle" align="center">
        <input type="hidden" name="id" value="$linkid">
        <input type="hidden" name="mode" value="dbn">
        <input type="submit" value="送信">　　　
        <input type="reset" value="クリア"></td></tr>
    </table></td>
    <td><img src="$imgdir/dm.gif"></td></tr>
<tr><td bgcolor="#$bgcol"><img src="$imgdir/dl.gif"></td>
    <td><img src="$imgdir/dm.gif"></td>
    <td bgcolor="#$bgcol"><img src="$imgdir/dr.gif"></td></tr>
</table></form></div>
</body>
</html>
_DBN_
&Print;
}

sub InputBnn {
    require "$cgilib";
    &ReadParse;
    if (!$in{'iname'}) { &Err('バナーの名称が入力されていません'); }
    if (!$in{'ifile'}) { &Err('アップロードするバナーが指定されていません'); }
    $linkid = $in{id};
    $tmpdir = "$tmpdir\/";
    $tmplog = "$linkid.tmp";
    $iname = $in{'iname'};
    $ifile = $in{'ifile'};
    $designfile = "$tmpdir$tmplog";
    open(FILE,">$bnndir/$iname") || &Err('バナーのアップロードに失敗しました');
    eval 'flock(FILE,2);';
    print FILE "$ifile" || &Err('バナーのアップロードに失敗しました');
    eval 'flock(FILE,8);';
    close(FILE);
    &UpBnn;
}

sub BnnList {
    opendir(READ,$bnndir);
    @AIG = readdir(READ);
    closedir(READ);
    $l = 0;
    foreach (@AIG) {
       if  ($_ eq '.' || $_ eq '..') { next; }
       $IMG[$l] = $_;
       $l++;
    }
}

sub DeleteBn {
    &BnnList;
    $unbnn = "$bnndir/$IMG[$bannnum]";
    unlink "$unbnn" || &Err('バナーの削除に失敗しました');
    &UnBnn;
}

sub TmpList {
    opendir(READ,$tmpdir);
    @TMP = readdir(READ);
    closedir(READ);
    $l = 0;
    foreach (@TMP) {
       if  ($_ eq '.' || $_ eq '..') { next; }
       $RTM[$l] = $_;
       $l++;
    }
}

sub ReadTmp {
    &TmpList;
    $i = 0;
    foreach $rtm (@RTM) {
       open(READ, "<$tmpdir$rtm") || &Err('デザインログの読込みに失敗しました');
       eval'flock(READ,2);';
       $rlt = <READ>;
       eval'flock(READ,8);';
       close(READ);
       $rlt =~ s/\n//g;
      ($r_id,$r_tl,$r_lc,$r_tc,$r_tz,$r_it,$r_bc,$r_fc,$r_ff,$r_bz,$r_bd,$r_fe,$r_hb,$r_tg,$r_nk,$r_vk,$r_ak,$r_wd,$r_hi,$r_pg,$r_ty) = split(/<>/,$rlt);
       $IDL[$i] = $r_id;
       $TTL[$i] = $r_tl;
       $i++;
    }
}

sub InputNew {
    if ($sitebnn eq '') { $sitebnn = 'none'; }
    if (240 < length($sitecom)) { &Err('コメントが最大文字数を超えています'); }
    if ($sitecom eq '') { $sitecom = 'No Comment'; }
    if ($sitenme eq '') { &Err('サイト名が入力されていません'); }
    if ($siteurl eq '') { &Err('サイトURLが入力されていません'); }
    $alldata = "$sitenme<>$siteurl<>$sitebnn<>$sitecom\n";
    &jcode'convert(*alldata,'sjis');
    open(WRITE, ">>$datafile") || &Err('データログへの書込みに失敗しました');
    eval'flock(WRITE,2);';
    print WRITE $alldata;
    eval'flock(WRITE,8);';
    close(WRITE);
    &NeworCus;
}

sub InputDel {
    &ReadDat;
    splice(@DATA,$linknum,1);
    open(WRITE, ">$datafile") || &Err('データログへの書込みに失敗しました');
    eval'flock(WRITE,2);';
    print WRITE @DATA;
    eval'flock(WRITE,8);';
    close(WRITE);
    &ReadDsn;
    &DelLink;
}

sub InputCng {
    if ($sitebnn eq '') { $sitebnn = 'none'; }
    if (240 < length($sitecom)) { &Err('コメントが最大文字数を超えています'); }
    if ($sitecom eq '') { $sitecom = 'No Comment'; }
    if ($sitenme eq '') { &Err('サイト名が入力されていません'); }
    if ($siteurl eq '') { &Err('サイトURLが入力されていません'); }
    &ReadDat;
    $cngdata = "$sitenme<>$siteurl<>$sitebnn<>$sitecom\n";
    &jcode'convert(*cngdata,'sjis');
    $DATA[$linknum] = $cngdata;
    open(WRITE, ">$datafile") || &Err('データログへの書込みに失敗しました');
    eval'flock(WRITE,2);';
    print WRITE @DATA;
    eval'flock(WRITE,8);';
    close(WRITE);
    &ReadDsn;
    &OldLink;
}    

sub InputCtm {
    if ($linkid eq '')   { &Err('リンクIDが入力されていません'); }
    if ($psttitle eq '') { &Err('タイトル名が入力されていません'); }
    if ($psttlcol eq '') { &Err('タイトルの色が入力されていません'); }
    if ($pstttlsz eq '') { &Err('タイトルのフォントサイズが入力されていません'); }
    if ($pstbackg eq '') { &Err('背景色が入力されていません'); }
    if ($pstfmcol eq '') { &Err('テーブル内の背景色が入力されていません'); }
    if ($pstfmfnt eq '') { &Err('テーブル内の文字色が入力されていません'); }
    if ($pstfmbdr eq '') { &Err('テーブル内のボーダー色が入力されていません'); }
    if ($psttblsz eq '') { &Err('テーブル内のフォントサイズが入力されていません'); }
    if ($pstfontf eq '') { &Err('フォントの種類が入力されていません'); }
    if ($psthmurl eq '') { &Err('戻り先URLが入力されていません'); }
    if ($psttrget eq '') { &Err('リンク先の開き方が入力されていません'); }
    if ($pstnlink eq '') { &Err('リンクの色(未訪問)が入力されていません'); }
    if ($pstvlink eq '') { &Err('リンクの色(訪問済)が入力されていません'); }
    if ($pstalink eq '') { &Err('リンクの色(アクティブ)が入力されていません'); }
    if ($pstpage eq '')  { $pstpage = 'none' ; }
    if ($psttlimg eq '') { $psttlimg = 'none'; }
    if ($pstbnwid eq '') { $pstbnwid = 'none'; }
    if ($pstbnhei eq '') { $pstbnhei = 'none'; }

    $alldsin = "$linkid<>$psttitle<>$pstlnkcm<>$psttlcol<>$pstttlsz<>$psttlimg<>$pstbackg<>$pstfmcol<>$pstfmfnt<>$psttblsz<>$pstfmbdr<>$pstfontf<>$psthmurl<>$psttrget<>$pstnlink<>$pstvlink<>$pstalink<>$pstbnwid<>$pstbnhei<>$pstpage<>$psttype\n";
    &jcode'convert(*alldsin,'sjis');
    open(WRITE, ">$designfile") || &Err('デザインログへの書込みに失敗しました');
    eval'flock(WRITE,2);';
    print WRITE $alldsin;
    eval'flock(WRITE,8);';
    close(WRITE);
    &ReadDsn;
    &CtmLink;
}

sub DeleteLk {
    if ($ulnkid eq '') { &Err('削除するLINKが選択されていません'); }
    $uiddat = "$datdir$ulnkid\.dat";
    $uidtmp = "$tmpdir$ulnkid\.tmp";
    if (-e $uiddat) { unlink "$uiddat" || &Err('データログの削除に失敗しました'); }
    if (-e $uidtmp) { unlink "$uidtmp" || &Err('デザインログの削除に失敗しました'); }
    &ReadTmp;
    if (!grep(/$linkid/,@IDL)) {
        $designfile = "$tmpdir$IDL[0].tmp";
        $backcgi = "$mycgi\?mode\=link\&id\=$IDL[0]";
    }
    &ReadDsn;
    &UnLink;
}

sub ReadDsn {
    if (!-e $designfile) {
        open(MAKE, ">$designfile") || &Err('デザインログの作成に失敗しました');
        close(MAKE);
        chmod(0666, "$designfile");
    }
    open(READ, "<$designfile") || &Err('デザインログの読込みに失敗しました');
    eval'flock(READ,2);';
    $dsinlog = <READ>;
    eval'flock(READ,8);';
    close(READ);
    if (!length($dsinlog)) {
        if ($imttl eq '') { $imttl = 'none'; }
        if ($wid eq '') { $wid = 'none'; }
        if ($hei eq '') { $hei = 'none'; }
        if ($pstpage eq '') { $pstpage = 'none' ; }
        $dsinlog = "$linkid<>$title<>$lnkcm<>$tlcol<>$ttlsz<>$imttl<>$bgcol<>$fmcol<>$fmfnt<>$tblsz<>$bdcol<>$fface<>$hback<>$target<>$nlink<>$vlink<>$alink<>$wid<>$hei<>$p_page<>$p_type\n";
        &jcode'convert(*dsinlog,'sjis');
        open(WRITE, ">$designfile") || &Err('デザインログへの書込みに失敗しました');
        eval'flock(WRITE,2);';
        print WRITE $dsinlog;
        eval'flock(WRITE,8);';
        close(WRITE);
    }
    $dsinlog =~ s/\n//g;
   ($linkid,$title,$lnkcm,$tlcol,$ttlsz,$imttl,$bgcol,$fmcol,$fmfnt,$tblsz,$bdcol,$fface,$hback,$target,$nlink,$vlink,$alink,$wid,$hei,$p_page,$p_type) = split(/<>/,$dsinlog);
    if ($imttl eq 'none') { $imttl = ''; }
    if ($wid eq 'none') { $wid = ''; }
    if ($hei eq 'none') { $hei = ''; }
    if ($p_page eq 'none')  { $p_page = '' ; }
}

sub ReadDat {
    open(READ, "<$datafile") || &Err('データログの読込みに失敗しました');
    eval'flock(READ,2);';
    @DATA = <READ>;
    eval'flock(READ,8);';
    close(READ);
}

sub Print {
&jcode'convert(*html,'sjis');
print "Content-type: text/html\n\n";
print $html;
exit;
}

sub Err {
$html = <<"_ERROR_";
<html>
<head>
<title>Error!!</title>
<meta http-equiv="Content-Type" content="text/html;charset=x-sjis">
</head>
<body>$_[0]</body></html>
_ERROR_
&Print;
}