	var C_DAYS_IN_MONTH1 = new Array( 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 );
	var C_DAYS_IN_MONTH2 = new Array( 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 );
		
	// 現在の日付SELECTの最大日を取得する.
	// 引数：フォームの日にちSELECTオブジェクト	
	function getCurrentMaxDay( objDay ) {
		return eval( objDay.options[ objDay.options.length -1].value );
	}

	// 指定された年＆月の最大日を返す.
	// 引数：フォームの年SELECTオブジェクト	
	// 引数：フォームの月SELECTオブジェクト	
	function getMaxDay( objYear,  objMonth ) {
		year = eval( objYear.options[ objYear.selectedIndex ].value );
		month = eval( objMonth.options[ objMonth.selectedIndex ].value );
		
		// 年または月が非選択なら無条件で31を返す.
		if ( isNaN(year) || isNaN(month) ) {
			return 31;
		}
					
		// うるう年かどうかを判定し、月ごとの日数データをセット
		arrDays = ( (year % 4) || !(year % 100) ) ? C_DAYS_IN_MONTH1 : C_DAYS_IN_MONTH2;
		
		return eval( arrDays[month -1] );			
	}
	
	// 日付SELECTのOptionを調整する.
	// 引数：フォームの年SELECTオブジェクト	
	// 引数：フォームの月SELECTオブジェクト	
	// 引数：フォームの日にちSELECTオブジェクト	
	function setDaySelectOptionImpl( objYear, objMonth, objDay ) {			
		// 現在の設定日を保持
		dayIndex = objDay.selectedIndex;  

		// 選択されている月の末日を取得
		maxDay = getMaxDay( objYear, objMonth );

		// 追加する場合と減らす場合に分けて処理			
		while ( getCurrentMaxDay( objDay ) > maxDay ) {
			objDay.options[ objDay.options.length -1] = null;
		}
		while ( getCurrentMaxDay( objDay ) < maxDay ) {
			nextVal =  1 + getCurrentMaxDay( objDay );
			objDay.options[ objDay.options.length ] = new Option(nextVal, nextVal);
		}
		
		objDay.selectedIndex =Math.min( dayIndex, (objDay.options.length -1) );
	}
	

