/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JFUFrontPrcSimulation
*   ソースファイル名：JFUFrontPrcSimulation.java
*   作成者          ：富士通
*   日付            ：2011年06月23日
*＜機能概要＞
*   フロント画面料金シミュレーション領域出力部品です。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/06/23   FJ）和田    新規作成
*   v3.00       2012/04/09   FJ）吉田    変更依頼管理台帳No184 料金シミュレーション対応
*   v4.00       2013/01/11   FJ）齋藤    【障害対応】その他の注意事項リンク障害対応
*   v5.00       2013/02/21   FJ）齋藤    【ANK-1222-00-00】スマートリンク料金シミュレーション対応
*   v5.01       2013/04/17   FJ）岡井    文言修正
*   v8.00       2014/01/09   FJ）岡井    【ANK-1589-00-00】消費増税に伴う料金施策
*   v26.00      2016/08/04   FJ) 岡井    【ANK-2809-00-00】料金シミュレーションの表示改善
*   v29.00      2016/10/31   FJ) 張本    【ANK-2990-00-00】新電力対応Step2
*   v33.00.00   2017/07/03   FJ) 杉本    【ANK-3133-00-00】料金シミュレーション画面の税抜き・ＣＰ表示
*   v33.00.01   2017/08/14   FJ) 謝      【ANK-3217-00-00】GHサービス開始対応
*   v33.00.02   2017/08/23   FJ) 杉本    【IT1-2017-0000103】料金シミュレーション画面の税抜き・ＣＰ表示
*   v33.00.03   2017/08/30   FJ) 杉本    【IT1-2017-0000110】料金シミュレーション画面の税抜き・ＣＰ表示
*   v38.00.00   2018/09/27   FJ) 森      【ANK-3470-01-00】フロントWeb改善(料金補足説明追加、注釈表示条件変更)
*   v39.00.00   2018/11/15   FJ) 張本    【ANK-3484-00-00】端末補償サービス導入
*   v40.00.00   2019/01/09   FJ) 西川    【ANK-3412-03-00】５ギガ・１０ギガコース導入対応(特約プログラム対応)
*   v53.00.00   2021/06/13   FJ) 西川    【ANK-4040-00-00】eoスマートリンクの新規提供終了対応
*   v54.00.00   2021/08/26   FJ) 西川    【ANK-4090-00-00】【eo】GoogleHome売り止め対応
**********************************************************************/
package eo.web.webview.common;

import java.text.SimpleDateFormat;

import javax.servlet.jsp.JspException;

import com.fujitsu.futurity.web.x33.X33VCustomTagBase;

import eo.common.constant.JFUStrConst;

/**
 * フロント画面料金シミュレーション領域出力部品です。
 * <br>
 * @author 富士通
 */
@SuppressWarnings("serial")
public class JFUFrontPrcSimulation extends X33VCustomTagBase
{

	/** 拡張タグテンプレートファイルのテンプレートID */
	private static final String TAG_TEMPLATE = "TagTemplate003";

	/** プロパティファイル取得ID [その他の注意事項] */
	public static final String SIM_LINK_ID = "simu_sonota";

	/** 日付フォーマット：年月日 */
	public static final String DATE_FORMAT_1 = "yyyy年M月d日";
	/** 日付フォーマット：yyyyMMdd */
	public static final String DATE_FORMAT_2 = "yyyyMMdd";

