/* 
 * 入力チェックライブラリ
 * 
 * (C)SmartRams Co.,Ltd. 2008 All Rights Reserved．
 * 
 * 本技術情報には当社の機密情報が含まれておりますので、当社の
 * 書面による承諾がなく第３者に開示することはできません。
 * また、当社の承諾を得た場合であっても、本技術情報は外国為替
 * 及び外国貿易管理法に定める特定技術に該当するため、非居住者
 * に提供する場合には、同法に基づく許可を要することがあります。
 *                                          有限会社 スマート・ラムズ
 *-------------------------------------------------------------------
 * 
 * @package  
 * @author   岡本 順子
 * @language JavaScript
 * @version  1.0
 * @since    2003/11/01 ver1.0 初版作成 岡本順子
 * @using    ctl_string.js
 * @info     
 */


/*****************************
  汎用
******************************/
/*
 * 必須チェック
 * @access	public
 * @param	string		pos		項目名(指定時は自動アラート)
 * @param	string		val		対象文字列
 * @param	object		full	文字数基準フル桁入力チェック対象項目(対象外の場合は指定なし) ※2009/02/13 J.Okamoto Add
 * @return	boolean				true - チェックOK / false - チェックNG
 * @info    なし
 */
function chk_indis(pos, val, full) {
	if (Trim(val) == "") {
		if (pos != "") alert(pos + "が入力されていません。");
		return false;
	}
	if (!chk_fullLength(pos, val, full)) return false;  //--- 2009/02/13 Add J.Okamoto
	return true;
}
//---------- 2009/02/13 Add J.Okamoto Start ----------
/*
 * 固定長入力チェック
 * @access	public
 * @param	string		pos		項目名(指定時は自動アラート)
 * @param	string		val		対象文字列
 * @param	object		full	文字数基準フル桁入力チェック対象項目
 * @return	boolean				true - チェックOK / false - チェックNG
 * @info    なし
 */
 function chk_fullLength(pos, val, full) {
    if (!full) return true;
	if (!full.maxLength) return true;
    if (Trim(val).length != full.maxLength) {
		if (pos != "") alert(pos + "は" + full.maxLength + "桁で入力してください。");
		return false;
	}
	return true; 
}
//---------- 2009/02/13 Add J.Okamoto End   ----------

/*****************************
  数値チェック
******************************/
/*
 * 数値チェック
 * @access	public
 * @param	string		pos		項目名(指定時は自動アラート)
 * @param	string		val		対象文字列
 * @param	boolean		indis	true - 必須 / false(デフォルト) - 未入力可
 * @return	boolean				true - チェックOK / false - チェックNG
 * @info    マイナス不可
 */
function chk_numeric(pos, val, indis) {
	if (indis) {
		if (chk_indis(pos, val) == false) return false;
	} else {
		if (chk_indis("", val) == false) return true;
	}
	//val = val.replace(",", "");		// カンマ除去
	val = val.replace(/,/g, "");		// カンマ除去
	if (val == "0") return true;						// 0 のみの場合はOK
	var ret = true;
    if (val.search(/^0/i) != -1) ret = false;			// 先頭が 0 の場合はNG
    if (val.search(/^[0-9]+$/i) == -1) ret = false;
	if (!ret) {
		if (pos != "") alert(pos + "は数値(マイナス不可)を入力してください。");
		return false;
	}

	return true;
}
/*
 * 数値チェック
 * @access	public
 * @param	string		pos		項目名(指定時は自動アラート)
 * @param	string		val		対象文字列
 * @param	boolean		indis	true - 必須 / false(デフォルト) - 未入力可
 * @return	boolean				true - チェックOK / false - チェックNG
 * @info    マイナス許可
 */
function chk_numericEx(pos, val, indis) {
	if (indis) {
		if (chk_indis(pos, val) == false) return false;
	} else {
		if (chk_indis("", val) == false) return true;
	}
	//val = val.replace(",", "");		// カンマ除去
	val = val.replace(/,/g, "");		// カンマ除去
	if (val == "0") return true;						// 0 のみの場合はOK
	var ret = true;
    if (val.search(/^(-?)0/i) != -1) ret = false;		// 先頭が 0 の場合はNG
    if (val.search(/^(-?)[0-9]+$/i) == -1) ret = false;
	if (!ret) {
		if (pos != "") alert(pos + "は数値(マイナス可能)を入力してください。");
		return false;
	}

	return true;
}
/*
 * 小数チェック
 * @access	public
 * @param	string		pos		項目名(指定時は自動アラート)
 * @param	string		val		対象文字列
 * @param	boolean		indis	true - 必須 / false(デフォルト) - 未入力可
 * @return	boolean				true - チェックOK / false - チェックNG
 * @info    整数部５桁.小数部２桁まで
 */
