﻿    var target;                                                                    // 호출한 Object의 저장
	
	var target1;																	// 셀렉트1
	var target2;																	// 셀렉트2
	var target3;																	// 셀렉트3
	
	var s_flag;																		// 셀렉트인지 텍스트박스인지 설정
    var stime;
    document.write("<div id='minical' oncontextmenu='return false' ondragstart='return false' onselectstart='return false' style=\"background:#F1F6F8; margin:5; padding:5;margin-top:2;border:1px solid;width:160;display:none;position: absolute; z-index: 99\"></div>");

// 텍스트박스에 입력시 호출
function Calendar_text(obj) {                                                        // jucke
    var now = obj.value.split("-");
    var x, y;
    
    target = obj;                                                                // Object 저장;
	s_flag=false;
    x = (document.layers) ? loc.pageX : event.clientX;
    y = (document.layers) ? loc.pageY : event.clientY;
    
    x = document.documentElement.scrollLeft + x;                                            // 스크롤 영역 보정
    y = document.documentElement.scrollTop + y;    

    minical.style.pixelTop    = y+7;
    minical.style.pixelLeft    = x-50;
    minical.style.display = (minical.style.display == "block") ? "none" : "block";

    if (now.length == 3) {                                                        // 정확한지 검사
        Show_cal(now[0],now[1],now[2]);                                            // 넘어온 값을 년월일로 분리
    } else {
        now = new Date();
        Show_cal(now.getFullYear(), now.getMonth()+1, now.getDate());            // 현재 년/월/일을 설정하여 넘김.
    }
}

// 셀렉션 박스에 입력시 호출
function Calendar_select(obj1,obj2,obj3) {                                                        // jucke
    var now =[];
	now[0] = obj1.value;
	now[1] = obj2.value;
	now[2] = obj3.value;
    var x, y;
    
    target1 = obj1;                                                                // Object 저장;    
    target2 = obj2;                                                                // Object 저장;    
    target3 = obj3;                                                                // Object 저장;
	
	s_flag = true;
	
    x = (document.layers) ? loc.pageX : event.clientX;
    y = (document.layers) ? loc.pageY : event.clientY;
    
    x = document.body.scrollLeft + x;                                            // 스크롤 영역 보정
    y = document.body.scrollTop + y;

    minical.style.pixelTop    = y+7;
    minical.style.pixelLeft    = x-50;
    minical.style.display = (minical.style.display == "block") ? "none" : "block";

    if (now.length == 3) {                                                        // 정확한지 검사
        Show_cal(now[0],now[1],now[2]);                                            // 넘어온 값을 년월일로 분리
    } else {
        now = new Date();
        Show_cal(now.getFullYear(), now.getMonth()+1, now.getDate());            // 현재 년/월/일을 설정하여 넘김.
    }
}
    
function doClick() {                                                            // 날자를 선택하였을 경우
    cal_Day = window.event.srcElement.title;
    window.event.srcElement.style.borderColor = "red";                            // 테두리 색을 빨간색으로
	
	if ( s_flag ){
	    if (cal_Day.length > 7) {      
			var year_index=-1;                                              // 날자 값이있으면
			for(i=0;i<target1.options.length; i++){
				if ( target1.options[i].value==cal_Day.substring(0,4) )
					year_index = i;
				
			}
			
			if ( year_index>=0 ){
				target1.options[year_index].selected = true;
				target2.options[parseInt(cal_Day.substring(5,7))-1].selected=true;
				target3.options[parseInt(cal_Day.substring(8,10))-1].selected=true;
			}else{
				alert("선택하신 날짜는 일정을 잡을 수 없습니다");
				return;
			}
	    }	
	}else{
	    if (cal_Day.length > 7) {                                                    // 날자 값이있으면
	        target.value=cal_Day                                                    // 값 설정
			target.focus();	
		}
	}
    minical.style.display='none';                                                // 화면에서 지움
}

function doOut() {
    var el = window.event.fromElement;
    cal_Day = el.title;

    if (cal_Day.length > 7) {
        el.style.borderColor = "white";
    }
    //stime=window.setTimeout("minical.style.display='none';", 200);
}

