// file name : mba_calc.js
/*************************************************************/

if (document.layers) // Netscape
{   
    document.captureEvents(Event.MOUSEMOVE);
    document.onmousemove = captureMousePosition;
} 
else if (document.all) // Internet Explorer
{ 
    document.onmousemove = captureMousePosition;
} 
else if (document.getElementById) // Netcsape 6
{ 
    document.onmousemove = captureMousePosition;
}
// Global variables
xMousePos = 0; // Horizontal position of the mouse on the screen
yMousePos = 0; // Vertical position of the mouse on the screen
xMousePosMax = 0; // Width of the page
yMousePosMax = 0; // Height of the page

function captureMousePosition(e) {
    if (document.layers) {
        xMousePos = e.pageX;
        yMousePos = e.pageY;
        xMousePosMax = window.innerWidth+window.pageXOffset;
        yMousePosMax = window.innerHeight+window.pageYOffset;
    } else if (document.all) {
        xMousePos = window.event.x+document.body.scrollLeft;
        yMousePos = window.event.y+document.body.scrollTop;
        xMousePosMax = document.body.clientWidth+document.body.scrollLeft;
        yMousePosMax = document.body.clientHeight+document.body.scrollTop;
    } else if (document.getElementById) {
        xMousePos = e.pageX;
        yMousePos = e.pageY;
        xMousePosMax = window.innerWidth+window.pageXOffset;
        yMousePosMax = window.innerHeight+window.pageYOffset;
    }
}

/*************************************************************/
var menuskin = "prompt_skin1";
var display_url = 0; // Show URLs in status bar?

function showPrompt() 
{
    ie5menu.style.top = yMousePos;
    ie5menu.style.left = xMousePos;

    ie5menu.style.visibility = "visible";
    document.body.onclick = disableClick; 
    return false;
}

function hidePrompt() 
{
    ie5menu.style.visibility = "hidden";
    document.body.onclick = null; 
}

function highlightie5() 
{
    if (event.srcElement.className == "menuitems") 
    {
        event.srcElement.style.backgroundColor = "highlight";
        event.srcElement.style.color = "white";
        if (display_url)
            window.status = event.srcElement.url;
   }
}

function lowlightie5() 
{
    if (event.srcElement.className == "menuitems") 
    {
        event.srcElement.style.backgroundColor = "";
        event.srcElement.style.color = "black";
        window.status = "";
   }
}

function jumptoie5() 
{
    if (event.srcElement.className == "menuitems") 
    {
       if (event.srcElement.getAttribute("target") != null)
          window.open(event.srcElement.url, event.srcElement.getAttribute("target"));
       else
          window.location = event.srcElement.url;
   }
}

function disableClick() 
{
   return false;
}
/*************************************************************/
// variables :
var holidayArray;

var sMonArray = new Array(12);
sMonArray[0] = "Jan";
sMonArray[1] = "Feb";
sMonArray[2] = "Mar";
sMonArray[3] = "Apr";
sMonArray[4] = "May";
sMonArray[5] = "Jun";
sMonArray[6] = "Jul";
sMonArray[7] = "Aug";
sMonArray[8] = "Sep";
sMonArray[9] = "Oct";
sMonArray[10] = "Nov";
sMonArray[11] = "Dec";

var nMonMaxDayArray = new Array(12);
nMonMaxDayArray[0] = 31;
nMonMaxDayArray[1] = 28;
nMonMaxDayArray[2] = 31;
nMonMaxDayArray[3] = 30;
nMonMaxDayArray[4] = 31;
nMonMaxDayArray[5] = 30;
nMonMaxDayArray[6] = 31;
nMonMaxDayArray[7] = 31;
nMonMaxDayArray[8] = 30;
nMonMaxDayArray[9] = 31;
nMonMaxDayArray[10] = 30;
nMonMaxDayArray[11] = 31;