function chk_decimal(pos, val, indis) {
	if (indis) {
		if (chk_indis(pos, val) == false) return false;
	} else {
		if (chk_indis("", val) == false) return true;
	}
	val = val.replace(",", "");		// カンマ除去
	if (val.search(/^[0-9]{1,5}(\.[0-9]{1,2})?$/i) == -1) {
		if (pos != "") alert(pos + "は整数部５桁、小数部２桁までの数値(半角)を入力してください。");
		return false;
	}
	return true;
}
/*
 * 小数チェック
 * @access	public
 * @param	string		pos		項目名(指定時は自動アラート)
 * @param	string		val		対象文字列
 * @param	boolean		indis	true - 必須 / false(デフォルト) - 未入力可
 * @return	boolean				true - チェックOK / false - チェックNG
 * @info    整数部５桁.小数部１桁まで
 *          2009/03/15 Add J.Okamoto
 */
function chk_decimalEx(pos, val, indis) {
	if (indis) {
		if (chk_indis(pos, val) == false) return false;
	} else {
		if (chk_indis("", val) == false) return true;
	}
	val = val.replace(",", "");		// カンマ除去
	if (val.search(/^[0-9]{1,5}(\.[0-9]{1})?$/i) == -1) {
		if (pos != "") alert(pos + "は整数部５桁、小数部１桁までの数値(半角)を入力してください。");
		return false;
	}
	return true;
}

/*****************************
  英数字チェック
******************************/
/*
 * 半角数字チェック
 * @access	public
 * @param	string		pos		項目名(指定時は自動アラート)
 * @param	string		val		対象文字列
 * @param	boolean		indis	true - 必須 / false(デフォルト) - 未入力可
 * @param	object		full	文字数基準フル桁入力チェック対象項目(対象外の場合は指定なし) ※2009/02/13 J.Okamoto Add
 * @return	boolean				true - チェックOK / false - チェックNG
 * @info    なし
 */
function chk_number(pos, val, indis, full) {
	if (indis) {
		if (chk_indis(pos, val) == false) return false;
	} else {
		if (chk_indis("", val) == false) return true;
	}
    if (val.search(/[^0-9]/i) != -1) {
		if (pos != "") alert(pos + "は数字(半角)を入力してください。");
		return false;
    }
    if (!chk_fullLength(pos, val, full)) return false;  //--- 2009/02/13 Add J.Okamoto
	return true;
}
/*
 * 英数字チェック
 * @access	public
 * @param	string		pos		項目名(指定時は自動アラート)
 * @param	string		val		対象文字列
 * @param	boolean		indis	true - 必須 / false(デフォルト) - 未入力可
 * @param	object		full	文字数基準フル桁入力チェック対象項目(対象外の場合は指定なし) ※2009/02/13 J.Okamoto Add
 * @return	boolean				true - チェックOK / false - チェックNG
 * @info    一部記号 ｢_｣｢-｣｢/｣｢半角ｽﾍﾟｰｽ｣｢.｣ も可能
 *          ｢*｣ ｢(｣ ｢)｣ ｢[｣ ｢]｣ ｢:｣ ｢;｣ も追加
 */
function chk_alnum(pos, val, indis, full) {
	if (indis) {
		if (chk_indis(pos, val) == false) return false;
	} else {
		if (chk_indis("", val) == false) return true;
	}
//	if (val.search(/\W/i) != -1) {
	if (val.search(/([^A-Za-z0-9_\-\/\s\.\*\(\)\[\]\:\;]+)/i) != -1) {
		if (pos != "") alert(pos + "は英数字(半角)を入力してください。");
		return false;
	}
    if (!chk_fullLength(pos, val, full)) return false;  //--- 2009/02/13 Add J.Okamoto
	return true;
}

