var BlobBuilder=BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder||function(a){"use strict";var b=function(a){return Object.prototype.toString.call(a).match(/^\[object\s(.*)\]$/)[1]},c=function(){this.data=[]},d=function(a,b,c){this.data=a;this.size=a.length;this.type=b;this.encoding=c},e=c.prototype,f=d.prototype,g=a.FileReaderSync,h=function(a){this.code=this[this.name=a]},i=("NOT_FOUND_ERR SECURITY_ERR ABORT_ERR NOT_READABLE_ERR ENCODING_ERR "+"NO_MODIFICATION_ALLOWED_ERR INVALID_STATE_ERR SYNTAX_ERR").split(" "),j=i.length,k=a.URL||a.webkitURL||a,l=k.createObjectURL,m=k.revokeObjectURL,n=k,o=a.btoa,p=a.atob,q=false,r=function(a){q=!a},s=a.ArrayBuffer,t=a.Uint8Array;c.fake=f.fake=true;while(j--){h.prototype[i[j]]=j+1}try{if(t){r.apply(0,new t(1))}}catch(u){}if(!k.createObjectURL){n=a.URL={}}n.createObjectURL=function(a){var b=a.type,c;if(b===null){b="application/octet-stream"}if(a instanceof d){c="data:"+b;if(a.encoding==="base64"){return c+";base64,"+a.data}else if(a.encoding==="URI"){return c+","+decodeURIComponent(a.data)}if(o){return c+";base64,"+o(a.data)}else{return c+","+encodeURIComponent(a.data)}}else if(real_create_object_url){return real_create_object_url.call(k,a)}};n.revokeObjectURL=function(a){if(a.substring(0,5)!=="data:"&&real_revoke_object_url){real_revoke_object_url.call(k,a)}};e.append=function(a){var c=this.data;if(t&&a instanceof s){if(q){c.push(String.fromCharCode.apply(String,new t(a)))}else{var e="",f=new t(a),i=0,j=f.length;for(;i1?b:this.data.length),c,this.encoding)};f.toString=function(){return"[object Blob]"};return c}(self);var saveAs=saveAs||function(a){"use strict";var b=a.document,c=function(){return a.URL||a.webkitURL||a},d=a.URL||a.webkitURL||a,e=b.createElementNS("http://www.w3.org/1999/xhtml","a"),f="download"in e,g=function(c){var d=b.createEvent("MouseEvents");d.initMouseEvent("click",true,false,a,0,0,0,0,0,false,false,false,false,0,null);return c.dispatchEvent(d)},h=a.webkitRequestFileSystem,i=a.requestFileSystem||h||a.mozRequestFileSystem,j=function(b){(a.setImmediate||a.setTimeout)(function(){throw b},0)},k="application/octet-stream",l=0,m=[],n=function(){var a=m.length;while(a--){var b=m[a];if(typeof b==="string"){d.revokeObjectURL(b)}else{b.remove()}}m.length=0},o=function(a,b,c){b=[].concat(b);var d=b.length;while(d--){var e=a["on"+b[d]];if(typeof e==="function"){try{e.call(a,c||a)}catch(f){j(f)}}}},p=function(b,d){var j=this,n=b.type,p=false,q,r,s=function(){var a=c().createObjectURL(b);m.push(a);return a},t=function(){o(j,"writestart progress write writeend".split(" "))},u=function(){if(p||!q){q=s(b)}r.location.href=q;j.readyState=j.DONE;t()},v=function(a){return function(){if(j.readyState!==j.DONE){return a.apply(this,arguments)}}},w={create:true,exclusive:false},x;j.readyState=j.INIT;if(!d){d="download"}if(f){q=s(b);e.href=q;e.download=d;if(g(e)){j.readyState=j.DONE;t();return}}if(a.chrome&&n&&n!==k){x=b.slice||b.webkitSlice;b=x.call(b,0,b.size,k);p=true}if(h&&d!=="download"){d+=".download"}if(n===k||h){r=a}else{r=a.open()}if(!i){u();return}l+=b.size;i(a.TEMPORARY,l,v(function(a){a.root.getDirectory("saved",w,v(function(a){var c=function(){a.getFile(d,w,v(function(a){a.createWriter(v(function(c){c.onwriteend=function(b){r.location.href=a.toURL();m.push(a);j.readyState=j.DONE;o(j,"writeend",b)};c.onerror=function(){var a=c.error;if(a.code!==a.ABORT_ERR){u()}};"writestart progress write abort".split(" ").forEach(function(a){c["on"+a]=j["on"+a]});c.write(b);j.abort=function(){c.abort();j.readyState=j.DONE};j.readyState=j.WRITING}),u)}),u)};a.getFile(d,{create:false},v(function(a){a.remove();c()}),v(function(a){if(a.code===a.NOT_FOUND_ERR){c()}else{u()}}))}),u)}),u)},q=p.prototype,r=function(a,b){return new p(a,b)};q.abort=function(){var a=this;a.readyState=a.DONE;o(a,"abort")};q.readyState=q.INIT=0;q.WRITING=1;q.DONE=2;q.error=q.onwritestart=q.onprogress=q.onwrite=q.onabort=q.onerror=q.onwriteend=null;a.addEventListener("unload",n,false);return r}(self);window.speakerStringFromSpeakerArray=function(a){var b="";var c=[];for(var d=0;d0){return(new Array(b+(/\./.test(a)?2:1))).join("0")+a}return a+""};window.icalDateTimeFromSfDateAndTime=function(a,b){var c="";var d=a.split("/");var e=d[2];var f=d[0];var g=d[1];var h=false;if(b.indexOf("AM")!=-1){b=b.replace("AM","")}if(b.indexOf("PM")!=-1){b=b.replace("PM","");h=true}var i=b.split(":");var j=i[0];if(h){if(+j<12)j=+j+12}var k=i[1];var l=new Date(e,f,g,j,k);c+=l.getFullYear();c+=window.zeroFill(l.getMonth()+"",2);c+=window.zeroFill(l.getDate()+"",2);c+="T"+window.zeroFill(l.getHours()+"",2);c+=window.zeroFill(l.getMinutes()+"",2);c+=window.zeroFill(l.getSeconds()+"",2);return c};window.icalDateTimeNow=function(){var a="";var b=new Date;a+=b.getFullYear()+"";a+=window.zeroFill(b.getMonth()+"",2);a+=window.zeroFill(b.getDate()+"",2);a+="T"+window.zeroFill(b.getHours()+"",2);a+=window.zeroFill(b.getMinutes()+"",2);a+=window.zeroFill(b.getSeconds()+"",2);return a};window.buildTimezoneComponentString=function(){var a="";a+="BEGIN:VTIMEZONE\r\n";a+="TZID:US-Pacific\r\n";a+="BEGIN:STANDARD\r\n";a+="TZOFFSETFROM:-0700\r\n";a+="TZOFFSETTO:-0800\r\n";a+="DTSTART:19671029T020000\r\n";a+="RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10\r\n";a+="TZNAME:PST\r\n";a+="END:STANDARD\r\n";a+="BEGIN:DAYLIGHT\r\n";a+="TZOFFSETFROM:-0800\r\n";a+="TZOFFSETTO:-0700\r\n";a+="DTSTART:19870405T020000\r\n";a+="RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4\r\n";a+="TZNAME:PDT\r\n";a+="END:DAYLIGHT\r\n";a+="END:VTIMEZONE\r\n";return a};window.encodeSpecialChars=function(a){var b=a.replace(/,/g,"\\,");b=b.replace(/;/g,"\\;");return b};window.sessionVeventStringFromSessionDetails=function(a){var b="";var c=[];var d="BEGIN:VEVENT";c.push(d);var e="DTSTAMP:"+window.icalDateTimeNow();c.push(e);if(a.speakers){var f="ORGANIZER:CN="+window.speakerStringFromSpeakerArray(a.speakers);c.push(f)}var g="DTSTART;TZID=US-Pacific:"+window.icalDateTimeFromSfDateAndTime(a.day,a.startTime);c.push(g);var h="DTEND;TZID=US-Pacific:"+window.icalDateTimeFromSfDateAndTime(a.day,a.endTime);c.push(h);if(a.name){var i="SUMMARY:"+window.encodeSpecialChars(a.name);c.push(i)}if(a.shortDescription){var j="DESCRIPTION:"+window.encodeSpecialChars(a.shortDescription)+" *Speakers*: "+window.encodeSpecialChars(window.speakerStringFromSpeakerArray(a.speakers));c.push(j)}if(a.room&&a.room.location){var k="LOCATION:"+window.encodeSpecialChars(a.room.location)+", "+window.encodeSpecialChars(a.room.name);c.push(k)}if(a.code){var l="URL:"+a.code;c.push(l)}var m="END:VEVENT";c.push(m);b=c.join("\r\n");return b};window.showTextInCloudPanel=function(a){$Cloud.destroyPanel();var b=a.replace(/\r\n/g,"
");$("#loadingMask").show().one("click",$Cloud.destroyPanel);var c='
Close

Agenda CSV for Google Calendar

';var d='
Copy everything below this line and save it into a new text file on your computer. Use Google Calendar to import this file.
DISPLAY_CONTENT_HERE
';var e='
WRAPPED_ELEMENTS
';var f=e.replace("WRAPPED_ELEMENTS",c+d);var g=f.replace("DISPLAY_CONTENT_HERE",b);var h=g;$("#panels").append(h);if(!$("#panelScroller2").hasClass("uiScroller")){$Cloud.fixDetailsHeight()}else{$Cloud.refreshScrollers("panelScroller2")}};window.exportAgendaIcal=function(){window.agendaIcalString="";var a="[TOKEN_ICAL_BODY]";var b=/\[TOKEN\_ICAL\_BODY\]/;var c="BEGIN:VCALENDAR\r\n";c+="VERSION:2.0 \r\n";c+="PRODID:-//https://github.com/chexxor/DF12-Agenda-Export-Bookmarklet v1.0//EN\r\n";var d=window.buildTimezoneComponentString();c+=d;c+=a+"\r\n";c+="END:VCALENDAR\r\n";$Cloud.getData({type:"get",method:"getAllEnrollmentsForAllDays",viewHandler:function(a,d){var e=a;var f=[];for(var g=0;g0;if(l==true){var m=k.items[0];var n=window.sessionVeventStringFromSessionDetails(m);f.push(n)}}}var o=f.join("\r\n");window.agendaIcalString=c.replace(b,o);window.showTextInCloudPanel(window.agendaIcalString);var p=new BlobBuilder;p.append(window.agendaIcalString);saveAs(p.getBlob("text/plain;charset=utf-8"),"AgendaIcalExport.ical")}})};window.exportAgendaIcal()