//----------------------------------------------------
// function name : drawSmallCalendar
//----------------------------------------------------
function drawSmallCalendar(elementID, nMon, nYear)
{
    dtToday = new Date();
    nCurMon = dtToday.getMonth();
    nCurYear = dtToday.getYear();
    nCurDate = dtToday.getDate();

    if(nYear == -1) nYear = nCurYear; 
    if(nMon == -1) nMon = nCurMon;
    if(nMon == -2) nMon = nCurMon-1;
    //if(nMon == 0) nMon = nCurMon+1;

    // prev
    nPrevMon = nMon;
    nPrevMon--;
    nPrevYear = nYear;
    if(nPrevMon == -1) 
    {
        nPrevMon = 11;
        nPrevYear--;
    }
    // next
    nNextMon = nMon;
    nNextMon++;
    nNextYear = nYear;
    if(nNextMon > 11) 
    {
        nNextMon = 0;
        nNextYear++;
    }
    sMon = sMonArray[nMon];

    var sCalendar = "<table id=tblCal width=140>";
    sCalendar += "<tr><td class=tdMon><a href=javascript:drawSmallCalendar('"+elementID+"',"+nPrevMon+","+nPrevYear+")>&lt;&lt;</a></td>";
    sCalendar += "<td colspan=5 class=tdMon>"+sMon+ " " + nYear + "</td>";
    sCalendar += "<td class=tdMon><a href=javascript:drawSmallCalendar('"+elementID+"',"+nNextMon+","+nNextYear+")>&gt;&gt;</a></td></tr>";
    sCalendar += "<tr><td class=tdMon><font color=red>S</font></td>";
    sCalendar += "<td class=tdMon>M</td>";
    sCalendar += "<td class=tdMon>T</td>";
    sCalendar += "<td class=tdMon>W</td>";
    sCalendar += "<td class=tdMon>T</td>";
    sCalendar += "<td class=tdMon>F</td>";
    sCalendar += "<td class=tdMon>S</td></tr>";

    dtStart = new Date(nYear, nMon, 1, 0, 0, 0);
    nDay = dtStart.getDay();

    var j=1, nDate=0;
    bFirst = true;
    nMaxDay = nMonMaxDayArray[nMon];
    if((nMon==1) && (nYear%4==0)) nMaxDay++;

    for(i=0;i<nMaxDay;i++)
    {
        if(i%7==0) 
        {
            if(bFirst==false) sCalendar += "</tr>";
            else bFirst = false;

            sCalendar += "<tr>";
        }

        if(i < nDay)
        {
             sCalendar += "<td class=tdDay id=dd>&nbsp;</td>";
             nMaxDay++;
        }
        else 
        {
            nMon2 = nMon;
            nMon2++; // to 1-based
            if(j < 10) sDate = "0"+j;
            else sDate = j;
            if(nMon2 < 10) sMon = "0"+nMon2;
            else sMon = nMon2;

            sID = "mm"+sMon+"dd"+sDate;

            if(nYear == nCurYear && nMon==nCurMon && nDate==(nCurDate-1))
                sCalendar += "<td class=tdToday>"+j+"</td>";
            else
            {
                if(i%7==0) sCalendar += "<td class=tdDaySun>"+j+"</td>";
                else sCalendar += "<td class=tdDay>"+j+"</td>";
            }
            j++;
            nDate++;
        }
    }
    sCalendar += "</tr></table>"; 
    document.getElementById(elementID).innerHTML = sCalendar;
}

