/*********************************************************************
 * All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *   システム名      ：eo顧客基幹システム
 *   モジュール名    ：JFUKeiyakuYakkan
 *   ソースファイル名：JFUKeiyakuYakkan.java
 *   作成者          ：富士通
 *   日付            ：2012年09月19日
 *＜機能概要＞
 *   フロント画面契約約款出力カスタムタグです。
 *＜修正履歴＞
 *   バージョン  修正日       修正者      修正内容
 *   v4.00       2012/09/19   FJ）岡井    新規作成【ANK-1198-00-00】変更系申込画面の提供条件・利用規約の設置位置について
 *   v5.00       2013/05/23   FJ）中谷    変更【ST3-2013-0000919】eoメールアドレス対応
 *  v52.00       2021/01/22   FJ) 張本    変更【ANK-3987-00-00】Netflix導入対応（STEP2）
 *  v55.00       2021/10/11   FJ）西川    変更【ANK-4146-00-00】【eo定期】多機能ルーター枯渇対応 STEP2
 *  v61.00       2023/04/24   FJ) 張本    変更【ANK-4315-00-00】【eo定期】eoホームゲートウェイ導入対応
 *  v71.00       2024/01/12   FJ) 張本    変更【ANK-4468-00-00】eo光ネット「シンプルプラン」追加対応
 *  v73.00       2024/07/25   FJ) 余野木  変更【ANK-4427-00-00】NTT卸対応
 **********************************************************************/
package eo.web.webview.common;

import static com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG;

import java.util.Arrays;
import java.util.List;
import java.util.Map;

import javax.servlet.jsp.JspException;

import com.fujitsu.futurity.web.x00.JCCBusinessException;
import com.fujitsu.futurity.web.x33.X33VCustomTagBase;

import eo.common.constant.JFUStrConst;

/**
 * フロント画面契約約款出力カスタムタグです。 <br>
 *
 * @author 富士通
 */
@SuppressWarnings("serial")
public class JFUKeiyakuYakkan extends X33VCustomTagBase
{

	// ■出力ターゲット
	/** 画面ID */
	private String screenId = JFUStrConst.EMPTY;

	// ■料金グループコードリスト
	/** 料金グループコードリスト：eo光ネット */
	private static final List<String> PRCGRPCD_NET =
			Arrays.asList(JFUStrConst.CD00133_02, JFUStrConst.CD00133_03, JFUStrConst.CD00133_04);
	/** 料金グループコードリスト：eoモバイル */
	private static final List<String> PRCGRPCD_MB =
			Arrays.asList(JFUStrConst.CD00133_07, JFUStrConst.CD00133_08, JFUStrConst.CD00133_09);
	/** 料金グループコードリスト：eoADSL */
	private static final List<String> PRCGRPCD_ADSL = Arrays.asList(JFUStrConst.CD00133_05, JFUStrConst.CD00133_06);
	/** 料金グループコードリスト：eo光電話 */
	private static final List<String> PRCGRPCD_TEL = Arrays.asList(JFUStrConst.CD00133_10);
	/** 料金グループコードリスト：eo光テレビ */
	private static final List<String> PRCGRPCD_TV = Arrays.asList(JFUStrConst.CD00133_11, JFUStrConst.CD00133_12);
	/** 料金グループコードリスト：eoメールアドレス */
	private static final List<String> PRCGRPCD_EO_MLAD = Arrays.asList(JFUStrConst.CD00133_16);

	// ■eo光電話料金プランコードリスト
	/** eo光電話(ホーム)タイプ (料金プランコード：1番号、2番号) */
	private static final List<String> TELHOME_TYPE_LIST =
			Arrays.asList(JFUStrConst.CD00565_PA3101, JFUStrConst.CD00565_PA3201);
	/** eo光電話(メゾン)タイプ (料金プランコード：1番号、2番号) */
	private static final List<String> TELMEZON_TYPE_LIST =
			Arrays.asList(JFUStrConst.CD00565_PA3103, JFUStrConst.CD00565_PA3203);
	/** eo光電話(マンション)タイプ (料金プランコード：1番号GB、1番号光、2番号GB、2番号光) */
	private static final List<String> TELMANSHON_TYPE_LIST =
			Arrays.asList(JFUStrConst.CD00565_PA3102, JFUStrConst.CD00565_PA3104, JFUStrConst.CD00565_PA3202, JFUStrConst.CD00565_PA3204);

