 var MONTH = new array("1","2","3","4","5","6","7","8","9","10","11","12");
var DAYS = new array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
var DOW = new array();//new array("SU","MO","TU","WE","TH","FR","SA","","","","","");
var TODAY_DATE = new Date();
var THIS_DAY  = TODAY_DATE.getDate();
var THIS_MONTH = TODAY_DATE.getMonth();
var THIS_YEAR  = TODAY_DATE.getFullYear();

var CALTABLE_BORDER_COLOR = "#E0EFE7";				//달력테이블 외곽선 색깔
var CALENDAR_BORDER_COLOR = "#6FAD8B";				//달력 외곽선 색깔
var BODY_BACK_COLOR = "#F5F5F5";					//본문 백그라운드 색깔
var HEAD_BACK_COLOR = "#FFFFFF";					//년/월 선택 공간 백그라운드 색깔
var DOW_BACK_COLOR = "#CBCCCC";						//요일표시 백그라운드 색깔
var DAY_BACK_COLOR = "#FFFFFF";						//날짜 백그라운드 색깔
var TODAY_BACK_COLOR = "#7F7F7F";					//오늘 날짜 백그라운드 색깔
var PREV_MONTH_BACK_COLOR = "#FFFFFF";				//이전달 백그라운드 색깔
var NEXT_MONTH_BACK_COLOR = "#FFFFFF";				//다음달 백그라운드 색깔
var SUNDAY_FONT_COLOR = "#DE3E13";					//일요일 폰트 색깔
var SATDAY_FONT_COLOR = "#OA4FA3";					//토요일 폰트 색깔
var DOW_FONT_COLOR = "#666666";						//요일 폰트 색깔
var DAY_FONT_COLOR = "#585858";						//일수 폰트 색깔
var PREV_MONTH_FONT_COLOR = "#999999";				//이전달 폰트 색깔
var NEXT_MONTH_FONT_COLOR = "#999999";				//다음달 폰트 색깔
var BASIC_FONT = "font-family : tahoma; font-size : 9px;"	//기본폰트
var Dow_FONT = "font-family : tahoma; font-color : #666666; font-weight:bold; font-size : 9px;"	//기본폰트

//var CALENDAR_WIDTH = "161px";
var CALENDAR_WIDTH = "178px";
var HEAD_HEIGHT = "30px";
var ROW_HEIGHT = "17px";
var COL_WIDTH = "23px";
var PRE_DATE = "";

