//if (typeof(console)!='object') {
//        var console={};
//        console.log=function(vals){};
//}

google.load("gdata", "1");
google.setOnLoadCallback(getCalendars);
var calendarService;
var calUrl = "http://www.google.com/calendar/feeds/admin%40lcpst.org/public/full-noattendees?singleevents=true&orderby=starttime&sortorder=a&futureevents=true";

function getCalendars() {
        google.gdata.client.init(processCalendarError);
        calendarService = new google.gdata.calendar.CalendarService('LCPST-Website-1.0');
        $$('.sidebarCal').each(function(el,ix){
                calendarService.getEventsFeed(el.readAttribute('url'), function(root){processCalendar(el,root)}, function(error){processCalendarError(which,error)});
        });
}

var dayStrs=['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];
var monthStrs=['January','February','March','April','May','June','July','August','September','October','November','December'];

var processCalendar=function(which,root) {
        eventEntries = root.feed.getEntries();
        maxEntries=Number(which.readAttribute('numEvents'));
        gCalData='<p class="calTitle">'+which.readAttribute('title')+'</p>';
        if (eventEntries.length > 0) {
                gCalData+='<ul>';
                for (var i = 0; i<maxEntries && i<eventEntries.length; i++) {
                        var thisEv = eventEntries[i];
                        gCalData+='<li>';
                        gCalData+='<a href="'+thisEv.getHtmlLink().href+'" target="_blank">'+thisEv.getTitle().getText()+'</a><br/>';
                        //gCalData+=event.getContent().getText()+'<br/>';
                        var sTime=new Date();
                        sTime.setISO8601(thisEv.getTimes()[0]['startTime']);
                        var eTime=new Date();
                        eTime.setISO8601(thisEv.getTimes()[0]['endTime']);
                        if (!thisEv.gd$when[0].getStartTime().dateOnly) {
                        //if (dayStrs[sTime.getDay()]!=undefined) {
                                sStr=dayStrs[sTime.getDay()]+', '+monthStrs[sTime.getMonth()]+' '+sTime.getDate()+', '+sTime.getFullYear();
                                eStr=dayStrs[eTime.getDay()]+', '+monthStrs[eTime.getMonth()]+' '+eTime.getDate()+', '+eTime.getFullYear();
                                var sHr=sTime.getHours();
                                var eHr=eTime.getHours();
                                if (sHr<12) {
                                        sTimeAMPM='am';
                                } else {
                                        sHr-=12;
                                        sTimeAMPM='pm';
                                }
                                if (eHr<12) {
                                        eTimeAMPM='am';
                                } else {
                                        eHr-=12;
                                        eTimeAMPM='pm';
                                }
                                if (sHr==0) {
                                        sHr=12;
                                }
                                if (eHr==0) {
                                        eHr=12;
                                }
                                if (sStr==eStr) {
                                        gCalData+=sStr+', <nobr>'+sHr+':'+padZero(sTime.getMinutes())+sTimeAMPM+'</nobr>&#0150;<nobr>'+eHr+':'+padZero(eTime.getMinutes())+eTimeAMPM+'</nobr>';
                                } else {
                                        gCalData+=sStr+', <nobr>'+sHr+':'+padZero(sTime.getMinutes())+sTimeAMPM+'</nobr>&#0150;<nobr>'+eStr+', '+eHr+':'+padZero(eTime.getMinutes())+eTimeAMPM+'</nobr>';
                                }
                        } else {
                                sDay=thisEv.getTimes()[0]['startTime'];
                                sDayArr=sDay.split('-');
                                sTimeStr=Number(sDayArr[2])+' '+monthStrs[Number(sDayArr[1])-1]+', '+Number(sDayArr[0]);
                                var sTime=new Date(eval('"'+sTimeStr+'"'));
                                eDay=thisEv.getTimes()[0]['endTime'];
                                eDayArr=eDay.split('-');
                                eTimeStr=Number(eDayArr[2])-1+' '+monthStrs[Number(eDayArr[1])-1]+', '+Number(eDayArr[0]);
                                var eTime=new Date(eval('"'+eTimeStr+'"'));
                                sStr=dayStrs[sTime.getDay()]+', '+monthStrs[sTime.getMonth()]+' '+sTime.getDate()+', '+sTime.getFullYear();
                                eStr=dayStrs[eTime.getDay()]+', '+monthStrs[eTime.getMonth()]+' '+eTime.getDate()+', '+eTime.getFullYear();
                                //if ((sTime.getDay()==eTime.getDay() || (sTime.getDay()==6 && eTime.getDay()==0) ) && sTime.getMonth()==eTime.getMonth()) {
                                if (sStr==eStr) {
                                        gCalData+=sStr;
                                } else {
                                        gCalData+=sStr+'&#0150;'+eStr;
                                }
                        }
                        gCalData+='</li>';
                }
                gCalData+='</ul>';
        } else {
                gCalData+='<ul><li>No upcoming events found</li></ul>';
        }
        which.update(gCalData);
}
var processCalendarError = function(which,error) {
        var alertText='There was a problem with the calendar.';
        alertText+=e.cause ? e.cause.statusText : e.message;
        which.update(alertText);
}

function padZero(inVal) {
        if (inVal<10) {
                outVal=String('0'+inVal);
        } else {
                outVal=inVal;
        }
        return outVal;
}

Date.prototype.setISO8601 = function(dString){
        var regexp = /(\d\d\d\d)(-)?(\d\d)(-)?(\d\d)(T)?(\d\d)(:)?(\d\d)(:)?(\d\d)(\.\d+)?(Z|([+-])(\d\d)(:)?(\d\d))/;
        if (dString.toString().match(new RegExp(regexp))) {
                var d = dString.match(new RegExp(regexp));
                var offset = 0;
                this.setUTCDate(1);
                this.setUTCFullYear(parseInt(d[1],10));
                this.setUTCMonth(parseInt(d[3],10) - 1);
                this.setUTCDate(parseInt(d[5],10));
                this.setUTCHours(parseInt(d[7],10));
                this.setUTCMinutes(parseInt(d[9],10));
                this.setUTCSeconds(parseInt(d[11],10));
                if (d[12]) {
                        this.setUTCMilliseconds(parseFloat(d[12]) * 1000);
                } else {
                        this.setUTCMilliseconds(0);
                }
                if (d[13] != 'Z') {
                        offset = (d[15] * 60) + parseInt(d[17],10);
                        offset *= ((d[14] == '-') ? -1 : 1);
                        this.setTime(this.getTime() - offset * 60 * 1000);
                }
        } else {
                this.setTime(Date.parse(dString));
        }
        return this;
};

