/*
   Calendar display for Entrepreneur Planner

*/

// Version variables
// initialiZe variables... 
var IE=((navigator.appName == "Microsoft Internet Explorer") || ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion)==5)));
var NN6=((navigator.appName == "Netscape") && (parseInt(navigator.appVersion)==5));
var NN=((navigator.appName == "Netscape")&&(document.layers));

var monthNames = new Array('January','February','March','April','May','June','July','August','September','October','November','December');

var isVisible = false;
var maxYears=2099;
var minYears=1900;
var minDate = new Date( minYears, 1, 1 );
var maxDate = new Date( maxYears, 1, 1 );
var todaysDate = new Date; 
var currDate = new Date; 

var totalDays = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
var dayOfWeek = new Array('Sun','Mon','Tues','Wed','Thurs','Fri','Sat');
var calendarCode = "";

function log( str )
{
    //console( str );
}

function clone( clonedate )
{
    var newDate = new Date;
    newDate.setMonth( clonedate.getMonth() );
    newDate.setFullYear( clonedate.getFullYear() );
    newDate.setDate( clonedate.getDate() );
    return newDate;
}

function scrollMonth(amount) 
{   
    var dt = currDate.getDate() ;
    var monthCheck = currDate.getMonth() + amount;
    var yearCheck = currDate.getFullYear();
    
    if (monthCheck < 0) 
    {
        yearCheck = currDate.getFullYear() - 1;
        if ( yearCheck < minYears ) 
        {
            yearCheck = minYears;
            monthCheck = 0;
        }
        else 
        {
            monthCheck = 11;
        }
    }
    else if (monthCheck >11) 
    {
        yearCheck = currDate.getFullYear() + 1;
        if ( yearCheck > maxYears) 
        {
            yearCheck = maxYears;
            monthCheck = 11;
        }
        else 
        {
            monthCheck = 0;
        }      
    }
    if ( dt > totalDays[ monthCheck ] )
        dt = 1;
    currDate.setDate( dt );        
    currDate.setMonth( monthCheck );
    currDate.setFullYear(yearCheck);    
    buildCalendar();

    //Setting pageIds in calendar
    setCellDataForMonth();
}

changeMonth = function( count )
{
    month = currDate.getMonth();
    year = currDate.getFullYear();
    mon = month+count;
    currDate.setMonth( mon );
    buildCalendar();
}

showCalendar = function( month, year )
{
    if ( month == -1 )    
       month = todaysDate.getMonth() ;
    if ( year == -1)    
       year = todaysDate.getFullYear() ;

    currDate.setMonth( month );
    currDate.setYear( year );
    currDate.setDate( todaysDate.getDate() );    
    buildCalendar();    
}

showToday = function( month )
{
    var showtoday = new Date;
    showtoday.setDate( todaysDate.getDate() );
    showtoday.setMonth( todaysDate.getMonth() );
    showtoday.setFullYear( todaysDate.getFullYear() ) ;
    currDate = showtoday;
    buildCalendar();
    //
    setCellDataForMonth();
}

buildCalendar = function()
{            
    month = currDate.getMonth();
    year = currDate.getFullYear();
    dt = currDate.getDate();

    //if ( currentView=='Month')
        innerCode = getMonthView( month, year, dt ); 
    
    var caldiv = document.getElementById("calendardiv"); 
    caldiv.innerHTML = innerCode;    
    showAllEntries( month, year );
}

