function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}
function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
 var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
   var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
   if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

/**
 * フィールドに値が入力されていなかったとき。
 */
var ERR_FIELD_INPUT = " ";

/**
 * フィールドに数値が入力されていなかったとき。
 */
var ERR_NUMBER_FIELD_INPUT;

/**
 * フィールドに日付が入力されていなかったとき。
 */
var ERR_DATE_FIELD_INPUT;

/**
 * 日付が期間を超えて入力されたとき。
 */
var ERR_DATE_OVER_INPUT;

/**
 * フィールドに時刻が入力されていなかったとき。
 */
var ERR_TIME_FIELD_INPUT;

/**
 * 桁数を超過して値が入力されたとき。
 */
var ERR_FIELD_LENGTH;

/**
 * 桁数を超過して数値が入力されたとき。
 */
var ERR_FIELD_NUMBER_LENGTH;

/**
 * チェックボックスがひとつもチェックされていなかったとき。
 */
var ERR_CHECKBOX_CHECK;

/**
 * ラジオボタンがひとつもチェックされていなかったとき。
 */
var ERR_RADIO_CHECK;

/**
 * フィールドに値が重複入力されているとき。
 */
var ERR_FIELD_DUPLICATE;

/**
 * 入力された値のフォーマットがおかしいとき。
 */
var ERR_FORMAT = "";

//// 共通変数 ////////////////////////////////////

/**
 * 値の区切り文字。
 */
var SEPARATE = ",";

/**
 * 値の区切り文字。
 */
var EQUAL = "=";

/**
 * 選択クラスのスタイル名
 */
var selectClass = null;

/**
 * 選択クラスのスタイル名
 */
var choiceClass = null;

/**
 * Inactive時の色。
 */
var INACTIVE_COLOR = "gray";

/**
 * Element作成対象のタグ名。
 */
var TARGET_TAG_NAME = new Array("INPUT", "SELECT", "TEXTAREA", "BUTTON", "OPTION");

/**
 * Element作成時の追加パラメータの属性名。
 */
var TARGET_TAG_TYPE = new Array("name", "type");

/**
 * Element作成後の追加パラメータの属性名。
 */
var TARGET_TAG_VALUE = new Array(
	"onclick", "onchange", "onfocus", "onblur", "onkeypress", "onkeydown", "onkeyup",
	"value", "checked", "selected", "readOnly", "disabled", "style.cssText", "className",
	"size", "maxLength", "rows", "cols"
);

/**
 * 最大表示テーブルの行数。
 */
var MAX_ROW_COUNT = 150;

/**
 * 最大期間日付。
 */
var MAX_INTERVAL_DATE = 200;

/**
 * 最大チェックElementアイドル数。
 */
var MAX_CHECK_IDLE_COUNT = 100;

/**
 * 操作不可能フラグ。
 */
var FLG_DESABLED = "FLG_DESABLED";

/**
 * ヘッダ, フッタフラグ
 */
var CHECK_HEADER  = "CHECK_HEADER";
var CHECK_FOTTER  = "CHECK_FOTTER";

/**
 * On, Offフラグ
 */
var FLG_ON      = 1;
var FLG_OFF     = 0;
var FLG_ON_STR  = "1";
var FLG_OFF_STR = "0";

/**
 * ブラウザの識別。(MSIE)
 */
var BROWSER_MS_IE = "Microsoft Internet Explorer";

/**
 * メールアドレスのフォーマット。
 * 最初が    "0-9 or a-z or A-Z"                           のいずれかの文字で始まり
 * @の前は   "0-9 or a-z or A-Z or _ or - or ."            のいずれかの文字
 * @のあとは "@" がなく "0-9 or a-z or A-Z or _ or - or ." のいずれかの文字
 * 最後は    "a-z or A-Z"                                  のいずれかの文字で終わる
 */
var FORMAT_MAIL_ADDRESS = /^[0-9a-zA-Z][0-9a-zA-Z_\-\.]+@[^@][0-9a-zA-Z_\-\.]+[a-zA-Z]$/;