function day2(d) {                                                                // 2자리 숫자료 변경
    var str = new String();
    
    if (parseInt(d) < 10) {
        str = "0" + parseInt(d);
    } else {
        str = "" + parseInt(d);
    }
    return str;
}

function Show_cal(sYear, sMonth, sDay) {
    var Months_day = new Array(0,31,28,31,30,31,30,31,31,30,31,30,31)
    var Weekday_name = new Array("일", "월", "화", "수", "목", "금", "토");
    var intThisYear = new Number(), intThisMonth = new Number(), intThisDay = new Number();
    
    document.all.minical.innerHTML = "";
    datToday = new Date();                                                    // 현재 날자 설정
    
    intThisYear = parseInt(sYear, 10);
    intThisMonth = parseInt(sMonth, 10);
    intThisDay = parseInt(sDay, 10);
    
    if (intThisYear == 0) intThisYear = datToday.getFullYear();                // 값이 없을 경우
    if (intThisMonth == 0) intThisMonth = parseInt(datToday.getMonth())+1;    // 월 값은 실제값 보다 -1 한 값이 돼돌려 진다.
    if (intThisDay == 0) intThisDay = datToday.getDate();
    
    switch(intThisMonth) {
        case 1:
                intPrevYear = intThisYear -1;
                intPrevMonth = 12;
                intNextYear = intThisYear;
                intNextMonth = 2;
                break;
        case 12:
                intPrevYear = intThisYear;
                intPrevMonth = 11;
                intNextYear = intThisYear + 1;
                intNextMonth = 1;
                break;
        default:
                intPrevYear = intThisYear;
                intPrevMonth = parseInt(intThisMonth) - 1;
                intNextYear = intThisYear;
                intNextMonth = parseInt(intThisMonth) + 1;
                break;
    }
	

    NowThisYear = intThisYear;                                        // 현재 년
    NowThisMonth = intThisMonth;                                        // 현재 월
    NowThisDay = intThisDay;                                            // 현재 일
        
    datFirstDay = new Date(NowThisYear, NowThisMonth-1, 1);                        // 현재 달의 1일로 날자 객체 생성(월은 0부터 11까지의 정수(1월부터 12월))
    intFirstWeekday = datFirstDay.getDay();                                        // 현재 달 1일의 요일을 구함 (0:일요일, 1:월요일)
    
    intSecondWeekday = intFirstWeekday;
    intThirdWeekday = intFirstWeekday;
    
    datThisDay = intFirstWeekday;
    intThisWeekday = intFirstWeekday;

    varThisWeekday = Weekday_name[intThisWeekday];                                // 현재 요일 저장
    
    intPrintDay = 1                                                                // 달의 시작 일자
    secondPrintDay = 1
    thirdPrintDay = 1
    
    Stop_Flag = 0
    
    if ((intThisYear % 4)==0) {                                                    // 4년마다 1번이면 (사로나누어 떨어지면)
        if ((intThisYear % 100) == 0) {
            if ((intThisYear % 400) == 0) {
                Months_day[2] = 29;
            }
        } else {
            Months_day[2] = 29;
        }
    }
    intLastDay = Months_day[intThisMonth];                                        // 마지막 일자 구함
    Stop_flag = 0
    
	

    Cal_HTML = "<TABLE WIDTH='200px' CELLPADDING=0 CELLSPACING=5 STYLE='font-size:8pt;font-family:Tahoma; border-width:1; border-color:#c3cacd; border-style:solid;'>"
            + "<TR ALIGN=CENTER><TD COLSPAN=7 nowrap=nowrap ALIGN=CENTER><SPAN TITLE='이전달' STYLE='cursor:hand'; onClick='Show_cal("+intPrevYear+","+intPrevMonth+","+intThisDay+");'><FONT COLOR=white><img src='/Admin/Images/btn_cal_prev.gif'></FONT></SPAN> &nbsp; &nbsp; "
            + "<B STYLE=color:#3c8096>"+get_Yearinfo(intThisYear,intThisMonth,intThisDay)+"년&nbsp;&nbsp;"+get_Monthinfo(intThisYear,intThisMonth,intThisDay)+"월</B>"
            + " &nbsp; &nbsp; <SPAN TITLE='다음달' STYLE='cursor:hand'; onClick='Show_cal("+intNextYear+","+intNextMonth+","+intThisDay+");'><FONT COLOR=white><img src='/Admin/Images/btn_cal_next.gif'></FONT></SPAN></TD></TR>"
            + "<TR ALIGN=CENTER BGCOLOR=#BED7E1 STYLE='color:#404040;font-weight:bold;'><TD style='padding-top:2px; color:red;'>일</TD><TD style='padding-top:2px;'>월</TD><TD style='padding-top:2px;'>화</TD><TD style='padding-top:2px;'>수</TD><TD style='padding-top:2px;'>목</TD><TD style='padding-top:2px;'>금</TD><TD style='padding-top:2px; color:blue;'>토</TD></TR>";

            
    for (intLoopWeek=1; intLoopWeek < 7; intLoopWeek++) {                        // 주단위 루프 시작, 최대 6주
        Cal_HTML += "<TR ALIGN=RIGHT BGCOLOR=#FCFDFF>"
        for (intLoopDay=1; intLoopDay <= 7; intLoopDay++) {                        // 요일단위 루프 시작, 일요일 부터
            if (intThirdWeekday > 0) {                                            // 첫주 시작일이 1보다 크면
                Cal_HTML += "<TD onClick=doClick();>&nbsp;";
                intThirdWeekday--;
            } else {
            
                if (thirdPrintDay > intLastDay) {                                // 입력 날짜 월말보다 크다면
                    Cal_HTML += "<TD onClick=doClick();>&nbsp;";
                } else {                                                        // 입력날짜가 현재월에 해당 되면
                
                
                    Cal_HTML += "<TD onClick=doClick(); title="+intThisYear+"-"+day2(intThisMonth).toString()+"-"+day2(thirdPrintDay).toString()+" STYLE=\"cursor:Hand;";
                    if (intThisYear == NowThisYear && intThisMonth==NowThisMonth && thirdPrintDay==intThisDay) {
                        Cal_HTML += "background-color:#ffff99;";
                    }
                    
                    switch(intLoopDay) {
                        case 1:                                                    // 일요일이면 빨간 색으로
                            Cal_HTML += "color:red;"
                            break;
                        case 7:
                            Cal_HTML += "color:blue;"
                            break;
                        default:
                            Cal_HTML += "color:black;"
                            break;
                    }
                    
                    Cal_HTML += "\">"+thirdPrintDay;
                    
                }
                thirdPrintDay++;
                
                if (thirdPrintDay > intLastDay) {                                // 만약 날짜 값이 월말 값보다 크면 루프문 탈출
                    Stop_Flag = 1;
                }
                
                
                
            }
            Cal_HTML += "</TD>";
        }
        Cal_HTML += "</TR>";
        if (Stop_Flag==1) break;
    }
    Cal_HTML += "</TABLE>";

    document.all.minical.innerHTML = Cal_HTML;	

	return;
}