//----------------------------------------------------
// function name : drawSSCalendar
//----------------------------------------------------
function drawSSCalendar(elementID, nMon, nYear)
{
    el = document.getElementById(elementID);
    if(!el) return false;

    dtToday = new Date();
    nCurMon = dtToday.getMonth();
    nCurYear = dtToday.getYear();
    nCurDate = dtToday.getDate();

    if(nYear == -1) nYear = nCurYear; 
    if(nMon == -1) nMon = nCurMon;
    if(nMon == -2) nMon = nCurMon-1;
    if(nYear == -2) nYear = nCurYear-1; 
    if(nYear == -3) nYear = nCurYear+1; 
    //if(nMon == 0) nMon = nCurMon+1;

    // prev
    nPrevMon = nMon;
    nPrevMon--;
    nPrevYear = nYear;
    if(nPrevMon == -1) 
    {
        nPrevMon = 11;
        nPrevYear--;
    }
    // next
    nNextMon = nMon;
    nNextMon++;
    nNextYear = nYear;
    if(nNextMon > 11) 
    {
        nNextMon = 0;
        nNextYear++;
    }
    sMon = sMonArray[nMon];

    var sCalendar = "<table id=tblCal width=140>";
    sCalendar += "<td colspan=7 class=tdMon>";
    sCalendar += "<a href=javascript:void('"+elementID+"',"+nMon+","+nYear+")>";
    sCalendar += sMon+ " " + nYear + "</a></td>";
    sCalendar += "<tr><td class=tdMon><font color=red>S</font></td>";
    sCalendar += "<td class=tdMon>M</td>";
    sCalendar += "<td class=tdMon>T</td>";
    sCalendar += "<td class=tdMon>W</td>";
    sCalendar += "<td class=tdMon>T</td>";
    sCalendar += "<td class=tdMon>F</td>";
    sCalendar += "<td class=tdMon>S</td></tr>";

    dtStart = new Date(nYear, nMon, 1, 0, 0, 0);
    nDay = dtStart.getDay();

    var j=1, nDate=0;
    bFirst = true;
    nMaxDay = nMonMaxDayArray[nMon];
    if((nMon==1) && (nYear%4==0)) nMaxDay++;

    for(i=0;i<nMaxDay;i++)
    {
        if(i%7==0) 
        {
            if(bFirst==false) sCalendar += "</tr>";
            else bFirst = false;

            sCalendar += "<tr>";
        }

        if(i < nDay)
        {
             sCalendar += "<td class=dd id=dd>&nbsp;</td>";
             nMaxDay++;
        }
        else 
        {
            nMon2 = nMon;
            nMon2++; // to 1-based
            if(j < 10) sDate = "0"+j;
            else sDate = j;
            if(nMon2 < 10) sMon = "0"+nMon2;
            else sMon = nMon2;

            sID = "mm"+sMon+"dd"+sDate;

            if(nYear == nCurYear && nMon==nCurMon && nDate==(nCurDate-1))
            {
                sCalendar += "<td class=tdToday>"+j+"</td>";
            }
            else
            {
                if(i%7==0)
                    sCalendar += "<td class=tdDaySun>"+j+"</td>";
                else
                    sCalendar += "<td class=tdDay>"+j+"</td>";
            }
            j++;
            nDate++;
        }
    }
    sCalendar += "</tr></table>"; 
    document.getElementById(elementID).innerHTML = sCalendar;
}

////////////////////////////////////////////////////////////////////////////////////////////////

