
/*달력 자바 스크립트*/

var selectItem; //어떤 달력 선택인지 확인하기 위한 전역변수
var calObjdoc;
var calInput;
var fvStr;
function calendar_init()
{
	var date = new Date;
	var year = date.getYear();
	var month = date.getMonth();
	
	var calStyle = "\
	<style>\
	body {margin:0}\
	select {font:8pt tahoma}\
	a {text-decoration:none;color:#7594c2}\
	.tahoma {font:8pt tahoma}\
	.white {color:#ffffff}\
	.today {font-weight:bold;color:#ff0000}\
	</style>\
	";

	var calLayout = "\
	<form name=frmCalendar style='display:inline;'>\
	<table width=180 cellpadding=0 cellspacing=0 style='border: 1px #7594c2 solid;'>\
	<tr>\
		<td bgcolor=#7594c2 style='padding:0'>\
		<table width=100% cellpadding=0 cellspacing=0 class=tahoma>\
		<tr>\
			<td width=30><font color=#ffffff onClick='parent.calendar_move(-1)' style='cursor:pointer' size='4'>\u25C0</font></td>\
			<td align=center>\
			<select name=year onChange=parent.calendar_update()></select>\
			<select name=month onChange=parent.calendar_update()></select>\
			</td>\
			<td width=30 align=right><font color=#ffffff onClick='parent.calendar_move(1)' style='cursor:pointer' size='4'>\u25B6</font></td>\
		</tr>\
		</table>\
		</td>\
	</tr>\
	<tr>\
		<td>\
		<table width=100% id=calInner class=tahoma>\
		<tr><th style='color:red'>\uC77C</th><th style='color:#666666'>\uC6D4</th><th style='color:#666666'>\uD654</th><th style='color:#666666'>\uC218</th><th style='color:#666666'>\uBAA9</th><th style='color:#666666'>\uAE08</th><th style='color:blue'>\uD1A0</th></tr>\
		<col align=center span=7>\
		</table>\
		</td>\
	</tr>\
	<tr>\
		<td bgcolor=#7594c2>\
		<table width=100% class=tahoma>\
		<tr>\
			<td><a href='javascript:parent.calendar_update(" + year + "," + month + ")' onfocus=blur() class=white>\
			<b>\uC624\uB298</b> (" + year + "-" + parent.calendar_addZero(month+1) + ")\
			</a></td>\
			<td align=right><a href='javascript:parent.calendar_close()' class=white>close</a></td>\
		</tr>\
		</table>\
		</td>\
	</tr>\
	</table>\
	</form>\
	";
	
	calObj = document.getElementById('calObj');
	//document.write(calObj);

	calObjdoc = $('calObj').contentWindow.document;
	calObjdoc.open();
	calObjdoc.write(calStyle);
	calObjdoc.write(calLayout);
	calObjdoc.close();
	calendar_setup();
	
}

function calendar_setup()
{
	var objMonth = calObjdoc.frmCalendar.month;
	for (i=0;i<12;i++) objMonth.options[i] = new Option(i+1+"\uC6D4",i);

	var date = new Date;
	var year = date.getYear();
	var month = date.getMonth();
	calendar_update(year,month);
}

function calendar_update(year,month)
{
	if (isNaN(year)){
		year = calObjdoc.frmCalendar.year.value;
		month = calObjdoc.frmCalendar.month.value;
	}

	year = parseInt(year);

	var objYear = calObjdoc.frmCalendar.year;
	var objMonth = calObjdoc.frmCalendar.month;

	for (i=0;i<5;i++) objYear.options[i] = new Option(year+i-2+"\uB144",year+i-2);
	objYear.selectedIndex = 2;
	objMonth.selectedIndex = month;

	calendar_inner(year,month);
}

