﻿var EVENT = null;

window.addEvent('domready', function() {
});

function initCalendar()
{
	var el = $('event-window');
	
	el.set('opacity', 0);
	eE(el);
}

function Calendar(title, id, componentID)
//function Calendar(id)
{
    var d = new Date();
    
    this.month = d.getMonth()+1;
    this.year = d.getFullYear();
    this.title = title;
    this.id = id;
    this.componentID = componentID;
}

function getCalendar(cal)
{
    var el = $(cal.id);
    
	var req = new Request.HTML({url:'tml/ajax/GetCalendar.aspx?month=' + cal.month + '&year=' + cal.year + '&calendarid=' + cal.componentID, 
		onSuccess: function(html) {
			el.set('text', '');
			el.adopt(html);
			
			getCalendarMonthName(cal);
		},
		onFailure: function() {
			el.set('text', 'The request failed.');
		}
	});
	
    req.send();
}

function getCalendarMonthName(cal)
{
    var el = $(cal.title);
    
	var req = new Request.HTML({url:'tml/ajax/GetMonthName.aspx?month=' + cal.month + '&year=' + cal.year, 
		onSuccess: function(html) {
			el.set('text', '');
			el.adopt(html);
		},
		onFailure: function() {
			el.set('text', 'The request failed.');
		}
	});
	
    req.send();
}

function prevCalendarMonth(cal)
{
    if (cal.month == 1)
    {
        cal.month = 12;
        cal.year -= 1;
    }
    else
        cal.month -= 1;

    getCalendar(cal);
}

function nextCalendarMonth(cal)
{
    if (cal.month == 12)
    {
        cal.month = 1;
        cal.year += 1;
    }
    else
        cal.month += 1;

    getCalendar(cal);
}

function showEvents(date, day)
{
    wH('event-date', date);
    
    // get the EVENT data
	var request = new Request.JSON({url: 'tml/ajax/GetCalendarEvents.aspx?month=' + cal_events.month + '&day=' + day + '&year=' + cal_events.year + '&calendarid=' + cal_events.componentID,
		onComplete: function(json) {
			EVENT = json;
			loadEvents();
		}
	}).send();
}

function loadEvents()
{
    var ee = EVENT.event;
    var count = ee.length;
    var host = $('event-titles');
    var a;
    var title;
    var br;
    var div;  
    var desc;
    
    wH('event-titles','');
    wH('event-details-title','');
    wH('event-details-description','');

    for (var i=0; i<count; i++)
    {
        a = document.createElement('a');
        title = document.createTextNode(ee[i].title);
        br = document.createElement('br');
        div = document.createElement('div');
        //desc = document.createTextNode(ee[i].description);
        desc = truncate(ee[i].description);
                
        a.href = 'javascript:getEvent("' + ee[i].calendareventid + '")';
        a.appendChild(title);
        
        //div.appendChild(desc);
        div.innerHTML = desc;
        
        host.appendChild(a);
        host.appendChild(br);
        host.appendChild(div);
    }
    
    dM(true);
    fI($('event-window'), 300);
}

function truncate(desc)
{
    var maxChars = 100;
    var brIndex = desc.indexOf('<br />');
    
    // return the first paragragh
    if (brIndex > -1 && brIndex < maxChars)
        desc = desc.substring(0, brIndex);
    else
    {
        var descArray = desc.split(' ');
        var descChar;
        var lastSpace;
        
        for (var i=0; i<maxChars; i++)
        {
            descChar = desc.substring(i, i+1);
            
            if (descChar == ' ')
                lastSpace = i;
        }
        
        desc = desc.substring(0, lastSpace) + '...';
    }

    return desc;
}

function getEvent(calendarEventID)
{
    var ee = EVENT.event;
    var count = ee.length;
    
    for (var i=0; i<count; i++)
    {
        if (ee[i].calendareventid == calendarEventID)
        {
            wH('event-details-title', ee[i].title);
            wH('event-details-description', ee[i].description);
            break;
        }
    }
}

function closeEvents()
{
    fO($('event-window'), 300);
    dM(false);
}