#!/usr/bin/perl

# Copyright (C) 2002-2004 Infotechnica Corporation, All rights reserved.

#use strict;
#use warnings;
#use lib '.';
##BEGIN{ unshift(@INC, '.'); }
#use CGI::Carp qw(fatalsToBrowser);

package main;

require './globals.pl';
require './mylibs.pl';
require './myfunc.pl';

$| = 1;

&main();
exit;

sub main {
	%main::form_key = ( %main::form_key, %{ $main::formkeys{INVENTORY_LIST} } );
	&mylibs::initialize();
	&mylibs::getPathInfo();
	&config::setConfigureData($main::ConfigFile);
	&tables::getTableData();
	&mylibs::getConnectInfo();
	my $tpl_var = {};
	$tpl_var = &tpl::makeBaseTplVariables($tpl_var);
	my $content = '';
	if ($main::ConfigData->{'SHOP-SHOP_OPENED'} == 1) {
		my $form_data = &mylibs::getFormData();
		my $session = {};
		if ($main::isRunningImodeCGI) {
			my $session_id = '';
			$session_id = &mylibs::getFormValue($form_data, $main::form_key{SESSION_ID}) 
					if &mylibs::isExistFormName($form_data, $main::form_key{SESSION_ID});
			$session = &session::beginSession($session_id);
		}
		$tpl_var = &pages::setMacroVariables($tpl_var, $main::PageTpl{INVENTORY_LIST});
		$tpl_var = &makeTplVariables($tpl_var, $session, $form_data);
		$content = &pages::makePage($main::PageTpl{INVENTORY_LIST}, $tpl_var);
	} else {
		$tpl_var = &pages::setMacroVariables($tpl_var, $main::PageTpl{SHOP_CLOSED});
		$content = &pages::makePage($main::PageTpl{SHOP_CLOSED}, $tpl_var);
	}
	my $regex = '(<LINK rel=\"stylesheet\" href=\")(style.css\" type=\"text\/css\">)';
	$content =~ s/$regex/$1$tpl_var->{REF_URL}$2/i;
	my $VM = "<!-- This page published by It's eShop CGI ver.$main::VERSION //-->\n";
	$content =~ s/(<\/HEAD>)/$VM$1/i;
	$content .= $VM;
	&mylibs::outPage($content);
}

