	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 = ["SUN", "MON", "TUS", "WED", "THU", "FRI", "SAT"];
	var monEng = ["January","February","March","April","May","June","July","August","September","October","November","December"];
	var gNow = new Date();
	var today = new Date();

	var ret_name;

	function showCalendar(returnInput, calendarIndicator) {

			ret_name = $(returnInput); 
			var year = null;
			var month = null;
			
			if ($(returnInput).value!="") {
				var dateArr = $(returnInput).value.split('-');
				if (dateArr.length == 3) {
					year = dateArr[0];
					month = dateArr[1];
				}
			}
			showXY($(calendarIndicator), month, year);
		}
	
	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;
		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)
			{ // 오늘
				colorCode = " COLOR: #C000C0;";
			} 
			else 
			{
				if(sel == 0) // 일요일
					colorCode = " COLOR: #C00000;";
				else if(sel == 6) // 토요일
					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 >";

		if(thrd < 0) 
		{  // 첫번째 주 
			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) 
		{ // 마지막 주
			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 = "<div class='date'>";		
		bodyCode += "<a href=\"javascript:changeCal("+ (gNow.getMonth()) +","+ gNow.getFullYear() +");\" style='COLOR: #000066; TEXT-DECORATION: none'><img src='/kr/seoul/img/common/btn_prev.gif' alt='prev' /></a>";
		bodyCode += "<b> " + monEng[(parseInt(gNow.getMonth(),10))]+"  "+gNow.getFullYear() + " </b>&nbsp;";
		bodyCode += "<a href=\"javascript:changeCal("+ (parseInt(gNow.getMonth(),10) + 2) +","+ gNow.getFullYear() +");\" style='COLOR: #000066; TEXT-DECORATION: none'><img src='/kr/seoul/img/common/btn_next.gif' alt='next' /></a></div>";
		bodyCode += "<div class='close'><a href=\"javascript:hide();\"><img src='/kr/seoul/img/calendar/btn_close.gif' alt='close' /></a></div>";
		bodyCode += "<table class='cal'>";
		bodyCode += "<colgroup>";
		bodyCode += "<col width='20' /><col width='20' /><col width='20' /><col width='20' /><col width='20' /><col width='20' /><col width='20' />";
		bodyCode += "</colgroup>";
		bodyCode += "        <tr>";
		bodyCode += "                <td class='week sun'> S </td>";
		bodyCode += "                <td class='week'> M </td>";
		bodyCode += "                <td class='week'> T </td>";
		bodyCode += "                <td class='week'> W </td>";
		bodyCode += "                <td class='week'> T </td>";
		bodyCode += "                <td class='week'> F </td>";
		bodyCode += "                <td class='week sat'> S </td>";
		bodyCode += "              </tr>";
	
		makebody();
		
		bodyCode += "            </table>";
		bodyCode += "          <div class='today'><span class='point'>today</span> " + (today.getMonth() + 1) +". " + today.getDate() + ". " + day_header[today.getDay()] + "</div>";
		
		bodyCode += "</div>";
	}

	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++;
			}
			//alert(s_mon);
			gNow.setMonth(s_mon-1);
			gNow.setMonth(s_mon-1);
			gNow.setFullYear(s_year);
			//alert(gNow.getFullYear() + " : " + gNow.getMonth());
			
		}
		makeCal();
		document.getElementById(layerName).innerHTML = bodyCode;
	}
		
	function showXY(location)
	{
		document.getElementById(layerName).style.visibility="visible";
		var X, Y;
		X=getBoundsFront(location).left ;
		Y=getBoundsFront(location).top ;

		document.getElementById(layerName).style.left = (X-50)+"px";
		document.getElementById(layerName).style.top = Y+"px";
		document.getElementById(layerName).style.zIndex=100;
		changeCal();
	}
	
	function hide()
	{
		document.getElementById(layerName).style.visibility="hidden";
	}

	function createLayer(Lname)
	{
		layerName = Lname;
		document.write("<DIV ID="+ Lname +"  style='z-index:100;visibility:hidden;'></DIV>");
	}


