﻿// JScript File

var FirstDayOfWeek = 1;

function SetCalendarCellLoading(id)
{
    if (document.getElementById(id))
        document.getElementById(id).innerHTML = '<img src="' + jsImagePath + 'loading.gif" />';
}

function LoadCalendar(ContainerID, PreviousContainerID, NextContainerID, id, DisplayYear, DisplayMonth, briefView)
{
    SetCalendarCellLoading(ContainerID);
    SetCalendarCellLoading(PreviousContainerID);
    SetCalendarCellLoading(NextContainerID);
    if (!briefView) briefView = false;
    var dd = new Date();
    if (!DisplayYear) DisplayYear = dd.getFullYear();
    if (!DisplayMonth) DisplayMonth = dd.getMonth()+1;
    var UseMonth = DisplayMonth -1;
    dd.setFullYear(DisplayYear,UseMonth,1);
    
    //Move to first day of week
    while (dd.getDay() != FirstDayOfWeek)
        dd.setDate(dd.getDate()-1);
       
    var StartDate = BuildDDMMYYYY(dd);
    var cellcount = 0;
    while (((dd.getMonth() <= UseMonth) && (dd.getFullYear() == DisplayYear)) || ((dd.getMonth()> UseMonth) && (dd.getFullYear() == DisplayYear-1)))
    {
        dd.setDate(dd.getDate()+1);
        cellcount ++;
        if (cellcount>6) cellcount=0;
    }    
    
    while (cellcount<6)
    {
        dd.setDate(dd.getDate()+1);
        cellcount++;
    }   
    var EndDate = BuildDDMMYYYY(dd);
    sndReq('/XML/getEvents.aspx?ContainerID=' + ContainerID 
                        + '&id=' + id 
                        + '&DisplayMonth=' + DisplayMonth
                        + '&DisplayYear=' + DisplayYear
                        + '&StartDate=' + StartDate
                        + '&EndDate=' + EndDate
                        + '&PreviousContainerID=' + PreviousContainerID
                        + '&NextContainerID=' + NextContainerID
                        + '&BriefView=' + briefView);
}

function BuildDDMMYYYY(dd)
{
    return (1*dd.getMonth() + 1) + '-' + dd.getDate() + '-' + dd.getFullYear();
}

function BuildControls(ContainerID, PreviousContainerID, NextContainerID, id, DisplayMonth, DisplayYear)
{
    var prevYear = DisplayYear;
    var prevMonth = DisplayMonth;
    prevMonth--;
    if (prevMonth == 0)
    {
        prevMonth = 12;
        prevYear--;
    }
        var nextYear = DisplayYear;
    var nextMonth = DisplayMonth;
    nextMonth++;
    if (nextMonth == 13)
    {
        nextMonth = 1;
        nextYear--;
    }
    var Months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
    document.getElementById(ContainerID).innerHTML = Months[DisplayMonth-1] + ' ' + DisplayYear;
    document.getElementById(PreviousContainerID).innerHTML = '<a href="javascript:LoadCalendar(\'' + ContainerID + '\', \'' + PreviousContainerID + '\', \'' + NextContainerID + '\', \'' + id + '\', ' + prevYear + ', ' + prevMonth + ')">' + Months[prevMonth-1] + ' ' + prevYear + '</a>';
    document.getElementById(NextContainerID).innerHTML = '<a href="javascript:LoadCalendar(\'' + ContainerID + '\', \'' + PreviousContainerID + '\', \'' + NextContainerID + '\', \'' + id + '\', ' + nextYear + ', ' + nextMonth + ')">' + Months[nextMonth-1] + ' ' + nextYear + '</a>';
}

//function BuildControls(tbl, ContainerID, PreviousContainerID, NextContainerID, id, DisplayMonth, DisplayYear, BriefView)
//{
//    var PrevYear = DisplayYear;
//    var PrevMonth = DisplayMonth-1;
//    var NextYear = DisplayYear;
//    var NextMonth = (DisplayMonth*1)+1;
//    if (PrevMonth < 1)
//    {
//        PrevMonth = 12;
//        PrevYear--;
//    }
//    if (NextMonth > 12)
    //{
    //    NextMonth = 1;
    //    NextYear++;
    //}
    
    //var rw = tbl.insertRow(0);
    //var cl = rw.insertCell(0);
    //if (Contains(id.toLowerCase(), 'prev'))    cl.innerHTML = '<a href="javascript:LoadCalendar(\'' + ContainerID + '\', \'' + PreviousContainerID + '\', \'' + NextContainerID + '\', \'' + id + '\', ' + PrevYear + ', ' + PrevMonth + ')">Previous Month</a>'
    //var Months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
    //var cl = rw.insertCell(1);
    //cl.innerHTML = Months[DisplayMonth-1] + '   ' + DisplayYear;
    //cl = rw.insertCell(2);
    //cl.innerHTML = '<a href="javascript:LoadCalendar(\'' + ContainerID + '\', \'' + PreviousContainerID + '\', \'' + NextContainerID + '\', \'' + id + '\', ' + NextYear + ', ' + NextMonth + ')">Next Month</a>'
//}

