//日のレンジチェック true:OK false:NG
function rangeCheck(fy, fm, fd, ty, tm, td) {
	var f;
	var t;

	f = joinYmd(fy, fm, fd, '1');
	t = joinYmd(ty, tm, td, '0');
	if (f == "ERROR" || t == "ERROR") {
		return false;
	}

	if(ckDate(f) == false) {
		return false;
	}
	if (ckDate(joinYmd(ty, tm, td, '1'))==false) {
		return false;
	}

	if (f !="" && t != "") {
		return Number(f) <= Number(t);
	}
	return true;

}

// 日付の結合、値がおかしい場合エラー。
function joinYmd(y, m, d, isStart) {
	if (y=="" && m=="" && d=="") {
		return "";
	}
	if (y==null && m==null && d==null) {
		return "";
	}

	var retDate;
	if (String(d) =="" ) {
		if (isStart == '1') {
			retDate= String(y) + String(m) + '01';
		} else {
			retDate= String(y) + String(m) + '31';
		}
	} else {
		retDate= String(y) + String(m) + String(d);
	}

	if (retDate.length != 8) {
		return "ERROR";
	} else {
		return retDate;
	}
}

/**
 * 日付チェック
 * @param datestr
 * @return
 */
function ckDate(datestr) {
	if (datestr.match(/^$/)) {
		return true;
	}
    // 正規表現による書式チェック
    if(!datestr.match(/^\d{4}\d{2}\d{2}$/)){
        return false;
    }
    var vYear = datestr.substr(0, 4) - 0;
    var vMonth = datestr.substr(4, 2) - 1; // Javascriptは、0-11で表現
    var vDay = datestr.substr(6, 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;
    }
}
