{"version":3,"file":"../js/ouical.js","names":["exports","MS_IN_MINUTES","formatTime","date","toISOString","replace","calculateEndTime","event","end","Date","start","getTime","duration","calendarGenerators","google","startTime","endTime","href","encodeURI","title","description","address","join","yahoo","eventDuration","allday","yahooEventDuration","yahooHourDuration","Math","floor","yahooMinuteDuration","st","getTimezoneOffset","ics","eClass","calendarName","document","URL","ical","outlook","generateCalendars","addCSS","getElementById","getElementsByTagName","appendChild","generateCSS","styles","createElement","id","innerHTML","validParams","params","data","undefined","generateMarkup","calendars","clazz","calendarId","result","Object","keys","forEach","services","className","getClass","options","class","getOrGenerateCalendarId","random","createCalendar","console","log"],"sources":["ouical.js"],"sourcesContent":[";(function(exports) {\n var MS_IN_MINUTES = 60 * 1000;\n\n var formatTime = function(date) {\n return date.toISOString().replace(/-|:|\\.\\d+/g, '');\n };\n\n var calculateEndTime = function(event) {\n return event.end ?\n formatTime(event.end) :\n formatTime(new Date(event.start.getTime() + (event.duration * MS_IN_MINUTES)));\n };\n\n var calendarGenerators = {\n google: function(event) {\n var startTime = formatTime(event.start);\n var endTime = calculateEndTime(event);\n\n var href = encodeURI([\n 'https://www.google.com/calendar/render',\n '?action=TEMPLATE',\n '&text=' + (event.title || ''),\n '&dates=' + (startTime || ''),\n '/' + (endTime || ''),\n '&details=' + (event.description || ''),\n '&location=' + (event.address || ''),\n '&sprop=&sprop=name:'\n ].join(''));\n return 'Google Calendar';\n },\n\n yahoo: function(event) {\n var eventDuration = event.end ?\n ((event.end.getTime() - event.start.getTime())/ MS_IN_MINUTES) :\n event.duration;\n\n if (event.allday)\n {\n var yahooEventDuration = 'allday';\n }\n else\n {\n // Yahoo dates are crazy, we need to convert the duration from minutes to hh:mm\n var yahooHourDuration = eventDuration < 600 ?\n '0' + Math.floor((eventDuration / 60)) :\n Math.floor((eventDuration / 60)) + '';\n\n var yahooMinuteDuration = eventDuration % 60 < 10 ?\n '0' + eventDuration % 60 :\n eventDuration % 60 + '';\n\n var yahooEventDuration = yahooHourDuration + yahooMinuteDuration;\n }\n\n // Remove timezone from event time\n var st = formatTime(new Date(event.start - (event.start.getTimezoneOffset() *\n MS_IN_MINUTES))) || '';\n\n var href = encodeURI([\n 'http://calendar.yahoo.com/?v=60&view=d&type=20',\n '&title=' + (event.title || ''),\n '&st=' + st,\n '&dur=' + (yahooEventDuration || ''),\n '&desc=' + (event.description || ''),\n '&in_loc=' + (event.address || '')\n ].join(''));\n\n return 'Yahoo! Calendar';\n },\n\n ics: function(event, eClass, calendarName) {\n var startTime = formatTime(event.start);\n var endTime = calculateEndTime(event);\n\n var href = encodeURI(\n 'data:text/calendar;charset=utf8,' + [\n 'BEGIN:VCALENDAR',\n 'VERSION:2.0',\n 'BEGIN:VEVENT',\n 'URL:' + document.URL,\n 'DTSTART:' + (startTime || ''),\n 'DTEND:' + (endTime || ''),\n 'SUMMARY:' + (event.title || ''),\n 'DESCRIPTION:' + (event.description || ''),\n 'LOCATION:' + (event.address || ''),\n 'END:VEVENT',\n 'END:VCALENDAR'].join('\\n'));\n\n return '' + calendarName + ' Calendar';\n },\n\n ical: function(event) {\n return this.ics(event, 'icon-ical', 'iCal');\n },\n\n outlook: function(event) {\n return this.ics(event, 'icon-outlook', 'Outlook');\n }\n };\n\n var generateCalendars = function(event) {\n return {\n google: calendarGenerators.google(event),\n yahoo: calendarGenerators.yahoo(event),\n ical: calendarGenerators.ical(event),\n outlook: calendarGenerators.outlook(event)\n };\n };\n\n // Create CSS\n var addCSS = function() {\n if (!document.getElementById('ouical-css')) {\n document.getElementsByTagName('head')[0].appendChild(generateCSS());\n }\n };\n\n var generateCSS = function() {\n var styles = document.createElement('style');\n styles.id = 'ouical-css';\n\n styles.innerHTML = \"#add-to-calendar-checkbox-label{cursor:pointer}.add-to-calendar-checkbox~a{display:none}.add-to-calendar-checkbox:checked~a{display:block;width:150px;margin-left:20px}input[type=checkbox].add-to-calendar-checkbox{position:absolute;top:-9999px;left:-9999px}.add-to-calendar-checkbox~a:before{width:16px;height:16px;display:inline-block;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFQAAAAQCAYAAACIoli7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0MzJCRDU2NUE1MDIxMUUyOTY1Q0EwNTkxNEJDOUIwNCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0MzJCRDU2NkE1MDIxMUUyOTY1Q0EwNTkxNEJDOUIwNCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjQzMkJENTYzQTUwMjExRTI5NjVDQTA1OTE0QkM5QjA0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjQzMkJENTY0QTUwMjExRTI5NjVDQTA1OTE0QkM5QjA0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+1Gcb3QAACh1JREFUeNrEWAtw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);margin-right:.5em;content:' '}.icon-ical:before{background-position:-68px 0}.icon-outlook:before{}.icon-yahoo:before{background-position:-36px +4px}.icon-google:before{background-position:-52px 0}\";\n\n return styles;\n };\n\n // Make sure we have the necessary event data, such as start time and event duration\n var validParams = function(params) {\n return params.data !== undefined && params.data.start !== undefined &&\n (params.data.end !== undefined || params.data.duration !== undefined);\n };\n\n var generateMarkup = function(calendars, clazz, calendarId) {\n var result = document.createElement('div');\n\n result.innerHTML = '';\n result.innerHTML += '';\n\n Object.keys(calendars).forEach(function(services) {\n result.innerHTML += calendars[services];\n });\n\n result.className = 'add-to-calendar';\n if (clazz !== undefined) {\n result.className += (' ' + clazz);\n }\n\n addCSS();\n\n result.id = calendarId;\n return result;\n };\n\n var getClass = function(params) {\n if (params.options && params.options.class) {\n return params.options.class;\n }\n };\n\n var getOrGenerateCalendarId = function(params) {\n return params.options && params.options.id ?\n params.options.id :\n Math.floor(Math.random() * 1000000); // Generate a 6-digit random ID\n };\n if (typeof exports === 'undefined') {\n exports = {};\n }\n exports.createCalendar = function(params) {\n if (!validParams(params)) {\n console.log('Event details missing.');\n return;\n }\n\n return generateMarkup(generateCalendars(params.data),\n getClass(params),\n getOrGenerateCalendarId(params));\n };\n})(this);\n"],"mappings":"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","ignoreList":[]}