/**
 * Company Code(Corporate, Place, Section)のフォーマット。
 * "0-9 or A-Z" のいずれかの文字
 */
var FORMAT_COMPANY = /^[0-9A-Z]+$/;

/**
 * Upload用のencodingタイプ。
 */
var UPLOAD_ENCTYPE = "multipart/form-data";


/**
 * ネットスケープ対応
 *
 */
/*
function LocationNN4x( url )
{
	with( navigator )
	{
		if( ( appName == "Netscape" ) && ( parseInt( appVersion ) == 4 ) )
		{
			document.location = url;
		}
	}
}

LocationNN4x( 'http://design.awoc.co.jp/nn/nn4.html' );


function LocationNN6x( url )
{
	with( navigator )
	{
		if( userAgent.match( /netscape6/i ) )
		{
			document.location = url;
		}
	}
}

LocationNN6x( 'http://design.awoc.co.jp/nn/nn6.html' );
*/


//// 値のチェック ////////////////////////////////////

/**
 * フィールドの入力チェック。
 * ターゲット名に対して入力されているか判断を行う。
 * ターゲット名が入力されていなかったときにはエラーメッセージを表示する。
 *
 * @param  target ターゲット名
 * @param  errMsg エラーメッセージ
 * @return        フィールドに値が設定されていればtrue, 設定されていなければfalse
 */
function checkFieldValue(target, errMsg){
	return checkFrameFieldValue(0, target, errMsg);
}

/**
 * フィールドの入力チェック。
 * ターゲット名に対して入力されているか判断を行う。
 * ターゲット名が入力されていなかったときにはエラーメッセージを表示する。
 *
 * @param  base   フォーム名
 * @param  target ターゲット名
 * @param  errMsg エラーメッセージ
 * @return        フィールドに値が設定されていればtrue, 設定されていなければfalse
 */
function checkFrameFieldValue(base, target, errMsg){
	var flgCheck = false;
	var element = document.forms[base].elements[target];
	if(element == null){
		return;
	}
	var value = element.value;

	// 改行が入っていたときの処理
	if(value != null && value != ""){
		var valueList = splitLine(value);
		if(valueList != null){
			for(var cnt = 0 ; cnt < valueList.length ; cnt++){

				// 値のチェック
				if(valueList[cnt] != null && valueList[cnt] != ""){
					flgCheck = true;
					break;
				}

			}
		}
	}

	// エラーの表示
	if(flgCheck == false){
		alert(ERR_FIELD_INPUT + errMsg);
		setFrameFocus(base, target);
	}

	return flgCheck;
}

/**
 * 数値フィールドの入力チェック。
 * ターゲット名に対して数値が入力されているか判断を行う。
 * ターゲット名が数値が入力されていなかったときにはエラーメッセージを表示する。
 *
 * @param  base   フォーム名
 * @param  target ターゲット名
 * @param  errMsg エラーメッセージ
 * @return        フィールドに数値が設定されていればtrue, 設定されていなければfalse
 */
function checkNumberFieldValue(target, errMsg){
	return checkFrameNumberFieldValue(0, target, errMsg);
}

/**
 * 数値フィールドの入力チェック。
 * ターゲット名に対して数値が入力されているか判断を行う。
 * ターゲット名が数値が入力されていなかったときにはエラーメッセージを表示する。
 *
 * @param  base   フォーム名
 * @param  target ターゲット名
 * @param  errMsg エラーメッセージ
 * @return        フィールドに数値が設定されていればtrue, 設定されていなければfalse
 */
