	var layerName;
	var bodyCode;

	var DOMonth = [31,28,31,30,31,30,31,31,30,31,30,31];
	var lDOMonth = [31,29,31,30,31,30,31,31,30,31,30,31];
	var day_header = ["ÀÏ", "¿ù", "È­", "¼ö", "¸ñ", "±Ý", "Åä"];

	var gNow = new Date();
	var today = new Date();

	var ret_name;

	function getXY(Obj) {
		for (var sumTop=0,sumLeft=0;Obj!=document.body;sumTop+=Obj.offsetTop,sumLeft+=Obj.offsetLeft, Obj=Obj.offsetParent);
		return {left:sumLeft,top:sumTop}
	}

	function clickon(day){
		var mon = (gNow.getMonth()+1).toString();
		var dat = day.toString();
		var retval;
		retval = gNow.getFullYear().toString();
		retval += "-"+ (mon.length < 2? "0" + mon:mon);
		retval += "-"+ (dat.length < 2? "0" + dat:dat);
		if(ret_name != null) ret_name.value = retval;
		ret_name.focus();
		hide();
	}

	function get_day_of_month(monthNo, p_year){
		if(monthNo == -1) {
			monthNo = 11;
			p_year--;
		} else if(monthNo == 12) {
			monthNo = 0;
			p_year++;
		}

		if ((p_year % 4) == 0) {
			if ((p_year % 100) == 0 && (p_year % 400) != 0) return Calendar.DOMonth[monthNo];
			return lDOMonth[monthNo];
		} else return DOMonth[monthNo];
	}

	function get_dow_of_mfirst(monthNo, p_year){
		if(monthNo == -1) {
			monthNo = 11;
			p_year--;
		} else if(monthNo == 12) {
			monthNo = 0;
			p_year++;
		}

		var vDate = new Date();
		vDate.setDate(1);
		vDate.setMonth(monthNo);
		vDate.setFullYear(p_year);
		return vDate.getDay();
	}

	function makeDay(sel, day, thrd, curday){
		var colorCode = "";
		bodyCode += "<td";
		if(thrd < 0 || thrd > 6) {
			bodyCode += " style='COLOR: gray;'>" + day + "</td>";
		} else {
			if(day == curday){ // Today
				colorCode = " COLOR: #C000C0;";
			} else {
				if(sel == 0) // Sunday
					colorCode = " COLOR: #C00000;";
				else if(sel == 6) // Saturday
					colorCode = " COLOR: #0000C0;";
				else
					colorCode = " COLOR: #000000;";
			}
			bodyCode += ">";
			bodyCode += "<a href=\"javascript:clickon('"+day+"');\" style='TEXT-DECORATION: none; " + colorCode + "'>";
			bodyCode += day;
			bodyCode += "</a>";
			bodyCode += "</td>";
		}
	}

	function makeWeek(startD, thrd){
		var startDay = startD;
		var cur_date = -1;
		var i;

		if(gNow.getFullYear() == today.getFullYear() && gNow.getMonth() == today.getMonth())
			cur_date = today.getDate();

		bodyCode += "<tr align=center>";

		if(thrd < 0) {  // First Week
			startDay = get_day_of_month(gNow.getMonth()-1, gNow.getFullYear()) + thrd + 1;
			for(i=0; i<7; i++, startDay++, thrd++) {
				if(startDay > get_day_of_month(gNow.getMonth()-1, gNow.getFullYear()) ) startDay = 1;
				makeDay(i, startDay, thrd, cur_date);
			}
		} else if(thrd > 0 && thrd < 7) { // Last Week
			for(i=0; i<7; i++, startDay++, thrd++) {
				if(startDay > get_day_of_month(gNow.getMonth(), gNow.getFullYear())) startDay = 1;
				makeDay(i, startDay, thrd, cur_date);
			}
		} else {
			for(i=0; i<7; i++, startDay++, thrd++) {
				makeDay(i, startDay, thrd, cur_date);
			}
		}
 		bodyCode += "</tr>"
		return startDay;
	}

	function makebody(){
		var startDay;
		startDay = makeWeek(1, 0-get_dow_of_mfirst(gNow.getMonth(), gNow.getFullYear()));

		while(startDay < (get_day_of_month(gNow.getMonth(), gNow.getFullYear())-6)) {
			startDay = makeWeek(startDay, 0);
		}
		startDay = makeWeek(startDay, (7-get_dow_of_mfirst(gNow.getMonth()+1, gNow.getFullYear()))%7);
	}

	function makeCal(){
		var i, startDay;
		bodyCode = "<table border='0' cellspacing='0' cellpadding='3' style='border: 2px solid #c9c9c9; width: 180px; background-color: #f1f1f1;'>";
		bodyCode += "  <tr>";
		bodyCode += "    <td>";
		bodyCode += "      <table border='0' cellspacing='0' cellpadding='3' style='width: 100%'>";
		bodyCode += "        <tr style='text-align: center'>";
		bodyCode += "          <td style='width: 25%'> <a href=\"javascript:changeCal("+ (gNow.getMonth()+1) +","+ (gNow.getFullYear()-1) +");\"><img src='" + _CALENDAR_IMAGE_DERECTORY + "/btn_prev_block.gif' align='absmiddle'></a><a href=\"javascript:changeCal("+ (gNow.getMonth()) +","+ gNow.getFullYear() +");\"><img src='" + _CALENDAR_IMAGE_DERECTORY + "/btn_prev.gif' align='absmiddle'></a> </td>";
		bodyCode += "          <td><b> " + gNow.getFullYear() + "³â " + (gNow.getMonth() + 1) + "¿ù </b></td>";
		bodyCode += "          <td style='width: 25%'> <a href=\"javascript:changeCal("+ (gNow.getMonth()+2) +","+ gNow.getFullYear() +");\"><img src='" + _CALENDAR_IMAGE_DERECTORY + "/btn_next.gif'  align='absmiddle'></a><a href=\"javascript:changeCal("+ (gNow.getMonth()+1) +","+ (gNow.getFullYear()+1) +");\"><img src='" + _CALENDAR_IMAGE_DERECTORY + "/btn_next_block.gif' align='absmiddle'></a> </td>";
		bodyCode += "        </tr>";
		bodyCode += "			 </table>";
		bodyCode += "		 </td>";
		bodyCode += "  </tr>";
		bodyCode += "  <tr>";
		bodyCode += "		 <td>";
		bodyCode += "			 <table border='0' cellspacing='0' cellpadding='3' style='width: 100%'>";
		bodyCode += "        <tr>";
		bodyCode += "          <td style='background-color: #ffffff'>";
		bodyCode += "            <table border='0' cellspacing='0' cellpadding='3' style='width: 100%'>";
		bodyCode += "              <tr align=center>";
		bodyCode += "                <td style='color: #e43535'> ÀÏ </td>";
		bodyCode += "                <td> ¿ù </td>";
		bodyCode += "                <td> È­ </td>";
		bodyCode += "                <td> ¼ö </td>";
		bodyCode += "                <td> ¸ñ </td>";
		bodyCode += "                <td> ±Ý </td>";
		bodyCode += "                <td style='color: #436fc8'> Åä </td>";
		bodyCode += "              </tr>";
		bodyCode += "              <tr height=1>";
		bodyCode += "                <td colspan=7 bgcolor='#0fb338'></td>";
		bodyCode += "              </tr>";

		makebody();

		bodyCode += "            </table>";
		bodyCode += "          </td>";
		bodyCode += "        </tr>";
		bodyCode += "      </table>";
		bodyCode += "    </td>";
		bodyCode += "  </tr>";
		bodyCode += "  <tr>";
		bodyCode += "    <td>";
		bodyCode += "		   <table border='0' cellspacing='0' cellpadding='3' style='width: 100%'>";
		bodyCode += "        <tr>";
		bodyCode += "					<td>";
		bodyCode += "						<table border='0' cellspacing='0' cellpadding='3' style='width: 100%'>";
		bodyCode += "							<tr>";
		bodyCode += "								<td> ¿À´Ã : " + (today.getMonth() + 1) +"¿ù " + today.getDate() + "ÀÏ [" + day_header[today.getDay()] + "]</td>";
		bodyCode += "								<td align='right'><a href='javascript:hide();'><img src='" + _CALENDAR_IMAGE_DERECTORY + "/btn_close_x.gif' align='absmiddle'></a></td>";
		bodyCode += "							</tr>";
		bodyCode += "						</table>";
		bodyCode += "					</td>";
		bodyCode += "        </tr>";
		bodyCode += "      </table>";
		bodyCode += "    </td>";
		bodyCode += "  </tr>";
		bodyCode += "</table>";
	}

	function changeCal(s_mon, s_year){
		if(s_mon != null && s_year != null ) {
			if(s_mon == 0) {
				s_mon = 12;
				s_year--;
			} else if(s_mon == 13) {
				s_mon = 1;
				s_year++;
			}
			gNow.setMonth(s_mon-1);
			gNow.setFullYear(s_year);
		}
		makeCal();
		document.all[layerName].innerHTML = bodyCode;
	}

	function showXY(location){
		var X, Y;
		X = getXY(location).left;
		Y = getXY(location).top + 20;
		document.all[layerName].style.left = X;
		document.all[layerName].style.top = Y;
		changeCal();
	}

	function hide(){
		document.all[layerName].innerHTML = "";
	}

	function createLayer(Lname){
		layerName = Lname;
		document.write("<DIV ID="+ Lname +" STYLE='position:absolute;top:10;left:15;z-index=4'></DIV>");
	}
