#!/usr/bin/perl

#---------------------------------------------------------------------
# FSoft 高周波計算機
#---------------------------------------------------------------------

#---------------------------------------------------------------------
# 定数の設定
#---------------------------------------------------------------------
# デバッグモード 1=debug_mode, 0=nomal_mode
$debug = 1;

# ライブラリの読み込み
require '../lib/jcode.pl';
require '../lib/fs_html.pl';
require '../lib/fs_function.pl';

#---------------------------------------------------------------------------------
# 自分自身のファイル名を抽出し、$fs_program_name に代入
# (グローバル変数、ボタンが押された時に呼ばれるプログラム名)
# (基本名 'fs_017.cgi')
#---------------------------------------------------------------------------------
# $_ : 文字列操作用特殊変数
# $0 : 実行中の Perl プログラム名が代入されている特殊変数
# $, : m/パターン/ の結果、マッチした部分より後ろの文字列が代入されている
$_ = $0;
while(m/\//){$_ = $';}
# $fs_program_name = $_;
$fs_program_name = './' . $_;

#---------------------------------------------------------------------------------
# ホームページ
# $fs_backurl = 'http://xxx.co.jp/';
#
# 自分ちの場合
# $fs_backurl = '/index.html';

# 祖師谷ハムエンジニアリングの場合
$fs_backurl = 'http://wikiwiki.jp/soshigaya/';


#---------------------------------------------------------------------------------
# 飛び先のファイル名を指示する変数
# マイクロストリップラインのインピーダンスを求める
# $fs_mslcal = 'http://xxx.co.jp/cgi-bin/fs_calculate/fs_mslcal_v002.cgi';
$fs_mslcal = './fs_mslcal_v004.cgi';

# R+jX-->VSWR/ RL/ ML を求める
$fs_zswrcal = './fs_zswrcal_v004.cgi';

# Γ-->VSWR/ RL/ ML を求める
$fs_fswrcal = './fs_fswrcal_v004.cgi';

# R+jX <--> Γ を求める
$fs_rjx_ganma = './fs_rjx_ganma_v004.cgi';

# Open/ Short Stab
$fs_stabcal = './fs_stabcal_v004.cgi';

# Stability
$fs_sfactor = './fs_stability_v004.cgi';

# Attenuator
$fs_attcal = './fs_attcal_v001.cgi';

# Conjugate Match
$fs_conjmatch = './fs_conjmatch_v012.cgi';

# 2点間のマッチングネットワークを計算する
$fs_matchcal = './fs_match_v014.cgi';

#---------------------------------------------------------------------------------
# グローバル変数、トップタイトル
$fs_top_taitle = 'Calculate';

# グローバル変数、トップタイトルの文字の高さ。英文字の時=7, 日本語の時=6
$fs_top_taitle_size = 6;

# グローバル変数、エラーメッセージの文字の高さ。英文字の時=7, 日本語の時=6
$fs_err_msg_size = 6;


#---------------------------------------------------------------------
# 汎用的変数
# POST/ GET
#$method = 'POST';
$method = 'GET';

# 漢字コード（'sjis' 'euc' 'jis' )
$kanjicode  = 'euc';

# テーブルの高さ
$fs_td_height = 25;

# 色
$fs_bg_color = '#ffffcc';
$fs_taitl_color = '#248200';

# ファイルロック機能の on/off
$uselock = 1;

# DOCTYPE 宣言 , Content-type 宣言
$doctype = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">';
$contenttype = "<META HTTP-EQUIV=\"Content-type\" CONTENT=\"text/html; charset=EUC-JP\">";

#----------------------------------------------------------------
# HTML言語の宣言
#----------------------------------------------------------------
print "Content-type: text/html\n";
print "\n";

#----------------------------------------------------------------
# html からパラメータを取り込む
#----------------------------------------------------------------
&init_form($kanjicode);

$fs_menu = $form{'fs_menu'};
$fs_menu1 = $form{'fs_menu1'};
$fs_menu2 = $form{'fs_menu2'};
$fs_mode1 = $form{'fs_mode1'};
$filed0 = $form{'filed0'};
$filed1 = $form{'filed1'};
$filed2 = $form{'filed2'};
$filed3 = $form{'filed3'};
$filed4 = $form{'filed4'};
$filed5 = $form{'filed5'};
$filed6 = $form{'filed6'};
$filed7 = $form{'filed7'};


#----------------------------------------------------
# メインルーチン main
#----------------------------------------------------
# 該当が無い場合(一番最初に実行される)
&root_panel_html;


#----------------------------------------------------
# メインパネルの表示
#----------------------------------------------------
sub root_panel_html{
	&fs_head_html;
	&fs_top_taitle_html;
	#&fs_taitle_html("Calculate");

	print "<BODY>\n";
	print "<CENTER>\n";

	#----------------------------------------------------------------------------
	# テーブル tag 開始
	#print "<TABLE>\n";
	print "<TABLE WIDTH=80% BGCOLOR=$fs_bg_color>\n";

	#----------------------------------------------------------------------------
	# マイクロストリップラインのインピーダンスを求める
	print "<FORM ACTION=$fs_mslcal METHOD=$method>\n";
	print "<TR><TD ALIGN=left>\n";
	print '<INPUT TYPE=submit VALUE=\'01\'>', "\n";
	print "</TD>\n";
	print '<TD ALIGN=left>マイクロス・トリップ・ラインの特性インピーダンスを求める', "\n";
	print "</TD></TR>\n";
	print "</FORM>\n";

	# R+jX-->VSWR/ RL/ ML を求める
	print "<FORM ACTION=$fs_zswrcal METHOD=$method>\n";
	print "<TR><TD ALIGN=left>\n";
	print '<INPUT TYPE=submit VALUE=\'02\'>', "\n";
	print "</TD>\n";
	print '<TD ALIGN=left>2点間の Impedance(R+jX) における VSWR, Return Loss, Mismatch Loss を求める', "\n";
	print "</TD></TR>\n";
	print "</FORM>\n";

	# Γ-->VSWR/ RL/ ML を求める
	print "<FORM ACTION=$fs_fswrcal METHOD=$method>\n";
	print "<TR><TD ALIGN=left>\n";
	print '<INPUT TYPE=submit VALUE=\'03\'>', "\n";
	print "</TD>\n";
	print '<TD ALIGN=left>2点間の反射係数ΓS, ΓLにおける VSWR, Return Loss, Mismatch Loss を求める', "\n";
	print "</TD></TR>\n";
	print "</FORM>\n";

	# R+jX <--> Γ を求める
	print "<FORM ACTION=$fs_rjx_ganma METHOD=$method>\n";
	print "<TR><TD ALIGN=left>\n";
	print '<INPUT TYPE=submit VALUE=\'04\'>', "\n";
	print "</TD>\n";
	print '<TD ALIGN=left>|Γ|∠θ <-- 変換 --> Ｒ + jＸ', "\n";
	print "</TD></TR>\n";
	print "</FORM>\n";

	# Open/ Short Stab
	print "<FORM ACTION=$fs_stabcal METHOD=$method>\n";
	print "<TR><TD ALIGN=left>\n";
	print '<INPUT TYPE=submit VALUE=\'05\'>', "\n";
	print "</TD>\n";
	print '<TD ALIGN=left>(工事中)マイクロストリップラインのオープン/ショートスタブを(pF)や(nH)に変換する ', "\n";
	print "</TD></TR>\n";
	print "</FORM>\n";

	# 共役整合用 cgi に飛ぶボタンの設定
	print "<FORM ACTION=$fs_conjmatch METHOD=$method>\n";
	print "<TR><TD ALIGN=left>\n";
	print '<INPUT TYPE=submit VALUE=\'06\'>', "\n";
	print "</TD>\n";
	print '<TD ALIGN=left>トランジスタの共役整合の反射係数を求める ', "\n";
	print "</TD></TR>\n";
	print "</FORM>\n";

	# 2点間のマッチングネットワークを計算する。
	print "<FORM ACTION=$fs_matchcal METHOD=$method>\n";
	print "<TR><TD ALIGN=left>\n";
	print '<INPUT TYPE=submit VALUE=\'07\'>', "\n";
	print "</TD>\n";
	print '<TD ALIGN=left>2点間のマッチングネットワークを計算する', "\n";
	print "</TD></TR>\n";
	print "</FORM>\n";

	# Attenuator
	print "<FORM ACTION=$fs_attcal METHOD=$method>\n";
	#print "<FORM ACTION=$fs_program_name METHOD=$method>\n";
	print "<TR><TD ALIGN=left>\n";
	print '<INPUT TYPE=submit VALUE=\'08\'>', "\n";
	print "</TD>\n";
	print '<TD ALIGN=left>アッテネータの抵抗値を求める', "\n";
	print "</TD></TR>\n";
	print "</FORM>\n";

	# Stability
	print "<FORM ACTION=$fs_sfactor METHOD=$method>\n";
	print "<TR><TD ALIGN=left>\n";
	print '<INPUT TYPE=submit VALUE=\'09\'>', "\n";
	print "</TD>\n";
	print '<TD ALIGN=left>トランジスタの安定度と安定する為の抵抗値を求める ', "\n";
	print "</TD></TR>\n";
	print "</FORM>\n";

	#----------------------------------------------------------------------------
	# テーブルの終了タグ
	print "</TABLE>\n";

	#----------------------------------------------------------------------------
	# 戻るボタンの設定
	# http://pigeon.yok64.kenwood.co.jp/index.cgi に戻るルーチン
	print "<BR><HR><BR>\n";
	print "<FORM ACTION=$fs_backurl METHOD=$method>\n";
	print "<INPUT TYPE=submit VALUE=戻る>\n";
	print "</FORM>\n";

	# html の終端ルーチン
	print "</CENTER>\n";
	print "</BODY>\n";
	print "</HTML>\n";

}


#----------------------------------------------------------------
# General なサブルーチン general_function
#----------------------------------------------------------------
# エラールーチン
# 引数が一つ必要 (エラーメッセージ)
sub fs_error_html{
	local($msg) =@_;
	&fs_head_html;

	print "<BODY BGCOLOR=$fs_bg_color LINK=#0000FF VLINK=#800080 ALINK=#FF00FF>\n";
	print "<BR>\n";

	print "<FONT SIZE=$fs_top_taitle_size>\n";
	print "<FONT COLOR=$taitl_color>$fs_top_taitle</FONT>\n";
	print "</FONT>\n";
	print "<HR>\n";
	print "<FONT SIZE=$fs_err_msg_size>ERROR: $msg</FONT>\n";
	print "<HR><BR>\n";
    print 'ブラウザーの「戻る」ボタンをクリックして、前のページに戻ってください。', "\n";
	print "</BODY>\n";
}

# html の初期設定
sub fs_content_type{
	print "Content-type: text/html\n";
    print "\n";
    print "$doctype\n";
}

# html の初期設定
sub fs_head_html{
	#print "Content-type: text/html\n";
    #print "\n";
    print "$doctype\n";
    print "<HTML>\n";
    print "<HEAD>\n";
    print "$contenttype\n";
    print "<TITLE>$fs_top_title</TITLE>\n";
    print "</HEAD>\n";
}

# トップタイトル表示(normal mode)
sub fs_top_taitle_html{
	print "<BODY BGCOLOR=$fs_bg_color LINK=#0000FF VLINK=#800080 ALINK=#FF00FF>\n";
	print "<BR>\n";
	print "<CENTER>\n";
	print "<FONT SIZE=$fs_top_taitle_size>\n";
	print "<FONT COLOR=$fs_taitl_color>$fs_top_taitle</FONT>\n";
	print "</FONT>\n";
	print "</CENTER>\n";
	print "<BR>\n";
}

# トップタイトル表示(staff mode)
sub fs_top_taitle_staff_html{
	print "<BODY BGCOLOR=#FFB6C1 LINK=#0000FF VLINK=#800080 ALINK=#FF00FF>\n";
	print "<BR>\n";
	print "<CENTER>\n";
	print "<FONT SIZE=$fs_top_taitle_size>\n";
	print "<FONT COLOR=$fs_taitl_color>$fs_top_taitle</FONT>\n";
	print "</FONT>\n";
	print "</CENTER>\n";
	print "<BR>\n";
}

# セクションタイトル表示
sub fs_taitle_html{
	local($taitle) = @_;
	print "<CENTER>\n";
	print "<TABLE BORDER CELLPADDING=8 BGCOLOR=#FFFFFF>\n";
	print "<TD ALIGN=center >$taitle</TD>";
	print "<TR>\n";
	print "</TABLE>\n";
	print "</CENTER>\n";
	print "<BR>\n";
}

