//*********************************************************
// Java Script テキストチェック共通関数
// JS_ChkText.js
//*********************************************************
//=========================================================
//ｽﾍﾟｰｽ除去関数							2005/12/13 n.takaku
//引数		
//			TxtStr	入力内容
//---------------------------------------------------------
function StrTrim(TxtStr) {
	str = TxtStr;
	return (str.replace(" ",""));
}

//=========================================================
//ﾃｷｽﾄﾎﾞｯｸｽ入力内容文字数ﾁｪｯｸ			2005/07/07 n.takaku
//引数		Len		最大入力可能文字数
//			TxtStr	入力内容
//---------------------------------------------------------
function ChkStr_Length(Len, TxtStr) {
	str = TxtStr;
	ChkLen = Len;
	if (str.length > Len) {
		//alert("文字数オーバーです。");
		return false;
	} else {
		//alert("入力可能文字数範囲内です。");
		return true;
	}
}

//=========================================================
//ﾃｷｽﾄﾎﾞｯｸｽ入力内容文字数ﾁｪｯｸ（固定長）	2005/07/07 n.takaku
//引数		Len		固定文字数
//			TxtStr	入力内容
//---------------------------------------------------------
function ChkStr_CharLength(Len, TxtStr) {
	str = TxtStr;
	ChkLen = Len;
	if (str.length > Len) {
		//alert("文字数オーバーです。");
		return false;
	} else if (str.length < Len) {
		//文字数不足
		return false;
	} else {
		//文字数＝固定長
		return true;
	}
}

//=========================================================
//文字列の数字ﾁｪｯｸ						2005/07/07 n.takaku
//引数		TxtStr	入力内容
//戻り値	True	文字列がすべて半角数字
//			False	文字列に半角数字以外を含む
//---------------------------------------------------------
function ChkStr_isNumeric(TxtStr) {
	str = TxtStr;						//文字列
	len = str.length;					//文字列長の取得
	re = new RegExp("[^0-9]", "i");		//正規表現ｵﾌﾞｼﾞｪｸﾄの生成
	/*
	for (i=0; i<len; i++) {
		cstr = str.substr(i,1);			//1文字ずつ切り出し
		if (cstr.match(re)) {
			//マッチする
		} else {
			//マッチしない
			return false;
		}
	}
	*/
	if (str.match(re) != null) {
		//マッチしない
		return false;
	}
	return true;
}

//=========================================================
//文字列の英字ﾁｪｯｸ						2005/07/07 n.takaku
//引数		TxtStr	入力内容
//戻り値	True	文字列がすべて英字
//			False	文字列に英字以外を含む
//---------------------------------------------------------
function ChkStr_isAtoZ(TxtStr) {
	str = TxtStr;						//文字列
	len = str.length;					//文字列長の取得
	re = new RegExp("[^A-Z]", "i");		//正規表現ｵﾌﾞｼﾞｪｸﾄの生成
	/*
	for (i=0; i<len; i++) {
		cstr = str.substr(i,1);			//1文字ずつ切り出し
		if (cstr.match(re)) {
			//マッチする
		} else {
			//マッチしない
			return false;
		}
	}
	*/
	if (str.match(re) != null) {
		//マッチしない
		return false;
	}
	return true;
}


//=========================================================
//文字列の数字ﾁｪｯｸ（小数点含む）		2005/08/01 n.takaku
//引数		TxtStr	入力内容
//戻り値	True	文字列がすべて半角数字
//			False	文字列に半角数字以外を含む
//---------------------------------------------------------
function ChkStr_is0to9Decimal(TxtStr) {
	str = TxtStr;						//文字列
	len = str.length;					//文字列長の取得
	re = new RegExp("[^0-9.]", "i");	//正規表現ｵﾌﾞｼﾞｪｸﾄの生成
/*	for (i=0; i<len; i++) {
		cstr = str.substr(i,1);			//1文字ずつ切り出し
		if (cstr.match(re) = null ) {
			//マッチする
		} else {
			//マッチしない
			return false;
		}
	}
	*/
	if (str.match(re) != null ) {
		//マッチしない
		return false;
	}
	return true;
}