function EGATE_CALENDAR(display){
	this.DisplayMode = display;
	this.FieldName = "";
	this.Year = "";
	this.Month = "";
	this.Day = "";
	this.WinLeft = 0;
	this.WinTop = 0;
	this.WinWidth = 0;
	this.WinHeight = 0;
	this.PrevMonth="";
	this.FirstDate = new Date();
	this.StartDay = "";
	this.LastMonth=0;
	this.LastFunction = "";
	this.PostLastFunction = "";
	this.kind = "";
	
	this.EGC_initialize = EGC_initialize;
	this.EGC_caculateFirstDate = EGC_caculateFirstDate
	this.EGC_caculateLunarCalendar = EGC_caculateLunarCalendar;
	this.EGC_prevYear = EGC_prevYear;
	this.EGC_nextYear = EGC_nextYear;
	this.EGC_prevMonth = EGC_prevMonth;
	this.EGC_nextMonth = EGC_nextMonth;
	this.EGC_makeHeadCalendar = EGC_makeHeadCalendar;
	this.EGC_makeDowCalendar = EGC_makeDowCalendar;
	this.EGC_makeCalendar = EGC_makeCalendar;
	this.EGC_showCalendar = EGC_showCalendar;
	this.EGC_setDate = EGC_setDate;
	this.EGC_doLastFunction = EGC_doLastFunction;
}
function EGC_initialize(year,month,field,left,top,width,height,kind, week){
	this.Year = year;
	this.Month = month;
	this.FieldName = field;
	this.WinLeft = left;
	this.WinTop = top;
	this.WinWidth = width;
	this.WinHeight = height;
	this.EGC_caculateFirstDate();
	this.EGC_caculateLunarCalendar();
	this.kind =	kind;
	
	this.DOW = week;
//	alert(week);
	//alert(this.DOW + '3333');
}
//----시작달 계산
function EGC_caculateFirstDate(){
	this.FirstDate = new Date(this.Year,this.Month,1);
	this.StartDay =this.FirstDate.getDay();
}
//----윤년에 대한 값을 체크한다.
function EGC_caculateLunarCalendar(){
	if (((this.Year % 4 == 0) && (this.Year % 100 != 0)) || (this.Year % 400 == 0))DAYS[1] = 29; 
	else DAYS[1] = 28;
	this.PrevMonth = parseInt(this.Month) - 1;
	if (this.PrevMonth == -1)this.PrevMonth = 11;

}
function EGC_showCalendar(htmlstr){
	if(!OBJ_POPUP) {
		var oPopBody = oPopup.document.body;
		OBJ_POPUP = oPopup;
		oPopBody.innerHTML = htmlstr;
		oPopup.show(this.WinLeft, this.WinTop, this.WinWidth, this.WinHeight, document.body);
		//alert(1);
	} else {
		//alert();
		OBJ_POPUP.document.body.innerHTML = htmlstr;
	}
}
function EGC_prevYear(){
	this.Year = parseInt(this.Year) - 1;
	this.EGC_caculateFirstDate();
	this.EGC_caculateLunarCalendar();
	this.EGC_showCalendar(this.EGC_makeCalendar());
}
function EGC_nextYear(){
	this.Year = parseInt(this.Year) + 1;
	this.EGC_caculateFirstDate();
	this.EGC_caculateLunarCalendar();
	this.EGC_showCalendar(this.EGC_makeCalendar());
}
function EGC_prevMonth(){
	this.Year = (this.Month==0? this.Year - 1 : this.Year);
	this.Month = (this.Month==0?11:this.Month-1);
	this.EGC_caculateFirstDate();
	this.EGC_caculateLunarCalendar();
	this.EGC_showCalendar(this.EGC_makeCalendar());
}
function EGC_nextMonth(){
	this.Year = (this.Month == 11 ? eval(this.Year) + 1 : this.Year);
	this.Month = (this.Month ==11 ? 0 : eval(this.Month) + 1);
	this.EGC_caculateFirstDate();
	this.EGC_caculateLunarCalendar();
	this.EGC_showCalendar(this.EGC_makeCalendar());
}
function EGC_makeHeadCalendar(){
	var htmlstr="";

	htmlstr += "<table width=\"100%\" height=\"100%\" cellspacing=0 cellpadding=0 border=0>";
	htmlstr += "<tr height=31>";
	htmlstr += "<td align=center style=\"border-bottom:1px solid #E6E6E6\">";
	htmlstr += "<font color=\"#333333\" style=\""+BASIC_FONT+"; font-weight:bold;font-size:11px\"><img src=\""+IMG_DIR+"/icon_comn_prevpage.gif\" border=0 align=absmiddle style=\"cursor:hand;\" ";
	htmlstr += "onclick=\"window.parent.CALENDAR.EGC_prevYear();\" align=absmiddle>&nbsp;<img src=\""+IMG_DIR+"/icon_comn_prevpage.gif\" border=0 align=absmiddle style=\"cursor:hand;\" ";
	htmlstr += "onclick=\"window.parent.CALENDAR.EGC_prevMonth();\" align=absmiddle>&nbsp;&nbsp;&nbsp;"+this.Year + ". " + (parseInt(this.Month)+1) + "&nbsp;&nbsp;&nbsp;";
	htmlstr += "<img src=\""+IMG_DIR + "/icon_comn_nextpage.gif\" border=0 style=\"cursor:hand;\" ";
	htmlstr += "onclick=\"window.parent.CALENDAR.EGC_nextMonth();\" align=absmiddle>&nbsp;<img src=\""+IMG_DIR+"/icon_comn_nextpage.gif\" border=0 align=absmiddle style=\"cursor:hand;\" ";
	htmlstr += "onclick=\"window.parent.CALENDAR.EGC_nextYear();\" align=absmiddle></font>";
	htmlstr += "</td>";
	htmlstr +="</tr>";
	htmlstr +="</table>";
	return htmlstr
}
function EGC_makeDowCalendar(){
	var htmlstr ="";
	htmlstr += "<table width=\"100%\" border=0 cellspacing=0 cellpadding=0>";
	htmlstr += "<tr>";
	for (var i=0; i<7; i++){
		htmlstr += "<td width=23 align=center valign=middle>";	
		htmlstr += "<font color="+ (i !=0 ? DOW_FONT_COLOR  : SUNDAY_FONT_COLOR)+" style=\""+Dow_FONT+"\">" + this.DOW[i] + "</font>";
		htmlstr += "</td>";
	}
	htmlstr += "</tr>";
	htmlstr += "</table>";
	return htmlstr;
}