getMonthView = function( month, year, selDate )
{
    var firstDay = new Date( year, month, 1 );
    var startDay = firstDay.getDay();
    
    if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))
        totalDays[1] = 29;
    else
        totalDays[1] = 28;

    var column = 0;
    var lastMonth = month - 1;
    var lastYear = year;
    if (lastMonth == -1) 
    { 
        lastMonth = 11; 
        lastYear=lastYear-1;
    }


    var innerCode = "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";

    innerCode +="<tr><td align=\"left\" valign=\"top\" class=\"cloudthree\"><a href=\"javascript:scrollMonth(-1)\" title=\"Previous Month\"><img src=\"images/large_icons/icon_back.gif\" align=\"absmiddle\" title=\"Previous Month\"/></a> <a href=\"javascript:scrollMonth(1)\" title=\"Next Month\"><img src=\"images/large_icons/icon_next.gif\" align=\"absmiddle\" title=\"Next Month\"/></a> " + monthNames[month] + ",&nbsp;" + year +"</td><td align=\"right\" valign=\"bottom\" class=\"formheader\"><strong>Planner Management:</strong> <a title=\"Manage Tasks\" href=\"javascript:getCurrPageDataFromMainPage('Tasks')\">Tasks </a> | <a title=\"Manage Appointments\" href=\"javascript:getCurrPageDataFromMainPage('Appointments')\">Appointments</a> | <a title=\"Manage Notes\" href=\"javascript:getCurrPageDataFromMainPage('Note')\" >Notes</a></td></tr></table>";

    innerCode += "<div style=\"border:solid #666666 1px; width:100%; overflow:auto;\"><table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"formtext\"><tr>";
        
    for( w=0; w<7; w++)
    {
        innerCode += "<td width=\"14%\" align=\"center\" style=\"background-color:#b8d4ec; padding-top:5px; padding-bottom:5px;\"><strong>" + dayOfWeek[w] + "</strong></td>";
    }
    innerCode += "</tr><tr>";
        
    for (i=0; i<startDay;  i++, column++) 
    {
        innerCode += getDayBox( (totalDays[lastMonth]-startDay+i+1), lastMonth, lastYear, true, false );
    }
    
    for (i=1; i<=totalDays[month]; i++, column++) 
    {
        if ( i==selDate )
            innerCode += getDayBox(i,month,year,false,true);
        else
            innerCode += getDayBox(i,month,year,false,false);
            
        if (column == 6) 
        {
            innerCode += '<\/tr><tr>';
            column = -1;
        }
    }
    
    var nextMonth = month+1;
    var nextYear = year;
    if (nextMonth==12) 
    { 
        nextMonth=0; nextYear=nextYear+1;
    }

    if (column > 0) 
    {
        for (i=1; column<7; i++, column++) 
        {
                innerCode += getDayBox(i, nextMonth,nextYear,true,false); 
        }
        innerCode += '<\/tr><\/table>';
    }
    else 
    {
        innerCode = innerCode.substr(0,innerCode.length-4); // remove the <tr> from the end if there's no last row
        innerCode += '<\/table>';
    }    
    
    innerCode += "</div>";
    return innerCode;
}

changeColor = function( thisdiv )
{
    thisdiv.style.backgroundColor='#FFFF99';
}

revertColor = function( thisdiv )
{
    thisdiv.style.backgroundColor='#FFFFFF';
}

showTodaysDate = function()
{    
    var dt = currDate.getDate() + '/' + currDate.getMonth() + '/' + currDate.getFullYear();
    document.getElementById("today_date").innerHTML = "Date : " + dt + "&nbsp;&nbsp;&nbsp;";    
}

