#!/usr/local/bin/perl 
#####################################################################
#  Web Album Ver.2.2b5(デジタルカメラ一覧君2)
#  disp.cgiモジュール  (表示モード用CGI)
#  Last updated 04/07/01
#####################################################################
#                                                                     
#
# (Support site)
#    http://www.big.or.jp/~talk/welcome/
#    Don't remove this title and copyright,
#
# [Copyright]1998 特報倶楽部CGIダウンロードセンター
# このスクリプトの使用は無料ですが、著作権は放棄していません。個人の利用に
# 限り改変は自由ですが、改造、非改造に関わらず無断再配布は認めません。
#
#=================当スクリプトは編集不要です ========================##  
#  主な設定及びカスタマイズはadmin.cgiを起動すると出現するウィザードで
#  行います。従って、以下ユーザがエディタで設定を書き換えなくてはならない
#  部分はありません。
#
# [使用方法]添付のreadme.htmlを参照してください。
#
#
# [最近の改変履歴]
# 
# -04/07/01 IMGタグにtitle属性を追加
# -04/07/01 クッキーが期限切れで無効になっていた問題を修正
# -04/07/01 URL自動リンクを日本語ドメイン名対応のタイプに変更
# -04/07/01 URL自動リンクで自動電話リンクを廃止（セキュリティ対策）
# -04/07/01 最近のBB普及を考慮し、スライドショーのデフォルト値を12→8秒に変更
# -04/07/01 PNGも扱えるように修正
#
# -00/04/10 名称をdisp_sl.cgiからdisp.cgiに変更
# -00/03/29 最近のプロバイダでは、777,707等のディレクトリでCGIは動かない場合
#  があるため、説明文を変更した。admin.cgiのバージョンアップに合わせて、
#  バージョン表記を2.1とした。
# -98/04/02 一つのスクリプトで複数ディレクトリをサポートするモードを追加
# -98/05/09 コメント表示欄の仕様細部を変更．
#           センタリングしつつ，左揃えでテキストを表示可能に 
# -98/08/26 スライドショー機能を追加
# -98/09/10 設定ウィザードを追加
#############################################################################
#
#
$wconfig_name		='wconfig.txt';	# 共通設定ファイルの名前
#
#
#--end of config ------don't remove this line----
#
#■共通設定ファイル読込
#
if(-e "$wconfig_name"){
	require "$wconfig_name";
}else{
    print "Content-type: text/html\n\n";
    print "<HTML>\n";
    print "<BODY BGCOLOR=\"#FFFFFF\">\n";
    print "CGI設置作業にエラーがあるようです。\n";
    print "共通設定ファイル $wconfig_name が見つかりません。\n";
    print "同ファイルをdisp.cgiと同じディレクトリに入れて下さい \n";
    print "</BODY></HTML>\n";
    exit;
}
#■共通ライブラリ読込
#
if(-e "$wa_lib_name"){
	require "$wa_lib_name";
}else{
    print "Content-type: text/html\n\n";
    print "<HTML>\n";
    print "<BODY BGCOLOR=\"#FFFFFF\">\n";
    print "CGI設置作業にエラーがあるようです。\n";
    print "共通ライブラリ $wa_lib_name が見つかりません。\n";
    print "同ファイルをdisp.cgiと同じディレクトリに入れて下さい \n";
    print "</BODY></HTML>\n";
    exit;
}
#
#■画像サイズ解析用ライブラリ読込

if(-e "$imgsize_prog"){
	require "$imgsize_prog";
}

#--end of config ------don't remove this line----
#
#
#=============(ＨＴＭＬ編集エリア)================#
#  (改造に関して)
#  <!--HTMLカスタマイズここから-->という行から
#  <!--HTMLカスタマイズここまで-->という行に挟まれた部分中のテキストでは
#  ユーザサイドでHTMLをカスタマイズ可能です．ただ注意点としては，頭に$の
#  ついたものは変数(実際にはテキストあるいは数字が代入されます)なのででき
#  るだけ削除しないで下さい．
#  なお特殊制御文字(@ :など)や、特定の漢字(表示、機能、申すなど)を使用する
#  場合はその漢字の前に\を付けないと文字化けしますので、ご注意下さい．
#  どの文字に\を付けるかの判断は難しいので、「ブラウザで見て、文字化けして
#  しまった文字があったらその文字の前後に\を付けてみる」というやり方で解決
#  してみてください。
#  
#例 X ogo@ta5.so-net.ne.jp, http://www.big.or.jp/  表示している 
#   O ogo\@ta5.so-net.ne.jp, http\://www.big.or.jp/ 表\示している
#
#
sub HTML_top{
#============= 先頭のヘッダHTML ===============#

print<<EOF;
<HTML>
 <HEAD>
 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=x-sjis">
 $meta_refresh
 <title>$PM{'title'}</title>
 </HEAD>
<BODY $PM{'body_bgcolor'} $PM{'body_background'} TEXT="$PM{'body_text_color'}" LINK="$PM{'body_link_color'}" $onload>
EOF
#========= 先頭のヘッダHTMLここまで ===============#
}



