﻿//////////////////////////////////////////
//
// 機能     JavaScript管理

//
//////////////////////////////////////////



<!--
//////////////////////////////////////////
// 機能     キー押下時イベントハンドラ。

// 引数
//          e : イベントオブジェクト

// 返却値   論理型

//          true    イベント実行

//          false   イベント取消

//////////////////////////////////////////
function keyDown(e) {
	e = window.event;
	if ( e.type == "keydown" ) {
		// Enterキー
		if ( event.keyCode == 13 ) {
			// 「submit」、「button」

			if ( e.srcElement.type != "submit" &&
				e.srcElement.type != "button" &&
				e.srcElement.type != "textarea" ) {
				return false;
			}
		}
	}
	return true;
}
// onkeydownイベント

document.onkeydown=keyDown;



//
// ダイアログ表示
//
//////////////////////////////////////////
// 機能		警告ダイアログ(Alert)の表示
// 引数
//			sErrMsg エラーメッセージ
//			sSolMsg 対応メッセージ
// 返却値	なし

//////////////////////////////////////////
function jsAlert(sErrMsg, sSolMsg) {
	var sMsg = sErrMsg;
	if (sSolMsg != null && sSolMsg.length > 0) {
		sMsg += "\n" + sSolMsg;
	}
	alert(sMsg);
}
//////////////////////////////////////////
// 機能		確認ダイアログ(Confirm)の表示
// 引数
//			sMsg  表示メッセージ
// 返却値	論値型  true   OK ボタン押下

//					false  キャンセルボタン押下

//////////////////////////////////////////
function jsConfirm(sMsg) {
	if (confirm(sMsg)) {
		isConfirm = true;
		return true;
	} else {
		return false;
	}
}

//
// ２重送信対応

//
//////////////////////////////////////////
// 機能		２重送信対応

// 引数
//			obj  フォームオブジェクト

// 返却値	論値型  true   サブミットする
//					false  サブミットしない

//////////////////////////////////////////
function jsOnSubmit(obj)
{
	if (obj.action.indexOf('https://') >= 0)
	{
		// 証明書の認証で「いいえ」を押される事があるので対応しない。

		return true;
	}

	if ( obj.style.cursor == 'wait' )
	{
		// カーソルが砂時計のときはサブミットしない

		return false;
	}
	// カーソルを砂時計にする
	try { obj.style.cursor = 'wait'; } catch (e) { ; }
	return true;
}

//
// 未入力チェック
//
//////////////////////////////////////////
// 機能		未入力チェック
// 引数
//			obj チェック対象Object
// 返却値 論理型

//			true 入力あり

//			false 未入力

//////////////////////////////////////////
function jsNullCheck(obj) {
	// 未入力チェック
	if (obj.value == null || obj.value == "") {
		return false;
	}
	return true;
}
//////////////////////////////////////////
// 機能		未入力チェック(メッセージ出力)
// 引数
//			sErrMsg エラーメッセージ
//			sSolMsg 対応メッセージ
//			obj チェック対象Object
// 返却値 論理型

//			true 入力あり

//			false 未入力

//////////////////////////////////////////
function jsNullCheckMsg(sErrMsg, sSolMsg, obj) {
	// 未入力チェック
	if (!jsNullCheck(obj)) {
		jsAlert(sErrMsg, sSolMsg);
		try { obj.focus(); } catch (e) { ; }
		return false;
	}
	return true;
}

//
// 文字列チェック
//
//////////////////////////////////////////
// 機能     入力文字数カウント

// 引数
//          obj チェック対象Object
// 返却値   整数型

//          文字数
//////////////////////////////////////////
function jsGetLength(obj) {
	var sLen = new String(obj.value);
	return sLen.length;
}
//////////////////////////////////////////
// 機能     入力文字数チェック
// 引数
//          obj チェック対象Object
//          nCnt 指定文字数
//          nOpt 比較方法  0 cntの文字数より少ない場合エラー
//                         1 cntの文字数と一致しない場合エラー
//                         2 cntの文字数より多い場合エラー
// 返却値   論理型

//          true    正常
//          false   エラー
//////////////////////////////////////////
function jsLengthCheck(obj, nCnt, nOpt) {
	var nLen = jsGetLength(obj);
	var bRetVal;
	if (nOpt == 0) {
		if (nLen < nCnt) {
			bRetVal = false;
		} else {
			bRetVal = true;
		}
	} else if (nOpt == 1) {
		if (nLen != nCnt) {
			bRetVal = false;
		} else {
			bRetVal = true;
		}
	} else if (nOpt == 2) {
		if (nLen > nCnt) {
			bRetVal = false;
		} else {
			bRetVal = true;
		}
	}
	return bRetVal;
}
//////////////////////////////////////////
// 機能     入力文字数チェック（メッセージ出力）

// 引数
//			sErrMsg エラーメッセージ
//			sSolMsg 対応メッセージ
//          obj   チェック対象Object
//          nCnt  指定文字数
//          nOpt  比較方法   0 cntの文字数より少ない場合エラー
//                           1 cntの文字数と一致しない場合エラー
//                           2 cntの文字数より多い場合エラー
// 返却値   論理型

//          true    正常
//          false   エラー
//////////////////////////////////////////
function jsLengthCheckMsg(sErrMsg, sSolMsg, obj, nCnt, nOpt) {
	if (!jsLengthCheck(obj, nCnt, nOpt)) {
		jsAlert(sErrMsg, sSolMsg);
		try { obj.focus(); } catch (e) { ; }
		return false;
	}
	return true;
}
//////////////////////////////////////////
// 機能     カナ入力チェック
// 引数
//          obj チェック対象Object
// 返却値   論理型

//          true    正常 : 全角カナのみ
//          false   エラー : 全角カナ以外を含む
// 備考     文字コードはSJIS限定

//          全角カナ＋横棒（ー）を許す

//////////////////////////////////////////
function jsKanaCheck(obj) {
	var sCheck = obj.value;
	var c;
	for (var i = 0; i < sCheck.length; i++) {
		c = sCheck.charAt(i);
		if ("ヶ" < c || c < "ァ") {
			if ((c != "ー")) {		// 横棒

				return false;
			}
		}
	}
	return true;
}
//////////////////////////////////////////
// 機能		カナ入力チェック(メッセージ出力)
// 引数
//			sErrMsg エラーメッセージ
//			sSolMsg 対応メッセージ
//			obj チェック対象Object
// 返却値 論理型

//			true 入力あり

//			false 未入力

//////////////////////////////////////////
function jsKanaCheckMsg(sErrMsg, sSolMsg, obj) {
	// 未入力チェック
	if (!jsKanaCheck(obj)) {
		jsAlert(sErrMsg, sSolMsg);
		try { obj.focus(); } catch (e) { ; }
		return false;
	}
	return true;
}
//////////////////////////////////////////
// 機能     字数チェック
// 引数
//          obj チェック対象Object
// 返却値   論理型

//          true    字数が適合している
//          false   字数が適合していない

// 備考     文字コードはSJIS限定

//////////////////////////////////////////
function jsJustLengthCheck(obj, lgh) {
	var nCheck = obj.value;
	if (nCheck.length != lgh) {
		return false;
	}
	return true;
}
//////////////////////////////////////////
// 機能     全角文字チェック
// 引数
//          obj チェック対象Object
// 返却値   論理型

