//'------------------------------------------------------------------------------------
//'［ルーチン名    ］日付チェック処理
//'［機能概要      ］年月日が日付として妥当かをチェックし年月日のうち何処がエラーかを返す。
//'［引数説明      ］
//'					I : asYyyy..............年
//'					I : asMm................月
//'					I : asDd................日
//'					I : asSyori............."0"：半角有効
//'											"1"：全半角有効
//'					ﾘﾀｰﾝ.................... 0:正常、 -1:年エラー、 -2:月エラー、 -3:日エラー
//
//'［備考          ］"co00lastday"を使用
//'［修正履歴      ］
//'------------------------------------------------------------------------------------
function co00ymdchk(asYyyy, asMm, asDd, asSyori) {
	var lsYyyy;
	var lsMm;
	var lsDd;
	var liPos;

	if (asSyori == "1"){
		lsYyyy	= fnnumset(asYyyy);
		lsMm	= fnnumset(asMm);
		lsDd	= fnnumset(asDd);
	}else{
		lsYyyy	= asYyyy;
		lsMm	= asMm;
		lsDd	= asDd;
	}

	//'月、日が１桁の場合は0埋めする
	if (2 > lsMm.length) {
		lsMm = "0" + lsMm;
	}
	if (2 > lsDd.length) {
	    lsDd = "0" + lsDd;
	}

	//'年の桁数チェック
	if (4 != lsYyyy.length) {
		return -1;
	}

	//'年のチェック
	for (liPos = 0; liPos < 4; liPos++) {
		if (lsYyyy.substring(liPos, liPos + 1) < '0' || '9' < lsYyyy.substring(liPos, liPos + 1)) {
			return -1;
		}
	}
	//'0000年のチェック
	if (lsYyyy == '0000') {
		return -1;
	}

	//'月のチェック		
	for (liPos = 0; liPos < 2; liPos++) {
		if (lsMm.substring(liPos, liPos + 1) < '0' || '9' < lsMm.substring(liPos, liPos + 1)) {
			return -2;
		}
	}

	//'月ﾁｪｯｸ（１〜１２の範囲）		
	if (parseInt(lsMm, 10) < 1 || 12 < parseInt(lsMm, 10)) {
		return -2;
	}

	//'日チェック		
	for (liPos = 0; liPos < 2; liPos++) {
		if (lsDd.substring(liPos, liPos + 1) < '0' || '9' < lsDd.substring(liPos, liPos + 1)) {
			return -3;
		}
	}

	//'日数取得	
	iNisuu = co00lastday(parseInt(lsYyyy, 10), parseInt(lsMm, 10));
	if ((parseInt(lsDd, 10) < 1) || (iNisuu < parseInt(lsDd, 10))) {
		return -3;
	}
	return 0;
}

function fnnumset(asNum) {
	var lsNum;						//' 結果	
	var liPos;						//' 桁位置	
	var lsMoji;

	lsNum	= "";
	for (liPos = 0; liPos < asNum.length; liPos++) {
		lsMoji	=  asNum.substring(liPos, liPos + 1).charCodeAt(0);
		switch (lsMoji) {
			case "０".charCodeAt(0):
				lsNum	= lsNum + "0";
				break;
			case "１".charCodeAt(0):
				lsNum	= lsNum + "1";
				break;
			case "２".charCodeAt(0):
				lsNum	= lsNum + "2";
				break;
			case "３".charCodeAt(0):
				lsNum	= lsNum + "3";
				break;
			case "４".charCodeAt(0):
				lsNum	= lsNum + "4";
				break;
			case "５".charCodeAt(0):
				lsNum	= lsNum + "5";
				break;
			case "６".charCodeAt(0):
				lsNum	= lsNum + "6";
				break;
			case "７".charCodeAt(0):
				lsNum	= lsNum + "7";
				break;
			case "８".charCodeAt(0):
				lsNum	= lsNum + "8";
				break;
			case "９".charCodeAt(0):
				lsNum	= lsNum + "9";
				break;
			default:
				lsNum	= lsNum + asNum.substring(liPos, liPos + 1);
				break;
		}
	}

	return	lsNum;
}
