1/*! 2 * FullCalendar v3.1.0 3 * Docs & License: http://fullcalendar.io/ 4 * (c) 2016 Adam Shaw 5 */ 6(function(factory){if(typeof define==='function'&&define.amd){define(['jquery','moment'],factory)}else if(typeof exports==='object'){module.exports=factory(require('jquery'),require('moment'))}else{factory(jQuery,moment)}})(function($,moment){;var FC=$.fullCalendar={version:"3.1.0",internalApiVersion:7};var fcViews=FC.views={};$.fn.fullCalendar=function(options){var args=Array.prototype.slice.call(arguments,1);var res=this;this.each(function(i,_element){var element=$(_element);var calendar=element.data('fullCalendar');var singleRes;if(typeof options==='string'){if(calendar&&$.isFunction(calendar[options])){singleRes=calendar[options].apply(calendar,args);if(!i){res=singleRes} 7if(options==='destroy'){element.removeData('fullCalendar')}}}else if(!calendar){calendar=new Calendar(element,options);element.data('fullCalendar',calendar);calendar.render()}});return res};var complexOptions=['header','footer','buttonText','buttonIcons','themeButtonIcons'];function mergeOptions(optionObjs){return mergeProps(optionObjs,complexOptions)};FC.intersectRanges=intersectRanges;FC.applyAll=applyAll;FC.debounce=debounce;FC.isInt=isInt;FC.htmlEscape=htmlEscape;FC.cssToStr=cssToStr;FC.proxy=proxy;FC.capitaliseFirstLetter=capitaliseFirstLetter;function compensateScroll(rowEls,scrollbarWidths){if(scrollbarWidths.left){rowEls.css({'border-left-width':1,'margin-left':scrollbarWidths.left-1})} 8if(scrollbarWidths.right){rowEls.css({'border-right-width':1,'margin-right':scrollbarWidths.right-1})}} 9function uncompensateScroll(rowEls){rowEls.css({'margin-left':'','margin-right':'','border-left-width':'','border-right-width':''})} 10function disableCursor(){$('body').addClass('fc-not-allowed')} 11function enableCursor(){$('body').removeClass('fc-not-allowed')} 12function distributeHeight(els,availableHeight,shouldRedistribute){var minOffset1=Math.floor(availableHeight/els.length);var minOffset2=Math.floor(availableHeight-minOffset1*(els.length-1));var flexEls=[];var flexOffsets=[];var flexHeights=[];var usedHeight=0;undistributeHeight(els);els.each(function(i,el){var minOffset=i===els.length-1?minOffset2:minOffset1;var naturalOffset=$(el).outerHeight(!0);if(naturalOffset<minOffset){flexEls.push(el);flexOffsets.push(naturalOffset);flexHeights.push($(el).height())}else{usedHeight+=naturalOffset}});if(shouldRedistribute){availableHeight-=usedHeight;minOffset1=Math.floor(availableHeight/flexEls.length);minOffset2=Math.floor(availableHeight-minOffset1*(flexEls.length-1))} 13$(flexEls).each(function(i,el){var minOffset=i===flexEls.length-1?minOffset2:minOffset1;var naturalOffset=flexOffsets[i];var naturalHeight=flexHeights[i];var newHeight=minOffset-(naturalOffset-naturalHeight);if(naturalOffset<minOffset){$(el).height(newHeight)}})} 14function undistributeHeight(els){els.height('')} 15function matchCellWidths(els){var maxInnerWidth=0;els.find('> *').each(function(i,innerEl){var innerWidth=$(innerEl).outerWidth();if(innerWidth>maxInnerWidth){maxInnerWidth=innerWidth}});maxInnerWidth++;els.width(maxInnerWidth);return maxInnerWidth} 16function subtractInnerElHeight(outerEl,innerEl){var both=outerEl.add(innerEl);var diff;both.css({position:'relative',left:-1});diff=outerEl.outerHeight()-innerEl.outerHeight();both.css({position:'',left:''});return diff} 17FC.getOuterRect=getOuterRect;FC.getClientRect=getClientRect;FC.getContentRect=getContentRect;FC.getScrollbarWidths=getScrollbarWidths;function getScrollParent(el){var position=el.css('position'),scrollParent=el.parents().filter(function(){var parent=$(this);return(/(auto|scroll)/).test(parent.css('overflow')+parent.css('overflow-y')+parent.css('overflow-x'))}).eq(0);return position==='fixed'||!scrollParent.length?$(el[0].ownerDocument||document):scrollParent} 18function getOuterRect(el,origin){var offset=el.offset();var left=offset.left-(origin?origin.left:0);var top=offset.top-(origin?origin.top:0);return{left:left,right:left+el.outerWidth(),top:top,bottom:top+el.outerHeight()}} 19function getClientRect(el,origin){var offset=el.offset();var scrollbarWidths=getScrollbarWidths(el);
19var left=offset.left+getCssFloat(el,'border-left-width')+scrollbarWidths.left-(origin?origin.left:0);var top=offset.top+getCssFloat(el,'border-top-width')+scrollbarWidths.top-(origin?origin.top:0);return{left:left,right:left+el[0].clientWidth,top:top,bottom:top+el[0].clientHeight}} 20function getContentRect(el,origin){var offset=el.offset();var left=offset.left+getCssFloat(el,'border-left-width')+getCssFloat(el,'padding-left')-(origin?origin.left:0);var top=offset.top+getCssFloat(el,'border-top-width')+getCssFloat(el,'padding-top')-(origin?origin.top:0);return{left:left,right:left+el.width(),top:top,bottom:top+el.height()}} 21function getScrollbarWidths(el){var leftRightWidth=el.innerWidth()-el[0].clientWidth;var widths={left:0,right:0,top:0,bottom:el.innerHeight()-el[0].clientHeight};if(getIsLeftRtlScrollbars()&&el.css('direction')=='rtl'){widths.left=leftRightWidth}else{widths.right=leftRightWidth} 22return widths} 23var _isLeftRtlScrollbars=null;function getIsLeftRtlScrollbars(){if(_isLeftRtlScrollbars===null){_isLeftRtlScrollbars=computeIsLeftRtlScrollbars()} 24return _isLeftRtlScrollbars} 25function computeIsLeftRtlScrollbars(){var el=$('<div><div/></div>').css({position:'absolute',top:-1000,left:0,border:0,padding:0,overflow:'scroll',direction:'rtl'}).appendTo('body');var innerEl=el.children();var res=innerEl.offset().left>el.offset().left;el.remove();return res} 26function getCssFloat(el,prop){return parseFloat(el.css(prop))||0} 27FC.preventDefault=preventDefault;function isPrimaryMouseButton(ev){return ev.which==1&&!ev.ctrlKey} 28function getEvX(ev){if(ev.pageX!==undefined){return ev.pageX} 29var touches=ev.originalEvent.touches;if(touches){return touches[0].pageX}} 30function getEvY(ev){if(ev.pageY!==undefined){return ev.pageY} 31var touches=ev.originalEvent.touches;if(touches){return touches[0].pageY}} 32function getEvIsTouch(ev){return/^touch/.test(ev.type)} 33function preventSelection(el){el.addClass('fc-unselectable').on('selectstart',preventDefault)} 34function preventDefault(ev){ev.preventDefault()} 35function bindAnyScroll(handler){if(window.addEventListener){window.addEventListener('scroll',handler,!0);return!0} 36return!1} 37function unbindAnyScroll(handler){if(window.removeEventListener){window.removeEventListener('scroll',handler,!0);return!0} 38return!1} 39FC.intersectRects=intersectRects;function intersectRects(rect1,rect2){var res={left:Math.max(rect1.left,rect2.left),right:Math.min(rect1.right,rect2.right),top:Math.max(rect1.top,rect2.top),bottom:Math.min(rect1.bottom,rect2.bottom)};if(res.left<res.right&&res.top<res.bottom){return res} 40return!1} 41function constrainPoint(point,rect){return{left:Math.min(Math.max(point.left,rect.left),rect.right),top:Math.min(Math.max(point.top,rect.top),rect.bottom)}} 42function getRectCenter(rect){return{left:(rect.left+rect.right)/2,top:(rect.top+rect.bottom)/2}} 43function diffPoints(point1,point2){return{left:point1.left-point2.left,top:point1.top-point2.top}} 44FC.parseFieldSpecs=parseFieldSpecs;FC.compareByFieldSpecs=compareByFieldSpecs;FC.compareByFieldSpec=compareByFieldSpec;FC.flexibleCompare=flexibleCompare;function parseFieldSpecs(input){var specs=[];var tokens=[];var i,token;if(typeof input==='string'){tokens=input.split(/\s*,\s*/)}else if(typeof input==='function'){tokens=[input]}else if($.isArray(input)){tokens=input} 45for(i=0;i<tokens.length;i++){token=tokens[i];if(typeof token==='string'){specs.push(token.charAt(0)=='-'?{field:token.substring(1),order:-1}:{field:token,order:1})}else if(typeof token==='function'){specs.push({func:token})}} 46return specs} 47function compareByFieldSpecs(obj1,obj2,fieldSpecs){var i;var cmp;for(i=0;i<fieldSpecs.length;i++){cmp=compareByFieldSpec(obj1,obj2,fieldSpecs[i]);if(cmp){return cmp}} 48return 0} 49function compareByFieldSpec(obj1,obj2,fieldSpec){if(fieldSpec.func){return fieldSpec.func(obj1,obj2)} 50return flexibleCompare(obj1[fieldSpec.field],obj2[fieldSpec.field])*(fieldSpec.order||1)} 51function flexibleCompare(a,b){if(!a&&!b){return 0} 52if(b==null){return-1} 53if(a==null){return 1} 54if($.type(a)==='string'||$.type(b)==='string'){return String(a).localeCompare(String(b))} 55return a-b} 56function intersectRanges(subjectRange,constraintRange){var subjectStart=subjectRange.start;var subjectEnd=subjectRange.end;var constraintStart=constraintRange.start;var constraintEnd=constraintRange.end;var segStart,segEnd;var isStart,isEnd;if(subjectEnd>
56constraintStart&&subjectStart<constraintEnd){if(subjectStart>=constraintStart){segStart=subjectStart.clone();isStart=!0}else{segStart=constraintStart.clone();isStart=!1} 57if(subjectEnd<=constraintEnd){segEnd=subjectEnd.clone();isEnd=!0}else{segEnd=constraintEnd.clone();isEnd=!1} 58return{start:segStart,end:segEnd,isStart:isStart,isEnd:isEnd}}} 59FC.computeIntervalUnit=computeIntervalUnit;FC.divideRangeByDuration=divideRangeByDuration;FC.divideDurationByDuration=divideDurationByDuration;FC.multiplyDuration=multiplyDuration;FC.durationHasTime=durationHasTime;var dayIDs=['sun','mon','tue','wed','thu','fri','sat'];var intervalUnits=['year','month','week','day','hour','minute','second','millisecond'];function diffDayTime(a,b){return moment.duration({days:a.clone().stripTime().diff(b.clone().stripTime(),'days'),ms:a.time()-b.time()})} 60function diffDay(a,b){return moment.duration({days:a.clone().stripTime().diff(b.clone().stripTime(),'days')})} 61function diffByUnit(a,b,unit){return moment.duration(Math.round(a.diff(b,unit,!0)),unit)} 62function computeIntervalUnit(start,end){var i,unit;var val;for(i=0;i<intervalUnits.length;i++){unit=intervalUnits[i];val=computeRangeAs(unit,start,end);if(val>=1&&isInt(val)){break}} 63return unit} 64function computeRangeAs(unit,start,end){if(end!=null){return end.diff(start,unit,!0)}else if(moment.isDuration(start)){return start.as(unit)}else{return start.end.diff(start.start,unit,!0)}} 65function divideRangeByDuration(start,end,dur){var months;if(durationHasTime(dur)){return(end-start)/dur} 66months=dur.asMonths();if(Math.abs(months)>=1&&isInt(months)){return end.diff(start,'months',!0)/months} 67return end.diff(start,'days',!0)/dur.asDays()} 68function divideDurationByDuration(dur1,dur2){var months1,months2;if(durationHasTime(dur1)||durationHasTime(dur2)){return dur1/dur2} 69months1=dur1.asMonths();months2=dur2.asMonths();if(Math.abs(months1)>=1&&isInt(months1)&&Math.abs(months2)>=1&&isInt(months2)){return months1/months2} 70return dur1.asDays()/dur2.asDays()} 71function multiplyDuration(dur,n){var months;if(durationHasTime(dur)){return moment.duration(dur*n)} 72months=dur.asMonths();if(Math.abs(months)>=1&&isInt(months)){return moment.duration({months:months*n})} 73return moment.duration({days:dur.asDays()*n})} 74function durationHasTime(dur){return Boolean(dur.hours()||dur.minutes()||dur.seconds()||dur.milliseconds())} 75function isNativeDate(input){return Object.prototype.toString.call(input)==='[object Date]'||input instanceof Date} 76function isTimeString(str){return/^\d+\:\d+(?:\:\d+\.?(?:\d{3})?)?$/.test(str)} 77FC.log=function(){var console=window.console;if(console&&console.log){return console.log.apply(console,arguments)}};FC.warn=function(){var console=window.console;if(console&&console.warn){return console.warn.apply(console,arguments)}else{return FC.log.apply(FC,arguments)}};var hasOwnPropMethod={}.hasOwnProperty;function mergeProps(propObjs,complexProps){var dest={};var i,name;var complexObjs;var j,val;var props;if(complexProps){for(i=0;i<complexProps.length;i++){name=complexProps[i];complexObjs=[];for(j=propObjs.length-1;j>=0;j--){val=propObjs[j][name];if(typeof val==='object'){complexObjs.unshift(val)}else if(val!==undefined){dest[name]=val;break}} 78if(complexObjs.length){dest[name]=mergeProps(complexObjs)}}} 79for(i=propObjs.length-1;i>=0;i--){props=propObjs[i];for(name in props){if(!(name in dest)){dest[name]=props[name]}}} 80return dest} 81function createObject(proto){var f=function(){};f.prototype=proto;return new f()} 82FC.createObject=createObject;function copyOwnProps(src,dest){for(var name in src){if(hasOwnProp(src,name)){dest[name]=src[name]}}} 83function hasOwnProp(obj,name){return hasOwnPropMethod.call(obj,name)} 84function isAtomic(val){return/undefined|null|boolean|number|string/.test($.type(val))} 85function applyAll(functions,thisObj,args){if($.isFunction(functions)){functions=[functions]} 86if(functions){var i;var ret;for(i=0;i<functions.length;i++){ret=functions[i].apply(thisObj,args)||ret} 87return ret}} 88function firstDefined(){for(var i=0;i<arguments.length;i++){if(arguments[i]!==undefined){return arguments[i]}}} 89function htmlEscape(s){return(s+'').replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>').replace(/'/g,''').replace(/"/g,'"').replace(/\n/g,'<br />')} 90function stripHtmlEntities(text){return text.replace(/&.*?;/g,'')} 91function cssToStr(cssProps){var statements=[];$.each(cssProps,function(name,val){if(val!=null){statements.push(name+':'+val)}});return statements.join(';')} 92function attrsToStr(attrs){var parts=[];$.each(attrs,function(name,val){if(val!=null){parts.push(name+'="'+htmlEscape(val)+'"')}});return parts.join(' ')} 93function capitaliseFirstLetter(str){return str.charAt(0).toUpperCase()+str.slice(1)} 94function compareNumbers(a,b){return a-b} 95function isInt(n){return n%1===0} 96function proxy(obj,methodName){var method=obj[methodName];return function(){return method.apply(obj,arguments)}} 97function debounce(func,wait,immediate){var timeout,args,context,timestamp,result;var later=function(){var last=+new Date()-timestamp;if(last<wait){timeout=setTimeout(later,wait-last)}else{timeout=null;if(!immediate){result=func.apply(context,args);context=args=null}}};return function(){context=this;args=arguments;timestamp=+new Date();var callNow=immediate&&!timeout;if(!timeout){timeout=setTimeout(later,wait)} 98if(callNow){result=func.apply(context,args);context=args=null} 99return result}};var ambigDateOfMonthRegex=/^\s*\d{4}-\d\d$/;var ambigTimeOrZoneRegex=/^\s*\d{4}-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?)?$/;var newMomentProto=moment.fn;var oldMomentProto=$.extend({},newMomentProto);var momentProperties=moment.momentProperties;momentProperties.push('_fullCalendar');momentProperties.push('_ambigTime');momentProperties.push('_ambigZone');FC.moment=function(){return makeMoment(arguments)};FC.moment.utc=function(){var mom=makeMoment(arguments,!0);if(mom.hasTime()){mom.utc()} 100return mom};FC.moment.parseZone=function(){return makeMoment(arguments,!0,!0)};function makeMoment(args,parseAsUTC,parseZone){var input=args[0];var isSingleString=args.length==1&&typeof input==='string';var isAmbigTime;var isAmbigZone;var ambigMatch;var mom;if(moment.isMoment(input)||isNativeDate(input)||input===undefined){mom=moment.apply(null,args)}else{isAmbigTime=!1;isAmbigZone=!1;if(isSingleString){if(ambigDateOfMonthRegex.test(input)){input+='-01';args=[input];isAmbigTime=!0;isAmbigZone=!0}else if((ambigMatch=ambigTimeOrZoneRegex.exec(input))){isAmbigTime=!ambigMatch[5];isAmbigZone=!0}}else if($.isArray(input)){isAmbigZone=!0} 101if(parseAsUTC||isAmbigTime){mom=moment.utc.apply(moment,args)}else{mom=moment.apply(null,args)} 102if(isAmbigTime){mom._ambigTime=!0;mom._ambigZone=!0}else if(parseZone){if(isAmbigZone){mom._ambigZone=!0}else if(isSingleString){mom.utcOffset(input)}}} 103mom._fullCalendar=!0;return mom} 104newMomentProto.week=newMomentProto.weeks=function(input){var weekCalc=this._locale._fullCalendar_weekCalc;if(input==null&&typeof weekCalc==='function'){return weekCalc(this)}else if(weekCalc==='ISO'){return oldMomentProto.isoWeek.apply(this,arguments)} 105return oldMomentProto.week.apply(this,arguments)};newMomentProto.time=function(time){if(!this._fullCalendar){return oldMomentProto.time.apply(this,arguments)} 106if(time==null){return moment.duration({hours:this.hours(),minutes:this.minutes(),seconds:this.seconds(),milliseconds:this.milliseconds()})}else{this._ambigTime=!1;if(!moment.isDuration(time)&&!moment.isMoment(time)){time=moment.duration(time)} 107var dayHours=0;if(moment.isDuration(time)){dayHours=Math.floor(time.asDays())*24} 108return this.hours(dayHours+time.hours()).minutes(time.minutes()).seconds(time.seconds()).milliseconds(time.milliseconds())}};newMomentProto.stripTime=function(){if(!this._ambigTime){this.utc(!0);this.set({hours:0,minutes:0,seconds:0,ms:0});this._ambigTime=!0;this._ambigZone=!0} 109return this};newMomentProto.hasTime=function(){return!this._ambigTime};newMomentProto.stripZone=function(){var wasAmbigTime;if(!this._ambigZone){wasAmbigTime=this._ambigTime;this.utc(!0);this._ambigTime=wasAmbigTime||!1;this._ambigZone=!0} 110return this};
110newMomentProto.hasZone=function(){return!this._ambigZone};newMomentProto.local=function(keepLocalTime){oldMomentProto.local.call(this,this._ambigZone||keepLocalTime);this._ambigTime=!1;this._ambigZone=!1;return this};newMomentProto.utc=function(keepLocalTime){oldMomentProto.utc.call(this,keepLocalTime);this._ambigTime=!1;this._ambigZone=!1;return this};newMomentProto.utcOffset=function(tzo){if(tzo!=null){this._ambigTime=!1;this._ambigZone=!1} 111return oldMomentProto.utcOffset.apply(this,arguments)};newMomentProto.format=function(){if(this._fullCalendar&&arguments[0]){return formatDate(this,arguments[0])} 112if(this._ambigTime){return oldMomentFormat(this,'YYYY-MM-DD')} 113if(this._ambigZone){return oldMomentFormat(this,'YYYY-MM-DD[T]HH:mm:ss')} 114return oldMomentProto.format.apply(this,arguments)};newMomentProto.toISOString=function(){if(this._ambigTime){return oldMomentFormat(this,'YYYY-MM-DD')} 115if(this._ambigZone){return oldMomentFormat(this,'YYYY-MM-DD[T]HH:mm:ss')} 116return oldMomentProto.toISOString.apply(this,arguments)};function oldMomentFormat(mom,formatStr){return oldMomentProto.format.call(mom,formatStr)} 117function formatDate(date,formatStr){return formatDateWithChunks(date,getFormatStringChunks(formatStr))} 118function formatDateWithChunks(date,chunks){var s='';var i;for(i=0;i<chunks.length;i++){s+=formatDateWithChunk(date,chunks[i])} 119return s} 120var tokenOverrides={t:function(date){return oldMomentFormat(date,'a').charAt(0)},T:function(date){return oldMomentFormat(date,'A').charAt(0)}};function formatDateWithChunk(date,chunk){var token;var maybeStr;if(typeof chunk==='string'){return chunk}else if((token=chunk.token)){if(tokenOverrides[token]){return tokenOverrides[token](date)} 121return oldMomentFormat(date,token)}else if(chunk.maybe){maybeStr=formatDateWithChunks(date,chunk.maybe);if(maybeStr.match(/[1-9]/)){return maybeStr}} 122return''} 123function formatRange(date1,date2,formatStr,separator,isRTL){var localeData;date1=FC.moment.parseZone(date1);date2=FC.moment.parseZone(date2);localeData=date1.localeData();formatStr=localeData.longDateFormat(formatStr)||formatStr;separator=separator||' - ';return formatRangeWithChunks(date1,date2,getFormatStringChunks(formatStr),separator,isRTL)} 124FC.formatRange=formatRange;function formatRangeWithChunks(date1,date2,chunks,separator,isRTL){var unzonedDate1=date1.clone().stripZone();var unzonedDate2=date2.clone().stripZone();var chunkStr;var leftI;var leftStr='';var rightI;var rightStr='';var middleI;var middleStr1='';var middleStr2='';var middleStr='';for(leftI=0;leftI<chunks.length;leftI++){chunkStr=formatSimilarChunk(date1,date2,unzonedDate1,unzonedDate2,chunks[leftI]);if(chunkStr===!1){break} 125leftStr+=chunkStr} 126for(rightI=chunks.length-1;rightI>leftI;rightI--){chunkStr=formatSimilarChunk(date1,date2,unzonedDate1,unzonedDate2,chunks[rightI]);if(chunkStr===!1){break} 127rightStr=chunkStr+rightStr} 128for(middleI=leftI;middleI<=rightI;middleI++){middleStr1+=formatDateWithChunk(date1,chunks[middleI]);middleStr2+=formatDateWithChunk(date2,chunks[middleI])} 129if(middleStr1||middleStr2){if(isRTL){middleStr=middleStr2+separator+middleStr1}else{middleStr=middleStr1+separator+middleStr2}} 130return leftStr+middleStr+rightStr} 131var similarUnitMap={Y:'year',M:'month',D:'day',d:'day',A:'second',a:'second',T:'second',t:'second',H:'second',h:'second',m:'second',s:'second'};function formatSimilarChunk(date1,date2,unzonedDate1,unzonedDate2,chunk){var token;var unit;if(typeof chunk==='string'){return chunk}else if((token=chunk.token)){unit=similarUnitMap[token.charAt(0)];if(unit&&unzonedDate1.isSame(unzonedDate2,unit)){return oldMomentFormat(date1,token)}} 132return!1} 133var formatStringChunkCache={};function getFormatStringChunks(formatStr){if(formatStr in formatStringChunkCache){return formatStringChunkCache[formatStr]} 134return(formatStringChunkCache[formatStr]=chunkFormatString(formatStr))} 135function chunkFormatString(formatStr){var chunks=[];var chunker=/\[([^\]]*)\]|\(([^\)]*)\)|(LTS|LT|(\w)\4*o?)|([^\w\[\(]+)/g;var match;while((match=chunker.exec(formatStr))){if(match[1]){chunks.push(match[1])}else if(match[2]){chunks.push({maybe:chunkFormatString(match[2])})}else if(match[3]){chunks.push({token:match[3]})}else if(match[5]){chunks.push(match[5])}} 136return chunks} 137var tokenGranularities={Y:{value:1,unit:'year'},M:{value:2,unit:'month'},W:{value:3,unit:'week'},w:{value:3,unit:'week'},D:{value:4,unit:'day'},d:{value:4,unit:'day'}};FC.queryMostGranularFormatUnit=function(formatStr){var chunks=getFormatStringChunks(formatStr);var i,chunk;var candidate;var best;for(i=0;i<chunks.length;i++){chunk=chunks[i];if(chunk.token){candidate=tokenGranularities[chunk.token.charAt(0)];if(candidate){if(!best||candidate.value>best.value){best=candidate}}}} 138if(best){return best.unit} 139return null};FC.Class=Class;function Class(){} 140Class.extend=function(){var len=arguments.length;var i;var members;for(i=0;i<len;i++){members=arguments[i];if(i<len-1){mixIntoClass(this,members)}} 141return extendClass(this,members||{})};Class.mixin=function(members){mixIntoClass(this,members)};function extendClass(superClass,members){var subClass;if(hasOwnProp(members,'constructor')){subClass=members.constructor} 142if(typeof subClass!=='function'){subClass=members.constructor=function(){superClass.apply(this,arguments)}} 143subClass.prototype=createObject(superClass.prototype);copyOwnProps(members,subClass.prototype);copyOwnProps(superClass,subClass);return subClass} 144function mixIntoClass(theClass,members){copyOwnProps(members,theClass.prototype)};function Promise(executor){var deferred=$.Deferred();var promise=deferred.promise();if(typeof executor==='function'){executor(function(value){if(Promise.immediate){promise._value=value} 145deferred.resolve(value)},function(){deferred.reject()})} 146if(Promise.immediate){var origThen=promise.then;promise.then=function(onFulfilled,onRejected){var state=promise.state();if(state==='resolved'){if(typeof onFulfilled==='function'){return Promise.resolve(onFulfilled(promise._value))}}else if(state==='rejected'){if(typeof onRejected==='function'){onRejected();return promise}} 147return origThen.call(promise,onFulfilled,onRejected)}} 148return promise} 149FC.Promise=Promise;Promise.immediate=!0;Promise.resolve=function(value){if(value&&typeof value.resolve==='function'){return value.promise()} 150if(value&&typeof value.then==='function'){return value}else{var deferred=$.Deferred().resolve(value);var promise=deferred.promise();if(Promise.immediate){var origThen=promise.then;promise._value=value;promise.then=function(onFulfilled,onRejected){if(typeof onFulfilled==='function'){return Promise.resolve(onFulfilled(value))} 151return origThen.call(promise,onFulfilled,onRejected)}} 152return promise}};Promise.reject=function(){return $.Deferred().reject().promise()};Promise.all=function(inputs){var hasAllValues=!1;var values;var i,input;if(Promise.immediate){hasAllValues=!0;values=[];for(i=0;i<inputs.length;i++){input=inputs[i];if(input&&typeof input.state==='function'&&input.state()==='resolved'&&('_value' in input)){values.push(input._value)}else if(input&&typeof input.then==='function'){hasAllValues=!1;break}else{values.push(input)}}} 153if(hasAllValues){return Promise.resolve(values)}else{return $.when.apply($.when,inputs).then(function(){return $.when($.makeArray(arguments))})}};function TaskQueue(debounceWait){var q=[];function addTask(taskFunc){return new Promise(function(resolve){var runFunc=function(){Promise.resolve(taskFunc()).then(resolve).then(function(){q.shift();if(q.length){q[0]()}})};q.push(runFunc);if(q.length===1){runFunc()}})} 154this.add=typeof debounceWait==='number'?debounce(addTask,debounceWait):addTask;this.addQuickly=addTask} 155FC.TaskQueue=TaskQueue;var EmitterMixin=FC.EmitterMixin={on:function(types,handler){$(this).on(types,this._prepareIntercept(handler));return this},one:function(types,handler){$(this).one(types,this._prepareIntercept(handler));return this},_prepareIntercept:function(handler){var intercept=function(ev,extra){return handler.apply(extra.context||this,extra.args||[])};if(!handler.guid){handler.guid=$.guid++} 156intercept.guid=handler.guid;return intercept},off:function(types,handler){$(this).off(types,handler);return this},trigger:function(types){var args=Array.prototype.slice.call(arguments,1
156);$(this).triggerHandler(types,{args:args});return this},triggerWith:function(types,context,args){$(this).triggerHandler(types,{context:context,args:args});return this}};var ListenerMixin=FC.ListenerMixin=(function(){var guid=0;var ListenerMixin={listenerId:null,listenTo:function(other,arg,callback){if(typeof arg==='object'){for(var eventName in arg){if(arg.hasOwnProperty(eventName)){this.listenTo(other,eventName,arg[eventName])}}}else if(typeof arg==='string'){other.on(arg+'.'+this.getListenerNamespace(),$.proxy(callback,this))}},stopListeningTo:function(other,eventName){other.off((eventName||'')+'.'+this.getListenerNamespace())},getListenerNamespace:function(){if(this.listenerId==null){this.listenerId=guid++} 157return'_listener'+this.listenerId}};return ListenerMixin})();var MouseIgnorerMixin={isIgnoringMouse:!1,delayUnignoreMouse:null,initMouseIgnoring:function(delay){this.delayUnignoreMouse=debounce(proxy(this,'unignoreMouse'),delay||1000)},tempIgnoreMouse:function(){this.isIgnoringMouse=!0;this.delayUnignoreMouse()},unignoreMouse:function(){this.isIgnoringMouse=!1}};var Popover=Class.extend(ListenerMixin,{isHidden:!0,options:null,el:null,margin:10,constructor:function(options){this.options=options||{}},show:function(){if(this.isHidden){if(!this.el){this.render()} 158this.el.show();this.position();this.isHidden=!1;this.trigger('show')}},hide:function(){if(!this.isHidden){this.el.hide();this.isHidden=!0;this.trigger('hide')}},render:function(){var _this=this;var options=this.options;this.el=$('<div class="fc-popover"/>').addClass(options.className||'').css({top:0,left:0}).append(options.content).appendTo(options.parentEl);this.el.on('click','.fc-close',function(){_this.hide()});if(options.autoHide){this.listenTo($(document),'mousedown',this.documentMousedown)}},documentMousedown:function(ev){if(this.el&&!$(ev.target).closest(this.el).length){this.hide()}},removeElement:function(){this.hide();if(this.el){this.el.remove();this.el=null} 159this.stopListeningTo($(document),'mousedown')},position:function(){var options=this.options;var origin=this.el.offsetParent().offset();var width=this.el.outerWidth();var height=this.el.outerHeight();var windowEl=$(window);var viewportEl=getScrollParent(this.el);var viewportTop;var viewportLeft;var viewportOffset;var top;var left;top=options.top||0;if(options.left!==undefined){left=options.left}else if(options.right!==undefined){left=options.right-width}else{left=0} 160if(viewportEl.is(window)||viewportEl.is(document)){viewportEl=windowEl;viewportTop=0;viewportLeft=0}else{viewportOffset=viewportEl.offset();viewportTop=viewportOffset.top;viewportLeft=viewportOffset.left} 161viewportTop+=windowEl.scrollTop();viewportLeft+=windowEl.scrollLeft();if(options.viewportConstrain!==!1){top=Math.min(top,viewportTop+viewportEl.outerHeight()-height-this.margin);top=Math.max(top,viewportTop+this.margin);left=Math.min(left,viewportLeft+viewportEl.outerWidth()-width-this.margin);left=Math.max(left,viewportLeft+this.margin)} 162this.el.css({top:top-origin.top,left:left-origin.left})},trigger:function(name){if(this.options[name]){this.options[name].apply(this,Array.prototype.slice.call(arguments,1))}}});var CoordCache=FC.CoordCache=Class.extend({els:null,forcedOffsetParentEl:null,origin:null,boundingRect:null,isHorizontal:!1,isVertical:!1,lefts:null,rights:null,tops:null,bottoms:null,constructor:function(options){this.els=$(options.els);this.isHorizontal=options.isHorizontal;this.isVertical=options.isVertical;this.forcedOffsetParentEl=options.offsetParent?$(options.offsetParent):null},build:function(){var offsetParentEl=this.forcedOffsetParentEl;if(!offsetParentEl&&this.els.length>0){offsetParentEl=this.els.eq(0).offsetParent()} 163this.origin=offsetParentEl?offsetParentEl.offset():null;
163this.boundingRect=this.queryBoundingRect();if(this.isHorizontal){this.buildElHorizontals()} 164if(this.isVertical){this.buildElVerticals()}},clear:function(){this.origin=null;this.boundingRect=null;this.lefts=null;this.rights=null;this.tops=null;this.bottoms=null},ensureBuilt:function(){if(!this.origin){this.build()}},buildElHorizontals:function(){var lefts=[];var rights=[];this.els.each(function(i,node){var el=$(node);var left=el.offset().left;var width=el.outerWidth();lefts.push(left);rights.push(left+width)});this.lefts=lefts;this.rights=rights},buildElVerticals:function(){var tops=[];var bottoms=[];this.els.each(function(i,node){var el=$(node);var top=el.offset().top;var height=el.outerHeight();tops.push(top);bottoms.push(top+height)});this.tops=tops;this.bottoms=bottoms},getHorizontalIndex:function(leftOffset){this.ensureBuilt();var lefts=this.lefts;var rights=this.rights;var len=lefts.length;var i;for(i=0;i<len;i++){if(leftOffset>=lefts[i]&&leftOffset<rights[i]){return i}}},getVerticalIndex:function(topOffset){this.ensureBuilt();var tops=this.tops;var bottoms=this.bottoms;var len=tops.length;var i;for(i=0;i<len;i++){if(topOffset>=tops[i]&&topOffset<bottoms[i]){return i}}},getLeftOffset:function(leftIndex){this.ensureBuilt();return this.lefts[leftIndex]},getLeftPosition:function(leftIndex){this.ensureBuilt();return this.lefts[leftIndex]-this.origin.left},getRightOffset:function(leftIndex){this.ensureBuilt();return this.rights[leftIndex]},getRightPosition:function(leftIndex){this.ensureBuilt();return this.rights[leftIndex]-this.origin.left},getWidth:function(leftIndex){this.ensureBuilt();return this.rights[leftIndex]-this.lefts[leftIndex]},getTopOffset:function(topIndex){this.ensureBuilt();return this.tops[topIndex]},getTopPosition:function(topIndex){this.ensureBuilt();return this.tops[topIndex]-this.origin.top},getBottomOffset:function(topIndex){this.ensureBuilt();return this.bottoms[topIndex]},getBottomPosition:function(topIndex){this.ensureBuilt();return this.bottoms[topIndex]-this.origin.top},getHeight:function(topIndex){this.ensureBuilt();return this.bottoms[topIndex]-this.tops[topIndex]},queryBoundingRect:function(){var scrollParentEl;if(this.els.length>0){scrollParentEl=getScrollParent(this.els.eq(0));if(!scrollParentEl.is(document)){return getClientRect(scrollParentEl)}} 165return null},isPointInBounds:function(leftOffset,topOffset){return this.isLeftInBounds(leftOffset)&&this.isTopInBounds(topOffset)},isLeftInBounds:function(leftOffset){return!this.boundingRect||(leftOffset>=this.boundingRect.left&&leftOffset<this.boundingRect.right)},isTopInBounds:function(topOffset){return!this.boundingRect||(topOffset>=this.boundingRect.top&&topOffset<this.boundingRect.bottom)}});var DragListener=FC.DragListener=Class.extend(ListenerMixin,MouseIgnorerMixin,{options:null,subjectEl:null,originX:null,originY:null,scrollEl:null,isInteracting:!1,isDistanceSurpassed:!1,isDelayEnded:!1,isDragging:!1,isTouch:!1,delay:null,delayTimeoutId:null,minDistance:null,handleTouchScrollProxy:null,constructor:function(options){this.options=options||{};this.handleTouchScrollProxy=proxy(this,'handleTouchScroll');this.initMouseIgnoring(500)},startInteraction:function(ev,extraOptions){var isTouch=getEvIsTouch(ev);if(ev.type==='mousedown'){if(this.isIgnoringMouse){return}else if(!isPrimaryMouseButton(ev)){return}else{ev.preventDefault()}} 166if(!this.isInteracting){extraOptions=extraOptions||{};this.delay=firstDefined(extraOptions.delay,this.options.delay,0);this.minDistance=firstDefined(extraOptions.distance,this.options.distance,0);this.subjectEl=this.options.subjectEl;this.isInteracting=!0;this.isTouch=isTouch;this.isDelayEnded=!1;this.isDistanceSurpassed=!1;this.originX=getEvX(ev);this.originY=getEvY(ev);this.scrollEl=getScrollParent($(ev.target));this.bindHandlers();this.initAutoScroll();this.handleInteractionStart(ev);this.startDelay(ev);if(!this.minDistance){this.handleDistanceSurpassed(ev)}}},handleInteractionStart:function(ev){this.trigger('interactionStart',ev)},endInteraction:function(ev,isCancelled){if(this.isInteracting){this.endDrag(ev);if(this.delayTimeoutId){clearTimeout(this.delayTimeoutId);this.delayTimeoutId=null} 167this.destroyAutoScroll();this.unbindHandlers();this.isInteracting=!1;this.handleInteractionEnd(ev,isCancelled);if(this.isTouch){this.tempIgnoreMouse()}}},handleInteractionEnd:function(ev,isCancelled){this.trigger('interactionEnd',ev,isCancelled||!1)},bindHandlers:function(){var _this=this;var touchStartIgnores=1;if(this.isTouch){this.listenTo($(document),{touchmove:this.handleTouchMove,touchend:this.endInteraction,touchcancel:this.endInteraction,touchstart:function(ev){if(touchStartIgnores){touchStartIgnores--}else{_this.endInteraction(ev,!0)}}});if(!bindAnyScroll(this.handleTouchScrollProxy)&&this.scrollEl){this.listenTo(this.scrollEl,'scroll',this.handleTouchScroll)}}else{this.listenTo($(document),{mousemove:this.handleMouseMove,mouseup:this.endInteraction})} 168this.listenTo($(document),{selectstart:preventDefault,contextmenu:preventDefault})},unbindHandlers:function(){this.stopListeningTo($(document));unbindAnyScroll(this.handleTouchScrollProxy);if(this.scrollEl){this.stopListeningTo(this.scrollEl,'scroll')}},startDrag:function(ev,extraOptions){this.startInteraction(ev,extraOptions);if(!this.isDragging){this.isDragging=!0;this.handleDragStart(ev)}},handleDragStart:function(ev){this.trigger('dragStart',ev)},handleMove:function(ev){var dx=getEvX(ev)-this.originX;var dy=getEvY(ev)-this.originY;var minDistance=this.minDistance;var distanceSq;if(!this.isDistanceSurpassed){distanceSq=dx*dx+dy*dy;if(distanceSq>=minDistance*minDistance){this.handleDistanceSurpassed(ev)}} 169if(this.isDragging){this.handleDrag(dx,dy,ev)}},handleDrag:function(dx,dy,ev){this.trigger('drag',dx,dy,ev);this.updateAutoScroll(ev)},endDrag:function(ev){if(this.isDragging){this.isDragging=!1;this.handleDragEnd(ev)}},handleDragEnd:function(ev){this.trigger('dragEnd',ev)},startDelay:function(initialEv){var _this=this;if(this.delay){this.delayTimeoutId=setTimeout(function(){_this.handleDelayEnd(initialEv)},this.delay)}else{this.handleDelayEnd(initialEv)}},handleDelayEnd:function(initialEv){this.isDelayEnded=!0;if(this.isDistanceSurpassed){this.startDrag(initialEv)}},handleDistanceSurpassed:function(ev){this.isDistanceSurpassed=!0;if(this.isDelayEnded){this.startDrag(ev)}},handleTouchMove:function(ev){if(this.isDragging){ev.preventDefault()} 170this.handleMove(ev)},handleMouseMove:function(ev){this.handleMove(ev)},handleTouchScroll:function(ev){if(!this.isDragging){this.endInteraction(ev,!0)}},trigger:function(name){if(this.options[name]){this.options[name].apply(this,Array.prototype.slice.call(arguments,1
170))} 171if(this['_'+name]){this['_'+name].apply(this,Array.prototype.slice.call(arguments,1))}}});DragListener.mixin({isAutoScroll:!1,scrollBounds:null,scrollTopVel:null,scrollLeftVel:null,scrollIntervalId:null,scrollSensitivity:30,scrollSpeed:200,scrollIntervalMs:50,initAutoScroll:function(){var scrollEl=this.scrollEl;this.isAutoScroll=this.options.scroll&&scrollEl&&!scrollEl.is(window)&&!scrollEl.is(document);if(this.isAutoScroll){this.listenTo(scrollEl,'scroll',debounce(this.handleDebouncedScroll,100))}},destroyAutoScroll:function(){this.endAutoScroll();if(this.isAutoScroll){this.stopListeningTo(this.scrollEl,'scroll')}},computeScrollBounds:function(){if(this.isAutoScroll){this.scrollBounds=getOuterRect(this.scrollEl)}},updateAutoScroll:function(ev){var sensitivity=this.scrollSensitivity;var bounds=this.scrollBounds;var topCloseness,bottomCloseness;var leftCloseness,rightCloseness;var topVel=0;var leftVel=0;if(bounds){topCloseness=(sensitivity-(getEvY(ev)-bounds.top))/sensitivity;bottomCloseness=(sensitivity-(bounds.bottom-getEvY(ev)))/sensitivity;leftCloseness=(sensitivity-(getEvX(ev)-bounds.left))/sensitivity;rightCloseness=(sensitivity-(bounds.right-getEvX(ev)))/sensitivity;if(topCloseness>=0&&topCloseness<=1){topVel=topCloseness*this.scrollSpeed*-1}else if(bottomCloseness>=0&&bottomCloseness<=1){topVel=bottomCloseness*this.scrollSpeed} 172if(leftCloseness>=0&&leftCloseness<=1){leftVel=leftCloseness*this.scrollSpeed*-1}else if(rightCloseness>=0&&rightCloseness<=1){leftVel=rightCloseness*this.scrollSpeed}} 173this.setScrollVel(topVel,leftVel)},setScrollVel:function(topVel,leftVel){this.scrollTopVel=topVel;this.scrollLeftVel=leftVel;this.constrainScrollVel();if((this.scrollTopVel||this.scrollLeftVel)&&!this.scrollIntervalId){this.scrollIntervalId=setInterval(proxy(this,'scrollIntervalFunc'),this.scrollIntervalMs)}},constrainScrollVel:function(){var el=this.scrollEl;if(this.scrollTopVel<0){if(el.scrollTop()<=0){this.scrollTopVel=0}}else if(this.scrollTopVel>0){if(el.scrollTop()+el[0].clientHeight>=el[0].scrollHeight){this.scrollTopVel=0}} 174if(this.scrollLeftVel<0){if(el.scrollLeft()<=0){this.scrollLeftVel=0}}else if(this.scrollLeftVel>0){if(el.scrollLeft()+el[0].clientWidth>=el[0].scrollWidth){this.scrollLeftVel=0}}},scrollIntervalFunc:function(){var el=this.scrollEl;var frac=this.scrollIntervalMs/1000;if(this.scrollTopVel){el.scrollTop(el.scrollTop()+this.scrollTopVel*frac)} 175if(this.scrollLeftVel){el.scrollLeft(el.scrollLeft()+this.scrollLeftVel*frac)} 176this.constrainScrollVel();if(!this.scrollTopVel&&!this.scrollLeftVel){this.endAutoScroll()}},endAutoScroll:function(){if(this.scrollIntervalId){clearInterval(this.scrollIntervalId);this.scrollIntervalId=null;this.handleScrollEnd()}},handleDebouncedScroll:function(){if(!this.scrollIntervalId){this.handleScrollEnd()}},handleScrollEnd:function(){}});var HitDragListener=DragListener.extend({component:null,origHit:null,hit:null,coordAdjust:null,constructor:function(component,options){DragListener.call(this,options);this.component=component},handleInteractionStart:function(ev){var subjectEl=this.subjectEl;var subjectRect;var origPoint;var point;this.computeCoords();if(ev){origPoint={left:getEvX(ev),top:getEvY(ev)};point=origPoint;if(subjectEl){subjectRect=getOuterRect(subjectEl);point=constrainPoint(point,subjectRect)} 177this.origHit=this.queryHit(point.left,point.top);if(subjectEl&&this.options.subjectCenter){if(this.origHit){subjectRect=intersectRects(this.origHit,subjectRect)||subjectRect} 178point=getRectCenter(subjectRect)} 179this.coordAdjust=diffPoints(point,origPoint)}else{this.origHit=null;this.coordAdjust=null} 180DragListener.prototype.handleInteractionStart.apply(this,arguments)},computeCoords:function(){this.component.prepareHits();this.computeScrollBounds()},handleDragStart:function(ev){var hit;DragListener.prototype.handleDragStart.apply(this,arguments);hit=this.queryHit(getEvX(ev),getEvY(ev));if(hit){this.handleHitOver(hit)}},handleDrag:function(dx,dy,ev){var hit;DragListener.prototype.handleDrag.apply(this,arguments);hit=this.queryHit(getEvX(ev),getEvY(ev));if(!isHitsEqual(hit,this.hit)){if(this.hit){this.handleHitOut()} 181if(hit){this.handleHitOver(hit)}}},handleDragEnd:function(){this.handleHitDone();DragListener.prototype.handleDragEnd.apply(this,arguments)},handleHitOver:function(hit){var isOrig=isHitsEqual(hit,this.origHit);this.hit=hit;this.trigger('hitOver',this.hit,isOrig,this.origHit)},handleHitOut:function(){if(this.hit){this.trigger('hitOut',this.hit);this.handleHitDone();this.hit=null}},handleHitDone:function(){if(this.hit){this.trigger('hitDone',this.hit)}},handleInteractionEnd:function(){DragListener.prototype.handleInteractionEnd.apply(this,arguments);this.origHit=null;this.hit=null;this.component.releaseHits()},handleScrollEnd:function(){DragListener.prototype.handleScrollEnd.apply(this,arguments);this.computeCoords()},queryHit:function(left,top){if(this.coordAdjust){left+=this.coordAdjust.left;top+=this.coordAdjust.top} 182return this.component.queryHit(left,top)}});function isHitsEqual(hit0,hit1){if(!hit0&&!hit1){return!0} 183if(hit0&&hit1){return hit0.component===hit1.component&&isHitPropsWithin(hit0,hit1)&&isHitPropsWithin(hit1,hit0)} 184return!1} 185function isHitPropsWithin(subHit,superHit){for(var propName in subHit){if(!/^(component|left|right|top|bottom)$/.test(propName)){if(subHit[propName]!==superHit[propName]){return!1}}} 186return!0};var MouseFollower=Class.extend(ListenerMixin,{options:null,sourceEl:null,el:null,parentEl:null,top0:null,left0:null,y0:null,x0:null,topDelta:null,leftDelta:null,isFollowing:!1,isHidden:!1,isAnimating:!1,constructor:function(sourceEl,options){this.options=options=options||{};this.sourceEl=sourceEl;this.parentEl=options.parentEl?$(options.parentEl):sourceEl.parent()},start:function(ev){if(!this.isFollowing){this.isFollowing=!0;this.y0=getEvY(ev);this.x0=getEvX(ev);this.topDelta=0;this.leftDelta=0;if(!this.isHidden){this.updatePosition()} 187if(getEvIsTouch(ev)){this.listenTo($(document),'touchmove',this.handleMove)}else{this.listenTo($(document),'mousemove',this.handleMove)}}},stop:function(shouldRevert,callback){var _this=this;var revertDuration=this.options.revertDuration;function complete(){_this.isAnimating=!1;_this.removeElement();_this.top0=_this.left0=null;if(callback){callback()}} 188if(this.isFollowing&&!this.isAnimating){this.isFollowing=!1;this.stopListeningTo($(document));if(shouldRevert&&revertDuration&&!this.isHidden){this.isAnimating=!0;this.el.animate({top:this.top0,left:this.left0},{duration:revertDuration,complete:complete})}else{complete()}}},getEl:function(){var el=this.el;if(!el){el=this.el=this.sourceEl.clone().addClass(this.options.additionalClass||'').css({position:'absolute',visibility:'',display:this.isHidden?'none':'',margin:0,right:'auto',bottom:'auto',width:this.sourceEl.width(),height:this.sourceEl.height(),opacity:this.options.opacity||'',zIndex:this.options.zIndex});el.addClass('fc-unselectable');el.appendTo(this.parentEl)} 189return el},removeElement:function(){if(this.el){this.el.remove();this.el=null}},updatePosition:function(){var sourceOffset;var origin;this.getEl();if(this.top0===null){sourceOffset=this.sourceEl.offset();origin=this.el.offsetParent().offset();this.top0=sourceOffset.top-origin.top;this.left0=sourceOffset.left-origin.left} 190this.el.css({top:this.top0+this.topDelta,left:this.left0+this.leftDelta})},handleMove:function(ev){this.topDelta=getEvY(ev)-this.y0;this.leftDelta=getEvX(ev)-this.x0;if(!this.isHidden){this.updatePosition()}},hide:function(){if(!this.isHidden){this.isHidden=!0;if(this.el){this.el.hide()}}},show:function(){if(this.isHidden){this.isHidden=!1;this.updatePosition();this.getEl().show()}}});var Grid=FC.Grid=Class.extend(ListenerMixin,MouseIgnorerMixin,{hasDayInteractions:!0,view:null,isRTL:null,
190start:null,end:null,el:null,elsByFill:null,eventTimeFormat:null,displayEventTime:null,displayEventEnd:null,minResizeDuration:null,largeUnit:null,dayDragListener:null,segDragListener:null,segResizeListener:null,externalDragListener:null,constructor:function(view){this.view=view;this.isRTL=view.opt('isRTL');this.elsByFill={};this.dayDragListener=this.buildDayDragListener();this.initMouseIgnoring()},computeEventTimeFormat:function(){return this.view.opt('smallTimeFormat')},computeDisplayEventTime:function(){return!0},computeDisplayEventEnd:function(){return!0},setRange:function(range){this.start=range.start.clone();this.end=range.end.clone();this.rangeUpdated();this.processRangeOptions()},rangeUpdated:function(){},processRangeOptions:function(){var view=this.view;var displayEventTime;var displayEventEnd;this.eventTimeFormat=view.opt('eventTimeFormat')||view.opt('timeFormat')||this.computeEventTimeFormat();displayEventTime=view.opt('displayEventTime');if(displayEventTime==null){displayEventTime=this.computeDisplayEventTime()} 191displayEventEnd=view.opt('displayEventEnd');if(displayEventEnd==null){displayEventEnd=this.computeDisplayEventEnd()} 192this.displayEventTime=displayEventTime;this.displayEventEnd=displayEventEnd},spanToSegs:function(span){},diffDates:function(a,b){if(this.largeUnit){return diffByUnit(a,b,this.largeUnit)}else{return diffDayTime(a,b)}},prepareHits:function(){},releaseHits:function(){},queryHit:function(leftOffset,topOffset){},getHitSpan:function(hit){},getHitEl:function(hit){},setElement:function(el){this.el=el;if(this.hasDayInteractions){preventSelection(el);this.bindDayHandler('touchstart',this.dayTouchStart);this.bindDayHandler('mousedown',this.dayMousedown)} 193this.bindSegHandlers();this.bindGlobalHandlers()},bindDayHandler:function(name,handler){var _this=this;this.el.on(name,function(ev){if(!$(ev.target).is(_this.segSelector+','+_this.segSelector+' *,'+'.fc-more,'+'a[data-goto]')){return handler.call(_this,ev)}})},removeElement:function(){this.unbindGlobalHandlers();this.clearDragListeners();this.el.remove()},renderSkeleton:function(){},renderDates:function(){},unrenderDates:function(){},bindGlobalHandlers:function(){this.listenTo($(document),{dragstart:this.externalDragStart,sortstart:this.externalDragStart})},unbindGlobalHandlers:function(){this.stopListeningTo($(document))},dayMousedown:function(ev){if(!this.isIgnoringMouse){this.dayDragListener.startInteraction(ev,{})}},dayTouchStart:function(ev){var view=this.view;var selectLongPressDelay=view.opt('selectLongPressDelay');if(view.isSelected||view.selectedEvent){this.tempIgnoreMouse()} 194if(selectLongPressDelay==null){selectLongPressDelay=view.opt('longPressDelay')} 195this.dayDragListener.startInteraction(ev,{delay:selectLongPressDelay})},buildDayDragListener:function(){var _this=this;var view=this.view;var isSelectable=view.opt('selectable');var dayClickHit;var selectionSpan;var dragListener=new HitDragListener(this,{scroll:view.opt('dragScroll'),interactionStart:function(){dayClickHit=dragListener.origHit;selectionSpan=null},dragStart:function(){view.unselect()},hitOver:function(hit,isOrig,origHit){if(origHit){if(!isOrig){dayClickHit=null} 196if(isSelectable){selectionSpan=_this.computeSelection(_this.getHitSpan(origHit),_this.getHitSpan(hit));if(selectionSpan){_this.renderSelection(selectionSpan)}else if(selectionSpan===!1){disableCursor()}}}},hitOut:function(){dayClickHit=null;selectionSpan=null;_this.unrenderSelection()},hitDone:function(){enableCursor()},interactionEnd:function(ev,isCancelled){if(!isCancelled){if(dayClickHit&&!_this.isIgnoringMouse){view.triggerDayClick(_this.getHitSpan(dayClickHit),_this.getHitEl(dayClickHit),ev)} 197if(selectionSpan){view.reportSelection(selectionSpan,ev)}}}});return dragListener},clearDragListeners:function(){this.dayDragListener.endInteraction();if(this.segDragListener){this.segDragListener.endInteraction()} 198if(this.segResizeListener){this.segResizeListener.endInteraction()} 199if(this.externalDragListener){this.externalDragListener.endInteraction()}},renderEventLocationHelper:function(eventLocation,sourceSeg){var fakeEvent=this.fabricateHelperEvent(eventLocation,sourceSeg);return this.renderHelper(fakeEvent,sourceSeg)},fabricateHelperEvent:function(eventLocation,sourceSeg){var fakeEvent=sourceSeg?createObject(sourceSeg.event):{};
199fakeEvent.start=eventLocation.start.clone();fakeEvent.end=eventLocation.end?eventLocation.end.clone():null;fakeEvent.allDay=null;this.view.calendar.normalizeEventDates(fakeEvent);fakeEvent.className=(fakeEvent.className||[]).concat('fc-helper');if(!sourceSeg){fakeEvent.editable=!1} 200return fakeEvent},renderHelper:function(eventLocation,sourceSeg){},unrenderHelper:function(){},renderSelection:function(span){this.renderHighlight(span)},unrenderSelection:function(){this.unrenderHighlight()},computeSelection:function(span0,span1){var span=this.computeSelectionSpan(span0,span1);if(span&&!this.view.calendar.isSelectionSpanAllowed(span)){return!1} 201return span},computeSelectionSpan:function(span0,span1){var dates=[span0.start,span0.end,span1.start,span1.end];dates.sort(compareNumbers);return{start:dates[0].clone(),end:dates[3].clone()}},renderHighlight:function(span){this.renderFill('highlight',this.spanToSegs(span))},unrenderHighlight:function(){this.unrenderFill('highlight')},highlightSegClasses:function(){return['fc-highlight']},renderBusinessHours:function(){},unrenderBusinessHours:function(){},getNowIndicatorUnit:function(){},renderNowIndicator:function(date){},unrenderNowIndicator:function(){},renderFill:function(type,segs){},unrenderFill:function(type){var el=this.elsByFill[type];if(el){el.remove();delete this.elsByFill[type]}},renderFillSegEls:function(type,segs){var _this=this;var segElMethod=this[type+'SegEl'];var html='';var renderedSegs=[];var i;if(segs.length){for(i=0;i<segs.length;i++){html+=this.fillSegHtml(type,segs[i])} 202$(html).each(function(i,node){var seg=segs[i];var el=$(node);if(segElMethod){el=segElMethod.call(_this,seg,el)} 203if(el){el=$(el);if(el.is(_this.fillSegTag)){seg.el=el;renderedSegs.push(seg)}}})} 204return renderedSegs},fillSegTag:'div',fillSegHtml:function(type,seg){var classesMethod=this[type+'SegClasses'];var cssMethod=this[type+'SegCss'];var classes=classesMethod?classesMethod.call(this,seg):[];var css=cssToStr(cssMethod?cssMethod.call(this,seg):{});return'<'+this.fillSegTag+(classes.length?' class="'+classes.join(' ')+'"':'')+(css?' style="'+css+'"':'')+' />'},getDayClasses:function(date,noThemeHighlight){var view=this.view;var today=view.calendar.getNow();var classes=['fc-'+dayIDs[date.day()]];if(view.intervalDuration.as('months')==1&&date.month()!=view.intervalStart.month()){classes.push('fc-other-month')} 205if(date.isSame(today,'day')){classes.push('fc-today');if(noThemeHighlight!==!0){classes.push(view.highlightStateClass)}}else if(date<today){classes.push('fc-past')}else{classes.push('fc-future')} 206return classes}});Grid.mixin({segSelector:'.fc-event-container > *',mousedOverSeg:null,isDraggingSeg:!1,isResizingSeg:!1,isDraggingExter
206nal:!1,segs:null,renderEvents:function(events){var bgEvents=[];var fgEvents=[];var i;for(i=0;i<events.length;i++){(isBgEvent(events[i])?bgEvents:fgEvents).push(events[i])} 207this.segs=[].concat(this.renderBgEvents(bgEvents),this.renderFgEvents(fgEvents))},renderBgEvents:function(events){var segs=this.eventsToSegs(events);return this.renderBgSegs(segs)||segs},renderFgEvents:function(events){var segs=this.eventsToSegs(events);return this.renderFgSegs(segs)||segs},unrenderEvents:function(){this.handleSegMouseout();this.clearDragListeners();this.unrenderFgSegs();this.unrenderBgSegs();this.segs=null},getEventSegs:function(){return this.segs||[]},renderFgSegs:function(segs){},unrenderFgSegs:function(){},renderFgSegEls:function(segs,disableResizing){var view=this.view;var html='';var renderedSegs=[];var i;if(segs.length){for(i=0;i<segs.length;i++){html+=this.fgSegHtml(segs[i],disableResizing)} 208$(html).each(function(i,node){var seg=segs[i];var el=view.resolveEventEl(seg.event,$(node));if(el){el.data('fc-seg',seg);seg.el=el;renderedSegs.push(seg)}})} 209return renderedSegs},fgSegHtml:function(seg,disableResizing){},renderBgSegs:function(segs){return this.renderFill('bgEvent',segs)},unrenderBgSegs:function(){this.unrenderFill('bgEvent')},bgEventSegEl:function(seg,el){return this.view.resolveEventEl(seg.event,el)},bgEventSegClasses:function(seg){var event=seg.event;var source=event.source||{};return['fc-bgevent'].concat(event.className,source.className||[])},bgEventSegCss:function(seg){return{'background-color':this.getSegSkinCss(seg)['background-color']}},businessHoursSegClasses:function(seg){return['fc-nonbusiness','fc-bgevent']},buildBusinessHourSegs:function(wholeDay,businessHours){return this.eventsToSegs(this.buildBusinessHourEvents(wholeDay,businessHours))},buildBusinessHourEvents:function(wholeDay,businessHours){var calendar=this.view.calendar;var events;if(businessHours==null){businessHours=calendar.options.businessHours} 210events=calendar.computeBusinessHourEvents(wholeDay,businessHours);if(!events.length&&businessHours){events=[$.extend({},BUSINESS_HOUR_EVENT_DEFAULTS,{start:this.view.end,end:this.view.end,dow:null})]} 211return events},bindSegHandlers:function(){this.bindSegHandlersToEl(this.el)},bindSegHandlersToEl:function(el){this.bindSegHandlerToEl(el,'touchstart',this.handleSegTouchStart);this.bindSegHandlerToEl(el,'touchend',this.handleSegTouchEnd);this.bindSegHandlerToEl(el,'mouseenter',this.handleSegMouseover);this.bindSegHandlerToEl(el,'mouseleave',this.handleSegMouseout);this.bindSegHandlerToEl(el,'mousedown',this.handleSegMousedown);this.bindSegHandlerToEl(el,'click',this.handleSegClick)},bindSegHandlerToEl:function(el,name,handler){var _this=this;el.on(name,this.segSelector,function(ev){var seg=$(this).data('fc-seg');if(seg&&!_this.isDraggingSeg&&!_this.isResizingSeg){return handler.call(_this,seg,ev)}})},handleSegClick:function(seg,ev){var res=this.view.publiclyTrigger('eventClick',seg.el[0],seg.event,ev);if(res===!1){ev.preventDefault()}},handleSegMouseover:function(seg,ev){if(!this.isIgnoringMouse&&!this.mousedOverSeg){this.mousedOverSeg=seg;if(this.view.isEventResizable(seg.event)){seg.el.addClass('fc-allow-mouse-resize')} 212this.view.publiclyTrigger('eventMouseover',seg.el[0],seg.event,ev)}},handleSegMouseout:function(seg,ev){ev=ev||{};if(this.mousedOverSeg){seg=seg||this.mousedOverSeg;this.mousedOverSeg=null;if(this.view.isEventResizable(seg.event)){seg.el.removeClass('fc-allow-mouse-resize')} 213this.view.publiclyTrigger('eventMouseout',seg.el[0],seg.event,ev)}},handleSegMousedown:function(seg,ev){var isResizing=this.startSegResize(seg,ev,{distance:5});if(!isResizing&&this.view.isEventDraggable(seg.event)){this.buildSegDragListener(seg).startInteraction(ev,{distance:5})}},handleSegTouchStart:function(seg,ev){var view=this.view;var event=seg.event;var isSelected=view.isEventSelected(event);var isDraggable=view.isEventDraggable(event);var isResizable=view.isEventResizable(event);var isResizing=!1;var dragListener;var eventLongPressDelay;if(isSelected&&isResizable){isResizing=this.startSegResize(seg,ev)} 214if(!isResizing&&(isDraggable||isResizable)){eventLongPressDelay=view.opt('eventLongPressDelay');if(eventLongPressDelay==null){eventLongPressDelay=view.opt('longPressDelay')} 215dragListener=isDraggable?this.buildSegDragListener(seg):this.buildSegSelectListener(seg);dragListener.startInteraction(ev,{delay:isSelected?0:eventLongPressDelay})} 216this.tempIgnoreMouse()},handleSegTouchEnd:function(seg,ev){this.tempIgnoreMouse()},startSegResize:function(seg,ev,dragOptions){if($(ev.target).is('.fc-resizer')){this.buildSegResizeListener(seg,$(ev.target).is('.fc-start-resizer')).startInteraction(ev,dragOptions);return!0} 217return!1},buildSegDragListener:function(seg){var _this=this;var view=this.view;var calendar=view.calendar;var el=seg.el;var event=seg.event;var isDragging;var mouseFollower;var dropLocation;if(this.segDragListener){return this.segDragListener} 218var dragListener=this.segDragListener=new HitDragListener(view,{scroll:view.opt('dragScroll'),subjectEl:el,subjectCenter:!0,interactionStart:function(ev){seg.component=_this;isDragging=!1;mouseFollower=new MouseFollower(seg.el,{additionalClass:'fc-dragging',parentEl:view.el,opacity:dragListener.isTouch?null:view.opt('dragOpacity'),revertDuration:view.opt('dragRevertDuration'),zIndex:2});mouseFollower.hide();mouseFollower.start(ev)},dragStart:function(ev){if(dragListener.isTouch&&!view.isEventSelected(event)){view.selectEvent(event)} 219isDragging=!0;_this.handleSegMouseout(seg,ev);_this.segDragStart(seg,ev);view.hideEvent(event)},hitOver:function(hit,isOrig,origHit){var dragHelperEls;if(seg.hit){origHit=seg.hit} 220dropLocation=_this.computeEventDrop(origHit.component.getHitSpan(origHit),hit.component.getHitSpan(hit),event);if(dropLocation&&!calendar.isEventSpanAllowed(_this.eventToSpan(dropLocation),event)){disableCursor(
220);dropLocation=null} 221if(dropLocation&&(dragHelperEls=view.renderDrag(dropLocation,seg))){dragHelperEls.addClass('fc-dragging');if(!dragListener.isTouch){_this.applyDragOpacity(dragHelperEls)} 222mouseFollower.hide()}else{mouseFollower.show()} 223if(isOrig){dropLocation=null}},hitOut:function(){view.unrenderDrag();mouseFollower.show();dropLocation=null},hitDone:function(){enableCursor()},interactionEnd:function(ev){delete seg.component;mouseFollower.stop(!dropLocation,function(){if(isDragging){view.unrenderDrag();_this.segDragStop(seg,ev)} 224if(dropLocation){view.reportEventDrop(event,dropLocation,_this.largeUnit,el,ev)}else{view.showEvent(event)}});_this.segDragListener=null}});return dragListener},buildSegSelectListener:function(seg){var _this=this;var view=this.view;var event=seg.event;if(this.segDragListener){return this.segDragListener} 225var dragListener=this.segDragListener=new DragListener({dragStart:function(ev){if(dragListener.isTouch&&!view.isEventSelected(event)){view.selectEvent(event)}},interactionEnd:function(ev){_this.segDragListener=null}});return dragListener},segDragStart:function(seg,ev){this.isDraggingSeg=!0;this.view.publiclyTrigger('eventDragStart',seg.el[0],seg.event,ev,{})},segDragStop:function(seg,ev){this.isDraggingSeg=!1;this.view.publiclyTrigger('eventDragStop',seg.el[0],seg.event,ev,{})},computeEventDrop:function(startSpan,endSpan,event){var calendar=this.view.calendar;var dragStart=startSpan.start;var dragEnd=endSpan.start;var delta;var dropLocation;if(dragStart.hasTime()===dragEnd.hasTime()){delta=this.diffDates(dragEnd,dragStart);if(event.allDay&&durationHasTime(delta)){dropLocation={start:event.start.clone(),end:calendar.getEventEnd(event),allDay:!1};calendar.normalizeEventTimes(dropLocation)}else{dropLocation=pluckEventDateProps(event)} 226dropLocation.start.add(delta);if(dropLocation.end){dropLocation.end.add(delta)}}else{dropLocation={start:dragEnd.clone(),end:null,allDay:!dragEnd.hasTime()}} 227return dropLocation},applyDragOpacity:function(els){var opacity=this.view.opt('dragOpacity');if(opacity!=null){els.css('opacity',opacity)}},externalDragStart:function(ev,ui){var view=this.view;var el;var accept;if(view.opt('droppable')){el=$((ui?ui.item:null)||ev.target);accept=view.opt('dropAccept');if($.isFunction(accept)?accept.call(el[0],el):el.is(accept)){if(!this.isDraggingExter
227nal){this.listenToExternalDrag(el,ev,ui)}}}},listenToExternalDrag:function(el,ev,ui){var _this=this;var calendar=this.view.calendar;var meta=getDraggedElMeta(el);var dropLocation;var dragListener=_this.externalDragListener=new HitDragListener(this,{interactionStart:function(){_this.isDraggingExternal=!0},hitOver:function(hit){dropLocation=_this.computeExternalDrop(hit.component.getHitSpan(hit),meta);if(dropLocation&&!calendar.isExternalSpanAllowed(_this.eventToSpan(dropLocation),dropLocation,meta.eventProps)){disableCursor();dropLocation=null} 228if(dropLocation){_this.renderDrag(dropLocation)}},hitOut:function(){dropLocation=null},hitDone:function(){enableCursor();_this.unrenderDrag()},interactionEnd:function(ev){if(dropLocation){_this.view.reportExternalDrop(meta,dropLocation,el,ev,ui)} 229_this.isDraggingExternal=!1;_this.externalDragListener=null}});dragListener.startDrag(ev)},computeExternalDrop:function(span,meta){var calendar=this.view.calendar;var dropLocation={start:calendar.applyTimezone(span.start),end:null};if(meta.startTime&&!dropLocation.start.hasTime()){dropLocation.start.time(meta.startTime)} 230if(meta.duration){dropLocation.end=dropLocation.start.clone().add(meta.duration)} 231return dropLocation},renderDrag:function(dropLocation,seg){},unrenderDrag:function(){},buildSegResizeListener:function(seg,isStart){var _this=this;var view=this.view;var calendar=view.calendar;var el=seg.el;var event=seg.event;var eventEnd=calendar.getEventEnd(event);var isDragging;var resizeLocation;var dragListener=this.segResizeListener=new HitDragListener(this,{scroll:view.opt('dragScroll'),subjectEl:el,interactionStart:function(){isDragging=!1},dragStart:function(ev){isDragging=!0;_this.handleSegMouseout(seg,ev);_this.segResizeStart(seg,ev)},hitOver:function(hit,isOrig,origHit){var origHitSpan=_this.getHitSpan(origHit);var hitSpan=_this.getHitSpan(hit);resizeLocation=isStart?_this.computeEventStartResize(origHitSpan,hitSpan,event):_this.computeEventEndResize(origHitSpan,hitSpan,event);if(resizeLocation){if(!calendar.isEventSpanAllowed(_this.eventToSpan(resizeLocation),event)){disableCursor();resizeLocation=null}else if(resizeLocation.start.isSame(event.start.clone().stripZone())&&resizeLocation.end.isSame(eventEnd.clone().stripZone())){resizeLocation=null}} 232if(resizeLocation){view.hideEvent(event);_this.renderEventResize(resizeLocation,seg)}},hitOut:function(){resizeLocation=null;view.showEvent(event)},hitDone:function(){_this.unrenderEventResize();enableCursor()},interactionEnd:function(ev){if(isDragging){_this.segResizeStop(seg,ev)} 233if(resizeLocation){view.reportEventResize(event,resizeLocation,_this.largeUnit,el,ev)}else{view.showEvent(event)} 234_this.segResizeListener=null}});return dragListener},segResizeStart:function(seg,ev){this.isResizingSeg=!0;this.view.publiclyTrigger('eventResizeStart',seg.el[0],seg.event,ev,{})},segResizeStop:function(seg,ev){this.isResizingSeg=!1;this.view.publiclyTrigger('eventResizeStop',seg.el[0],seg.event,ev,{})},computeEventStartResize:function(startSpan,endSpan,event){return this.computeEventResize('start',startSpan,endSpan,event)},computeEventEndResize:function(startSpan,endSpan,event){return this.computeEventResize('end',startSpan,endSpan,event)},computeEventResize:function(type,startSpan,endSpan,event){var calendar=this.view.calendar;var delta=this.diffDates(endSpan[type],startSpan[type]);var resizeLocation;var defaultDuration;resizeLocation={start:event.start.clone(),end:calendar.getEventEnd(event),allDay:event.allDay};if(resizeLocation.allDay&&durationHasTime(delta)){resizeLocation.allDay=!1;calendar.normalizeEventTimes(resizeLocation)} 235resizeLocation[type].add(delta);if(!resizeLocation.start.isBefore(resizeLocation.end)){defaultDuration=this.minResizeDuration||(event.allDay?calendar.defaultAllDayEventDuration:calendar.defaultTimedEventDuration);if(type=='start'){resizeLocation.start=resizeLocation.end.clone().subtract(defaultDuration)}else{resizeLocation.end=resizeLocation.start.clone().add(defaultDuration)}} 236return resizeLocation},renderEventResize:function(range,seg){},unrenderEventResize:function(){},getEventTimeText:function(range,formatStr,displayEnd){if(formatStr==null){formatStr=this.eventTimeFormat} 237if(displayEnd==null){displayEnd=this.displayEventEnd} 238if(this.displayEventTime&&range.start.hasTime()){if(displayEnd&&range.end){return this.view.formatRange(range,formatStr)}else{return range.start.format(formatStr)}} 239return''},getSegClasses:function(seg,isDraggable,isResizable){var view=this.view;var classes=['fc-event',seg.isStart?'fc-start':'fc-not-start',seg.isEnd?'fc-end':'fc-not-end'].concat(this.getSegCustomClasses(seg));if(isDraggable){classes.push('fc-draggable')} 240if(isResizable){classes.push('fc-resizable')} 241if(view.isEventSelected(seg.event)){classes.push('fc-selected')} 242return classes},getSegCustomClasses:function(seg){var event=seg.event;return[].concat(event.className,event.source?event.source.className:[])},getSegSkinCss:function(seg){return{'background-color':this.getSegBackgroun
242dColor(seg),'border-color':this.getSegBorderColor(seg),color:this.getSegTextColor(seg)}},getSegBackgroundColor:function(seg){return seg.event.backgroundColor||seg.event.color||this.getSegDefaultBackgroundColor(seg)},getSegDefaultBackgroundColor:function(seg){var source=seg.event.source||{};return source.backgroundColor||source.color||this.view.opt('eventBackgroundColor')||this.view.opt('eventColor')},getSegBorderColor:function(seg){return seg.event.borderColor||seg.event.color||this.getSegDefaultBorderColor(seg)},getSegDefaultBorderColor:function(seg){var source=seg.event.source||{};return source.borderColor||source.color||this.view.opt('eventBorderColor')||this.view.opt('eventColor')},getSegTextColor:function(seg){return seg.event.textColor||this.getSegDefaultTextColor(seg)},getSegDefaultTextColor:function(seg){var source=seg.event.source||{};return source.textColor||this.view.opt('eventTextColor')},eventToSegs:function(event){return this.eventsToSegs([event])},eventToSpan:function(event){return this.eventToSpans(event)[0]},eventToSpans:function(event){var range=this.eventToRange(event);return this.eventRangeToSpans(range,event)},eventsToSegs:function(allEvents,segSliceFunc){var _this=this;var eventsById=groupEventsById(allEvents);var segs=[];$.each(eventsById,function(id,events){var ranges=[];var i;for(i=0;i<events.length;i++){ranges.push(_this.eventToRange(events[i]))} 243if(isInverseBgEvent(events[0])){ranges=_this.invertRanges(ranges);for(i=0;i<ranges.length;i++){segs.push.apply(segs,_this.eventRangeToSegs(ranges[i],events[0],segSliceFunc))}}else{for(i=0;i<ranges.length;i++){segs.push.apply(segs,_this.eventRangeToSegs(ranges[i],events[i],segSliceFunc))}}});return segs},eventToRange:function(event){var calendar=this.view.calendar;var start=event.start.clone().stripZone();var end=(event.end?event.end.clone():calendar.getDefaultEventEnd(event.allDay!=null?event.allDay:!event.start.hasTime(),event.start)).stripZone();calendar.localizeMoment(start);calendar.localizeMoment(end);return{start:start,end:end}},eventRangeToSegs:function(range,event,segSliceFunc){var spans=this.eventRangeToSpans(range,event);var segs=[];var i;for(i=0;i<spans.length;i++){segs.push.apply(segs,this.eventSpanToSegs(spans[i],event,segSliceFunc))} 244return segs},eventRangeToSpans:function(range,event){return[$.extend({},range)]},eventSpanToSegs:function(span,event,segSliceFunc){var segs=segSliceFunc?segSliceFunc(span):this.spanToSegs(span);var i,seg;for(i=0;i<segs.length;i++){seg=segs[i];seg.event=event;seg.eventStartMS=+span.start;seg.eventDurationMS=span.end-span.start} 245return segs},invertRanges:function(ranges){var view=this.view;var viewStart=view.start.clone();var viewEnd=view.end.clone();var inverseRanges=[];var start=viewStart;var i,range;ranges.sort(compareRanges);for(i=0;i<ranges.length;i++){range=ranges[i];if(range.start>start){inverseRanges.push({start:start,end:range.start})} 246start=range.end} 247if(start<viewEnd){inverseRanges.push({start:start,end:viewEnd})} 248return inverseRanges},sortEventSegs:function(segs){segs.sort(proxy(this,'compareEventSegs'))},compareEventSegs:function(seg1,seg2){return seg1.eventStartMS-seg2.eventStartMS||seg2.eventDurationMS-seg1.eventDurationMS||seg2.event.allDay-seg1.event.allDay||compareByFieldSpecs(seg1.event,seg2.event,this.view.eventOrderSpecs)}});function pluckEventDateProps(event){return{start:event.start.clone(),end:event.end?event.end.clone():null,allDay:event.allDay}} 249FC.pluckEventDateProps=pluckEventDateProps;function isBgEvent(event){var rendering=getEventRendering(event);return rendering==='background'||rendering==='inverse-background'} 250FC.isBgEvent=isBgEvent;function isInverseBgEvent(event){return getEventRendering(event)==='inverse-background'} 251function getEventRendering(event){return firstDefined((event.source||{}).rendering,event.rendering)} 252function groupEventsById(events){var eventsById={};var i,event;for(i=0;i<events.length;i++){event=events[i];(eventsById[event._id]||(eventsById[event._id]=[])).push(event)} 253return eventsById} 254function compareRanges(range1,range2){return range1.start-range2.start} 255FC.dataAttrPrefix='';function getDraggedElMeta(el){var prefix=FC.dataAttrPrefix;var eventProps;var startTime;var duration;var stick;if(prefix){prefix+='-'} 256eventProps=el.data(prefix+'event')||null;if(eventProps){if(typeof eventProps==='object'){eventProps=$.extend({},eventProps)}else{eventProps={}} 257startTime=eventProps.start;if(startTime==null){startTime=eventProps.time} 258duration=eventProps.duration;stick=eventProps.stick;delete eventProps.start;delete eventProps.time;delete eventProps.duration;delete eventProps.stick} 259if(startTime==null){startTime=el.data(prefix+'start')} 260if(startTime==null){startTime=el.data(prefix+'time')} 261if(duration==null){duration=el.data(prefix+'duration')} 262if(stick==null){stick=el.data(prefix+'stick')} 263startTime=startTime!=null?moment.duration(startTime):null;duration=duration!=null?moment.duration(duration):null;stick=Boolean(stick);return{eventProps:eventProps,startTime:startTime,duration:duration,stick:stick}};var DayTableMixin=FC.DayTableMixin={breakOnWeeks:!1,dayDates:null,dayIndices:null,daysPerRow:null,rowCnt:null,colCnt:null,colHeadFormat:null,updateDayTable:function(){var view=this.view;var date=this.start.clone();var dayIndex=-1;var dayIndices=[];var dayDates=[];var daysPerRow;var firstDay;var rowCnt;
263while(date.isBefore(this.end)){if(view.isHiddenDay(date)){dayIndices.push(dayIndex+0.5)}else{dayIndex++;dayIndices.push(dayIndex);dayDates.push(date.clone())} 264date.add(1,'days')} 265if(this.breakOnWeeks){firstDay=dayDates[0].day();for(daysPerRow=1;daysPerRow<dayDates.length;daysPerRow++){if(dayDates[daysPerRow].day()==firstDay){break}} 266rowCnt=Math.ceil(dayDates.length/daysPerRow)}else{rowCnt=1;daysPerRow=dayDates.length} 267this.dayDates=dayDates;this.dayIndices=dayIndices;this.daysPerRow=daysPerRow;this.rowCnt=rowCnt;this.updateDayTableCols()},updateDayTableCols:function(){this.colCnt=this.computeColCnt();this.colHeadFormat=this.view.opt('columnFormat')||this.computeColHeadFormat()},computeColCnt:function(){return this.daysPerRow},getCellDate:function(row,col){return this.dayDates[this.getCellDayIndex(row,col)].clone()},getCellRange:function(row,col){var start=this.getCellDate(row,col);var end=start.clone().add(1,'days');return{start:start,end:end}},getCellDayIndex:function(row,col){return row*this.daysPerRow+this.getColDayIndex(col)},getColDayIndex:function(col){if(this.isRTL){return this.colCnt-1-col}else{return col}},getDateDayIndex:function(date){var dayIndices=this.dayIndices;var dayOffset=date.diff(this.start,'days');if(dayOffset<0){return dayIndices[0]-1}else if(dayOffset>=dayIndices.length){return dayIndices[dayIndices.length-1]+1}else{return dayIndices[dayOffset]}},computeColHeadFormat:function(){if(this.rowCnt>1||this.colCnt>10){return'ddd'}else if(this.colCnt>1){return this.view.opt('dayOfMonthFormat')}else{return'dddd'}},sliceRangeByRow:function(range){var daysPerRow=this.daysPerRow;var normalRange=this.view.computeDayRange(range);var rangeFirst=this.getDateDayIndex(normalRange.start);var rangeLast=this.getDateDayIndex(normalRange.end.clone().subtract(1,'days'));var segs=[];var row;var rowFirst,rowLast;var segFirst,segLast;for(row=0;row<this.rowCnt;row++){rowFirst=row*daysPerRow;rowLast=rowFirst+daysPerRow-1;segFirst=Math.max(rangeFirst,rowFirst);segLast=Math.min(rangeLast,rowLast);segFirst=Math.ceil(segFirst);segLast=Math.floor(segLast);if(segFirst<=segLast){segs.push({row:row,firstRowDayIndex:segFirst-rowFirst,lastRowDayIndex:segLast-rowFirst,isStart:segFirst===rangeFirst,isEnd:segLast===rangeLast})}} 268return segs},sliceRangeByDay:function(range){var daysPerRow=this.daysPerRow;var normalRange=this.view.computeDayRange(range);var rangeFirst=this.getDateDayIndex(normalRange.start);var rangeLast=this.getDateDayIndex(normalRange.end.clone().subtract(1,'days'));var segs=[];var row;var rowFirst,rowLast;var i;var segFirst,segLast;for(row=0;row<this.rowCnt;row++){rowFirst=row*daysPerRow;rowLast=rowFirst+daysPerRow-1;for(i=rowFirst;i<=rowLast;i++){segFirst=Math.max(rangeFirst,i);segLast=Math.min(rangeLast,i);segFirst=Math.ceil(segFirst);segLast=Math.floor(segLast);if(segFirst<=segLast){segs.push({row:row,firstRowDayIndex:segFirst-rowFirst,lastRowDayIndex:segLast-rowFirst,isStart:segFirst===rangeFirst,isEnd:segLast===rangeLast})}}} 269return segs},renderHeadHtml:function(){var view=this.view;return''+'<div class="fc-row '+view.widgetHeaderClass+'">'+'<table>'+'<thead>'+this.renderHeadTrHtml()+'</thead>'+'</table>'+'</div>'},renderHeadIntroHtml:function(){return this.renderIntroHtml()},renderHeadTrHtml:function(){return''+'<tr>'+(this.isRTL?'':this.renderHeadIntroHtml())+this.renderHeadDateCellsHtml()+(this.isRTL?this.renderHeadIntroHtml():'')+'</tr>'},renderHeadDateCellsHtml:function(){var htmls=[];var col,date;for(col=0;col<this.colCnt;col++){date=this.getCellDate(0,col);htmls.push(this.renderHeadDateCellHtml(date))} 270return htmls.join('')},renderHeadDateCellHtml:function(date,colspan,otherAttrs){var view=this.view;var classNames=['fc-day-header',view.widgetHeaderClass];if(this.rowCnt===1){classNames=classNames.concat(this.getDayClasses(date,!0))}else{classNames.push('fc-'+dayIDs[date.day()])} 271return''+'<th class="'+classNames.join(' ')+'"'+(this.rowCnt===1?' data-date="'+date.format('YYYY-MM-DD')+'"':'')+(colspan>1?' colspan="'+colspan+'"':'')+(otherAttrs?' '+otherAttrs:'')+'>'+view.buildGotoAnchorHtml({date:date,forceOff:this.rowCnt>1||this.colCnt===1},htmlEscape(date.format(this.colHeadFormat)))+'</th>'},renderBgTrHtml:function(row){return''+'<tr>'+(this.isRTL?'':this.renderBgIntroHtml(row))+this.renderBgCellsHtml(row)+(this.isRTL?this.renderBgIntroHtml(row):'')+'</tr>'},renderBgIntroHtml:function(row){return this.renderIntroHtml()},renderBgCellsHtml:function(row){var htmls=[];var col,date;for(col=0;col<this.colCnt;col++){date=this.getCellDate(row,col);htmls.push(this.renderBgCellHtml(date))} 272return htmls.join('')},renderBgCellHtml:function(date,otherAttrs){var view=this.view;var classes=this.getDayClasses(date);classes.unshift('fc-day',view.widgetContentClass);return'<td class="'+classes.join(' ')+'"'+' data-date="'+date.format('YYYY-MM-DD')+'"'+(otherAttrs?' '+otherAttrs:'')+'></td>'},renderIntroHtml:function(){},bookendCells:function(trEl){var introHtml=this.renderIntroHtml();if(introHtml){if(this.isRTL){trEl.append(introHtml)}else{trEl.prepend(introHtml)}}}};var DayGrid=FC.DayGrid=Grid.extend(DayTableMixin,{numbersVisible:!1,bottomCoordPadding:0,rowEls:null,cellEls:null,helperEls:null,rowCoordCache:null,colCoordCache:null,renderDates:function(isRigid){var view=this.view;var rowCnt=this.rowCnt;var colCnt=this.colCnt;var html='';var row;var col;for(row=0;row<rowCnt;row++){html+=this.renderDayRowHtml(row,isRigid)} 273this.el.html(html);this.rowEls=this.el.find('.fc-row');this.cellEls=this.el.find('.fc-day');this.rowCoordCache=new CoordCache({els:this.rowEls,isVertical:!0});this.colCoordCache=new CoordCache({els:this.cellEls.slice(0,this.colCnt),isHorizontal:!0});for(row=0;row<rowCnt;row++){for(col=0;col<colCnt;col++){view.publiclyTrigger('dayRender',null,this.getCellDate(row,col),this.getCellEl(row,col))}}},unrenderDates:function(){this.removeSegPopover()},renderBusinessHours:function(){var segs=this.buildBusinessHourSegs(!0);this.renderFill('businessHours',segs,'bgevent')},unrenderBusinessHours:function(){this.unrenderFill('businessHours')},renderDayRowHtml:function(row,isRigid){var view=this.view;var classes=['fc-row','fc-week',view.widgetContentClass];if(isRigid){classes.push('fc-rigid')} 274return''+'<div class="'+classes.join(' ')+'">'+'<div class="fc-bg">'+'<table>'+this.renderBgTrHtml(row)+'</table>'+'</div>'+'<div class="fc-content-skeleton">'+'<table>'+(this.numbersVisible?'<thead>'+this.renderNumberTrHtml(row)+'</thead>':'')+'</table>'+'</div>'+'</div>'},renderNumberTrHtml:function(row){return''+'<tr>'+(this.isRTL?'':this.renderNumberIntroHtml(row))+this.renderNumberCellsHtml(row)+(this.isRTL?this.renderNumberIntroHtml(row):'')+'</tr>'},renderNumberIntroHtml:function(row){return this.renderIntroHtml()},renderNumberCellsHtml:function(row){var htmls=[];var col,date;for(col=0;col<this.colCnt;col++){date=this.getCellDate(row,col);htmls.push(this.renderNumberCellHtml(date))} 275return htmls.join('')},renderNumberCellHtml:function(date){var html='';var classes;var weekCalcFirstDoW;if(!this.view.dayNumbersVisible&&!this.view.cellWeekNumbersVisible){return'<td/>'}
276classes=this.getDayClasses(date);classes.unshift('fc-day-top');if(this.view.cellWeekNumbersVisible){if(date._locale._fullCalendar_weekCalc==='ISO'){weekCalcFirstDoW=1}else{weekCalcFirstDoW=date._locale.firstDayOfWeek()}} 277html+='<td class="'+classes.join(' ')+'" data-date="'+date.format()+'">';if(this.view.cellWeekNumbersVisible&&(date.day()==weekCalcFirstDoW)){html+=this.view.buildGotoAnchorHtml({date:date,type:'week'},{'class':'fc-week-number'},date.format('w'))} 278if(this.view.dayNumbersVisible){html+=this.view.buildGotoAnchorHtml(date,{'class':'fc-day-number'},date.date())} 279html+='</td>';return html},computeEventTimeFormat:function(){return this.view.opt('extraSmallTimeFormat')},computeDisplayEventEnd:function(){return this.colCnt==1},rangeUpdated:function(){this.updateDayTable()},spanToSegs:function(span){var segs=this.sliceRangeByRow(span);var i,seg;for(i=0;i<segs.length;i++){seg=segs[i];if(this.isRTL){seg.leftCol=this.daysPerRow-1-seg.lastRowDayIndex;seg.rightCol=this.daysPerRow-1-seg.firstRowDayIndex}else{seg.leftCol=seg.firstRowDayIndex;seg.rightCol=seg.lastRowDayIndex}} 280return segs},prepareHits:function(){this.colCoordCache.build();this.rowCoordCache.build();this.rowCoordCache.bottoms[this.rowCnt-1]+=this.bottomCoordPadding},releaseHits:function(){this.colCoordCache.clear();this.rowCoordCache.clear()},queryHit:function(leftOffset,topOffset){if(this.colCoordCache.isLeftInBounds(leftOffset)&&this.rowCoordCache.isTopInBounds(topOffset)){var col=this.colCoordCache.getHorizontalIndex(leftOffset);var row=this.rowCoordCache.getVerticalIndex(topOffset);if(row!=null&&col!=null){return this.getCellHit(row,col)}}},getHitSpan:function(hit){return this.getCellRange(hit.row,hit.col)},getHitEl:function(hit){return this.getCellEl(hit.row,hit.col)},getCellHit:function(row,col){return{row:row,col:col,component:this,left:this.colCoordCache.getLeftOffset(col),right:this.colCoordCache.getRightOffset(col),top:this.rowCoordCache.getTopOffset(row),bottom:this.rowCoordCache.getBottomOffset(row)}},getCellEl:function(row,col){return this.cellEls.eq(row*this.colCnt+col)},renderDrag:function(eventLocation,seg){this.renderHighlight(this.eventToSpan(eventLocation));if(seg&&seg.component!==this){return this.renderEventLocationHelper(eventLocation,seg)}},unrenderDrag:function(){this.unrenderHighlight();this.unrenderHelper()},renderEventResize:function(eventLocation,seg){this.renderHighlight(this.eventToSpan(eventLocation));return this.renderEventLocationHelper(eventLocation,seg)},unrenderEventResize:function(){this.unrenderHighlight();this.unrenderHelper()},renderHelper:function(event,sourceSeg){var helperNodes=[];var segs=this.eventToSegs(event);var rowStructs;segs=this.renderFgSegEls(segs);rowStructs=this.renderSegRows(segs);this.rowEls.each(function(row,rowNode){var rowEl=$(rowNode);var skeletonEl=$('<div class="fc-helper-skeleton"><table/></div>');var skeletonTop;if(sourceSeg&&sourceSeg.row===row){skeletonTop=sourceSeg.el.position().top}else{skeletonTop=rowEl.find('.fc-content-skeleton tbody').position().top} 281skeletonEl.css('top',skeletonTop).find('table').append(rowStructs[row].tbodyEl);rowEl.append(skeletonEl);helperNodes.push(skeletonEl[0])});return(this.helperEls=$(helperNodes))},unrenderHelper:function(){if(this.helperEls){this.helperEls.remove();this.helperEls=null}},fillSegTag:'td',renderFill:function(type,segs,className){var nodes=[];var i,seg;var skeletonEl;segs=this.renderFillSegEls(type,segs);for(i=0;i<segs.length;i++){seg=segs[i];skeletonEl=this.renderFillRow(type,seg,className);this.rowEls.eq(seg.row).append(skeletonEl);nodes.push(skeletonEl[0])} 282this.elsByFill[type]=$(nodes);return segs},renderFillRow:function(type,seg,className){var colCnt=this.colCnt;var startCol=seg.leftCol;var endCol=seg.rightCol+1;var skeletonEl;var trEl;className=className||type.toLowerCase();skeletonEl=$('<div class="fc-'+className+'-skeleton">'+'<table><tr/></table>'+'</div>');trEl=skeletonEl.find('tr');if(startCol>0){trEl.append('<td colspan="'+startCol+'"/>')} 283trEl.append(seg.el.attr('colspan',endCol-startCol));if(endCol<colCnt){trEl.append('<td colspan="'+(colCnt-endCol)+'"/>')} 284this.bookendCells(trEl);return skeletonEl}});DayGrid.mixin({rowStructs:null,unrenderEvents:function(){this.removeSegPopover();Grid.prototype.unrenderEvents.apply(this,arguments)},getEventSegs:function(){return Grid.prototype.getEventSegs.call(this).concat(this.popoverSegs||[])},renderBgSegs:function(segs){var allDaySegs=$.grep(segs,function(seg){return seg.event.allDay});return Grid.prototype.renderBgSegs.call(this,allDaySegs)},renderFgSegs:function(segs){var rowStructs;segs=this.renderFgSegEls(segs);rowStructs=this.rowStructs=this.renderSegRows(segs);this.rowEls.each(function(i,rowNode){$(rowNode).find('.fc-content-skeleton > table').append(rowStructs[i].tbodyEl)});return segs},unrenderFgSegs:function(){var rowStructs=this.rowStructs||[];var rowStruct;while((rowStruct=rowStructs.pop())){rowStruct.tbodyEl.remove()} 285this.rowStructs=null},renderSegRows:function(segs){var rowStructs=[];var segRows;var row;segRows=this.groupSegRows(segs);for(row=0;row<segRows.length;row++){rowStructs.push(this.renderSegRow(row,segRows[row]))} 286return rowStructs},fgSegHtml:function(seg,disableResizing){var view=this.view;var event=seg.event;var isDraggable=view.isEventDraggable(event);var isResizableFromStart=!disableResizing&&event.allDay&&seg.isStart&&view.isEventResizableFromStart(event);var isResizableFromEnd=!disableResizing&&event.allDay&&seg.isEnd&&view.isEventResizableFromEnd(event);var classes=this.getSegClasses(seg,isDraggable,isResizableFromStart||isResizableFromEnd);var skinCss=cssToStr(this.getSegSkinCss(seg));var timeHtml='';var timeText;var titleHtml;classes.unshift('fc-day-grid-event','fc-h-event');if(seg.isStart){timeText=this.getEventTimeText(event);if(timeText){timeHtml='<span class="fc-time">'+htmlEscape(timeText)+'</span>'}} 287titleHtml='<span class="fc-title">'+(htmlEscape(event.title||'')||' ')+'</span>';return'<a class="'+classes.join(' ')+'"'+(event.url?' href="'+htmlEscape(event.url)+'"':'')+(skinCss?' style="'+skinCss+'"':'')+'>'+'<div class="fc-content">'+(this.isRTL?titleHtml+' '+timeHtml:timeHtml+' '+titleHtml)+'</div>'+(isResizableFromStart?'<div class="fc-resizer fc-start-resizer" />':'')+(isResizableFromEnd?'<div class="fc-resizer fc-end-resizer" />':'')+'</a>'},renderSegRow:function(row,rowSegs){var colCnt=this.colCnt;var segLevels=this.buildSegLevels(rowSegs);var levelCnt=Math.max(1,segLevels.length);var tbody=$('<tbody/>');var segMatrix=[];var cellMatrix=[];var loneCellMatrix=[];var i,levelSegs;var col;var tr;var j,seg;var td;function emptyCellsUntil(endCol){while(col<endCol){td=(loneCellMatrix[i-1]||[])[col];if(td){td.attr('rowspan',parseInt(td.attr('rowspan')||1,10)+1)}else{td=$('<td/>');tr.append(td)} 288cellMatrix[i][col]=td;loneCellMatrix[i][col]=td;col++}} 289for(i=0;i<levelCnt;i++){levelSegs=segLevels[i];col=0;tr=$('<tr/>');segMatrix.push([]);cellMatrix.push([]);loneCellMatrix.push([]);if(levelSegs){for(j=0;j<levelSegs.length;j++){seg=levelSegs[j];emptyCellsUntil(seg.leftCol);td=$('<td class="fc-event-container"/>').append(seg.el);if(seg.leftCol!=seg.rightCol){td.attr('colspan',seg.rightCol-seg.leftCol+1)}else{loneCellMatrix[i][col]=td} 290while(col<=seg.rightCol){cellMatrix[i][col]=td;segMatrix[i][col]=seg;col++} 291tr.append(td)}} 292emptyCellsUntil(colCnt);this.bookendCells(tr);tbody.append(tr)} 293return{row:row,tbodyEl:tbody,cellMatrix:cellMatrix,segMatrix:segMatrix,segLevels:segLevels,segs:rowSegs}},buildSegLevels:function(segs){var levels=[];var i,seg;var j;this.sortEventSegs(segs);for(i=0;i<segs.length;i++){seg=segs[i];for(j=0;j<levels.length;
293j++){if(!isDaySegCollision(seg,levels[j])){break}} 294seg.level=j;(levels[j]||(levels[j]=[])).push(seg)} 295for(j=0;j<levels.length;j++){levels[j].sort(compareDaySegCols)} 296return levels},groupSegRows:function(segs){var segRows=[];var i;for(i=0;i<this.rowCnt;i++){segRows.push([])} 297for(i=0;i<segs.length;i++){segRows[segs[i].row].push(segs[i])} 298return segRows}});function isDaySegCollision(seg,otherSegs){var i,otherSeg;for(i=0;i<otherSegs.length;i++){otherSeg=otherSegs[i];if(otherSeg.leftCol<=seg.rightCol&&otherSeg.rightCol>=seg.leftCol){return!0}} 299return!1} 300function compareDaySegCols(a,b){return a.leftCol-b.leftCol};DayGrid.mixin({segPopover:null,popoverSegs:null,removeSegPopover:function(){if(this.segPopover){this.segPopover.hide()}},limitRows:function(levelLimit){var rowStructs=this.rowStructs||[];var row;var rowLevelLimit;for(row=0;row<rowStructs.length;row++){this.unlimitRow(row);if(!levelLimit){rowLevelLimit=!1}else if(typeof levelLimit==='number'){rowLevelLimit=levelLimit}else{rowLevelLimit=this.computeRowLevelLimit(row)} 301if(rowLevelLimit!==!1){this.limitRow(row,rowLevelLimit)}}},computeRowLevelLimit:function(row){var rowEl=this.rowEls.eq(row);var rowHeight=rowEl.height();var trEls=this.rowStructs[row].tbodyEl.children();var i,trEl;var trHeight;function iterInnerHeights(i,childNode){trHeight=Math.max(trHeight,$(childNode).outerHeight())} 302for(i=0;i<trEls.length;i++){trEl=trEls.eq(i).removeClass('fc-limited');trHeight=0;trEl.find('> td > :first-child').each(iterInnerHeights);if(trEl.position().top+trHeight>rowHeight){return i}} 303return!1},limitRow:function(row,levelLimit){var _this=this;var rowStruct=this.rowStructs[row];var moreNodes=[];var col=0;var levelSegs;var cellMatrix;var limitedNodes;var i,seg;var segsBelow;var totalSegsBelow;var colSegsBelow;var td,rowspan;var segMoreNodes;var j;var moreTd,moreWrap,moreLink;function emptyCellsUntil(endCol){while(col<endCol){segsBelow=_this.getCellSegs(row,col,levelLimit);if(segsBelow.length){td=cellMatrix[levelLimit-1][col];moreLink=_this.renderMoreLink(row,col,segsBelow);moreWrap=$('<div/>').append(moreLink);td.append(moreWrap);moreNodes.push(moreWrap[0])} 304col++}} 305if(levelLimit&&levelLimit<rowStruct.segLevels.length){levelSegs=rowStruct.segLevels[levelLimit-1];cellMatrix=rowStruct.cellMatrix;limitedNodes=rowStruct.tbodyEl.children().slice(levelLimit).addClass('fc-limited').get();for(i=0;i<levelSegs.length;i++){seg=levelSegs[i];emptyCellsUntil(seg.leftCol);colSegsBelow=[];totalSegsBelow=0;while(col<=seg.rightCol){segsBelow=this.getCellSegs(row,col,levelLimit);colSegsBelow.push(segsBelow);totalSegsBelow+=segsBelow.length;col++} 306if(totalSegsBelow){td=cellMatrix[levelLimit-1][seg.leftCol];rowspan=td.attr('rowspan')||1;segMoreNodes=[];for(j=0;j<colSegsBelow.length;j++){moreTd=$('<td class="fc-more-cell"/>').attr('rowspan',rowspan);segsBelow=colSegsBelow[j];moreLink=this.renderMoreLink(row,seg.leftCol+j,[seg].concat(segsBelow));moreWrap=$('<div/>').append(moreLink);moreTd.append(moreWrap);segMoreNodes.push(moreTd[0]);moreNodes.push(moreTd[0])} 307td.addClass('fc-limited').after($(segMoreNodes));limitedNodes.push(td[0])}} 308emptyCellsUntil(this.colCnt);rowStruct.moreEls=$(moreNodes);rowStruct.limitedEls=$(limitedNodes)}},unlimitRow:function(row){var rowStruct=this.rowStructs[row];if(rowStruct.moreEls){rowStruct.moreEls.remove();rowStruct.moreEls=null} 309if(rowStruct.limitedEls){rowStruct.limitedEls.removeClass('fc-limited');rowStruct.limitedEls=null}},renderMoreLink:function(row,col,hiddenSegs){var _this=this;var view=this.view;return $('<a class="fc-more"/>').text(this.getMoreLinkText(hiddenSegs.length)).on('click',function(ev){var clickOption=view.opt('eventLimitClick');var date=_this.getCellDate(row,col);var moreEl=$(this);var dayEl=_this.getCellEl(row,col);var allSegs=_this.getCellSegs(row,col);var reslicedAllSegs=_this.resliceDaySegs(allSegs,date);var reslicedHiddenSegs=_this.resliceDaySegs(hiddenSegs,date);if(typeof clickOption==='function'){clickOption=view.publiclyTrigger('eventLimitClick',null,{date:date,dayEl:dayEl,moreEl:moreEl,segs:reslicedAllSegs,hiddenSegs:reslicedHiddenSegs},ev)} 310if(clickOption==='popover'){_this.showSegPopover(row,col,moreEl,reslicedAllSegs)}else if(typeof clickOption==='string'){view.calendar.zoomTo(date,clickOption)}})},showSegPopover:function(row,col,moreLink,segs){var _this=this;var view=this.view;var moreWrap=moreLink.parent();var topEl;var options;
310if(this.rowCnt==1){topEl=view.el}else{topEl=this.rowEls.eq(row)} 311options={className:'fc-more-popover',content:this.renderSegPopoverContent(row,col,segs),parentEl:this.view.el,top:topEl.offset().top,autoHide:!0,viewportConstrain:view.opt('popoverViewportConstrain'),hide:function(){if(_this.popoverSegs){var seg;for(var i=0;i<_this.popoverSegs.length;++i){seg=_this.popoverSegs[i];view.publiclyTrigger('eventDestroy',seg.event,seg.event,seg.el)}} 312_this.segPopover.removeElement();_this.segPopover=null;_this.popoverSegs=null}};if(this.isRTL){options.right=moreWrap.offset().left+moreWrap.outerWidth()+1}else{options.left=moreWrap.offset().left-1} 313this.segPopover=new Popover(options);this.segPopover.show();this.bindSegHandlersToEl(this.segPopover.el)},renderSegPopoverContent:function(row,col,segs){var view=this.view;var isTheme=view.opt('theme');var title=this.getCellDate(row,col).format(view.opt('dayPopoverFormat'));var content=$('<div class="fc-header '+view.widgetHeaderClass+'">'+'<span class="fc-close '+(isTheme?'ui-icon ui-icon-closethick':'fc-icon fc-icon-x')+'"></span>'+'<span class="fc-title">'+htmlEscape(title)+'</span>'+'<div class="fc-clear"/>'+'</div>'+'<div class="fc-body '+view.widgetContentClass+'">'+'<div class="fc-event-container"></div>'+'</div>');var segContainer=content.find('.fc-event-container');var i;segs=this.renderFgSegEls(segs,!0);this.popoverSegs=segs;for(i=0;i<segs.length;i++){this.prepareHits();segs[i].hit=this.getCellHit(row,col);this.releaseHits();segContainer.append(segs[i].el)} 314return content},resliceDaySegs:function(segs,dayDate){var events=$.map(segs,function(seg){return seg.event});var dayStart=dayDate.clone();var dayEnd=dayStart.clone().add(1,'days');var dayRange={start:dayStart,end:dayEnd};segs=this.eventsToSegs(events,function(range){var seg=intersectRanges(range,dayRange);return seg?[seg]:[]});this.sortEventSegs(segs);return segs},getMoreLinkText:function(num){var opt=this.view.opt('eventLimitText');if(typeof opt==='function'){return opt(num)}else{return'+'+num+' '+opt}},getCellSegs:function(row,col,startLevel){var segMatrix=this.rowStructs[row].segMatrix;var level=startLevel||0;var segs=[];var seg;while(level<segMatrix.length){seg=segMatrix[level][col];if(seg){segs.push(seg)} 315level++} 316return segs}});var TimeGrid=FC.TimeGrid=Grid.extend(DayTableMixin,{slotDuration:null,snapDuration:null,snapsPerSlot:null,minTime:null,maxTime:null,labelFormat:null,labelInterval:null,colEls:null,slatContainerEl:null,slatEls:null,nowIndicatorEls:null,colCoordCache:null,slatCoordCache:null,constructor:function(){Grid.apply(this,arguments);this.processOptions()},renderDates:function(){this.el.html(this.renderHtml());this.colEls=this.el.find('.fc-day');this.slatContainerEl=this.el.find('.fc-slats');this.slatEls=this.slatContainerEl.find('tr');this.colCoordCache=new CoordCache({els:this.colEls,isHorizontal:!0});
316this.slatCoordCache=new CoordCache({els:this.slatEls,isVertical:!0});this.renderContentSkeleton()},renderHtml:function(){return''+'<div class="fc-bg">'+'<table>'+this.renderBgTrHtml(0)+'</table>'+'</div>'+'<div class="fc-slats">'+'<table>'+this.renderSlatRowHtml()+'</table>'+'</div>'},renderSlatRowHtml:function(){var view=this.view;var isRTL=this.isRTL;var html='';var slotTime=moment.duration(+this.minTime);var slotDate;var isLabeled;var axisHtml;while(slotTime<this.maxTime){slotDate=this.start.clone().time(slotTime);isLabeled=isInt(divideDurationByDuration(slotTime,this.labelInterval));axisHtml='<td class="fc-axis fc-time '+view.widgetContentClass+'" '+view.axisStyleAttr()+'>'+(isLabeled?'<span>'+htmlEscape(slotDate.format(this.labelFormat))+'</span>':'')+'</td>';html+='<tr data-time="'+slotDate.format('HH:mm:ss')+'"'+(isLabeled?'':' class="fc-minor"')+'>'+(!isRTL?axisHtml:'')+'<td class="'+view.widgetContentClass+'"/>'+(isRTL?axisHtml:'')+"</tr>";slotTime.add(this.slotDuration)} 317return html},processOptions:function(){var view=this.view;var slotDuration=view.opt('slotDuration');var snapDuration=view.opt('snapDuration');var input;slotDuration=moment.duration(slotDuration);snapDuration=snapDuration?moment.duration(snapDuration):slotDuration;this.slotDuration=slotDuration;this.snapDuration=snapDuration;this.snapsPerSlot=slotDuration/snapDuration;this.minResizeDuration=snapDuration;this.minTime=moment.duration(view.opt('minTime'));this.maxTime=moment.duration(view.opt('maxTime'));input=view.opt('slotLabelFormat');if($.isArray(input)){input=input[input.length-1]} 318this.labelFormat=input||view.opt('smallTimeFormat');input=view.opt('slotLabelInterval');this.labelInterval=input?moment.duration(input):this.computeLabelInterval(slotDuration)},computeLabelInterval:function(slotDuration){var i;var labelInterval;var slotsPerLabel;for(i=AGENDA_STOCK_SUB_DURATIONS.length-1;i>=0;i--){labelInterval=moment.duration(AGENDA_STOCK_SUB_DURATIONS[i]);slotsPerLabel=divideDurationByDuration(labelInterval,slotDuration);if(isInt(slotsPerLabel)&&slotsPerLabel>1){return labelInterval}} 319return moment.duration(slotDuration)},computeEventTimeFormat:function(){return this.view.opt('noMeridiemTimeFormat')},computeDisplayEventEnd:function(){return!0},prepareHits:function(){this.colCoordCache.build();this.slatCoordCache.build()},releaseHits:function(){this.colCoordCache.clear()},queryHit:function(leftOffset,topOffset){var snapsPerSlot=this.snapsPerSlot;var colCoordCache=this.colCoordCache;var slatCoordCache=this.slatCoordCache;if(colCoordCache.isLeftInBounds(leftOffset)&&slatCoordCache.isTopInBounds(topOffset)){var colIndex=colCoordCache.getHorizontalIndex(leftOffset);var slatIndex=slatCoordCache.getVerticalIndex(topOffset);if(colIndex!=null&&slatIndex!=null){var slatTop=slatCoordCache.getTopOffset(slatIndex);var slatHeight=slatCoordCache.getHeight(slatIndex);var partial=(topOffset-slatTop)/slatHeight;var localSnapIndex=Math.floor(partial*snapsPerSlot);var snapIndex=slatIndex*snapsPerSlot+localSnapIndex;var snapTop=slatTop+(localSnapIndex/snapsPerSlot)*slatHeight;var snapBottom=slatTop+((localSnapIndex+1)/snapsPerSlot)*slatHeight;return{col:colIndex,snap:snapIndex,component:this,left:colCoordCache.getLeftOffset(colIndex),right:colCoordCache.getRightOffset(colIndex),top:snapTop,bottom:snapBottom}}}},getHitSpan:function(hit){var start=this.getCellDate(0,hit.col);var time=this.computeSnapTime(hit.snap);var end;start.time(time);end=start.clone().add(this.snapDuration);return{start:start,end:end}},getHitEl:function(hit){return this.colEls.eq(hit.col)},rangeUpdated:function(){this.updateDayTable()},computeSnapTime:function(snapIndex){return moment.duration(this.minTime+this.snapDuration*snapIndex)},spanToSegs:function(span){var segs=this.sliceRangeByTimes(span);var i;for(i=0;i<segs.length;i++){if(this.isRTL){segs[i].col=this.daysPerRow-1-segs[i].dayIndex}else{segs[i].col=segs[i].dayIndex}} 320return segs},sliceRangeByTimes:function(range){var segs=[];var seg;var dayIndex;var dayDate;var dayRange;for(dayIndex=0;dayIndex<this.daysPerRow;dayIndex++){dayDate=this.dayDates[dayIndex].clone();dayRange={start:dayDate.clone().time(this.minTime),end:dayDate.clone().time(this.maxTime)};seg=intersectRanges(range,dayRange);
320if(seg){seg.dayIndex=dayIndex;segs.push(seg)}} 321return segs},updateSize:function(isResize){this.slatCoordCache.build();if(isResize){this.updateSegVerticals([].concat(this.fgSegs||[],this.bgSegs||[],this.businessSegs||[]))}},getTotalSlatHeight:function(){return this.slatContainerEl.outerHeight()},computeDateTop:function(date,startOfDayDate){return this.computeTimeTop(moment.duration(date-startOfDayDate.clone().stripTime()))},computeTimeTop:function(time){var len=this.slatEls.length;var slatCoverage=(time-this.minTime)/this.slotDuration;var slatIndex;var slatRemainder;slatCoverage=Math.max(0,slatCoverage);slatCoverage=Math.min(len,slatCoverage);slatIndex=Math.floor(slatCoverage);slatIndex=Math.min(slatIndex,len-1);slatRemainder=slatCoverage-slatIndex;return this.slatCoordCache.getTopPosition(slatIndex)+this.slatCoordCache.getHeight(slatIndex)*slatRemainder},renderDrag:function(eventLocation,seg){if(seg){return this.renderEventLocationHelper(eventLocation,seg)}else{this.renderHighlight(this.eventToSpan(eventLocation))}},unrenderDrag:function(){this.unrenderHelper();this.unrenderHighlight()},renderEventResize:function(eventLocation,seg){return this.renderEventLocationHelper(eventLocation,seg)},unrenderEventResize:function(){this.unrenderHelper()},renderHelper:function(event,sourceSeg){return this.renderHelperSegs(this.eventToSegs(event),sourceSeg)},unrenderHelper:function(){this.unrenderHelperSegs()},renderBusinessHours:function(){this.renderBusinessSegs(this.buildBusinessHourSegs())},unrenderBusinessHours:function(){this.unrenderBusinessSegs()},getNowIndicatorUnit:function(){return'minute'},renderNowIndicator:function(date){var segs=this.spanToSegs({start:date,end:date});var top=this.computeDateTop(date,date);var nodes=[];var i;for(i=0;i<segs.length;i++){nodes.push($('<div class="fc-now-indicator fc-now-indicator-line"></div>').css('top',top).appendTo(this.colContainerEls.eq(segs[i].col))[0])} 322if(segs.length>0){nodes.push($('<div class="fc-now-indicator fc-now-indicator-arrow"></div>').css('top',top).appendTo(this.el.find('.fc-content-skeleton'))[0])} 323this.nowIndicatorEls=$(nodes)},unrenderNowIndicator:function(){if(this.nowIndicatorEls){this.nowIndicatorEls.remove();this.nowIndicatorEls=null}},renderSelection:function(span){if(this.view.opt('selectHelper')){this.renderEventLocationHelper(span)}else{this.renderHighlight(span)}},unrenderSelection:function(){this.unrenderHelper();this.unrenderHighlight()},renderHighlight:function(span){this.renderHighlightSegs(this.spanToSegs(span))},unrenderHighlight:function(){this.unrenderHighlightSegs()}});TimeGrid.mixin({colContainerEls:null,fgContainerEls:null,bgContainerEls:null,helperContainerEls:null,highlightContainerEls:null,businessContainerEls:null,fgSegs:null,bgSegs:null,helperSegs:null,highlightSegs:null,businessSegs:null,renderContentSkeleton:function(){var cellHtml='';var i;var skeletonEl;for(i=0;i<this.colCnt;i++){cellHtml+='<td>'+'<div class="fc-content-col">'+'<div class="fc-event-container fc-helper-container"></div>'+'<div class="fc-event-container"></div>'+'<div class="fc-highlight-container"></div>'+'<div class="fc-bgevent-container"></div>'+'<div class="fc-business-container"></div>'+'</div>'+'</td>'} 324skeletonEl=$('<div class="fc-content-skeleton">'+'<table>'+'<tr>'+cellHtml+'</tr>'+'</table>'+'</div>');this.colContainerEls=skeletonEl.find('.fc-content-col');this.helperContainerEls=skeletonEl.find('.fc-helper-container');this.fgContainerEls=skeletonEl.find('.fc-event-container:not(.fc-helper-container)');this.bgContainerEls=skeletonEl.find('.fc-bgevent-container');this.highlightContainerEls=skeletonEl.find('.fc-highlight-container');this.businessContainerEls=skeletonEl.find('.fc-business-container');this.bookendCells(skeletonEl.find('tr'));this.el.append(skeletonEl)},renderFgSegs:function(segs){segs=this.renderFgSegsIntoContainers(segs,this.fgContainerEls);this.fgSegs=segs;return segs},unrenderFgSegs:function(){this.unrenderNamedSegs('fgSegs')},renderHelperSegs:function(segs,sourceSeg){var helperEls=[];var i,seg;var sourceEl;segs=this.renderFgSegsIntoContainers(segs,this.helperContainerEls);for(i=0;i<segs.length;i++){seg=segs[i];if(sourceSeg&&sourceSeg.col===seg.col){sourceEl=sourceSeg.el;seg.el.css({left:sourceEl.css('left'),right:sourceEl.css('right'),'margin-left':sourceEl.css('margin-left'),'margin-right':sourceEl.css('margin-right')})} 325helperEls.push(seg.el[0])} 326this.helperSegs=segs;return $(helperEls)},unrenderHelperSegs:function(){this.unrenderNamedSegs('helperSegs')},renderBgSegs:function(segs){segs=this.renderFillSegEls('bgEvent',segs);this.updateSegVerticals(segs);this.attachSegsByCol(this.groupSegsByCol(segs),this.bgContainerEls);this.bgSegs=segs;return segs},unrenderBgSegs:function(){this.unrenderNamedSegs('bgSegs')},renderHighlightSegs:function(segs){segs=this.renderFillSegEls('highlight',segs);this.updateSegVerticals(segs);this.attachSegsByCol(this.groupSegsByCol(segs),this.highlightContainerEls);this.highlightSegs=segs},unrenderHighlightSegs:function(){this.unrenderNamedSegs('highlightSegs')}
326,renderBusinessSegs:function(segs){segs=this.renderFillSegEls('businessHours',segs);this.updateSegVerticals(segs);this.attachSegsByCol(this.groupSegsByCol(segs),this.businessContainerEls);this.businessSegs=segs},unrenderBusinessSegs:function(){this.unrenderNamedSegs('businessSegs')},groupSegsByCol:function(segs){var segsByCol=[];var i;for(i=0;i<this.colCnt;i++){segsByCol.push([])} 327for(i=0;i<segs.length;i++){segsByCol[segs[i].col].push(segs[i])} 328return segsByCol},attachSegsByCol:function(segsByCol,containerEls){var col;var segs;var i;for(col=0;col<this.colCnt;col++){segs=segsByCol[col];for(i=0;i<segs.length;i++){containerEls.eq(col).append(segs[i].el)}}},unrenderNamedSegs:function(propName){var segs=this[propName];var i;if(segs){for(i=0;i<segs.length;i++){segs[i].el.remove()} 329this[propName]=null}},renderFgSegsIntoContainers:function(segs,containerEls){var segsByCol;var col;segs=this.renderFgSegEls(segs);segsByCol=this.groupSegsByCol(segs);for(col=0;col<this.colCnt;col++){this.updateFgSegCoords(segsByCol[col])} 330this.attachSegsByCol(segsByCol,containerEls);return segs},fgSegHtml:function(seg,disableResizing){var view=this.view;var event=seg.event;var isDraggable=view.isEventDraggable(event);var isResizableFromStart=!disableResizing&&seg.isStart&&view.isEventResizableFromStart(event);var isResizableFromEnd=!disableResizing&&seg.isEnd&&view.isEventResizableFromEnd(event);var classes=this.getSegClasses(seg,isDraggable,isResizableFromStart||isResizableFromEnd);var skinCss=cssToStr(this.getSegSkinCss(seg));var timeText;var fullTimeText;var startTimeText;classes.unshift('fc-time-grid-event','fc-v-event');if(view.isMultiDayEvent(event)){if(seg.isStart||seg.isEnd){timeText=this.getEventTimeText(seg);fullTimeText=this.getEventTimeText(seg,'LT');startTimeText=this.getEventTimeText(seg,null,!1)}}else{timeText=this.getEventTimeText(event);fullTimeText=this.getEventTimeText(event,'LT');startTimeText=this.getEventTimeText(event,null,!1)} 331return'<a class="'+classes.join(' ')+'"'+(event.url?' href="'+htmlEscape(event.url)+'"':'')+(skinCss?' style="'+skinCss+'"':'')+'>'+'<div class="fc-content">'+(timeText?'<div class="fc-time"'+' data-start="'+htmlEscape(startTimeText)+'"'+' data-full="'+htmlEscape(fullTimeText)+'"'+'>'+'<span>'+htmlEscape(timeText)+'</span>'+'</div>':'')+(event.title?'<div class="fc-title">'+htmlEscape(event.title)+'</div>':'')+'</div>'+'<div class="fc-bg"/>'+(isResizableFromEnd?'<div class="fc-resizer fc-end-resizer" />':'')+'</a>'},updateSegVerticals:function(segs){this.computeSegVerticals(segs);this.assignSegVerticals(segs)},computeSegVerticals:function(segs){var i,seg;for(i=0;i<segs.length;i++){seg=segs[i];seg.top=this.computeDateTop(seg.start,seg.start);seg.bottom=this.computeDateTop(seg.end,seg.start)}},assignSegVerticals:function(segs){var i,seg;for(i=0;i<segs.length;i++){seg=segs[i];seg.el.css(this.generateSegVerticalCss(seg))}},generateSegVerticalCss:function(seg){return{top:seg.top,bottom:-seg.bottom}},updateFgSegCoords:function(segs){this.computeSegVerticals(segs);this.computeFgSegHorizontals(segs);this.assignSegVerticals(segs);this.assignFgSegHorizontals(segs)},computeFgSegHorizontals:function(segs){var levels;var level0;var i;this.sortEventSegs(segs);levels=buildSlotSegLevels(segs);computeForwardSlotSegs(levels);if((level0=levels[0])){for(i=0;i<level0.length;i++){computeSlotSegPressures(level0[i])} 332for(i=0;i<level0.length;i++){this.computeFgSegForwardBack(level0[i],0,0)}}},computeFgSegForwardBack:function(seg,seriesBackwardPressure,seriesBackwardCoord){var forwardSegs=seg.forwardSegs;var i;if(seg.forwardCoord===undefined){if(!forwardSegs.length){seg.forwardCoord=1}else{this.sortForwardSegs(forwardSegs);this.computeFgSegForwardBack(forwardSegs[0],seriesBackwardPressure+1,seriesBackwardCoord);seg.forwardCoord=forwardSegs[0].backwardCoord} 333seg.backwardCoord=seg.forwardCoord-(seg.forwardCoord-seriesBackwardCoord)/(seriesBackwardPressure+1);for(i=0;i<forwardSegs.length;i++){this.computeFgSegForwardBack(forwardSegs[i],0,seg.forwardCoord)}}},sortForwardSegs:function(forwardSegs){forwardSegs.sort(proxy(this,'compareForwardSegs'))},compareForwardSegs:function(seg1,seg2){return seg2.forwardPressure-seg1.forwardPressure||(seg1.backwardCoord||0)-(seg2.backwardCoord||0)||this.compareEventSegs(seg1,seg2)},assignFgSegHorizontals:function(segs){var i,seg;for(i=0;i<segs.length;i++){seg=segs[i];seg.el.css(this.generateFgSegHorizontalCss(seg));if(seg.bottom-seg.top<30){seg.el.addClass('fc-short')}}},generateFgSegHorizontalCss:function(seg){var shouldOverlap=this.view.opt('slotEventOverlap');var backwardCoord=seg.backwardCoord;var forwardCoord=seg.forwardCoord;var props=this.generateSegVerticalCss(seg);var left;var right;if(shouldOverlap){forwardCoord=Math.min(1,backwardCoord+(forwardCoord-backwardCoord)*2)} 334if(this.isRTL){left=1-forwardCoord;right=backwardCoord}else{left=backwardCoord;right=1-forwardCoord} 335props.zIndex=seg.level+1;
335props.left=left*100+'%';props.right=right*100+'%';if(shouldOverlap&&seg.forwardPressure){props[this.isRTL?'marginLeft':'marginRight']=10*2} 336return props}});function buildSlotSegLevels(segs){var levels=[];var i,seg;var j;for(i=0;i<segs.length;i++){seg=segs[i];for(j=0;j<levels.length;j++){if(!computeSlotSegCollisions(seg,levels[j]).length){break}} 337seg.level=j;(levels[j]||(levels[j]=[])).push(seg)} 338return levels} 339function computeForwardSlotSegs(levels){var i,level;var j,seg;var k;for(i=0;i<levels.length;i++){level=levels[i];for(j=0;j<level.length;j++){seg=level[j];seg.forwardSegs=[];for(k=i+1;k<levels.length;k++){computeSlotSegCollisions(seg,levels[k],seg.forwardSegs)}}}} 340function computeSlotSegPressures(seg){var forwardSegs=seg.forwardSegs;var forwardPressure=0;var i,forwardSeg;if(seg.forwardPressure===undefined){for(i=0;i<forwardSegs.length;i++){forwardSeg=forwardSegs[i];computeSlotSegPressures(forwardSeg);forwardPressure=Math.max(forwardPressure,1+forwardSeg.forwardPressure)} 341seg.forwardPressure=forwardPressure}} 342function computeSlotSegCollisions(seg,otherSegs,results){results=results||[];for(var i=0;i<otherSegs.length;i++){if(isSlotSegCollision(seg,otherSegs[i])){results.push(otherSegs[i])}} 343return results} 344function isSlotSegCollision(seg1,seg2){return seg1.bottom>seg2.top&&seg1.top<seg2.bottom};var View=FC.View=Class.extend(EmitterMixin,ListenerMixin,{type:null,name:null,title:null,calendar:null,options:null,el:null,isDateSet:!1,isDateRendered:!1,dateRenderQueue:null,isEventsBound:!1,isEventsSet:!1,isEventsRendered:!1,eventRenderQueue:null,start:null,end:null,intervalStart:null,intervalEnd:null,intervalDuration:null,intervalUnit:null,isRTL:!1,isSelected:!1,selectedEvent:null,eventOrderSpecs:null,widgetHeaderClass:null,widgetContentClass:null,highlightStateClass:null,nextDayThreshold:null,isHiddenDayHash:null,isNowIndicatorRendered:null,initialNowDate:null,initialNowQueriedMs:null,nowIndicatorTimeoutID:null,nowIndicatorIntervalID:null,constructor:function(calendar,type,options,intervalDuration){this.calendar=calendar;this.type=this.name=type;this.options=options;this.intervalDuration=intervalDuration||moment.duration(1,'day');this.nextDayThreshold=moment.duration(this.opt('nextDayThreshold'));this.initThemingProps();this.initHiddenDays();this.isRTL=this.opt('isRTL');this.eventOrderSpecs=parseFieldSpecs(this.opt('eventOrder'));this.dateRenderQueue=new TaskQueue();this.eventRenderQueue=new TaskQueue(this.opt('eventRenderWait'));this.initialize()},initialize:function(){},opt:function(name){return this.options[name]},publiclyTrigger:function(name,thisObj){var calendar=this.calendar;return calendar.publiclyTrigger.apply(calendar,[name,thisObj||this].concat(Array.prototype.slice.call(arguments,2),[this]))},rejectOn:function(eventName,promise){var _this=this;return new Promise(function(resolve,reject){_this.one(eventName,reject);function cleanup(){_this.off(eventName,reject)} 345promise.then(function(res){cleanup();resolve(res)},function(){cleanup();reject()})})},setRange:function(range){$.extend(this,range);this.updateTitle()},computeRange:function(date){var intervalUnit=computeIntervalUnit(this.intervalDuration);var intervalStart=date.clone().startOf(intervalUnit);var intervalEnd=intervalStart.clone().add(this.intervalDuration);var start,end;if(/year|month|week|day/.test(intervalUnit)){intervalStart.stripTime();intervalEnd.stripTime()}else{if(!intervalStart.hasTime()){intervalStart=this.calendar.time(0)} 346if(!intervalEnd.hasTime()){intervalEnd=this.calendar.time(0)}} 347start=intervalStart.clone();start=this.skipHiddenDays(start);end=intervalEnd.clone();end=this.skipHiddenDays(end,-1,!0);return{intervalUnit:intervalUnit,intervalStart:intervalStart,intervalEnd:intervalEnd,start:start,end:end}},computePrevDate:function(date){return this.massageCurrentDate(date.clone().startOf(this.intervalUnit).subtract(this.intervalDuration),-1)},computeNextDate:function(date){return this.massageCurrentDate(date.clone().startOf(this.intervalUnit).add(this.intervalDuration))},massageCurrentDate:function(date,direction){if(this.intervalDuration.as('days')<=1){if(this.isHiddenD
347ay(date)){date=this.skipHiddenDays(date,direction);date.startOf('day')}} 348return date},updateTitle:function(){this.title=this.computeTitle();this.calendar.setToolbarsTitle(this.title)},computeTitle:function(){return this.formatRange({start:this.calendar.applyTimezone(this.intervalStart),end:this.calendar.applyTimezone(this.intervalEnd)},this.opt('titleFormat')||this.computeTitleFormat(),this.opt('titleRangeSeparator'))},computeTitleFormat:function(){if(this.intervalUnit=='year'){return'YYYY'}else if(this.intervalUnit=='month'){return this.opt('monthYearFormat')}else if(this.intervalDuration.as('days')>1){return'll'}else{return'LL'}},formatRange:function(range,formatStr,separator){var end=range.end;if(!end.hasTime()){end=end.clone().subtract(1)} 349return formatRange(range.start,end,formatStr,separator,this.opt('isRTL'))},getAllDayHtml:function(){return this.opt('allDayHtml')||htmlEscape(this.opt('allDayText'))},buildGotoAnchorHtml:function(gotoOptions,attrs,innerHtml){var date,type,forceOff;var finalOptions;if($.isPlainObject(gotoOptions)){date=gotoOptions.date;type=gotoOptions.type;forceOff=gotoOptions.forceOff}else{date=gotoOptions} 350date=FC.moment(date);finalOptions={date:date.format('YYYY-MM-DD'),type:type||'day'};if(typeof attrs==='string'){innerHtml=attrs;attrs=null} 351attrs=attrs?' '+attrsToStr(attrs):'';innerHtml=innerHtml||'';if(!forceOff&&this.opt('navLinks')){return'<a'+attrs+' data-goto="'+htmlEscape(JSON.stringify(finalOptions))+'">'+innerHtml+'</a>'}else{return'<span'+attrs+'>'+innerHtml+'</span>'}},setElement:function(el){this.el=el;this.bindGlobalHandlers();this.renderSkeleton()},removeElement:function(){this.unsetDate();this.unrenderSkeleton();this.unbindGlobalHandlers();this.el.remove()},renderSkeleton:function(){},unrenderSkeleton:function(){},setDate:function(date){var isReset=this.isDateSet;this.isDateSet=!0;this.handleDate(date,isReset);this.trigger(isReset?'dateReset':'dateSet',date)},unsetDate:function(){if(this.isDateSet){this.isDateSet=!1;this.handleDateUnset();this.trigger('dateUnset')}},handleDate:function(date,isReset){var _this=this;this.unbindEvents();this.requestDateRender(date).then(function(){_this.bindEvents()})},handleDateUnset:function(){this.unbindEvents();this.requestDateUnrender()},requestDateRender:function(date){var _this=this;return this.dateRenderQueue.add(function(){return _this.executeDateRender(date)})},requestDateUnrender:function(){var _this=this;return this.dateRenderQueue.add(function(){return _this.executeDateUnrender()})},executeDateRender:function(date){var _this=this;if(date){this.captureInitialScroll()}else{this.captureScroll()} 352this.freezeHeight();return this.executeDateUnrender().then(function(){if(date){_this.setRange(_this.computeRange(date))} 353if(_this.render){_this.render()} 354_this.renderDates();_this.updateSize();_this.renderBusinessHours();_this.startNowIndicator();_this.thawHeight();_this.releaseScroll();_this.isDateRendered=!0;_this.onDateRender();_this.trigger('dateRender')})},executeDateUnrender:function(){var _this=this;if(_this.isDateRendered){return this.requestEventsUnrender().then(function(){_this.unselect();_this.stopNowIndicator();_this.triggerUnrender();_this.unrenderBusinessHours();_this.unrenderDates();if(_this.destroy){_this.destroy()} 355_this.isDateRendered=!1;_this.trigger('dateUnrender')})}else{return Promise.resolve()}},onDateRender:function(){this.triggerRender()},renderDates:function(){},unrenderDates:function(){},triggerRender:function(){this.publiclyTrigger('viewRender',this,this,this.el)},triggerUnrender:function(){this.publiclyTrigger('viewDestroy',this,this,this.el)},bindGlobalHandlers:function(){this.listenTo($(document),'mousedown',this.handleDocumentMousedown);this.listenTo($(document),'touchstart',this.processUnselect)},unbindGlobalHandlers:function(){this.stopListeningTo($(document))},initThemingProps:function(){var tm=this.opt('theme')?'ui':'fc';this.widgetHeaderClass=tm+'-widget-header';this.widgetContentClass=tm+'-widget-content';this.highlightStateClass=tm+'-state-highlight'},renderBusinessHours:function(){},unrenderBusinessHours:function(){},startNowIndicator:function(){var _this=this;var unit;var update;var delay;if(this.opt('nowIndicator')){unit=this.getNowIndicatorUnit();if(unit){update=proxy(this,'updateNowIndicator');this.initialNowDate=this.calendar.getNow();this.initialNowQueriedMs=+new Date();this.renderNowIndicator(this.initialNowDate);this.isNowIndicatorRendered=!0;delay=this.initialNowDate.clone().startOf(unit).add(1,unit)-this.initialNowDate;this.nowIndicatorTimeoutID=setTimeout(function(){_this.nowIndicatorTimeoutID=null;update();delay=+moment.duration(1,unit);delay=Math.max(100,delay);_this.nowIndicatorIntervalID=setInterval(update,delay)},delay)}}},updateNowIndicator:function(){if(this.isNowIndicatorRendered){this.unrenderNowIndicator();this.renderNowIndicator(this.initialNowDate.clone().add(new Date()-this.initialNowQueriedMs))}},stopNowIndicator:function(){if(this.isNowIndicatorRendered){if(this.nowIndicatorTimeoutID){clearTimeout(this.nowIndicatorTimeoutID);this.nowIndicatorTimeoutID=null} 356if(this.nowIndicatorIntervalID){clearTimeout(this.nowIndicatorIntervalID);this.nowIndicatorIntervalID=null} 357this.unrenderNowIndicator();this.isNowIndicatorRendered=!1}},getNowIndicatorUnit:function(){},renderNowIndicator:function(date){},unrenderNowIndicator:function(){},updateSize:function(isResize){if(isResize){this.captureScroll()} 358this.updateHeight(isResize);this.updateWidth(isResize);this.updateNowIndicator();if(isResize){this.releaseScroll()}},updateWidth:function(isResize){},updateHeight:function(isResize){var calendar=this.calendar;this.setHeight(calendar.getSuggestedViewHeight(),calendar.isHeightAuto())},setHeight:function(height,isAuto){},capturedScroll:null,capturedScrollDepth:0,captureScroll:function(){if(!(this.capturedScrollDepth++)){this.capturedScroll=this.isDateRendered?this.queryScroll():{};return!0} 359return!1},captureInitialScroll:function(forcedScroll){if(this.captureScroll()){this.capturedScroll.isInitial=!0;if(forcedScroll){$.extend(this.capturedScroll,forcedScroll)}else{this.capturedScroll.isComputed=!0}}},releaseScroll:function(){var scroll=this.capturedScroll;
359var isRoot=this.discardScroll();if(scroll.isComputed){if(isRoot){$.extend(scroll,this.computeInitialScroll())}else{scroll=null}} 360if(scroll){if(scroll.isInitial){this.hardSetScroll(scroll)}else{this.setScroll(scroll)}}},discardScroll:function(){if(!(--this.capturedScrollDepth)){this.capturedScroll=null;return!0} 361return!1},computeInitialScroll:function(){return{}},queryScroll:function(){return{}},hardSetScroll:function(scroll){var _this=this;var exec=function(){_this.setScroll(scroll)};exec();setTimeout(exec,0)},setScroll:function(scroll){},freezeHeight:function(){this.calendar.freezeContentHeight()},thawHeight:function(){this.calendar.thawContentHeight()},bindEvents:function(){var _this=this;if(!this.isEventsBound){this.isEventsBound=!0;this.rejectOn('eventsUnbind',this.requestEvents()).then(function(events){_this.listenTo(_this.calendar,'eventsReset',_this.setEvents);_this.setEvents(events)})}},unbindEvents:function(){if(this.isEventsBound){this.isEventsBound=!1;this.stopListeningTo(this.calendar,'eventsReset');this.unsetEvents();this.trigger('eventsUnbind')}},setEvents:function(events){var isReset=this.isEventSet;this.isEventsSet=!0;this.handleEvents(events,isReset);this.trigger(isReset?'eventsReset':'eventsSet',events)},unsetEvents:function(){if(this.isEventsSet){this.isEventsSet=!1;this.handleEventsUnset();this.trigger('eventsUnset')}},whenEventsSet:function(){var _this=this;if(this.isEventsSet){return Promise.resolve(this.getCurrentEvents())}else{return new Promise(function(resolve){_this.one('eventsSet',resolve)})}},handleEvents:function(events,isReset){this.requestEventsRender(events)},handleEventsUnset:function(){this.requestEventsUnrender()},requestEventsRender:function(events){var _this=this;return this.eventRenderQueue.add(function(){return _this.executeEventsRender(events)})},requestEventsUnrender:function(){var _this=this;if(this.isEventsRendered){return this.eventRenderQueue.addQuickly(function(){return _this.executeEventsUnrender()})}else{return Promise.resolve()}},requestCurrentEventsRender:function(){if(this.isEventsSet){this.requestEventsRender(this.getCurrentEvents())}else{return Promise.reject()}},executeEventsRender:function(events){var _this=this;this.captureScroll();this.freezeHeight();return this.executeEventsUnrender().then(function(){_this.renderEvents(events);_this.thawHeight();_this.releaseScroll();_this.isEventsRendered=!0;_this.onEventsRender();_this.trigger('eventsRender')})},executeEventsUnrender:function(){if(this.isEventsRendered){this.onBeforeEventsUnrender();this.captureScroll();this.freezeHeight();if(this.destroyEvents){this.destroyEvents()} 362this.unrenderEvents();this.thawHeight();this.releaseScroll();this.isEventsRendered=!1;this.trigger('eventsUnrender')} 363return Promise.resolve()},onEventsRender:function(){this.renderedEventSegEach(function(seg){this.publiclyTrigger('eventAfterRender',seg.event,seg.event,seg.el)});this.publiclyTrigger('eventAfterAllRender')},onBeforeEventsUnrender:function(){this.renderedEventSegEach(function(seg){this.publiclyTrigger('eventDestroy',seg.event,seg.event,seg.el)})},renderEvents:function(events){},unrenderEvents:function(){},requestEvents:function(){return this.calendar.requestEvents(this.start,this.end)},getCurrentEvents:function(){return this.calendar.getPrunedEventCache()},resolveEventEl:function(event,el){var custom=this.publiclyTrigger('eventRender',event,event,el);if(custom===!1){el=null}else if(custom&&custom!==!0){el=$(custom)} 364return el},showEvent:function(event){this.renderedEventSegEach(function(seg){seg.el.css('visibility','')},event)},hideEvent:function(event){this.renderedEventSegEach(function(seg){seg.el.css('visibility','hidden')},event)},renderedEventSegEach:function(func,event){var segs=this.getEventSegs();var i;for(i=0;i<segs.length;i++){if(!event||segs[i].event._id===event._id){if(segs[i].el){func.call(this,segs[i])}}}},getEventSegs:function(){return[]},isEventDraggable:function(event){return this.isEventStartEditable(event)},isEventStartEditable:function(event){return firstDefined(event.startEditable,(event.source||{}).startEditable,this.opt('eventStartEditable'),this.isEventGenerallyEditable(event))},isEventGenerallyEditable:function(event){return firstDefined(event.editable,(event.source||{}).editable,this.opt('editable'))},reportEventDrop:function(event,dropLocation,largeUnit,el,ev){var calendar=this.calendar;var mutateResult=calendar.mutateEvent(event,dropLocation,largeUnit);var undoFunc=function(){mutateResult.undo();calendar.reportEventChange()};this.triggerEventDrop(event,mutateResult.dateDelta,undoFunc,el,ev);calendar.reportEventChange()},triggerEventDrop:function(event,dateDelta,undoFunc,el,ev){this.publiclyTrigger('eventDrop',el[0],event,dateDelta,undoFunc,ev,{})},reportExternalDrop:function(meta,dropLocation,el,ev,ui){var eventProps=meta.eventProps;var eventInput;var event;if(eventProps){eventInput=$.extend({},eventProps,dropLocation);event=this.calendar.renderEvent(eventInput,meta.stick)[0]} 365this.triggerExternalDrop(event,dropLocation,el,ev,ui)},triggerExternalDrop:function(event,dropLocation,el,ev,ui){this.publiclyTrigger('drop',el[0],dropLocation.start,ev,ui);if(event){this.publiclyTrigger('eventReceive',null,event)}},renderDrag:function(dropLocation,seg){},unrenderDrag:function(){},isEventResizableFromStart:function(event){return this.opt('eventResizableFromStart')&&this.isEventResizable(event)},isEventResizableFromEnd:function(event){return this.isEventResizable(event)},isEventResizable:function(event){var source=event.source||{};return firstDefined(event.durationEditable,source.durationEditable,this.opt('eventDurationEditable'),event.editable,source.editable,this.opt('editable'))},reportEventResize:function(event,resizeLocation,largeUnit,el,ev){var calendar=this.calendar;var mutateResult=calendar.mutateEvent(event,resizeLocation,largeUnit);var undoFunc=function(){mutateResult.undo();calendar.reportEventChange()};this.triggerEventResize(event,mutateResult.durationDelta,undoFunc,el,ev);calendar.reportEventChange()},triggerEventResize:function(event,durationDelta,undoFunc,el,ev){this.publiclyTrigger('eventResize',el[0],event,durationDelta,undoFunc,ev,{})},select:function(span,ev){this.unselect(ev);this.renderSelection(span);this.reportSelection(span,ev)},renderSelection:function(span){},reportSelection:function(span,ev){this.isSelected=!0;this.triggerSelect(span,ev)},triggerSelect:function(span,ev){this.publiclyTrigger('select',null,this.calendar.applyTimezone(span.start),this.calendar.applyTimezone(span.end),ev)},unselect:function(ev){if(this.isSelected){this.isSelected=!1;if(this.destroySelection){this.destroySelection()} 366this.unrenderSelection();this.publiclyTrigger('unselect',null,ev)}},unrenderSelection:function(){},selectEvent:function(event){if(!this.selectedEvent||this.selectedEvent!==event){this.unselectEvent();this.renderedEventSegEach(function(seg){seg.el.addClass('fc-selected')},event);this.selectedEvent=event}},unselectEvent:function(){if(this.selectedEvent){this.renderedEventSegEach(function(seg){seg.el.removeClass('fc-selected')},this.selectedEvent);this.selectedEvent=null}},isEventSelected:function(event){return this.selectedEvent&&this.selectedEvent._id===event._id},handleDocumentMousedown:function(ev){if(isPrimaryMouseButton(ev)){this.processUnselect(ev)}},processUnselect:function(ev){this.processRangeUnselect(ev);this.processEventUnselect(ev)},processRangeUnselect:function(ev){var ignore;if(this.isSelected&&this.opt('unselectAuto')){ignore=this.opt('unselectCancel');if(!ignore||!$(ev.target).closest(ignore).length){this.unselect(ev)}}},processEventUnselect:function(ev){if(this.selectedEvent){if(!$(ev.target).closest('.fc-selected').length){this.unselectEvent()}}},triggerDayClick:function(span,dayEl,ev){this.publiclyTrigger('dayClick',dayEl,this.calendar.applyTimezone(span.start),ev)},initHiddenDays:function(){var hiddenDays=this.opt('hiddenDays')||[];
366var isHiddenDayHash=[];var dayCnt=0;var i;if(this.opt('weekends')===!1){hiddenDays.push(0,6)} 367for(i=0;i<7;i++){if(!(isHiddenDayHash[i]=$.inArray(i,hiddenDays)!==-1)){dayCnt++}} 368if(!dayCnt){throw 'invalid hiddenDays'} 369this.isHiddenDayHash=isHiddenDayHash},isHiddenDay:function(day){if(moment.isMoment(day)){day=day.day()} 370return this.isHiddenDayHash[day]},skipHiddenDays:function(date,inc,isExclusive){var out=date.clone();inc=inc||1;while(this.isHiddenDayHash[(out.day()+(isExclusive?inc:0)+7)%7]){out.add(inc,'days')} 371return out},computeDayRange:function(range){var startDay=range.start.clone().stripTime();var end=range.end;var endDay=null;var endTimeMS;if(end){endDay=end.clone().stripTime();endTimeMS=+end.time();if(endTimeMS&&endTimeMS>=this.nextDayThreshold){endDay.add(1,'days')}} 372if(!end||endDay<=startDay){endDay=startDay.clone().add(1,'days')} 373return{start:startDay,end:endDay}},isMultiDayEvent:function(event){var range=this.computeDayRange(event);return range.end.diff(range.start,'days')>1}});var Scroller=FC.Scroller=Class.extend({el:null,scrollEl:null,overflowX:null,overflowY:null,constructor:function(options){options=options||{};this.overflowX=options.overflowX||options.overflow||'auto';this.overflowY=options.overflowY||options.overflow||'auto'},render:function(){this.el=this.renderEl();this.applyOverflow()},renderEl:function(){return(this.scrollEl=$('<div class="fc-scroller"></div>'))},clear:function(){this.setHeight('auto');this.applyOverflow()},destroy:function(){this.el.remove()},applyOverflow:function(){this.scrollEl.css({'overflow-x':this.overflowX,'overflow-y':this.overflowY})},lockOverflow:function(scrollbarWidths){var overflowX=this.overflowX;var overflowY=this.overflowY;scrollbarWidths=scrollbarWidths||this.getScrollbarWidths();if(overflowX==='auto'){overflowX=(scrollbarWidths.top||scrollbarWidths.bottom||this.scrollEl[0].scrollWidth-1>this.scrollEl[0].clientWidth)?'scroll':'hidden'} 374if(overflowY==='auto'){overflowY=(scrollbarWidths.left||scrollbarWidths.right||this.scrollEl[0].scrollHeight-1>this.scrollEl[0].clientHeight)?'scroll':'hidden'} 375this.scrollEl.css({'overflow-x':overflowX,'overflow-y':overflowY})},setHeight:function(height){this.scrollEl.height(height)},getScrollTop:function(){return this.scrollEl.scrollTop()},setScrollTop:function(top){this.scrollEl.scrollTop(top)},getClientWidth:function(){return this.scrollEl[0].clientWidth},getClientHeight:function(){return this.scrollEl[0].clientHeight},getScrollbarWidths:function(){return getScrollbarWidths(this.scrollEl)}});function Iterator(items){this.items=items||[]} 376Iterator.prototype.proxyCall=function(methodName){var args=Array.prototype.slice.call(arguments,1);var results=[];this.items.forEach(function(item){results.push(item[methodName].apply(item,args))});return results};function Toolbar(calendar,toolbarOptions){var t=this;t.setToolbarOptions=setToolbarOptions;t.render=render;t.removeElement=removeElement;t.updateTitle=updateTitle;t.activateButton=activateButton;t.deactivateButton=deactivateButton;t.disableButton=disableButton;t.enableButton=enableButton;t.getViewsWithButtons=getViewsWithButtons;t.el=null;var el;var viewsWithButtons=[];var tm;function setToolbarOptions(newToolbarOptions){toolbarOptions=newToolbarOptions} 377function render(){var sections=toolbarOptions.layout;tm=calendar.options.theme?'ui':'fc';if(sections){if(!el){el=this.el=$("<div class='fc-toolbar "+toolbarOptions.extraClasses+"'/>")}else{el.empty()} 378el.append(renderSection('left')).append(renderSection('right')).append(renderSection('center')).append('<div class="fc-clear"/>')}else{removeElement()}} 379function removeElement(){if(el){el.remove();el=t.el=null}}
380function renderSection(position){var sectionEl=$('<div class="fc-'+position+'"/>');var buttonStr=toolbarOptions.layout[position];if(buttonStr){$.each(buttonStr.split(' '),function(i){var groupChildren=$();var isOnlyButtons=!0;var groupEl;$.each(this.split(','),function(j,buttonName){var customButtonProps;var viewSpec;var buttonClick;var overrideText;var defaultText;var themeIcon;var normalIcon;var innerHtml;var classes;var button;if(buttonName=='title'){groupChildren=groupChildren.add($('<h2> </h2>'));isOnlyButtons=!1}else{if((customButtonProps=(calendar.options.customButtons||{})[buttonName])){buttonClick=function(ev){if(customButtonProps.click){customButtonProps.click.call(button[0],ev)}};overrideText='';defaultText=customButtonProps.text}else if((viewSpec=calendar.getViewSpec(buttonName))){buttonClick=function(){calendar.changeView(buttonName)};viewsWithButtons.push(buttonName);overrideText=viewSpec.buttonTextOverride;defaultText=viewSpec.buttonTextDefault}else if(calendar[buttonName]){buttonClick=function(){calendar[buttonName]()};overrideText=(calendar.overrides.buttonText||{})[buttonName];defaultText=calendar.options.buttonText[buttonName]} 381if(buttonClick){themeIcon=customButtonProps?customButtonProps.themeIcon:calendar.options.themeButtonIcons[buttonName];normalIcon=customButtonProps?customButtonProps.icon:calendar.options.buttonIcons[buttonName];if(overrideText){innerHtml=htmlEscape(overrideText)}else if(themeIcon&&calendar.options.theme){innerHtml="<span class='ui-icon ui-icon-"+themeIcon+"'></span>"}else if(normalIcon&&!calendar.options.theme){innerHtml="<span class='fc-icon fc-icon-"+normalIcon+"'></span>"}else{innerHtml=htmlEscape(defaultText)} 382classes=['fc-'+buttonName+'-button',tm+'-button',tm+'-state-default'];button=$('<button type="button" class="'+classes.join(' ')+'">'+innerHtml+'</button>').click(function(ev){if(!button.hasClass(tm+'-state-disabled')){buttonClick(ev);if(button.hasClass(tm+'-state-active')||button.hasClass(tm+'-state-disabled')){button.removeClass(tm+'-state-hover')}}}).mousedown(function(){button.not('.'+tm+'-state-active').not('.'+tm+'-state-disabled').addClass(tm+'-state-down')}).mouseup(function(){button.removeClass(tm+'-state-down')}).hover(function(){button.not('.'+tm+'-state-active').not('.'+tm+'-state-disabled').addClass(tm+'-state-hover')},function(){button.removeClass(tm+'-state-hover').removeClass(tm+'-state-down')});groupChildren=groupChildren.add(button)}}});if(isOnlyButtons){groupChildren.first().addClass(tm+'-corner-left').end().last().addClass(tm+'-corner-right').end()} 383if(groupChildren.length>1){groupEl=$('<div/>');if(isOnlyButtons){groupEl.addClass('fc-button-group')} 384groupEl.append(groupChildren);sectionEl.append(groupEl)}else{sectionEl.append(groupChildren)}})} 385return sectionEl} 386function updateTitle(text){if(el){el.find('h2').text(text)}} 387function activateButton(buttonName){if(el){el.find('.fc-'+buttonName+'-button').addClass(tm+'-state-active')}} 388function deactivateButton(buttonName){if(el){el.find('.fc-'+buttonName+'-button').removeClass(tm+'-state-active')}} 389function disableButton(buttonName){if(el){el.find('.fc-'+buttonName+'-button').prop('disabled',!0).addClass(tm+'-state-disabled')}} 390function enableButton(buttonName){if(el){el.find('.fc-'+buttonName+'-button').prop('disabled',!1).removeClass(tm+'-state-disabled')}} 391function getViewsWithButtons(){return viewsWithButtons}};var Calendar=FC.Calendar=Class.extend({dirDefaults:null,localeDefaults:null,overrides:null,dynamicOverrides:null,options:null,viewSpecCache:null,view:null,header:null,footer:null,loadingLevel:0,constructor:Calendar_constructor,initialize:function(){},populateOptionsHash:function(){var locale,localeDefaults;var isRTL,dirDefaults;locale=firstDefined(this.dynamicOverrides.locale,this.overrides.locale);localeDefaults=localeOptionHash[locale];if(!localeDefaults){locale=Calendar.defaults.locale;localeDefaults=localeOptionHash[locale]||{}} 392isRTL=firstDefined(this.dynamicOverrides.isRTL,this.overrides.isRTL,localeDefaults.isRTL,Calendar.defaults.isRTL);dirDefaults=isRTL?Calendar.rtlDefaults:{};this.dirDefaults=dirDefaults;this.localeDefaults=localeDefaults;this.options=mergeOptions([Calendar.defaults,dirDefaults,localeDefaults,this.overrides,this.dynamicOverrides]);populateInstanceComputableOptions(this.options)},getViewSpec:function(viewType){var cache=this.viewSpecCache;return cache[viewType]||(cache[viewType]=this.buildViewSpec(viewType))},getUnitViewSpec:function(unit){var viewTypes;var i;var spec;if($.inArray(unit,intervalUnits)!=-1){viewTypes=this.header.getViewsWithButtons();$.each(FC.views,function(viewType){viewTypes.push(viewType)});for(i=0;i<viewTypes.length;i++){spec=this.getViewSpec(viewTypes[i]);
392if(spec){if(spec.singleUnit==unit){return spec}}}}},buildViewSpec:function(requestedViewType){var viewOverrides=this.overrides.views||{};var specChain=[];var defaultsChain=[];var overridesChain=[];var viewType=requestedViewType;var spec;var overrides;var duration;var unit;while(viewType){spec=fcViews[viewType];overrides=viewOverrides[viewType];viewType=null;if(typeof spec==='function'){spec={'class':spec}} 393if(spec){specChain.unshift(spec);defaultsChain.unshift(spec.defaults||{});duration=duration||spec.duration;viewType=viewType||spec.type} 394if(overrides){overridesChain.unshift(overrides);duration=duration||overrides.duration;viewType=viewType||overrides.type}} 395spec=mergeProps(specChain);spec.type=requestedViewType;if(!spec['class']){return!1} 396if(duration){duration=moment.duration(duration);if(duration.valueOf()){spec.duration=duration;unit=computeIntervalUnit(duration);if(duration.as(unit)===1){spec.singleUnit=unit;overridesChain.unshift(viewOverrides[unit]||{})}}} 397spec.defaults=mergeOptions(defaultsChain);spec.overrides=mergeOptions(overridesChain);this.buildViewSpecOptions(spec);this.buildViewSpecButtonText(spec,requestedViewType);return spec},buildViewSpecOptions:function(spec){spec.options=mergeOptions([Calendar.defaults,spec.defaults,this.dirDefaults,this.localeDefaults,this.overrides,spec.overrides,this.dynamicOverrides]);populateInstanceComputableOptions(spec.options)},buildViewSpecButtonText:function(spec,requestedViewType){function queryButtonText(options){var buttonText=options.buttonText||{};return buttonText[requestedViewType]||(spec.buttonTextKey?buttonText[spec.buttonTextKey]:null)||(spec.singleUnit?buttonText[spec.singleUnit]:null)} 398spec.buttonTextOverride=queryButtonText(this.dynamicOverrides)||queryButtonText(this.overrides)||spec.overrides.buttonText;spec.buttonTextDefault=queryButtonText(this.localeDefaults)||queryButtonText(this.dirDefaults)||spec.defaults.buttonText||queryButtonText(Calendar.defaults)||(spec.duration?this.humanizeDuration(spec.duration):null)||requestedViewType},instantiateView:function(viewType){var spec=this.getViewSpec(viewType);return new spec['class'](this,viewType,spec.options,spec.duration)},isValidViewType:function(viewType){return Boolean(this.getViewSpec(viewType))},pushLoading:function(){if(!(this.loadingLevel++)){this.publiclyTrigger('loading',null,!0,this.view)}},popLoading:function(){if(!(--this.loadingLevel)){this.publiclyTrigger('loading',null,!1,this.view)}},buildSelectSpan:function(zonedStartInput,zonedEndInput){var start=this.moment(zonedStartInput).stripZone();var end;if(zonedEndInput){end=this.moment(zonedEndInput).stripZone()}else if(start.hasTime()){end=start.clone().add(this.defaultTimedEventDuration)}else{end=start.clone().add(this.defaultAllDayEventDuration)} 399return{start:start,end:end}}});Calendar.mixin(EmitterMixin);function Calendar_constructor(element,overrides){var t=this;t.render=render;t.destroy=destroy;t.rerenderEvents=rerenderEvents;t.changeView=renderView;t.select=select;t.unselect=unselect;t.prev=prev;t.next=next;t.prevYear=prevYear;t.nextYear=nextYear;t.today=today;t.gotoDate=gotoDate;t.incrementDate=incrementDate;t.zoomTo=zoomTo;t.getDate=getDate;t.getCalendar=getCalendar;t.getView=getView;t.option=option;t.publiclyTrigger=publiclyTrigger;t.dynamicOverrides={};t.viewSpecCache={};t.optionHandlers={};t.overrides=$.extend({},overrides);t.populateOptionsHash();var localeData;t.bindOptions(['locale','monthNames','monthNamesShort','dayNames','dayNamesShort','firstDay','weekNumberCalculation'],function(locale,monthNames,monthNamesShort,dayNames,dayNamesShort,firstDay,weekNumberCalculation){if(weekNumberCalculation==='iso'){weekNumberCalculation='ISO'} 400localeData=createObject(getMomentLocaleData(locale));if(monthNames){localeData._months=monthNames} 401if(monthNamesShort){localeData._monthsShort=monthNamesShort} 402if(dayNames){localeData._weekdays=dayNames} 403if(dayNamesShort){localeData._weekdaysShort=dayNamesShort} 404if(firstDay==null&&weekNumberCalculation==='ISO'){firstDay=1} 405if(firstDay!=null){var _week=createObject(localeData._week);_week.dow=firstDay;localeData._week=_week} 406if(weekNumberCalculation==='ISO'||weekNumberCalculation==='local'||typeof weekNumberCalculation==='function'){localeData._fullCalendar_weekCalc=weekNumberCalculation} 407if(date){localizeMoment(date)}});t.defaultAllDayEventDuration=moment.duration(t.options.defaultAllDayEventDuration);t.defaultTimedEventDuration=moment.duration(t.options.defaultTimedEventDuration);t.moment=function(){var mom;if(t.options.timezone==='local'){mom=FC.moment.apply(null,arguments);if(mom.hasTime()){mom.local()}}else if(t.options.timezone==='UTC'){mom=FC.moment.utc.apply(null,arguments)}else{mom=FC.moment.parseZone.apply(null,arguments)} 408localizeMoment(mom);return mom};function localizeMoment(mom){mom._locale=localeData} 409t.localizeMoment=localizeMoment;t.getIsAmbigTimezone=function(){return t.options.timezone!=='local'&&t.options.timezone!=='UTC'};t.applyTimezone=function(date){if(!date.hasTime()){return date.clone()} 410var zonedDate=t.moment(date.toArray());var timeAdjust=date.time()-zonedDate.time();var adjustedZonedDate;if(timeAdjust){adjustedZonedDate=zonedDate.clone().add(timeAdjust);if(date.time()-adjustedZonedDate.time()===0){zonedDate=adjustedZonedDate}} 411return zonedDate};t.getNow=function(){var now=t.options.now;if(typeof now==='function'){now=now()} 412return t.moment(now).stripZone()};
412t.getEventEnd=function(event){if(event.end){return event.end.clone()}else{return t.getDefaultEventEnd(event.allDay,event.start)}};t.getDefaultEventEnd=function(allDay,zonedStart){var end=zonedStart.clone();if(allDay){end.stripTime().add(t.defaultAllDayEventDuration)}else{end.add(t.defaultTimedEventDuration)} 413if(t.getIsAmbigTimezone()){end.stripZone()} 414return end};t.humanizeDuration=function(duration){return duration.locale(t.options.locale).humanize()};EventManager.call(t);var _element=element[0];var toolbarsManager;var header;var footer;var content;var tm;var currentView;var viewsByType={};var suggestedViewHeight;var windowResizeProxy;var ignoreWindowResize=0;var date;if(t.options.defaultDate!=null){date=t.moment(t.options.defaultDate).stripZone()}else{date=t.getNow()} 415function render(){if(!content){initialRender()}else if(elementVisible()){calcSize();renderView()}} 416function initialRender(){element.addClass('fc');element.on('click.fc','a[data-goto]',function(ev){var anchorEl=$(this);var gotoOptions=anchorEl.data('goto');var date=t.moment(gotoOptions.date);var viewType=gotoOptions.type;var customAction=currentView.opt('navLink'+capitaliseFirstLetter(viewType)+'Click');if(typeof customAction==='function'){customAction(date,ev)}else{if(typeof customAction==='string'){viewType=customAction} 417zoomTo(date,viewType)}});t.bindOption('theme',function(theme){tm=theme?'ui':'fc';element.toggleClass('ui-widget',theme);element.toggleClass('fc-unthemed',!theme)});t.bindOptions(['isRTL','locale'],function(isRTL){element.toggleClass('fc-ltr',!isRTL);element.toggleClass('fc-rtl',isRTL)});content=$("<div class='fc-view-container'/>").prependTo(element);var toolbars=buildToolbars();toolbarsManager=new Iterator(toolbars);header=t.header=toolbars[0];footer=t.footer=toolbars[1];renderHeader();renderFooter();renderView(t.options.defaultView);if(t.options.handleWindowResize){windowResizeProxy=debounce(windowResize,t.options.windowResizeDelay);$(window).resize(windowResizeProxy)}} 418function destroy(){if(currentView){currentView.removeElement()} 419toolbarsManager.proxyCall('removeElement');content.remove();element.removeClass('fc fc-ltr fc-rtl fc-unthemed ui-widget');element.off('.fc');if(windowResizeProxy){$(window).unbind('resize',windowResizeProxy)}} 420function elementVisible(){return element.is(':visible')} 421function renderView(viewType,forcedScroll){ignoreWindowResize++;var needsClearView=currentView&&viewType&¤tView.type!==viewType;if(needsClearView){freezeContentHeight();clearView()} 422if(!currentView&&viewType){currentView=t.view=viewsByType[viewType]||(viewsByType[viewType]=t.instantiateView(viewType));currentView.setElement($("<div class='fc-view fc-"+viewType+"-view' />").appendTo(content));toolbarsManager.proxyCall('activateButton',viewType)} 423if(currentView){date=currentView.massageCurrentDate(date);if(!currentView.isDateSet||!(date>=currentView.intervalStart&&date<currentView.intervalEnd)){if(elementVisible()){if(forcedScroll){currentView.captureInitialScroll(forcedScroll)} 424currentView.setDate(date,forcedScroll);if(forcedScroll){currentView.releaseScroll()} 425updateToolbarsTodayButton()}}} 426if(needsClearView){thawContentHeight()} 427ignoreWindowResize--} 428function clearView(){toolbarsManager.proxyCall('deactivateButton',currentView.type);currentView.removeElement();currentView=t.view=null} 429function reinitView(){ignoreWindowResize++;freezeContentHeight();var viewType=currentView.type;var scrollState=currentView.queryScroll();clearView();calcSize();renderView(viewType,scrollState);thawContentHeight();ignoreWindowResize--} 430t.getSuggestedViewHeight=function(){if(suggestedViewHeight===undefined){calcSize()} 431return suggestedViewHeight};t.isHeightAuto=function(){return t.options.contentHeight==='auto'||t.options.height==='auto'};function updateSize(shouldRecalc){if(elementVisible()){if(shouldRecalc){_calcSize()} 432ignoreWindowResize++;currentView.updateSize(!0);ignoreWindowResize--;return!0}} 433function calcSize(){if(elementVisible()){_calcSize()}} 434function _calcSize(){var contentHeightInput=t.options.contentHeight;var heightInput=t.options.height;if(typeof contentHeightInput==='number'){suggestedViewHeight=contentHeightInput}else if(typeof contentHeightInput==='function'){suggestedViewHeight=contentHeightInput()}else if(typeof heightInput==='number'){suggestedViewHeight=heightInput-queryToolbarsHeight()}else if(typeof heightInput==='function'){suggestedViewHeight=heightInput()-queryToolbarsHeight()}else if(heightInput==='parent'){suggestedViewHeight=element.parent().height()-queryToolbarsHeight()}else{suggestedViewHeight=Math.round(content.width()/Math.max(t.options.aspectRatio,.5))}} 435function queryToolbarsHeight(){return toolbarsManager.items.reduce(function(accumulator,toolbar){var toolbarHeight=toolbar.el?toolbar.el.outerHeight(!0):0;return accumulator+toolbarHeight},0)} 436function windowResize(ev){if(!ignoreWindowResize&&ev.target===window&¤tView.start){if(updateSize(!0)){currentView.publiclyTrigger('windowResize',_element)}}} 437function rerenderEvents(){if(elementVisible()){t.reportEventChange()}} 438function buildToolbars(){return[new Toolbar(t,computeHeaderOptions()),new Toolbar(t,computeFooterOptions())]}
439function computeHeaderOptions(){return{extraClasses:'fc-header-toolbar',layout:t.options.header}} 440function computeFooterOptions(){return{extraClasses:'fc-footer-toolbar',layout:t.options.footer}} 441function renderHeader(){header.setToolbarOptions(computeHeaderOptions());header.render();if(header.el){element.prepend(header.el)}} 442function renderFooter(){footer.setToolbarOptions(computeFooterOptions());footer.render();if(footer.el){element.append(footer.el)}} 443t.setToolbarsTitle=function(title){toolbarsManager.proxyCall('updateTitle',title)};function updateToolbarsTodayButton(){var now=t.getNow();if(now>=currentView.intervalStart&&now<currentView.intervalEnd){toolbarsManager.proxyCall('disableButton','today')}else{toolbarsManager.proxyCall('enableButton','today')}} 444function select(zonedStartInput,zonedEndInput){currentView.select(t.buildSelectSpan.apply(t,arguments))} 445function unselect(){if(currentView){currentView.unselect()}} 446function prev(){date=currentView.computePrevDate(date);renderView()} 447function next(){date=currentView.computeNextDate(date);renderView()} 448function prevYear(){date.add(-1,'years');renderView()} 449function nextYear(){date.add(1,'years');renderView()} 450function today(){date=t.getNow();renderView()} 451function gotoDate(zonedDateInput){date=t.moment(zonedDateInput).stripZone();renderView()} 452function incrementDate(delta){date.add(moment.duration(delta));renderView()} 453function zoomTo(newDate,viewType){var spec;viewType=viewType||'day';spec=t.getViewSpec(viewType)||t.getUnitViewSpec(viewType);date=newDate.clone();renderView(spec?spec.type:null)} 454function getDate(){return t.applyTimezone(date)} 455t.freezeContentHeight=freezeContentHeight;t.thawContentHeight=thawContentHeight;var freezeContentHeightDepth=0;function freezeContentHeight(){if(!(freezeContentHeightDepth++)){content.css({width:'100%',height:content.height(),overflow:'hidden'})}} 456function thawContentHeight(){if(!(--freezeContentHeightDepth)){content.css({width:'',height:'',overflow:''})}} 457function getCalendar(){return t} 458function getView(){return currentView} 459function option(name,value){var newOptionHash;if(typeof name==='string'){if(value===undefined){return t.options[name]}else{newOptionHash={};newOptionHash[name]=value;setOptions(newOptionHash)}}else if(typeof name==='object'){setOptions(name)}} 460function setOptions(newOptionHash){var optionCnt=0;var optionName;for(optionName in newOptionHash){t.dynamicOverrides[optionName]=newOptionHash[optionName]} 461t.viewSpecCache={};t.populateOptionsHash();for(optionName in newOptionHash){t.triggerOptionHandlers(optionName);optionCnt++} 462if(optionCnt===1){if(optionName==='height'||optionName==='contentHeight'||optionName==='aspectRatio'){updateSize(!0);return}else if(optionName==='defaultDate'){return}else if(optionName==='businessHours'){if(currentView){currentView.unrenderBusinessHours();currentView.renderBusinessHours()} 463return}else if(optionName==='timezone'){t.rezoneArrayEventSources();t.refetchEvents();return}} 464renderHeader();renderFooter();viewsByType={};reinitView()} 465function publiclyTrigger(name,thisObj){var args=Array.prototype.slice.call(arguments,2);thisObj=thisObj||_element;this.triggerWith(name,thisObj,args);if(t.options[name]){return t.options[name].apply(thisObj,args)}} 466t.initialize()};Calendar.mixin({optionHandlers:null,bindOption:function(optionName,handlerFunc){this.bindOptions([optionName],handlerFunc)},bindOptions:function(optionNames,handlerFunc){var handlerObj={func:handlerFunc,names:optionNames};var i;for(i=0;i<optionNames.length;i++){this.registerOptionHandlerObj(optionNames[i],handlerObj)} 467this.triggerOptionHandlerObj(handlerObj)},registerOptionHandlerObj:function(optionName,handlerObj){(this.optionHandlers[optionName]||(this.optionHandlers[optionName]=[])).push(handlerObj)},triggerOptionHandlers:function(optionName){var handlerObjs=this.optionHandlers[optionName]||[];var i;for(i=0;i<handlerObjs.length;i++){this.triggerOptionHandlerObj(handlerObjs[i])}},triggerOptionHandlerObj:function(handlerObj){var optionNames=handlerObj.names;var optionValues=[];var i;for(i=0;i<optionNames.length;i++){optionValues.push(this.options[optionNames[i]])} 468handlerObj.func.apply(this,optionValues)}});Calendar.defaults={titleRangeSeparator:' \u2013 ',monthYearFormat:'MMMM YYYY',defaultTimedEventDuration:'02:00:00',defaultAllDayEventDuration:{days:1},forceEventDuration:!1,nextDayThreshold:'09:00:00',defaultView:'month',aspectRatio:1.35,header:{left:'title',center:'',right:'today prev,next'},weekends:!0,weekNumbers:!1,weekNumberTitle:'W',weekNumberCalculation:'local',scrollTime:'06:00:00',lazyFetching:!0,startParam:'start',endParam:'end',timezoneParam:'timezone',timezone:!1,isRTL:!1,buttonText:{prev:"prev",next:"next",prevYear:"prev year",nextYear:"next year",year:'year',today:'today',month:'month',week:'week',day:'day'},buttonIcons:{prev:'left-single-arrow',next:'right-single-arrow',prevYear:'left-double-arrow',nextYear:'right-double-arrow'},allDayText:'all-day',theme:!1,themeButtonIcons:{prev:'circle-triangle-w',next:'circle-triangle-e',prevYear:'seek-prev',nextYear:'seek-next'},dragOpacity:.75,dragRevertDuration:500,dragScroll:!0,unselectAuto:!0,dropAccept:'*',eventOrder:'title',eventLimit:!1,eventLimitText:'more',eventLimitClick:'popover',dayPopoverFormat:'LL',handleWindowResize:!0,windowResizeDelay:100,longPressDelay:1000};Calendar.englishDefaults={dayPopoverFormat:'dddd, MMMM D'};Calendar.rtlDefaults={header:{left:'next,prev today',center:'',right:'title'},buttonIcons:{prev:'right-single-arrow',next:'left-single-arrow',prevYear:'right-double-arrow',nextYear:'left-double-arrow'},themeButtonIcons:{prev:'circle-triangle-e',next:'circle-triangle-w',nextYear:'seek-prev',prevYear:'seek-next'}};var localeOptionHash=FC.locales={};FC.datepickerLocale=function(localeCode,dpLocaleCode,dpOptions){var fcOptions=localeOptionHash[localeCode]||(localeOptionHash[localeCode]={});fcOptions.isRTL=dpOptions.isRTL;fcOptions.weekNumberTitle=dpOptions.weekHeader;$.each(dpComputableOptions,function(name,func){fcOptions[name]=func(dpOptions)});if($.datepicker){$.datepicker.regional[dpLocaleCode]=$.datepicker.regional[localeCode]=dpOptions;$.datepicker.regional.en=$.datepicker.regional[''];$.datepicker.setDefaults(dpOptions)}};FC.locale=function(localeCode,newFcOptions){var fcOptions;var momOptions;fcOptions=localeOptionHash[localeCode]||(localeOptionHash[localeCode]={});if(newFcOptions){fcOptions=localeOptionHash[localeCode]=mergeOptions([fcOptions,newFcOptions])} 469momOptions=getMomentLocaleData(localeCode);$.each(momComputableOptions,function(name,func){if(fcOptions[name]==null){fcOptions[name]=func(momOptions,fcOptions)}});Calendar.defaults.locale=localeCode};var dpComputableOptions={buttonText:function(dpOptions){return{prev:stripHtmlEntities(dpOptions.prevText),next:stripHtmlEntities(dpOptions.nextText),today:stripHtmlEntities(dpOptions.currentText)}},monthYearFormat:function(dpOptions){return dpOptions.showMonthAfterYear?'YYYY['+dpOptions.yearSuffix+'] MMMM':'MMMM YYYY['+dpOptions.yearSuffix+']'}};var momComputableOptions={dayOfMonthFormat:function(momOptions,fcOptions){var format=momOptions.longDateFormat('l');
469format=format.replace(/^Y+[^\w\s]*|[^\w\s]*Y+$/g,'');if(fcOptions.isRTL){format+=' ddd'}else{format='ddd '+format} 470return format},mediumTimeFormat:function(momOptions){return momOptions.longDateFormat('LT').replace(/\s*a$/i,'a')},smallTimeFormat:function(momOptions){return momOptions.longDateFormat('LT').replace(':mm','(:mm)').replace(/(\Wmm)$/,'($1)').replace(/\s*a$/i,'a')},extraSmallTimeFormat:function(momOptions){return momOptions.longDateFormat('LT').replace(':mm','(:mm)').replace(/(\Wmm)$/,'($1)').replace(/\s*a$/i,'t')},hourFormat:function(momOptions){return momOptions.longDateFormat('LT').replace(':mm','').replace(/(\Wmm)$/,'').replace(/\s*a$/i,'a')},noMeridiemTimeFormat:function(momOptions){return momOptions.longDateFormat('LT').replace(/\s*a$/i,'')}};var instanceComputableOptions={smallDayDateFormat:function(options){return options.isRTL?'D dd':'dd D'},weekFormat:function(options){return options.isRTL?'w[ '+options.weekNumberTitle+']':'['+options.weekNumberTitle+' ]w'},smallWeekFormat:function(options){return options.isRTL?'w['+options.weekNumberTitle+']':'['+options.weekNumberTitle+']w'}};function populateInstanceComputableOptions(options){$.each(instanceComputableOptions,function(name,func){if(options[name]==null){options[name]=func(options)}})} 471function getMomentLocaleData(localeCode){return moment.localeData(localeCode)||moment.localeData('en')} 472FC.locale('en',Calendar.englishDefaults);FC.sourceNormalizers=[];FC.sourceFetchers=[];var ajaxDefaults={dataType:'json',cache:!1};var eventGUID=1;function EventManager(){var t=this;t.requestEvents=requestEvents;t.reportEventChange=reportEventChange;t.isFetchNeeded=isFetchNeeded;t.fetchEvents=fetchEvents;t.fetchEventSources=fetchEventSources;t.refetchEvents=refetchEvents;t.refetchEventSources=refetchEventSources;t.getEventSources=getEventSources;t.getEventSourceById=getEventSourceById;t.addEventSource=addEventSource;t.removeEventSource=removeEventSource;t.removeEventSources=removeEventSources;t.updateEvent=updateEvent;t.updateEvents=updateEvents;t.renderEvent=renderEvent;t.renderEvents=renderEvents;t.removeEvents=removeEvents;t.clientEvents=clientEvents;t.mutateEvent=mutateEvent;t.normalizeEventDates=normalizeEventDates;t.normalizeEventTimes=normalizeEventTimes;var stickySource={events:[]};var sources=[stickySource];var rangeStart,rangeEnd;var pendingSourceCnt=0;var cache=[];var prunedCache;$.each((t.options.events?[t.options.events]:[]).concat(t.options.eventSources||[]),function(i,sourceInput){var source=buildEventSource(sourceInput);if(source){sources.push(source)}});function requestEvents(start,end){if(!t.options.lazyFetching||isFetchNeeded(start,end)){return fetchEvents(start,end)}else{return Promise.resolve(prunedCache)}} 473function reportEventChange(){prunedCache=filterEventsWithinRange(cache);t.trigger('eventsReset',prunedCache)} 474function filterEventsWithinRange(events){var filteredEvents=[];var i,event;for(i=0;i<events.length;i++){event=events[i];if(event.start.clone().stripZone()<rangeEnd&&t.getEventEnd(event).stripZone()>rangeStart){filteredEvents.push(event)}} 475return filteredEvents} 476t.getEventCache=function(){return cache};t.getPrunedEventCache=function(){return prunedCache};function isFetchNeeded(start,end){return!rangeStart||start<rangeStart||end>rangeEnd} 477function fetchEvents(start,end){rangeStart=start;rangeEnd=end;return refetchEvents()} 478function refetchEvents(){return fetchEventSources(sources,'reset')} 479function refetchEventSources(matchInputs){return fetchEventSources(getEventSourcesByMatchArray(matchInputs))} 480function fetchEventSources(specificSources,specialFetchType){var i,source;if(specialFetchType==='reset'){cache=[]}else if(specialFetchType!=='add'){cache=excludeEventsBySources(cache,specificSources)} 481for(i=0;i<specificSources.length;i++){source=specificSources[i];if(source._status!=='pending'){pendingSourceCnt++} 482source._fetchId=(source._fetchId||0)+1;source._status='pending'} 483for(i=0;i<specificSources.length;i++){source=specificSources[i];tryFetchEventSource(source,source._fetchId)} 484if(pendingSourceCnt){return new Promise(function(resolve){t.one('eventsReceived',resolve)})}else{return Promise.resolve(prunedCache)}} 485function tryFetchEventSource(source,fetchId){_fetchEventSource(source,function(eventInputs){var isArraySource=$.isArray(source.events);var i,eventInput;var abstractEvent;if(fetchId===source._fetchId&&source._status!=='rejected'){source._status='resolved';if(eventInputs){for(i=0;i<eventInputs.length;i++){eventInput=eventInputs[i];if(isArraySource){abstractEvent=eventInput}else{abstractEvent=buildEventFromInput(eventInput,source)} 486if(abstractEvent){cache.push.apply(cache,expandEvent(abstractEvent))}}} 487decrementPendingSourceCnt()}})} 488function rejectEventSource(source){var wasPending=source._status==='pending';source._status='rejected';if(wasPending){decrementPendingSourceCnt()}} 489function decrementPendingSourceCnt(){pendingSourceCnt--;if(!pendingSourceCnt){reportEventChange(cache);t.trigger('eventsReceived',prunedCache)}} 490function _fetchEventSource(source,callback){var i;var fetchers=FC.sourceFetchers;var res;for(i=0;i<fetchers.length;i++){res=fetchers[i].call(t,source,rangeStart.clone(),rangeEnd.clone(),t.options.timezone,callback);if(res===!0){return}else if(typeof res=='object'){_fetchEventSource(res,callback);return}} 491var events=source.events;if(events){if($.isFunction(events)){t.pushLoading();events.call(t,rangeStart.clone(),rangeEnd.clone(),t.options.timezone,function(events){callback(events);t.popLoading()})}else if($.isArray(events)){callback(events)}else{callback()}}else{var url=source.url;if(url){var success=source.success;var error=source.error;var complete=source.complete;var customData;if($.isFunction(source.data)){customData=source.data()}else{customData=source.data} 492var data=$.extend({},customData||{});var startParam=firstDefined(source.startParam,t.options.startParam);var endParam=firstDefined(source.endParam,t.options.endParam);var timezoneParam=firstDefined(source.timezoneParam,t.options.timezoneParam);if(startParam){data[startParam]=rangeStart.format()} 493if(endParam){data[endParam]=rangeEnd.format()} 494if(t.options.timezone&&t.options.timezone!='local'){data[timezoneParam]=t.options.timezone} 495t.pushLoading();$.ajax($.extend({},ajaxDefaults,source,{data:data,success:function(events){events=events||[];var res=applyAll(success,this,arguments);if($.isArray(res)){events=res} 496callback(events)},error:function(){applyAll(error,this,arguments);callback()},complete:function(){applyAll(complete,this,arguments);t.popLoading()}}))}else{callback()}}} 497function addEventSource(sourceInput){var source=buildEventSource(sourceInput);if(source){sources.push(source);fetchEventSources([source],'add')}} 498function buildEventSource(sourceInput){var normalizers=FC.sourceNormalizers;var source;var i;if($.isFunction(sourceInput)||$.isArray(sourceInput)){source={events:sourceInput}}
498else if(typeof sourceInput==='string'){source={url:sourceInput}}else if(typeof sourceInput==='object'){source=$.extend({},sourceInput)} 499if(source){if(source.className){if(typeof source.className==='string'){source.className=source.className.split(/\s+/)}}else{source.className=[]} 500if($.isArray(source.events)){source.origArray=source.events;source.events=$.map(source.events,function(eventInput){return buildEventFromInput(eventInput,source)})} 501for(i=0;i<normalizers.length;i++){normalizers[i].call(t,source)} 502return source}} 503function removeEventSource(matchInput){removeSpecificEventSources(getEventSourcesByMatch(matchInput))} 504function removeEventSources(matchInputs){if(matchInputs==null){removeSpecificEventSources(sources,!0)}else{removeSpecificEventSources(getEventSourcesByMatchArray(matchInputs))}} 505function removeSpecificEventSources(targetSources,isAll){var i;for(i=0;i<targetSources.length;i++){rejectEventSource(targetSources[i])} 506if(isAll){sources=[];cache=[]}else{sources=$.grep(sources,function(source){for(i=0;i<targetSources.length;i++){if(source===targetSources[i]){return!1}} 507return!0});cache=excludeEventsBySources(cache,targetSources)} 508reportEventChange()} 509function getEventSources(){return sources.slice(1)} 510function getEventSourceById(id){return $.grep(sources,function(source){return source.id&&source.id===id})[0]} 511function getEventSourcesByMatchArray(matchInputs){if(!matchInputs){matchInputs=[]}else if(!$.isArray(matchInputs)){matchInputs=[matchInputs]} 512var matchingSources=[];var i;for(i=0;i<matchInputs.length;i++){matchingSources.push.apply(matchingSources,getEventSourcesByMatch(matchInputs[i]))} 513return matchingSources} 514function getEventSourcesByMatch(matchInput){var i,source;for(i=0;i<sources.length;i++){source=sources[i];if(source===matchInput){return[source]}} 515source=getEventSourceById(matchInput);if(source){return[source]} 516return $.grep(sources,function(source){return isSourcesEquivalent(matchInput,source)})} 517function isSourcesEquivalent(source1,source2){return source1&&source2&&getSourcePrimitive(source1)==getSourcePrimitive(source2)} 518function getSourcePrimitive(source){return((typeof source==='object')?(source.origArray||source.googleCalendarId||source.url||source.events):null)||source} 519function excludeEventsBySources(specificEvents,specificSources){return $.grep(specificEvents,function(event){for(var i=0;i<specificSources.length;i++){if(event.source===specificSources[i]){return!1}} 520return!0})} 521function updateEvent(event){updateEvents([event])} 522function updateEvents(events){var i,event;for(i=0;i<events.length;i++){event=events[i];event.start=t.moment(event.start);if(event.end){event.end=t.moment(event.end)}else{event.end=null} 523mutateEvent(event,getMiscEventProps(event))} 524reportEventChange()} 525function getMiscEventProps(event){var props={};$.each(event,function(name,val){if(isMiscEventPropName(name)){if(val!==undefined&&isAtomic(val)){props[name]=val}}});return props} 526function isMiscEventPropName(name){return!/^_|^(id|allDay|start|end)$/.test(name)} 527function renderEvent(eventInput,stick){return renderEvents([eventInput],stick)} 528function renderEvents(eventInputs,stick){var renderedEvents=[];var renderableEvents;var abstractEvent;var i,j,event;for(i=0;i<eventInputs.length;i++){abstractEvent=buildEventFromInput(eventInputs[i]);if(abstractEvent){renderableEvents=expandEvent(abstractEvent);for(j=0;j<renderableEvents.length;j++){event=renderableEvents[j];if(!event.source){if(stick){stickySource.events.push(event);event.source=stickySource} 529cache.push(event)}} 530renderedEvents=renderedEvents.concat(renderableEvents)}} 531if(renderedEvents.length){reportEventChange()} 532return renderedEvents} 533function removeEvents(filter){var eventID;var i;if(filter==null){filter=function(){return!0}}else if(!$.isFunction(filter)){eventID=filter+'';filter=function(event){return event._id==eventID}} 534cache=$.grep(cache,filter,!0);for(i=0;i<sources.length;i++){if($.isArray(sources[i].events)){sources[i].events=$.grep(sources[i].events,filter,!0)}} 535reportEventChange()} 536function clientEvents(filter){if($.isFunction(filter)){return $.grep(cache,filter)}else if(filter!=null){filter+='';return $.grep(cache,function(e){return e._id==filter})} 537return cache} 538t.rezoneArrayEventSources=function(){var i;var events;var j;for(i=0;i<sources.length;i++){events=sources[i].events;if($.isArray(events)){for(j=0;j<events.length;j++){rezoneEventDates(events[j])}}}};function rezoneEventDates(event){event.start=t.moment(event.start);
538if(event.end){event.end=t.moment(event.end)} 539backupEventDates(event)} 540function buildEventFromInput(input,source){var out={};var start,end;var allDay;if(t.options.eventDataTransform){input=t.options.eventDataTransform(input)} 541if(source&&source.eventDataTransform){input=source.eventDataTransform(input)} 542$.extend(out,input);if(source){out.source=source} 543out._id=input._id||(input.id===undefined?'_fc'+eventGUID++:input.id+'');if(input.className){if(typeof input.className=='string'){out.className=input.className.split(/\s+/)}else{out.className=input.className}}else{out.className=[]} 544start=input.start||input.date;end=input.end;if(isTimeString(start)){start=moment.duration(start)} 545if(isTimeString(end)){end=moment.duration(end)} 546if(input.dow||moment.isDuration(start)||moment.isDuration(end)){out.start=start?moment.duration(start):null;out.end=end?moment.duration(end):null;out._recurring=!0}else{if(start){start=t.moment(start);if(!start.isValid()){return!1}} 547if(end){end=t.moment(end);if(!end.isValid()){end=null}} 548allDay=input.allDay;if(allDay===undefined){allDay=firstDefined(source?source.allDayDefault:undefined,t.options.allDayDefault)} 549assignDatesToEvent(start,end,allDay,out)} 550t.normalizeEvent(out);return out} 551t.buildEventFromInput=buildEventFromInput;function assignDatesToEvent(start,end,allDay,event){event.start=start;event.end=end;event.allDay=allDay;normalizeEventDates(event);backupEventDates(event)} 552function normalizeEventDates(eventProps){normalizeEventTimes(eventProps);if(eventProps.end&&!eventProps.end.isAfter(eventProps.start)){eventProps.end=null} 553if(!eventProps.end){if(t.options.forceEventDuration){eventProps.end=t.getDefaultEventEnd(eventProps.allDay,eventProps.start)}else{eventProps.end=null}}} 554function normalizeEventTimes(eventProps){if(eventProps.allDay==null){eventProps.allDay=!(eventProps.start.hasTime()||(eventProps.end&&eventProps.end.hasTime()))} 555if(eventProps.allDay){eventProps.start.stripTime();if(eventProps.end){eventProps.end.stripTime()}}else{if(!eventProps.start.hasTime()){eventProps.start=t.applyTimezone(eventProps.start.time(0))} 556if(eventProps.end&&!eventProps.end.hasTime()){eventProps.end=t.applyTimezone(eventProps.end.time(0))}}} 557function expandEvent(abstractEvent,_rangeStart,_rangeEnd){var events=[];var dowHash;var dow;var i;var date;var startTime,endTime;var start,end;var event;_rangeStart=_rangeStart||rangeStart;_rangeEnd=_rangeEnd||rangeEnd;if(abstractEvent){if(abstractEvent._recurring){if((dow=abstractEvent.dow)){dowHash={};for(i=0;i<dow.length;i++){dowHash[dow[i]]=!0}} 558date=_rangeStart.clone().stripTime();while(date.isBefore(_rangeEnd)){if(!dowHash||dowHash[date.day()]){startTime=abstractEvent.start;endTime=abstractEvent.end;start=date.clone();end=null;if(startTime){start=start.time(startTime)} 559if(endTime){end=date.clone().time(endTime)} 560event=$.extend({},abstractEvent);assignDatesToEvent(start,end,!startTime&&!endTime,event);events.push(event)} 561date.add(1,'days')}}else{events.push(abstractEvent)}} 562return events} 563t.expandEvent=expandEvent;function mutateEvent(event,newProps,largeUnit){var miscProps={};var oldProps;var clearEnd;var startDelta;var endDelta;var durationDelta;var undoFunc;function diffDates(date1,date0){if(largeUnit){return diffByUnit(date1,date0,largeUnit)}else if(newProps.allDay){return diffDay(date1,date0)}else{return diffDayTime(date1,date0)}} 564newProps=newProps||{};if(!newProps.start){newProps.start=event.start.clone()} 565if(newProps.end===undefined){newProps.end=event.end?event.end.clone():null} 566if(newProps.allDay==null){newProps.allDay=event.allDay} 567normalizeEventDates(newProps);oldProps={start:event._start.clone(),end:event._end?event._end.clone():t.getDefaultEventEnd(event._allDay,event._start),allDay:newProps.allDay};normalizeEventDates(oldProps);clearEnd=event._end!==null&&newProps.end===null;startDelta=diffDates(newProps.start,oldProps.start);if(newProps.end){endDelta=diffDates(newProps.end,oldProps.end);durationDelta=endDelta.subtract(startDelta)}else{durationDelta=null} 568$.each(newProps,function(name,val){if(isMiscEventPropName(name)){if(val!==undefined){miscProps[name]=val}}});undoFunc=mutateEvents(clientEvents(event._id),clearEnd,newProps.allDay,startDelta,durationDelta,miscProps);return{dateDelta:startDelta,durationDelta:durationDelta,undo:undoFunc}} 569function mutateEvents(events,clearEnd,allDay,dateDelta,durationDelta,miscProps){var isAmbigTimezone=t.getIsAmbigTimezone();var undoFunctions=[];if(dateDelta&&!dateDelta.valueOf()){dateDelta=null} 570if(durationDelta&&!durationDelta.valueOf()){durationDelta=null} 571$.each(events,function(i,event){var oldProps;var newProps;oldProps={start:event.start.clone(),end:event.end?event.end.clone():null,allDay:event.allDay};$.each(miscProps,function(name){oldProps[name]=event[name]});newProps={start:event._start,end:event._end,allDay:allDay};normalizeEventDates(newProps);if(clearEnd){newProps.end=null}else if(durationDelta&&!newProps.end){newProps.end=t.getDefaultEventEnd(newProps.allDay,newProps.start)} 572if(dateDelta){newProps.start.add(dateDelta);if(newProps.end){newProps.end.add(dateDelta)}} 573if(durationDelta){newProps.end.add(durationDelta)} 574if(isAmbigTimezone&&!newProps.allDay&&(dateDelta||durationDelta)){newProps.start.stripZone();if(newProps.end){newProps.end.stripZone()}} 575$.extend(event,miscProps,newProps);backupEventDates(event);undoFunctions.push(function(){$.extend(event,oldProps);backupEventDates(event)})});return function(){for(var i=0;i<undoFunctions.length;i++){undoFunctions[i]()}}}} 576Calendar.prototype.normalizeEvent=function(event){};Calendar.prototype.spanContainsSpan=function(outerSpan,innerSpan){var eventStart=outerSpan.start.clone().stripZone();var eventEnd=this.getEventEnd(outerSpan).stripZone();return innerSpan.start>=eventStart&&innerSpan.end<=eventEnd};Calendar.prototype.getPeerEvents=function(span,event){var cache=this.getEventCache();var peerEvents=[];var i,otherEvent;for(i=0;i<cache.length;i++){otherEvent=cache[i];if(!event||event._id!==otherEvent._id){peerEvents.push(otherEvent)}} 577return peerEvents};function backupEventDates(event){event._allDay=event.allDay;event._start=event.start.clone();event._end=event.end?event.end.clone():null} 578Calendar.prototype.isEventSpanAllowed=function(span,event){var source=event.source||{};
578var constraint=firstDefined(event.constraint,source.constraint,this.options.eventConstraint);var overlap=firstDefined(event.overlap,source.overlap,this.options.eventOverlap);return this.isSpanAllowed(span,constraint,overlap,event)&&(!this.options.eventAllow||this.options.eventAllow(span,event)!==!1)};Calendar.prototype.isExternalSpanAllowed=function(eventSpan,eventLocation,eventProps){var eventInput;var event;if(eventProps){eventInput=$.extend({},eventProps,eventLocation);event=this.expandEvent(this.buildEventFromInput(eventInput))[0]} 579if(event){return this.isEventSpanAllowed(eventSpan,event)}else{return this.isSelectionSpanAllowed(eventSpan)}};Calendar.prototype.isSelectionSpanAllowed=function(span){return this.isSpanAllowed(span,this.options.selectConstraint,this.options.selectOverlap)&&(!this.options.selectAllow||this.options.selectAllow(span)!==!1)};Calendar.prototype.isSpanAllowed=function(span,constraint,overlap,event){var constraintEvents;var anyContainment;var peerEvents;var i,peerEvent;var peerOverlap;if(constraint!=null){constraintEvents=this.constraintToEvents(constraint);if(constraintEvents){anyContainment=!1;for(i=0;i<constraintEvents.length;i++){if(this.spanContainsSpan(constraintEvents[i],span)){anyContainment=!0;break}} 580if(!anyContainment){return!1}}} 581peerEvents=this.getPeerEvents(span,event);for(i=0;i<peerEvents.length;i++){peerEvent=peerEvents[i];if(this.eventIntersectsRange(peerEvent,span)){if(overlap===!1){return!1}else if(typeof overlap==='function'&&!overlap(peerEvent,event)){return!1} 582if(event){peerOverlap=firstDefined(peerEvent.overlap,(peerEvent.source||{}).overlap);if(peerOverlap===!1){return!1} 583if(typeof peerOverlap==='function'&&!peerOverlap(event,peerEvent)){return!1}}}} 584return!0};Calendar.prototype.constraintToEvents=function(constraintInput){if(constraintInput==='businessHours'){return this.getCurrentBusinessHourEvents()} 585if(typeof constraintInput==='object'){if(constraintInput.start!=null){return this.expandEvent(this.buildEventFromInput(constraintInput))}else{return null}} 586return this.clientEvents(constraintInput)};Calendar.prototype.eventIntersectsRange=function(event,range){var eventStart=event.start.clone().stripZone();var eventEnd=this.getEventEnd(event).stripZone();return range.start<eventEnd&&range.end>eventStart};var BUSINESS_HOUR_EVENT_DEFAULTS={id:'_fcBusinessHours',start:'09:00',end:'17:00',dow:[1,2,3,4,5],rendering:'inverse-background'};Calendar.prototype.getCurrentBusinessHourEvents=function(wholeDay){return this.computeBusinessHourEvents(wholeDay,this.options.businessHours)};Calendar.prototype.computeBusinessHourEvents=function(wholeDay,input){if(input===!0){return this.expandBusinessHourEvents(wholeDay,[{}])}else if($.isPlainObject(input)){return this.expandBusinessHourEvents(wholeDay,[input])}else if($.isArray(input)){return this.expandBusinessHourEvents(wholeDay,input,!0)}else{return[]}};Calendar.prototype.expandBusinessHourEvents=function(wholeDay,inputs,ignoreNoDow){var view=this.getView();var events=[];var i,input;for(i=0;i<inputs.length;i++){input=inputs[i];if(ignoreNoDow&&!input.dow){continue} 587input=$.extend({},BUSINESS_HOUR_EVENT_DEFAULTS,input);if(wholeDay){input.start=null;input.end=null} 588events.push.apply(events,this.expandEvent(this.buildEventFromInput(input),view.start,view.end))} 589return events};var BasicView=FC.BasicView=View.extend({scroller:null,dayGridClass:DayGrid,dayGrid:null,dayNumbersVisible:!1,colWeekNumbersVisible:!1,cellWeekNumbersVisible:!1,weekNumberWidth:null,headContainerEl:null,headRowEl:null,initialize:function(){this.dayGrid=this.instantiateDayGrid();this.scroller=new Scroller({overflowX:'hidden',overflowY:'auto'})},instantiateDayGrid:function(){var subclass=this.dayGridClass.extend(basicDayGridMethods);return new subclass(this)},setRange:function(range){View.prototype.setRange.call(this,range);this.dayGrid.breakOnWeeks=/year|month|week/.test(this.intervalUnit);this.dayGrid.setRange(range)},computeRange:function(date){var range=View.prototype.computeRange.call(this,date);if(/year|month/.test(range.intervalUnit)){range.start.startOf('week');range.start=this.skipHiddenDays(range.start);if(range.end.weekday()){range.end.add(1,'week').startOf('week');range.end=this.skipHiddenDays(range.end,-1,!0)}} 590return range},renderDates:function(){this.dayNumbersVisible=this.dayGrid.rowCnt>1;
590if(this.opt('weekNumbers')){if(this.opt('weekNumbersWithinDays')){this.cellWeekNumbersVisible=!0;this.colWeekNumbersVisible=!1}else{this.cellWeekNumbersVisible=!1;this.colWeekNumbersVisible=!0}} 591this.dayGrid.numbersVisible=this.dayNumbersVisible||this.cellWeekNumbersVisible||this.colWeekNumbersVisible;this.el.addClass('fc-basic-view').html(this.renderSkeletonHtml());this.renderHead();this.scroller.render();var dayGridContainerEl=this.scroller.el.addClass('fc-day-grid-container');var dayGridEl=$('<div class="fc-day-grid" />').appendTo(dayGridContainerEl);this.el.find('.fc-body > tr > td').append(dayGridContainerEl);this.dayGrid.setElement(dayGridEl);this.dayGrid.renderDates(this.hasRigidRows())},renderHead:function(){this.headContainerEl=this.el.find('.fc-head-container').html(this.dayGrid.renderHeadHtml());this.headRowEl=this.headContainerEl.find('.fc-row')},unrenderDates:function(){this.dayGrid.unrenderDates();this.dayGrid.removeElement();this.scroller.destroy()},renderBusinessHours:function(){this.dayGrid.renderBusinessHours()},unrenderBusinessHours:function(){this.dayGrid.unrenderBusinessHours()},renderSkeletonHtml:function(){return''+'<table>'+'<thead class="fc-head">'+'<tr>'+'<td class="fc-head-container '+this.widgetHeaderClass+'"></td>'+'</tr>'+'</thead>'+'<tbody class="fc-body">'+'<tr>'+'<td class="'+this.widgetContentClass+'"></td>'+'</tr>'+'</tbody>'+'</table>'},weekNumberStyleAttr:function(){if(this.weekNumberWidth!==null){return'style="width:'+this.weekNumberWidth+'px"'} 592return''},hasRigidRows:function(){var eventLimit=this.opt('eventLimit');return eventLimit&&typeof eventLimit!=='number'},updateWidth:function(){if(this.colWeekNumbersVisible){this.weekNumberWidth=matchCellWidths(this.el.find('.fc-week-number'))}},setHeight:function(totalHeight,isAuto){var eventLimit=this.opt('eventLimit');var scrollerHeight;var scrollbarWidths;this.scroller.clear();uncompensateScroll(this.headRowEl);this.dayGrid.removeSegPopover();if(eventLimit&&typeof eventLimit==='number'){this.dayGrid.limitRows(eventLimit)} 593scrollerHeight=this.computeScrollerHeight(totalHeight);this.setGridHeight(scrollerHeight,isAuto);if(eventLimit&&typeof eventLimit!=='number'){this.dayGrid.limitRows(eventLimit)} 594if(!isAuto){this.scroller.setHeight(scrollerHeight);scrollbarWidths=this.scroller.getScrollbarWidths();if(scrollbarWidths.left||scrollbarWidths.right){compensateScroll(this.headRowEl,scrollbarWidths);scrollerHeight=this.computeScrollerHeight(totalHeight);this.scroller.setHeight(scrollerHeight)} 595this.scroller.lockOverflow(scrollbarWidths)}},computeScrollerHeight:function(totalHeight){return totalHeight-subtractInnerElHeight(this.el,this.scroller.el)},setGridHeight:function(height,isAuto){if(isAuto){undistributeHeight(this.dayGrid.rowEls)}else{distributeHeight(this.dayGrid.rowEls,height,!0)}},computeInitialScroll:function(){return{top:0}},queryScroll:function(){return{top:this.scroller.getScrollTop()}},setScroll:function(scroll){this.scroller.setScrollTop(scroll.top)},prepareHits:function(){this.dayGrid.prepareHits()},releaseHits:function(){this.dayGrid.releaseHits()},queryHit:function(left,top){return this.dayGrid.queryHit(left,top)},getHitSpan:function(hit){return this.dayGrid.getHitSpan(hit)},getHitEl:function(hit){return this.dayGrid.getHitEl(hit)},renderEvents:function(events){this.dayGrid.renderEvents(events);this.updateHeight()},getEventSegs:function(){return this.dayGrid.getEventSegs()},unrenderEvents:function(){this.dayGrid.unrenderEvents()},renderDrag:function(dropLocation,seg){return this.dayGrid.renderDrag(dropLocation,seg)},unrenderDrag:function(){this.dayGrid.unrenderDrag()},renderSelection:function(span){this.dayGrid.renderSelection(span)},unrenderSelection:function(){this.dayGrid.unrenderSelection()}});var basicDayGridMethods={renderHeadIntroHtml:function(){var view=this.view;if(view.colWeekNumbersVisible){return''+'<th class="fc-week-number '+view.widgetHeaderClass+'" '+view.weekNumberStyleAttr()+'>'+'<span>'+htmlEscape(view.opt('weekNumberTitle'))+'</span>'+'</th>'} 596return''},renderNumberIntroHtml:function(row){var view=this.view;var weekStart=this.getCellDate(row,0);if(view.colWeekNumbersVisible){return''+'<td class="fc-week-number" '+view.weekNumberStyleAttr()+'>'+view.buildGotoAnchorHtml({date:weekStart,type:'week',forceOff:this.colCnt===1},weekStart.format('w'))+'</td>'} 597return''},renderBgIntroHtml:function(){var view=this.view;if(view.colWeekNumbersVisible){return'<td class="fc-week-number '+view.widgetContentClass+'" '+view.weekNumberStyleAttr()+'></td>'} 598return''},renderIntroHtml:function(){var view=this.view;if(view.colWeekNumbersVisible){return'<td class="fc-week-number" '+view.weekNumberStyleAttr()+'></td>'} 599return''}};var MonthView=FC.MonthView=BasicView.extend({computeRange:function(date){var range=BasicView.prototype.computeRange.call(this,date);var rowCnt;if(this.isFixedWeeks()){rowCnt=Math.ceil(range.end.diff(range.start,'weeks',!0));range.end.add(6-rowCnt,'weeks')} 600return range},setGridHeight:function(height,isAuto){if(isAuto){height*=this.rowCnt/6} 601distributeHeight(this.dayGrid.rowEls,height,!isAuto)},isFixedWeeks:function(){return this.opt('fixedWeekCount')}});fcViews.basic={'class':BasicView};fcViews.basicDay={type:'basic',duration:{days:1}};fcViews.basicWeek={type:'basic',duration:{weeks:1}};fcViews.month={'class':MonthView,duration:{months:1},defaults:{fixedWeekCount:!0}};var AgendaView=FC.AgendaView=View.extend({scroller:null,timeGridClass:TimeGrid,timeGrid:null,dayGridClass:DayGrid,dayGrid:null,axisWidth:null,headContainerEl:null,noScrollRowEls:null,bottomRuleEl:null,initialize:function(){this.timeGrid=this.instantiateTimeGrid();if(this.opt('allDaySlot')){this.dayGrid=this.instantiateDayGrid()} 602this.scroller=new Scroller({overflowX:'hidden',overflowY:'auto'})},instantiateTimeGrid:function(){var subclass=this.timeGridClass.extend(agendaTimeGridMethods);return new subclass(this)},instantiateDayGrid:function(){var subclass=this.dayGridClass.extend(agendaDayGridMethods);return new subclass(this)},setRange:function(range){View.prototype.setRange.call(this,range);this.timeGrid.setRange(range);if(this.dayGrid){this.dayGrid.setRange(range)}},renderDates:function(){this.el.addClass('fc-agenda-view').html(this.renderSkeletonHtml());this.renderHead();this.scroller.render();var timeGridWrapEl=this.scroller.el.addClass('fc-time-grid-container');var timeGridEl=$('<div class="fc-time-grid" />').appendTo(timeGridWrapEl);this.el.find('.fc-body > tr > td').append(timeGridWrapEl);this.timeGrid.setElement(timeGridEl);this.timeGrid.renderDates();this.bottomRuleEl=$('<hr class="fc-divider '+this.widgetHeaderClass+'"/>').appendTo(this.timeGrid.el);if(this.dayGrid){this.dayGrid.setElement(this.el.find('.fc-day-grid'));this.dayGrid.renderDates();this.dayGrid.bottomCoordPadding=this.dayGrid.el.next('hr').outerHeight()} 603this.noScrollRowEls=this.el.find('.fc-row:not(.fc-scroller *)')},renderHead:function(){this.headContainerEl=this.el.find('.fc-head-container').html(this.timeGrid.renderHeadHtml())},unrenderDates:function(){this.timeGrid.unrenderDates();this.timeGrid.removeElement();if(this.dayGrid){this.dayGrid.unrenderDates();this.dayGrid.removeElement()} 604this.scroller.destroy()},renderSkeletonHtml:function(){return''+'<table>'+'<thead class="fc-head">'+'<tr>'+'<td class="fc-head-container '+this.widgetHeaderClass+'"></td>'+'</tr>'+'</thead>'+'<tbody class="fc-body">'+'<tr>'+'<td class="'+this.widgetContentClass+'">'+(this.dayGrid?'<div class="fc-day-grid"/>'+'<hr class="fc-divider '+this.widgetHeaderClass+'"/>':'')+'</td>'+'</tr>'+'</tbody>'+'</table>'},axisStyleAttr:function(){if(this.axisWidth!==null){return'style="width:'+this.axisWidth+'px"'} 605return''},renderBusinessHours:function(){this.timeGrid.renderBusinessHours();if(this.dayGrid){this.dayGrid.renderBusinessHours()}},unrenderBusinessHours:function(){this.timeGrid.unrenderBusinessHours();if(this.dayGrid){this.dayGrid.unrenderBusinessHours()}},getNowIndicatorUnit:function(){return this.timeGrid.getNowIndicatorUnit()},renderNowIndicator:function(date){this.timeGrid.renderNowIndicator(date)},unrenderNowIndicator:function(){this.timeGrid.unrenderNowIndicator()},updateSize:function(isResize){this.timeGrid.updateSize(isResize);View.prototype.updateSize.call(this,isResize)},updateWidth:function(){this.axisWidth=matchCellWidths(this.el.find('.fc-axis'))},setHeight:function(totalHeight,isAuto){var eventLimit;var scrollerHeight;var scrollbarWidths;this.bottomRuleEl.hide();this.scroller.clear();uncompensateScroll(this.noScrollRowEls);if(this.dayGrid){this.dayGrid.removeSegPopover();eventLimit=this.opt('eventLimit');if(eventLimit&&typeof eventLimit!=='number'){eventLimit=AGENDA_ALL_DAY_EVENT_LIMIT} 606if(eventLimit){this.dayGrid.limitRows(eventLimit)}} 607if(!isAuto){scrollerHeight=this.computeScrollerHeight(totalHeight);this.scroller.setHeight(scrollerHeight);scrollbarWidths=this.scroller.getScrollbarWidths();if(scrollbarWidths.left||scrollbarWidths.right){compensateScroll(this.noScrollRowEls,scrollbarWidths);scrollerHeight=this.computeScrollerHeight(totalHeight);this.scroller.setHeight(scrollerHeight)} 608this.scroller.lockOverflow(scrollbarWidths);if(this.timeGrid.getTotalSlatHeight()<scrollerHeight){this.bottomRuleEl.show()}}},computeScrollerHeight:function(totalHeight){return totalHeight-subtractInnerElHe
608ight(this.el,this.scroller.el)},computeInitialScroll:function(){var scrollTime=moment.duration(this.opt('scrollTime'));var top=this.timeGrid.computeTimeTop(scrollTime);top=Math.ceil(top);if(top){top++} 609return{top:top}},queryScroll:function(){return{top:this.scroller.getScrollTop()}},setScroll:function(scroll){this.scroller.setScrollTop(scroll.top)},prepareHits:function(){this.timeGrid.prepareHits();if(this.dayGrid){this.dayGrid.prepareHits()}},releaseHits:function(){this.timeGrid.releaseHits();if(this.dayGrid){this.dayGrid.releaseHits()}},queryHit:function(left,top){var hit=this.timeGrid.queryHit(left,top);if(!hit&&this.dayGrid){hit=this.dayGrid.queryHit(left,top)} 610return hit},getHitSpan:function(hit){return hit.component.getHitSpan(hit)},getHitEl:function(hit){return hit.component.getHitEl(hit)},renderEvents:function(events){var dayEvents=[];var timedEvents=[];var daySegs=[];var timedSegs;var i;for(i=0;i<events.length;i++){if(events[i].allDay){dayEvents.push(events[i])}else{timedEvents.push(events[i])}} 611timedSegs=this.timeGrid.renderEvents(timedEvents);if(this.dayGrid){daySegs=this.dayGrid.renderEvents(dayEvents)} 612this.updateHeight()},getEventSegs:function(){return this.timeGrid.getEventSegs().concat(this.dayGrid?this.dayGrid.getEventSegs():[])},unrenderEvents:function(){this.timeGrid.unrenderEvents();if(this.dayGrid){this.dayGrid.unrenderEvents()}},renderDrag:function(dropLocation,seg){if(dropLocation.start.hasTime()){return this.timeGrid.renderDrag(dropLocation,seg)}else if(this.dayGrid){return this.dayGrid.renderDrag(dropLocation,seg)}},unrenderDrag:function(){this.timeGrid.unrenderDrag();if(this.dayGrid){this.dayGrid.unrenderDrag()}},renderSelection:function(span){if(span.start.hasTime()||span.end.hasTime()){this.timeGrid.renderSelection(span)}else if(this.dayGrid){this.dayGrid.renderSelection(span)}},unrenderSelection:function(){this.timeGrid.unrenderSelection();if(this.dayGrid){this.dayGrid.unrenderSelection()}}});var agendaTimeGridMethods={renderHeadIntroHtml:function(){var view=this.view;var weekText;if(view.opt('weekNumbers')){weekText=this.start.format(view.opt('smallWeekFormat'));return''+'<th class="fc-axis fc-week-number '+view.widgetHeaderClass+'" '+view.axisStyleAttr()+'>'+view.buildGotoAnchorHtml({date:this.start,type:'week',forceOff:this.colCnt>1},htmlEscape(weekText))+'</th>'}else{return'<th class="fc-axis '+view.widgetHeaderClass+'" '+view.axisStyleAttr()+'></th>'}},renderBgIntroHtml:function(){var view=this.view;return'<td class="fc-axis '+view.widgetContentClass+'" '+view.axisStyleAttr()+'></td>'},renderIntroHtml:function(){var view=this.view;return'<td class="fc-axis" '+view.axisStyleAttr()+'></td>'}};var agendaDayGridMethods={renderBgIntroHtml:function(){var view=this.view;return''+'<td class="fc-axis '+view.widgetContentClass+'" '+view.axisStyleAttr()+'>'+'<span>'+view.getAllDayHtml()+'</span>'+'</td>'},renderIntroHtml:function(){var view=this.view;return'<td class="fc-axis" '+view.axisStyleAttr()+'></td>'}};var AGENDA_ALL_DAY_EVENT_LIMIT=5;var AGENDA_STOCK_SUB_DURATIONS=[{hours:1},{minutes:30},{minutes:15},{seconds:30},{seconds:15}];fcViews.agenda={'class':AgendaView,defaults:{allDaySlot:!0,slotDuration:'00:30:00',minTime:'00:00:00',maxTime:'24:00:00',slotEventOverlap:!0}};fcViews.agendaDay={type:'agenda',duration:{days:1}};fcViews.agendaWeek={type:'agenda',duration:{weeks:1}};var ListView=View.extend({grid:null,scroller:null,initialize:function(){this.grid=new ListViewGrid(this);this.scroller=new Scroller({overflowX:'hidden',overflowY:'auto'})},setRange:function(range){View.prototype.setRange.call(this,range);this.grid.setRange(range)},renderSkeleton:function(){this.el.addClass('fc-list-view '+this.widgetContentClass);this.scroller.render();this.scroller.el.appendTo(this.el);this.grid.setElement(this.scroller.scrollEl)},unrenderSkeleton:function(){this.scroller.destroy()},setHeight:function(totalHeight,isAuto){this.scroller.setHeight(this.computeScrollerHeight(totalHeight))},computeScrollerHeight:function(totalHeight){return totalHeight-subtractInnerElHeight(this.el,this.scroller.el)},renderEvents:function(events){this.grid.renderEvents(events)},unrenderEvents:function(){this.grid.unrenderEvents()},isEventResizable:function(event){return!1},isEventDraggable:function(event){return!1}});var ListViewGrid=Grid.extend({segSelector:'.fc-list-item',hasDayInteractions:!1,spanToSegs:function(span){var view=this.view;var dayStart=view.start.clone().time(0);var dayIndex=0;var seg;var segs=[];while(dayStart<view.end){seg=intersectRanges(span,{start:dayStart,end:dayStart.clone().add(1,'day')});if(seg){seg.dayIndex=dayIndex;segs.push(seg)} 613dayStart.add(1,'day');dayIndex++;if(seg&&!seg.isEnd&&span.end.hasTime()&&span.end<dayStart.clone().add(this.view.nextDayThreshold)){seg.end=span.end.clone();seg.isEnd=!0;break}} 614return segs},computeEventTimeFormat:function(){return this.view.opt('mediumTimeFormat')},handleSegClick:function(seg,ev){var url;Grid.prototype.handleSegClick.apply(this,arguments);if(!$(ev.target).closest('a[href]').length){url=seg.event.url;if(url&&!ev.isDefaultPrevented()){window.location.href=url}}},renderFgSegs:function(segs){segs=this.renderFgSegEls(segs);if(!segs.length){this.renderEmptyMessage()}else{this.renderSegList(segs)} 615return segs},renderEmptyMessage:function(){this.el.html('<div class="fc-list-empty-wrap2">'+'<div class="fc-list-empty-wrap1">'+'<div class="fc-list-empty">'+htmlEscape(this.view.opt('noEventsMessage'))+'</div>'+'</div>'+'</div>')},renderSegList:function(allSegs){var segsByDay=this.groupSegsByDay(allSegs);var dayIndex;var daySegs;var i;var tableEl=$('<table class="fc-list-table"><tbody/></table>');var tbodyEl=tableEl.find('tbody');for(dayIndex=0;dayIndex<segsByDay.length;dayIndex++){daySegs=segsByDay[dayIndex];if(daySegs){tbodyEl.append(this.dayHeaderHtml(this.view.start.clone().add(dayIndex,'days')));this.sortEventSegs(daySegs);for(i=0;i<daySegs.length;i++){tbodyEl.append(daySegs[i].el)}}} 616this.el.empty().append(tableEl)},groupSegsByDay:function(segs){var segsByDay=[];var i,seg;for(i=0;i<segs.length;i++){seg=segs[i];(segsByDay[seg.dayIndex]||(segsByDay[seg.dayIndex]=[])).push(seg)} 617return segsByDay},dayHeaderHtml:function(dayDate){var view=this.view;var mainFormat=view.opt('listDayFormat');var altFormat=view.opt('listDayAltFormat');return'<tr class="fc-list-heading" data-date="'+dayDate.format('YYYY-MM-DD')+'">'+'<td class="'+view.widgetHeaderClass+'" colspan="3">'+(mainFormat?view.buildGotoAnchorHtml(dayDate,{'class':'fc-list-heading-main'},htmlEscape(dayDate.format(mainFormat))):'')+(altFormat?view.buildGotoAnchorHtml(dayDate,{'class':'fc-list-heading-alt'},htmlEscape(dayDate.format(altFormat))):'')+'</td>'+'</tr>'},fgSegHtml:function(seg){var view=this.view;var classes=['fc-list-item'].concat(this.getSegCustomClasses(seg));
617var bgColor=this.getSegBackgroundColor(seg);var event=seg.event;var url=event.url;var timeHtml;if(event.allDay){timeHtml=view.getAllDayHtml()}else if(view.isMultiDayEvent(event)){if(seg.isStart||seg.isEnd){timeHtml=htmlEscape(this.getEventTimeText(seg))}else{timeHtml=view.getAllDayHtml()}}else{timeHtml=htmlEscape(this.getEventTimeText(event))} 618if(url){classes.push('fc-has-url')} 619return'<tr class="'+classes.join(' ')+'">'+(this.displayEventTime?'<td class="fc-list-item-time '+view.widgetContentClass+'">'+(timeHtml||'')+'</td>':'')+'<td class="fc-list-item-marker '+view.widgetContentClass+'">'+'<span class="fc-event-dot"'+(bgColor?' style="background-color:'+bgColor+'"':'')+'></span>'+'</td>'+'<td class="fc-list-item-title '+view.widgetContentClass+'">'+'<a'+(url?' href="'+htmlEscape(url)+'"':'')+'>'+htmlEscape(seg.event.title||'')+'</a>'+'</td>'+'</tr>'}});fcViews.list={'class':ListView,buttonTextKey:'list',defaults:{buttonText:'list',listDayFormat:'LL',noEventsMessage:'No events to display'}};fcViews.listDay={type:'list',duration:{days:1},defaults:{listDayFormat:'dddd'}};fcViews.listWeek={type:'list',duration:{weeks:1},defaults:{listDayFormat:'dddd',listDayAltFormat:'LL'}};fcViews.listMonth={type:'list',duration:{month:1},defaults:{listDayAltFormat:'dddd'}};fcViews.listYear={type:'list',duration:{year:1},defaults:{listDayAltFormat:'dddd'}};return FC})
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.