	/**
	 * カスタムタグ開始処理を行います。
	 * <br>
	 * @throws	JspException JSPで発生する例外
	 * @return 処理結果
	 * @see javax.servlet.jsp.tagext.TagSupport#doStartTag()
	 */
	@Override
	public int doStartTag() throws JspException
	{
		// 遷移先画面ＩＤ
		String ronriScreenId = getDataString("next_screen_id");
		// モバイルコース
		String mobileCourse = getDataString("mobile_course", 0);
		// 申込回線サービス
		String mskmksnsvc = getDataString("mskm_ksn_svc", 0);

		// 選択サービス（ネット）
		String selectsvcnet = getDataString("select_svc_net", 0);
		// 選択サービス（電話）
		String selectsvctel = getDataString("select_svc_tel", 0);
		// 選択サービス（テレビ）
		String selectsvctv = getDataString("select_svc_tv", 0);
		// テレビコース
		String tvcourse = getDataString("tv_course", 0);
		// 販売タイプ
		String hanbaiType = getDataString("hanbai_type", 0);
		// typeNフラグ
		String typeNFlg = getDataString("typen_flg", 0);
		// 備考メッセージ
		String bikoMsg = JFUStrConst.EMPTY;
		if(countSFBeanList(TAG_TEMPLATE, "biko_msg") > 0)
		{
			bikoMsg = getDataString("biko_msg", 0);
		}
		// ガス選択有無
		String selectGas =getDataString("select_gas", 0);

		// 現在日付取得
		String opeDate = getDataString("prc_sim_ope_date", 0);
		String dspDate = JFUStrConst.EMPTY;
		try
		{
			SimpleDateFormat sdf1 = new SimpleDateFormat(DATE_FORMAT_1);
			SimpleDateFormat sdf2 = new SimpleDateFormat(DATE_FORMAT_2);
			dspDate = sdf1.format(sdf2.parse(opeDate));
		}
		catch (Exception e)
		{
			// 日付変換中にエラー
			throw new JspException("日付変換中にエラー：" + e.toString());
		}

		// その他の注意事項リンク遷移先取得
		String simLink = "";
		try
		{
			simLink = JFUWebCommon.getDispLink(null, SIM_LINK_ID);
		}
		catch (Exception e)
		{
		}

		// 選択サービス（ネット）が"1"(選択)以外の場合
		if (!JFUStrConst.SELECT_SVC_NET_CHOICE.equals(selectsvcnet))
		{
			// 選択サービス（電話）が"1"(選択)以外の場合
			if (!JFUStrConst.SELECT_SVC_TEL_CHOICE.equals(selectsvctel))
			{
				// 申込回線サービスが"3"(モバイル単独)以外の場合
				if (!JFUStrConst.MSKM_KSN_SVC_MOBILE.equals(mskmksnsvc))
				{
					// モバイルコースが存在しないまたは"0"(選択なし)の場合
					if ("".equals(mobileCourse) || JFUStrConst.MOBILE_COURSE_NON.equals(mobileCourse))
					{
						// 選択サービス（テレビ）が"1"(選択)、かつ、テレビコースが"2"(KCN)の場合
						if (JFUStrConst.SELECT_SVC_TV_CHOICE.equals(selectsvctv) && JFUStrConst.TV_COURSE_KCN.equals(tvcourse))
						{
							return SKIP_BODY;
						}
					}
				}
			}
		}

		// 料金シミュレーション領域の出力
		outputHtml("<div id=\"simulationArea\" class=\"dataAreaRight\">" + JFUStrConst.RETURN_CODE);
		outputHtml("	<div id=\"sideBoxArea\" class=\"sideBox\">" + JFUStrConst.RETURN_CODE);
		outputHtml("		<div id=\"sideBox\" class=\"sideBoxContainer\">" + JFUStrConst.RETURN_CODE);
		outputHtml("			<div id=\"sideType2\">" + JFUStrConst.RETURN_CODE);
		outputHtml("				<div id=\"sideBoxTitle_sim\" class=\"sideBoxTitle_sim\">あなたの料金</div>" + JFUStrConst.RETURN_CODE);

		// 消費税文言
		outputHtml("				<div class=\"taxText_sim\">※下記記載の金額は" + dspDate + "現在の税率に基づく税込金額です。税率の引き上げに応じて金額は変更されます。</div>" + JFUStrConst.RETURN_CODE);

		outputHtml("				<div id=\"sideInfoText_sim\" class=\"sideInfoText_sim\">" + JFUStrConst.RETURN_CODE);

		// eo光表示領域
		outputHtml("				<div id=\"NET_TEL_TV\">" + JFUStrConst.RETURN_CODE);

			// 月額料金領域(ネット、電話、テレビ)の出力領域
			outputHtml("				<div class=\"sim_price_box1_title\">eo光&nbsp;月額料金</div>" + JFUStrConst.RETURN_CODE);

			outputHtml("				<div id=\"GTGK_PRC_NET_TEL_TV_AREA\">" + JFUStrConst.RETURN_CODE);
			outputHtml("				</div>" + JFUStrConst.RETURN_CODE);
			outputHtml("				<div id=\"GTGK_NET_TEL_TV\">" + JFUStrConst.RETURN_CODE);
			// 月額料金文言(ネット、電話、テレビ)の出力領域
			outputHtml("					<div class=\"discription\" id=\"GTGK_PRC_MONGON_NET_TEL_TV\">&nbsp;</div>" + JFUStrConst.RETURN_CODE);
			outputHtml("				</div>" + JFUStrConst.RETURN_CODE);

			if (JFUStrConst.GAS_MSKM_UM_ARI.equals(selectGas))
			{
				outputHtml("				<div class=\"discription\">※上記料金にガス料金は含まれておりません。</div>" + JFUStrConst.RETURN_CODE);
			}

			if (JFUScreenConst.SCREEN_ID_FUW00118.equals(ronriScreenId) || JFUScreenConst.SCREEN_ID_FUW00916.equals(ronriScreenId))
			{
				if(JFUWebCommon.isNull(typeNFlg)){
				outputHtml("				<div class=\"discription\">※おうちの機器補償をお申し込みの場合、申し込み月の翌々月の1日より月額料金が発生します。" +
												"また、お申し込み月の翌々月1日時点でeo光ネットが開通していない場合、eo光ネット開通日より月額料金が発生します。" +
												"必ずしも、表示の料金どおりならない場合がありますので、ご了承下さい。</div>" + JFUStrConst.RETURN_CODE);
				}
			}

			// 初期費用領域(ネット、電話、テレビ)の出力領域
			outputHtml("				<div class=\"sim_price_box2_title\">eo光&nbsp;初期費用</div>" + JFUStrConst.RETURN_CODE);
			outputHtml("				<div class=\"sim_price_box2_body\">" + JFUStrConst.RETURN_CODE);


			outputHtml("					<table class=\"respFUW09903_Table\" id=\"SHK_HI_NET_TEL_TV\">" + JFUStrConst.RETURN_CODE);

			outputHtml("						<tr>" + JFUStrConst.RETURN_CODE);
			// 初期費用集計領域(ネット、電話、テレビ)の出力領域
			outputHtml("							<td>&nbsp;</td>" + JFUStrConst.RETURN_CODE);
			outputHtml("						</tr>" + JFUStrConst.RETURN_CODE);
			outputHtml("					</table>" + JFUStrConst.RETURN_CODE);
			outputHtml("				</div>" + JFUStrConst.RETURN_CODE);
			outputHtml("				<div id=\"SHK_NET_TEL_TV\">" + JFUStrConst.RETURN_CODE);
			// 初期費用文言(ネット、電話、テレビ)の出力領域
			outputHtml("					<div class=\"discription\" id=\"SHK_HI_MONGON_NET_TEL_TV\">&nbsp;</div>" + JFUStrConst.RETURN_CODE);
			outputHtml("				</div>" + JFUStrConst.RETURN_CODE);
		outputHtml("				</div>" + JFUStrConst.RETURN_CODE);

		// eo光+eoモバイル結合領域
		outputHtml("				<div id=\"NET_TEL_TV_MOBILE\">" + JFUStrConst.RETURN_CODE);
			// モバイル追加表示の区切りの出力領域
			outputHtml("				<div class=\"separateLine\"></div>" + JFUStrConst.RETURN_CODE);
		outputHtml("				</div>" + JFUStrConst.RETURN_CODE);

		// eoモバイル表示領域
		outputHtml("				<div id=\"MOBILE\">" + JFUStrConst.RETURN_CODE);
			// 月額料金領域(モバイル)の出力領域
			outputHtml("				<div class=\"sim_price_box1_title\">&nbsp;</div>" + JFUStrConst.RETURN_CODE);
			outputHtml("				<div class=\"sim_price_box1_body\">" + JFUStrConst.RETURN_CODE);
			outputHtml("					<table class=\"sim_price1 ma\" id=\"GTGK_PRC_MOBILE\" >" + JFUStrConst.RETURN_CODE);
			outputHtml("						<tr>" + JFUStrConst.RETURN_CODE);
			// 月額料金集計領域(モバイル)の出力領域
			outputHtml("							<td>&nbsp;</td>" + JFUStrConst.RETURN_CODE);
			outputHtml("						</tr>" + JFUStrConst.RETURN_CODE);
			outputHtml("					</table>" + JFUStrConst.RETURN_CODE);
			outputHtml("				</div>" + JFUStrConst.RETURN_CODE);
			outputHtml("				<div id=\"GTGK_MOBILE\" >" + JFUStrConst.RETURN_CODE);
			// 月額料金文言(モバイル)の出力領域
			outputHtml("					<div class=\"discription\" id=\"GTGK_PRC_MONGON_MOBILE\">&nbsp;</div>" + JFUStrConst.RETURN_CODE);
			outputHtml("				</div>" + JFUStrConst.RETURN_CODE);
			// 初期費用領域(モバイル)
			outputHtml("				<div class=\"sim_price_box2_title\">&nbsp;</div>" + JFUStrConst.RETURN_CODE);
			outputHtml("				<div class=\"sim_price_box2_body\">" + JFUStrConst.RETURN_CODE);
			outputHtml("					<table class=\"sim_price2 ma\" id=\"SHK_HI_MOBILE\">" + JFUStrConst.RETURN_CODE);
			outputHtml("						<tr>" + JFUStrConst.RETURN_CODE);
			// 初期費用集計領域(モバイル)
			outputHtml("							<td>&nbsp;</td>" + JFUStrConst.RETURN_CODE);
			outputHtml("						</tr>" + JFUStrConst.RETURN_CODE);
			outputHtml("					</table>" + JFUStrConst.RETURN_CODE);
			outputHtml("				</div>" + JFUStrConst.RETURN_CODE);
			outputHtml("				<div id=\"SHK_MOBILE\">" + JFUStrConst.RETURN_CODE);
			// 初期費用文言(モバイル)
			outputHtml("					<div class=\"discription\" id=\"SHK_HI_MONGON_MOBILE\">&nbsp;</div>" + JFUStrConst.RETURN_CODE);
			outputHtml("				</div>" + JFUStrConst.RETURN_CODE);
		outputHtml("				</div>" + JFUStrConst.RETURN_CODE);

		// eo光+eoモバイル結合領域
		outputHtml("				<div id=\"NET_TEL_TV_SMARTLINK\">" + JFUStrConst.RETURN_CODE);
			// モバイル追加表示の区切りの出力領域
			outputHtml("				<div class=\"separateLine\"></div>" + JFUStrConst.RETURN_CODE);
		outputHtml("				</div>" + JFUStrConst.RETURN_CODE);

		// eoスマートリンク表示領域
		outputHtml("				<div id=\"SMARTLINK\">" + JFUStrConst.RETURN_CODE);
			// 月額料金領域(スマートリンク)の出力領域
			outputHtml("				<div class=\"sim_price_box1_title\">&nbsp;</div>" + JFUStrConst.RETURN_CODE);
			outputHtml("				<div class=\"sim_price_box1_body\">" + JFUStrConst.RETURN_CODE);


			outputHtml("					<table class=\"respFUW09903_Table\" id=\"GTGK_PRC_SMARTLINK\" >" + JFUStrConst.RETURN_CODE);

			outputHtml("						<tr>" + JFUStrConst.RETURN_CODE);
			// 月額料金集計領域(スマートリンク)の出力領域
			outputHtml("							<td>&nbsp;</td>" + JFUStrConst.RETURN_CODE);
			outputHtml("						</tr>" + JFUStrConst.RETURN_CODE);
			outputHtml("					</table>" + JFUStrConst.RETURN_CODE);
			outputHtml("				</div>" + JFUStrConst.RETURN_CODE);
			outputHtml("				<div id=\"GTGK_SMARTLINK\" >" + JFUStrConst.RETURN_CODE);
			// 月額料金文言(スマートリンク)の出力領域
			outputHtml("					<div class=\"discription\" id=\"GTGK_PRC_MONGON_SMARTLINK\">&nbsp;</div>" + JFUStrConst.RETURN_CODE);
			outputHtml("				</div>" + JFUStrConst.RETURN_CODE);
			// 初期費用領域(スマートリンク)
			outputHtml("				<div class=\"sim_price_box2_title\">&nbsp;</div>" + JFUStrConst.RETURN_CODE);
			outputHtml("				<div class=\"sim_price_box2_body\">" + JFUStrConst.RETURN_CODE);


			outputHtml("					<table class=\"respFUW09903_Table\" id=\"SHK_HI_SMARTLINK\">" + JFUStrConst.RETURN_CODE);

			outputHtml("						<tr>" + JFUStrConst.RETURN_CODE);
			// 初期費用集計領域(スマートリンク)
			outputHtml("							<td>&nbsp;</td>" + JFUStrConst.RETURN_CODE);
			outputHtml("						</tr>" + JFUStrConst.RETURN_CODE);
			outputHtml("					</table>" + JFUStrConst.RETURN_CODE);
			outputHtml("				</div>" + JFUStrConst.RETURN_CODE);
			outputHtml("				<div id=\"SHK_SMARTLINK\">" + JFUStrConst.RETURN_CODE);
			// 初期費用文言(スマートリンク)
			outputHtml("					<div class=\"discription\" id=\"SHK_HI_MONGON_SMARTLINK\">&nbsp;</div>" + JFUStrConst.RETURN_CODE);
			outputHtml("				</div>" + JFUStrConst.RETURN_CODE);
		outputHtml("				</div>" + JFUStrConst.RETURN_CODE);

		// eo光+GH結合領域
		outputHtml("				<div id=\"NET_TEL_TV_GH\">" + JFUStrConst.RETURN_CODE);
			outputHtml("				<div class=\"separateLine\"></div>" + JFUStrConst.RETURN_CODE);
		outputHtml("				</div>" + JFUStrConst.RETURN_CODE);

		// GH表示領域
		outputHtml("				<div id=\"GH\">" + JFUStrConst.RETURN_CODE);
			// 月額料金領域(GH)の出力領域
			outputHtml("				<div class=\"sim_price_box1_title\">&nbsp;</div>" + JFUStrConst.RETURN_CODE);
			outputHtml("				<div class=\"sim_price_box1_body\">" + JFUStrConst.RETURN_CODE);


			outputHtml("					<table class=\"respFUW09903_Table\" id=\"GTGK_PRC_GH\" >" + JFUStrConst.RETURN_CODE);

			outputHtml("						<tr>" + JFUStrConst.RETURN_CODE);
			// 月額料金集計領域(GH)の出力領域
			outputHtml("							<td>&nbsp;</td>" + JFUStrConst.RETURN_CODE);
			outputHtml("						</tr>" + JFUStrConst.RETURN_CODE);
			outputHtml("					</table>" + JFUStrConst.RETURN_CODE);
			outputHtml("				</div>" + JFUStrConst.RETURN_CODE);
			// 初期費用領域(GH)
			outputHtml("				<div class=\"sim_price_box2_title\">&nbsp;</div>" + JFUStrConst.RETURN_CODE);
			outputHtml("				<div class=\"sim_price_box2_body\">" + JFUStrConst.RETURN_CODE);


			outputHtml("					<table class=\"respFUW09903_Table\" id=\"SHK_HI_GH\">" + JFUStrConst.RETURN_CODE);

			outputHtml("						<tr>" + JFUStrConst.RETURN_CODE);
			// 初期費用集計領域(GH)
			outputHtml("							<td>&nbsp;</td>" + JFUStrConst.RETURN_CODE);
			outputHtml("						</tr>" + JFUStrConst.RETURN_CODE);
			outputHtml("					</table>" + JFUStrConst.RETURN_CODE);
			outputHtml("				</div>" + JFUStrConst.RETURN_CODE);
		outputHtml("				</div>" + JFUStrConst.RETURN_CODE);


		if (JFUStrConst.HNBAI_TYPE_CON.equals(hanbaiType)) {
			// その他リンク先の出力領域
			outputHtml("				<div class=\"separateLine\"></div>" + JFUStrConst.RETURN_CODE);

			// 備考メッセージの文言表示制御
			if(!JFUWebCommon.isNull(bikoMsg))
			{
				// 備考メッセージに値が設定されている場合表示する
				outputHtml("				<span class=\"discription\" id=\"bikoMsgk\" >" + bikoMsg + "</span>"  +JFUStrConst.RETURN_CODE);
			}

			outputHtml("					<div class=\"discriptionLink\" id=\"simLink\" >" + JFUStrConst.RETURN_CODE);
			outputHtml("					<a href='javascript:void(0);' onclick='openWinDoiMulti(\"" + simLink + "\", this); return false;'>その他の注意事項</a>" + JFUStrConst.RETURN_CODE);
			outputHtml("					</div>" + JFUStrConst.RETURN_CODE);
		}

		outputHtml("				</div>" + JFUStrConst.RETURN_CODE);
		outputHtml("			</div>" + JFUStrConst.RETURN_CODE);
		outputHtml("		</div>" + JFUStrConst.RETURN_CODE);
		outputHtml("	</div>" + JFUStrConst.RETURN_CODE);
		outputHtml("</div>" + JFUStrConst.RETURN_CODE);

		return SKIP_BODY;
	}

	/**
	 * 共有フォームBeanより項目を取得します。(階層構造型)
	 * <br>
	 * @param arg0 取得キー
	 * @param idx 階層
	 * @return 項目
	 */
	private String getDataString(String arg0, int idx)
	{
		String str = null;
		try
		{
			str = getSFBeanData_String(TAG_TEMPLATE, arg0, idx);
			if (str == null || "null".equals(str))
			{
				str = "";
			}
		}
		catch (JspException e)
		{
			str = "";
		}
		return str;
	}

	/**
	 * 共有フォームBeanより項目を取得します。
	 * <br>
	 * @param arg0
	 * @return 項目
	 */
	private String getDataString(String arg0)
	{
		String str = null;
		try
		{
			str = getSFBeanData_String(TAG_TEMPLATE, arg0);
			if (str == null || "null".equals(str))
			{
				str = "";
			}
		}
		catch (JspException e)
		{
			str = "";
		}
		return str;
	}

}