//          true    正常(全角)
//          false   エラー(半角)
// http://www.ksknet.net/javascript/post_172.html
//////////////////////////////////////////
function jsZenkakuCheck2(obj)
{
	if (obj.match(/^(\w| |'|,|&)+$/)) {
        return false;
    }
    return true;
}
//////////////////////////////////////////
// 機能     全角チェック 
// 引数
//          strVal チェック対象Object
// 返却値   論理型

//          true :全角（機種依存文字を含まない）のみの場合

//          false :全角以外が含まれる場合

// http://web.itkankoku.com/bbs_read.php?menu=2&bbsid=5&uid=21
//////////////////////////////////////////
function jsZenkakuCheck3(strVal)
{
	var iCount;
	var sTemp;
	for (iCount=0;iCount < strVal.length;iCount++){
		sTemp = escape(strVal.charAt(iCount));
		if (sTemp.length < 4){
			return(false);
		}
		if (strVal.search(/[｡｢｣､･ｦｧｨｩｪｫｬｭｮｯｰｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾗﾘﾙﾚﾛﾜﾝﾞﾟ①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳ⅠⅡⅢⅣⅤ≡∫∮∑√⊥∠∟⊿∵∩∪ⅥⅦⅧⅨⅩ㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡㍻〝〟№㏍℡㊤㊥㊦㊧㊨㈱㈲㈹㍾㍽㍼]/g) != -1)
		{
			return(false);
		}
	}
	return(true);
}
//////////////////////////////////////////
// 機能     全角NG文字チェック
// 引数
//          obj チェック対象Object
// 返却値   論理型

//          true    正常(NG文字なし)
//          false   エラー(NG文字あり)
// http://www.tagindex.com/kakolog/q4bbs/401/540.html
//////////////////////////////////////////
function jsZenkakuNgCheck(obj)
{
	if (obj.match(/[、。，．：；？！゛゜´｀¨＾￣＿ヽヾゝゞ〃仝〆〇―‐／＼～∥｜…‥‘’“”（）〔〕［］｛｝〈〉《》「」『』【】＋－±×÷＝≠＜＞≦≧∞∴♂♀°′″℃￥＄￠￡％＃＆＊＠§☆★○●◎◇◆□■△▲▽▼※〒→←↑↓〓∈∋⊆⊇⊂⊃∪∩∧∨￢⇒⇔∀∃≒≪≫√∽∝∵∫∬Å‰♯♭♪†‡¶⌒∂∇━┃┏┛┗┓┣┫┳┻╋ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρστυφχψωАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя]/))
	{
        return false;
    }
    return true;
}
//////////////////////////////////////////
// 機能     全角英字チェック
// 引数
//          obj チェック対象Object
// 返却値   論理型

//          true    正常(英字なし)
//          false   エラー(英字あり)
//////////////////////////////////////////
function jsZenkakuEiziCheck(obj)
{
	if (obj.match(/[ＡＢＣＤＥＦＧＨＩＪＫＬＭＮＯＰＱＲＳＴＵＶＷＸＹＺａｂｃｄｅｆｇｈｉｊｋｌｍｎｏｐｑｒｓｔｕｖｗｘｙｚ１２３４５６７８９０]/))
	{
        return false;
    }
    return true;
}
//////////////////////////////////////////
// 機能     全角日本語チェック
// 引数
//          obj チェック対象Object
// 返却値   論理型

//          true    正常(全角)
//          false   エラー(半角)
//////////////////////////////////////////
function jsJapaneseCheck(obj)
{
	if (!jsZenkakuCheck2(obj.value) ||
		!jsZenkakuCheck3(obj.value) ||
		!jsZenkakuEiziCheck(obj.value) ||
		!jsZenkakuNgCheck(obj.value) )
	{
		return false;
	}
	return true;
}
//////////////////////////////////////////
// 機能		全角日本語チェック(メッセージ出力)
// 引数
//			sErrMsg エラーメッセージ
//			sSolMsg 対応メッセージ
//			obj チェック対象Object
// 返却値 論理型

//          true    正常(全角)
//          false   エラー(半角)
//////////////////////////////////////////
function jsJapaneseCheckMsg(sErrMsg, sSolMsg, obj) {
	// 未入力チェック
	if (!jsJapaneseCheck(obj)) {
		jsAlert(sErrMsg, sSolMsg);
		try { obj.focus(); } catch (e) { ; }
		return false;
	}
	return true;
}
//////////////////////////////////////////
// 機能		全角チェック(メッセージ出力)
// 引数
//			sErrMsg エラーメッセージ
//			sSolMsg 対応メッセージ
//			obj チェック対象Object
// 返却値 論理型

//          true    正常(全角)
//          false   エラー(半角)
//////////////////////////////////////////
function jsZenkakuCheckMsg(sErrMsg, sSolMsg, obj) {
	// 未入力チェック
	if (!jsZenkakuCheck2(obj.value) ||
		!jsZenkakuCheck3(obj.value) ||
		!jsZenkakuNgCheck(obj.value))
	{
		jsAlert(sErrMsg, sSolMsg);
		try { obj.focus(); } catch (e) { ; }
		return false;
	}
	return true;
}
//////////////////////////////////////////
// 機能     数字カンマチェック
// 引数
//          obj チェック対象Object
// 返却値   論理型

//          true    正常(英字なし)
//          false   エラー(英字あり)
//////////////////////////////////////////
function jsNumberKanmaCheck(sErrMsg, sSolMsg, obj)
{
	if (obj.value.match(/[^1234567890,]/))
	{
		jsAlert(sErrMsg, sSolMsg);
		try { obj.focus(); } catch (e) { ; }
		return false;
	}
	return true;
}
//////////////////////////////////////////
// 機能		全角ひらがなチェック
// 引数
//			sErrMsg エラーメッセージ
//			sSolMsg 対応メッセージ
//			obj チェック対象Object
// 返却値	論理型

//			true    正常(ひらがななし)
//			false   エラー(ひらがなあり)
//////////////////////////////////////////
function jsZenkakuHirakanaCheck(sErrMsg, sSolMsg, obj)
{
	if (obj.value.match(/[あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん]/))
	{
		jsAlert(sErrMsg, sSolMsg);
		try { obj.focus(); } catch (e) { ; }
		return false;
	}
	return true;
}
//////////////////////////////////////////
// 機能		不正文字チェック
// 引数
//			obj チェック対象Object
// 返却値	論理型

//			true	正常
//			false	不正文字あり

//////////////////////////////////////////
function jsIllegalCharacterCheck(obj) {
	return true;
}
//////////////////////////////////////////
// 機能		不正文字チェック(メッセージ出力)
// 引数
//			sErrMsg エラーメッセージ
//			sSolMsg 対応メッセージ
//			obj チェック対象Object
// 返却値	論理型

//			true	正常
//			false	不正文字あり

//////////////////////////////////////////
function jsIllegalCharacterCheckMsg(sErrMsg, sSolMsg, obj) {
	// 不正文字チェック
	if (!jsIllegalCharacterCheck(obj)) {
		jsAlert(sErrMsg, sSolMsg);
		try { obj.focus(); } catch (e) { ; }
		return false;
	}
	return true;
}
//////////////////////////////////////////
// 機能     メールアドレスチェック
// 引数
//          obj チェック対象Object
// 返却値   論理型

//          true    正常
//          false   エラー
//////////////////////////////////////////
function jsEmailAddressCheck(obj)
{
	// check = /.+@.+\..+/;
	check = /[!#-9A-~]+@+[a-z0-9]+.+[^.]$/i;
	if (!obj.value.match(check))
	{
        return false;
    }
    return true;
}
//////////////////////////////////////////
// 機能     チェック済みチェック（メッセージ出力）

// 引数
//			sErrMsg エラーメッセージ
//			sSolMsg 対応メッセージ
//          obj  チェック対象Object
// 返却値   論理型

//          true    チェックされている
//          false   チェックされていない

//////////////////////////////////////////
function jsEmailAddressCheckMsg(sErrMsg, sSolMsg, obj) {
	if (!jsEmailAddressCheck(obj)) {
		jsAlert(sErrMsg, sSolMsg);
		try { obj.focus(); } catch (e) { ; }
		return false;
	}
	return true;
}

//
// 英数字チェック
//
//////////////////////////////////////////
// 機能     数字チェック（簡易）

// 引数
//          obj チェック対象Object
// 返却値   論理型

//          true    数字のみ
//          false   数字以外の文字が存在する
// 備考     文字コードはSJIS限定

//////////////////////////////////////////
function jsSimpleNumberCheck(obj) {
	var nCheck = obj.value;
	for (var i = 0; i < nCheck.length; i++) {
		var c = nCheck.charAt(i);
		if (("0" <= c && c <= "9") == false) {
			return false;
		}
	}
	return true;
}
//////////////////////////////////////////
// 機能		数字チェック（簡易）(メッセージ出力)
// 引数
//			sErrMsg エラーメッセージ
//			sSolMsg 対応メッセージ
//			obj チェック対象Object
// 返却値 論理型

//			true 入力あり

//			false 未入力

//////////////////////////////////////////
function jsSimpleNumberCheckMsg(sErrMsg, sSolMsg, obj) {
	// 未入力チェック
	if (!jsSimpleNumberCheck(obj)) {
		jsAlert(sErrMsg, sSolMsg);
		try { obj.focus(); } catch (e) { ; }
		return false;
	}
	return true;
}
//////////////////////////////////////////
// 機能     英数字チェック
// 引数
//          obj チェック対象Object
// 返却値   論理型

//          true    英数字のみ
//          false   英数字以外の文字が存在する
// 備考     文字コードはSJIS限定

//////////////////////////////////////////
function jsEisuuCheck(obj) {
	var sCheck = obj.value;
	for (var i = 0; i < sCheck.length; i++) {
		var c = sCheck.charAt(i);
		if ((c < "0" || "z" < c) ||
			("9" < c && c < "A") ||
			("Z" < c && c < "a")) {
			return false;
		}
	}
	return true;
}
//////////////////////////////////////////
// 機能		英数字チェック(メッセージ出力)
// 引数
//			sErrMsg エラーメッセージ
//			sSolMsg 対応メッセージ
//			obj チェック対象Object
// 返却値 論理型

//			true 入力あり

//			false 未入力

//////////////////////////////////////////
function jsEisuuCheckMsg(sErrMsg, sSolMsg, obj)
{
	// 未入力チェック
	if (!jsEisuuCheck(obj))
	{
		jsAlert(sErrMsg, sSolMsg);
		try { obj.focus(); } catch (e) { ; }
		return false;
	}
    return true;
}
//////////////////////////////////////////
// 機能     英数字混在チェック
// 引数
//          obj チェック対象Object
// 返却値   論理型

//          true    英数字混在
//          false   英数字混在していない

// 備考     文字コードはSJIS限定

//////////////////////////////////////////
function jsEisuuMixedCheck(obj) {
	var checkFlag = false;
	var nCheck = obj.value;
	// 数字チェック
	for (var i = 0; i < nCheck.length; i++) {
		var c = nCheck.charAt(i);
		if (("0" <= c && c <= "9") == true) {
			checkFlag = true;
			break;
		}
	}
	if (checkFlag == false) {
		return false;
	}
	
	// 英字チェック
	checkFlag = false;
	for (var i = 0; i < nCheck.length; i++) {
		var c = nCheck.charAt(i);
		if (("A" <= c && c <= "Z") ||
			("a" <= c && c <= "z")) {
			checkFlag = true;
			break;
		}
	}
	if (checkFlag == false) {
		return false;
	}
	return true;
}
//////////////////////////////////////////
// 機能		英数字混在チェック(メッセージ出力)
// 引数
//			sErrMsg エラーメッセージ
//			sSolMsg 対応メッセージ
//			obj チェック対象Object
// 返却値 論理型

//			true 入力あり

//			false 未入力

// 備考     文字コードはSJIS限定

//////////////////////////////////////////
function jsEisuuMixedCheckMsg(sErrMsg, sSolMsg, obj)
{
	// 英数字混在チェック
	if (!jsEisuuMixedCheck(obj))
	{
		jsAlert(sErrMsg, sSolMsg);
		try { obj.focus(); } catch (e) { ; }
		return false;
	}
    return true;
}
//////////////////////////////////////////
// 機能     数字と字数チェック
// 引数
//          obj チェック対象Object
//			length 指定字数
// 返却値   論理型

//          true    数字のみで指定字数であった

//          false   数字以外の文字が含まれていたか或いは指定字数ではなかった

//////////////////////////////////////////
function jsNumberLengthCheck(obj, length) {
    // 数字チェック
    if (!jsSimpleNumberCheck(obj)) {
        return false;
    }
    // 指定字数チェック
    if (!jsJustLengthCheck(obj, length)) {
        return false;
    }
    return true;
}
//////////////////////////////////////////
// 機能		数字と字数チェック(メッセージ出力)
// 引数
//			sErrMsg エラーメッセージ
//			sSolMsg 対応メッセージ
//			obj チェック対象Object
//			length 指定字数
// 返却値 論理型

//			true 入力あり

//			false 未入力

//////////////////////////////////////////
function jsNumberLengthCheckMsg(sErrMsg, sSolMsg, obj, length) {
	// 未入力チェック
	if (!jsNumberLengthCheck(obj, length)) {
		jsAlert(sErrMsg, sSolMsg);
		try { obj.focus(); } catch (e) { ; }
		return false;
	}
	return true;
}

//
// 日付型チェック
//
//////////////////////////////////////////
// 機能     日付型チェック(YYYY/MM/DD形式またはYY/MM/DD形式)
// 引数
//          obj チェック対象Object
// 返却値   論理型

//          true    日付型
//          false   日付型以外

//////////////////////////////////////////
function jsDateCheck(obj) {
    var j;
    var sToCheck = jsDateConv(obj);
    var bIsNum = true;
    var dLimitMinyyyy = 1868;   // ４桁の場合の過去の年の制限(慶応、明治)
    var dLimitMaxyyyy = 2100;   // ４桁の場合の未来の年の制限(平成～)
    var dLimit2000 = 70;        // ２桁の場合の1900年代と2000年代の境目
    var SEPARATOR = "/" ;       // 年月日を区切るセパレータ

    // 未入力チェック
    if (!jsNullCheck(obj)) {
        return false;
    }
    // 数値及びセパレータチェック
    var nSepaCnt = 0;
    for (j = 0; j < sToCheck.length; j++) {
        var c = sToCheck.charAt(j);
        if (c < "0" || c > "9") {   // 数値以外

            if (c == SEPARATOR) {   // "/"文字判定

                nSepaCnt++;
            } else {
                return false;   // 数値"/"文字以外

            }
        }
    }
    if (nSepaCnt != 2) {         // "/"が2個以外

        return false;
    }
    var sStrArray = sToCheck.split(SEPARATOR);
    // 年のチェック
    if (sStrArray[0].length == 0) {
        return false;
    }
    var dYyyy = parseInt(sStrArray[0], 10);
    var dLeapyyyy;           // 計算用年
    // 年が指定範囲内かチェック
    if (sStrArray[0].length >= 4) {
        if ((dLimitMinyyyy > dYyyy) || (dLimitMaxyyyy < dYyyy)) {
            return false;
        }
        dLeapyyyy = dYyyy;
    }
    if (sStrArray[0].length == 3) {
        if (dYyyy > dLimit2000) {
            return false;
        } else {
            dLeapyyyy = dYyyy + 2000;
        }
    }
    if (sStrArray[0].length == 2) {
        if (dYyyy < dLimit2000) {
            dLeapyyyy = dYyyy + 2000;
        } else {
            dLeapyyyy = dYyyy + 1900;
        }
    }
    if (sStrArray[0].length == 1) {
        return false;       // 年が１桁の場合エラー
    }
    // 月の妥当性チェック
    var dMm = parseInt(sStrArray[1],10);
    if (sStrArray[1].length == 0) {
        return false;
    }
    if (dMm < 1 || dMm > 12) {    // 1月～12月の範囲内

        return false;
    }
    // 日の妥当性チェック
    var dDd = parseInt(sStrArray[2],10);
    if (sStrArray[2].length == 0) {
        return false;
    }
    if( dDd == 0 )
        return false;
    // 2月の場合うるう年の判定を行う
    if (dMm == 2) {
        // うるう年か?
        if (dLeapyyyy % 4 == 0 && dLeapyyyy % 100 != 0 ||dLeapyyyy % 400 == 0) {
            if (dDd > 29) {
                return false;
            }
        } else {
            if (dDd > 28) {
                return false;
            }
        }
    } else {
        // 4,6,9,11月の場合30を超えた数値を指定時エラー
        if (dMm == 4 || dMm == 6 || dMm == 9 || dMm == 11) {
            if (dDd > 30) {
                return false;
            }
        }
        // 1,3,5,7,8,10,12月の場合30を超えた数値を指定時エラー
        if (dMm == 1 || dMm == 3 || dMm == 5 || dMm == 7 || dMm == 8 ||
            dMm == 10 || dMm == 12) {
            if (dDd > 31) {
                return false;
            }
        }
    }
    return true;
}
//////////////////////////////////////////
// 機能     日付型チェック(YYYY/MM/DD形式またはYY/MM/DD形式)
//          メッセージ出力

// 引数
//			sErrMsg エラーメッセージ
//			sSolMsg 対応メッセージ
//          obj  チェック対象Object
// 返却値   論理型

//          true    日付型
//          false   日付型以外

//////////////////////////////////////////
function jsDateCheckMsg(sErrMsg, sSolMsg, obj) {
	if (!jsDateCheck(obj)) {
		jsAlert(sErrMsg, sSolMsg);
		try { obj.focus(); } catch (e) { ; }
		return false;
	}
	return true;
}
//////////////////////////////////////////
// 機能     日付型比較(YYYY/MM/DD形式またはYY/MM/DD形式)
// 引数
//          fromObj チェック対象Object
//          toObj   チェック対象Object
// 返却値   数値
//         -1   日付型以外指定

//          0   fromObj = toObj
//          1   fromObj > toObj
//          2   fromObj < toObj
//////////////////////////////////////////
function jsDateCompare(fromObj, toObj) {
    // 日付型かチェック
    if (!jsDateCheck(fromObj) || !jsDateCheck(toObj)) {
        return -1;
    }
    var SEPARATOR = "/";    // 年月日を区切るセパレータ
    var sFromVal = fromObj.value;
    var sToVal = toObj.value;
    var sFromArray = sFromVal.split(SEPARATOR);
    var sToArray = sToVal.split(SEPARATOR);
    // 年の大小チェック
    var dFromYYYY = parseInt(sFromArray[0], 10);
    var dToYYYY = parseInt(sToArray[0], 10);
    if (dFromYYYY > dToYYYY) {
        return 1;
    } else if (dFromYYYY < dToYYYY) {
        return 2;
    }
    // 月の大小チェック
    var dFromMM = parseInt(sFromArray[1], 10);
    var dToMM = parseInt(sToArray[1], 10);
    if (dFromMM > dToMM) {
        return 1;
    } else if (dFromMM < dToMM) {
        return 2;
    }
    // 日の大小チェック
    var dFromDD = parseInt(sFromArray[2], 10);
    var dToDD = parseInt(sToArray[2], 10);
    if (dFromDD > dToDD) {
        return 1;
    } else if (dFromDD < dToDD) {
        return 2;
    }
    // 同一日付

    return 0;
}
//////////////////////////////////////////
// 機能     日付をYYYY/MM/DD型に変換する。

// 引数
//          obj チェック対象Object
// 返却値   YYYY/MM/DD型日付

//////////////////////////////////////////
function jsDateConv(obj){
    var sWork = String( obj.value );
    var BASE_YEAR = 85;
    // NULLの場合はチェックしない

    if( !jsNullCheck(obj) )
        return "";
    var resStr = String( "" );
    if( sWork == "" || sWork == null )
        return "";
    if( sWork.length >= 10 ) {
        //（ YYYY-MM-DD hh:mm:ss.msm ）

        //（ YYYY/MM/DD hh:mm:ss.msm ）

        //（ YYYY-MM-DD ）

        //（ YYYY/MM/DD ）

        if( sWork.charAt(4) == '/' || sWork.charAt(4) == '-' ) {
            resStr =    sWork.substr( 0, 4 ) + "/"
                    +   sWork.substr( 5, 2 ) + "/"
                    +   sWork.substr( 8, 2 );
        } else {
        //（ YYYYMMDDhhmmssmsm ）

            resStr =    sWork.substr( 0, 4 ) + "/"
                    +   sWork.substr( 4, 2 ) + "/"
                    +   sWork.substr( 6, 2 );
        }
    } else if( sWork.length == 9 ) {
        // ( YYYY-M-DD )
        // ( YYYY-MM-D )
        if( ( sWork.charAt(4) == '/' || sWork.charAt(4) == '-' ) &&
            ( sWork.charAt(6) == '/' || sWork.charAt(6) == '-' ) ) {
            resStr =    sWork.substr( 0, 4 ) + "/0"
                    +   sWork.substr( 5, 1 ) + "/"
                    +   sWork.substr( 7, 2 );
        }
        if( ( sWork.charAt(4) == '/' || sWork.charAt(4) == '-' ) &&
            ( sWork.charAt(7) == '/' || sWork.charAt(7) == '-' ) ) {
            resStr =    sWork.substr( 0, 4 ) + "/"
                    +   sWork.substr( 5, 2 ) + "/0"
                    +   sWork.substr( 8, 1 );
        }
    } else if( sWork.length == 8 ) {
        // ( YYYY/M/D )
        if( ( sWork.charAt(4) == '/' || sWork.charAt(4) == '-' ) &&
            ( sWork.charAt(6) == '/' || sWork.charAt(6) == '-' ) ) {
            resStr =    sWork.substr( 0, 4 ) + "/0"
                    +   sWork.substr( 5, 1 ) + "/0"
                    +   sWork.substr( 7, 1 );
        //（ YY-MM-DD ）

        //（ YY/MM/DD ）

        } else if( sWork.charAt(2) == '/' || sWork.charAt(2) == '-' ) {
            var bufYY = Number( sWork.substr( 0, 2 ) );
            if( bufYY >= BASE_YEAR ) {
                resStr =    "19"
                        +   sWork.substr( 0, 2 ) + "/"
                        +   sWork.substr( 3, 2 ) + "/"
                        +   sWork.substr( 6, 2 );
            } else {
                resStr =    "20"
                        +   sWork.substr( 0, 2 ) + "/"
                        +   sWork.substr( 3, 2 ) + "/"
                        +   sWork.substr( 6, 2 );
            }
        } else {
        //（ YYYYMMDD ）

            resStr =    sWork.substr( 0, 4 ) + "/"
                    +   sWork.substr( 4, 2 ) + "/"
                    +   sWork.substr( 6, 2 );
        }
    } else if( sWork.length == 7 ) {
        //（ YYYY-MM ）

        //（ YYYY/MM ）

        // ( YY/M/DD )
        if( ( sWork.charAt(2) == '/' || sWork.charAt(2) == '-' ) &&
            ( sWork.charAt(4) == '/' || sWork.charAt(4) == '-' ) ) {
            var bufYY = Number( sWork.substr( 0, 2 ) );
            if( bufYY >= BASE_YEAR ) {
                resStr =    "19"
                        +   sWork.substr( 0, 2 ) + "/0"
                        +   sWork.substr( 3, 1 ) + "/"
                        +   sWork.substr( 5, 2 );
            } else {
                resStr =    "20"
                        +   sWork.substr( 0, 2 ) + "/0"
                        +   sWork.substr( 3, 1 ) + "/"
                        +   sWork.substr( 5, 2 );
            }
        } else {
            resStr =    sWork.substr( 0, 4 ) + "/"
                    +   sWork.substr( 5, 2 );
        }
    } else if( sWork.length == 6 ) {
        var bufFirst    = Number( sWork.substr( 0, 4 ) );
        var bufSecond   = Number( sWork.substr( 4, 2 ) );
        // ( YY/M/D )
        if( ( sWork.charAt(2) == '/' || sWork.charAt(2) == '-' ) &&
            ( sWork.charAt(4) == '/' || sWork.charAt(4) == '-' ) ) {
            var bufYY = Number( sWork.substr( 0, 2 ) );
            if( bufYY >= BASE_YEAR ) {
                resStr =    "19"
                        +   sWork.substr( 0, 2 ) + "/0"
                        +   sWork.substr( 3, 1 ) + "/0"
                        +   sWork.substr( 5, 1 );
            } else {
                resStr =    "20"
                        +   sWork.substr( 0, 2 ) + "/0"
                        +   sWork.substr( 3, 1 ) + "/0"
                        +   sWork.substr( 5, 1 );
            }
        // ( YYYY/M )
        } else if( sWork.charAt(4) == '/' || sWork.charAt(4) == '-' ) {
            resStr =    sWork.substr( 0, 4 ) + "/0"
                    +   sWork.substr( 5, 1 );
        //（ YYYYMM ）

        } else if( 1900 <= bufFirst && bufFirst < 3000 && 1 <= bufSecond && bufSecond <= 12 ) {
            resStr =    sWork.substr( 0, 4 ) + "/"
                    +   sWork.substr( 4, 2 );
        } else {
        //（ YYMMDD ）

            var bufYY = Number( sWork.substr( 0, 2 ) );
            if( bufYY >= BASE_YEAR ) {
                resStr =    "19"
                        +   sWork.substr( 0, 2 ) + "/"
                        +   sWork.substr( 2, 2 ) + "/"
                        +   sWork.substr( 4, 2 );
            } else {
                resStr =    "20"
                        +   sWork.substr( 0, 2 ) + "/"
                        +   sWork.substr( 2, 2 ) + "/"
                        +   sWork.substr( 4, 2 );
            }
        }
    } else if( sWork.length == 5 ) {
        //（ YY-MM ）

        //（ YY/MM ）

        var bufYY = Number( sWork.substr( 0, 2 ) );
        if( bufYY >= BASE_YEAR ) {
            resStr =    "19"
                    +   sWork.substr( 0, 2 ) + "/"
                    +   sWork.substr( 3, 2 );
        } else {
            resStr =    "20"
                    +   sWork.substr( 0, 2 ) + "/"
                    +   sWork.substr( 3, 2 );
        }
    } else if( sWork.length == 4 ) {
        var bufYY = Number( sWork.substr( 0, 2 ) );
        // ( YY/M )
        if( sWork.charAt(2) == '/' || sWork.charAt(2) == '-' )
            sWork = sWork.substr( 0, 2 ) + "0" + sWork.substr( 3, 1 );
        //（ YYMM ）

        if( bufYY >= BASE_YEAR ) {
            resStr =    "19"
                    +   sWork.substr( 0, 2 ) + "/"
                    +   sWork.substr( 2, 2 );
        } else {
            resStr =    "20"
                    +   sWork.substr( 0, 2 ) + "/"
                    +   sWork.substr( 2, 2 );
        }
    }
	return resStr;
}
//////////////////////////////////////////
// 機能		元号を西暦に変換
// 引数
//          obj_era チェック対象Object
//          obj_year チェック対象Object
// 返却値   西暦
//////////////////////////////////////////
function jsEraNameConv(obj_era, obj_year) {
	
	var ad = 0;		// 西暦
	var base = 0;	// 年
	
	if ((obj_era.value == null || obj_era.value == "") ||
		(obj_year.value == null || obj_year.value == "")) {
		return 0;
	}
	
	var in_era = obj_era.value;
	var in_year = obj_year.value;
	
	output = 1000;
	switch (in_era) {
		// 明治
		case '4' :
			base = 1867;
			if (in_year < 1 || in_year > 45) output = 0;
			break;
		// 大正
		case '3' :
			base = 1911;
			if (in_year < 1 || in_year > 15) output = 0;
			break;
		// 昭和

		case '2' :
			base = 1925;
			if (in_year < 1 || in_year > 64) output = 0;
			break;
		// 平成

		case '1' :
			base = 1988;
			if (in_year < 1 ) output = 0;
			break;
		default:
			break;
	}
	
	if (output != 0) {
		ad = (base + eval(in_year))
	};
	return ad;
}

//
// 選択チェック
//
//////////////////////////////////////////
// 機能     選択項目チェック
// 引数
//          obj チェック対象Object
// 返却値   論理型

//          true    チェックされている
//          false   チェックされていない

//////////////////////////////////////////
function jsSelCheck(obj) {
	for (var i = 0; i < obj.length; i++) {
		if (obj[i].selected) {
			if (obj[i].value == null || obj[i].value == "") {
				return false;
			}
		}
	}
	return true;
}
//////////////////////////////////////////
// 機能     選択項目チェック（メッセージ出力）

// 引数
//          sItem エラー対象名の文字列
//          sMsg  エラーメッセージの文字列
//          sCode エラーコードの文字列
//          obj  チェック対象Object
// 返却値   論理型

//          true    チェックされている
//          false   チェックされていない

//////////////////////////////////////////
function jsSelCheckMsg(sErrMsg, sSolMsg, obj) {
	// 未入力チェック
	if (!jsSelCheck(obj)) {
		jsAlert(sErrMsg, sSolMsg);
		try { obj.focus(); } catch (e) { ; }
		return false;
	}
}
//////////////////////////////////////////
// 機能     コンボボックス(SELECTタグ)で何番目の項目が選択されているか

//          返す
// 引数
//          obj1    コンボボックス(SELECTタグのオブジェクト)
// 返却値   文字型
//              SELECTタグ中で選択されている項目の位置
//////////////////////////////////////////
function jsGetSelNo(obj) {
	var nSelectNo = obj.selectedIndex;
	return nSelectNo;
}
//////////////////////////////////////////
// 機能     SELECT タグで選択されている値を取り出す

// 引数
//          obj 対象Object
// 返却値   文字型
//              SELECTタグ中で選択されている値
//////////////////////////////////////////
function jsGetSelValue(obj) {
	var nSelectNo = jsGetSelNo(obj);
	return obj[nSelectNo].value;
}
//////////////////////////////////////////
// 機能     コンボボックス(SELECTタグ)で表示されている値を返す
// 引数
//          obj1    コンボボックス(SELECTタグのオブジェクト)
// 返却値   文字型
//              SELECTタグ中で表示されている項目の文字列
//////////////////////////////////////////
function jsGetSelName(obj) {
	var nSelectNo = jsGetSelNo(obj);
	return obj[nSelectNo].text;
}
//////////////////////////////////////////
// 機能     チェック済みチェック
// 引数
//          obj チェック対象Object
// 返却値   論理型

//          true    チェックされている
//          false   チェックされていない

//////////////////////////////////////////
function jsCheckedCheck(obj) {
    // チェック項目が一つの場合に対応

    if (!obj.length) {
        if (obj.checked) {
            return true;
        } else {
            return false;
        }
    }
    for (var i = 0; i < obj.length; i++) {
        if (obj[i].checked) {
            return true;
        }
    }
    return false;
}
//////////////////////////////////////////
// 機能     チェック済みチェック（メッセージ出力）

// 引数
//			sErrMsg エラーメッセージ
//			sSolMsg 対応メッセージ
//          obj  チェック対象Object
// 返却値   論理型

//          true    チェックされている
//          false   チェックされていない

//////////////////////////////////////////
function jsCheckedCheckMsg(sErrMsg, sSolMsg, obj) {
	if (!jsCheckedCheck(obj)) {
		jsAlert(sErrMsg, sSolMsg);
		try { obj.focus(); } catch (e) { ; }
		return false;
	}
	return true;
}

//////////////////////////////////////////
// 機能		お名前入力チェック
// 引数
// 返却値	なし

//////////////////////////////////////////
function jsCheckName(obj) {
	if (!jsNullCheck(obj))
	{
		jsAlert(getFormatErrorMessage("0", "お名前"), '');
		try { obj.focus(); } catch (e) { ; }
		return false;
	}
	if (!jsJapaneseCheck(obj))
	{
		jsAlert(getFormatErrorMessage("1", "お名前"), '');
		try { obj.focus(); } catch (e) { ; }
		return false;
	}
	return true;
}
//////////////////////////////////////////
// 機能		Eメール入力チェック
// 引数
// 返却値	なし

//////////////////////////////////////////
function jsCheckEMail(obj) {
	if (!jsNullCheck(obj))
	{
		jsAlert(getFormatErrorMessage("0", "Eメールアドレス"), '');
		try { obj.focus(); } catch (e) { ; }
		return false;
	}
	if (!jsEmailAddressCheck(obj))
	{
		jsAlert(getFormatErrorMessage("1", "Eメールアドレス"), '');
		try { obj.focus(); } catch (e) { ; }
		return false;
	}
	return true;
}
//////////////////////////////////////////
// 機能		電話番号入力チェック
// 引数
// 返却値	なし

//////////////////////////////////////////
function jsCheckTel(obj) {
	if (!jsNullCheck(obj))
	{
		jsAlert(getFormatErrorMessage("0", "電話番号"), '');
		try { obj.focus(); } catch (e) { ; }
		return false;
	}
	if (!jsCheckNum(obj, false, false))
	{
		jsAlert(getFormatErrorMessage("1", "電話番号"), '');
		try { obj.focus(); } catch (e) { ; }
		return false;
	}
	return true;
}

//
// 数値項目チェック
//
//////////////////////////////////////////
// 機能     数値項目チェック
// 引数
//          obj チェック対象オブジェクト

//          bMinus   負の値の可否 true:許す false:許さない

//          bDecimal 少数の可否   true:許す false:許さない

// 返却値   論理型

//          true    正常
//          false   エラー
//////////////////////////////////////////
function jsCheckNum(obj, bMinus, bDecimal) {
    var sCheck = obj.value;
    var nMinusCnt = 0;   // "-"符号の数
    var nMinusPos = 0;   // "-"符号の位置
    var nDotCnt = 0;     // 少数点の数
    // 未入力チェック
    if (!jsNullCheck(obj)) {
        return true;
    }
    for (var i = 0; i < sCheck.length; i++) {
        var c = sCheck.charAt(i);
        if (c < "0" || c > "9") {   // 数値以外

            if (bMinus && c == "-") {
                nMinusCnt++;
            } else if (bDecimal && c == ".") {
                nDotCnt++;
            } else {
                return false;
            }
        }
    }
    // マイナス符号が複数
    if (nMinusCnt > 1) {
        return false;
    }
    // マイナス符号が先頭以外

    if (nMinusPos > 0) {
        return false;
    }
    // 少数点が複数
    if (nDotCnt > 1) {
        return false;
    }

    // 正常
    return true;
}
//////////////////////////////////////////
// 機能     数値項目チェック（メッセージ出力）

// 引数
//			sErrMsg エラーメッセージ
//			sSolMsg 対応メッセージ
//          obj  チェック対象オブジェクト

//          bMinus   負の値の可否 true:許す false:許さない

//          bDecimal 少数の可否   true:許す false:許さない

// 返却値   論理型

//          true    正常
//          false   エラー
//////////////////////////////////////////
function jsCheckNumMsg(sErrMsg, sSolMsg, obj, bMinus, bDecimal) {
    if (!jsCheckNum(obj, bMinus, bDecimal)) {
        jsAlert(sErrMsg, sSolMsg);
        try {
	        obj.focus();
        } catch (e) { ; }
        return false;
    }
    return true;
}
//////////////////////////////////////////
// 機能     数値範囲チェック
// 引数
//          obj チェック対象オブジェクト

//          nMin 最小値
//          nMax 最大値
//          bDecimal 少数の可否   true:許す false:許さない

// 返却値   論理型

//          true    正常
//          false   エラー
//////////////////////////////////////////
function jsCheckNumRange(obj, nMin, nMax, bDecimal) {
    // パラメータの整合性チェック
    if (nMin > nMax) {
        return false;
    }
    // 数値項目チェック
    if (!jsCheckNum(obj, true, bDecimal)) {
        return false;
    }
    var sCheck = obj.value;
    // 最小値未満
    if (bDecimal) {
        if (parseFloat(sCheck) < nMin) {
            return false;
        }
    } else {
        if (parseInt(sCheck, 10) < nMin) {
            return false;
        }
    }
    // 最大値超過
    if (bDecimal) {
        if (parseFloat(sCheck) > nMax) {
            return false;
        }
    } else {
        if (parseInt(sCheck, 10) > nMax) {
            return false;
        }
    }
    return true;
}
//////////////////////////////////////////
// 機能     数値範囲チェック（メッセージ出力）

// 引数
//			sErrMsg エラーメッセージ
//			sSolMsg 対応メッセージ
//          obj     チェック対象オブジェクト

//          nMin    最小値
//          nMax    最大値
//          bDecimal 少数の可否   true:許す false:許さない

// 返却値   論理型

//          true    正常
//          false   エラー
//////////////////////////////////////////
function jsCheckNumRangeMsg(sErrMsg, sSolMsg, obj, nMin, nMax, bDecimal) {
    if (!jsCheckNumRange(obj, nMin, nMax, bDecimal)) {
        jsAlert(sErrMsg, sSolMsg);
        try {
	        obj.focus();
        } catch (e) { ; }
        return false;
    }
    return true;
}
//////////////////////////////////////////
// 機能     数値項目チェック桁数指定

// 引数
//          obj チェック対象オブジェクト

//          nIntdef  桁数
//          nDecdef  少数部の桁数
//          bMinus   負の値の可否 true:許す false:許さない

// 返却値   論理型

//          true    正常
//          false   エラー
//////////////////////////////////////////
function jsCheckNumDigit(obj, nIntdef, nDecdef, bMinus) {
    var sToCheck = String(obj.value);    // オブジェクトのテキスト

    var bIsDec = false;                  // 小数点チェック
    var bIsMinus = false;                // マイナスチェック
    var nMaxint;
    var nMaxdec;
    var nIsDecPos;
    var nIsMinusPos;
    var nIsDecCnt = 0;           // 小数点の数
    var nIsMinusCnt = 0;         // マイナスの数
    // 桁数算出
    nMaxint = nIntdef - nDecdef;
    nMaxdec = nDecdef;
    // 未入力チェック
    if (!jsNullCheck(obj)) {
        return false;
    }
    // カンマを取ります

    var sWork = new String( obj.value );
    for( ;sWork.indexOf(',')!=-1; )
        sWork = sWork.replace( ',', "" );
    sToCheck = sWork;
    // 数値のチェック
    for (i = 0; i < sToCheck.length; i++) {
        var c = sToCheck.charAt(i);
        // 数値以外の文字か?
        if (c < "0" ||  c > "9")  {
            if (c == ".") {     // 少数点
                bIsDec = true;
                nIsDecCnt++;
            } else if (c == "-") {  // マイナス符号
                nIsMinusPos = i;
                bIsMinus = true;
                nIsMinusCnt++;
            } else {
                return false;   // 数値以外

            }
        }
    }
    // フォーマットチェック
    if (nIsDecCnt > 1) {         // 少数点が二つ以上

        return false;
    }
    if (bIsDec && sToCheck.length == 1) { // 小数点のみ
        return false;
    }
    if (nIsMinusCnt > 1) {           // マイナスが２つ以上

        return false;
    }
    if (bIsMinus && sToCheck.length == 1) {   // マイナスのみ
        return false;
    }
    if (bIsMinus && bIsDec && sToCheck.length == 2) {  // マイナスと小数点のみ
        return false;
    }
    // マイナスチェック
    if (bIsMinus) {
        if (!bMinus) {     // マイナスを許さないときマイナスは不可
            return false;
        }
        if (bMinus && nIsMinusPos != 0) {   // マイナスは先頭のみ
            return false;
        }
    }
    // 小数点チェック
    if (bIsDec && nDecdef == 0) {
        return false;       // 少数点以下0桁で小数点があればエラー
    }
    // 整数部長さチェック
    var nIntLen = parseInt(Math.abs(sToCheck), 10) + "";  // intLenを文字列として扱うため、""を連結する

    if (nMaxint < nIntLen.length - 1) {
        return false;
    }
    // 小数部長さチェック
    if (bIsDec) {
        var nDecLen = sToCheck.length - sToCheck.lastIndexOf(".") - 1;
        if (nMaxdec < nDecLen) {
            return false;
        }
    }
    return true;
}
//////////////////////////////////////////
// 機能     数値項目チェック桁数指定(メッセージ出力）

// 引数
//			sErrMsg エラーメッセージ
//			sSolMsg 対応メッセージ
//			obj チェック対象オブジェクト

//			nIntdef 桁数
//			bDecdef 少数部の桁数
//			bMinus 負の値の可否 true:許す false:許さない

// 返却値	論理型

//			true 指定文字数内

//			false 指定文字数超過
//////////////////////////////////////////
function jsCheckNumDigitMsg(sErrMsg, sSolMsg, obj, nIntdef, bDecdef, bMinus) {
	if (jsCheckNumDigit(obj, nIntdef, bDecdef, bMinus) == false) {
		jsAlert(sErrMsg, sSolMsg);
		return false;
	}
	return true;
}


//////////////////////////////////////////
// 機能     入力バイト数を取得

// 引数
//          obj 入力Object
// 返却値   整数型

//          バイト数
// 備考     文字コードはシフトJIS限定

//////////////////////////////////////////
function jsGetByte(obj) {
    var sStr = String(obj.value);
    var nByte = 0;
    for (var i = 0; i < sStr.length; i++) {
        var c = sStr.charCodeAt(i);
        // Shift_JIS: 0x0 ～ 0x80, 0xa0  , 0xa1   ～ 0xdf  ,
        // 0xfd   ～ 0xff
        // Unicode  : 0x0 ～ 0x80, 0xf8f0, 0xff61 ～ 0xff9f,
        // 0xf8f1 ～ 0xf8f3
        if ((c >= 0x0 && c < 0x81) || (c == 0xf8f0) ||
            (c >= 0xff61 && c < 0xffa0) || (c >= 0xf8f1 && c < 0xf8f4)) {
            nByte += 1;
        } else {
            nByte += 2;
        }
    }
    return nByte;
}
//////////////////////////////////////////
// 機能     入力バイト数をチェック
// 引数
//          obj チェック対象Object
//          nChkbyte バイト数
// 返却値   論理型

//          true    正常(指定バイト数以内）

//          false   エラー（指定バイト数超過）

// 備考     文字コードはシフトJIS限定

//////////////////////////////////////////
function jsByteCheck(obj, nChkbyte) {
    if (nChkbyte < jsGetByte(obj)) {
        return false;
    } else {
        return true;
    }
}
//////////////////////////////////////////
// 機能     入力バイト数をチェック（メッセージ出力）

// 引数
//			sErrMsg エラーメッセージ
//			sSolMsg 対応メッセージ
//          obj      チェック対象Object
//          nChkbyte バイト数
// 返却値   論理型

//          true    正常(指定バイト数以内）

//          false   エラー（指定バイト数超過）

// 備考     文字コードはシフトJIS限定

//////////////////////////////////////////
function jsByteCheckMsg(sErrMsg, sSolMsg, obj, nChkbyte) {
    if (!jsByteCheck(obj, nChkbyte)) {
        jsAlert(sErrMsg, sSolMsg);
        try {
	        obj.focus();
        } catch (e) { ; }
        return false;
    }
    return true;
}



//////////////////////////////////////////
// 機能		ログインチェック
// 引数
//			frm フォームObject
//			objUserId ユーザIDObject
//			objPassword パスワードObject
// 返却値	論理型

//			true	正常
//			false	エラー
//////////////////////////////////////////
function jsLoginCheck(frm, objUserId, objPassword) {
	// ユーザID
	if (jsNullCheckMsg(getFormatErrorMessage("0", "ユーザID"), '', objUserId) == false) {
		return false;
	}
	else
	if (jsEisuuCheckMsg(getFormatErrorMessage("1", "ユーザID"), '', objUserId) == false) {
		return false;
	}
	
	// パスワード

	if (jsNullCheckMsg(getFormatErrorMessage("0", "パスワード"), '', objPassword) == false) {
		return false;
	}
	else
	if (jsEisuuCheckMsg(getFormatErrorMessage("1", "パスワード"), '', objPassword) == false) {
		return false;
	}
	
	// privateLoginFunction実行

	try {
		if (privateLoginFunction() == false) {
			return false;
		}
	} catch (e) { ; }
	
	return true;
}
//////////////////////////////////////////
// 機能		ログアウトチェック
// 引数
//			frm フォームObject
//			nextPage 次ページ
// 返却値	論理型

//			true	正常
//			false	エラー
//////////////////////////////////////////
function jsLogoutCheck(frm, nextPage) {
	if (jsConfirm(getConfirmationMessage(0)) == false) {
		return false;
	}
	frm.action = nextPage;
}
//////////////////////////////////////////
// 機能		マイコース登録チェック
// 引数
//			frm フォームObject
//			loginFlag ログインフラグ
//			objCourseCd コースコード

//			objMembershipType 会員種別
// 返却値	論理型

//			true	正常
//			false	エラー
//////////////////////////////////////////
function jsMyCourseEntryCheck(frm, loginFlag, objCourseCd, objMembershipType) {
	
	// 初期化

	frm.action = "";
	frm.obj_course_cd.value = "";
	frm.obj_membership_type.value = "";
	
	// 未ログインは、『マイコースの説明』画面へ
	if (loginFlag == "0") {
		frm.action = "http://www.sakuragolf.co.jp/mycourse_info.php";
		return true;
	}
	
	if (objCourseCd == "" ||  objCourseCd.length != 5) {
		return false;
	}
	if (jsConfirm(getConfirmationMessage(1)) == false) {
		return false;
	}
	
	frm.obj_course_cd.value = objCourseCd;
	frm.obj_membership_type.value = objMembershipType;
}
//////////////////////////////////////////
// 機能		お名前チェック
// 引数
//			obj チェック対象Object
//			word 置換文字列
// 返却値	論理型

//			true	正常
//			false	エラー
//////////////////////////////////////////
function jsCommonNameKanjiCheckMsg(obj, word) {
	
	if (jsNullCheckMsg(getFormatErrorMessage("0", word), '', obj) == false) {
		return false;
	} else if (jsJapaneseCheckMsg(getFormatErrorMessage("1", word), '', obj) == false) {
		return false;
	}
	return true;
}
//////////////////////////////////////////
// 機能		Eメールチェック
// 引数
//			obj チェック対象Object
//			word 置換文字列
// 返却値	論理型

//			true	正常
//			false	エラー
//////////////////////////////////////////
function jsCommonEmailAddressCheckMsg(obj, word) {
	
	if (jsNullCheckMsg(getFormatErrorMessage("0", word), '', obj) == false) {
		return false;
	} else if (jsEmailAddressCheckMsg(getFormatErrorMessage("1", word), '', obj) == false) {
		return false;
	}
	return true;
}
//////////////////////////////////////////
// 機能		郵便番号チェック
// 引数
//			obj 設定対象Object
//			obj1 チェック対象Object
//			obj2 チェック対象Object
//			word 置換文字列
// 返却値	論理型

//			true	正常
//			false	エラー
//////////////////////////////////////////
function jsCommonZipCodeCheckMsg(obj, obj1, obj2, word) {
	
	// 郵便番号1
	if (jsNullCheck(obj1) == false) {
		if (jsNullCheck(obj2) == true) {
			jsNullCheckMsg(getFormatErrorMessage("1", word), '', obj1);
			return false;
		}
	} else if (jsSimpleNumberCheckMsg(getFormatErrorMessage("1", word), '', obj1) == false) {
		return false;
	}
	// 郵便番号2
	if (jsNullCheck(obj2) == false) {
		if (jsNullCheck(obj1) == true) {
			jsNullCheckMsg(getFormatErrorMessage("1", word), '', obj2);
			return false;
		}
	} else if (jsSimpleNumberCheckMsg(getFormatErrorMessage("1", word), '', obj2) == false) {
		return false;
	}
	if (obj1.value != "" && obj2.value != "") {
		obj.value = obj1.value + "-" + obj2.value;
	}
	return true;
}
//////////////////////////////////////////
// 機能		住所チェック
// 引数
//			obj1 チェック対象Object
//			obj2 チェック対象Object
//			obj3 チェック対象Object
//			word 置換文字列
// 返却値	論理型

//			true	正常
//			false	エラー
//////////////////////////////////////////
function jsCommonAddressCheckMsg(obj1, obj2, obj3, word) {
	
	// 住所1
	if (jsIllegalCharacterCheckMsg(getFormatErrorMessage("1", word), '', obj1) == false) {
		return false;
	}
	// 住所2
	if (jsIllegalCharacterCheckMsg(getFormatErrorMessage("1", word), '', obj2) == false) {
		return false;
	}
	// 住所3
	if (jsIllegalCharacterCheckMsg(getFormatErrorMessage("1", word), '', obj3) == false) {
		return false;
	}
	return true;
}
//////////////////////////////////////////
// 機能		TELチェック（FAX・携帯番号）

// 引数
//			obj 設定対象Object
//			obj1 チェック対象Object
//			obj2 チェック対象Object
//			obj3 チェック対象Object
//			word 置換文字列
// 返却値	論理型

//			true	正常
//			false	エラー
//////////////////////////////////////////
function jsCommonPhoneCheckMsg(obj, obj1, obj2, obj3, word) {
	
	// PHONE1
	if (jsNullCheck(obj1) == false) {
		if (jsNullCheck(obj2) == true ||
			jsNullCheck(obj3) == true) {
			jsNullCheckMsg(getFormatErrorMessage("1", word), '', obj1);
			return false;
		}
	} else if (jsSimpleNumberCheckMsg(getFormatErrorMessage("1", word), '', obj1) == false) {
		return false;
	}
	// PHONE2
	if (jsNullCheck(obj2) == false) {
		if (jsNullCheck(obj1) == true ||
			jsNullCheck(obj3) == true) {
			jsNullCheckMsg(getFormatErrorMessage("1", word), '', obj2);
			return false;
		}
	} else if (jsSimpleNumberCheckMsg(getFormatErrorMessage("1", word), '', obj2) == false) {
		return false;
	}
	// PHONE3
	if (jsNullCheck(obj3) == false) {
		if (jsNullCheck(obj1) == true ||
			jsNullCheck(obj2) == true) {
			jsNullCheckMsg(getFormatErrorMessage("1", word), '', obj3);
			return false;
		}
	} else if (jsSimpleNumberCheckMsg(getFormatErrorMessage("1", word), '', obj3) == false) {
		return false;
	}
	if (obj1.value != "" && obj2.value != "" && obj3.value != "") {
		obj.value = obj1.value + "-" + obj2.value + "-" + obj3.value;
	}
	return true;
}
//////////////////////////////////////////
// 機能		配列に値があるかチェックする
//			needle で haystack を検索し、配列にそれがあった場合に TRUE、それ以外の場合は、FALSE を返します。

// 引数
//			needle		配列
//			haystack	値
// 返却値	論理型

//			true	正常
//			false	エラー
//////////////////////////////////////////
function jsInArray(needle, haystack)
{
	for (i = 0; i < needle.length; i++) {
		if (needle[i] == haystack)
		{
			return true;
		}
	}
	return false;
}

// 配列の重複チェック
function jsRepetitionArray(needle)
{
	tempArray = new Array();
	for (i = 0; i < needle.length; i++) {
		if (jsInArray(tempArray, needle[i]))
		{
			return false;
		}
		tempArray[i] = needle[i]
	}
	return true;
}
//-->

