﻿// JScript File

// Event Calendar
// copyright Stephen Chapman, 10th June 2006, 30th October 2006

var tb = 't'; // top or bottom (t or b)
var headbg = '#cccccc';  // table heading background colour
var todaybg = '#f5f5f5'; // current selected date background colour
var todaybd = 'solid 1px #191970'; // current selected date border style
var textclr = '#000000'; // text colour
var noMessage =  ''; // message to display when no entry in array

var pageLoaded = 0; 
window.onload = function() { pageLoaded = 1; }

function loaded(i,f) 
{
    if (document.getElementById && document.getElementById(i) != null) 
        f(); 
     else if (!pageLoaded) 
        setTimeout('loaded(\''+i+'\','+f+')',100);
}

function monthlength(month,year) 
{
    var dd = new Date(year, month, 0);
    return dd.getDate();
}

var moy = ['January','February','March','April','May','June','July','August','September','October','November','December'];
var today = new Date();
var selDate = today.getFullYear()+getmmdd(today.getMonth()+1,today.getDate());

function dispCal(yy,mm) 
{    
    if (mm < 0 || mm > 12)
    {
        alert('month must be between 1 and 12'); 
        return false;
    } 
    
    if (yy != 0 && (yy < 1901 || yy > 2100)) 
    {
        alert('year must be after 1900 and before 2101'); 
        return false;
    } 
    
    var dow = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat']; 
    var calendar = new Date();  
    var today = calendar.getDate(); 
    calendar.setDate(1); 
    
    if (yy > 1900) 
        calendar.setFullYear(yy); 
    if (mm > 0) 
        calendar.setMonth(mm - 1); 
    
    var yy = year = calendar.getFullYear(); 
    var month = calendar.getMonth(); 
    calendar.setDate(today); 
    var weekday = calendar.getDay(); 
    var daysInMonth = monthlength(month+1,year); 
    
    var hilite_start = '<td width="30" style="background:' + todaybg + '; border:' + todaybd + ';" align="center"><b>'; 
    var td_start = '<td width="30" align="center">'; 
    var cal = '<div style="border:1pt solid #cccccc;height:170px;width:238px"><table border="0" cellspacing="0" cellpadding="2" align="center"><tr><td colspan="7" style="background:' + headbg + '" align="center"><b>' + moy[month]  + ' ' + year + '<\/b><\/td><\/tr><tr>'; 
    for(dex=0; dex < 7; dex++) 
    {
        cal += td_start + dow[dex] + '</td>';
    } 
    cal += '<\/tr><tr>'; 
    
    var day2 = today; 
    for (dex = today; dex > 6; dex -=7) 
        day2 = dex; 
        
    weekday -= day2 - 1; 
    
    while (weekday < 0) 
        weekday += 7; 
    
    for(dex=0; dex < weekday; dex++) 
        cal += td_start + ' <\/td>'; 
    
    var rowcount = 1;
    for(dex=1; dex <= daysInMonth; dex++) 
    {
        if(weekday == 7) 
        {
            cal += '</tr><tr>'; 
            weekday = 0;
            rowcount ++;
        } 
        if(selDate.toString()==year+getmmdd(month+1,dex)) 
            cal += hilite_start +'<span'+clickDate(dex,month,year) + '>'+ dex + '<\/span><\/b><\/td>'; 
        else 
            cal += td_start + '<span '+clickDate(dex,month,year) + '>' + dex + '<\/span><\/td>'; 
        
        weekday += 1;
    } 
    
    for(dex=weekday; dex < 7; dex++) 
        cal += td_start + ' <\/td>'; 
    
    cal += '<\/tr>';
    if (rowcount < 6)
        cal += '<tr><td>&nbsp;<\/td><td>&nbsp;<\/td><td>&nbsp;<\/td><td>&nbsp;<\/td><td>&nbsp;<\/td><td>&nbsp;<\/td><td>&nbsp;<\/td><\/tr>';    
    
    cal += '<tr><td colspan="7">';    
    if (document.getElementById) 
    {
        var mmb = month;  
        mm = month + 1; 
        var yya = yyb = yy; 
        if (mmb <1) 
        {
            mmb += 12; yyb--;
        } 
        
        var mma = month + 2; 
        if (mma > 12) 
        {
            mma -= 12; yya++;
        } 
        var yb = yy -1; 
        var ya = yy +1; 
        cal += '<table border="0" cellspacing="0" cellpadding="2" width="239" style="background-color: #bbbbbb;font-weight:bold;font-size:12px;"><tr><td><a href="#" onclick="if (cala = dispCal('+yb+','+mm+')) {document.getElementById(\'cal\').innerHTML = cala;selDate=' + yb + getmmdd(mm,1) + ';showMonthEvents(); return false;}"><<</a></td><td><a href="#" onclick="if (cala = dispCal('+yyb+','+mmb+')) {document.getElementById(\'cal\').innerHTML = cala; selDate=' + yyb + getmmdd(mmb,1) + ';showMonthEvents(); return false;}"><</a></td><td align="right"><a href="#" onclick="if (cala = dispCal('+yya+','+mma+')) {document.getElementById(\'cal\').innerHTML = cala; selDate=' + yya + getmmdd(mma,1) + ';showMonthEvents(); return false;}">></a></td><td align="right"><a href="#" onclick="if (cala = dispCal('+ya+','+mm+')) {document.getElementById(\'cal\').innerHTML = cala; selDate=' + ya + getmmdd(mm,1) + ';showMonthEvents(); return false;}">>></a></td></tr></table>';
    }
    cal += '<\/td><\/tr><\/table><\/div>';
     
    return cal;
}