//=========================================================
//文字列の数字ﾁｪｯｸ（ハイフン含む）		2005/08/26 n.takaku
//引数		TxtStr	入力内容
//戻り値	True	文字列がすべて正規表現
//			False	文字列に正規表現以外を含む
//---------------------------------------------------------
function ChkStr_is0to9Hyphen(TxtStr) {
	str = TxtStr;						//文字列
	len = str.length;					//文字列長の取得
	re = new RegExp("[^0-9-]", "i");	//正規表現ｵﾌﾞｼﾞｪｸﾄの生成
	/*
	for (i=0; i<len; i++) {
		cstr = str.substr(i,1);			//1文字ずつ切り出し
		if (cstr.match(re)) {
			//マッチする
		} else {
			//マッチしない
			return false;
		}
	}
	*/
	if (str.match(re) != null) {
		//マッチしない
		return false;
	}
	return true;
}

//=========================================================
//文字列の英数字ﾁｪｯｸ					2005/07/08 n.takaku
//引数		TxtStr	入力内容
//戻り値	True	文字列がすべて半角英数字
//			False	文字列に半角英数字以外を含む
//---------------------------------------------------------
function ChkStr_isAtoZ0to9(TxtStr) {
	str = TxtStr;						//文字列
	len = str.length;					//文字列長の取得
	re = new RegExp("[^A-Z0-9]", "i");	//正規表現ｵﾌﾞｼﾞｪｸﾄの生成 i:大文字小文字を区別しない
	/*
	for (i=0; i<len; i++) {
		cstr = str.substr(i,1);			//1文字ずつ切り出し
		if (cstr.match(re)) {
			//マッチする
		} else {
			//マッチしない
			return false;
		}
	}
	*/
	if (str.match(re) != null) {
		//マッチしない
		return false;
	}
	return true;
}

//=========================================================
//文字列の英数字ﾁｪｯｸ					2005/07/27 i.akiko
//引数		TxtStr	入力内容
//戻り値	True	文字列がすべて半角英数字(指定記号・_,-," ",.)含む。
//			False	文字列に半角英数字以外を含む
//---------------------------------------------------------
function ChkStr_isAtoZ0to9_PLUS(TxtStr) {
	str = TxtStr;						//文字列
	len = str.length;					//文字列長の取得
	re = new RegExp("[^A-Z0-9-_. ]", "i");		//正規表現ｵﾌﾞｼﾞｪｸﾄの生成 i:大文字小文字を区別しない
	/*
	for (i=0; i<len; i++) {
		cstr = str.substr(i,1);			//1文字ずつ切り出し
		if (cstr.match(re)) {
			//マッチする
		} else {
			//マッチしない
			return false;
		}
	}
	*/				
	if (str.match(re) != null) {	//2005/08/27 add takaku
		//マッチしない
		return false;
	}
	return true;
}

//=========================================================
//文字列の英数字ﾁｪｯｸ					2005/07/27 i.akiko
//引数		TxtStr	入力内容
//戻り値	True	文字列がすべて半角英数字(指定記号・_,-," ",.)含む。
//			False	文字列に半角英数字以外を含む
//---------------------------------------------------------
function ChkStr_isAtoZ0to9_PLUS2(TxtStr) {
	str = TxtStr;						//文字列
	len = str.length;					//文字列長の取得
	re = new RegExp("[^A-Z0-9-_., ]", "i");		//正規表現ｵﾌﾞｼﾞｪｸﾄの生成 i:大文字小文字を区別しない
	/*
	for (i=0; i<len; i++) {
		cstr = str.substr(i,1);			//1文字ずつ切り出し
		if (cstr.match(re)) {
			//マッチする
		} else {
			//マッチしない
			return false;
		}
	}
	*/				
	if (str.match(re) != null) {	//2005/08/27 add takaku
		//マッチしない
		return false;
	}
	return true;
}