#========== 画像を表示する部分のHTML=============#
sub HTML_disp_image{
	print<<EOF;   #次行からEOF記号まではHTMLとして編集可能
<!-- ここからユーザHTMLカスタマイズ可\能\ -->

<!-- 画像表\示部分のＨＴＭＬ-->
<TABLE border=0>

<TR>
 <TD align=center>
  <img src="$PM{'photo_url'}/$picture_name" $w_set $h_set ALT="$picture_name\n ORG[$IMGSIZE{'width'} x $IMGSIZE{'height'}] NOW[ $IMGSIZE{'out_width'} x $IMGSIZE{'out_height'}]\n(補正前倍率$IMGSIZE{'sm_org_per'}％倍率補正をして$disp_size％で表\示中)" title="$picture_name\n ORG[$IMGSIZE{'width'} x $IMGSIZE{'height'}] NOW[ $IMGSIZE{'out_width'} x $IMGSIZE{'out_height'}]\n(補正前倍率$IMGSIZE{'sm_org_per'}％倍率補正をして$disp_size％で表\示中)">
 </TD>
</TR>
</TABLE>
<!-- ユーザHTMLカスタマイズここまで -->
EOF
}
#========= 画像を表示する部分のHTML/END ================#


#========== コメントを表示する部分のHTML(タイプ１)=============#
# PREタグを利用するタイプ(imgの直下)
sub HTML_disp_comment{
	print<<EOF;   #次行からEOF記号まではHTMLとして編集可能
<!-- ここからユーザHTMLカスタマイズ可\能\ -->
<!-- コメント表\示部分のＨＴＭＬ-->

<TABLE border=0>
 <TR>
  <TD width="$PM{'adjust_h_center'}">
  </TD>
  <TD $preview_td_width_set nowrap $PM{'comment_bgcolor'}>
   <FONT $PM{'comment_font_opt_01'}><PRE><B>$G_DATA{'html_body'}</B></PRE></FONT>
  </TD>
 </TR>
EOF
# コメント編集ボタンの位置をコメント直下にして、閲覧者がコメントしやすくする
# ようなレイアウトを、オプションとして用意
    if($PM{'edit_button_pos'} eq 'near_comment'){
print<<EOF;
 <TR align=center>
  <TD width="$PM{'adjust_h_center'}">
  </TD>
  <!-- 編集モード切替用のフォーム-->
  $edit_switch_html
  </TR>
EOF
    }
print<<EOF;
</TABLE>
<!-- ユーザHTMLカスタマイズここまで -->
EOF
}
#========= コメントを表示する部分のHTML/END =============#

#========== コメントを表示する部分のHTML(タイプ2)=============#
sub HTML_disp_comment2{
# 改行のみ反映タイプ(左下)

$G_DATA{'html_body'}=~ s/\n//g;

	print<<EOF;   #次行からEOF記号まではHTMLとして編集可能
<!-- ここからユーザHTMLカスタマイズ可\能\ -->
<!-- コメント表\示部分のＨＴＭＬ-->

<TABLE border=0 width="98%" cellspacing=0 cellpadding=4>
 <TR>
  <TD width="$PM{'adjust_h_center'}">
  <!-- 画面下方向の長さはここのBRの数で調整してください  -->
  <BR><BR><BR>
  <BR><BR><BR>
  <BR><BR><BR>
  </TD>
  <TD $PM{'comment_bgcolor'} wrap valign=top>
   <FONT $PM{'comment_font_opt_02'}><B>$G_DATA{'html_body'}</B></FONT>
  </TD>
 </TR>
EOF
# コメント編集ボタンの位置をコメント直下にして、閲覧者がコメントしやすくする
# ようなレイアウトを、新たにオプションとして用意
    if($PM{'edit_button_pos'} eq 'near_comment'){
print<<EOF;
 <TR align=center>
  <TD width="$PM{'adjust_h_center'}">
  </TD>
  <!-- 編集モード切替用のフォーム-->
  $edit_switch_html
  </TR>
EOF
    }
print<<EOF;
</TABLE>
<!-- ユーザHTMLカスタマイズここまで -->
EOF
}
#========= コメントを表示する部分のHTML/END =============#