function checkFrameNumberFieldValue(base, target, errMsg){
	var flgCheck = false;
	var element = document.forms[base].elements[target];
	if(element == null){
		return;
	}
	var value = element.value;

	// 値が入力されているかのチェック
	if(value == null || value == ""){
		// 数値チェックは行わずに抜ける
		return true;
	}

	// 改行が入っていたときの処理
	var valueList = splitLine(value);
	if(valueList != null){
		flgCheck = true;
		for(var cnt = 0 ; cnt < valueList.length ; cnt++){

			// 値のチェック
			if(valueList[cnt] != null && valueList[cnt] != ""){
				// 数値が入力されているかのチェック
				var numValue = new Number(valueList[cnt]);
				if(isNaN(numValue) ||
					valueList[cnt].indexOf(" ") >= 0 ||
					valueList[cnt].indexOf(".") == 0 ||
					valueList[cnt].indexOf(".") == valueList[cnt].length - 1
				){
					flgCheck = false;
					break;
				}
			}

		}
	}

	// エラーの表示
	if(flgCheck == false){
		alert(ERR_NUMBER_FIELD_INPUT + errMsg);
		setFrameFocus(base, target);
	}

	return flgCheck;
}

/**
 * 入力桁数のチェック。
 * ターゲット名に対して値が入力桁数を超過していないか判断を行う。
 * ターゲット名が値の桁数を超過していたときときにはエラーメッセージを表示する。
 *
 * @param  target ターゲット名
 * @param  length 桁数
 * @param  errMsg エラーメッセージ
 * @return        フィールドに値桁数を超過していなければtrue, 超過していなければfalse
 */
function checkFieldLength(target, length, errMsg){
	return checkFrameAreaLength(0, target, length, 1, errMsg);
}

/**
 * 入力桁数のチェック。
 * ターゲット名に対して値が入力桁数を超過していないか判断を行う。
 * ターゲット名が値の桁数を超過していたときときにはエラーメッセージを表示する。
 *
 * @param  base   フォーム名
 * @param  target ターゲット名
 * @param  length 桁数
 * @param  errMsg エラーメッセージ
 * @return        フィールドに値桁数を超過していなければtrue, 超過していなければfalse
 */
function checkFrameFieldLength(base, target, length, errMsg){
	return checkFrameAreaLength(base, target, length, 1, errMsg);
}

/**
 * 入力桁数のチェック。
 * ターゲット名に対して値が入力桁数を超過していないか判断を行う。
 * ターゲット名が値の桁数を超過していたときときにはエラーメッセージを表示する。
 *
 * @param  base   フォーム名
 * @param  target ターゲット名
 * @param  cols   桁数
 * @param  rows   行数
 * @param  errMsg エラーメッセージ
 * @return        フィールドに値桁数を超過していなければtrue, 超過していなければfalse
 */
function checkAreaLength(target, cols, rows, errMsg){
	return checkFrameAreaLength(0, target, cols, rows, errMsg);
}

/**
 * 入力桁数のチェック。
 * ターゲット名に対して値が入力桁数を超過していないか判断を行う。
 * ターゲット名が値の桁数を超過していたときときにはエラーメッセージを表示する。
 *
 * @param  base   フォーム名
 * @param  target ターゲット名
 * @param  cols   桁数
 * @param  rows   行数
 * @param  errMsg エラーメッセージ
 * @return        フィールドに値桁数を超過していなければtrue, 超過していなければfalse
 */
function checkFrameAreaLength(base, target, cols, rows, errMsg){
	var flgCheck = false;
	var element = document.forms[base].elements[target];
	if(element == null){
		return;
	}
	var value = element.value;

	// 値が入力されているかのチェック
	if(value == null || value == ""){
		// 数値チェックは行わずに抜ける
		return true;
	}

	// 改行が入っていたときの処理
	var valueList = splitLine(value);
	if(valueList != null){
		flgCheck = true;
		for(var cnt = 0 ; cnt < valueList.length ; cnt++){

			// 値のチェック
			if(valueList[cnt] != null && valueList[cnt] != ""){
				// 値が桁数を超過していないかのチェック
				var valueLen = valueList[cnt].length;
				if(cols < valueLen){
					flgCheck = false;
					break;
				}
			}

			// 行数のチェック
			if(cnt >= rows){
				flgCheck = false;
				break;
			}
		}
	}

	// エラーの表示
	if(flgCheck == false){
		alert(ERR_FIELD_LENGTH + errMsg);
		setFrameFocus(base, target);
	}

	return flgCheck;
}