//----------------------------------------------------
// function name : drawCalendar
//----------------------------------------------------
function drawCalendar(elementID, nMon, nYear)
{
    dtToday = new Date();
    nCurMon = dtToday.getMonth();
    nCurYear = dtToday.getYear();
    nCurDate = dtToday.getDate();

    if(nYear == -1) nYear = nCurYear; 
    if(nMon == -1) nMon = nCurMon;
    if(nMon == -2) nMon = nCurMon-1;

    // prev
    nPrevMon = nMon;
    nPrevMon--;
    nPrevYear = nYear;
    if(nPrevMon == -1) 
    {
        nPrevMon = 11;
        nPrevYear--;
    }
    // next
    nNextMon = nMon;
    nNextMon++;
    nNextYear = nYear;
    if(nNextMon > 11) 
    {
        nNextMon = 0;
        nNextYear++;
    }
 
    sMon = sMonArray[nMon];

    var sCalendar = "<table id=tblCal width=800 cellpadding=0 cellspacing=1>";
    sCalendar += "<tr><td class=tdMon><a href=javascript:drawCalendar('"+elementID+"',"+nPrevMon+","+nPrevYear+")><img border=0 src=img/left_arrow.gif></a></td>";
    sCalendar += "<td colspan=5 class=tdMon>"+sMon+ " " + nYear + "</td>";
    sCalendar += "<td class=tdMon><a href=javascript:drawCalendar('"+elementID+"',"+nNextMon+","+nNextYear+")><img border=0 src=img/right_arrow.gif></a></td></tr>";
    sCalendar += "<tr><td class=tdWeekDay><font color=red>S</font></td>";
    sCalendar += "<td class=tdWeekDay>M</td>";
    sCalendar += "<td class=tdWeekDay>T</td>";
    sCalendar += "<td class=tdWeekDay>W</td>";
    sCalendar += "<td class=tdWeekDay>T</td>";
    sCalendar += "<td class=tdWeekDay>F</td>";
    sCalendar += "<td class=tdWeekDay>S</td></tr>";

    dtStart = new Date(nYear, nMon, 1, 0, 0, 0);
    nDay = dtStart.getDay();

    var j=1, nDate=0;
    bFirst = true;
    nMaxDay = nMonMaxDayArray[nMon];
    if((nMon==1) && (nYear%4==0)) nMaxDay++;

    for(i=0;i<nMaxDay;i++)
    {
        if(i%7==0) 
        {
            if(bFirst==false) sCalendar += "</tr>";
            else bFirst = false;

            sCalendar += "<tr>";
        }

        if(i < nDay)
        {
             sCalendar += "<td class=tdBlank id=mm00dd00>&nbsp;</td>";
             nMaxDay++;
        }
        else 
        {
            nMon2 = nMon;
            nMon2++; // to 1-based
            if(j < 10) sDate = "0"+j;
            else sDate = j;
            if(nMon2 < 10) sMon = "0"+nMon2;
            else sMon = nMon2;

            sID = "mm"+sMon+"dd"+sDate;

            if(nYear == nCurYear && nMon==nCurMon && nDate==(nCurDate-1))
            {
                sCalendar += "<td class=tdToday2 id="+sID+">";
            }
            else
            {
                if(i%7==0)
                    sCalendar += "<td class=tdDaySun2 id="+sID+">";
                else
                    sCalendar += "<td class=tdDay2 id="+sID+">";
            }
            ssID = "dt_"+sID;
            sCalendar += "<table width=100 cellpadding=0 cellspacing=0 border=0 id="+ssID+">";
            sCalendar += "<tr><td id=dt_"+sID+"_day class=tdDayDet>";
            sCalendar += "<input type=hidden name=cal_item_dt_"+sID+">";
            sCalendar += "<input type=hidden name=cal_item_name_"+sID+">";
            sCalendar += "<a href=javascript:setDate('"+sID+"',"+nYear+","+nMon2+","+j+")>";
            sCalendar += j;
            sCalendar += "</a>";
            sCalendar += "</td>";
            sCalendar += "<td class=tdDayDet></td><td class=tdDayDet></td></tr>";
            sCalendar += "<tr><td id=dt_"+sID+"_hday_name class=tdDayDet></td><td class=tdDayDet></td><td class=tdDayDet></td></tr>";
            sCalendar += "<tr><td id=dt_"+sID+"_hday_type class=tdDayDet></td><td class=tdDayDet></td><td class=tdDayDet></td></tr>";
            sCalendar += "</table>";

            
            sCalendar +="</td>";
            j++;
            nDate++;
        }
    }
    sCalendar += "</tr></table>";
    document.getElementById(elementID).innerHTML = sCalendar;
    checkHoliday(nMon2);
}

function setDate(elementID, nYear, nMon, nDate)
{
    if(nMon < 10) nMon = "0"+nMon;
    if(nDate < 10) nDate = "0"+nDate;

    dtID = "mm"+nMon+"dd"+nDate;
    var cellObj = document.getElementById(dtID);

    if(cellObj.className.indexOf("Selected") > 0)
    {
       unsetDate(elementID, nYear, nMon, nDate);
    }
    else 
    {
       document.cal_form.tmp_cal_item_dt.value = dtID;
       showPrompt();
    }
}

function unsetDate(elementID, nYear, nMon, nDate)
{
    if(nMon < 10) nMon = "0"+nMon;
    if(nDate < 10) nDate = "0"+nDate;

    dtID = "mm"+nMon+"dd"+nDate;

    var cellObj = document.getElementById(dtID);
    if(cellObj.className == "tdSelected")
         cellObj.className = "tdDay2";
    else if(cellObj.className == "tdSelectedSun")
         cellObj.className = "tdDaySun2";
    else if(cellObj.className == "tdSelectedToday")
         cellObj.className = "tdToday2";
   
    ssID = "dt_"+dtID+"_hday_name";
    var cellObjDet = document.getElementById(ssID);

    cellObjDet.innerHTML = "";
    eval("cal_form.cal_item_dt_"+dtID+".value = ''");
}

