
var objPopup = window.createPopup();
var objTargetField;

var pop_top;
var pop_left;
var cal_width;
var cal_height;

var orgObjDate;
var intOrgYear = new Number(), intOrgMonth = new Number(), intOrgDay = new Number();

var thisObjDate, thisDate, thisYear, thisMonth, thisDay;
var intThisYear = new Number(), intThisMonth = new Number(), intThisDay = new Number();
var intThisDate;

var nowObjDate, nowDate, nowYear, nowMonth, nowDay;
var intNowYear = new Number(), intNowMonth = new Number(), intNowDay = new Number();

nowObjDate = new Date();
nowYear = nowObjDate.getFullYear();
nowMonth = nowObjDate.getMonth()+1;
nowDay = nowObjDate.getDate();
nowDate = nowYear + "-" +  nowMonth + "-" + nowDay;

intNowYear = parseInt(nowYear,10);
intNowMonth = parseInt(nowMonth,10);
intNowDay = parseInt(nowDay,10);
intNowDate = intNowYear + "-" +  intNowMonth + "-" + intNowDay;

var intPrevYear, intPrevMonth;
var intNextYear, intNextMonth;

var arrMonthsDay = new Array(0,31,28,31,30,31,30,31,31,30,31,30,31);


function GetObjectHeight(tObj) {
	//if (tObj.offsetParent == document.body) {
		return tObj.offsetHeight;
	//} else {
		//return tObj.offsetHeight + GetObjectHeight(tObj.offsetParent);
	//}
}

function GetObjectTop(tObj) {
	if (tObj.offsetParent == document.body) {
		return tObj.offsetTop;
	} else {
		return tObj.offsetTop + GetObjectTop(tObj.offsetParent);
	}
}

function GetObjectLeft(tObj) {
	if (tObj.offsetParent == document.body) {
		return tObj.offsetLeft;
	} else {
		return tObj.offsetLeft + GetObjectLeft(tObj.offsetParent);
	}
}



function OpenCalendar(targetfield, defaultdate) {

	objTargetField = targetfield;

	pop_top = document.body.clientTop + GetObjectTop(targetfield) + GetObjectHeight(targetfield) - document.body.scrollTop;
	pop_left = document.body.clientLeft + GetObjectLeft(targetfield) -  document.body.scrollLeft;
	
	orgObjDate = objTargetField.value.split("-");
	if (orgObjDate.length == 3) {
		intOrgYear = parseInt(orgObjDate[0],10);
		intOrgMonth = parseInt(orgObjDate[1],10);
		intOrgDay = parseInt(orgObjDate[2],10);
	} else {
		intOrgYear = 0;
		intOrgMonth = 0;
		intOrgDay = 0;
	}

	thisObjDate = defaultdate.split("-");
	if (thisObjDate.length == 3) {
		thisYear = thisObjDate[0];
		thisMonth = thisObjDate[1];
		thisDay = thisObjDate[2];
	} else {
		thisYear = nowYear;
		thisMonth = nowMonth;
		thisDay = nowDay;
	}
	thisDate = thisYear + "-" +  thisMonth + "-" + thisDay;
	
	intThisYear = parseInt(thisYear,10);
	intThisMonth = parseInt(thisMonth,10);
	intThisDay = parseInt(thisDay,10);
	intThisDate = intThisYear + "-" +  intThisMonth + "-" + intThisDay;
	
	switch(intThisMonth) {
		case 1:
			intPrevYear = intThisYear -1;
			intPrevMonth = 12;
			intNextYear = intThisYear;
			intNextMonth = 2;
			break;
		case 12:
			intPrevYear = intThisYear;
			intPrevMonth = 11;
			intNextYear = intThisYear + 1;
			intNextMonth = 1;
			break;
		default:
			intPrevYear = intThisYear;
			intPrevMonth = intThisMonth - 1;
			intNextYear = intThisYear;
			intNextMonth = intThisMonth + 1;
			break;
	}

	CreateCalendar();

}

function CloseCalendar() {
	objPopup.hide();
}

