//달력 만드는 코드
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//현재 달력으로 보여지는 년/월 저장
varCurYYYYMM='';


//매개변수로 전달된 콤보박스 컨트롤명
var gvarControlName='';
var gvarYearControl='';
var gvarMonthControl='';
var gvarDayControl='';
var gvarminung='';

var calendarDiv = false;

var inputObj = false;

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//오늘 날짜에 대한 달력 만들기
function setCalToday(minung,varYearControl,varMonthControl,varDayControl, inputObj ) {

    // standard time attributes
    //월은 -1하여야 함
    var now = new Date();
    var year = now.getFullYear();
    var month = now.getMonth();
    var monthName = getMonthName(month);
    var date = now.getDate();//Today
    now = null;

    this.inputObj = inputObj;

    // create instance of first day of month, and extract the day on which it occurs
    var firstDayInstance = new Date(year, month, 1);
    var firstDay = firstDayInstance.getDay();
    firstDayInstance = null;
    // number of days in current month
    var days = getDays(month, year);
    // call function to draw calendar


    //컨트롤명 저장
    gvarminung=minung;
    //gvarControlName=varControlName;
    gvarYearControl=varYearControl;
    gvarMonthControl=varMonthControl;
    gvarDayControl=varDayControl;

    //년월저장
    if(month<10){
       varCurYYYYMM=year+'0'+month;
    } else {
       varCurYYYYMM=year+''+month;
    }

    //위치값 저장
    //varCurX=varLeft;
    //varCurY=varTop;

    drawCal( gvarminung, firstDay + 1, days, date, monthName, month, year, varYearControl,varMonthControl,varDayControl, inputObj, 'setCalToday');
}


/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//원하는 날짜에 대한 달력 만들기
function setCal(gvarminung, varYearControl,varMonthControl,varDayControl,varDateYYYYMM, inputObj ) {
    //컨트롤명 저장
    gvarMonthControl=varMonthControl;
    gvarDayControl=varDayControl;

    //년월저장
    varCurYYYYMM = varDateYYYYMM;

    //위치값 저장
    inputObj = inputObj;

    // standard time attributes
    //월은 -1하여야 함
    var now = new Date(parseInt(varDateYYYYMM.substring(0,4)), varDateYYYYMM.substring(4,6)-1, 33) ; //33:임의
    var year = varDateYYYYMM.substring(0,4);
    var month = now.getMonth();
    var monthName = getMonthName(month);
    var date = now.getDate(); //Today
    now = null;
    // create instance of first day of month, and extract the day on which it occurs
    var firstDayInstance = new Date(year, month, 1);
    var firstDay = firstDayInstance.getDay();
    firstDayInstance = null;
    // number of days in current month
    var days = getDays(month, year);
    // call function to draw calendar

    drawCal(gvarminung, firstDay + 1, days, date, monthName,month, year, varYearControl,varMonthControl,varDayControl, inputObj,'setCal');
}