function setDate2()
{
    dtID = document.cal_form.tmp_cal_item_dt.value;
    cellObj = document.getElementById(dtID);
    holidayName = document.cal_form.tmp_cal_item_name.value;
    if(cellObj && holidayName != '')
    {
         if (holidayName == null) holidayName = 'holiday';

         if(cellObj.className == "tdToday2")
             cellObj.className = "tdSelectedToday";
         if(cellObj.className == "tdDaySun2")
             cellObj.className = "tdSelectedSun";
         else
             cellObj.className = "tdSelected";
   
         ssID = "dt_"+dtID+"_hday_name";
         var cellObjDet = document.getElementById(ssID);

         cellObjDet.innerHTML = holidayName;
         //dtIDValue = nYear+"-"+nMon+"-"+nDate+"|"+holidayName;
         dtIDValue = dtID+"|"+holidayName;
         eval("cal_form.cal_item_dt_"+dtID+".value = '"+dtIDValue+"'");
    }
    document.cal_form.tmp_cal_item_dt.value = '';
    document.cal_form.tmp_cal_item_name.value = '';
    hidePrompt();
}

//----------------------------------------------------
// function name : initTestHoliday
//----------------------------------------------------
function initTestHoliday()
{
   holidayArray = new Array(13);
   holidayArray[0] = "mm01dd01";
   holidayArray[1] = "mm02dd01";
   holidayArray[2] = "mm03dd06";
   holidayArray[3] = "mm04dd30";
   holidayArray[4] = "mm05dd01";
   holidayArray[5] = "mm05dd02";
   holidayArray[6] = "mm05dd03";
   holidayArray[7] = "mm06dd03";
   holidayArray[8] = "mm07dd14";
   holidayArray[9] = "mm08dd31";
   holidayArray[10] = "mm10dd02";
   holidayArray[11] = "mm11dd09";
   holidayArray[12] = "mm12dd25";
}

//----------------------------------------------------
// function name : checkHoliday
//----------------------------------------------------
function checkHoliday(nMon)
{
   if(nMon < 10) nMon = "0"+nMon;
   sMon = "mm"+nMon;
   //alert(sMon);
   for(i=0;i<holidayArray.length;i++)
   {
        if(holidayArray[i].substr(0,4) == sMon)
            document.getElementById(holidayArray[i]).className = "tdHoliday";
   }
}

function saveCalendar()
{
   var cookieName = 'myname';
   eleCnt = document.cal_form.elements.length;
   j = 0;
   document.cal_form.cal_items.value = '';
   for(i=0;i<eleCnt;i++)
   {
       if(document.cal_form.elements[i].name.indexOf("cal_item_dt") == 0)
       {
          if(document.cal_form.elements[i].value)
          {
             document.cal_form.cal_items.value += document.cal_form.elements[i].value + ";";
             j++;
           }
       }
   }
   document.cal_form.submit();
}


function drawYearCalendar(nYear)
{
    document.getElementById('cal_year_tbl').style.display = "block";

    dtToday = new Date();
    nCurYear = dtToday.getYear();

    if(nYear == -1) nYear = nCurYear; 
    if(nYear == -2) nYear = nCurYear-1; 
    if(nYear == -3) nYear = nCurYear+1; 
    
    drawSSCalendar("cal_month_01", 0, nYear);
    drawSSCalendar("cal_month_02", 1, nYear);
    drawSSCalendar("cal_month_03", 2, nYear);
    drawSSCalendar("cal_month_04", 3, nYear);
    drawSSCalendar("cal_month_05", 4, nYear);
    drawSSCalendar("cal_month_06", 5, nYear);
    drawSSCalendar("cal_month_07", 6, nYear);
    drawSSCalendar("cal_month_08", 7, nYear);
    drawSSCalendar("cal_month_09", 8, nYear);
    drawSSCalendar("cal_month_10", 9, nYear);
    drawSSCalendar("cal_month_11", 10, nYear);
    drawSSCalendar("cal_month_12", 11, nYear);
    
    document.getElementById('cal_year').innerHTML = nYear;
}

function drawYearCal(el_id, nSign)
{
    nYear = document.getElementById('cal_year').innerHTML;
    if(nSign == '-')
       nYear--; 
    else
       nYear++; 

    drawYearCalendar(nYear);
}