#■ＨＴＭＬを出力する部分（レイアウト全体）
#
# レイアウト全体を変更したい場合はここでカスタマイズしてください。
# 今は全体を縦2横３のテーブルに切り、
# 縦1段目：一番左に桁合わせ用空欄、左にコントロールバー、右に写真とコメント
# 縦2段目：一番左に桁合わせ用空欄、左にカスタマイズ欄、右に写真とコメント
#（上と結合しています）となっています。桁合わせ用の空欄は写真やコメントの
# 大小によってレイアウトが大きく狂わないようにするためのものです。

sub output_disp_HTML{

    $|=1;

	print "Content-type: text/html\n\n";

	# HTMLのヘッダーとbodyまでを出力
	&HTML_top;

	# 公開＆非公開のチェック
	# 一時閉鎖中ならメッセージを出して終了
	&check_open;


print<<HTML_END;
<!-- 全体配置用テーブル-->
<TABLE border=0 width="100%" cellspacing=0 cellpadding=3>
<TR> 
 <!-- 一番左（縦１段目横１段目） レイアウト桁合わせ用 -->
 <TD>
 <BR><BR><BR>
 <BR><BR><BR>
 <BR><BR><BR>
 </TD>
 <!-- 左ＨＴＭＬ（縦１段目、横２段目） -->
 <TD valign=top width="25%" $PM{'table_11_bgcolor'} $PM{'table_11_background'}>
 <BR>
HTML_END
	# 当スクリプトは著作権法により保護されています。
	# 当コピーライト部のHTML削除・改変は厳禁とさせていただきます。
	# コピーライト部の改変、削除は損害賠償の対象になる場合があります。
    # なお、パネルgifのアイコン自体の変更は、デザイン統一上の理由に
	# よる変更のみこれを許可するものとします。ただし、CGI作成元に誤
	# 解が生じるような改変をした場合は、使用を不許可としますので、ご
	# 注意ください。

	&output_copyright;

	print "<CENTER>\n";

print<<HTML_END;
<TABLE border=0 cellspacing=1 cellpadding=2 width="60%">
<TR>
 <TD width="2"></TD>
 <TD align=left bgcolor="darkblue" NOWRAP $PM{'body_background'}>
  <font color="gray" size=4 face="impact">
	___ <I> Photo No. <font color="green">$disp_number</font>/<font color="green">$img_count </font></I> ___
  </font>
 </TD>
 <TD width="2"></TD>
</TR>
</TABLE>
<BR>
$slide_message

HTML_END


	# NEXT,BACKボタン部分のHTMLを出力        			
	&disp_button;


	print "<BR><BR>\n";

	&sub_button;

	print "</CENTER>\n";

	print "</TD>\n";


print<<HTML_END;
<!-- 右のＨＴＭＬ（縦１段目横３段目と縦２段目横３段目の結合） -->
<TD rowspan=2 valign=top>

$PM{'HTML_top'}

HTML_END

	print "<CENTER>\n";

	# 画像周辺部のHTMLを出力
	&HTML_disp_image;
	&HTML_disp_comment if(($PM{'comments_pos'} eq "under_img")||($PM{'comments_pos'} eq "both"));

	print "</CENTER>\n";
	
print<<HTML_END;

$PM{'HTML_bottom'}

</TD>
</TR>

<!-- 縦２段目ここから -->
<TR>
 <!-- 一番左 レイアウト桁合わせ用（縦２段目、横１段目） -->
 <TD>
 <BR><BR><BR>
 <BR><BR><BR>
 <BR>
 </TD>
<!-- 左下の空欄（縦２段目、横２段目） -->
<TD $PM{'table_21_bgcolor'} $PM{'table_21_background'}>
HTML_END

&HTML_disp_comment2 if(($PM{'comments_pos'} eq "under_left")||($PM{'comments_pos'} eq "both"));;


print<<HTML_END;
$PM{'HTML_left'}
</TD>
</TR>
</TABLE>
HTML_END

#次画像先読み用ＨＴＭＬ
&output_cache_HTML;

print "</BODY></HTML>\n";


#HTML出力終わり
}

#======ＨＴＭＬ編集エリアここまで．以下はプログラムになります．==#

#=====================(ＨＴＭＬ部終わり)======================#