getDayBox = function( thisday, thismonth, thisyear, grayIt, selected )
{
    if ( isDayValid( thisday, thismonth, thisyear )) 
    {
        var boxid = thismonth + "_" + thisday + "_" + thisyear;
        var fulldate = monthNames[thismonth] + "&nbsp;" + thisday + ",&nbsp;" + thisyear;
        //tmphtml = "<td height='80px' width='13%' align='center' onClick=this.className='selectbox'; onMouseOut=this.className=''; onMouseOver=this.className='daybox'; style='border-right:1px solid gray;border-bottom:1px solid gray;background-color:#28FFF;vertical-align:top;'>" ;
        //onMouseOver='javascript:changeColor(this);' onMouseOut='this.style.backgroundColor=#FFFFFF;' style='text-align:right;margin-right:2px'
        //onMouseOver='javascript:changeColor(this);' onMouseOut='javascript:revertColor(this);' style='text-align:right;margin-right:2px'
        
        if ( grayIt )
        {
            tmphtml = " <td height=\"100\" width=\"14%\" align=\"right\" valign=\"top\" style=\"padding-top:10px; padding-right:5px; border-bottom:1px dotted #CCCCCC; border-right:1px dotted #CCCCCC;\">" + thisday + "</td>";
        }
        else
        {
            if ( isDayToday( thisday ) )
            {
                tmphtml = "<td height=\"100\" Id=" + boxid + "  title=" + fulldate + " align='right' width='14%' valign='top' style=\"padding-top:10px; padding-right:5px; border-right:1px dotted #CCCCCC; background-color:#b8d4ec\" onClick='javascript:selectDate( this.id );' ><strong>" + thisday + "</strong><div id=\"addImage_"+boxid+"\"><a href=\"javascript:fetchPageDataFromServer('Tasks','')\" id=\""+boxid+"_open\"><img src=\"images/large_icons/icon_padd.gif\"></a></div></td>";
            }
            else
            {
                tmphtml = "<td Id=" + boxid + " height=\"100\"  title=" + fulldate + " width='14%' align='right'  valign='top' style=\"padding-top:10px; padding-right:5px;border-bottom:1px dotted #CCCCCC;border-right:1px dotted #CCCCCC;\" onClick='javascript:selectDate( this.id );' " ;
                if (selected)
                {
                    tmphtml += " class='selectBox' "
                }                
                tmphtml += ">";                
                //If the date is past, disablin the add image icon
                if(!enableAddImageForCell(boxid))
                {
                    tmphtml += "<strong>" + thisday + "</strong><div id=\"addImage_"+boxid+"\" style=\"display:none\"><a href=\"javascript:fetchPageDataFromServer('Tasks','')\" id=\""+boxid+"_open\"><img src=\"images/large_icons/icon_padd.gif\"></a></div></td>";
                }
                else
                {
                    tmphtml += "<strong>" + thisday + "</strong><div id=\"addImage_"+boxid+"\"><a href=\"javascript:fetchPageDataFromServer('Tasks','')\" id=\""+boxid+"_open\"><img src=\"images/large_icons/icon_padd.gif\"></a></div></td>";
                }
            }
        }
    }
    else
    {
        tmphtml = "<td height='50px' align='center'>" + thisday + "</td>";        
    }
    return tmphtml;
}

function enableAddImageForCell(cellId)
{
   var idSplit = cellId.split("_");
   var mth = idSplit[0];
   var dd = idSplit[1];
   var yr = idSplit[2];
   var cellDate = new Date();
   cellDate.setMonth(mth);
   cellDate.setDate(dd);
   cellDate.setFullYear(yr);
   cellDate.setHours(0);
   cellDate.setMinutes(0);
   cellDate.setSeconds(0);
   var todayDate = new Date();
   todayDate.setHours(0);
   todayDate.setMinutes(0);
   todayDate.setSeconds(0);
   //alert("cellDate:::::"+cellDate+"**currrrrentdate::::::"+todayDate);
   if(todayDate <= cellDate)
   {
         return true;
   }
   return false;
}

getSelectedDate = function( thisid )
{
    var thissplit = thisid.split("_");
    var mn = thissplit[0];
    var date = thissplit[1];
    var yr = thissplit[2];
    var selDate = new Date;
    selDate.setMonth(mn); selDate.setDate( date ); selDate.setFullYear( yr );
    return selDate;
}

selectDate = function( thisid )
{
    var seldate = getSelectedDate( thisid );
    for( var d=1;d<=totalDays[seldate.getMonth()];d++)
    {    
        var Id = seldate.getMonth() + "_" + d + "_" + seldate.getFullYear();    
        var d_box = document.getElementById( Id );
        if ( thisid == Id )
        {
            if ( isDayToday( seldate.getDate() ) )
                d_box.className='today';
            else                
                d_box.className='selectBox';
        }        
        else
        {
            d_box.className='';
        }
    }
    currDate.setDate( seldate.getDate() );
}

isDayToday = function ( day ) 
{
    if ((currDate.getFullYear() == todaysDate.getFullYear()) && (currDate.getMonth() == todaysDate.getMonth()) && ( day == todaysDate.getDate())) 
    {
        return true;
    }
    else 
    {
        return false;
    }
}

isDayValid = function(day, month, year )
{    
    var validday = new Date();    
    validday.setDate(day);
    validday.setMonth(month);
    validday.setFullYear(year);
    
    if ((validday>=minDate) && (validday<=maxDate)) 
    {
        return true;
    }
    else 
    {
        return false;
    }
}