	// ■シンプルプランコードリスト
	/** シンプルプラン (料金コースコード) */
	private static final List<String> NETSIMPLE_TYPE_LIST =
			Arrays.asList(JFUStrConst.CD00134_A97, JFUStrConst.CD00134_A99);

	// ■通信機器
	/** 型番号(多機能ルーター) */
	private static final String MODEL_NO_EORT = "EORT";
	/** 型番号(多機能ルーター) */
	private static final String MODEL_NO_EORTWR = "EORTWR";

	// ■項目ID
	/** 拡張タグテンプレートファイルのテンプレートID */
	private static final String TAG_TEMPLATE = "TagTemplate007";
	/** 項目ID：料金グループコード */
	private static final String PRC_GRP_CD = "prc_grp_cd";
	/** 項目ID：料金プランコード */
	private static final String PPLAN_CD = "pplan_cd";
	/** 項目ID：料金コースコード */
	private static final String PCRS_CD = "pcrs_cd";
// ANK-4427-00-00 ADD START
	/** 項目ID：ＮＴＴ卸区分 */
	private static final String NTTORS_DIV = "nttors_div";
// ANK-4427-00-00 ADD END
	/** 項目ID：加入契約支払方式コード */
	private static final String KANYU_KEI_PAY_HOSHIKI_CD = "kanyu_kei_pay_hoshiki_cd";
	/** 項目ID：型番号 */
	private static final String MODEL_NO = "model_no";

	// ■定義
	/** 文言格納マップ */
	private Map<String, String> mongonMap = null;
	/** リンク格納マップ */
	private Map<String, String> linkMap = null;
	/** 定義取得パス 文言 */
	private static final String PATH_MONGON = "DISPSETTING/SETTING[@screenId='#']/DISPTEXT[@groupid='COMMON_YAKKAN_MONGON']";
	/** 定義取得パス リンク */
	private static final String PATH_LINK = "DISPSETTING/SETTING[@screenId='#']/OUTLINK[@groupid='COMMON_YAKKAN_LINK']";
	/** 属性名 */
	private static final String QUERY_ATTR_NAME = "id";

	// ■定義取得ID
	/** eo光ネット ホーム */
	private static final String NET_HOME = "net_home";
	/** eo光ネット メゾン */
	private static final String NET_MEZON = "net_mezon";
	/** eo光ネット マンション */
	private static final String NET_MANSHON = "net_manshon";
	/** eo光ネット シンプル */
	private static final String NET_SIMPLE = "net_simple";
	/** eo光電話 ホーム */
	private static final String TEL_HOME = "tel_home";
	/** eo光電話 メゾン */
	private static final String TEL_MEZON = "tel_mezon";
	/** eo光電話 マンション */
	private static final String TEL_MANSHON = "tel_manshon";
	/** eoモバイル */
	private static final String MOBILE = "mb";
	/** 通信機器関連 */
	private static final String KIKI = "kiki";
	/** eo光テレビ */
	private static final String TV_ALL = "tv";
	/** eoADSL */
	private static final String ADSL = "adsl";
	/** eoメールアドレス */
	private static final String EO_MLAD = "eo_mlad";
// ANK-4427-00-00 ADD START
	/** typeN */
	private static final String TYPEN = "typen";
// ANK-4427-00-00 ADD END

	// ■その他
	/** 置換文字列 # */
	private static final String REPLACE_STR_SHARP = "#";
	/** 汎用文字列：001 */
	private static final String STR_001 = "001";
	/** 汎用文字列：002 */
	private static final String STR_002 = "002";
// ANK-3825-00-00 ADD START
	/** 汎用文字列：003 */
	private static final String STR_003 = "003";
// ANK-3825-00-00 ADD END
	/** 汎用文字列：004 */
	private static final String STR_004 = "004";
	/** 汎用文字列：005 */
	private static final String STR_005 = "005";
	/** 画面ID：NET_KIYAKU */
	private static final String NET_KIYAKU = "NET_KIYAKU";