#メインルーチン

	#■初期化
	&init_disp;

	#■フォームからの入力を取得
	&parse_form_input('no_use_jcode');

	#■変数に代入
	&get_variables;

	#■複数ディレクトリをサポート
	if($PM{'multi_directory_flag'} ==1){
	    	&multi_directory_support; 
	}

	#■コメントファイルからの変数の上書き
	if(-e "$PM{'comment_file'}"){
		&overwrite_parameters;
	}

	#■変数の上書きの上書き
	#(FORMで送られたテンポラリな値の方が優先されるべきである場合は、
	# get_variables_35disp等でTMP_PMに記憶しておいて、ここでさらに上
	#書きする。)
	# 今のところ、WA3.6のscroll,fit_mode,auto_scrollの三つ
	foreach $p_key(keys %TMP_PM){
	    if($TMP_PM{"$p_key"} ne ""){ #
           $PM{"$p_key"}=$TMP_PM{"$p_key"};
        }
	}

	#■各種変数の計算、準備
		

	#■画像ファイルをリスト読み込む
	# ディレクトリリストをリスト@LISTに収納 
	# ソート、マスクパターンを用いたフィルタリング後、
	# 全ファイルは@ORG_PHOTO_LIST、非表示選択を除いたものは@PHOTO_LISTに収納

	&load_file_list("$PM{'photo_dir'}");


	#■番号をチェック
	if($disp_number > $img_count){
		$disp_number=$img_count;
	}

	#■一つ前と一つ後の番号を作成
	$next_number=$disp_number + 1;
	$prev_number=$disp_number - 1;

	#■画像名を決定
	$picture_name	="$PHOTO_LIST[$disp_number-1]";

	#■先読みキャッシュ用に次画像名を決定
	$next_file_name	="$PHOTO_LIST[$disp_number]";

	#■画像サイズ変更ルーチン
	&change_img_size if($use_imgsize == "1");

	#■ＨＴＭＬ部品を作成
	&make_html_parts;

	#■ウィザードでカスタマイズされたHTML部を処理

	#HTML_XXXXという名前のものはデコードする。
	foreach(keys %PM){
	  if(($_=~ /^HTML\_/)||($_=~ /^comment\_font\_opt\_/)){
		$PM{$_}		=&decorde_Enc_character($PM{$_});
	  }
	}

	#■スライドショー用の追加ルーチン

	if($PM{'show_slide_button'} != "0"){
		&slide_show;
	}


	#■コメントを取得

		&get_message;			#コメントファイルからテキストを取得
		&filter_html;			#コメントにフィルタ処理．

	#■次画像先読み部

	sub output_cache_HTML{
		if(($PM{'load_next_file'}==1)&&($HTTP_USER_AGENT=~ /Mozilla/ig)){
		#表示高速化のため次の画像を画面最下部に先読みする．
			print "<img src=\"$PM{'photo_url'}/$next_file_name\" width=8 height=5 alt=\"This picture is for quick loading of picture.\" title=\"This picture is for quick loading of picture.\">\n";
		}
	}


	#■自動URLリンク
	$G_DATA{'html_body'}=&set_auto_url_link("$G_DATA{'html_body'}");

	#■ＨＴＭＬを出力

		&output_disp_HTML;

	exit;

# メインプログラム終了

#====================以下はサブルーチンになります===========================#
#
#============#
#  初期化
#============#
#
sub init_disp{
#  ウィザード未使用時のためのデフォルトパラメータ
	#  以下の設定値は設定ファイルが見つからない場合に、内部で持っている
	#  デフォルト値を規定するものです。ウィザードでパラメータを設定すると
	#  その値が優先されます。
	$PM{'multi_directory_flag'}		=1;
	$PM{'check_icon_exist'}		=1;

	$PM{'allow_view'}			=1;
	$PM{'cache'}				=1;
	$PM{'show_edit_button'}	=1;
	$PM{'edit_button_pos'}			='normal';
	$PM{'sort_type'}			="1";
	$PM{'show_slide_button'}	=1;
	$PM{'set_slide_interval'}	=8;
	$PM{'show_snl_button'}		=1;

	#WA3.6用
	$PM{'show_scroll_button'}	=1;
	$PM{'show_fit_mode_button'}	=1;
	$PM{'scroll'}				='down_scroll';
	$PM{'fit_mode'}				='auto_fit';
	$PM{'auto_scroll'}			='yes';

	$PM{'disp_mode'}			="img_limit_max";
	$PM{'max_height'}			=400;
	$PM{'max_width'}			=800;
	$PM{'x_per'}				=100;
	$PM{'auto_sq'}				=2600000;
	$PM{'imgsize_smoozer'}		=2;
	$PM{'load_next_file'}		="1";
	$PM{'title'} 				=" ウィザードを用いてタイトルをここに入れて下さい ";
	$PM{'back_url'}				='./../';
	$PM{'back_url_top'}			=0;		#0=なし,1="target=_top"
#inu
	$PM{'body_background'}			='';
	$PM{'body_bgcolor'}			='';
	$PM{'body_text_color'}			='black';
	$PM{'body_link_color'}			='blue';
	# 左上
	$PM{'table_11_background'}		='';
	$PM{'table_11_bgcolor'}			='';
	# サブボタン
	$PM{'table_sub_button_background'}='';
	$PM{'table_sub_button_bgcolor'}	='';
	# 左下
	$PM{'table_21_background'}		='';
	$PM{'table_21_bgcolor'}			='';

	$PM{'comments_pos'}			='both';
	$PM{'comment_bgcolor'}		='';	#テキストの背景色
	$PM{'comment_font_opt_01'}	='';	#コメント部のフォントタグのオプション
	$PM{'comment_font_opt_02'}	='';	#コメント部のフォントタグのオプション
	$PM{'HTML_top'}				='';		#HTML上部
	$PM{'HTML_left'}			='';		#HTML左下下部
	$PM{'HTML_bottom'}			='';		#HTML下部

#パラメータ
	$img_count  ="0";		#全画像数
	$disp_number ="1";	#表示画像番号
	$comment_open_flag=0;	#コメントファイル読出確認
}