/*****************************
  文字チェック
******************************/
/*
 * 全角カナチェック
 * @access	public
 * @param	string		pos		項目名(指定時は自動アラート)
 * @param	string		val		対象文字列
 * @param	boolean		indis	true - 必須 / false(デフォルト) - 未入力可
 * @param	object		full	文字数基準フル桁入力チェック対象項目(対象外の場合は指定なし) ※2009/02/13 J.Okamoto Add
 * @return	boolean				true - チェックOK / false - チェックNG
 * @info    全角スペース・半角スペースも可
 */
function chk_syll(pos, val, indis, full) {
	if (indis) {
		if (chk_indis(pos, val) == false) return false;
	} else {
		if (chk_indis("", val) == false) return true;
	}
	if (val.search(/^[　 ーァ-ヶ]+$/i) == -1) {
		if (pos != "") alert(pos + "は全角カナを入力してください。");
		return false;
	}
    if (!chk_fullLength(pos, val, full)) return false;  //--- 2009/02/13 Add J.Okamoto
	return true;
}
//---------- 2009/02/13 Add J.Okamoto Start ----------
/*
 * 半角カナチェック
 * @access	public
 * @param	string		pos		項目名(指定時は自動アラート)
 * @param	string		val		対象文字列
 * @param	boolean		indis	true - 必須 / false(デフォルト) - 未入力可
 * @param	object		full	文字数基準フル桁入力チェック対象項目(対象外の場合は指定なし) ※2009/02/13 J.Okamoto Add
 * @return	boolean				true - チェックOK / false - チェックNG
 * @info    半角スペースも可
 */
function chk_syllHalf(pos, val, indis, full) {
	if (indis) {
		if (chk_indis(pos, val) == false) return false;
	} else {
		if (chk_indis("", val) == false) return true;
	}
	if (val.search(/^[ ｦ-ﾟ]+$/i) == -1) {
		if (pos != "") alert(pos + "は半角カナを入力してください。");
		return false;
	}
    if (!chk_fullLength(pos, val, full)) return false;  //--- 2009/02/13 Add J.Okamoto
	return true;
}
/*
 * 半角文字チェック
 * @access	public
 * @param	string		pos		項目名(指定時は自動アラート)
 * @param	string		val		対象文字列
 * @param	boolean		indis	true - 必須 / false(デフォルト) - 未入力可
 * @param	object		full	文字数基準フル桁入力チェック対象項目(対象外の場合は指定なし) ※2009/02/13 J.Okamoto Add
 * @return	boolean				true - チェックOK / false - チェックNG
 * @info    
 */
function chk_charHalf(pos, val, indis, full) {
	if (indis) {
		if (chk_indis(pos, val) == false) return false;
	} else {
		if (chk_indis("", val) == false) return true;
	}

	for (var i=0; i<val.length; i++) {
// 2009/03/02 Upd S.Okamoto 「×」「÷」等が全角として認識されないため修正
		// 1文字ずつ文字コードをエスケープし、その長さが4文字以上なら全角、4文字未満なら半角
//		var len = escape(val.charAt(i)).length;
//		if (len >= 4){
//			var s = val.charAt(i);
//			if (s.search(/^[ ｦ-ﾟ]+$/i) == -1) {
//				if (pos != "") alert(pos + "は半角文字を入力してください。");
//					return false
//			}
//		}
		var c = val.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)) {
		} else {
			if (pos != "") alert(pos + "は半角文字を入力してください。");
			return false;
		}
	}
	if (!chk_fullLength(pos, val, full)) return false;  //--- 2009/02/13 Add J.Okamoto
	return true;
}
/*
 * 全角文字チェック
 * @access	public
 * @param	string		pos		項目名(指定時は自動アラート)
 * @param	string		val		対象文字列
 * @param	boolean		indis	true - 必須 / false(デフォルト) - 未入力可
 * @param	object		full	文字数基準フル桁入力チェック対象項目(対象外の場合は指定なし) ※2009/02/13 J.Okamoto Add
 * @return	boolean				true - チェックOK / false - チェックNG
 * @info    
 */