/**
 * 数値の入力小数点桁数のチェック。
 * ターゲット名に対して値が入力小数点桁数を超過していないか判断を行う。
 * ターゲット名が値の小数点桁数を超過していたときときにはエラーメッセージを表示する。
 * fractMaxが-1のときは小数点なしとする。
 *
 * @param  target   ターゲット名
 * @param  fractMax 小数部の最大桁数
 * @param  errMsg   エラーメッセージ
 * @return          フィールドに小数点桁数を超過していなければtrue, 超過していなければfalse
 */
function checkNumberFieldScale(target, intMax, fractMax, errMsg){
	return checkFrameNumberFieldScale(0, target, intMax, fractMax, errMsg);
}

/**
 * 数値の入力小数点桁数のチェック。
 * ターゲット名に対して値が入力小数点桁数を超過していないか判断を行う。
 * ターゲット名が値の小数点桁数を超過していたときときにはエラーメッセージを表示する。
 * intMaxが-1のときは整数の桁数チェックを行わない。
 * fractMaxが-1のときは小数点なしとする。
 *
 * @param  base     フォーム名
 * @param  target   ターゲット名
 * @param  intMax   整数部の最大桁数
 * @param  fractMax 小数部の最大桁数
 * @param  errMsg   エラーメッセージ
 * @return          フィールドに小数点桁数を超過していなければtrue, 超過していなければfalse
 */
function checkFrameNumberFieldScale(base, target, intMax, fractMax, errMsg){
	var flgCheck = false;
	var element = document.forms[base].elements[target];
	if(element == null){
		return;
	}
	var value = element.value;

	// 値が入力されているかのチェック
	if(value == null || value == ""){
		// 数値チェックは行わずに抜ける
		return true;
	}

	// 改行が入っていたときの処理
	var valueList = splitLine(value);
	if(valueList != null){
		flgCheck = true;
		for(var cnt = 0 ; cnt < valueList.length ; cnt++){

			// 値のチェック
			if(valueList[cnt] != null && valueList[cnt] != ""){
				// 数値が入力されているかのチェック
				var numValue = valueList[cnt].split(".");
				if(numValue.length == 2){
					if(intMax < numValue[0].length || fractMax < numValue[1].length){
						flgCheck = false;
						break;
					}
				} else {
					if(intMax > 0 && intMax < valueList[cnt].length){
						flgCheck = false;
						break;
					}
				}
			}

		}
	}

	// エラーの表示
	if(flgCheck == false){
		alert(ERR_FIELD_NUMBER_LENGTH + errMsg);
		setFrameFocus(base, target);
	}

	return flgCheck;
}

/**
 * 日付フィールドの入力チェック。
 * ターゲット名に対して日付が入力されているか判断を行う。
 * ターゲット名に日付が入力されていなかったときにはエラーメッセージを表示する。
 *
 * @param  base   フォーム名
 * @param  target ターゲット名
 * @param  errMsg エラーメッセージ
 * @return        フィールドに日付が設定されていればtrue, 設定されていなければfalse
 */
function checkDateFieldValue(target, errMsg){
	return checkFrameDateFieldValue(0, target, errMsg);
}

/**
 * 日付フィールドの入力チェック。
 * ターゲット名に対して日付が入力されているか判断を行う。
 * ターゲット名に日付が入力されていなかったときにはエラーメッセージを表示する。
 *
 * @param  base   フォーム名
 * @param  target ターゲット名
 * @param  errMsg エラーメッセージ
 * @return        フィールドに日付が設定されていればtrue, 設定されていなければfalse
 */
