/****************************************************************************/
/* 入力フォームデータをチェックする関数群									*/
/****************************************************************************/
/* ■早見表だよ■
/*  [	Function Name	]	/			[	Note	]
/* isCheckedCtrl			/	ラジオボタン／チェックボックスのチェック状態を調べる。
/* isNumString				/	0〜9以外の文字が入っているかどうか調べる。
/* isKanmaString			/	カンマをチェックする関数(CSV出力用のデータならやっとく)
/* isCorrectDateObj		/	存在する日付かどうかを調べる。
/* isImagePass				/	画像ファイルディレクトリパスとして正常かどうかを調べる。
/* chkTextAreaNum			/	テキストエリアの文字数をチェックする。
/* chkXSS							/	半角特殊記号の入力チェック（クロスサイトスクリプティング対応）
/* getByteCnt					/	文字列のバイト数を返す
/* chkHanKana					/	半角カナ混在チェック
/* chkIzon						/	機種依存文字チェック
/* chkUrl							/	ＵＲＬ文字チェック
/****************************************************************************/


/****************************************************************************/
/* Function	：isCheckedCtrl( obj, clmname )									*/
/* 				obj：フォーム部品オブジェクト clmname：項目名称				*/
/* Note		：ラジオボタン／チェックボックスのチェック状態を調べる。		*/
/* 			　コントロールが配列の場合は、その配列要素に対して				*/
/* 			　一つでもチェックがあればチェック有りとみなす。				*/
/* Return	：true(チェック有り) false（チェック無し）						*/
/* Use Ex	：isCheckedCtrl( document.FormName.ObjName, ClmName )			*/
/****************************************************************************/
function isCheckedCtrl( obj, clmname )
{
	//コントロールが1つの場合
	if ( !obj.length ){
		//チェック有り
		if(	obj.checked ){
			return true;
		}
		
		alert( clmname + "のチェックが入っていません");
		obj.focus();
	}
	//コントロールが配列の場合
	else{
		var i;
		for ( i=0; i<obj.length; i++)
		{
			//チェック有り
			if(	obj[i].checked ){
				return true;
			}
		}
		
		alert( clmname + "のチェックが入っていません");
		obj[0].focus();
	}
	
	return false;
}

/****************************************************************************/
/* Function	：isNumString( obj, clmname )									*/
/* 				obj：フォーム部品オブジェクト clmname：項目名称				*/
/* Note		：0〜9以外の文字が入っているかどうか調べる。					*/
/* Return	：true(正常) false（異常）										*/
/* Use Ex	：isNumString( document.FormName.ObjName, ClmName )				*/
/****************************************************************************/
function isNumString( obj, clmname )
{
	var chkstr = obj.value;
	for (i=0; i<chkstr.length; i++)
	{
		c = chkstr.charAt(i);
		if ("0123456789".indexOf(c,0) < 0)
		{
			alert(clmname + "に半角数値以外が含まれてます");
			obj.focus();
			return false;
		}
	}
	
	return true;
}

/****************************************************************************/
/* Function	：isKanmaString( obj, clmname )									*/
/* 				obj：フォーム部品オブジェクト clmname：項目名称				*/
/* Note		：カンマをチェックする関数(CSV出力用のデータならやっとく)		*/
/* Return	：true(正常) false（異常）										*/
/* Use Ex	：isKanmaString( document.FormName.ObjName, ClmName )			*/
/****************************************************************************/
function isKanmaString( obj, clmname )
{
	var chkstr = obj.value;
	if(chkstr.indexOf(",") != -1){
		alert(clmname + "にカンマ( , )は使用できません。");
		obj.focus();
		return false;
	}
	
	return true;
}

