/**
gCalJSON
Copyright 2006 Mark Percival -  SquarePush, LLC
mark@squarepush.com
Released under GPL
A JSON implementation of gCalAjax.

STOIC Notes:
see: http://webchicanery.com/gcalajax/
**/

gCalFeed += '?alt=json-in-script&callback=jsonhandler&singleevents=true&orderby=starttime&sortorder=a';
gCalFeed += '&start-min=' + startDate;
if (endDate)
{
    gCalFeed += '&start-max=' + endDate;
}
gCalFeed += '&max-results=' + maxResults;

RSSRequest(gCalFeed);

function RSSRequest(url) {
document.write("<script type='text/javascript' language='javascript' src='");
document.write(gCalFeed);
document.write("'></script>");
}

function jsonhandler(response) {
    var feed = response.feed;
    var itemTimePrev = new Date();
    itemTimePrev.setTime(0);

    if(feed.entry) {
        var outputHTML = "";
        for (var i = 0 ; i < feed.entry.length; i++) {
          var entry = feed.entry[i];
          var itemTitle = entry['title'].$t;
          var itemLink = entry['link'][0].href;
          var itemTimeRaw = entry['gd$when'][0].startTime;
          // What I added - Mark
          // *****
          var itemLocation = entry['gd$where'][0].valueString;
          var itemDescr = entry['content'].$t;
          // *****
          var isAllDay = false; //init isAllDay variable
          if (itemTimeRaw.length <= 10) isAllDay = true; //just the date is only 10 digits = all day event
          var itemTime = new Date();
          itemTime.setTime
(Date.UTC(itemTimeRaw.substr(0,4),(itemTimeRaw.substr(5,2)-1),itemTimeRaw.substr(8,2),itemTimeRaw.substr(11,2),itemTimeRaw.substr(14,2)));
          if ((itemTime.getUTCDate()!=itemTimePrev.getUTCDate())||(itemTime.getUTCMonth()!=itemTimePrev.getUTCMonth()))
            outputHTML += '<h4>' + getMonthName(itemTime)+ ' ' + itemTime.getUTCDate() + ', ' + itemTime.getUTCFullYear() + '</h4>';
          outputHTML += '<ul><li>';
          if (!isAllDay) outputHTML += getTimeFormatted(itemTime) + ' - ';
          //And here as well, I added the location and description to the list item.
          outputHTML += ' <a href="' + itemLink + '">' + itemTitle + '</a> :: Location--' + itemLocation + ' :: Description--' + itemDescr + ' </li></ul>';
          itemTimePrev.setTime(itemTime); //Save the last timestamp for next iteration comparison
        }
    setHTML("gcalajax", outputHTML);
    setHTML("status", "");
    }
    else {setHTML("status", "No future events.");}
}

/*
* Time Format - Month
*/
function getMonthName(dateObject) {
    var m_names = new Array("January", "February", "March",
    "April", "May", "June", "July", "August", "September",
    "October", "November", "December");
    return(m_names[dateObject.getUTCMonth()]);
}

/*
* Time Format - Hour
*/
function getTimeFormatted(dateObject) {
    var hours = dateObject.getUTCHours();
    var minutes = dateObject.getUTCMinutes();
    var formattedTime = null;
    if (is24Hour) {
        if (minutes < 10){minutes = "0" + minutes;}
        formattedTime = hours + ':' + minutes;
        return (formattedTime);
    }
    else {
        var ampm = "AM";
        if (hours > 12){
            hours = hours - 12;
            ampm = "PM";}
        if (hours == 12){ampm = 'PM';}
        if (hours == 0) {hours = 12;}
        if (minutes < 10){minutes = "0" + minutes;}
        formattedTime = hours + ':' + minutes + ' ' + ampm;
        return (formattedTime);
    }
}

function setHTML(div, data)
{
    document.write(data);
}
