
var months = new Array( null,'Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec' );
//var days = new Array( 'Sun','Mon','Tue','Wed','Thu','Fri','Sat' );
var days = new Array( 'S','M','T','W','T','F','S' );
var table_i = new Array( 6,0,1,2,4,5,6,0,2,3,4,5,0,1,2,3,5,6,0,1,3,4,5,6,1,2,3,4,6,0,1,2,4,5,6,0,2,3,4,5,0,1,2,3,5,6,0,1,3,4,5,6,1,2,3,4,6,0,1,2,4,5,6,0,2,3,4,5,0,1,2,3,5,6,0,1,3,4,5,6,1,2,3,4,6,0,1,2,4,5,6,0,2,3,4,5,0,1,2,3 );
var table_ishift = new Array( 0,6,5,4,3,2,1,0,6,5,4,3,2,1,0,4,2,0,5,3,2,6 );

today = new Date();
var year;
if (today.getFullYear) {
    year = today.getFullYear();
} else {
    year = today.getYear()+1900;
}
var month = today.getMonth()+1;

function dayOfWeek (Year, Month, Day) {
/*    
    var Century = Math.floor(Year / 100);
    var Decade = Year - (Century * 100);
    var table_i_cnt = table_i[Decade];
    var step1 = (table_i_cnt + table_ishift[Century]) % 7;
    var month_days;
    var leap = isLeapYear(Year);

    switch (Month) {
        case 1: // January
            if (leap) { month_days = 6; }
            else { month_days = 0; }
        break;
        case 2: // February
            if (leap) { month_days = 5; }
            else { month_days = 4; }
        break;
//      case 3: // March
//          month_days = 3;
//      break;
        case 4: // April
        case 7: // July     
            month_days = 6;
        break;
        case 5: // May
            month_days = 1;
        break;
        case 6: // June
            month_days = 4;
        break;
        case 8: // August
            month_days = 2;
        break;
        case 10: // October
            month_days = 0;
        break;
//      case 11: // November
//          month_days = 3;
//      break;
        case 12: // December
        case 9: // September
            month_days = 5;
        break;
        default: // MAR. NOV.
            month_days = 3;
    }
    
    var step2 = (month_days + step1) % 7;
    Day = (Day % 7);
    return (Day + 5 + step2) % 7;
*/
    d = new Date();
    d.setDate(1);
    d.setYear(Year);
    d.setMonth(Month-1);
    d.setDate(Day);
    d.setHours(12);

    return d.getDay();
}

function isLeapYear (Year) {
    var leap = false;
    if ((Year % 4) == 0) leap = true;
    if ((Year % 100) == 0) leap = false;
    if ((Year % 400) == 0) leap = true;
    return leap;
}

function daysOfMonth (Month, Year) {
    switch (Month) {
        case 4:
        case 6:
        case 9:
        case 11:
            return 30;
            break;
        case 2:
            if (isLeapYear(Year)) { return 29; }
             else { return 28; }
            break;
        default:
            return 31;
    }
}

function calendarHide (divId) {
    document.getElementById(divId).style.display = 'none';
}

function calendarDraw (divId, txtId) {
    if (year > 2100) year = 2100;
    if (year < 1900) { year = 1900; }
    if (month < 1) { month = 12; year -= 1; }
    if (month > 12) { month = 1; year += 1; }
    var layer = document.getElementById(divId);

    var html;
    var MonthNum;
    var DayNum;
    var DayOfWeek = dayOfWeek(year, month, 1);
    
    html =
     //"<table class='calendar'><tr><td style='background-color:#eee'>&nbsp;"+
     //"<b><a href=# onclick='calendarHide(\""+ divId +"\");return false'>x</a></b>"+
     //" &nbsp;&nbsp;&nbsp;</td><td>"+
     "<table class='calTable' cellpadding=0 cellspacing=0><tr class='calTitle'>"+
     "<td class='calNextPrev' align='center' valign='middle'><a href='#' onClick=\"year-=1;"+
     "calendarDraw('"+ divId +"', '"+ txtId +"');"+
     "return false\">&lt;&lt;</A>"+
     "</td><td class='calNextPrev' align='center' valign='middle'><a href='#' onClick=\"month-=1;"+
     "calendarDraw('"+ divId +"', '"+ txtId +"');return false\">"+
     "&lt;</a></td><td colspan='3' align='center' valign='middle'>"+
     year +"&nbsp;-&nbsp;"+ months[month] +
     "</td><td class='calNextPrev' align='center' valign='middle'><a href='#' onClick=\"month+=1;"+
     "calendarDraw('"+ divId +"', '"+ txtId +"');"+
     "return false\">&gt;</a></td>"+
     "<td class='calNextPrev' align='center' valign='middle'><A href='#' onClick=\"year+=1;"+
     "calendarDraw('"+ divId +"', '"+ txtId +"');"+
     "return false\">&gt;&gt;</a></td></tr>"+
     "<tr>";
    
    var MaxDays = daysOfMonth(month,year);
    for (var day = 0; day < 7; day++) {
        html += "<td class='calDayHeader' align='center'>"+ days[day] +"</td>";
    }
    html += "</tr>";
    
    var SDraw = false;
    if (month > 9) { MonthNum = ''+month; }
     else { MonthNum = '0'+month; }
    for (var day_c = 1; day_c <= 36;) {
        html += "<tr>\n";
        for (var dow = 0; dow < 7; dow++) {
            if (dow == DayOfWeek) { SDraw = true; }
            if (day_c > 9) { DayNum = ''+day_c; }
             else { DayNum = '0'+ day_c; }
            if ((day_c <= MaxDays) && SDraw) {
                if (dow == 0 || dow == 6) 
                    html += "<td class='calWeekendDay' align='center'>";
                else
                    html += "<td class='calDay' align='center'>";
                html +=
                 "<a href=# onclick=\"setDate('"+ txtId +
                 "', '"+ year + MonthNum + DayNum +"');"+
                 "calendarHide('"+ divId +"');"+
                 "return false\">"+ (day_c++) +"</a>";
            } else {
                html += "<td class='calOtherMonthDay' align='center'>&nbsp;";
                if (SDraw) day_c++;
            }
            html += "</td>\n";
        }
        html += "</tr>\n";
    }
    html += '</table>';
    layer.innerHTML = html;
    layer.style.display = 'block';
}

function setDate (txtId, dateStr) {
    //document.getElementById(txtId).value = dateStr;
    document.location = "?ByDate="+dateStr;
}

function toggleCalendar (divId, txtId) {
    var oDiv = document.getElementById(divId);
    var oTxt = document.getElementById(txtId);
    
    if (oDiv.style.display == 'none')
        calendarDraw(divId, txtId);
    else
        calendarHide(divId);
}