function checkFrameDateFieldValue(base, target, errMsg){
	var flgCheck = false;
	var element = document.forms[base].elements[target];
	if(element == null){
		return;
	}
	var value = element.value;

	// 値が入力されているかのチェック
	if(value == null || value == ""){
		// 日付チェックは行わずに抜ける
		return true;
	}

	// 改行が入っていたときの処理
	var valueList = splitLine(value);
	if(valueList != null){
		flgCheck = true;
		for(var cnt = 0 ; cnt < valueList.length ; cnt++){

			// 値のチェック
			if(valueList[cnt] != null && valueList[cnt] != ""){
				var dateValue = valueList[cnt].split("/");
				if(dateValue.length != 3){
					flgCheck = false;
					break;
				} else {
					// 日付のチェック
					var checkDate = new Date(dateValue[2], dateValue[1] - 1, dateValue[0]);
					var yyyy = checkDate.getYear();
					if(yyyy < 1900){
						yyyy = yyyy + 1900;
					}
					var mm = checkDate.getMonth() + 1;
					var dd = checkDate.getDate();
					if(dateValue[2] != yyyy || dateValue[1] != mm || dateValue[0] != dd){
						flgCheck = false;
						break;
					}

					// 数値が入っているかのチェック
					if(
						isNaN(dateValue[0]) ||
						isNaN(dateValue[1]) ||
						isNaN(dateValue[2]) ||
						dateValue[0].indexOf(" ") >= 0 ||
						dateValue[1].indexOf(" ") >= 0 ||
						dateValue[2].indexOf(" ") >= 0 ||
						dateValue[0].indexOf(".") == 0 ||
						dateValue[1].indexOf(".") == 0 ||
						dateValue[2].indexOf(".") == 0 ||
						dateValue[0].indexOf(".") == dateValue[0].length - 1 ||
						dateValue[1].indexOf(".") == dateValue[1].length - 1 ||
						dateValue[2].indexOf(".") == dateValue[2].length - 1
					){
						flgCheck = false;
						break;
					}

				}
			}

		}
	}

	// エラーの表示
	if(flgCheck == false){
		alert(ERR_DATE_FIELD_INPUT + errMsg);
		setFrameFocus(base, target);
	}

	return flgCheck;
}

/**
 * 日付フィールドの期間チェック。
 * Date From - Toのチェックを行う。
 *
 * @param  fromTarget Fromターゲット名
 * @param  toTarget   Toターゲット名
 * @param  errMsg     エラーメッセージ
 * @return            Date From - Toの間が期間内であればtrue, 期間外であればfalse
 */
function checkDatePeriod(fromTarget, toTarget, errMsg){
	return checkFrameDatePeriod(0, fromTarget, toTarget, errMsg);
}

/**
 * 日付フィールドの期間チェック。
 * Date From - Toのチェックを行う。
 *
 * @param  fromTarget Fromターゲット名
 * @param  toTarget   Toターゲット名
 * @param  errMsg     エラーメッセージ
 * @return            Date From - Toの間が期間内であればtrue, 期間外であればfalse
 */
function checkDatePeriod(fromTarget, toTarget, errMsg){
	return checkFrameDateInterval(0, fromTarget, toTarget, -1, errMsg);
}

/**
 * 日付フィールドの期間チェック。
 * Date From - Toの間が指定された期間内に収まっているかのチェックを行う。
 * Date From - Toが期間外であればエラーメッセージを表示する。
 *
 * @param  fromTarget Fromターゲット名
 * @param  toTarget   Toターゲット名
 * @param  errMsg     エラーメッセージ
 * @return            Date From - Toの間が期間内であればtrue, 期間外であればfalse
 */
function checkDateInterval(fromTarget, toTarget, errMsg){
	return checkFrameDateInterval(0, fromTarget, toTarget, MAX_INTERVAL_DATE, errMsg);
}

/**
 * 日付フィールドの期間チェック。
 * Date From - Toの間が指定された期間内に収まっているかのチェックを行う。
 * Date From - Toが期間外であればエラーメッセージを表示する。
 *
 * @param  base       フォーム名
 * @param  fromTarget Fromターゲット名
 * @param  toTarget   Toターゲット名
 * @param  interval   期間日数
 * @param  errMsg     エラーメッセージ
 * @return            Date From - Toの間が期間内であればtrue, 期間外であればfalse
 */
