﻿Date.prototype.getMonthName = function() {
var m = ['January','February','March','April','May','June','July',
'August','September','October','November','December'];
return m[this.getMonth()];
}
Date.prototype.getDayName = function() {
var d = ['Sunday','Monday','Tuesday','Wednesday',
'Thursday','Friday','Saturday'];
return d[this.getDay()];
}


function LoadEvents(cal)
{
    var cnt = (cal.count > 8) ? 8 : cal.count;

    for (var i = 0; i < cnt; i++)
    {
        var div = new Element('div');
        //div.setStyle( { 'paddingLeft': '5px', 'paddingTop': '10px' } );
        div.setStyle({ 'paddingLeft': '5px', 'paddingTop': '10px', 'color': '#333333', 'fontSize': '12px', 'textDecoration': 'none', 'fontWeight': 'bold' });

        //var a = new Element('a', { 'onclick': 'alert("' + cal.entries[i].location + '");return false;', 'href':'#' });
        //var a = new Element('a', { 'onclick': 'return false;', 'href': '#' });
        //a.setStyle({ 'color': '#333333', 'fontSize': '12px', 'textDecoration': 'none', 'fontWeight': 'bold' });
        //a.update(cal.entries[i].title);
        div.update(cal.entries[i].title);
        //div.insert(a);
        $('UpcomingEvents').insert(div);

        var dateDiv = new Element('div');
        dateDiv.setStyle({ 'paddingLeft': '5px', 'fontSize': '9px', 'color': '#666666' });
        dateDiv.update('<i>' + cal.entries[i].startDate.getDayName() + ', ' + cal.entries[i].startDate.getMonthName() + ' ' + cal.entries[i].startDate.getDate() + ', ' + cal.entries[i].startDate.getFullYear() + '</i>');
        $('UpcomingEvents').insert(dateDiv);



    }
}



/**
* Class that represents the calendar.
*/
var Calendar = Class.create();
Calendar.prototype = {
    uri: "7cghno42lleqpbihmoi5qiikm8%40group.calendar.google.com",
    orderby: "starttime",
    singleEvents: true,
    futureEvents: true,
    sortOrder: "ascending",
    count: 0,
    entries: {},
    initialize: function (u)
    {
        if (u) { this.uri = u; }
    },

    buildURL: function ()
    {
        var str = "http://www.google.com/calendar/feeds/";
        str += this.uri;
        str += "/public/full-noattendees?orderby=" + this.orderby;
        str += "&alt=json-in-script&callback=window.activeCalendar.parseFeed&";
        str += "singleevents=" + this.singleEvents;
        str += "&sortorder=" + this.sortOrder;
        str += "&futureevents=" + this.futureEvents;
        return str;
    },

    loadFeed: function ()
    {
        window.activeCalendar = this;
        var headTag = document.getElementsByTagName('head')[0];
        var script = document.createElement("script");
        script.src = this.buildURL();
        script.language = "JavaScript";
        headTag.appendChild(script);
    },

    parseFeed: function (json)
    {
        e = json.feed.entry;
        this.count = e.length;
        for (var i = 0; i < e.length; i++)
        {
            this.entries[i] = new EventEntry(e[i])
        }
        try
        {
            this.onsuccess(this);
        } catch (e) { }
    },

    onsuccess: function (c) { }
};

// ==========================================================================
/**
* Singleton object used to convert Dates from one format to another.
*/
var DateConverter = {
    rfc3339toDate: function (t)
    {
        t = t.substr(0, 19).replace(/-/g, "/").replace("T", " ");
        var dt = new Date();
        dt.setTime(Date.parse(t));
        return dt;
    }
};

// ==========================================================================
var EventEntry = Class.create();
EventEntry.prototype = {
    title: null,
    content: null,
    startDate: null,
    endDate: null,
    location: null,
    initialize: function (entry)
    {
        this.title = entry.title.$t;
        this.content = entry.content.$t;
        this.startDate = DateConverter.rfc3339toDate(entry.gd$when[0].startTime);
        this.endDate = DateConverter.rfc3339toDate(entry.gd$when[0].endTime);
        this.location = entry.link[0].href;
    }
};