#========================#
#  画像サイズ変更ルーチン
#========================#
#
sub change_img_size{
	#画像ファイルのパラメータを取得
	
		# ウィザードで未使用を選んだ場合に対応
		$PM{'max_height'}	=9999 if($PM{'max_height'} < 2);
		$PM{'max_width'}	=9999 if($PM{'max_width'} <2);

		$disp_mode	=	$PM{'disp_mode'};

		if($disp_mode eq 'img_icon'){
		# アイコン化。引数３は基本サイズ（省略可）	
			&imgsize("$PM{'photo_dir'}/$picture_name",'iconize','4000','',"$PM{'imgsize_smoozer'}");
		}elsif($disp_mode eq 'img_w_static'){
		# 横サイズ固定。引数３は横サイズ、引数４は最大縦limit（省略可）	
			# レイアウトを揃えることができる。	
			&imgsize("$PM{'photo_dir'}/$picture_name",'static_width',"$PM{'max_width'}",'1200',"$PM{'imgsize_smoozer'}");
		}elsif($disp_mode eq 'img_original'){
		# オリジナルサイズ。引数３は表示倍率(倍率変更可能)	
			&imgsize("$PM{'photo_dir'}/$picture_name",'x_per',"$PM{'x_per'}",'',"$PM{'imgsize_smoozer'}");
		}elsif($disp_mode eq 'img_h_static'){
		# 縦サイズ固定。引数３は縦サイズ、引数４は最大横limit（省略可）
			# 以下パラメータで画像は1024x768画面でジャスト表示になる	
			&imgsize("$PM{'photo_dir'}/$picture_name",'static_height',"$PM{'max_height'}",'1000',"$PM{'imgsize_smoozer'}");
		}elsif($disp_mode eq 'img_auto'){
		# インテリジェントオートリサイズ。引数３は面積系のパラメータ（省略可）
			&imgsize("$PM{'photo_dir'}/$picture_name",'auto_resize',"$PM{'auto_sq'}",'',"$PM{'imgsize_smoozer'}");
		}elsif($disp_mode eq 'img_limit_max'){
		# 極端に大きな画像のみ縮小。引数３は縦制限サイズ、引数４は横制限サイズ（省略可）
			&imgsize("$PM{'photo_dir'}/$picture_name",'limit_by_max_size',"$PM{'max_height'}","$PM{'max_width'}","$PM{'imgsize_smoozer'}");
		}else{
			&imgsize("$PM{'photo_dir'}/$picture_name");
		}

		$w_set			= "width=$IMGSIZE{'out_width'}"		if($IMGSIZE{'out_width'} !=0);
		$h_set			= "height=$IMGSIZE{'out_height'}"		if($IMGSIZE{'out_height'} !=0);

		#表示倍率
		# 0除算防止
		$IMGSIZE{'height'}=1 if($IMGSIZE{'height'}==0);
		$disp_size=int(100*$IMGSIZE{'out_height'}/$IMGSIZE{'height'});
}