function get_Yearinfo(year,month,day) {                                            // 년 정보를 콤보 박스로 표시
    var min;
    var max;

    if ( s_flag ){
		min = target1.options[0].value;
		max = target1.options[target1.options.length-1].value;
    }
    else{
		min = parseInt(year) - 100;
		max = parseInt(year) + 10;
    }
    
    var i = new Number();
    var str = new String();
    
    str = "<SELECT onChange='Show_cal(this.value,"+month+","+day+");'>";
    for (i=min; i<=max; i++) {
        if (i == parseInt(year)) {
            str += "<OPTION VALUE="+i+" selected>"+i+"</OPTION>";
        } else {
            str += "<OPTION VALUE="+i+">"+i+"</OPTION>";
        }
    }
    str += "</SELECT>";

	return str;

	
}


function get_Monthinfo(year,month,day) {                                        // 월 정보를 콤보 박스로 표시
    var i = new Number();
    var str = new String();
    
    str = "<SELECT onChange='Show_cal("+year+",this.value,"+day+");'>";
    for (i=1; i<=12; i++) {
        if (i == parseInt(month)) {
            str += "<OPTION VALUE="+i+" selected>"+i+"</OPTION>";
        } else {
            str += "<OPTION VALUE="+i+">"+i+"</OPTION>";
        }
    }
    str += "</SELECT>";
    return str;
}

