var img_dir = "/img/calendar/";

var nav = (document.layers);
var mouse_location_x = 0;
var mouse_location_y = 0;
var ret_object;
var cal_win;
var default_ret_function = "change_date";
var ret_function = "change_date";
var ret_date_format = "yyyy-mm-dd";
var location_x;
var location_y;
var c_year;
var c_month;
var c_date;

// drawCalendar([object [, ret_function [, new Array(x, y) [, date]]])

function changeSel(arg){
	var td = arg.parentElement;
	var first = td.firstChild;
	var last = td.lastChild;
	if (first.id === "sel_year1"){
		year_sel = last;
	}
	if (first.id === "sel_month1"){
		month_sel = last;
	}
	last.style.visibility  = "visible";
}

var year_sel;
var month_sel;


function drawCalendar(){
	var args = drawCalendar.arguments;
	var num_args = args.length;
	if (num_args == 0){
		ret_object = event.srcElement;
	}else{
		ret_object = args[0];
	}
	if(num_args > 1){
		ret_function = args[1];
	}
	if(num_args > 2){
		location_x = args[2][0];
		location_y = args[2][1];
	}else{
		location_x = Math.max( window.event.clientX + document.body.scrollLeft - 40 , 0);
		location_y = Math.max( window.event.clientY + document.body.scrollTop - 20 , 0);


		location_x = Math.max( window.event.clientX - 40 , 0);
		location_y = Math.max( window.event.clientY- 20 , 0);

	}

	if(num_args > 3){
		if(!isNaN(args[3][2])){
			var buf_year = eval(args[3][0]);
			var buf_month = eval(args[3][1]);
			var buf_date =  eval(args[3][2]);
			if(buf_month == 0 ){
				buf_year--;
				buf_month = 12;
			}
			if(buf_month == 13){
				buf_year++;
				buf_month = 1;
			}
			var dates = new Date(buf_year,buf_month-1,buf_date);
			var checkcnt = 0;
			while(!valid_date(buf_year,buf_month,buf_date)){
				buf_date--;
				if (checkcnt > 10){
					alert(buf_date);
					break;
				}
				var dates = new Date(buf_year,buf_month-1,buf_date);
			}
		}else{
			var buf_string = args[3].split(/[^0-9]/).join("");
			var dates = new Date(buf_string.substr(0,4), buf_string.substr(4,2)-1,buf_string.substr(6,2));
		}
	}else{
		if(ret_object.value == ""){
			var dates = new Date();
		}else{
			try{
				var buf_string = ret_object.bufDateValue.replace(/[^0-9]/g, "");
				var dates = new Date(buf_string.substr(0,4), buf_string.substr(4,2)-1,buf_string.substr(6,2));
			}catch(e){
				var buf_string = ret_object.value.replace(/[^0-9]/g, "");
				var dates = new Date(buf_string.substr(0,4), buf_string.substr(4,2)-1,buf_string.substr(6,2));
			}
		}
	}
	

	var this_year = dates.getFullYear();
	var this_month = dates.getMonth()+1;
	var this_date = dates.getDate();

	c_year = this_year;
	c_month = this_month;
	c_date = this_date;

	var font = new Array();
	font["kor_9pt_666666_b"] = "font-size: 9pt; COLOR: #666666; font-family:'', 'Seoul', 'Verdana', 'Arial'; font-weight: bold;";
	font["kor_calendar_red"] = "font-size: 9pt; COLOR: #FF0000; font-family:'', 'Seoul', 'Verdana', 'Arial'; text-align: center;  padding-top:2px;";
	font["kor_calendar_blue"] = "font-size: 9pt; COLOR: #0059BD; font-family:'', 'Seoul', 'Verdana', 'Arial'; text-align: center;  padding-top:2px;";
	font["kor_calendar_black"] = "font-size: 9pt; COLOR: #000000; font-family:'', 'Seoul', 'Verdana', 'Arial'; text-align: center;  padding-top:2px;";
	font["kor_calendar_gray"] = "font-size: 9pt; COLOR: #666666; font-family:'', 'Seoul', 'Verdana', 'Arial'; text-align: center;  padding-top:2px;";

	var data = "<html><head><script>";
	data += "document.body.attachEvent(\"onclick\", hideSelect);";
	data += "function hideSelect(){";
	data += "	if (parent.year_sel){";
	data += "		var  inner = document.createElement('div');";
	data += "		inner.innerHTML = typeof(year_sel);";
	data += "		document.body.appendChild(inner);";
	data += "		parent.year_sel.style.visibility  = \"hidden\";";
	data += "	}";
	data += "	if (parent.month_sel){";
	data += "		parent.month_sel.style.visibility  = \"hidden\";";
	data += "	}";
	data += "}";
	
	
	data += "</script></head><body>";

	data += "<table width=\"204\" border=\"0\" cellpadding=\"0\" cellspacing=\"2\" bgcolor=\"#E3E3E3\">\n    <tr> \n      <td bgcolor=\"#FFFFFF\">";
	data += "<table width=\"200\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr>";

	data += "<td height=\"23\" align=\"right\" background=\""+img_dir+"img_top_bg.gif\"><table width=\"182\" height=\"23\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\r\n";
	data += "<tr> <td width=\"16\" align=\"center\" ><label onclick='parent.selectedYear("+(c_year-1)+")' onmouseover=\"this.style.cursor='hand';\"><img src=\""+img_dir+"allow_blue01.gif\" width=\"6\" height=\"9\" border=\"0\"></label></td>";
	data += "<td width=\"44\" align=\"right\"  valign=\"top\"><p style='margin-top:5'>";
	data += "<span id='sel_year1' style=\""+font["kor_9pt_666666_b"]+"\" onclick=\"parent.changeSel(this)\" onmouseover=\"this.style.cursor='hand';\">";
	data += this_year +"年</span>"
	data +="<span id='sel_year2' style=\"position:absolute;left=32;visibility:hidden\"><select onchange =\"parent.selectedYear(this.value)\" size ='8' style=\""+font["kor_9pt_666666_b"]+"\" valign=\"top\">";
	for (var i=1950; i< 2050; i++)	{
		if (i == c_year){
			data += "<option value='"+i+"' selected>" + i + "</option>";
		}else{
			data += "<option value='"+i+"'>" + i + "</option>";
		}
	}
	data +="</select></span></td>";

	//data += this_year +"</td>";
	data += "<td width=\"16\" align=\"center\" ><label onclick='javascript:parent.selectedYear("+(c_year+1)+")' onmouseover=\"this.style.cursor='hand';\"><img src=\""+img_dir+"allow_blue02.gif\" width=\"6\" height=\"9\" border=\"0\"></label></td>";
    data += "<td width=\"16\" align=\"center\" ><label onclick='javascript:parent.selectedMonth("+(c_month-1)+")' onmouseover=\"this.style.cursor='hand';\"><img src=\""+img_dir+"allow_green01.gif\" width=\"6\" height=\"9\" border=\"0\"></label></td>";

	var buf_month = "";
	if (c_month < 10){
		buf_month = "&nbsp;" + c_month;
	}else{
		buf_month = c_month;
	}
	data += "<td width=\"29\" align=\"center\"  valign=\"top\" style=\""+font["kor_9pt_666666_b"]+"\"><p style='margin-top:5'>";
	data += "<span id='sel_month1' style=\""+font["kor_9pt_666666_b"]+"\" onclick=\"parent.changeSel(this)\" onmouseover=\"this.style.cursor='hand';\">";

	data +=buf_month+"月</span>";

	data +="<span id='sel_month2' style=\"position:absolute;left=112;visibility:hidden\"><select onchange =\"parent.selectedMonth(this.value)\" size ='8' style=\""+font["kor_9pt_666666_b"]+"\" valign=\"top\">";
	for (var i=1; i< 13; i++)	{
		if (i == c_month){
			data += "<option value='"+i+"' selected>" + i + "</option>";
		}else{
			data += "<option value='"+i+"'>" + i + "</option>";
		}
	}
	data +="</select></span></td>";


	data += "<td width=\"16\" align=\"center\" ><label onclick='javascript:parent.selectedMonth("+(c_month+1)+")' onmouseover=\"this.style.cursor='hand';\"><img src=\""+img_dir+"allow_green02.gif\" width=\"6\" height=\"9\" border=\"0\"></label></td>";
	data += "<td width=\"10\" >&nbsp;</td>";
	data += "<td width=\"25\" align=\"center\" ><label onclick='javascript:parent.hideCalendar();parent.setDefaultRetFunction();' onmouseover=\"this.style.cursor='hand';\"><img src=\""+img_dir+"img_top_close.gif\" width=\"13\" height=\"13\" border=\"0\"></label></td>";
    data += "</table></td></tr>";


	data += "<tr><td><table width=\"200\" border=\"0\" cellpadding=\"0\" cellspacing=\"2\" bgcolor=\"3287AA\">\n              <tr  bgcolor=\"#EAECCF\">\n                <td height=\"14\" style=\""+font["kor_calendar_red"]+"\">日</td>\n                <td  style=\""+font["kor_calendar_black"]+"\">月</td>\n                <td  style=\""+font["kor_calendar_black"]+"\">火</td>\n                <td  style=\""+font["kor_calendar_black"]+"\">水</td>\n                <td  style=\""+font["kor_calendar_black"]+"\">木</td>\n                <td  style=\""+font["kor_calendar_black"]+"\">金</td>\n                <td  style=\""+font["kor_calendar_blue"]+"\">土</td>\n              </tr>\n";
	var firstDay = (new Date(this_year, this_month-1,1)).getDay();
	
	data += "<tr align=\"center\" height =14 bgcolor=\"#FFFFFF\">\n";
	for(i=0 ; i<firstDay; i++){
		data += "<td>&nbsp;</td>";
	}
	check_date=1;
	var check_day = 0;
	var cnt_row = 0;
	var style = "";
	while(valid_date(this_year, this_month, check_date)){
		check_day = (new Date(this_year, this_month-1,check_date)).getDay();
		//sat
		if(check_day == 6){
			style = "kor_calendar_blue";
		//sun
		}else if(check_day == 0 ){
			if(check_date != 1){
				cnt_row++;
				data += "<tr align=\"center\" height =14 bgcolor=\"#FFFFFF\">";
			}
			style = "kor_calendar_red";
		//weekday
		}else{
			style = "kor_calendar_gray";
		}
		if(check_date == this_date){
			data += "<td bgcolor='#C6F11B' onmouseover=\"this.style.backgroundColor='#D3E3EA';this.style.cursor='hand';\" onmouseout=\"this.style.backgroundColor='#C6F11B'\" onclick=\"javascript:parent."+ret_function+"(" + this_year + ","+ this_month + "," + check_date + ");parent.hideCalendar();parent.setDefaultRetFunction();\"  style=\""+font[style]+"\">"+check_date+"</td>\n";
		}else{
			data += "<td onmouseover=\"this.style.backgroundColor='#D3E3EA'\;this.style.cursor='hand';\" onmouseout=\"this.style.backgroundColor='#FFFFFF'\" onclick=\"javascript:parent."+ret_function+"(" + this_year + ","+ this_month + "," + check_date + ");parent.hideCalendar();parent.setDefaultRetFunction();\"  style=\""+font[style]+"\">"+check_date+"</td>\n";
		}
		if(check_day == 6){
			data += "</tr>";
		}
		check_date++;
	}
	if(check_day < 6){
		while (check_day++ < 6){
			data += "<td>&nbsp;</td>";
		}
		data += "</tr>";
	}
	data += "</table>";
	data += "</td></tr></table></body></html>";
	if (cal_win == null){
		cal_win = window.createPopup();
	}
	cal_win.document.body.innerHTML = data;
	try{
		cal_win.show( location_x, location_y,205, 73+cnt_row*17, document.body);
	}catch(e){
		alert(e);
		cal_win.hide();
		cal_win = window.createPopup();
		cal_win.document.body.innerHTML = data;
		cal_win.show( location_x, location_y,205, 69+cnt_row*17, document.body);
	}
}
function hideCalendar(){
	cal_win.hide();
}