#===================#
# ＨＴＭＬ部品を作成
#===================#
#
sub make_html_parts{

	# bgcolor backgroundの加工
	&make_common_html_parts;


	#センタリング指定部分のＨＴＭＬ（sub HTML_O2で使用）
	if("$PM{'comment_position'}" == 1){	#センタリング指定されている場合
		$preview_td_width_set=""; 	#テーブルは可変サイズ．．
		#全体としてセンタリング効果がでる．
	}else{
		$preview_td_width_set="width=\"$PM{'preview_td_width'}\""; 
		#センタリング指定されてない場合
		#テーブルは固定サイズ．テキストは左寄せで表示される．
	}

	$new_input_parameters=qq|dir=$dir|;


	if($PM{'show_edit_button'}==1){
		if(&fast_icon_exist_check("$PM{'icon_url'}/edit_ND.gif","$PM{'check_icon_exist'}") == 1){
			$edit_switch_html=qq|<TD><A href="$PM{'admin_cgi_name'}?$new_input_parameters$other_param&pid=$disp_number" ><IMG SRC="$PM{'icon_url'}/edit_ND.gif" border=0></a></TD>\n|;
		}else{
 			$edit_switch_html=qq|<FORM><TD><INPUT TYPE=BUTTON VALUE=" コ メ ン ト 編 集" onClick="location.href='$PM{'admin_cgi_name'}?$new_input_parameters$other_param&pid=$disp_number';">
<NOSCRIPT><A href="$PM{'admin_cgi_name'}?$new_input_parameters$other_param&pid=$disp_number" > コ メ ン ト 編 集</a></NOSCRIPT></TD></FORM>\n|;
		}
	}

	if($PM{'back_url_top'}==1){
		$exit_target_type=" target\=_top";
	}

	# サムネイルからのアクセスの場合だけ、表示画面のforeground指定をしない。
	# 理由は、サムネイルが隠れてしまうからである。
	&output_copyright;

 	if($FORM{'cgi_ref'} ne "snl"){
 	 	# focusはIE4,NN4以降で有効
		$onload="$onload_focus";
	}

	if($PM{'show_snl_button'}==1){

	#最後の一枚の場合スライドショーフラグをサムネイルに渡さない
		if($disp_number == "$img_count"){
			$tmp_slide_interval="";
		}else{
			$tmp_slide_interval="$PM{'slide_interval'}";
		}
		# フレームになっている場合
		if($PM{'back_url_top'}==1){
			# ボタン画像がある場合
		   if(&fast_icon_exist_check("$PM{'icon_url'}/snl_ND.gif","$PM{'check_icon_exist'}") == 1){
		       # フレームの見え方の違いを吸収
		       if($ENV{'HTTP_USER_AGENT'}=~ /MSIE/i){
			   $PM{'frame_width'}=90;
		       }else{
			   $PM{'frame_width'}=120;
		       }
  			$view_snl_button_html=qq|
			<TD><A href="$PM{'frame_cgi_name'}?dir=$dir&slide_interval=$tmp_slide_interval&pid=$disp_number&option=$option$other_param&frame_width=$PM{'frame_width'}" target="_top">
			<IMG SRC="$PM{'icon_url'}/snl_ND.gif" border=0></a></TD>|;
		   }else{
			# ボタン画像がない場合
			$view_snl_button_html=qq|
			<FORM><TD>
			<A href="$PM{'snl_cgi_name'}?dir=$dir&slide_interval=$tmp_slide_interval&pid=$disp_number&option=$option$other_param&frame_width=90" target="snl_window">
			サ ム ネ イ ル  
			</a></TD>|;
		   }
		}else{
		# フレームになってない場合 フローティングウィンドを作成
		# フレームになっていないでJavascriptが無効な場合、サムネイルはあきらめる。
			# ボタン画像がある場合
		   if(&fast_icon_exist_check("$PM{'icon_url'}/snl_ND.gif","$PM{'check_icon_exist'}") == 1){
 			$view_snl_button_html=qq|<TD>
				<SCRIPT Language="JavaScript">
				<!-- サムネイルウィンドを開けるためのスクリプト -->\n
				<!-- \n
				function open_snl_window()\n 
				{\n
					snl_window=window.open('$PM{'snl_cgi_name'}?dir=$dir&slide_interval=$tmp_slide_interval&pid=$disp_number&option=$option$other_param','snl_window','toolbar=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,close=yes,width=120,height=400');\n
				}\n
				// -->\n
				</SCRIPT>\n
			    <a href="javascript:open_snl_window()">\n
				<IMG SRC="$PM{'icon_url'}/snl_ND.gif" border=0></a>
				<NOSCRIPT>
				非フレームでJavascriptが無効な場合、サムネイル\機\能\は無効です。
				<A href="$PM{'frame_cgi_name'}?dir=$dir&slide_interval=$tmp_slide_interval&pid=$disp_number&option=$option$other_param&frame_width=90" target="_top">
				<IMG SRC="$PM{'icon_url'}/snl_ND.gif" border=0></a>
				</NOSCRIPT></TD>\n|;
		   }else{

			# ボタン画像がない場合
 			$view_snl_button_html="<FORM><TD><FONT size=-2>
	<INPUT TYPE=\"button\" VALUE=\" サ ム ネ イ ル  \"
onClick=\"window.open('$PM{'snl_cgi_name'}?dir=$dir&slide_interval=$tmp_slide_interval&pid=$disp_number&option=$option$other_param','snl_window','toolbar=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,close=yes,width=120,height=400');\">
</FONT></TD></FORM>\n";
		   }
		}

	}
}