/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//윤년여부 체크
function leapYear(year) {
    if (year % 4 == 0){
       return true; // 윤년
    } else {
       return false ;
    }
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//월별 일수를 가져옴
function getDays(month, year) {
    // create array to hold number of days in each month
    var ar = new Array(12)

    ar[0] = 31 // January
    ar[1] = (leapYear(year)) ? 29 : 28 // February
    ar[2] = 31 // March
    ar[3] = 30 // April
    ar[4] = 31 // May
    ar[5] = 30 // June
    ar[6] = 31 // July
    ar[7] = 31 // August
    ar[8] = 30 // September
    ar[9] = 31 // October
    ar[10] = 30 // November
    ar[11] = 31 // December

    // return number of days in the specified month (parameter)
    return ar[month]
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//한글명 월을 가져옴
function getMonthName(month) {
    // create array to hold name of each month
    var ar = new Array(12)

    ar[0] = "1"
    ar[1] = "2"
    ar[2] = "3"
    ar[3] = "4"
    ar[4] = "5"
    ar[5] = "6"
    ar[6] = "7"
    ar[7] = "8"
    ar[8] = "9"
    ar[9] = "10"
    ar[10] = "11"
    ar[11] = "12"
    // return name of specified month (parameter)
    return ar[month]
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//실제 달력을 만드는 HTML코드 생성
function drawCal(gvarminung, firstDay, lastDate, date, monthName,month,year, varYearControl,varMonthControl,varDayControl, inputObj , varProc) {

    // constant table settings
    var todayColor = "red" // color specifying today's date in the calendar
    // create basic table structure
    var text = "" // initialize accumulative variable to empty string
    var strDay
    month = month+1
    if(month<10){
        month = '0' + month
    }

    text += '<div class="year_date">';
    text += '<a href="#." class="txt_date" onclick="ChangeCal(\'yprev\')"><img src="/images/common/calendar/btn_premonth.gif" alt="" /></a>';
    text += '<span class="year">'+year+'</span>';
    text += '<a href="#." class="txt_date" onclick="ChangeCal(\'ynext\')"><img src="/images/common/calendar/btn_nextmonth.gif" alt="" /></a>';
    text += '<a href="#." class="txt_date" onclick="ChangeCal(\'prev\')"><img src="/images/common/calendar/btn_premonth.gif" alt="" /></a>';
    text += '<span class="date">'+monthName+'</span>';
    text += '<a href="#." class="txt_date" onclick="ChangeCal(\'next\')"><img src="/images/common/calendar/btn_nextmonth.gif" alt="" /></a>';
    text += '</div>';

    text += '<ul class="weekday">';
    text += '<li class="sun">S</li>';
    text += '<li>M</li>';
    text += '<li>T</li>';
    text += '<li>W</li>';
    text += '<li>T</li>';
    text += '<li>F</li>';
    text += '<li>S</li>';
    text += '</ul>';


    // declaration and initialization of two variables to help with tables
    var digit    = 1
    var curCell  = 1
    var lastDate = lastDate + 1

    var now = new Date();
    text += '<ul class="days">';
    for (var row = 1; row <= Math.ceil((lastDate + firstDay - 1) / 7); ++row) {

       for (var col = 1; col <= 7; ++col) {

           if (digit > lastDate){
               //alert(lastDate);
               break
           }

           if(digit<10){
               strDay = '0'+digit
           } else {
               strDay = digit
           }

           if (col==1){
               text += '<li class="sun">';
           } else {
               text += '<li>';
           }

           if ( curCell<firstDay || digit==lastDate ) {
               text += '</li>';
               curCell++;

           } else {


               if ( year==now.getFullYear() && month*1==now.getMonth()+1 && digit == now.getDate()) {

                    text += '<a href="#." class="txt_date" onclick=\'javascript:SetCboControl("'+year+"-"+month+"-"+strDay+'","'+gvarminung+'")\'>';
                    text += '<FONT COLOR="' + todayColor + '">';
                    text += digit;
                    text += '</FONT></a></li>';

               } else {

                    text += '<a href="#." class="txt_date" onclick=\'javascript:SetCboControl("'+year+"-"+month+"-"+strDay+'","'+gvarminung+'")\'>';
                    text += '';
                    text += digit;
                    text += '</a></li>';
               }

               digit++
           }
       }
    }
    text += '</ul>';


    // print accumulative HTML string
    if(!document.getElementById("smallcalendar")){
        calendarDiv = document.createElement('DIV');
        calendarDiv.id = 'smallcalendar';
        calendarDiv.className = 'choice_day';
        calendarDiv.style.zIndex = 1000;
        calendarDiv.style.visibility='hidden';
        calendarDiv.style.position='absolute';

        calendarDiv.onmouseover = function(){ calendarDiv.style.visibility='visible';};
        calendarDiv.onmouseout = function(){ calendarDiv.style.visibility='hidden';};

        document.body.appendChild(calendarDiv);
    }

    var conDiv=document.getElementById("smallcalendar");

    conDiv.innerHTML=text;
    //conDiv.style.top  = varTop + document.documentElement.scrollTop;
    //conDiv.style.left = varLeft + document.documentElement.scrollLeft;

    conDiv.style.left = (getleftPos(inputObj)-35) + 'px';
    conDiv.style.top = (getTopPos(inputObj)+5) + 'px';

    conDiv.style.visibility='visible';
    conDiv.style.display = 'block';
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//날짜를 클릭했을때 해당 년월일을 콤보박스에 셋팅한다.
function SetCboControl(varDD,gvarminung){
    var conDiv = document.getElementById("smallcalendar");
    var conminung = eval(gvarminung);
    conminung.value = varDD;
    conDiv.style.visibility='hidden';
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//월 변경버튼 클릭시
function ChangeCal(varType){

    var varYear=varCurYYYYMM.substring(0,4);
    var varMonth=varCurYYYYMM.substring(4,6);

    if(varType=='prev'){
        varMonth--;
        if(varMonth<0 ){
            varYear--;
            varMonth='11';
        }
    } else if (varType=='next'){
        varMonth++;
        if(varMonth==12){
            varYear++;
            varMonth='0';
        }
    } else if (varType=='yprev') {
        varYear--;
    } else {
        varYear++;
    }

    //자릿수조정
    if(varMonth<10){
        varCurYYYYMM=varYear+'0'+varMonth;
    } else {
        varCurYYYYMM=varYear+''+varMonth;
    }

    //alert(varCurYYYYMM);
    setCal(gvarminung,gvarYearControl,gvarMonthControl,gvarDayControl,varCurYYYYMM, inputObj)
}
//달력 끝
