
// 오늘 날짜
var date = new Date();
// 날짜 정보가 들어있는 배열
var dateArray = new Array();
// select 태그 ID 정보가 들어있는 배열
var dateObjId = new Array();

// Option객체를 생성해서 Return
function createOption( text, value )
{
	var oOption = document.createElement("OPTION"); // Option 객체를 생성
	oOption.text = text; // Text(Keyword)를 입력
	oOption.value = value; // Value를 입력
	return oOption;
}

// 날짜 셀렉트 박스의 배열 하나 추가
// param #1 : 연도 selectBox Id
// param #2 : 연도 초기 값 ( 초기 생성시 적용 )
// param #3 : 월 selectBox Id
// param #4 : 월 초기 값 ( 초기 생성시 적용 )
// param #5 : 일 selectBox Id
// param #6 : 일 초기 값 ( 초기 생성시 적용 )
function initSelectBox( sYearId, sYear, sMonthId, sMonth, sDayId, sDay ){
	dateArray.push( new Array(sYear, sMonth, sDay) );
	dateObjId.push( new Array(sYearId, sMonthId, sDayId) );
	var arrNum = dateArray.length-1;
	makeYear( arrNum );
	makeMonth( arrNum );
	makeDay( arrNum );
}

// onChange EVENT 발생시 연도와 날짜에 대해서 새로고침
function changeSelectBox ( arrNum ){
	makeYear(arrNum);
	makeDay(arrNum);
}

// 연도 생성
function makeYear( arrNum ){
	// 연도는 올해 까지만
	var dYear = date.getYear();

	// Firefox에서는 getYear값이 현재-1900 의 값이므로 참고!!!
	// arrNum번째 배열에 저장된 year selectbox의 ID를 가져옴
	//alert(dateObjId[arrNum][0]);
	var yearObj = document.getElementById(dateObjId[arrNum][0]);
	// 현재 셀렉트박스에 선택된 값이 없으면 배열에 저장된 초기값으로 지정
	var selectValue = yearObj.value;
	if( selectValue=="" ) selectValue = dateArray[arrNum][0] ;
	// option을 초기화
	yearObj.options.length = 0;
	// 연도생성 ( 2006년부터 )

	for ( var year=2005; year<=dYear+1;  year++ )
	{
		yearObj.options.add( createOption( year, year ) );
	}

	yearObj.value = selectValue;
}

// 월 생성
function makeMonth( arrNum ){
	// arrNum번째 배열에 저장된 month selectbox의 ID를 가져옴
	var monthObj = document.getElementById( dateObjId[arrNum][1] );
	// 현재 셀렉트박스에 선택된 값이 없으면 배열에 저장된 초기값으로 지정
	var selectValue = monthObj.value;
	if( selectValue=="" ) selectValue = dateArray[arrNum][1] ;
	// option을 초기화
	monthObj.options.length = 0;

	// 월생성( 1~12월 고정 )
	var sTemp = "";
	for ( var month=1; month<=12;  month++ )
	{
		// 한자리 수 앞에는 0을 붙임
		if ( month < 10 ){
			sTemp = "0"+month;
		}
		else {
			sTemp = month;
		}
		monthObj.options.add( createOption( sTemp ,sTemp ) );
	}

	monthObj.value = selectValue;
}

// 일 생성
function makeDay( arrNum ){
	// arrNum번째 배열에 저장된 year selectbox의 ID를 가져옴
	var yearObj = document.getElementById( dateObjId[arrNum][0]  );
	// arrNum번째 배열에 저장된 month selectbox의 ID를 가져옴
	var monthObj = document.getElementById( dateObjId[arrNum][1]  );

	// 저장된 연,월의 1일 값을 갇는 Date객체 생성
	var dateTemp = new Date(yearObj.value, monthObj.value, 1); //
	// 그기서 unix time으로 1을 빼면.. 전날 23:59:59 가 됌
	var datePrevLast = new Date(dateTemp.getTime()-1);
	// arrNum번째 배열에 저장된 day selectbox의 ID를 가져옴
	var dayObj = document.getElementById( dateObjId[arrNum][2]  );
	// 현재 셀렉트박스에 선택된 값이 없으면 배열에 저장된 초기값으로 지정
	var selectValue = dayObj.value;
	if( selectValue=="" ) selectValue = dateArray[arrNum][2] ;

	// option을 초기화
	dayObj.options.length = 0;
	var sTemp = "";

	// 일 생성( 연도, 월에 따라 유동적으로 생성 )
	for ( var day=1; day<=datePrevLast.getDate();  day++ )
	{
		// 한자리 수 앞에는 0을 붙임
		if ( day < 10 ){
			sTemp = "0"+day;
		}
		else {
			sTemp = day
		}
		dayObj.options.add( createOption( sTemp ,sTemp ) );
	}

	// 월을 변경했을 때, 해당월의 최대일보다 크면 재조정

	if ( selectValue > datePrevLast.getDate() ) selectValue = datePrevLast.getDate();
	dayObj.value = selectValue;
}