function checkFrameDateInterval(base, fromTarget, toTarget, interval, errMsg){
	var flgCheck    = false;
	var fromElement = document.forms[base].elements[fromTarget];
	var toElement   = document.forms[base].elements[toTarget];
	if(fromElement == null || toElement == null || interval == null || isNaN(interval)){
		return;
	}

	// 改行が入っていたときの処理
	var fromValue = fromElement.value;
	var toValue   = toElement.value;
	var fromValueList = splitLine(fromValue);
	var toValueList   = splitLine(toValue);
	if(fromValueList != null && toValueList != null){
		flgCheck = true;
		for(var cnt = 0 ; cnt < fromValueList.length ; cnt++){

			// 値のチェック
			if(fromValueList[cnt] != null && fromValueList[cnt] != ""){
				var fromDateValue = fromValueList[cnt].split("/");
				var toDateValue   = toValueList[cnt].split("/");
				if(fromDateValue.length != 3 || toDateValue.length != 3){
					flgCheck = false;
					break;
				} else {
					// 日付のチェック
					var checkFromDate = new Date(fromDateValue[2], fromDateValue[1] - 1, fromDateValue[0]);
					var checkToDate   = new Date(toDateValue[2], toDateValue[1] - 1, toDateValue[0]);
					var fromTime = checkFromDate.getTime();
					var toTime   = checkToDate.getTime();
					var time     = fromTime + interval * 86400000;
					if((fromTime > toTime) ||
					   (interval > 0 && time < toTime)
					){
						flgCheck = false;
						break;
					}
				}
			}

		}
	}

	// エラーの表示
	if(flgCheck == false){
		alert(ERR_DATE_OVER_INPUT + errMsg);
		setFrameFocus(base, toTarget);
	}

	return flgCheck;
}

/**
 * 時刻フィールドの入力チェック。
 * ターゲット名に対して時刻が入力されているか判断を行う。
 * ターゲット名に時刻が入力されていなかったときにはエラーメッセージを表示する。
 *
 * @param  base    フォーム名
 * @param  targetH 時間ターゲット名
 * @param  targetM 分ターゲット名
 * @param  errMsg  エラーメッセージ
 * @return         フィールドに時刻が設定されていればtrue, 設定されていなければfalse
 */
function checkTimeFieldValue(targetH, targetM, errMsg){
	return checkFrameTimeFieldValue(0, targetH, targetM, errMsg);
}

/**
 * 時刻フィールドの入力チェック。
 * ターゲット名に対して時刻が入力されているか判断を行う。
 * ターゲット名に時刻が入力されていなかったときにはエラーメッセージを表示する。
 *
 * @param  base    フォーム名
 * @param  targetH 時間ターゲット名
 * @param  targetM 分ターゲット名
 * @param  errMsg  エラーメッセージ
 * @return         フィールドに時刻が設定されていればtrue, 設定されていなければfalse
 */