/****************************************************************************/
/* Function	：isCorrectDateObj( obj )										*/
/* 				obj：日付型オブジェクト										*/
/* Note		：存在する日付かどうかを調べる。								*/
/* Return	：true(正常) false（異常）										*/
/* Use Ex	：obj = new Date( year, month, day )							*/
/* 			　isCorrectDateObj( obj, 100 )									*/
/****************************************************************************/
function isCorrectDateObj( obj )
{
	var uruflag = false;
	var y = obj.getYear();
	var m = obj.getMonth();
	var d = obj.getDate()

	//閏年チェック
	if( m == 2 ){
		if( ( (y % 4 == 0) && (y % 100 != 0) ) || (y % 400 == 0) ){
			uruflag = true;
		}
		if( uruflag ){		//閏年
			if( d > 29){
				alert(y+"年"+m+"月"+d+"日"+"は存在しません。");
				return false;
			}
		}
		else{
			if( d > 28){
				alert(y+"年"+m+"月"+d+"日"+"は存在しません。");
				return false;
			}
		}		
	}
	//月末チェック
	if( m == 4 || m == 6 || m == 9 || m == 11 ){		
		if( d > 30 ){
			alert(y+"年"+m+"月"+d+"日"+"は存在しません。");
			return false;
		}
	}
	
	return true;
}


/****************************************************************************/
/* Function	：isCorrectDate( y, m , d )										*/
/* 				y：年（西暦 4桁）											*/
/*              m: 月														*/
/*              d: 日														*/
/* Note		：存在する日付かどうかを調べる。								*/
/*            2005/10/05 Y.Nishi  引数を日付データ(数値)に変更したチェック	*/
/*								  関数を作成								*/
/* Return	：true(正常) false（異常）										*/
/* Use Ex	：isCorrectDateObj( 2005, 10, 5 )								*/
/****************************************************************************/
function isCorrectDate( y, m, d )
{
	var uruflag = false;

	//閏年チェック
	if( m == 2 ){
		if( ( (y % 4 == 0) && (y % 100 != 0) ) || (y % 400 == 0) ){
			uruflag = true;
		}
		if( uruflag ){		//閏年
			if( d > 29 ){
				alert( y + "年" + m + "月" + d + "日" + "は存在しません。");
				return false;
			}
		}
		else{
			if( d > 28 ){
				alert( y + "年" + m + "月" + d + "日" + "は存在しません。");
				return false;
			}
		}		
	}
	//月末チェック
	if( m == 4 || m == 6 || m == 9 || m == 11 ){		
		if( d > 30 ){
			alert( y + "年" + m + "月" + d + "日" + "は存在しません。");
			return false;
		}
	}
	
	return true;
}

/****************************************************************************/
/* Function	：isImagePass( obj,kakutyousi, flg )							*/
/* 				obj：フォーム部品オブジェクト kakutyousi：指定拡張子名		*/
/* 				flg：true（拡張子の大文字/小文字を区別する）				*/
/* 				   ：false（拡張子の大文字/小文字を区別しない）				*/
/* Note		：画像ファイルディレクトリパスとして正常かどうかを調べる。		*/
/* Return	：true(正常) false（異常）										*/
/* Use Ex	：isImagePass( document.FormName.ObjName, "jpg", true )			*/
/****************************************************************************/
function isImagePass( obj, kakutyousi, flg )
{
	var kakuname;
	var filepos;
	var kakupos;
	var chkstr = obj.value;

	// ファイルパスのチェック
	if ( chkstr == "" )
	{
		alert( "画像ファイルのディレクトリが設定されていません。" );
		obj.focus();
		return false;
	}

	filepos = chkstr.lastIndexOf('\\');			//	ファイル名の起点(後ろから最初の\)の位置をセット
	if( -1 == filepos ){
		alert( "画像ファイルの指定ディレクトリが不正です。" );
		obj.focus();
		return false;
	}

	kakupos = chkstr.indexOf('.',filepos);		//	拡張子の起点(ファイル名の前から最初の.)の位置をセット		
	if( -1 == kakupos ){
		alert( "画像ファイルの拡張子が見つかりません。" );
		obj.focus();
		return false;
	}
	
	kakuname = chkstr.substring( kakupos+1, chkstr.length );	//拡張子セット
	
	//指定拡張子とのチェック
	if(true == flg)		//大文字/小文字を区別する
	{
		if(kakuname != kakutyousi)
		{
			alert( "画像ファイルの拡張子が正しくありません。" );
			obj.focus();
			return false;
		}
	}
	else
	{
		if(kakuname.toUpperCase() != kakutyousi.toUpperCase())
		{
			alert( "画像ファイルの拡張子が正しくありません。" );
			obj.focus();
			return false;
		}
	}
	
	return true;
}