function CreateCalendar() {

	var calendarHtml = "";
	calendarHtml += "<div id='calendarLayer' style='z-index:+999; position:absolute;'>";
	calendarHtml += "<table border='0' align='center' cellpadding='0' cellspacing='0' style='border-width:1; border-style:solid; border-color:#A0A0A0; font-size:9pt'>";
	
	//HEADER (½ÃÀÛ)/////////////////////////////////////////////////////////////////////////////////
	calendarHtml += "	<tr>";
	calendarHtml += "		<td id='calendarTop' align='center' bgcolor='#F4F4F4'>";
	
	calendarHtml += "			<table width='100%' border='0' align='center' cellpadding='2' cellspacing='0' style='font-size:9pt;' bgcolor='F4F4F4'>";
	calendarHtml += "				<tr>";
	
	calendarHtml += "					<td align='center'>";
	calendarHtml += "						<select name='selYear' align='absmiddle' onchange='parent.ChangeCalendar(this.value," + intThisMonth + "," + intThisDay + ");'>";
	for(var iyear=2002; iyear<=2010; iyear++) {
		if(iyear == intThisYear) {
			calendarHtml += "					<option value='" + iyear + "' selected>" + iyear + "</option>\n";
		} else {
			calendarHtml += "					<option value='" + iyear + "'>" + iyear + "</option>\n";
		}
	}
	calendarHtml += "						</select>&nbsp;";
	calendarHtml += "						<a title='ÀÌÀü´Þ' style='cursor:hand;' onclick='parent.ChangeCalendar(" + intPrevYear + "," + intPrevMonth + "," + intThisDay + ");' onfocus='this.blur();'>¢¸</a>";
	calendarHtml += "						<select name='selMonth' align='absmiddle' onchange='parent.ChangeCalendar(" + intThisYear + ",this.value," + intThisDay + ");'>";
	for(var imonth=1; imonth<=12; imonth++) {
		if(imonth == intThisMonth) {
			calendarHtml += "					<option value='" + imonth + "' selected>" + imonth + "</option>\n";
		} else {
			calendarHtml += "					<option value='" + imonth + "'>" + imonth + "</option>\n";
		}
	}
	calendarHtml += "						</select>";
	calendarHtml += "						<a title='´ÙÀ½´Þ' style='cursor:hand;' onclick='parent.ChangeCalendar(" + intNextYear + "," + intNextMonth + "," + intThisDay + ");' onfocus='this.blur();'>¢º</a>";
	calendarHtml += "					</td>";
	
	calendarHtml += "					<td align='right' width='20'>";
	calendarHtml += "						<input type='button' value='x' title='´Ý±â' style='font-size:9pt; color:#000000; border-width:1;  border-color:#808080; border-style:solid; cursor:hand; font-weight:bold; height:20px; width:20px; text-align:center; vertical-align:bottom;' align='absmiddle' onclick='parent.CloseCalendar();' onfocus='this.blur();'>";
	calendarHtml += "					</td>";
	
	calendarHtml += "				</tr>";
	calendarHtml += "			</table>";
	
	calendarHtml += "		</td>";
	calendarHtml += "	</tr>";
	//HEADER (³¡)///////////////////////////////////////////////////////////////////////////////////
	
	//BODY (½ÃÀÛ)///////////////////////////////////////////////////////////////////////////////////
	
	var startObjectDate, startDay, startWeek;
	var lastObjectDate, lastDay, lastWeek;
	
	startObjectDate = new Date(intThisYear, intThisMonth-1, 1);
	startDay = startObjectDate.getDate();
	startWeek = startObjectDate.getDay();
	
	if((intThisYear % 4)==0) {
		if ((intThisYear % 100) == 0) {
			if ((intThisYear % 400) == 0) {
				arrMonthsDay[2] = 29;
			}
		} else {
			arrMonthsDay[2] = 29;
		}
	} else {
		arrMonthsDay[2] = 28;
	}
	lastDay = arrMonthsDay[intThisMonth];
	lastObjectDate = new Date(intThisYear, intThisMonth-1, lastDay);
	lastDay = lastObjectDate.getDate();
	lastWeek = lastObjectDate.getDay();
	
	var i, j, k;
	var m = 0;
	var loofWeek = 1;
	
	var tmpChrColor = "#0000000";
	var tmpBgColor = "#FFFFFF";
	var tmpChrUnderline = "none";
	var tmpChrBold = "normal";
	
	calendarHtml += "	<tr>";
	calendarHtml += "		<td id='calendarBody' align='center'>";
	
	calendarHtml += "			<table border='0' align='center' cellpadding='4' cellspacing='2' style='font-size:9pt'>";
	
	calendarHtml += "				<tr bgcolor='#F4F4F4'>";
	calendarHtml += "					<td align='center' style='color:#FF0000;'>ÀÏ</td>";
	calendarHtml += "					<td align='center'>¿ù</td>";
	calendarHtml += "					<td align='center'>È­</td>";
	calendarHtml += "					<td align='center'>¼ö</td>";
	calendarHtml += "					<td align='center'>¸ñ</td>";
	calendarHtml += "					<td align='center'>±Ý</td>";
	calendarHtml += "					<td align='center' style='color:#3300CC;'>Åä</td>";
	calendarHtml += "				</tr>";
	
	calendarHtml += "				<tr>";
	
	for(i=0; i<startWeek; i++) {
		m = m + 1;
		calendarHtml += "					<td align='right'></td>";
	}
	
	for(j=startDay; j<=lastDay; j++) {
		
		m = m + 1;
		
		switch(m % 7) {
			case 0:
				tmpChrColor = "#3300CC";
				break;
			case 1:
				tmpChrColor = "#FF0000";
				break;
			default:
				tmpChrColor = "#0000000";
				break;
		}
		
		if(intNowYear == intThisYear && intNowMonth == intThisMonth && intNowDay == j) {
			tmpBgColor = "#FFEDD2";
		} else {
			tmpBgColor = "#FFFFFF";
		}
		
		if(intOrgYear == intThisYear && intOrgMonth == intThisMonth && intOrgDay == j) {
			tmpChrUnderline = "underline";
			tmpChrBold = "bold";
		} else {
			tmpChrUnderline = "none";
			tmpChrBold = "normal";
		}
		
		calendarHtml += "					<td align='right' style='cursor:hand; color:" + tmpChrColor + "; background-color:" + tmpBgColor + "; text-decoration:" + tmpChrUnderline + "; font-weight:" + tmpChrBold + ";' onclick='parent.SelectedDate(" + intThisYear + "," + intThisMonth + "," + j + ");' onmouseover='this.style.backgroundColor = \"#FFCFC4\";' onmouseout='this.style.backgroundColor = \"" + tmpBgColor + "\";'>" + j + "</td>";
		
		if((m % 7) == 0) {
			calendarHtml += "					</tr><tr>";
		}
	
	}
	
	for(k=(lastWeek+1); k<=6; k++) {
		m = m + 1;
		calendarHtml += "					<td align='right'></td>";
	}
	
	var cal_width = 170;
	var cal_height;
	
	if((m/7) > 5) {
		cal_height = 224;
	} else {
		cal_height = 204;
	}
	
	calendarHtml += "				</tr>";
	
	calendarHtml += "			</table>";
	
	calendarHtml += "		</td>";
	calendarHtml += "	</tr>";
	//BODY (³¡)/////////////////////////////////////////////////////////////////////////////////////
	
	//FOOTER (½ÃÀÛ)////////////////////////////////////////////////////////////////////////////////
	calendarHtml += "	<tr>";
	calendarHtml += "		<td id='calendarFooter' align='center'>";
	calendarHtml += "			<table width='100%' border='0' align='center' cellpadding='4' cellspacing='2' style='font-size:9pt;' bgcolor='#F4F4F4'>";
	calendarHtml += "				<tr>";
	calendarHtml += "					<td align='center'>";
	calendarHtml += "						<a title='¿À´Ã³¯Â¥¼±ÅÃ' style='cursor:hand;' onclick='parent.ChangeCalendar(" + intNowYear + "," + intNowMonth + "," + intNowDay + ");' onfocus='this.blur();'>¿À´ÃÀº " + intNowYear + "³â " + intNowMonth + "¿ù " + intNowDay + "ÀÏ</a>";
	calendarHtml += "					</td>";
	calendarHtml += "				</tr>";
	calendarHtml += "			</table>";
	calendarHtml += "		</td>";
	calendarHtml += "	</tr>";
	//FOOTER (³¡)//////////////////////////////////////////////////////////////////////////////////
	
	calendarHtml += "</table>";
	calendarHtml += "</div>";
	
	objPopup.document.body.innerHTML = calendarHtml;
	objPopup.show(pop_left, pop_top, cal_width, cal_height, document.body);

}

function ChangeCalendar(y, m, d) {
	
	var returnDate, returnYear, returnMonth, returnDay;
	
	returnYear = y;
	
	if(m < 10) {
		returnMonth = "0" + m;
	} else {
		returnMonth = m;
	}
	
	if(d < 10) {
		returnDay = "0" + d;
	} else {
		returnDay = d;
	}
	
	returnDate = returnYear + "-" + returnMonth + "-" + returnDay;
	
	OpenCalendar(objTargetField, returnDate);
	
}

function SelectedDate(sy, sm, sd) {
	
	var reDate, reYear, reMonth, reDay;
	
	reYear = sy;
	
	if(sm < 10) {
		reMonth = "0" + sm;
	} else {
		reMonth = sm;
	}
	
	if(sd < 10) {
		reDay = "0" + sd;
	} else {
		reDay = sd;
	}
	
	reDate = reYear + "-" + reMonth + "-" + reDay;
	
	objTargetField.value = reDate;
	CloseCalendar();
	
}

