/***********************************************************
 * 関数名：日付チェック関数
 * 引　数：yyyy/mm/dd形式の日付文字列
 * 戻り値：true:日付形式が正しい、false:日付形式が不正
 ***********************************************************/
function checkDateYYYYMMDD(strDate) {
    // 正規表現による書式チェック
    if (!strDate.match(/^\d{2}\/\d{2}\/\d{2}$/)) {
        return false;
    }
    
    var vYear = strDate.substr(0, 4) - 0;
    var vMonth = strDate.substr(5, 2) - 1; // Javascriptは、0-11で表現
    var vDay = strDate.substr(8, 2) - 0;

    // 月,日の妥当性チェック
    if (vMonth >= 0 && vMonth <= 11 && vDay >= 1 && vDay <= 31) {
        var vDt = new Date(vYear, vMonth, vDay);
        if (isNaN(vDt)) {
            return false;
        } else if (vDt.getFullYear() == vYear && vDt.getMonth() == vMonth && vDt.getDate() == vDay) {
            return true;
        } else {
            return false;
        }
    } else {
        return false;
    }
}


/***********************************************************
 * 関数名：日付チェック関数
 * 引　数：year:年（和暦）
 *         month:月（2桁）
 *         day:日（2桁）
 * 戻り値：true:日付形式が正しい、false:日付形式が不正
 ***********************************************************/
function checkDate(year, month, day) {
	
    if (!month.match(/\d{2}$/)) {
        return false;
    }
	
    if (!day.match(/\d{2}$/)) {
        return false;
    }

    var vYear = wareki2seireki("H" + year) - 0;
    var vMonth = month - 1; // Javascriptは、0-11で表現
    var vDay = day - 0;
	
	if (vYear == -1) {
		return false;
	}
	
    // 月,日の妥当性チェック
    if (vMonth >= 0 && vMonth <= 11 && vDay >= 1 && vDay <= 31) {
        var vDt = new Date(vYear, vMonth, vDay);
        if (isNaN(vDt)) {
            return false;
        } else if (vDt.getFullYear() == vYear && vDt.getMonth() == vMonth && vDt.getDate() == vDay) {
            return true;
        } else {
            return false;
        }
    } else {
        return false;
    }
}


/***********************************************************
 * 関数名：和暦→西暦変換処理
 * 引　数：和暦年
 * 戻り値：西暦年（該当なし及び範囲外の場合は-1を返却）
 ***********************************************************/
function wareki2seireki(str) {
	var m = str.charAt(0).toUpperCase();
	var y = eval(str.substring(1,9999));
	if ((m == "H") && (y > 0) && (y < 50)) return 1988 + y;	//　平成
	if ((m == "S") && (y > 0) && (y < 65)) return 1925 + y;	//　昭和
	if ((m == "T") && (y > 0) && (y < 16)) return 1911 + y;	//　大正
	if ((m == "M") && (y > 0) && (y < 46)) return 1867 + y;	//　明治
	return -1;
}