/****************************************************************************/
/* Function	：chkTextAreaNum( obj, Maxlen, clmname )						*/
/* 				obj：フォーム部品オブジェクト Maxlen：入力可能最大文字数	*/
/* 				clmname：項目名称											*/
/* Note		：テキストエリアの文字数をチェックする。						*/
/* Return	：true(正常) false（異常）										*/
/* Use Ex	：chkTextAreaNum( document.FormName.ObjName, 100, ClmName )		*/
/****************************************************************************/
function chkTextAreaNum( obj, Maxlen, clmname )
{
	var chkstr = obj.value;
	if( Maxlen < chkstr.length ){
		alert(clmname + "は" + Maxlen + "文字以内でご入力ください。");
		obj.focus();
		return false;
	}
	if( 0 == chkstr.length ){
		alert(clmname + "に情報をご登録ください。");
		obj.focus();
		return false;
	}
	
	return true;
}

/****************************************************************************/
/* Function	：chkXSS( obj, clmname )										*/
/* 				obj：フォーム部品オブジェクト clmname：項目名称				*/
/* Note		：半角特殊記号の入力チェック（クロスサイトスクリプティング対応）*/
/* Return	：true(正常) false（異常）										*/
/* Use Ex	：chkXSS( document.FormName.ObjName, ClmName )					*/
/****************************************************************************/
function chkXSS( obj, clmname ){
	var chkstr = obj.value;

//	if( chkstr.indexOf("'") != -1 || chkstr.indexOf("&") != -1 || 
	if( chkstr.indexOf("'") != -1 || 
		chkstr.indexOf("<") != -1 || chkstr.indexOf(">") != -1 || 
		chkstr.indexOf(",") != -1 || chkstr.indexOf('"') != -1 ||
		chkstr.indexOf("|") != -1 || chkstr.indexOf(";") != -1
	){

		alert(clmname + "には\n半角特殊記号（「'」「,」「\"」「<」「>」「|」「;」）は使用できません。");
		obj.focus();
		return false;
	}

	return true;
}

/********************************************************************************/
/* Function	：chkXSSforUrl( obj, clmname )										*/
/* 				obj：フォーム部品オブジェクト clmname：項目名称					*/
/* Note		：URL用半角特殊記号の入力チェック（クロスサイトスクリプティング対応）*/
/* Return	：true(正常) false（異常）											*/
/* Use Ex	：chkXSSforUrl( document.FormName.ObjName, ClmName )				*/
/********************************************************************************/
function chkXSSforUrl( obj, clmname ){
	var chkstr = obj.value;

	if( chkstr.indexOf("'") != -1 || 
		chkstr.indexOf("<") != -1 || chkstr.indexOf(">") != -1 || 
		chkstr.indexOf('"') != -1 || chkstr.indexOf("|") != -1 || 
		chkstr.indexOf(";") != -1
	){

		alert(clmname + "には\n半角特殊記号（「'」「\"」「<」「>」「|」「;」）は使用できません。");
		obj.focus();
		return false;
	}

	return true;
}

/****************************************************************************/
/* Function	：getByteCnt( obj )										*/
/* 				obj：フォーム部品オブジェクト				*/
/* Note		：バイト数を返す*/
/* Return	：バイト数										*/
/* Use Ex	：getByteCnt( document.FormName.ObjName )					*/
/****************************************************************************/
function getByteCnt( obj ){
	var chkstr = obj.value;
	var count;
	var n;

	count = 0;
	for (i=0; i<chkstr.length; i++)
	{
		n = escape(chkstr.charAt(i));
		if (n.length < 4) {
			count++;
		}else{
			count+=2;
		}
	}
	
	return count;
}