#===================================#
# メッセージからテキストをフィルタ
#===================================#

sub filter_html{
#コメントを表示する前にフィルタ＆置換処理を実行できる．
#	$G_DATA{'html_body'} =~ s/\n/<BR>/g;		#改行コード(LF)を＜ＢＲ＞に
        $disp_view=1;
	exit if($cc_color_name ne "bgcolor=blue");
}


#==========================================#
# スライドショー機能用サブルーチン
#==========================================#

sub slide_show{

	if("$disp_number"=="$img_count"){	#最後のページ
		#なにもしない
	}elsif($PM{'slide_interval'} ne ""){  #インターバルがある場合はメタタグを使用

		$meta_refresh="<META HTTP-EQUIV=\"REFRESH\" CONTENT=\"$PM{'slide_interval'}; url=$PM{'disp_cgi_name'}?dir=$dir&slide_interval=$PM{'slide_interval'}&pid=$next_number&option=$option$other_param\">";
		if(&fast_icon_exist_check("$PM{'icon_url'}/stopshow_ND.gif","PM{'$check_icon_exist'}") == 1){
		  $slide_form=qq|<TD><a href="$PM{'disp_cgi_name'}?$new_input_parameters$other_param&slide_interval=&pid=$disp_number"><IMG SRC="$PM{'icon_url'}/stopshow_ND.gif" border=0></a></TD>\n|;
		}else{
		  $slide_form=qq|<FORM><TD><INPUT TYPE=BUTTON onClick="location.href='$PM{'disp_cgi_name'}?$new_input_parameters$other_param&slide_interval=&pid=$disp_number';" VALUE="スライドショー停止">
<NOSCRIPT><a href="$PM{'disp_cgi_name'}?$new_input_parameters$other_param&slide_interval=&pid=$disp_number">スライドショー停止</a></NOSCRIPT></TD></FORM>\n|;
		}
		$slide_message="<font size=\"2\" color=\"black\">スライドショー実行中.....</font>";
	}elsif($PM{'show_slide_button'} ne ""){

		if(&fast_icon_exist_check("$PM{'icon_url'}/startshow_ND.gif","$PM{'check_icon_exist'}") == 1){
				# ボタン用画像がある場合
				$slide_form=qq|<TD><a href="$PM{'disp_cgi_name'}?$new_input_parameters$other_param&slide_interval=$PM{'set_slide_interval'}&pid=$disp_number"><IMG SRC="$PM{'icon_url'}/startshow_ND.gif" border=0><IMG SRC="$PM{'icon_url'}/stopshow_ND.gif" width="1" height="1" border=0></a></TD>\n|;
		}else{
				$slide_form=qq|<FORM><TD><INPUT TYPE=BUTTON onClick="location.href='$PM{'disp_cgi_name'}?$new_input_parameters$other_param&slide_interval=$PM{'set_slide_interval'}&pid=$disp_number';" VALUE="スライドショー > ">
<NOSCRIPT><a href="$PM{'disp_cgi_name'}?$new_input_parameters$other_param&slide_interval=$PM{'set_slide_interval'}&pid=$disp_number">スライドショー > </a></NOSCRIPT></TD></FORM>\n|;
		}
		$slide_message="";

	}
}

# ボタン部分は多分カスタマイズしないので、ここへ移動

#=====================================#
# NEXT,BACK等のボタン部分のHTMLを出力  
#=====================================#
#
sub disp_button{
	# NEXT,BACKボタン部分のHTMLを出力        			
	# 1枚目ならtype1,最後の一枚ならtype2,それ以外ならtype3を表示する．

	exit if($cc_color_name!~ /edb/); # 背景色の修正

	if("$disp_number"=="1"){         	#一枚目のページ
		if($PM{'slide_interval'} eq ""){
			&HTML_03_type1;
		}
	}elsif("$disp_number"=="$img_count"){	#最後のページ
         &HTML_03_type2;
	}else{					#それ以外のページ
		if($PM{'slide_interval'} eq ""){
			&HTML_03_type3;
		}
 	}
}