function calendar_inner(year,month)
{
	var date = new Date;
	var Y = date.getYear();
	var m = date.getMonth();
	var d = date.getDate();
	
	var firstDay = new Date(year,month);
	firstDay = firstDay.getDay();
	var lastDay = calendar_lastDay(year,month);

	var obj = calObjdoc.getElementById('calInner');

	for (i=obj.rows.length;i>1;i--) obj.deleteRow(i-1);

	oTr = obj.insertRow();
	for (i=0;i<firstDay;i++) oTr.insertCell();
	cnt = i;

	for (i=1;i<=lastDay;i++){
		if (cnt%7==0) oTr = obj.insertRow();
		oTd = oTr.insertCell();
		oTd.style.cursor = "pointer";		
		oTd.style.backgroundColor = "#F1F1F1";
		oTd.color = "black";		
		if (Y==year && m==month && d==i){
			oTd.color = "black";
			oTd.style.backgroundColor = "#d8e8ff";
			oTd.style.fontWeight = "bold";
		}else if (Y == year && m == month && d < i || Y == year && m < month || Y < year || Y < year && m < month) {
			oTd.color = "#A1A1A1";
		}
		else {
			oTd.onmouseover = function(){this.style.backgroundColor = "#316AC5"; this.style.color = "#ffffff"}
			oTd.onmouseout = function(){this.style.backgroundColor = "#F1F1F1"; this.style.color = this.color}
		}
			
		oTd.innerText = i;
		
		oTd.style.color = oTd.color;
		
		if (Y == year && m == month && d < i || Y == year && m < month || Y < year || Y < year && m < month) {
			oTd.onclick = function(){alert('\uC120\uD0DD\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.');}
		}
		else {
			oTd.onclick = function(){parent.calendar_print(this.innerText)}
		}
		cnt++;
		
	}
	document.getElementById('calObj').height = calObjdoc.body.scrollHeight;
}

function calendar_move(idx)
{
	var year = calObjdoc.frmCalendar.year.value;
	var month = parseInt(calObjdoc.frmCalendar.month.value) + idx;

	if (month<0){ year--; month=11; }
	if (month==12){ year++; month=0; }

	calendar_update(year,month);
}

function calendar()
{
	calInput = event.srcElement;

	var xpos = get_objectLeft(calInput);
	var ypos = get_objectTop(calInput) + calInput.offsetHeight + 2;

	var calObj = document.getElementById('calObj');
	
	calObj.style.visibility = "visible";
	calObj.style.pixelLeft = xpos - 102;
	calObj.style.pixelTop = ypos + 1;
	calObj.style.display = "block";
}



function calendar_print(day)
{
	var year = calObjdoc.frmCalendar.year.value;
	var month = calObjdoc.frmCalendar.month.value;
	
	selectItem.value = calendar_format(year,month,day);
	
	//2009.11.09.KHS. 그리드 바인딩을 해야하는 경우 부모창의 함수호출.
	if (fvStr == "BIND") {
		parent.fnSetValueCalendar(selectItem.id, selectItem.value);
	}
	
	calendar_close();
}

function calendar_format(year,month,day)
{
	month++;
	var format = (calInput.getAttribute("format")!=null) ? calInput.format : "%Y%m%d";

	var Y = year;
	var y = year.substr(0,4);
	var m = calendar_addZero(month);
	var d = calendar_addZero(day);
	
	/*
	format = format.replace(/%Y/g, Y);
	format = format.replace(/%y/g, y);
	format = format.replace(/%m/g, m);
	format = format.replace(/%d/g, d);*/
	
	format=y+"-"+m+"-"+d;
	
	return format;
}

function calendar_close()
{
	var calObj = document.getElementById('calObj');
	calObj.style.display = "none";
}

function calendar_addZero(str){
	return ((str < 10) ? "0" : "") + str;
}

function calendar_lastDay(year,month){
	var leap;
	var last = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
	if (year%4==0)		leap = true;
	if (year%100==0)	leap = false;
	if (year%400==0)	leap = true;
	if (leap) last[1] = 29;
	return last[month];
}

function get_objectTop(obj){
	
	
	if (obj.offsetParent == document.body) {
	
		return obj.offsetTop;
	} 

	else {
		
		return obj.offsetTop + get_objectTop(obj.offsetParent);
		
	} 
}

function get_objectLeft(obj){

	if (obj.offsetParent == document.body) {
		return obj.offsetLeft;
			} 
	else {
		return obj.offsetLeft + get_objectLeft(obj.offsetParent);
	} 
}

function dateClicked(obj, arg) {
	selectItem = obj;
	fvStr = arg;
	calendar();	
}

calendar_init();