function EGC_makeCalendar(){
	var htmlstr ="";
	var column = 0;
	this.LastMonth = this.Month - 1;
	if (this.LastMonth == -1)this.LastMonth = 11;

	htmlstr += "<form>";
	htmlstr +='<SC'+'RIPT LANGUAGE="JavaScript">\n';
	htmlstr +='\n<'+'!--\n';
	htmlstr +='window.onerror=null;\n';
	htmlstr +='/'+' -'+'->\n';
	htmlstr +='</'+'SCRIPT>\n'

	htmlstr += "<table width=\""+CALENDAR_WIDTH+"\" cellspacing=0 cellpadding=0 border=3 bordercolor=\""+CALTABLE_BORDER_COLOR+"\" style=\"border-collapse:collapse;\">";
	htmlstr += "<tr><td>";
	htmlstr += "<table width=\""+CALENDAR_WIDTH+"\" cellspacing=0 cellpadding=0 border=1 bordercolor=\""+CALENDAR_BORDER_COLOR+"\" style=\"border-collapse:collapse;\" rules=none>";
	htmlstr += "<tr height=\""+HEAD_HEIGHT+"\">";
	htmlstr += "<td width=13px></td>";
	htmlstr += "<td style=\"background-color:"+ HEAD_BACK_COLOR+";\">";
	htmlstr += this.EGC_makeHeadCalendar();
	htmlstr += "</td>";
	htmlstr += "<td width=13px></td>";
	htmlstr += "</tr>";
	htmlstr += "<tr height=\""+ROW_HEIGHT+"\">";
	htmlstr += "<td width=13px></td>";
	htmlstr += "<td>";
	htmlstr += this.EGC_makeDowCalendar();
	htmlstr += "</td>";
	htmlstr += "<td width=13px></td>";
	htmlstr += "</tr>";

	htmlstr += "<tr height=\""+ROW_HEIGHT+"\">";
	htmlstr += "<td width=13px></td>";
	htmlstr += "<td width=*>";
	htmlstr += "<table width=100% border=0 cellspacing=0 cellpadding=0>";
	htmlstr += "<tr height=16>";

	//지난 달의 남은 요일 표시하기
	for (var i=0; i< this.StartDay; i++){
		htmlstr += "<td width=\""+COL_WIDTH+"\" align=center valign=middle style=\"background-color:"+PREV_MONTH_BACK_COLOR +";\">"
		htmlstr += "<font color=\""+PREV_MONTH_FONT_COLOR+"\" style=\""+BASIC_FONT+"\">";
		htmlstr += (this.DisplayMode?(DAYS[parseInt(this.LastMonth)]-parseInt(this.StartDay)+i+1):"&nbsp;");
		htmlstr += "</font>";
		htmlstr += "</td>";
		column++;
	}
	for (var i=1; i<= DAYS[this.Month]; i++){
		var date1 = new Date(this.Year, parseInt(this.Month), i);
		if (date1.getDay() == 0) { 
			htmlstr += "<td width=\""+COL_WIDTH+"\" align=center valign=middle>";
			htmlstr += "<span style=\"cursor:hand;\" onclick=\"window.parent.CALENDAR.EGC_setDate('"+this.Year+"','"+(parseInt(this.Month)+1)+"','"+i+"');\">";
			htmlstr += "<font color=\""+SUNDAY_FONT_COLOR+"\" style=\""+BASIC_FONT+"\">";
			htmlstr += i;
			htmlstr += "</font></span>";
			htmlstr += "</td>";
		}else if (date1.getDay() == 6){
			htmlstr += "<td width=\""+COL_WIDTH+"\" align=center valign=middle>";
			htmlstr += "<span style=\"cursor:hand;\" onclick=\"window.parent.CALENDAR.EGC_setDate('"+this.Year+"','"+(parseInt(this.Month)+1)+"','"+i+"');\">";
			htmlstr += "<font color=\""+SATDAY_FONT_COLOR+"\" style=\""+BASIC_FONT+"\">";
			htmlstr += i+"</font></span></td>";		
		}else {
			if ((i == THIS_DAY) && (this.Month == THIS_MONTH) && (this.Year == THIS_YEAR)){
				htmlstr += "<td width=\""+COL_WIDTH+"\" align=center valign=middle style=\"background-color:"+TODAY_BACK_COLOR+";\">";
				htmlstr += "<span style=\"cursor:hand;\" onclick=\"window.parent.CALENDAR.EGC_setDate('"+this.Year+"','"+(parseInt(this.Month)+1)+"','"+i+"')\">";
				htmlstr += "<font color='#FFFFFF' style=\""+BASIC_FONT+";font-weight:bold\">";
				htmlstr += i+ "</font></span><\/td>";
			}else{
				htmlstr += "<td width=\""+COL_WIDTH+"\" align=center valign=middle style=\"background-color:"+DAY_BACK_COLOR+";\">";
				htmlstr += "<span style=\"cursor:hand;\" onclick=\"window.parent.CALENDAR.EGC_setDate('"+this.Year+"','"+(parseInt(this.Month)+1)+"','"+i+"')\">";
				htmlstr += "<font color='"+DAY_FONT_COLOR+"' style=\""+BASIC_FONT+"\">";
				htmlstr += i+ "</font></span><\/td>";
				}
		}
		column++;
		if (column == 7){
			htmlstr += "</tr><tr height=\""+ROW_HEIGHT+"\">";
			column = 0;
		}
	}
	if (column > 0){
		for (var i=1; column<7; i++){
			htmlstr += "<td width=\""+COL_WIDTH+"\" align=center valign=middle style=\"background-color:"+NEXT_MONTH_BACK_COLOR +";\">";
			htmlstr += "<font color=\""+NEXT_MONTH_FONT_COLOR+"\" style=\""+BASIC_FONT+"\">";
			htmlstr += (this.DisplayMode?i:"&nbsp;");
			htmlstr += "</font>";
			htmlstr += "</td>";
			column++;
		}
	}
	htmlstr += "</tr></table></td>";
	htmlstr += "<td width=13px></td>";
	htmlstr += "</tr>";
	htmlstr += "<tr height=12px><td></td></tr>";
	htmlstr +="</table>";
//	htmlstr += "<tr><td>";
	htmlstr += "</td></tr>";
	htmlstr += "</table>";
	htmlstr += "</form>";

	return htmlstr;
}