//=========================================================
//必須項目ﾁｪｯｸ							2005/07/07 n.takaku
//引数		TxtStr	入力内容
//戻り値	True	入力あり
//			False	入力なし
//---------------------------------------------------------
function ChkStr_Input(TxtStr) {
	str = TxtStr;						//文字列
	//alert("ここまできてます。");
	if (str.length == 0) {
		//alert("未入力です！");
		return false;
	} else {
		//alert("入力あり  " + str.length + "文字");
		return true;
	}
}

//=====================================================================
//日付の妥当性ﾁｪｯｸ									2005/07/07 n.takaku
//引数		strDATE	入力内容（日付：YYYYMMDD）
//戻り値	True	異常なし
//			False	日付エラー
//.....................................................................
//備考		与えられた文字列（８桁）を日付（西暦４桁＋月２桁＋日２桁）
//       	と解釈し、日付の妥当性のチェックを行う。
//       	西暦の有効範囲は１９００〜２１００までとする。
//---------------------------------------------------------------------
function ChkStr_DATE(strDATE) {
	str = strDATE;							//日付
	
	//8桁の入力ではなかった場合
	if (str.length != 8) {
		//alert("8桁にあらず！");
		return false;
	}
	
	YYYY = str.substr(0, 4);				//年を取得
	MM = str.substr(4, 2);					//月を取得
	DD = str.substr(6, 2);					//日を取得

	//alert (YYYY + "/" + MM + "/" + DD);

	if (YYYY < 1900 || YYYY > 2100) {		//年ﾁｪｯｸ
		//alert ("年がおかしいでしょ？");
		return false;
	}

	//1月、3月、5月、7月、8月、10月、12月
	if (MM == "01" || MM == "03" || MM == "05" || MM == "07" || MM == "08" || MM == "10" || MM == "12") {
		if (DD > 31) {
			//alert("31日までしかねーよ！");
			return false;
		}
	} 
	//4月、6月、9月、11月
	else if (MM == "04" || MM == "06" || MM == "09" || MM == "11") {				
		if (DD > 30) {
			//alert("30日までしかねーよ！");
			return false;
		}
	}
	//2月
	else if (MM == "02") {				
		if (Chk_UruuYear(YYYY) == true) {			//閏年
			if (DD > 29) {
				//alert(YYYY + "年は閏年だから29日までしかねーよ！");
				return false;
			}
		} else {
			if (DD > 28) {							//平年
				//alert(YYYY + "年は平年だから28日までしかねーよ！");
				return false;
			}
		}
	} else {
		//alert("月がおかしいよ");
		return false;
	}
	//alert("日付正常");
	return true;
}


//=========================================================
//閏年ﾁｪｯｸ								2005/07/07 n.takaku
//引数		strYYYY	年：YYYY
//戻り値	True	閏年
//			False	平年
//---------------------------------------------------------
function Chk_UruuYear(strYYYY) {
	YYYY = strYYYY;

	if ((YYYY % 4) == 0) {
		if ((YYYY % 400) == 0) {		//[1]:400の倍数（閏年）
			return true;
		}
		if ((YYYY % 100) == 0) {		//[2]:100の倍数（平年）
			return false;
		}
		return true;				//[3]:[1],[2]以外の4の倍数（閏年）
	} else {
		return false;				//4の倍数以外（平年）
	}
}


//=========================================================
//文字列に含まれる文字列1を文字列2に変換する	2005/09/05 takaku 
//引数		Str		文字列
//			Str1	置換される文字列
//			Str2	置換する文字列
//戻り値	restr	置換処理後の文字列
//---------------------------------------------------------
function StrReplace(str, str1, str2){
	var arrSTR = str.split(str1);
	var restr = "";
	var cnt;
	for (cnt=0; cnt<arrSTR.length; cnt++){
		if (cnt==0){
			restr = arrSTR[cnt];
		} else {
			restr = restr+str2+arrSTR[cnt]; 
		}
	}
	return restr;
}