function start() 
{
    document.getElementById('calendar').innerHTML = '<div id="calDate" style="border:1pt solid #cccccc;width:238px; float: left;"><\/div><div id="cal" style="width: 238px;">' + dispCal(0,0) + '<\/div>';  
    ev();
}

loaded('calendar',start);

function clickDate(day, month, year) 
{
    var ct = nextDate(year + getmmdd(month+1,day));
    if (ct == '') 
        ct = nextDate('0000' + getmmdd(month+1,day));
    if (ct == '') 
        return 'style="color:'+textclr+'"'; 
    else 
        return 'style="cursor:pointer;font-weight:bold;color:maroon;background-color:#ffffff;" onclick="selDate=' + year + getmmdd(month+1,day) + ';showMonthEvents();return false;"';
}

function nextDate(ccyymmdd) 
{
    var x = dA.length;
    for (var i = 0; i < x; i++) 
    {
        if (dA[i].substr(0,8) == ccyymmdd) 
            return dA[i].substr(8);
    }
    return '';
}

function getmmdd(mm,dd) 
{
    return (mm > 9 ? '' + mm : '0' + mm) + (dd > 9 ? dd : '0' + dd);
}

function ev() 
{
    showMonthEvents();
}

function formatDate(ccyymmdd)
{
    return ccyymmdd.substr(4,2) + "/" + ccyymmdd.substr(6) + "/" + ccyymmdd.substr(0,4);
}

function showMonthEvents()
{
    // get all events for the month of the selected day
    // bold any event on the selected day   
    selDate = selDate.toString();
    var getmonth = selDate.substr(4,2);
    var getyear = selDate.substr(0,4);
    var daysInMonth = monthlength(getmonth,getyear);    
    
    var monthevents = '';
    for (i=1; i<=daysInMonth; i++)
    {
        
        var getday = (i < 10) ? '0' + i : i;
        
        var singlevent = nextDate(getyear + getmonth + getday);
        var yearevent = nextDate('0000' + getmonth + getday);
        
        if (singlevent != '')
        {
            if (selDate == getyear + getmonth + getday)
                monthevents += '<b><u>' + formatDate(getyear + getmonth + getday) + '<\/u>:<br \/>' + singlevent + '<\/b><br \/>';
            else
                monthevents += '<u>' + formatDate(getyear + getmonth + getday) + '<\/u>:<br \/>' + singlevent + '<br \/>';    
        }
        if (yearevent != '')
            monthevents += '<u>' + formatDate(getyear + getmonth + getday) + '</u>:<br \/>' + yearevent + '<br \/>';
    }

    if (monthevents == '')
        document.getElementById('calDate').innerHTML = '<div style="font-weight:bold;color:black;text-align:center">EVENTS<\/div><br \/>No events for ' + moy[(getmonth * 1)-1] + ' ' + getyear;
    else
        document.getElementById('calDate').innerHTML = '<div style="font-weight:bold;color:black;text-align:center">EVENTS<\/div><br \/>' + monthevents;
}  