function Contains(text, search)
{
    if (text.length<search.length) return false;
    for (i=0; i<=text.length-search.length; i++)
    {
        if (text.substr(i, search.length) == search) return true;
    }
    return false;
}

function BuildCalendar(doc)
{
    //alert(doc);
    var xml = GetXMLObject(doc).childNodes[0];
    var ContainerID = xml.getAttribute('ContainerID');
    var id = xml.getAttribute('id');
    var DisplayMonth = xml.getAttribute('DisplayMonth');
    var DisplayYear = xml.getAttribute('DisplayYear');
    var NextContainerID = xml.getAttribute('NextContainerID');
    var PreviousContainerID =  xml.getAttribute('PreviousContainerID');
    var BriefView = (xml.getAttribute('BriefView') == 'true');
    
    //alert(BriefView);
    var Events = xml.childNodes;
    
    if (PreviousContainerID != '')
    {
        var prevYear = DisplayYear;
        var prevMonth = DisplayMonth;
        prevMonth--;
        if (prevMonth == 0)
        {
            prevMonth = 12;
            prevYear--;
        }
        LoadCalendar(PreviousContainerID, '', '', id + 'Prev', prevYear, prevMonth, true);
    }
    if (NextContainerID != '')
    {
        var nextYear = DisplayYear;
        var nextMonth = DisplayMonth;
        nextMonth++;
        if (nextMonth == 13)
        {
            nextMonth = 1;
            nextYear--;
        }
        LoadCalendar(NextContainerID, '', '', id + 'Next', nextYear, nextMonth, true);
    }
    var container = document.getElementById(ContainerID);
    //container.innerHTML = '';
    var tbl = document.createElement('table');
    var tblControls = document.createElement('table');
    
    //BuildControls(tblControls, ContainerID, PreviousContainerID, NextContainerID, id, DisplayMonth, DisplayYear, BriefView);
    if (!BriefView) BuildControls(ContainerID, PreviousContainerID, NextContainerID, id, DisplayMonth, DisplayYear);
    tbl.id = 'tbl' + id;
    tbl.border='1';
    container.appendChild(tbl);
    container.appendChild(tblControls);
    BuildCalendarHeaderRow(id, BriefView);
    
    var dd = new Date();
    var UseMonth = DisplayMonth -1;
    dd.setFullYear(DisplayYear,UseMonth,1);
    
    //Move to first day of week
    while (dd.getDay() != FirstDayOfWeek)
        dd.setDate(dd.getDate()-1);

    var cellcount = 0;
    var rw;
   
    while (((dd.getMonth() <= UseMonth) && (dd.getFullYear() == DisplayYear)) || ((dd.getMonth()> UseMonth) && (dd.getFullYear() == DisplayYear-1)))
    {
        if (cellcount == 0)
            rw = tbl.insertRow(tbl.rows.length);
            
        var cl = rw.insertCell(cellcount);
        cl.innerHTML = BuildCalendarDateCell(dd, Events, (dd.getMonth() == UseMonth), BriefView);
        dd.setDate(dd.getDate()+1);
        cellcount++;
        if (cellcount>6) cellcount=0;
    }
    if (cellcount != 0)
    {
        while (cellcount<=6)
        {
            var cl = rw.insertCell(cellcount);
            cl.innerHTML = BuildCalendarDateCell(dd, Events, false, BriefView);
            dd.setDate(dd.getDate()+1);
            cellcount++;
        }
    }   
}

function BuildCalendarDateCell(dte, Events, isCurrentMonth, BriefView)
{
    var txt = GetDateEventText(dte, Events);
    var ret = '<table>'
    ret += '<tr><td>';
    if (txt != '<table></table>') ret += '<b>';
    ret += dte.getDate();
    if (txt != '<table></table>') ret += '</b>';
    ret += '</td></tr>'
    if (!BriefView)
        ret += '<tr><td>' + txt + '</td></tr>'
    return ret;
}

function GetDateEventText(dte, Events)
{
    var datetext = dte.getDate() + '/' + (1*dte.getMonth() + 1) + '/' + dte.getFullYear();

    var ret = '<table>';
    for (var i=0; i<Events.length; i++)
    {
        if (Events[i].getAttribute('Date') == datetext)
        {
            ret += '<tr><td>' + Events[i].getAttribute('Time') + '</td>'
            ret += '<td>' + doReplace(Events[i].getAttribute('EventName'),'ampis', '&') ;
            var vnu = Events[i].getAttribute('Venue');
            if (vnu != '')
            ret += ' (' + vnu + ')';
            ret += '</td></tr>'
        }
    }
    ret += '</table>';
    return ret;
}

function BuildCalendarHeaderRow(id, BriefView)
{
    var tbl = document.getElementById('tbl' + id);
    var weekday;
    if (BriefView)
        weekday = ['S', 'M', 'T', 'W', 'T', 'F', 'S'];
    else
        weekday = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
    var dayofweek = FirstDayOfWeek;
    var row = tbl.insertRow(0);
    for (var i=0; i<7; i++)
    {
        var cl = row.insertCell(i);
        cl.innerHTML = weekday[dayofweek];
        dayofweek++;
        if (dayofweek > 6) dayofweek = 0;
    }
}