function chk_charMulti(pos, val, indis, full) {
	if (indis) {
		if (chk_indis(pos, val) == false) return false;
	} else {
		if (chk_indis("", val) == false) return true;
	}
	
    for (var i=0; i<val.length; i++) {
// 2009/03/02 Upd S.Okamoto 「×」「÷」等が全角として認識されないため修正
		// 1文字ずつ文字コードをエスケープし、その長さが4文字以上なら全角、4文字未満なら半角
//		var len = escape(val.charAt(i)).length;
//		if (len < 4) {
//			if (pos != "") alert(pos + "は全角文字を入力してください。");
//				return false
//			} else {
//				var s = val.charAt(i);
//				if (s.search(/^[ ｦ-ﾟ]+$/i) != -1) {
//					if (pos != "") alert(pos + "は全角文字を入力してください。");
//					return false
//				}
//			}
//		}
		var c = val.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)) {
			if (pos != "") alert(pos + "は全角文字を入力してください。");
			return false;
		}
	}
	if (!chk_fullLength(pos, val, full)) return false;  //--- 2009/02/13 Add J.Okamoto
	return true;
}
//---------- 2009/02/13 Add J.Okamoto End   ----------
/*
 * バイト数チェック
 * @access	public
 * @param	string		pos		項目名(指定時は自動アラート)
 * @param	string		val		対象文字列
 * @param	boolean		indis	true - 必須 / false(デフォルト) - 未入力可
 * @param	object		obj		対象項目
 * @return	boolean				true - チェックOK / false - チェックNG
 * @info    チェックはmaxlength指定を使用
 */
function chk_byte(pos, val, indis, obj, full) {
	if (indis) {
		if (chk_indis(pos, val) == false) return false;
	} else {
		if (chk_indis("", val) == false) return true;
	}
	if (!obj.maxLength) return false;
	var cnt = 0;
	for (i = 0; i < val.length; i++) {
// 2009/03/02 Upd S.Okamoto 「×」「÷」等が全角として認識されないため修正
//		var s = val.charAt(i);
//		if (escape(s).length >= 4) {
//			if (s.search(/^[ｦ-ﾟ]+$/i) == -1) {
//				cnt+=2;
//			} else {
//				cnt+=1;
//			}
//		} else {
//			cnt+=1;
//		}
		var c = val.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)) {
			cnt += 1;
		} else {
			cnt += 2;
		}
	}
	if (cnt > obj.maxLength) {
		if (pos != "") alert(pos + "は" + obj.maxLength + "byte以内で入力してください。");
		return false;
	}
	return true;
}
/*****************************
  DATEチェック
******************************/
/*
 * 暦日チェック
 * @access	public
 * @param	string		pos		項目名(指定時は自動アラート)
 * @param	string		val		対象文字列
 * @param	boolean		indis	true - 必須 / false(デフォルト) - 未入力可
 * @return	boolean				true - チェックOK / false - チェックNG
 * @info    区切り文字は ｢-｣｢/｣｢半角ｽﾍﾟｰｽ｣｢.｣ のいづれでも可→「/」のみ
 */
function chk_date(pos, val, indis) {
	if (indis) {
		if (chk_indis(pos, val) == false) return false;
	} else {
		if (chk_indis("", val) == false) return true;
	}
	var msg = pos + "の日付指定が不正です。";
	var match;
	var y, m, d;
//	if (match = val.match(/^([0-9]+)[\-\/\s\.]([0-9]+)[\-\/\s\.]([0-9]+)$/i)) {
	if (match = val.match(/^([0-9]+)\/([0-9]+)\/([0-9]+)$/i)) {
		y = eval(match[1]);
		//if ((y < 1) || (y > 32767)) {
		if ((y < 1900) || (y > 3000)) {
			if (pos != "") alert(msg);
			return false;
		}
	} else {
		if (pos != "") alert(msg);
		return false;
	}
	ddTbl = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	if (((y%4)==0 && (y%100)!=0) || (y%400)==0) ddTbl[1] = 29;
	m = eval(match[2]);
	if ((m < 1) || (m > 12)) {
		if (pos != "") alert(msg);
		return false;
	}
	d = eval(match[3]);
	if ((d < 1) || (d > ddTbl[m-1])) {
		if (pos != "") alert(msg);
		return false;
	}
	return true;
}
/*
 * 年月チェック
 * @access	public
 * @param	string		pos		項目名(指定時は自動アラート)
 * @param	string		val		対象文字列
 * @param	boolean		indis	true - 必須 / false(デフォルト) - 未入力可
 * @return	boolean				true - チェックOK / false - チェックNG
 * @info    区切り文字は ｢-｣｢/｣｢半角ｽﾍﾟｰｽ｣｢.｣ のいづれでも可→「/」のみ
 */