function checkFrameTimeFieldValue(base, targetH, targetM, errMsg){
	var flgCheck = false;
	var elementH = document.forms[base].elements[targetH];
	var elementM = document.forms[base].elements[targetM];
	if(elementH == null || elementM == null){
		return;
	}
	var valueH = elementH.value;
	var valueM = elementM.value;

	// 値が入力されているかのチェック
	if(valueH == null || valueM == null || (valueH == "" && valueM == "")){
		// 時刻チェックは行わずに抜ける
		return true;
	}

	// 数字チェック
	var flgNumberH = checkFrameNumberFieldValue(base, targetH, errMsg);
	if(!flgNumberH){
		return false;
	}
	var flgNumberM = checkFrameNumberFieldValue(base, targetM, errMsg);
	if(!flgNumberM){
		return false;
	}

	// 改行が入っていたときの処理
	var valueListH = splitLine(valueH);
	var valueListM = splitLine(valueM);
	if(valueListH != null && valueListM != null && valueListH.length == valueListM.length){
		flgCheck = true;

		for(var cnt = 0 ; cnt < valueListH.length ; cnt++){
			var timeValueH = valueListH[cnt];
			var timeValueM = valueListM[cnt];

			if(timeValueH.length > 2){
				flgCheck = false;
				break;

			} else {
				// 時刻のチェック
				if(0 > timeValueH || timeValueH >= 24){
					flgCheck = false;
					break;
				}
			}

			if(timeValueM.length > 2){
				flgCheck = false;
				break;

			} else {
				// 時刻のチェック
				if(0 > timeValueM || timeValueM >= 60){
					flgCheck = false;
					break;
				}
			}
		}

	}

	// エラーの表示
	if(flgCheck == false){
		alert(ERR_TIME_FIELD_INPUT + errMsg);
		setFrameFocus(base, targetH);
	}
	return flgCheck;
}

/**
 * チェックボックスのチェック。
 * ターゲット名と前方一致している要素に対してチェックされているか判断を行う。
 * ターゲット名らがチェックされていなかったときにはエラーメッセージを表示する。
 *
 * @param target ターゲット名
 * @param errMsg エラーメッセージ
 * @return       チェックボックスに値が設定されていればtrue, 設定されていなければfalse
 */
function checkCheckboxValue(target, errMsg){
	return checkFrameCheckboxValue(0, target, errMsg);
}

/**
 * チェックボックスのチェック。
 * ターゲット名と前方一致している要素に対してチェックされているか判断を行う。
 * ターゲット名らがチェックされていなかったときにはエラーメッセージを表示する。
 *
 * @param  base   フォーム名
 * @param  target ターゲット名
 * @param  errMsg エラーメッセージ
 * @return        チェックボックスに値が設定されていればtrue, 設定されていなければfalse
 */
function checkFrameCheckboxValue(base, target, errMsg){
	var flgCheck = false;
	var targetName;
	var allElement  = document.forms[base].elements;

	for(var cnt = 0 ; cnt < allElement.length ; cnt++){
		var name  = allElement[cnt].name;
		var index = name.indexOf(target);

		// チェック対象エレメントのとき
		if(index >= 0){
			targetName = name;

			if(allElement[cnt].checked == true){
				// チェックされている
				flgCheck = true;
				break;
			} // if(allElement[cnt].checked == true)

		} // if(index >= 0)
	} // for(var cnt = 0 ; cnt < allElement.length ; cnt++)

	// エラーの表示
	if(flgCheck == false){
		alert(ERR_CHECKBOX_CHECK + errMsg);
		setFrameFocus(base, targetName);
	}

	return flgCheck;
}

/**
 * メールアドレスの妥当性をチェックします。
 *
 * @param  target ターゲット名
 * @param  errMsg エラーメッセージ
 * @return        メールアドレスのフォーマットだ正しければtrue, 間違っていればfalse
 */
function checkMailAddressFormat(target, errMsg){
	return checkFrameMailAddressFormat(0, target, errMsg);
}

/**
 * メールアドレスの妥当性をチェックします。
 *
 * @param  base   フォーム名
 * @param  target ターゲット名
 * @param  errMsg エラーメッセージ
 * @return        メールアドレスのフォーマットだ正しければtrue, 間違っていればfalse
 */
function checkFrameMailAddressFormat(base, target, errMsg){
	var flgCheck = false;
	var element = document.forms[base].elements[target];
	if(element == null){
		return;
	}

	// 改行が入っていたときの処理
	var value = element.value;
	var valueList = splitLine(value);
	if(valueList != null && valueList != null){
		flgCheck = true;
		for(var cnt = 0 ; cnt < valueList.length ; cnt++){

			// 値のチェック
			if(valueList[cnt] != null && valueList[cnt] != ""){

				// メールアドレスの妥当性のチェック
				var matchStr = valueList[cnt].match(FORMAT_MAIL_ADDRESS);
				if(matchStr == null){
					flgCheck = false;
					break;
				}

			}
		}
	}

	// エラーの表示
	if(flgCheck == false){
		alert(ERR_FORMAT + errMsg);
		setFrameFocus(base, target);
	}

	return flgCheck;
}