function valid_date(){
	var args = valid_date.arguments;
	var num_args = args.length;

	if (num_args == 1){
		var input = args[0];
	}else if(num_args == 3){
		var input = new Array(args[0], args[1], args[2]);
	}
	var date = new Date(input[0], input[1]-1, input[2]);
	return (date.getMonth() == input[1] -1 );
}
function selectedYear(arg){
	drawCalendar(ret_object, ret_function, new Array(parent.location_x, parent.location_y), new Array(arg, c_month,c_date));
}
function selectedMonth(arg){
	drawCalendar(ret_object, ret_function, new Array(parent.location_x, parent.location_y),  new Array( c_year,arg,c_date));
}

function change_date( year,month,date){
	if(month < 10 ){
		month = "0" + month;
	}
	if(date < 10 ){
		date = "0" + date;
	}
	obj = ret_object;
	var ret = ret_date_format.toLowerCase();
	var dateObject = new Date(year, month -1 , date);

	ret = ret.replace("yyyy", year);
	ret = ret.replace("mm", month);
	ret = ret.replace("m", dateObject.getMonth()+1);
	ret = ret.replace("dd", date);
	ret = ret.replace("d", dateObject.getDate());
	obj.value = ret;
	obj.bufDateValue = year+"-"+ month +"-"+ date;
}


function setDefaultRetFunction(){
	ret_function = default_ret_function;
}

setDefaultRetFunction();