function chk_month(pos, val, indis) {
	if (indis) {
		if (chk_indis(pos, val) == false) return false;
	} else {
		if (chk_indis("", val) == false) return true;
	}
	var msg = pos + "の年月指定が不正です。";
	var match;
	var y, m;
//	if (match = val.match(/^([0-9]+)[\-\/\s\.]([0-9]+)$/i)) {
	if (match = val.match(/^([0-9]+)\/([0-9]+)$/i)) {
		y = eval(match[1]);
		//if ((y < 1) || (y > 32767)) {
		if ((y < 1900) || (y > 3000)) {
			if (pos != "") alert(msg);
			return false;
		}
	} else {
		if (pos != "") alert(msg);
		return false;
	}
	m = eval(match[2]);
	if ((m < 1) || (m > 12)) {
		if (pos != "") alert(msg);
		return false;
	}
	return true;
}
/*
 * 日チェック
 * @access	public
 * @param	string		pos		項目名(指定時は自動アラート)
 * @param	string		val		対象文字列
 * @param	boolean		indis	true - 必須 / false(デフォルト) - 未入力可
 * @return	boolean				true - チェックOK / false - チェックNG
 * @info    なし
 */
function chk_day(pos, val, indis) {
	if (chk_number(pos, val, indis) == false) return false;
	if (Trim(val) != "") {
		if (eval(val) < 1 || eval(val) > 31) {
			if (pos != "") alert(pos + "の日付が不正です。");
			return false;
		}
	}
	return true;
}
/*
 * 時間チェック
 * @access	public
 * @param	string		pos		項目名(指定時は自動アラート)
 * @param	string		val		対象文字列
 * @param	boolean		indis	true - 必須 / false(デフォルト) - 未入力可
 * @return	boolean				true - チェックOK / false - チェックNG
 * @info    HH:NN形式
 */
function chk_time(pos, val, indis) {
	if (indis) {
		if (chk_indis(pos, val) == false) return false;
	} else {
		if (chk_indis("", val) == false) return true;
	}
	if (val.search(/^([01][0-9]|2[0-3]):([0-5][0-9])$/i) == -1) {
		if (pos != "") alert(pos + "の時間指定が不正です。");
		return false;
	}
	return true;
}
/*
 * 暦日&時間チェック
 * @access	public
 * @param	string		pos		項目名(指定時は自動アラート)
 * @param	string		val		対象文字列
 * @param	boolean		indis	true - 必須 / false(デフォルト) - 未入力可
 * @return	boolean				true - チェックOK / false - チェックNG
 * @info    区切り文字は ｢-｣｢/｣｢半角ｽﾍﾟｰｽ｣｢.｣ のいづれでも可→「/」のみ
 */
