#!/usr/bin/perl

use strict;
use lib qw(../../module/);
use vars qw(%CGI);
use Jcode;
use Fcntl qw(:DEFAULT :flock);

require './init.pl';
require 'common_e.pl';

my @UNIT       = (); # 単位テーブル     キー：ID, DISPLAY, IG（1G）の3つ
my @CAPACITY   = (); # ひょう量テーブル キー：ID, DISPLAY, VALUE, UNIT, SIGNの5つ
my @RESOLUTION = (); # 最小表示テーブル キー：ID, DISPLAY, LOWER_VALUE, LOWER_VALUE_UNIT, UPPER_VALUE, UPPER_VALUE_UNITの6つ

MAIN: {
  my( $capacity_tag, $resolution_tag, $calibration_tag ) = ();

# 定数の読込み
  &init_all;
  &init_search;

# PrintHeader
#  print "Status: 200 OK\n";
  print "Cache-Control: private\n";
  print "Content-Type: text/html; charset=utf-8;\n\n";

# 単位，ひょう量，最小表示テーブルの取り込み
  @UNIT       = &make_unit_hash;
  @CAPACITY   = &make_capacity_hash;
  @RESOLUTION = &make_resolution_hash;

# ひょう量の取り込み
    $capacity_tag = &make_capacity_tag;

# 最小表示の取り込み
    $resolution_tag = &make_resolution_tag;

# 校正用分銅内蔵の取り込み
    $calibration_tag = &make_calibration_tag;

# HTML表示
  $capacity_tag    = Jcode->new( $capacity_tag,    "euc" )->utf8;
  $resolution_tag  = Jcode->new( $resolution_tag,  "euc" )->utf8;
  $calibration_tag = Jcode->new( $calibration_tag, "euc" )->utf8;

  open( IN, "<$CGI{'HTML_DIR'}$CGI{'HTML'}" ) or die "Can't open $CGI{'HTML'}";
  eval { flock( IN, LOCK_SH ); };
  while( <IN> ) {
    s/%capacity_tag/$capacity_tag/g;
    s/%resolution_tag/$resolution_tag/g;
    s/%calibration_tag/$calibration_tag/g;

    print $_;
  }
  close IN or die "Can't close $CGI{'HTML'}";
}


###############################################################################
#                                                                             #
# ひょう量 selectタグ作成                                                     #
# &make_capacity_tag( $capacity_id )                                          #
# $capacity_id: selectタグで選択された項目, デフォルトは""（空文字列）        #
#                                                                             #
###############################################################################
sub make_capacity_tag {
  my $capacity_id = shift;
  my $return_tag  = $CGI{'NULL'};

  foreach my $index ( 0 .. $#CAPACITY ) {
    if(( $CAPACITY[$index]->{'ID'}==$capacity_id )&&( $capacity_id ne $CGI{'NULL'} )) {
      $return_tag .= "                  <option value=\"".$CAPACITY[$index]->{'ID'}."\" selected>".$CAPACITY[$index]->{'DISPLAY'}."</option>\n";
    }
    else {
      $return_tag .= "                  <option value=\"".$CAPACITY[$index]->{'ID'}."\">".$CAPACITY[$index]->{'DISPLAY'}."</option>\n";
    }
  }

  return $return_tag;
}


###############################################################################
#                                                                             #
# 最小表示 selectタグ作成                                                     #
# &make_resolution_tag( $resolution_id )                                      #
# $resolution_id: selectタグで選択された項目, デフォルトは""（空文字列）      #
#                                                                             #
###############################################################################
sub make_resolution_tag {
  my $resolution_id = shift;
  my $return_tag  = $CGI{'NULL'};

  foreach my $index ( 0 .. $#RESOLUTION ) {
    if(( $RESOLUTION[$index]->{'ID'}==$resolution_id )&&( $resolution_id ne $CGI{'NULL'} )) {
      $return_tag .= "                  <option value=\"".$RESOLUTION[$index]->{'ID'}."\" selected>".$RESOLUTION[$index]->{'DISPLAY'}."</option>\n";
    }
    else {
      $return_tag .= "                  <option value=\"".$RESOLUTION[$index]->{'ID'}."\">".$RESOLUTION[$index]->{'DISPLAY'}."</option>\n";
    }
  }

  return $return_tag;
}


###############################################################################
#                                                                             #
# 校正用分銅内蔵 radioボタン作成 (Calibration)                                #
# &make_calibration_tag( $calibration )                                       #
# $calibration: 校正用分銅内蔵のラジオボタン選択内容                          #
#                                                                             #
###############################################################################
sub make_calibration_tag {
  my $calibration = shift;

  my( $l_calibration_id, $l_calibration_value ) = ();
  my $return_tag = $CGI{'NULL'};

  open( IN, "<$CGI{'DAT_CALIBRATION'}" ) or die "Can't open $CGI{'DAT_CALIBRATION'}";
  eval { flock( IN, LOCK_SH ); };
  while( my $line = <IN> ) {
    chomp( $line );
    ( $l_calibration_id, $l_calibration_value ) = split( ',', $line );
    $l_calibration_value = Jcode->new( $l_calibration_value, "sjis" )->euc;

    if( $l_calibration_id==$calibration ) {
      $return_tag .= qq( <input type="radio" name="calibration" value="$l_calibration_id" checked>$l_calibration_value);
    }
    else {
      $return_tag .= qq( <input type="radio" name="calibration" value="$l_calibration_id">$l_calibration_value);
    }
  }
  close IN or die "Can't close $CGI{'DAT_CALIBRATION'}";

  return $return_tag;
}
