/*
 * カレンダーのプルダウンを生成する
 * 日を表示しない場合は、dayTagIdにnullを指定してください
 *
 * monthTagId	月のselectタグID(表示場所)
 * dayTagId		日のselectタグID(表示場所)
 * year			選択年
 * month		選択月
 * day			選択日
 * isRequired	年を必須項目とする場合 true、そうでない場合 false
 */
function buildCalendarPulldown(monthTagId,dayTagId,year,month,day,isRequired){
	var nowDate  = new Date();
	var nowYear = nowDate.getFullYear();

	var y = null;
	var m = null;
	var d = null;

	var unSelectedYear = false;
	if(year == null || year == ""){
		unSelectedYear = true;
	}

	// 全指定の場合、正しい日付オブジェクトを生成
	if((year != -1 && year != "") && (month != -1 && month != "") && (day != -1 && day != "")){
		var tmp_year = year;
		var tmp_month = month - 1;
		var tmp_day = day;
		var max_day = getLastDay(tmp_year,tmp_month);
		if (max_day < tmp_day){
			tmp_day = max_day;
		}

		var today  = new Date(tmp_year,tmp_month,tmp_day);
		y  = today.getFullYear();
		m = today.getMonth();
		d   = today.getDate();
	} else {
		y = year;
		if(month != null && month != ""){
			m = month - 1;
		}
		d = day;
	}


	var daymax = 1;
	if(m==1){
	    if((y%4 == 0) && (y%100 != 0) || (y%400 == 0)) {
	        daymax = 29;
	    }else{
	        daymax = 28;
	    }
	}else if(m == 3 || m == 5 || m == 8 || m == 10){
	    daymax = 30;
	}else{
	    daymax = 31;
	}


	var index=0;

	var monthSel = document.getElementById(monthTagId);
	if(monthSel && monthSel.options){
		monthSel.options.length = 0;

		index=0;
		// 年が指定されていない場合は空欄オプションを作成
		if(unSelectedYear){
			var opt = new Option("","");
			opt.selected = true;
			monthSel.options[index++] = opt;
		}

		for (i = 0; i< 12 ; i++){
			var opt = new Option(i + 1,i + 1);
			// 年が指定、月の指定が無い場合はデフォルトで1月を選択
			if (!unSelectedYear && m == null) {
				if (i == 0) {
					opt.selected = true;
				}
			} else {
				if (!unSelectedYear && m != null && i == m) {
					opt.selected = true;
				}
			}
			monthSel.options[index++] = opt;
		}
	}

	if (dayTagId != null && dayTagId.length != 0) {
		var daySel = document.getElementById(dayTagId);
		if(daySel && daySel.options){
			daySel.options.length = 0;

			index = 0;
			// 年が指定されていない場合は空欄オプションを作成
			if (unSelectedYear) {
				var opt = new Option("", "");
				opt.selected = true;
				daySel.options[index++] = opt;
			}
			for (i = 1; i <= daymax; i++) {
				var opt = new Option(i, i);
				// 年が指定、日の指定が無い場合はデフォルトで1日を選択
				if (!unSelectedYear && d == null) {
					if (i == 1) {
						opt.selected = true;
					}
				} else {
					if (!unSelectedYear && d != null && i == d) {
						opt.selected = true;
					}
				}
				daySel.options[index++] = opt;
			}
		}
	}
}

/*
 * 指定された年月の最終日を取得する
 * 
 * year : 年
 * month : 月
 */
function getLastDay(year, month){
	var daymax = 1;
	var y = year;
	var m = month;
	if(m==1){
	    if((y%4 == 0) && (y%100 != 0) || (y%400 == 0)) {
	        daymax = 29;
	    }else{
	        daymax = 28;
	    }
	}else if(m == 3 || m == 5 || m == 8 || m == 10){
	    daymax = 30;
	}else{
	    daymax = 31;
	}
	return daymax;
}