function chk_dttime(pos, val, indis) {
	if (indis) {
		if (chk_indis(pos, val) == false) return false;
	} else {
		if (chk_indis("", val) == false) return true;
	}
	var msg = pos + "の日付及び時間指定が不正です。";
	var match;
	var y, m, d;
//	if (match = val.match(/^([0-9]+)[\-\/\s\.]([0-9]+)[\-\/\s\.]([0-9]+)\s([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$/i)) {
	if (match = val.match(/^([0-9]+)\/([0-9]+)\/([0-9]+)\s([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$/i)) {
		y = eval(match[1]);
		//if ((y < 1) || (y > 32767)) {
		if ((y < 1900) || (y > 3000)) {
			if (pos != "") alert(msg);
			return false;
		}
	} else {
		if (pos != "") alert(msg);
		return false;
	}
	ddTbl = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	if (((y%4)==0 && (y%100)!=0) || (y%400)==0) ddTbl[1] = 29;
	m = eval(match[2]);
	if ((m < 1) || (m > 12)) {
		if (pos != "") alert(msg);
		return false;
	}
	d = eval(match[3]);
	if ((d < 1) || (d > ddTbl[m-1])) {
		if (pos != "") alert(msg);
		return false;
	}
	return true;
}
/*
 * 日付大小チェック
 * @access	public
 * @param	string		pos		項目名(指定時は自動アラート)
 * @param	string		date1	日付文字列1 小さいのが正しいはずの日付
 * @param	string		date2	日付文字列2 大きいのが正しいはずの日付
 * @return	boolean				true - チェックOK / false - チェックNG
 * @info    日付文字列はYYYY/MM/DD形式
 */
function compare_date(pos, date1, date2) {
	var ary1 = Trim(date1).split("/");
	var ary2 = Trim(date2).split("/");
/*
	var dt1 = PadLeft(ary1[0],4,"0") + PadLeft(ary1[1],2,"0") + PadLeft(ary1[2],2,"0");
	var dt2 = PadLeft(ary2[0],4,"0") + PadLeft(ary2[1],2,"0") + PadLeft(ary2[2],2,"0");
	if (eval("1"+dt1) > eval("1"+dt2)) {
		if (pos != "") alert(pos + "の開始・終了が不正です。");
		return false;
	}
*/
	var dt1 = new Date(eval(removeTopZero(ary1[0])), eval(removeTopZero(ary1[1])) - 1, eval(removeTopZero(ary1[2])));
	var dt2 = new Date(eval(removeTopZero(ary2[0])), eval(removeTopZero(ary2[1])) - 1, eval(removeTopZero(ary2[2])));
	if(dt1.getTime() > dt2.getTime()) {
		if (pos != "") alert(pos + "の開始・終了が不正です。");
		return false;
	}
	return true;
}

/*****************************
  形式チェック
******************************/
/*
 * 郵便番号チェック
 * @access	public
 * @param	string		pos		項目名(指定時は自動アラート)
 * @param	string		val		対象文字列
 * @param	boolean		indis	true - 必須 / false(デフォルト) - 未入力可
 * @return	boolean				true - チェックOK / false - チェックNG
 * @info    なし
 */
function chk_postal(pos, val, indis) {
	if (indis) {
		if (chk_indis(pos, val) == false) return false;
	} else {
		if (chk_indis("", val) == false) return true;
	}
	if (val.search(/^[0-9]{3}\-[0-9]{4}$/i) == -1) {
		if (pos != "") alert(pos + "の郵便番号指定が不正です。");
		return false;
	}
	return true;
}
/*
 * 電話番号チェック
 * @access	public
 * @param	string		pos		項目名(指定時は自動アラート)
 * @param	string		val		対象文字列
 * @param	boolean		indis	true - 必須 / false(デフォルト) - 未入力可
 * @return	boolean				true - チェックOK / false - チェックNG
 * @info    なし
 */
function chk_tel(pos, val, indis) {
	if (indis) {
		if (chk_indis(pos, val) == false) return false;
	} else {
		if (chk_indis("", val) == false) return true;
	}
	if (val.search(/^0[0-9]{1,5}(\-[0-9]{1,4})?\-[0-9]{4}$/i) == -1) {
		if (pos != "") alert(pos + "の番号指定が不正です。");
		return false;
	}
	return true;
}
/*
 * メールアドレスチェック
 * @access	public
 * @param	string		pos		項目名(指定時は自動アラート)
 * @param	string		val		対象文字列
 * @param	boolean		indis	true - 必須 / false(デフォルト) - 未入力可
 * @return	boolean				true - チェックOK / false - チェックNG
 * @info    なし
 */
function chk_mail(pos, val, indis) {
	if (indis) {
		if (chk_indis(pos, val) == false) return false;
	} else {
		if (chk_indis("", val) == false) return true;
	}
	if (!val.match(/^[\w_-]+\S*@\S+\.\S+$/)){
		if (pos != "") alert(pos + "のアドレス指定が不正です。");
		return false;
	}
	return true;
}
/*
 * URLチェック
 * @access	public
 * @param	string		pos		項目名(指定時は自動アラート)
 * @param	string		val		対象文字列
 * @param	boolean		indis	true - 必須 / false(デフォルト) - 未入力可
 * @return	boolean				true - チェックOK / false - チェックNG
 * @info    なし
 */
function chk_url(pos, val, indis) {
	if (indis) {
		if (chk_indis(pos, val) == false) return false;
	} else {
		if (chk_indis("", val) == false) return true;
	}
	if (!val.match(/(http|https|ftp):\/\/[!#-9A-~]+\.+[a-z0-9]+/i)) {
		if (pos != "") alert(pos + "のアドレス指定が不正です。");
		return false;
	}
	return true;
}