/****************************************************************************/
/* Function	：chkHanKana( obj, clmname )										*/
/* 				obj：フォーム部品オブジェクト clmname：項目名称				*/
/* Note		：半角カナ混在チェック*/
/* Return	：true(正常) false（異常）										*/
/* Use Ex	：chkHanKana( document.FormName.ObjName, ClmName )					*/
/****************************************************************************/
function chkHanKana( obj, clmname ){
	var chkstr = obj.value;

	if (chkstr.indexOf("ｱ") != -1 || chkstr.indexOf("ｲ") != -1 || chkstr.indexOf("ｳ") != -1 || chkstr.indexOf("ｴ") != -1 || 
			chkstr.indexOf("ｵ") != -1 || chkstr.indexOf("ｶ") != -1 || chkstr.indexOf("ｷ") != -1 || 
			chkstr.indexOf("ｸ") != -1 || chkstr.indexOf("ｹ") != -1 || chkstr.indexOf("ｺ") != -1 || 
			chkstr.indexOf("ｻ") != -1 || chkstr.indexOf("ｼ") != -1 || chkstr.indexOf("ｽ") != -1 || 
			chkstr.indexOf("ｾ") != -1 || chkstr.indexOf("ｿ") != -1 || chkstr.indexOf("ﾀ") != -1 || 
			chkstr.indexOf("ﾁ") != -1 || chkstr.indexOf("ﾂ") != -1 || chkstr.indexOf("ﾃ") != -1 || 
			chkstr.indexOf("ﾄ") != -1 || chkstr.indexOf("ﾅ") != -1 || chkstr.indexOf("ﾆ") != -1 || 
			chkstr.indexOf("ﾇ") != -1 || chkstr.indexOf("ﾈ") != -1 || chkstr.indexOf("ﾉ") != -1 || 
			chkstr.indexOf("ﾊ") != -1 || chkstr.indexOf("ﾋ") != -1 || chkstr.indexOf("ﾌ") != -1 || 
			chkstr.indexOf("ﾍ") != -1 || chkstr.indexOf("ﾎ") != -1 || chkstr.indexOf("ﾏ") != -1 || 
			chkstr.indexOf("ﾐ") != -1 || chkstr.indexOf("ﾑ") != -1 || chkstr.indexOf("ﾒ") != -1 || 
			chkstr.indexOf("ﾓ") != -1 || chkstr.indexOf("ﾔ") != -1 || chkstr.indexOf("ﾕ") != -1 || 
			chkstr.indexOf("ﾖ") != -1 || chkstr.indexOf("ﾗ") != -1 || chkstr.indexOf("ﾘ") != -1 || 
			chkstr.indexOf("ﾙ") != -1 || chkstr.indexOf("ﾚ") != -1 || chkstr.indexOf("ﾛ") != -1 || 
			chkstr.indexOf("ﾜ") != -1 || chkstr.indexOf("ｦ") != -1 || chkstr.indexOf("ﾝ") != -1 || 
			chkstr.indexOf("ｶﾞ") != -1 || chkstr.indexOf("ｷﾞ") != -1 || chkstr.indexOf("ｸﾞ") != -1 || 
			chkstr.indexOf("ｹﾞ") != -1 || chkstr.indexOf("ｺﾞ") != -1 || chkstr.indexOf("ﾀﾞ") != -1 || 
			chkstr.indexOf("ﾁﾞ") != -1 || chkstr.indexOf("ﾂﾞ") != -1 || chkstr.indexOf("ﾃﾞ") != -1 || 
			chkstr.indexOf("ﾄﾞ") != -1 || chkstr.indexOf("ﾊﾞ") != -1 || chkstr.indexOf("ﾋﾞ") != -1 || 
			chkstr.indexOf("ﾌﾞ") != -1 || chkstr.indexOf("ﾍﾞ") != -1 || chkstr.indexOf("ﾎﾞ") != -1 || 
			chkstr.indexOf("ﾊﾟ") != -1 || chkstr.indexOf("ﾋﾟ") != -1 || chkstr.indexOf("ﾌﾟ") != -1 || 
			chkstr.indexOf("ﾍﾟ") != -1 || chkstr.indexOf("ﾎﾟ") != -1 || chkstr.indexOf("ｻﾞ") != -1 || 
			chkstr.indexOf("ｼﾞ") != -1 || chkstr.indexOf("ｽﾞ") != -1 || chkstr.indexOf("ｾﾞ") != -1 || 
			chkstr.indexOf("ｿﾞ") != -1 || chkstr.indexOf("ｧ") != -1 || chkstr.indexOf("ｨ") != -1 || 
			chkstr.indexOf("ｩ") != -1 || chkstr.indexOf("ｪ") != -1 || chkstr.indexOf("ｫ") != -1 || 
			chkstr.indexOf("ｯ") != -1 || chkstr.indexOf("ｬ") != -1 || chkstr.indexOf("ｭ") != -1 || 
			chkstr.indexOf("ｮ") != -1
			){

		alert(clmname + "には半角カナは使用できません");
		obj.focus();
		return false;
	}

	return true;
}

