
(function($)
{$.fn.gCalendar=function(options)
{var opts=$.extend($.fn.gCalendar.defaults,options);var $myElem=$(this);var calData=$.getJSON(opts['src'],function(data)
{var returnMe;if(opts['display']=='list')
{returnMe=makeList(data,opts.timezone);}
$myElem.replaceWith(returnMe.addClass(opts['calClass']));});};function makeList(data,timezone)
{var baseDate=null;var newDate;var $cal=$($.fn.gCalendar.list.container);$.each(data.feed.entry,function(i,entry){if(entry.gd$when!=null){newDate=makeDate(entry.gd$when[0].startTime);if(baseDate==null||newDate.toLocaleDateString()!=baseDate.toLocaleDateString()){$($.fn.gCalendar.list.date.replace(/{date}/,newDate.format('fullDate'))).appendTo($cal);baseDate=null;baseDate=new Date(newDate.getTime());}
var time=newDate.toLocaleTimeString()=="00:00:00"?'All Day':newDate.format('shortTime');$($.fn.gCalendar.list.description.replace(/{time}/,time).replace(/{title}/,entry.title.$t).replace(/{link}/,entry.link[0].href+'&amp;'+timezone).replace(/{description}/,entry.content.$t.substring(0,50)+'&hellip;')).appendTo($cal);newDate=null;}});return $cal;}
function makeDate(dateStr){var date;if(dateStr.length>10){date=new Date(dateStr.substr(0,4),((dateStr.substr(5,2))-1),dateStr.substr(8,2),dateStr.substr(11,2),dateStr.substr(14,2),dateStr.substr(17,2),dateStr.substr(20,3));}else{date=new Date(dateStr.substr(0,4),(parseInt(dateStr.substr(5,2))-1),dateStr.substr(8,2));}
return date;}
$.fn.gCalendar.defaults={calClass:'ui-custom-calendar-list',display:'list',src:'http://www.google.com/calendar/feeds/developer-calendar%40google.com/public/full?alt=json-in-script&callback=?',callback:'callback',start:'',end:'',timezone:'ctz=America/New_York'};$.fn.gCalendar.list={container:'<dl></dl>',date:'<dt>{date}</dt>',description:'<dd><span class="time">{time}</span> <span class="title"><a href="{link}">{title}</a></span></dd>'};})(jQuery);var dateFormat=function(){var token=/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,timezone=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,timezoneClip=/[^-+\dA-Z]/g,pad=function(val,len){val=String(val);len=len||2;while(val.length<len)val="0"+val;return val;};return function(date,mask,utc){var dF=dateFormat;if(arguments.length==1&&Object.prototype.toString.call(date)=="[object String]"&&!/\d/.test(date)){mask=date;date=undefined;}
date=date?new Date(date):new Date;if(isNaN(date))throw SyntaxError("invalid date");mask=String(dF.masks[mask]||mask||dF.masks["default"]);if(mask.slice(0,4)=="UTC:"){mask=mask.slice(4);utc=true;}
var _=utc?"getUTC":"get",d=date[_+"Date"](),D=date[_+"Day"](),m=date[_+"Month"](),y=date[_+"FullYear"](),H=date[_+"Hours"](),M=date[_+"Minutes"](),s=date[_+"Seconds"](),L=date[_+"Milliseconds"](),o=utc?0:date.getTimezoneOffset(),flags={d:d,dd:pad(d),ddd:dF.i18n.dayNames[D],dddd:dF.i18n.dayNames[D+7],m:m+1,mm:pad(m+1),mmm:dF.i18n.monthNames[m],mmmm:dF.i18n.monthNames[m+12],yy:String(y).slice(2),yyyy:y,h:H%12||12,hh:pad(H%12||12),H:H,HH:pad(H),M:M,MM:pad(M),s:s,ss:pad(s),l:pad(L,3),L:pad(L>99?Math.round(L/10):L),t:H<12?"a":"p",tt:H<12?"am":"pm",T:H<12?"A":"P",TT:H<12?"AM":"PM",Z:utc?"UTC":(String(date).match(timezone)||[""]).pop().replace(timezoneClip,""),o:(o>0?"-":"+")+pad(Math.floor(Math.abs(o)/60)*100+Math.abs(o)%60,4),S:["th","st","nd","rd"][d%10>3?0:(d%100-d%10!=10)*d%10]};return mask.replace(token,function($0){return $0 in flags?flags[$0]:$0.slice(1,$0.length-1);});};}();dateFormat.masks={"default":"ddd mmm dd yyyy HH:MM:ss",shortDate:"m/d/yy",mediumDate:"mmm d, yyyy",longDate:"mmmm d, yyyy",fullDate:"dddd, mmmm d, yyyy",shortTime:"h:MM TT",mediumTime:"h:MM:ss TT",longTime:"h:MM:ss TT Z",isoDate:"yyyy-mm-dd",isoTime:"HH:MM:ss",isoDateTime:"yyyy-mm-dd'T'HH:MM:ss",isoUtcDateTime:"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"};dateFormat.i18n={dayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","January","February","March","April","May","June","July","August","September","October","November","December"]};Date.prototype.format=function(mask,utc){return dateFormat(this,mask,utc);};