#========= 下部のボタンのHTML ==========================#
#
# 下部のボタンは，
#  (type1)一枚目の写真の時
#  (type2)最後の写真の時，
#  (type3)それ以外の写真の時
#   の３種類があります．
#
#=== 最初の一枚目のボタンHTML ======#
#
# 戻るボタンがありません。exitボタンがあります。
#
sub HTML_03_type1{
print<<EOF;

<TABLE border=0 cellspacing=0 cellpadding=0>

 <TR align=center VALIGN="MIDDLE">
  <TD width=20 align=right>
  </TD>
   <TD align=right>
    <a href="$PM{'disp_cgi_name'}?dir=$dir$other_param&pid=$next_number">
     <IMG src="$PM{'icon_url'}/next.gif"  border="0" alt="次の写真へ進みます" title="次の写真へ進みます"></a>
   </TD>
  </TR>
  <TR VALIGN="MIDDLE">
  <TD colspan=2 align=center>
   <a href="$PM{'back_url'}" $exit_target_type>
   <img src="$PM{'icon_url'}/exit.gif" border="0" alt="終了します" title="終了します"></A>
  </TD>
  </TR>

</TABLE>
<!-- キャッシュ -->
<IMG src="$PM{'icon_url'}/back.gif" height="1" width="1" alt="cache">
<IMG src="$PM{'icon_url'}/top.gif" height="1" width="1" alt="cache">
EOF
}

sub HTML_03_type2{
#======= 最終ページのボタンHTML =======#
#  Nextボタンがありません。
#
print<<EOF;

<TABLE border=0 cellspacing=0 cellpadding=0>

  <TR align=center valign=center>
   <TD align=left>
     <a href="$PM{'disp_cgi_name'}?dir=$dir$other_param&pid=$prev_number">
     <IMG src="$PM{'icon_url'}/back.gif"  border="0" alt="前の写真へ戻ります" title="前の写真へ戻ります"></a>
   </TD>
   <TD align=left>
   </TD>
  </TR>
  <TR align=center Valign=center>
   <TD  colspan=2>
    <a href="$PM{'disp_cgi_name'}?dir=$dir$other_param&pid=1">
     <IMG src="$PM{'icon_url'}/top.gif"  border="0" alt="1枚目の写真へ戻ります" title="1枚目の写真へ戻ります"></a>
   </TD>
  </TR>
</TABLE>

EOF
}

sub HTML_03_type3{
#======= それ以外の時のボタンHTML ========#
#  ２枚目から、最後から一枚前の写真まで用のボタン
#  
print<<EOF;

<TABLE border=0 cellspacing=0 cellpadding=0>
  <TR Valign=center>
   <TD align=left>
     <a href="$PM{'disp_cgi_name'}?dir=$dir$other_param&pid=$prev_number">
     <IMG src="$PM{'icon_url'}/back.gif"  border="0" alt="前の写真へ戻ります" title="前の写真へ戻ります"></a>
   </TD>
   <TD align=right>
    <a href="$PM{'disp_cgi_name'}?dir=$dir$other_param&pid=$next_number">
     <IMG src="$PM{'icon_url'}/next.gif"  border="0" alt="次の写真へ進みます" title="次の写真へ進みます"></a>
   </TD>
  </TR>
  <TR align=center Valign=center>
   <TD  colspan=2>
    <a href="$PM{'disp_cgi_name'}?dir=$dir$other_param&pid=1">
     <IMG src="$PM{'icon_url'}/top.gif"  border="0" alt="1枚目の写真へ戻ります" title="1枚目の写真へ戻ります"></a>
   </TD>
  </TR>
</TABLE>

EOF
}

sub sub_button{
#============= サブボタンHTML ===============#

print<<EOF;

<TABLE border=3 width="98%" cellspacing=0 cellpadding=4 $PM{'table_sub_button_bgcolor'} $PM{'table_sub_button_background'}>
EOF
# 編集コメントの位置を選択できるようにする
    if($PM{'edit_button_pos'} ne 'near_comment'){
print<<EOF;
 <TR align=center>
  <!-- 編集モード切替用のフォーム-->
  $edit_switch_html
  </TR>
EOF
    }
print<<EOF;
 <TR align=center>
  <!-- サムネイル用のフォーム-->
    $view_snl_button_html
 </TR>
 <TR align=center>
  <!-- スライドショーコントロール用のフォーム-->
  $slide_form
 </TR>
</TABLE>

<!-- HTMLカスタマイズここまで -->
EOF
#========= サブボタンのHTMLここまで ===============#
}

#■デバッグ用ＨＴＭＬ

sub output_debug_HTML{
print<<HTML_END;
<!--サイズ変更ルール：高さ$PM{'max_height'}以上なら縮小して高さ$PM{'max_height'}にオリジナルの縦横比は維持。-->
HTML_END
}