/**
 * 選択されたエレメントにフォーカスを当てます。
 *
 * @param target エレメント名
 */
function setFocus(target){
	setFrameFocus(0, target)
}

/**
 * 選択されたエレメントにフォーカスを当てます。
 *
 * @param base   フォーム名
 * @param target エレメント名
 */
function setFrameFocus(base, target){
	var element = document.forms[base].elements[target];
	if(element == null){
		return;
	}

	// 隠し項目であれば処理を行わない
	if(element.type == "hidden"){
		return;
	}
	// 機能無効であれば処理を行わない
	if(element.disabled){
		return;
	}

	// 単一アイテム
	if(element.length == null){

		// エレメントにフォーカスを当てる
		element.focus();

	// 複数アイテム
	} else {
		if(element[0].checked != true && element[0].checked != false){

			// エレメントにフォーカスを当てる
			element[0].focus();

		// ターゲットにチェックがついいているものにフォーカスを当てる
		} else {
			for(var cnt = 0 ; cnt < element.length ; cnt++){
				if(element[cnt].checked == true){

					// エレメントにフォーカスを当てる
					element[cnt].focus();
					break;
				}
			}
		}
	}
}
/**
 * 改行文字での分割。
 *
 * @param value  元となる文字列
 * @return       置換を行った文字列
 */
function splitLine(value){
	if(value == null || value.length <= 0){
		return value;
	}

	value = replaceString(value, "\r\n", "\n");
	value = replaceString(value, "\r", "");
	var valueList = value.split("\n");

	return valueList;
}
/**
 * 文字列の変換。
 *
 * @param value  元となる文字列
 * @param oldStr 置き換えられる文字列
 * @param newDtr 新たに置き換える文字列
 * @return       置換を行った文字列
 */
function replaceString(value, oldStr, newStr){
	if(value                 == null ||
	   value.length          <= 0    ||
	   oldStr                == null ||
	   newStr                == null ||
	   value.indexOf(oldStr) < 0
	){
		return value;
	}

	var index    = 0;
	var offset   = 0;
	var newValue = "";

	while( value.length > offset ){
		index = value.indexOf(oldStr, offset);
		if(index >= 0){
			var tmpStr = value.substring(offset, index);
			newValue = newValue + tmpStr + newStr;
			offset = index + oldStr.length;
		} else {
			var tmpStr = value.substring(offset, value.length);
			newValue = newValue + tmpStr;
			break;
		}
	}

	return newValue;
}


//// doSubmit ////////////////////////////////////

/**
 * サブミットをを行います。
 * 必須チェックを行いパラメータが足りなかったときにはサブミットを行いません。
 *
 */
function submit_confirm(){

	// 押下されたボタン名の設定
	var flgSubmit = false;
	var elems = document.forms[0].elements;

	// 必須項目のチェック
	flgSubmit = checkFieldValue("tantou_name", "担当者名を入力してください。");
	if(flgSubmit == true){
		flgSubmit = checkFieldValue("address", "ご住所を入力してください。");
	}
	if(flgSubmit == true){
		flgSubmit = checkFieldValue("email", "連絡先e-mailを入力してください。");
	}
	if(flgSubmit == true){
		flgSubmit = checkMailAddressFormat("email", "メールアドレスの形式が間違っています。");
	}
	if(flgSubmit == true){
		flgSubmit = checkFieldValue("naiyou", "お問合せ内容を入力してください。");
	}

	if(flgSubmit == true){
		// サブミットを行う
		document.forms[0].action = "./mail.php";
		document.forms[0].submit();
	}
}