function EGC_setDate(Y, M, D) {
	this.Year = Y;
	this.Month = makeTwoDigit(M);
	this.Day = makeTwoDigit(D);
	if(OBJ_POPUP)OBJ_POPUP.hide();
	this.EGC_doLastFunction();
}
function EGC_doLastFunction(){
	if (this.LastFunction != ""){
		setTimeout(this.LastFunction+"('"+this.FieldName+"')", 1); 
		return;
	}
	
	if(document.forms[0].name=='searchProjectForm'){
		try{
			document.forms[1].elements[this.FieldName].value = this.Year+"-"+ this.Month+"-"+ this.Day;
		}catch(e){
			document.forms[0].elements[this.FieldName].value = this.Year+"-"+ this.Month+"-"+ this.Day;
		}
	}else{
		document.forms[0].elements[this.FieldName].value = this.Year+"-"+ this.Month+"-"+ this.Day;
	}
	if(this.kind == "start") PRE_DATE = this.Year+"-"+ this.Month+"-"+ this.Day;
	if (this.PostLastFunction != ""){
		setTimeout(this.PostLastFunction+"('"+this.FieldName+"')", 1); 
		return;
	}
}
function array(m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11){
	this[0] = m0; this[1] = m1; this[2]  = m2;  this[3]  = m3;
	this[4] = m4; this[5] = m5; this[6]  = m6;  this[7]  = m7;
	this[8] = m8; this[9] = m9; this[10] = m10; this[11] = m11;
}
 
//--날짜 계산(몇일간)
function rtnDate(cdate){
	var tmpDate=new Date();
	var MilisecondPerDay=86400000;
	var tmpStr;
	if(cdate==null || cdate==""){
		return 0;
	}else{
		var tmpY=cdate.substring(0,4);
		var tmpM=cdate.substring(5,7);
		var tmpD=cdate.substring(8,10);
		tmpDate.setYear(eval(tmpY)-1900);
		tmpDate.setMonth(eval(tmpM)-1);
		tmpDate.setDate(eval(tmpD));
		return tmpDate/MilisecondPerDay;
	}
}