	// ■出力HTML
	/** Aタグ開始 */
	private static final String A_TAG_START = "<a href=\"javascript:void(0);\" id=\"link_keiyaku_yakkan\" onclick=\"openWin('#', this);\">";
	/** 契約約款確認有無フラグ(DIVタグ) */
	private static final String DIV_CFM_UM = "<div id=\"link_keiyaku_yakkan_cfm_um\" class=\"nodisp\">1</div>";
	/** リンク文言(SPANタグ) */
	private static final String SPAN_LINK_MONGON = "<span class=\"link_icon\" title=\"#\">#</span>";
	/** Aタグ終了 */
	private static final String A_TAG_END = "</a>";

	/**
	 * カスタムタグ開始処理を行います。 <br>
	 *
	 * @throws JspException JSPで発生する例外
	 * @return 処理結果
	 * @see javax.servlet.jsp.tagext.TagSupport#doStartTag()
	 */
	@Override
	public int doStartTag() throws JspException
	{
		try
		{
			// 定義取得
			setXmlMap();
			// 料金グループコード
			String prcGrpCd = getDateFromCommonInfoBean(PRC_GRP_CD, 0);
			// 型番号
			String modelNo = getDateFromCommonInfoBean(MODEL_NO, 0);

			// パターン判別
			if (PRCGRPCD_NET.contains(prcGrpCd) && (modelNo == null || modelNo.length() == 0))
			{
				// eo光ネット用出力処理
				outHtmlOfNet();
			}
			else if (PRCGRPCD_ADSL.contains(prcGrpCd) && (modelNo == null || modelNo.length() == 0))
			{
				// eoADSL用出力処理
				outHtmlOfAdsl();
			}
			else if (PRCGRPCD_MB.contains(prcGrpCd) && (modelNo == null || modelNo.length() == 0))
			{
				// eoモバイル用出力処理
				outHtmlOfMobile(prcGrpCd);
			}
			else if (PRCGRPCD_TEL.contains(prcGrpCd) && (modelNo == null || modelNo.length() == 0))
			{
				// eo光電話用出力処理
				outHtmlOfTel();
			}
			else if (PRCGRPCD_TV.contains(prcGrpCd) && (modelNo == null || modelNo.length() == 0))
			{
				// eo光テレビ用出力処理
				outHtmlOfTv();
			}
			else if (PRCGRPCD_EO_MLAD.contains(prcGrpCd) && (modelNo == null || modelNo.length() == 0))
			{
				// eoメールアドレス用出力処理
				outHtmlOfEoMlad();
			}
			else if (PRCGRPCD_NET.contains(prcGrpCd) && (NET_KIYAKU.equals(screenId)))
			{
				// eo光ネット用出力処理
				outHtmlOfNet();
			}
			else if (modelNo != null && modelNo.length() > 0)
			{
				// 通信機器関連用出力処理
				outHtmlOfKiki();
			}
			else
			{
				// パターンに含まれていない場合はシステムエラーとする
				DEBUG_LOG.info("■■■ 出力ターゲットパターン不一致エラー ■■■");
				throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);
			}
		}
		catch (Exception e)
		{
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);
		}

		return SKIP_BODY;
	}

	/**
	 * 画面IDを設定します。
	 * <br>
	 * @param arg0 パターン
	 */
	public void setScreenId(String arg0)
	{
		this.screenId = arg0;
	}

	/**
	 * 各種定義を取得します。
	 * 
	 * <br>
	 * @throws Exception
	 */
	private void setXmlMap() throws Exception
	{
		// 文言一覧を取得
		this.mongonMap = JFUWebCommon.getDispItemsAsMap(PATH_MONGON.replace(REPLACE_STR_SHARP, screenId), QUERY_ATTR_NAME);
		// リンク一覧を取得
		this.linkMap = JFUWebCommon.getLinkItemsAsMap(PATH_LINK.replace(REPLACE_STR_SHARP, screenId), QUERY_ATTR_NAME);

		// どの定義も取得できていない場合、出力しない
		if ((mongonMap == null || mongonMap.size() == 0) && (linkMap == null || linkMap.size() == 0))
		{
			DEBUG_LOG.info("■■■ 定義取得エラー ■■■");
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);
		}
	}

	/**
	 * eo光ネット用HTML出力処理です。
	 * 
	 * <br>
	 * @throws JspException 
	 * @throws Exception 
	 */
	private void outHtmlOfNet() throws JspException
	{
		// 料金グループコード
		String prcGrpCd = getDateFromCommonInfoBean(PRC_GRP_CD, 0);
		// 料金グループコード
		String pcrsCd = getDateFromCommonInfoBean(PCRS_CD, 0);

// ANK-4427-00-00 ADD START
		// ●typeN
		if (JFUStrConst.PCRS_CD_TYPEN.contains(pcrsCd))
		{
			// 文言
			String mongon = this.mongonMap.get(TYPEN);
			// URL
			String url = this.linkMap.get(TYPEN);

			// 取得チェック
			chkMongonAndUrl(mongon, url);

			// HTML出力
			outputHtml(A_TAG_START.replace(REPLACE_STR_SHARP, url));
			outputHtml(DIV_CFM_UM);
			outputHtml(SPAN_LINK_MONGON.replace(REPLACE_STR_SHARP, mongon));
			outputHtml(A_TAG_END);
		}
// ANK-4427-00-00 ADD END
		else if (JFUStrConst.CD00133_02.equals(prcGrpCd))
		{
			// ●シンプルプラン
			if (NETSIMPLE_TYPE_LIST.contains(pcrsCd))
			{
				// 文言
				String mongon = this.mongonMap.get(NET_SIMPLE);
				// URL
				String url = this.linkMap.get(NET_SIMPLE);

				// 取得チェック
				chkMongonAndUrl(mongon, url);

				// HTML出力
				outputHtml(A_TAG_START.replace(REPLACE_STR_SHARP, url));
				outputHtml(DIV_CFM_UM);
				outputHtml(SPAN_LINK_MONGON.replace(REPLACE_STR_SHARP, mongon));
				outputHtml(A_TAG_END);
			}
			// ●ホームタイプ
			else
			{
				// 文言
				String mongon = this.mongonMap.get(NET_HOME);
				// URL
				String url = this.linkMap.get(NET_HOME);

				// 取得チェック
				chkMongonAndUrl(mongon, url);

				// HTML出力
				outputHtml(A_TAG_START.replace(REPLACE_STR_SHARP, url));
				outputHtml(DIV_CFM_UM);
				outputHtml(SPAN_LINK_MONGON.replace(REPLACE_STR_SHARP, mongon));
				outputHtml(A_TAG_END);
			}
		}
		else if (JFUStrConst.CD00133_03.equals(prcGrpCd))
		{
			// ●メゾンタイプ

			// 文言
			String mongon = this.mongonMap.get(NET_MEZON);
			// URL
			String url = this.linkMap.get(NET_MEZON);

			// 取得チェック
			chkMongonAndUrl(mongon, url);

			// HTML出力
			outputHtml(A_TAG_START.replace(REPLACE_STR_SHARP, url));
			outputHtml(DIV_CFM_UM);
			outputHtml(SPAN_LINK_MONGON.replace(REPLACE_STR_SHARP, mongon));
			outputHtml(A_TAG_END);
		}
		else if (JFUStrConst.CD00133_04.equals(prcGrpCd))
		{
			// ●マンションタイプ

			// 加入契約支払方式コード
			String kanyuKeiPayHoshikiCd = getDateFromCommonInfoBean(KANYU_KEI_PAY_HOSHIKI_CD, 0);

			if (JFUStrConst.CD01216_003.equals(kanyuKeiPayHoshikiCd))
			{
				// 全戸一括

				// 文言
				String mongon = this.mongonMap.get(NET_MANSHON + JFUStrConst.HALF_UNDER_BAR + JFUStrConst.CD01216_003);
				// URL
				String url = this.linkMap.get(NET_MANSHON + JFUStrConst.HALF_UNDER_BAR + JFUStrConst.CD01216_003);

				// 取得チェック
				chkMongonAndUrl(mongon, url);

				// HTML出力
				outputHtml(A_TAG_START.replace(REPLACE_STR_SHARP, url));
				outputHtml(DIV_CFM_UM);
				outputHtml(SPAN_LINK_MONGON.replace(REPLACE_STR_SHARP, mongon));
				outputHtml(A_TAG_END);
			}
			else
			{
				// 全戸一括以外

				// 文言
				String mongon = this.mongonMap.get(NET_MANSHON + JFUStrConst.HALF_UNDER_BAR + STR_001);
				// URL
				String url = this.linkMap.get(NET_MANSHON + JFUStrConst.HALF_UNDER_BAR + STR_001);

				// 取得チェック
				chkMongonAndUrl(mongon, url);

				// HTML出力
				outputHtml(A_TAG_START.replace(REPLACE_STR_SHARP, url));
				outputHtml(DIV_CFM_UM);
				outputHtml(SPAN_LINK_MONGON.replace(REPLACE_STR_SHARP, mongon));
				outputHtml(A_TAG_END);
			}
		}
		else
		{
			// 料金グループコードが一致しない場合エラーとする
			DEBUG_LOG.info("■■■ eo光ネット：料金グループコード不一致エラー ■■■");
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);
		}
	}

	/**
	 * eoADSL用HTML出力処理です。
	 * 
	 * <br>
	 * @throws JspException 
	 */
	private void outHtmlOfAdsl() throws JspException
	{
		// 文言
		String mongon = this.mongonMap.get(ADSL);
		// URL
		String url = this.linkMap.get(ADSL);

		// 取得チェック
		chkMongonAndUrl(mongon, url);

		// HTML出力
		outputHtml(A_TAG_START.replace(REPLACE_STR_SHARP, url));
		outputHtml(DIV_CFM_UM);
		outputHtml(SPAN_LINK_MONGON.replace(REPLACE_STR_SHARP, mongon));
		outputHtml(A_TAG_END);
	}

	/**
	 * eoモバイル用HTML出力処理です。
	 * 
	 * <br>
	 * @throws JspException 
	 */
	private void outHtmlOfMobile(String prcGrpCd) throws JspException
	{
		// 料金プランコード
		String pplanCd = getDateFromCommonInfoBean(PPLAN_CD, 0);

		if (JFUStrConst.CD00133_08.equals(prcGrpCd))
		{
			// ●3G

			// 文言
			String mongon = this.mongonMap.get(MOBILE + JFUStrConst.HALF_UNDER_BAR + STR_001);
			// URL
			String url = this.linkMap.get(MOBILE + JFUStrConst.HALF_UNDER_BAR + STR_001);

			// 取得チェック
			chkMongonAndUrl(mongon, url);

			// HTML出力
			outputHtml(A_TAG_START.replace(REPLACE_STR_SHARP, url));
			outputHtml(DIV_CFM_UM);
			outputHtml(SPAN_LINK_MONGON.replace(REPLACE_STR_SHARP, mongon));
			outputHtml(A_TAG_END);
		}
		else if (JFUStrConst.CD00133_09.equals(prcGrpCd))
		{
			// ●WiMAX

			// 文言
			String mongon = this.mongonMap.get(MOBILE + JFUStrConst.HALF_UNDER_BAR + STR_002);
			// URL
			String url = this.linkMap.get(MOBILE + JFUStrConst.HALF_UNDER_BAR + STR_002);

			// 取得チェック
			chkMongonAndUrl(mongon, url);

			// HTML出力
			outputHtml(A_TAG_START.replace(REPLACE_STR_SHARP, url));
			outputHtml(DIV_CFM_UM);
			outputHtml(SPAN_LINK_MONGON.replace(REPLACE_STR_SHARP, mongon));
			outputHtml(A_TAG_END);
		}
		else
		{
			// 料金プランコードが一致しない場合エラーとする
			DEBUG_LOG.info("■■■ eoモバイル：料金プランコード不一致エラー ■■■");
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);
		}
	}

	/**
	 * eo光電話用HTML出力処理です。
	 * 
	 * <br>
	 * @throws JspException 
	 */
	private void outHtmlOfTel() throws JspException
	{
		// 料金プランコード
		String pplanCd = getDateFromCommonInfoBean(PPLAN_CD, 0);

		if (TELHOME_TYPE_LIST.contains(pplanCd))
		{
			// ●ホーム

			// 文言
			String mongon = this.mongonMap.get(TEL_HOME);
			// URL
			String url = this.linkMap.get(TEL_HOME);

			// 取得チェック
			chkMongonAndUrl(mongon, url);

			// HTML出力
			outputHtml(A_TAG_START.replace(REPLACE_STR_SHARP, url));
			outputHtml(DIV_CFM_UM);
			outputHtml(SPAN_LINK_MONGON.replace(REPLACE_STR_SHARP, mongon));
			outputHtml(A_TAG_END);
		}
		else if (TELMEZON_TYPE_LIST.contains(pplanCd))
		{
			// ●メゾン

			// 文言
			String mongon = this.mongonMap.get(TEL_MEZON);
			// URL
			String url = this.linkMap.get(TEL_MEZON);

			// 取得チェック
			chkMongonAndUrl(mongon, url);

			// HTML出力
			outputHtml(A_TAG_START.replace(REPLACE_STR_SHARP, url));
			outputHtml(DIV_CFM_UM);
			outputHtml(SPAN_LINK_MONGON.replace(REPLACE_STR_SHARP, mongon));
			outputHtml(A_TAG_END);
		}
		else if (TELMANSHON_TYPE_LIST.contains(pplanCd))
		{
			// ●マンション

			// 文言
			String mongon = this.mongonMap.get(TEL_MANSHON);
			// URL
			String url = this.linkMap.get(TEL_MANSHON);

			// 取得チェック
			chkMongonAndUrl(mongon, url);

			// HTML出力
			outputHtml(A_TAG_START.replace(REPLACE_STR_SHARP, url));
			outputHtml(DIV_CFM_UM);
			outputHtml(SPAN_LINK_MONGON.replace(REPLACE_STR_SHARP, mongon));
			outputHtml(A_TAG_END);
		}
		else
		{
			// 料金プランコードが一致しない場合エラーとする
			DEBUG_LOG.info("■■■ eo光電話：料金プランコード不一致エラー ■■■");
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);
		}
	}

	/**
	 * eo光テレビ用HTML出力処理です。
	 * 
	 * <br>
	 * @throws JspException 
	 */
	private void outHtmlOfTv() throws JspException
	{
		// 文言
		String mongon = this.mongonMap.get(TV_ALL);
		// URL
		String url = this.linkMap.get(TV_ALL);

		// 取得チェック
		chkMongonAndUrl(mongon, url);

		// HTML出力
		outputHtml(A_TAG_START.replace(REPLACE_STR_SHARP, url));
		outputHtml(DIV_CFM_UM);
		outputHtml(SPAN_LINK_MONGON.replace(REPLACE_STR_SHARP, mongon));
		outputHtml(A_TAG_END);
	}

	/**
	 * 通信機器関連用HTML出力処理です。
	 * 
	 * <br>
	 * @throws Exception 
	 */
	private void outHtmlOfKiki() throws Exception
	{
		// 型番号
		String modelNo = getDateFromCommonInfoBean(MODEL_NO, 0);
// ANK-3825-00-00 ADD START
		if (JFUWebCommon.isNull(screenId))
		{
			screenId = "FUW07101";
		}
		Map<String, String> dispDefMapModel = JFUWebCommon.getDispItemsAsMap("DISPSETTING/SETTING[@screenId='" + screenId + "']/DISPCTL[@groupid='MODEL_NO']", QUERY_ATTR_NAME);
		String modelNo_musenLan = dispDefMapModel.get("WIRELESS_LAN");
		String modelNo_meshWifi = dispDefMapModel.get("MESH_WIFI");
		String modelNo_ipstb = dispDefMapModel.get("IP_STB");
// ANK-3825-00-00 ADD END

		if (modelNo.contains(MODEL_NO_EORTWR))
		{
			// ●ルーター

			// 文言
			String mongon = this.mongonMap.get(KIKI + JFUStrConst.HALF_UNDER_BAR + STR_005);
			// URL
			String url = this.linkMap.get(KIKI + JFUStrConst.HALF_UNDER_BAR + STR_005);

			// 取得チェック
			chkMongonAndUrl(mongon, url);

			// HTML出力
			outputHtml(A_TAG_START.replace(REPLACE_STR_SHARP, url));
			outputHtml(DIV_CFM_UM);
			outputHtml(SPAN_LINK_MONGON.replace(REPLACE_STR_SHARP, mongon));
			outputHtml(A_TAG_END);
		}
		else if (modelNo.contains(MODEL_NO_EORT))
		{
			// ●ルーター

			// 文言
			String mongon = this.mongonMap.get(KIKI + JFUStrConst.HALF_UNDER_BAR + STR_001);
			// URL
			String url = this.linkMap.get(KIKI + JFUStrConst.HALF_UNDER_BAR + STR_001);

			// 取得チェック
			chkMongonAndUrl(mongon, url);

			// HTML出力
			outputHtml(A_TAG_START.replace(REPLACE_STR_SHARP, url));
			outputHtml(DIV_CFM_UM);
			outputHtml(SPAN_LINK_MONGON.replace(REPLACE_STR_SHARP, mongon));
			outputHtml(A_TAG_END);
		}
		else
		{
// ANK-3825-00-00 MOD START
			String mongon = "";
			String url = "";
			// ●無線LAN中継機、メッシュwifi
			if (modelNo_musenLan.equals(modelNo))
			{
				// 文言
				mongon = this.mongonMap.get(KIKI + JFUStrConst.HALF_UNDER_BAR + STR_002);
				// URL
				url = this.linkMap.get(KIKI + JFUStrConst.HALF_UNDER_BAR + STR_002);
			}
			else if (modelNo_meshWifi.equals(modelNo))
			{
				// 文言
				mongon = this.mongonMap.get(KIKI + JFUStrConst.HALF_UNDER_BAR + STR_003);
				// URL
				url = this.linkMap.get(KIKI + JFUStrConst.HALF_UNDER_BAR + STR_003);
			}
			else if (modelNo_ipstb.equals(modelNo))
			{
				// 文言
				mongon = this.mongonMap.get(KIKI + JFUStrConst.HALF_UNDER_BAR + STR_004);
				// URL
				url = this.linkMap.get(KIKI + JFUStrConst.HALF_UNDER_BAR + STR_004);
			}
// ANK-3825-00-00 MOD END

			// 取得チェック
			chkMongonAndUrl(mongon, url);

			// HTML出力
			outputHtml(A_TAG_START.replace(REPLACE_STR_SHARP, url));
			outputHtml(DIV_CFM_UM);
			outputHtml(SPAN_LINK_MONGON.replace(REPLACE_STR_SHARP, mongon));
			outputHtml(A_TAG_END);
		}
	}

	/**
	 * eoメールアドレス用HTML出力処理です。
	 * 
	 * <br>
	 * @throws JspException 
	 */
	private void outHtmlOfEoMlad() throws JspException
	{
		// 文言
		String mongon = this.mongonMap.get(EO_MLAD);
		// URL
		String url = this.linkMap.get(EO_MLAD);

		// 取得チェック
		chkMongonAndUrl(mongon, url);

		// HTML出力
		outputHtml(A_TAG_START.replace(REPLACE_STR_SHARP, url));
		outputHtml(DIV_CFM_UM);
		outputHtml(SPAN_LINK_MONGON.replace(REPLACE_STR_SHARP, mongon));
		outputHtml(A_TAG_END);
	}

	/**
	 * 文言とURLの取得チェックを行います。
	 * 
	 * <br>
	 * @param mongon 文言
	 * @param url URL
	 */
	private void chkMongonAndUrl(String mongon, String url)
	{
		// 文言またはURLが取得できていない場合エラー
		if ((mongon == null || mongon.length() == 0) || (url == null || url.length() == 0))
		{
			DEBUG_LOG.info("■■■ 文言またはURL取得エラー ■■■");
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);
		}
	}

	/**
	 * 共有フォームBeanより項目を取得します。(階層構造型)
	 * <br>
	 * @param arg0
	 * @param idx
	 * @return 項目
	 * @throws JspException 
	 */
	private String getDateFromCommonInfoBean(String arg0, int idx) throws JspException
	{
		String str = JFUStrConst.EMPTY;
		str = getSFBeanData_String(TAG_TEMPLATE, arg0, idx);

		return str;
	}
}