sub makeTplVariables {
	my $tpl_var = shift;
	my $session = shift;
	my $form_data = shift;
	my $cart = shift;

	$tpl_var->{SESSION_ID} = &sanitize::convANB($session->{SESSION_ID});

	$tpl_var->{DISP_COLOR} = ($main::ConfigData->{'EXEC-DISP_COLOR'} != 0);
	$tpl_var->{DISP_SIZE} = ($main::ConfigData->{'EXEC-DISP_SIZE'} != 0);
	$tpl_var->{DISP_THUMB} = ($main::ConfigData->{'EXEC-DISP_THUMB'} != 0);
	$tpl_var->{DISP_STATUS} = ($main::ConfigData->{'EXEC-DISP_STATUS'} == 1);
	$tpl_var->{DISP_NOSTOCK} = ($main::ConfigData->{'EXEC-DISP_NOSTOCK'} != 1);
	$tpl_var->{USE_STOCK} = ($main::ConfigData->{'EXEC-STOCK_CONTROL'} == 1);

	my $page_num = 0;
	if (&mylibs::isExistFormValue($form_data, $main::form_key{PAGE_NO})) {
		$page_num = &sanitize::convInteger(&mylibs::getFormValue($form_data, $main::form_key{PAGE_NO}));
	}

	$tpl_var->{ERROR_LITERAL} = 'There is no category.';
	$tpl_var->{ERROR_LITERAL} = $main::ConfigData->{'JP_ERROR_MESSAGE_NO_CTG'} 
					if ($main::ConfigData->{'JP_ERROR_MESSAGE_NO_CTG'} ne '');

	my $ctg_id = &sanitize::convANB(&mylibs::getFormValue($form_data, $main::form_key{CTG_ID}));
	if ($ctg_id eq '') {
		$tpl_var->{VALID_CTG} = (0);
		return $tpl_var;
	}
	my $ctg_file = $ctg_id . $main::DataFileExt;
	if (-e $main::CtgFilePath . $ctg_file) {
		my ($ctgData, $ctgTable) = &config::getCtgItemConfigData($main::CtgFilePath, $ctg_file);
		unless (exists($ctgData->{'CATEGORY'})) {
			$tpl_var->{VALID_CTG} = (0);
			return $tpl_var;
		}
		if (!$main::isRunningImodeCGI 
			and $main::ConfigData->{'EXEC-MAKE_MODE'} == $main::MakeMode{ALWAYS_ON} 
			and !&check::isCategoryAllowShow($ctg_id)) {
			$tpl_var->{VALID_CTG} = (0);
			return $tpl_var;
		}
		my $ctg_id_str = $ctg_id;
		$ctg_id_str =~ s/([^\w\=\& ])/'%' . unpack("H2", $1)/eg;
		$tpl_var->{URL_CTG_ID} = $ctg_id_str;
		$tpl_var->{ctg_name} = &sanitize::convHTML($ctgData->{'CATEGORY-CATEGORY_NAME'});
		# non sanitize (use html tags)
		my $ctg_comm = $ctgData->{'CATEGORY-CATEGORY_COMM'};
		if ($main::isRunningImodeCGI) {
			$ctg_comm = &mylibs::removeHtmlTags($ctg_comm);
		}
#		$ctg_comm =~ s/\x0D\x0A/<br>/g;
#		$ctg_comm =~ s/\x0D/<br>/g;
#		$ctg_comm =~ s/\x0A/<br>/g;
		$ctg_comm =~ s/(\x0D\x0A|\x0D|\x0A)/\n/g;
		$ctg_comm =~ s/([^>])\n/$1<br>/g;
		$tpl_var->{ctg_comm} = $ctg_comm;
		# 
		$tpl_var->{ctg_pic} = &sanitize::convFileName($ctgData->{'CATEGORY-CATEGORY_PIC'});
		$tpl_var->{ctg_thumb} = &sanitize::convFileName($ctgData->{'CATEGORY-CATEGORY_THUMB'});
		$tpl_var->{PAGE_TITLE} = &sanitize::convHTML($ctgData->{'CATEGORY-PAGE_TITLE'});
		my $pr_id = &sanitize::convANB($ctgData->{'CATEGORY-CATEGORY_PATH'});
		$pr_id =~ s/([^\w\=\& ])/'%' . unpack("H2", $1)/eg;
		$tpl_var->{PARENTCTG_URL_ID} = $pr_id;
		if ($tpl_var->{PARENTCTG_URL_ID} ne '') {
			$tpl_var->{BACK_URL} = $tpl_var->{CGI_URL_ITEM} . $tpl_var->{CGI_LIST} 
									. "?ctg_id=" . $tpl_var->{PARENTCTG_URL_ID};
		} else {
			if ($main::ConfigData->{'EXEC-MAKE_MODE'} == $main::MakeMode{ALWAYS_ON}) {
				$tpl_var->{BACK_URL} = $tpl_var->{CGI_URL_TOP} . $tpl_var->{CGI_CTG};
			} else {
				$tpl_var->{BACK_URL} = $tpl_var->{DOC_URL};
				if ($main::ConfigData->{'PATH_TPL_CTG_FILE'} =~ m/["']([^"']+)["']/o) {
					$tpl_var->{BACK_URL} .= $1;
				}
			}
		}

		my ($child_ctg, $tbl_itemid, $fld_itemid) = &tables::getCategoryTable($ctgTable);

		# add Child category data
		my @ctmp = ();

#		my $cctg_num = 0;
		my $cc_id = '';
		foreach $cc_id ( @$child_ctg ) {
			$cc_id = &sanitize::convANB($cc_id);
#			my $cc_name = '';
			my $Cctg_file = $cc_id . $main::DataFileExt;
			if (-e $main::CtgFilePath . $Cctg_file) {
				my ($CctgData, $CctgTable) = &config::getCtgItemConfigData($main::CtgFilePath, $Cctg_file);
				next unless (exists($CctgData->{'CATEGORY'}));
				next if (!$main::isRunningImodeCGI 
						and $main::ConfigData->{'EXEC-MAKE_MODE'} == $main::MakeMode{ALWAYS_ON} 
						and !&check::isCategoryAllowShow($cc_id));
#				$cc_name = &sanitize::convHTML($CctgData->{'CATEGORY-CATEGORY_NAME'});
#				if ($cc_name ne '') {
#					$ctmp[$cctg_num]->{CHILDCTG_ID} = $cc_id;
#					$ctmp[$cctg_num]->{CHILDCTG_NAME} = $cc_name;
#					$cc_id =~ s/([^\w\=\& ])/'%' . unpack("H2", $1)/eg;
#					$ctmp[$cctg_num]->{CHILDCTG_URL_ID} = $cc_id;
#					$cctg_num++;
#				}
				$cc_id =~ s/([^\w\=\& ])/'%' . unpack("H2", $1)/eg;
				push @ctmp, {
					'CHILDCTG_ID' => $CctgData->{'CATEGORY-CATEGORY_ID'},
					'CHILDCTG_NAME' => &sanitize::convHTML($CctgData->{'CATEGORY-CATEGORY_NAME'}),
					'CHILDCTG_URL_ID' => $cc_id,
				};
			}
		}
		$tpl_var->{LOOP_CHILDCTG} = \@ctmp;

		# get children items
		my @ListedItems = ();
#		my $i = 0;
		if ($main::ConfigData->{'EXEC-DISP_NOSTOCK'} ne '1') {
#			for ($i = 0; $i <= $#{ $tbl_itemid->{${$fld_itemid}[0]} }; $i++) {
#				next unless ($tbl_itemid->{${$fld_itemid}[2]}[$i]);
#				push @ListedItems, $tbl_itemid->{${$fld_itemid}[0]}[$i];
#			}
			@ListedItems = @{ $tbl_itemid->{${$fld_itemid}[0]} }[
				grep(($tbl_itemid->{${$fld_itemid}[2]}[$_] eq '1'), 
					0..$#{ $tbl_itemid->{${$fld_itemid}[0]} })
			];
		} else {
			if ($main::ConfigData->{'EXEC-STOCK_CONTROL'} eq '1') {
#				for ($i = 0; $i <= $#{ $tbl_itemid->{${$fld_itemid}[0]} }; $i++) {
#					next unless ($tbl_itemid->{${$fld_itemid}[2]}[$i]);
#					next if ($tbl_itemid->{${$fld_itemid}[3]}[$i] 
#						and &stock::getStock($tbl_itemid->{${$fld_itemid}[0]}[$i]) == 0);
#					push @ListedItems, $tbl_itemid->{${$fld_itemid}[0]}[$i];
#				}
				@ListedItems = @{ $tbl_itemid->{${$fld_itemid}[0]} }[
					grep(
						($tbl_itemid->{${$fld_itemid}[2]}[$_] eq '1' 
							and ($tbl_itemid->{${$fld_itemid}[3]}[$_] eq '0' 
								or &stock::getStock($tbl_itemid->{${$fld_itemid}[0]}[$_]) > 0)), 
						0..$#{ $tbl_itemid->{${$fld_itemid}[0]} })
				];
			} else {
#				for ($i = 0; $i <= $#{ $tbl_itemid->{${$fld_itemid}[0]} }; $i++) {
#					next unless ($tbl_itemid->{${$fld_itemid}[2]}[$i]);
###					next if ($itemData->{'ITEM-STOCK'} eq '1');
#					push @childitems, $tbl_itemid->{${$fld_itemid}[0]}[$i];
#				}
				@ListedItems = @{ $tbl_itemid->{${$fld_itemid}[0]} }[
					grep(
						($tbl_itemid->{${$fld_itemid}[2]}[$_] eq '1' 
							and $tbl_itemid->{${$fld_itemid}[4]}[$_] ne '1'), 
						0..$#{ $tbl_itemid->{${$fld_itemid}[0]} })
				];
			}
		}

		my $CategoryItemNum = scalar(@ListedItems);
		$tpl_var->{EXIST_ITEM} = ($CategoryItemNum != 0);
		# page control
		my $it_cols = 1;
		my $it_rows = 0;
		my $limit_num = 0;
		$it_cols = $main::ConfigData->{'EXEC-CGI_COL_COUNT'} 
					if defined $main::ConfigData->{'EXEC-CGI_COL_COUNT'};
		if ($main::isRunningImodeCGI) {
			$it_rows = $main::ConfigData->{'EXEC-CGI_LIST_COUNT_IMODE'} 
						if defined $main::ConfigData->{'EXEC-CGI_LIST_COUNT_IMODE'};
			$it_cols = 1;
		} else {
			$it_rows = $main::ConfigData->{'EXEC-CGI_LIST_COUNT'} 
						if defined $main::ConfigData->{'EXEC-CGI_LIST_COUNT'};
		}
		if ($it_cols * $it_rows > 0) {
			$limit_num = $it_cols * $it_rows;
		} else {
			$tpl_var->{EXIST_ITEM} = (0);
			return $tpl_var;
		}
		$tpl_var->{COL_WIDTH} = int(100 / $it_cols) if ($it_cols > 0);
		$tpl_var->{ONE_COLUMN} = ($it_cols <= 1);

		$limit_num =~ s/[^\d]//g;
		if ($limit_num eq '') {
			$limit_num = 20;
		}
		if ($CategoryItemNum < ($limit_num * ($page_num - 1))) {
			$page_num = int($CategoryItemNum / $limit_num) + 1;
		}
		if ($CategoryItemNum == ($limit_num * ($page_num - 1))) {
			$page_num = int($CategoryItemNum / $limit_num);
		}
		if ($page_num == 0) {
			$page_num = 1;
		}

		# get item data
		my $list_num = 0;
		my @tmp = ();
		my $list_details;
		my $l_id;
		if ($CategoryItemNum > 0) {
			my @subtmp = ();
			my $rw = 0;
			my $cl = 0;
			my $i = 0;
			for ($i = ($limit_num * ($page_num - 1)); $i < ($limit_num * $page_num) and $i < $CategoryItemNum; $i++) {
				$l_id = &sanitize::convANB($ListedItems[$i]);
				if ($l_id ne '') {
					my $item_file = $l_id . $main::DataFileExt;
					if (-e $main::ItemFilePath . $item_file) {
#						my ($itemData, $itemTable) = &config::getCtgItemConfigData($main::ItemFilePath, $item_file);
						my $itemData = &config::getItemConfigData($main::ItemFilePath, $item_file);
						next unless (exists($itemData->{'ITEM'}));
#						next unless (&check::isItemAllowShow($l_id));
						my $stock = 0;
						my $show_stock = '';
						if ($main::ConfigData->{'EXEC-STOCK_CONTROL'} eq '1' 
							and $itemData->{'ITEM-USE_STOCK'} eq '1') {
							$stock = &stock::getStock($l_id);
							$show_stock = $stock;
						} elsif ($itemData->{'ITEM-STOCK'} eq '1') {
							$stock = 0;
							$show_stock = '';
						} else {
							$stock = 99999;
							$show_stock = '';
						}
						next if ($main::ConfigData->{'EXEC-DISP_NOSTOCK'} eq '1' and $stock == 0);
						if ($tpl_var->{ONE_COLUMN}) {
							$tmp[$list_num]->{STOCK} = $show_stock;
							if ($main::ConfigData->{'EXEC-TAX_INCLUDES_DECLARED'} == 1) {
								$itemData->{'ITEM-ENTPRICE'} = $itemData->{'ITEM-TAXPRICE'};
								$itemData->{'ITEM-TAX_DIV'} = 2;
							}
							$tmp[$list_num]->{item_id} = $l_id;
							$tmp[$list_num]->{price} = &mylibs::formatNumber(&sanitize::convRealNum($itemData->{'ITEM-ENTPRICE'}));
							$tmp[$list_num]->{item_name} = &sanitize::convHTML($itemData->{'ITEM-ITEM_NAME'});
							$tmp[$list_num]->{tani} = &sanitize::convHTML($itemData->{'ITEM-TANI'});
							my $spec_thumb = $itemData->{'ITEM-SPEC_THUMB'};
							if ($main::isRunningImodeCGI) {
								$spec_thumb = &mylibs::removeHtmlTags($spec_thumb);
							}
#							$spec_thumb =~ s/\x0D\x0A/<br>/g;
#							$spec_thumb =~ s/\x0D/<br>/g;
#							$spec_thumb =~ s/\x0A/<br>/g;
							$spec_thumb =~ s/(\x0D\x0A|\x0D|\x0A)/\n/g;
							$spec_thumb =~ s/([^>])\n/$1<br>/g;
							$tmp[$list_num]->{spec_thumb} = $spec_thumb;
							$tmp[$list_num]->{sales_term} = $itemData->{'ITEM-SALES_TERM'};
							$tmp[$list_num]->{stock_status} = &sanitize::convInteger($itemData->{'ITEM-STOCK'});
							$tmp[$list_num]->{pic1} = &sanitize::convFileName($itemData->{'ITEM-PIC_FILE'});
							$tmp[$list_num]->{picthumbnail} = &sanitize::convFileName($itemData->{'ITEM-PIC_THUMBNAIL'});
							$tmp[$list_num]->{item_mark} = &sanitize::convInteger($itemData->{'ITEM-MARK'});
							if ($main::ConfigData->{'EXEC-STOCK_CONTROL'} eq '1' 
								and $itemData->{'ITEM-USE_STOCK'} eq '1') {
								$tmp[$list_num]->{color_label} = '';
								$tmp[$list_num]->{size_label} = '';
								$tmp[$list_num]->{colorh} = '';
								$tmp[$list_num]->{sizeh} = '';
							} else {
								$tmp[$list_num]->{color_label} = &sanitize::convHTML($itemData->{'ITEM-COLOR_LABEL'});
								$tmp[$list_num]->{size_label} = &sanitize::convHTML($itemData->{'ITEM-SIZE_LABEL'});
								my $colorh = '';
								foreach ( split /\n/, $itemData->{'ITEM-COLOR'} ) {
									my $cl = &sanitize::convHTML($_);
									next if ($cl eq '');
									$colorh .= '<option value="' . $cl . '">' . $cl . "</option>\n";
								}
								$tmp[$list_num]->{colorh} = $colorh;
								my $sizeh = '';
								foreach ( split /\n/, $itemData->{'ITEM-SIZE'} ) {
									my $sz = &sanitize::convHTML($_);
									next if ($sz eq '');
									$sizeh .= '<option value="' . $sz . '">' . $sz . "</option>\n";
								}
								$tmp[$list_num]->{sizeh} = $sizeh;
							}
							$tmp[$list_num]->{ZEIKOMI} = ($itemData->{'ITEM-TAX_DIV'} == 2);
							$tmp[$list_num]->{IS_USE_STOCK} = ($itemData->{'ITEM-USE_STOCK'} == 1);
#							$tmp[$list_num]->{USE_STOCK} = ($main::ConfigData->{'EXEC-STOCK_CONTROL'} == 1 
#														and $itemData->{'ITEM-USE_STOCK'} == 1);
							$tmp[$list_num]->{NUMBER} = ($list_num + 1);
							my $item_id_str = $l_id;
							$item_id_str =~ s/([^\w\=\& ])/'%' . unpack("H2", $1)/eg;
							$tmp[$list_num]->{URL_ITEM_ID} = $item_id_str;
							$list_num++;
						} else {
							if ($cl == $it_cols) {
								$tmp[$rw]->{LOOP_LIST_SUB} = \@{$subtmp[$rw]};
								$cl = 0;
								$rw++;
								$subtmp[$rw] = ();
							}
							$subtmp[$rw][$cl]->{STOCK} = $show_stock;
							if ($main::ConfigData->{'EXEC-TAX_INCLUDES_DECLARED'} == 1) {
								$itemData->{'ITEM-ENTPRICE'} = $itemData->{'ITEM-TAXPRICE'};
								$itemData->{'ITEM-TAX_DIV'} = 2;
							}
							$subtmp[$rw][$cl]->{item_id} = $l_id;
							$subtmp[$rw][$cl]->{price} = &mylibs::formatNumber(&sanitize::convRealNum($itemData->{'ITEM-ENTPRICE'}));
							$subtmp[$rw][$cl]->{item_name} = &sanitize::convHTML($itemData->{'ITEM-ITEM_NAME'});
							$subtmp[$rw][$cl]->{tani} = &sanitize::convHTML($itemData->{'ITEM-TANI'});
							my $spec_thumb = $itemData->{'ITEM-SPEC_THUMB'};
							if ($main::isRunningImodeCGI) {
								$spec_thumb = &mylibs::removeHtmlTags($spec_thumb);
							}
#							$spec_thumb =~ s/\x0D\x0A/<br>/g;
#							$spec_thumb =~ s/\x0D/<br>/g;
#							$spec_thumb =~ s/\x0A/<br>/g;
							$spec_thumb =~ s/(\x0D\x0A|\x0D|\x0A)/\n/g;
							$spec_thumb =~ s/([^>])\n/$1<br>/g;
							$subtmp[$rw][$cl]->{spec_thumb} = $spec_thumb;
							$subtmp[$rw][$cl]->{sales_term} = $itemData->{'ITEM-SALES_TERM'};
							$subtmp[$rw][$cl]->{stock_status} = &sanitize::convInteger($itemData->{'ITEM-STOCK'});
							$subtmp[$rw][$cl]->{pic1} = &sanitize::convFileName($itemData->{'ITEM-PIC_FILE'});
							$subtmp[$rw][$cl]->{picthumbnail} = &sanitize::convFileName($itemData->{'ITEM-PIC_THUMBNAIL'});
							$subtmp[$rw][$cl]->{item_mark} = &sanitize::convInteger($itemData->{'ITEM-MARK'});
							if ($main::ConfigData->{'EXEC-STOCK_CONTROL'} eq '1' 
								and $itemData->{'ITEM-USE_STOCK'} eq '1') {
								$subtmp[$rw][$cl]->{color_label} = '';
								$subtmp[$rw][$cl]->{size_label} = '';
								$subtmp[$rw][$cl]->{colorh} = '';
								$subtmp[$rw][$cl]->{sizeh} = '';
							} else {
								$subtmp[$rw][$cl]->{color_label} = &sanitize::convHTML($itemData->{'ITEM-COLOR_LABEL'});
								$subtmp[$rw][$cl]->{size_label} = &sanitize::convHTML($itemData->{'ITEM-SIZE_LABEL'});
								my $colorh = '';
								foreach ( split /\n/, $itemData->{'ITEM-COLOR'} ) {
									my $cl = &sanitize::convHTML($_);
									next if ($cl eq '');
									$colorh .= '<option value="' . $cl . '">' . $cl . "</option>\n";
								}
								$subtmp[$rw][$cl]->{colorh} = $colorh;
								my $sizeh = '';
								foreach ( split /\n/, $itemData->{'ITEM-SIZE'} ) {
									my $sz = &sanitize::convHTML($_);
									next if ($sz eq '');
									$sizeh .= '<option value="' . $sz . '">' . $sz . "</option>\n";
								}
								$subtmp[$rw][$cl]->{sizeh} = $sizeh;
							}
							$subtmp[$rw][$cl]->{ZEIKOMI} = ($itemData->{'ITEM-TAX_DIV'} == 2);
							$subtmp[$rw][$cl]->{IS_USE_STOCK} = ($itemData->{'ITEM-USE_STOCK'} == 1);
							$subtmp[$rw][$cl]->{USE_STOCK} = ($main::ConfigData->{'EXEC-STOCK_CONTROL'} == 1 
														and $itemData->{'ITEM-USE_STOCK'} == 1);
							$subtmp[$rw][$cl]->{NUMBER} = ($list_num + 1);
							my $item_id_str = $l_id;
							$item_id_str =~ s/([^\w\=\& ])/'%' . unpack("H2", $1)/eg;
							$subtmp[$rw][$cl]->{URL_ITEM_ID} = $item_id_str;
							$list_num++;
							$cl++;
						}
					}
				}
			}
			unless ($tpl_var->{ONE_COLUMN}) {
				$tmp[$rw]->{LOOP_LIST_SUB} = \@{$subtmp[$rw]};
				$cl = 0;
				$rw++;
				$subtmp[$rw] = ();
			}
		}
		$tpl_var->{LOOP_LIST} = \@tmp;

		my @pgtemp = ();
		my $pg;
		my $pgmax = int($CategoryItemNum / $limit_num);
		if (($pgmax * $limit_num) != $CategoryItemNum) {
			$pgmax++;
		}
		for ($pg = 0; $pg < $pgmax; $pg++) {
			$pgtemp[$pg]->{PAGE} = $pg + 1;
		}
		$tpl_var->{PAGE_TAG} = \@pgtemp;
		$tpl_var->{CURRENT_PAGE} = $page_num;
		$tpl_var->{MAX_PAGE} = $pgmax;
		if ($page_num == 1) {
			$tpl_var->{PREV_PAGE} = 1;
		} else {
			$tpl_var->{PREV_PAGE} = $page_num - 1;
		}
		if ($page_num == $pgmax) {
			$tpl_var->{NEXT_PAGE} = $pgmax;
		} else {
			$tpl_var->{NEXT_PAGE} = $page_num + 1;
		}
		$tpl_var->{PAGE_DIRECT} = '';
		foreach ( 1 .. $pgmax ) {
			if ($page_num == $_) {
				$tpl_var->{PAGE_DIRECT} .= '[' . $_ . ']';
			} else {
				$tpl_var->{PAGE_DIRECT} .= '<A href="' 
									. $tpl_var->{CGI_URL_ITEM} . $tpl_var->{CGI_LIST} 
									. '?ctg_id=' . $tpl_var->{URL_CTG_ID} 
									. '&page=' . $_ . '">[' . $_ . ']</A>';
			}
		}
		$tpl_var->{VALID_CTG} = (1);
		if ($tpl_var->{EXIST_ITEM}) {
			$tpl_var->{ERROR_LITERAL} = '';
		} else {
			$tpl_var->{ERROR_LITERAL} = 'There is no item.';
			$tpl_var->{ERROR_LITERAL} = $main::ConfigData->{'JP_ERROR_MESSAGE_NO_ITEM'} 
							if ($main::ConfigData->{'JP_ERROR_MESSAGE_NO_ITEM'} ne '');
		}
	} else {
		$tpl_var->{VALID_CTG} = (0);
	}

	if (!$main::isRunningImodeCGI 
		and $main::ConfigData->{'EXEC-MAKE_MODE'} == $main::MakeMode{ALWAYS_ON}) {
		($tpl_var->{LOOP_CTG_LIST}, $tpl_var->{VALID_LIST}) = &tpl::getCategoryList();
	}

	return $tpl_var;
}

sub _dummy {
	undef %main::formkeys;
	undef $main::ConfigFile;
	undef $main::VERSION;
}