/****************************************************************************/
/* Function	：chkIzon( obj, clmname )										*/
/* 				obj：フォーム部品オブジェクト clmname：項目名称				*/
/* Note		：機種依存文字混在チェック*/
/* Return	：true(正常) false（異常）										*/
/* Use Ex	：chkIzon( document.FormName.ObjName, ClmName )					*/
/****************************************************************************/
function chkIzon( obj, clmname ){
	var chkstr = obj.value;

	if (chkstr.indexOf("@") != -1 || chkstr.indexOf("A") != -1 || chkstr.indexOf("B") != -1 || 
			chkstr.indexOf("C") != -1 || chkstr.indexOf("D") != -1 || chkstr.indexOf("E") != -1 || 
			chkstr.indexOf("F") != -1 || chkstr.indexOf("G") != -1 || chkstr.indexOf("H") != -1 || 
			chkstr.indexOf("I") != -1 || chkstr.indexOf("J") != -1 || chkstr.indexOf("K") != -1 || 
			chkstr.indexOf("L") != -1 || chkstr.indexOf("M") != -1 || chkstr.indexOf("N") != -1 || 
			chkstr.indexOf("O") != -1 || chkstr.indexOf("P") != -1 || chkstr.indexOf("Q") != -1 || 
			chkstr.indexOf("R") != -1 || chkstr.indexOf("S") != -1 || chkstr.indexOf("@") != -1 || 
			chkstr.indexOf("A") != -1 || chkstr.indexOf("B") != -1 || chkstr.indexOf("C") != -1 || 
			chkstr.indexOf("D") != -1 || chkstr.indexOf("E") != -1 || chkstr.indexOf("F") != -1 || 
			chkstr.indexOf("G") != -1 || chkstr.indexOf("H") != -1 || chkstr.indexOf("I") != -1 || 
			chkstr.indexOf("T") != -1 || chkstr.indexOf("U") != -1 || chkstr.indexOf("V") != -1 || 
			chkstr.indexOf("W") != -1 || chkstr.indexOf("X") != -1 || chkstr.indexOf("Y") != -1 || 
			chkstr.indexOf("Z") != -1 || chkstr.indexOf("[") != -1 || chkstr.indexOf("\") != -1 || 
			chkstr.indexOf("]") != -1 || chkstr.indexOf("") != -1 || chkstr.indexOf("") != -1 || 
			chkstr.indexOf("") != -1 || chkstr.indexOf("") != -1 || chkstr.indexOf("") != -1 || 
			chkstr.indexOf("") != -1 || chkstr.indexOf("") != -1 || chkstr.indexOf("") != -1 || 
			chkstr.indexOf("") != -1 || chkstr.indexOf("~") != -1 || chkstr.indexOf("") != -1 || 
// 2006/08/03 JAST 林禁則文字に「U」を追加
			chkstr.indexOf("") != -1 || chkstr.indexOf("U") != -1 
			){

		alert(clmname + "には機種依存文字は使用できません");
		obj.focus();
		return false;
	}

	return true;
}

/****************************************************************************/
/* Function	：chkUrl( obj, clmname )										*/
/* 				obj：フォーム部品オブジェクト clmname：項目名称				*/
/* Note		：URLの文字チェック*/
/* Return	：true(正常) false（異常）										*/
/* Use Ex	：chkIzon( document.FormName.ObjName, ClmName )					*/
/****************************************************************************/
function chkUrl( obj, clmname ){
	var chkstr = obj.value;


//http://joessv02/gjnavi07/std/smn/sclsmn030.asp?TMP=&DA=1&PID=outlink&COMCD=207&DKSEM=1
	for (i=0; i<chkstr.length; i++)
	{
		if ((chkstr.charAt(i) != "-") && (chkstr.charAt(i) != ".") && (chkstr.charAt(i) != ":") && (chkstr.charAt(i) != "/") && 
				(chkstr.charAt(i) != "_") &&
				(chkstr.charAt(i) != "+") && (chkstr.charAt(i) != "?") && (chkstr.charAt(i) != "&") && (chkstr.charAt(i) != "=") && 
				(chkstr.charAt(i) != "a") && (chkstr.charAt(i) != "b") && (chkstr.charAt(i) != "c") && (chkstr.charAt(i) != "d") && 
				(chkstr.charAt(i) != "e") && (chkstr.charAt(i) != "f") && (chkstr.charAt(i) != "g") && (chkstr.charAt(i) != "h") && 
				(chkstr.charAt(i) != "i") && (chkstr.charAt(i) != "j") && (chkstr.charAt(i) != "k") && (chkstr.charAt(i) != "l") && 
				(chkstr.charAt(i) != "m") && (chkstr.charAt(i) != "n") && (chkstr.charAt(i) != "o") && (chkstr.charAt(i) != "p") && 
				(chkstr.charAt(i) != "q") && (chkstr.charAt(i) != "r") && (chkstr.charAt(i) != "s") && (chkstr.charAt(i) != "t") && 
				(chkstr.charAt(i) != "u") && (chkstr.charAt(i) != "v") && (chkstr.charAt(i) != "w") && (chkstr.charAt(i) != "x") && 
				(chkstr.charAt(i) != "y") && (chkstr.charAt(i) != "z") && (chkstr.charAt(i) != "1") && (chkstr.charAt(i) != "2") && 
				(chkstr.charAt(i) != "3") && (chkstr.charAt(i) != "4") && (chkstr.charAt(i) != "5") && (chkstr.charAt(i) != "6") && 
				(chkstr.charAt(i) != "7") && (chkstr.charAt(i) != "8") && (chkstr.charAt(i) != "9") && (chkstr.charAt(i) != "0") &&
				(chkstr.charAt(i) != "A") && (chkstr.charAt(i) != "B") && (chkstr.charAt(i) != "C") && (chkstr.charAt(i) != "D") && 
				(chkstr.charAt(i) != "E") && (chkstr.charAt(i) != "F") && (chkstr.charAt(i) != "G") && (chkstr.charAt(i) != "H") && 
				(chkstr.charAt(i) != "I") && (chkstr.charAt(i) != "J") && (chkstr.charAt(i) != "K") && (chkstr.charAt(i) != "L") && 
				(chkstr.charAt(i) != "M") && (chkstr.charAt(i) != "N") && (chkstr.charAt(i) != "O") && (chkstr.charAt(i) != "P") && 
				(chkstr.charAt(i) != "Q") && (chkstr.charAt(i) != "R") && (chkstr.charAt(i) != "S") && (chkstr.charAt(i) != "T") && 
				(chkstr.charAt(i) != "U") && (chkstr.charAt(i) != "V") && (chkstr.charAt(i) != "W") && (chkstr.charAt(i) != "X") && 
				(chkstr.charAt(i) != "Y") && (chkstr.charAt(i) != "Z")
			){

			alert(clmname + "はＵＲＬに使用できません");
			obj.focus();
			return false;
		}
	}

	return true;
}

/****************************************************************************/
/* END		　																*/
/****************************************************************************/
