-
Notifications
You must be signed in to change notification settings - Fork 249
Expand file tree
/
Copy pathics.min.js
More file actions
2 lines (2 loc) · 3.63 KB
/
Copy pathics.min.js
File metadata and controls
2 lines (2 loc) · 3.63 KB
1
2
/*! ics.js Mon Nov 12 2018 16:45:18 */
var ics=function(a,b){"use strict";if(navigator.userAgent.indexOf("MSIE")>-1&&-1==navigator.userAgent.indexOf("MSIE 10"))return void console.log("Unsupported Browser");"undefined"==typeof a&&(a="default"),"undefined"==typeof b&&(b="Calendar");var c=-1!==navigator.appVersion.indexOf("Win")?"\r\n":"\n",d=[],e=["BEGIN:VCALENDAR","PRODID:"+b,"VERSION:2.0"].join(c),f=c+"END:VCALENDAR",g=["SU","MO","TU","WE","TH","FR","SA"];return{events:function(){return d},calendar:function(){return e+c+d.join(c)+f},addEvent:function(b,e,f,h,i,j){if("undefined"==typeof b||"undefined"==typeof e||"undefined"==typeof f||"undefined"==typeof h||"undefined"==typeof i)return!1;if(j&&!j.rrule){if("YEARLY"!==j.freq&&"MONTHLY"!==j.freq&&"WEEKLY"!==j.freq&&"DAILY"!==j.freq)throw"Recurrence rrule frequency must be provided and be one of the following: 'YEARLY', 'MONTHLY', 'WEEKLY', or 'DAILY'";if(j.until&&isNaN(Date.parse(j.until)))throw"Recurrence rrule 'until' must be a valid date string";if(j.interval&&isNaN(parseInt(j.interval)))throw"Recurrence rrule 'interval' must be an integer";if(j.count&&isNaN(parseInt(j.count)))throw"Recurrence rrule 'count' must be an integer";if("undefined"!=typeof j.byday){if("[object Array]"!==Object.prototype.toString.call(j.byday))throw"Recurrence rrule 'byday' must be an array";if(j.byday.length>7)throw"Recurrence rrule 'byday' array must not be longer than the 7 days in a week";j.byday=j.byday.filter(function(a,b){return j.byday.indexOf(a)==b});for(var k in j.byday)if(g.indexOf(j.byday[k])<0)throw"Recurrence rrule 'byday' values must include only the following: 'SU', 'MO', 'TU', 'WE', 'TH', 'FR', 'SA'"}}var l=new Date(h),m=new Date(i),n=new Date,o=("0000"+l.getFullYear().toString()).slice(-4),p=("00"+(l.getMonth()+1).toString()).slice(-2),q=("00"+l.getDate().toString()).slice(-2),r=("00"+l.getHours().toString()).slice(-2),s=("00"+l.getMinutes().toString()).slice(-2),t=("00"+l.getSeconds().toString()).slice(-2),u=("0000"+m.getFullYear().toString()).slice(-4),v=("00"+(m.getMonth()+1).toString()).slice(-2),w=("00"+m.getDate().toString()).slice(-2),x=("00"+m.getHours().toString()).slice(-2),y=("00"+m.getMinutes().toString()).slice(-2),z=("00"+m.getSeconds().toString()).slice(-2),A=("0000"+n.getFullYear().toString()).slice(-4),B=("00"+(n.getMonth()+1).toString()).slice(-2),C=("00"+n.getDate().toString()).slice(-2),D=("00"+n.getHours().toString()).slice(-2),E=("00"+n.getMinutes().toString()).slice(-2),F=("00"+n.getSeconds().toString()).slice(-2),G="",H="";r+s+t+x+y+z!==0&&(G="T"+r+s+t,H="T"+x+y+z);var I,J="T"+D+E+F,K=o+p+q+G,L=u+v+w+H,M=A+B+C+J;if(j)if(j.rrule)I=j.rrule;else{if(I="rrule:FREQ="+j.freq,j.until){var N=new Date(Date.parse(j.until)).toISOString();I+=";UNTIL="+N.substring(0,N.length-13).replace(/[-]/g,"")+"000000Z"}j.interval&&(I+=";INTERVAL="+j.interval),j.count&&(I+=";COUNT="+j.count),j.byday&&j.byday.length>0&&(I+=";BYDAY="+j.byday.join(","))}var O=((new Date).toISOString(),["BEGIN:VEVENT","UID:"+d.length+"@"+a,"CLASS:PUBLIC","DESCRIPTION:"+e,"DTSTAMP;VALUE=DATE-TIME:"+M,"DTSTART;VALUE=DATE-TIME:"+K,"DTEND;VALUE=DATE-TIME:"+L,"LOCATION:"+f,"SUMMARY;LANGUAGE=en-us:"+b,"TRANSP:TRANSPARENT","END:VEVENT"]);return I&&O.splice(4,0,I),O=O.join(c),d.push(O),O},download:function(a,b){if(d.length<1)return!1;b="undefined"!=typeof b?b:".ics",a="undefined"!=typeof a?a:"calendar";var g,h=e+c+d.join(c)+f;if(-1===navigator.userAgent.indexOf("MSIE 10"))g=new Blob([h],{type:"text/calendar;charset="+document.characterSet});else{var i=new BlobBuilder;i.append(h),g=i.getBlob("text/x-vCalendar;charset="+document.characterSet)}return saveAs(g,a+b),h},build:function(){if(d.length<1)return!1;var a=e+c+d.join(c)+f;return a}}};