3605 lines
76 KiB
JavaScript
3605 lines
76 KiB
JavaScript
/*!
|
|
* FullCalendar v1.6.4
|
|
* Docs & License: http://arshaw.com/fullcalendar/
|
|
* (c) 2013 Adam Shaw
|
|
*/
|
|
;(function (t, e) {
|
|
function n(e) {
|
|
t.extend(!0, Ce, e)
|
|
}
|
|
function r(n, r, c) {
|
|
function u(t) {
|
|
ae ? p() && (S(), M(t)) : f()
|
|
}
|
|
function f() {
|
|
;(oe = r.theme ? 'ui' : 'fc'),
|
|
n.addClass('fc'),
|
|
r.isRTL ? n.addClass('fc-rtl') : n.addClass('fc-ltr'),
|
|
r.theme && n.addClass('ui-widget'),
|
|
(ae = t(
|
|
"<div class='fc-content' style='position:relative;'/>"
|
|
).prependTo(n)),
|
|
(ne = new a(ee, r)),
|
|
(re = ne.render()),
|
|
re && n.prepend(re),
|
|
y(r.defaultView),
|
|
r.handleWindowResize && t(window).resize(x),
|
|
m() || v()
|
|
}
|
|
function v() {
|
|
setTimeout(function () {
|
|
!ie.start && m() && C()
|
|
}, 0)
|
|
}
|
|
function h() {
|
|
ie &&
|
|
(te('viewDestroy', ie, ie, ie.element),
|
|
ie.triggerEventDestroy()),
|
|
t(window).unbind('resize', x),
|
|
ne.destroy(),
|
|
ae.remove(),
|
|
n.removeClass('fc fc-rtl ui-widget')
|
|
}
|
|
function p() {
|
|
return n.is(':visible')
|
|
}
|
|
function m() {
|
|
return t('body').is(':visible')
|
|
}
|
|
function y(t) {
|
|
;(ie && t == ie.name) || D(t)
|
|
}
|
|
function D(e) {
|
|
he++,
|
|
ie &&
|
|
(te('viewDestroy', ie, ie, ie.element),
|
|
Y(),
|
|
ie.triggerEventDestroy(),
|
|
G(),
|
|
ie.element.remove(),
|
|
ne.deactivateButton(ie.name)),
|
|
ne.activateButton(e),
|
|
(ie = new Se[e](
|
|
t(
|
|
"<div class='fc-view fc-view-" +
|
|
e +
|
|
"' style='position:relative'/>"
|
|
).appendTo(ae),
|
|
ee
|
|
)),
|
|
C(),
|
|
$(),
|
|
he--
|
|
}
|
|
function C(t) {
|
|
;(!ie.start || t || ie.start > ge || ge >= ie.end) && p() && M(t)
|
|
}
|
|
function M(t) {
|
|
he++,
|
|
ie.start && (te('viewDestroy', ie, ie, ie.element), Y(), N()),
|
|
G(),
|
|
ie.render(ge, t || 0),
|
|
T(),
|
|
$(),
|
|
(ie.afterRender || A)(),
|
|
_(),
|
|
P(),
|
|
te('viewRender', ie, ie, ie.element),
|
|
ie.trigger('viewDisplay', de),
|
|
he--,
|
|
z()
|
|
}
|
|
function E() {
|
|
p() && (Y(), N(), S(), T(), F())
|
|
}
|
|
function S() {
|
|
le = r.contentHeight
|
|
? r.contentHeight
|
|
: r.height
|
|
? r.height - (re ? re.height() : 0) - R(ae)
|
|
: Math.round(ae.width() / Math.max(r.aspectRatio, 0.5))
|
|
}
|
|
function T() {
|
|
le === e && S(),
|
|
he++,
|
|
ie.setHeight(le),
|
|
ie.setWidth(ae.width()),
|
|
he--,
|
|
(se = n.outerWidth())
|
|
}
|
|
function x() {
|
|
if (!he)
|
|
if (ie.start) {
|
|
var t = ++ve
|
|
setTimeout(function () {
|
|
t == ve &&
|
|
!he &&
|
|
p() &&
|
|
se != (se = n.outerWidth()) &&
|
|
(he++, E(), ie.trigger('windowResize', de), he--)
|
|
}, 200)
|
|
} else v()
|
|
}
|
|
function k() {
|
|
N(), W()
|
|
}
|
|
function H(t) {
|
|
N(), F(t)
|
|
}
|
|
function F(t) {
|
|
p() &&
|
|
(ie.setEventData(pe),
|
|
ie.renderEvents(pe, t),
|
|
ie.trigger('eventAfterAllRender'))
|
|
}
|
|
function N() {
|
|
ie.triggerEventDestroy(), ie.clearEvents(), ie.clearEventData()
|
|
}
|
|
function z() {
|
|
!r.lazyFetching || ue(ie.visStart, ie.visEnd) ? W() : F()
|
|
}
|
|
function W() {
|
|
fe(ie.visStart, ie.visEnd)
|
|
}
|
|
function O(t) {
|
|
;(pe = t), F()
|
|
}
|
|
function L(t) {
|
|
H(t)
|
|
}
|
|
function _() {
|
|
ne.updateTitle(ie.title)
|
|
}
|
|
function P() {
|
|
var t = new Date()
|
|
t >= ie.start && ie.end > t
|
|
? ne.disableButton('today')
|
|
: ne.enableButton('today')
|
|
}
|
|
function q(t, n, r) {
|
|
ie.select(t, n, r === e ? !0 : r)
|
|
}
|
|
function Y() {
|
|
ie && ie.unselect()
|
|
}
|
|
function B() {
|
|
C(-1)
|
|
}
|
|
function j() {
|
|
C(1)
|
|
}
|
|
function I() {
|
|
i(ge, -1), C()
|
|
}
|
|
function X() {
|
|
i(ge, 1), C()
|
|
}
|
|
function J() {
|
|
;(ge = new Date()), C()
|
|
}
|
|
function V(t, e, n) {
|
|
t instanceof Date ? (ge = d(t)) : g(ge, t, e, n), C()
|
|
}
|
|
function U(t, n, r) {
|
|
t !== e && i(ge, t), n !== e && s(ge, n), r !== e && l(ge, r), C()
|
|
}
|
|
function Z() {
|
|
return d(ge)
|
|
}
|
|
function G() {
|
|
ae.css({ width: '100%', height: ae.height(), overflow: 'hidden' })
|
|
}
|
|
function $() {
|
|
ae.css({ width: '', height: '', overflow: '' })
|
|
}
|
|
function Q() {
|
|
return ie
|
|
}
|
|
function K(t, n) {
|
|
return n === e
|
|
? r[t]
|
|
: (('height' == t ||
|
|
'contentHeight' == t ||
|
|
'aspectRatio' == t) &&
|
|
((r[t] = n), E()),
|
|
e)
|
|
}
|
|
function te(t, n) {
|
|
return r[t]
|
|
? r[t].apply(n || de, Array.prototype.slice.call(arguments, 2))
|
|
: e
|
|
}
|
|
var ee = this
|
|
;(ee.options = r),
|
|
(ee.render = u),
|
|
(ee.destroy = h),
|
|
(ee.refetchEvents = k),
|
|
(ee.reportEvents = O),
|
|
(ee.reportEventChange = L),
|
|
(ee.rerenderEvents = H),
|
|
(ee.changeView = y),
|
|
(ee.select = q),
|
|
(ee.unselect = Y),
|
|
(ee.prev = B),
|
|
(ee.next = j),
|
|
(ee.prevYear = I),
|
|
(ee.nextYear = X),
|
|
(ee.today = J),
|
|
(ee.gotoDate = V),
|
|
(ee.incrementDate = U),
|
|
(ee.formatDate = function (t, e) {
|
|
return w(t, e, r)
|
|
}),
|
|
(ee.formatDates = function (t, e, n) {
|
|
return b(t, e, n, r)
|
|
}),
|
|
(ee.getDate = Z),
|
|
(ee.getView = Q),
|
|
(ee.option = K),
|
|
(ee.trigger = te),
|
|
o.call(ee, r, c)
|
|
var ne,
|
|
re,
|
|
ae,
|
|
oe,
|
|
ie,
|
|
se,
|
|
le,
|
|
ce,
|
|
ue = ee.isFetchNeeded,
|
|
fe = ee.fetchEvents,
|
|
de = n[0],
|
|
ve = 0,
|
|
he = 0,
|
|
ge = new Date(),
|
|
pe = []
|
|
g(ge, r.year, r.month, r.date),
|
|
r.droppable &&
|
|
t(document)
|
|
.bind('dragstart', function (e, n) {
|
|
var a = e.target,
|
|
o = t(a)
|
|
if (!o.parents('.fc').length) {
|
|
var i = r.dropAccept
|
|
;(t.isFunction(i) ? i.call(a, o) : o.is(i)) &&
|
|
((ce = a), ie.dragStart(ce, e, n))
|
|
}
|
|
})
|
|
.bind('dragstop', function (t, e) {
|
|
ce && (ie.dragStop(ce, t, e), (ce = null))
|
|
})
|
|
}
|
|
function a(n, r) {
|
|
function a() {
|
|
v = r.theme ? 'ui' : 'fc'
|
|
var n = r.header
|
|
return n
|
|
? (h = t(
|
|
"<table class='fc-header' style='width:100%'/>"
|
|
).append(
|
|
t('<tr/>')
|
|
.append(i('left'))
|
|
.append(i('center'))
|
|
.append(i('right'))
|
|
))
|
|
: e
|
|
}
|
|
function o() {
|
|
h.remove()
|
|
}
|
|
function i(e) {
|
|
var a = t("<td class='fc-header-" + e + "'/>"),
|
|
o = r.header[e]
|
|
return (
|
|
o &&
|
|
t.each(o.split(' '), function (e) {
|
|
e > 0 && a.append("<span class='fc-header-space'/>")
|
|
var o
|
|
t.each(this.split(','), function (e, i) {
|
|
if ('title' == i)
|
|
a.append(
|
|
"<span class='fc-header-title'><h2> </h2></span>"
|
|
),
|
|
o && o.addClass(v + '-corner-right'),
|
|
(o = null)
|
|
else {
|
|
var s
|
|
if (
|
|
(n[i]
|
|
? (s = n[i])
|
|
: Se[i] &&
|
|
(s = function () {
|
|
u.removeClass(
|
|
v + '-state-hover'
|
|
),
|
|
n.changeView(i)
|
|
}),
|
|
s)
|
|
) {
|
|
var l = r.theme
|
|
? P(r.buttonIcons, i)
|
|
: null,
|
|
c = P(r.buttonText, i),
|
|
u = t(
|
|
"<span class='fc-button fc-button-" +
|
|
i +
|
|
' ' +
|
|
v +
|
|
"-state-default'>" +
|
|
(l
|
|
? "<span class='fc-icon-wrap'><span class='ui-icon ui-icon-" +
|
|
l +
|
|
"'/>" +
|
|
'</span>'
|
|
: c) +
|
|
'</span>'
|
|
)
|
|
.click(function () {
|
|
u.hasClass(
|
|
v + '-state-disabled'
|
|
) || s()
|
|
})
|
|
.mousedown(function () {
|
|
u.not('.' + v + '-state-active')
|
|
.not(
|
|
'.' +
|
|
v +
|
|
'-state-disabled'
|
|
)
|
|
.addClass(v + '-state-down')
|
|
})
|
|
.mouseup(function () {
|
|
u.removeClass(v + '-state-down')
|
|
})
|
|
.hover(
|
|
function () {
|
|
u.not(
|
|
'.' +
|
|
v +
|
|
'-state-active'
|
|
)
|
|
.not(
|
|
'.' +
|
|
v +
|
|
'-state-disabled'
|
|
)
|
|
.addClass(
|
|
v + '-state-hover'
|
|
)
|
|
},
|
|
function () {
|
|
u.removeClass(
|
|
v + '-state-hover'
|
|
).removeClass(
|
|
v + '-state-down'
|
|
)
|
|
}
|
|
)
|
|
.appendTo(a)
|
|
Y(u),
|
|
o || u.addClass(v + '-corner-left'),
|
|
(o = u)
|
|
}
|
|
}
|
|
}),
|
|
o && o.addClass(v + '-corner-right')
|
|
}),
|
|
a
|
|
)
|
|
}
|
|
function s(t) {
|
|
h.find('h2').html(t)
|
|
}
|
|
function l(t) {
|
|
h.find('span.fc-button-' + t).addClass(v + '-state-active')
|
|
}
|
|
function c(t) {
|
|
h.find('span.fc-button-' + t).removeClass(v + '-state-active')
|
|
}
|
|
function u(t) {
|
|
h.find('span.fc-button-' + t).addClass(v + '-state-disabled')
|
|
}
|
|
function f(t) {
|
|
h.find('span.fc-button-' + t).removeClass(v + '-state-disabled')
|
|
}
|
|
var d = this
|
|
;(d.render = a),
|
|
(d.destroy = o),
|
|
(d.updateTitle = s),
|
|
(d.activateButton = l),
|
|
(d.deactivateButton = c),
|
|
(d.disableButton = u),
|
|
(d.enableButton = f)
|
|
var v,
|
|
h = t([])
|
|
}
|
|
function o(n, r) {
|
|
function a(t, e) {
|
|
return !E || E > t || e > S
|
|
}
|
|
function o(t, e) {
|
|
;(E = t), (S = e), (W = [])
|
|
var n = ++R,
|
|
r = F.length
|
|
N = r
|
|
for (var a = 0; r > a; a++) i(F[a], n)
|
|
}
|
|
function i(e, r) {
|
|
s(e, function (a) {
|
|
if (r == R) {
|
|
if (a) {
|
|
n.eventDataTransform &&
|
|
(a = t.map(a, n.eventDataTransform)),
|
|
e.eventDataTransform &&
|
|
(a = t.map(a, e.eventDataTransform))
|
|
for (var o = 0; a.length > o; o++)
|
|
(a[o].source = e), w(a[o])
|
|
W = W.concat(a)
|
|
}
|
|
N--, N || k(W)
|
|
}
|
|
})
|
|
}
|
|
function s(r, a) {
|
|
var o,
|
|
i,
|
|
l = Ee.sourceFetchers
|
|
for (o = 0; l.length > o; o++) {
|
|
if (((i = l[o](r, E, S, a)), i === !0)) return
|
|
if ('object' == typeof i) return s(i, a), e
|
|
}
|
|
var c = r.events
|
|
if (c)
|
|
t.isFunction(c)
|
|
? (m(),
|
|
c(d(E), d(S), function (t) {
|
|
a(t), y()
|
|
}))
|
|
: t.isArray(c)
|
|
? a(c)
|
|
: a()
|
|
else {
|
|
var u = r.url
|
|
if (u) {
|
|
var f,
|
|
v = r.success,
|
|
h = r.error,
|
|
g = r.complete
|
|
f = t.isFunction(r.data) ? r.data() : r.data
|
|
var p = t.extend({}, f || {}),
|
|
w = X(r.startParam, n.startParam),
|
|
b = X(r.endParam, n.endParam)
|
|
w && (p[w] = Math.round(+E / 1e3)),
|
|
b && (p[b] = Math.round(+S / 1e3)),
|
|
m(),
|
|
t.ajax(
|
|
t.extend({}, Te, r, {
|
|
data: p,
|
|
success: function (e) {
|
|
e = e || []
|
|
var n = I(v, this, arguments)
|
|
t.isArray(n) && (e = n), a(e)
|
|
},
|
|
error: function () {
|
|
I(h, this, arguments), a()
|
|
},
|
|
complete: function () {
|
|
I(g, this, arguments), y()
|
|
},
|
|
})
|
|
)
|
|
} else a()
|
|
}
|
|
}
|
|
function l(t) {
|
|
;(t = c(t)), t && (N++, i(t, R))
|
|
}
|
|
function c(n) {
|
|
return (
|
|
t.isFunction(n) || t.isArray(n)
|
|
? (n = { events: n })
|
|
: 'string' == typeof n && (n = { url: n }),
|
|
'object' == typeof n ? (b(n), F.push(n), n) : e
|
|
)
|
|
}
|
|
function u(e) {
|
|
;(F = t.grep(F, function (t) {
|
|
return !D(t, e)
|
|
})),
|
|
(W = t.grep(W, function (t) {
|
|
return !D(t.source, e)
|
|
})),
|
|
k(W)
|
|
}
|
|
function f(t) {
|
|
var e,
|
|
n,
|
|
r = W.length,
|
|
a = x().defaultEventEnd,
|
|
o = t.start - t._start,
|
|
i = t.end ? t.end - (t._end || a(t)) : 0
|
|
for (e = 0; r > e; e++)
|
|
(n = W[e]),
|
|
n._id == t._id &&
|
|
n != t &&
|
|
((n.start = new Date(+n.start + o)),
|
|
(n.end = t.end
|
|
? n.end
|
|
? new Date(+n.end + i)
|
|
: new Date(+a(n) + i)
|
|
: null),
|
|
(n.title = t.title),
|
|
(n.url = t.url),
|
|
(n.allDay = t.allDay),
|
|
(n.className = t.className),
|
|
(n.editable = t.editable),
|
|
(n.color = t.color),
|
|
(n.backgroundColor = t.backgroundColor),
|
|
(n.borderColor = t.borderColor),
|
|
(n.textColor = t.textColor),
|
|
w(n))
|
|
w(t), k(W)
|
|
}
|
|
function v(t, e) {
|
|
w(t),
|
|
t.source ||
|
|
(e && (H.events.push(t), (t.source = H)), W.push(t)),
|
|
k(W)
|
|
}
|
|
function h(e) {
|
|
if (e) {
|
|
if (!t.isFunction(e)) {
|
|
var n = e + ''
|
|
e = function (t) {
|
|
return t._id == n
|
|
}
|
|
}
|
|
W = t.grep(W, e, !0)
|
|
for (var r = 0; F.length > r; r++)
|
|
t.isArray(F[r].events) &&
|
|
(F[r].events = t.grep(F[r].events, e, !0))
|
|
} else {
|
|
W = []
|
|
for (var r = 0; F.length > r; r++)
|
|
t.isArray(F[r].events) && (F[r].events = [])
|
|
}
|
|
k(W)
|
|
}
|
|
function g(e) {
|
|
return t.isFunction(e)
|
|
? t.grep(W, e)
|
|
: e
|
|
? ((e += ''),
|
|
t.grep(W, function (t) {
|
|
return t._id == e
|
|
}))
|
|
: W
|
|
}
|
|
function m() {
|
|
z++ || T('loading', null, !0, x())
|
|
}
|
|
function y() {
|
|
--z || T('loading', null, !1, x())
|
|
}
|
|
function w(t) {
|
|
var r = t.source || {},
|
|
a = X(r.ignoreTimezone, n.ignoreTimezone)
|
|
;(t._id = t._id || (t.id === e ? '_fc' + xe++ : t.id + '')),
|
|
t.date && (t.start || (t.start = t.date), delete t.date),
|
|
(t._start = d((t.start = p(t.start, a)))),
|
|
(t.end = p(t.end, a)),
|
|
t.end && t.end <= t.start && (t.end = null),
|
|
(t._end = t.end ? d(t.end) : null),
|
|
t.allDay === e &&
|
|
(t.allDay = X(r.allDayDefault, n.allDayDefault)),
|
|
t.className
|
|
? 'string' == typeof t.className &&
|
|
(t.className = t.className.split(/\s+/))
|
|
: (t.className = [])
|
|
}
|
|
function b(t) {
|
|
t.className
|
|
? 'string' == typeof t.className &&
|
|
(t.className = t.className.split(/\s+/))
|
|
: (t.className = [])
|
|
for (var e = Ee.sourceNormalizers, n = 0; e.length > n; n++) e[n](t)
|
|
}
|
|
function D(t, e) {
|
|
return t && e && C(t) == C(e)
|
|
}
|
|
function C(t) {
|
|
return ('object' == typeof t ? t.events || t.url : '') || t
|
|
}
|
|
var M = this
|
|
;(M.isFetchNeeded = a),
|
|
(M.fetchEvents = o),
|
|
(M.addEventSource = l),
|
|
(M.removeEventSource = u),
|
|
(M.updateEvent = f),
|
|
(M.renderEvent = v),
|
|
(M.removeEvents = h),
|
|
(M.clientEvents = g),
|
|
(M.normalizeEvent = w)
|
|
for (
|
|
var E,
|
|
S,
|
|
T = M.trigger,
|
|
x = M.getView,
|
|
k = M.reportEvents,
|
|
H = { events: [] },
|
|
F = [H],
|
|
R = 0,
|
|
N = 0,
|
|
z = 0,
|
|
W = [],
|
|
A = 0;
|
|
r.length > A;
|
|
A++
|
|
)
|
|
c(r[A])
|
|
}
|
|
function i(t, e, n) {
|
|
return t.setFullYear(t.getFullYear() + e), n || f(t), t
|
|
}
|
|
function s(t, e, n) {
|
|
if (+t) {
|
|
var r = t.getMonth() + e,
|
|
a = d(t)
|
|
for (
|
|
a.setDate(1), a.setMonth(r), t.setMonth(r), n || f(t);
|
|
t.getMonth() != a.getMonth();
|
|
|
|
)
|
|
t.setDate(t.getDate() + (a > t ? 1 : -1))
|
|
}
|
|
return t
|
|
}
|
|
function l(t, e, n) {
|
|
if (+t) {
|
|
var r = t.getDate() + e,
|
|
a = d(t)
|
|
a.setHours(9), a.setDate(r), t.setDate(r), n || f(t), c(t, a)
|
|
}
|
|
return t
|
|
}
|
|
function c(t, e) {
|
|
if (+t)
|
|
for (; t.getDate() != e.getDate(); )
|
|
t.setTime(+t + (e > t ? 1 : -1) * Fe)
|
|
}
|
|
function u(t, e) {
|
|
return t.setMinutes(t.getMinutes() + e), t
|
|
}
|
|
function f(t) {
|
|
return (
|
|
t.setHours(0),
|
|
t.setMinutes(0),
|
|
t.setSeconds(0),
|
|
t.setMilliseconds(0),
|
|
t
|
|
)
|
|
}
|
|
function d(t, e) {
|
|
return e ? f(new Date(+t)) : new Date(+t)
|
|
}
|
|
function v() {
|
|
var t,
|
|
e = 0
|
|
do t = new Date(1970, e++, 1)
|
|
while (t.getHours())
|
|
return t
|
|
}
|
|
function h(t, e) {
|
|
return Math.round((d(t, !0) - d(e, !0)) / He)
|
|
}
|
|
function g(t, n, r, a) {
|
|
n !== e &&
|
|
n != t.getFullYear() &&
|
|
(t.setDate(1), t.setMonth(0), t.setFullYear(n)),
|
|
r !== e && r != t.getMonth() && (t.setDate(1), t.setMonth(r)),
|
|
a !== e && t.setDate(a)
|
|
}
|
|
function p(t, n) {
|
|
return 'object' == typeof t
|
|
? t
|
|
: 'number' == typeof t
|
|
? new Date(1e3 * t)
|
|
: 'string' == typeof t
|
|
? t.match(/^\d+(\.\d+)?$/)
|
|
? new Date(1e3 * parseFloat(t))
|
|
: (n === e && (n = !0), m(t, n) || (t ? new Date(t) : null))
|
|
: null
|
|
}
|
|
function m(t, e) {
|
|
var n = t.match(
|
|
/^([0-9]{4})(-([0-9]{2})(-([0-9]{2})([T ]([0-9]{2}):([0-9]{2})(:([0-9]{2})(\.([0-9]+))?)?(Z|(([-+])([0-9]{2})(:?([0-9]{2}))?))?)?)?)?$/
|
|
)
|
|
if (!n) return null
|
|
var r = new Date(n[1], 0, 1)
|
|
if (e || !n[13]) {
|
|
var a = new Date(n[1], 0, 1, 9, 0)
|
|
n[3] && (r.setMonth(n[3] - 1), a.setMonth(n[3] - 1)),
|
|
n[5] && (r.setDate(n[5]), a.setDate(n[5])),
|
|
c(r, a),
|
|
n[7] && r.setHours(n[7]),
|
|
n[8] && r.setMinutes(n[8]),
|
|
n[10] && r.setSeconds(n[10]),
|
|
n[12] && r.setMilliseconds(1e3 * Number('0.' + n[12])),
|
|
c(r, a)
|
|
} else if (
|
|
(r.setUTCFullYear(n[1], n[3] ? n[3] - 1 : 0, n[5] || 1),
|
|
r.setUTCHours(
|
|
n[7] || 0,
|
|
n[8] || 0,
|
|
n[10] || 0,
|
|
n[12] ? 1e3 * Number('0.' + n[12]) : 0
|
|
),
|
|
n[14])
|
|
) {
|
|
var o = 60 * Number(n[16]) + (n[18] ? Number(n[18]) : 0)
|
|
;(o *= '-' == n[15] ? 1 : -1), (r = new Date(+r + 1e3 * 60 * o))
|
|
}
|
|
return r
|
|
}
|
|
function y(t) {
|
|
if ('number' == typeof t) return 60 * t
|
|
if ('object' == typeof t) return 60 * t.getHours() + t.getMinutes()
|
|
var e = t.match(/(\d+)(?::(\d+))?\s*(\w+)?/)
|
|
if (e) {
|
|
var n = parseInt(e[1], 10)
|
|
return (
|
|
e[3] &&
|
|
((n %= 12),
|
|
'p' == e[3].toLowerCase().charAt(0) && (n += 12)),
|
|
60 * n + (e[2] ? parseInt(e[2], 10) : 0)
|
|
)
|
|
}
|
|
}
|
|
function w(t, e, n) {
|
|
return b(t, null, e, n)
|
|
}
|
|
function b(t, e, n, r) {
|
|
r = r || Ce
|
|
var a,
|
|
o,
|
|
i,
|
|
s,
|
|
l = t,
|
|
c = e,
|
|
u = n.length,
|
|
f = ''
|
|
for (a = 0; u > a; a++)
|
|
if (((o = n.charAt(a)), "'" == o)) {
|
|
for (i = a + 1; u > i; i++)
|
|
if ("'" == n.charAt(i)) {
|
|
l &&
|
|
((f += i == a + 1 ? "'" : n.substring(a + 1, i)),
|
|
(a = i))
|
|
break
|
|
}
|
|
} else if ('(' == o) {
|
|
for (i = a + 1; u > i; i++)
|
|
if (')' == n.charAt(i)) {
|
|
var d = w(l, n.substring(a + 1, i), r)
|
|
parseInt(d.replace(/\D/, ''), 10) && (f += d), (a = i)
|
|
break
|
|
}
|
|
} else if ('[' == o) {
|
|
for (i = a + 1; u > i; i++)
|
|
if (']' == n.charAt(i)) {
|
|
var v = n.substring(a + 1, i),
|
|
d = w(l, v, r)
|
|
d != w(c, v, r) && (f += d), (a = i)
|
|
break
|
|
}
|
|
} else if ('{' == o) (l = e), (c = t)
|
|
else if ('}' == o) (l = t), (c = e)
|
|
else {
|
|
for (i = u; i > a; i--)
|
|
if ((s = Ne[n.substring(a, i)])) {
|
|
l && (f += s(l, r)), (a = i - 1)
|
|
break
|
|
}
|
|
i == a && l && (f += o)
|
|
}
|
|
return f
|
|
}
|
|
function D(t) {
|
|
var e,
|
|
n = new Date(t.getTime())
|
|
return (
|
|
n.setDate(n.getDate() + 4 - (n.getDay() || 7)),
|
|
(e = n.getTime()),
|
|
n.setMonth(0),
|
|
n.setDate(1),
|
|
Math.floor(Math.round((e - n) / 864e5) / 7) + 1
|
|
)
|
|
}
|
|
function C(t) {
|
|
return t.end ? M(t.end, t.allDay) : l(d(t.start), 1)
|
|
}
|
|
function M(t, e) {
|
|
return (t = d(t)), e || t.getHours() || t.getMinutes() ? l(t, 1) : f(t)
|
|
}
|
|
function E(n, r, a) {
|
|
n.unbind('mouseover').mouseover(function (n) {
|
|
for (var o, i, s, l = n.target; l != this; )
|
|
(o = l), (l = l.parentNode)
|
|
;(i = o._fci) !== e &&
|
|
((o._fci = e),
|
|
(s = r[i]),
|
|
a(s.event, s.element, s),
|
|
t(n.target).trigger(n)),
|
|
n.stopPropagation()
|
|
})
|
|
}
|
|
function S(e, n, r) {
|
|
for (var a, o = 0; e.length > o; o++)
|
|
(a = t(e[o])), a.width(Math.max(0, n - x(a, r)))
|
|
}
|
|
function T(e, n, r) {
|
|
for (var a, o = 0; e.length > o; o++)
|
|
(a = t(e[o])), a.height(Math.max(0, n - R(a, r)))
|
|
}
|
|
function x(t, e) {
|
|
return k(t) + F(t) + (e ? H(t) : 0)
|
|
}
|
|
function k(e) {
|
|
return (
|
|
(parseFloat(t.css(e[0], 'paddingLeft', !0)) || 0) +
|
|
(parseFloat(t.css(e[0], 'paddingRight', !0)) || 0)
|
|
)
|
|
}
|
|
function H(e) {
|
|
return (
|
|
(parseFloat(t.css(e[0], 'marginLeft', !0)) || 0) +
|
|
(parseFloat(t.css(e[0], 'marginRight', !0)) || 0)
|
|
)
|
|
}
|
|
function F(e) {
|
|
return (
|
|
(parseFloat(t.css(e[0], 'borderLeftWidth', !0)) || 0) +
|
|
(parseFloat(t.css(e[0], 'borderRightWidth', !0)) || 0)
|
|
)
|
|
}
|
|
function R(t, e) {
|
|
return N(t) + W(t) + (e ? z(t) : 0)
|
|
}
|
|
function N(e) {
|
|
return (
|
|
(parseFloat(t.css(e[0], 'paddingTop', !0)) || 0) +
|
|
(parseFloat(t.css(e[0], 'paddingBottom', !0)) || 0)
|
|
)
|
|
}
|
|
function z(e) {
|
|
return (
|
|
(parseFloat(t.css(e[0], 'marginTop', !0)) || 0) +
|
|
(parseFloat(t.css(e[0], 'marginBottom', !0)) || 0)
|
|
)
|
|
}
|
|
function W(e) {
|
|
return (
|
|
(parseFloat(t.css(e[0], 'borderTopWidth', !0)) || 0) +
|
|
(parseFloat(t.css(e[0], 'borderBottomWidth', !0)) || 0)
|
|
)
|
|
}
|
|
function A() {}
|
|
function O(t, e) {
|
|
return t - e
|
|
}
|
|
function L(t) {
|
|
return Math.max.apply(Math, t)
|
|
}
|
|
function _(t) {
|
|
return (10 > t ? '0' : '') + t
|
|
}
|
|
function P(t, n) {
|
|
if (t[n] !== e) return t[n]
|
|
for (var r, a = n.split(/(?=[A-Z])/), o = a.length - 1; o >= 0; o--)
|
|
if (((r = t[a[o].toLowerCase()]), r !== e)) return r
|
|
return t['']
|
|
}
|
|
function q(t) {
|
|
return t
|
|
.replace(/&/g, '&')
|
|
.replace(/</g, '<')
|
|
.replace(/>/g, '>')
|
|
.replace(/'/g, ''')
|
|
.replace(/"/g, '"')
|
|
.replace(/\n/g, '<br />')
|
|
}
|
|
function Y(t) {
|
|
t.attr('unselectable', 'on')
|
|
.css('MozUserSelect', 'none')
|
|
.bind('selectstart.ui', function () {
|
|
return !1
|
|
})
|
|
}
|
|
function B(t) {
|
|
t.children()
|
|
.removeClass('fc-first fc-last')
|
|
.filter(':first-child')
|
|
.addClass('fc-first')
|
|
.end()
|
|
.filter(':last-child')
|
|
.addClass('fc-last')
|
|
}
|
|
function j(t, e) {
|
|
var n = t.source || {},
|
|
r = t.color,
|
|
a = n.color,
|
|
o = e('eventColor'),
|
|
i =
|
|
t.backgroundColor ||
|
|
r ||
|
|
n.backgroundColor ||
|
|
a ||
|
|
e('eventBackgroundColor') ||
|
|
o,
|
|
s =
|
|
t.borderColor ||
|
|
r ||
|
|
n.borderColor ||
|
|
a ||
|
|
e('eventBorderColor') ||
|
|
o,
|
|
l = t.textColor || n.textColor || e('eventTextColor'),
|
|
c = []
|
|
return (
|
|
i && c.push('background-color:' + i),
|
|
s && c.push('border-color:' + s),
|
|
l && c.push('color:' + l),
|
|
c.join(';')
|
|
)
|
|
}
|
|
function I(e, n, r) {
|
|
if ((t.isFunction(e) && (e = [e]), e)) {
|
|
var a, o
|
|
for (a = 0; e.length > a; a++) o = e[a].apply(n, r) || o
|
|
return o
|
|
}
|
|
}
|
|
function X() {
|
|
for (var t = 0; arguments.length > t; t++)
|
|
if (arguments[t] !== e) return arguments[t]
|
|
}
|
|
function J(t, e) {
|
|
function n(t, e) {
|
|
e && (s(t, e), t.setDate(1))
|
|
var n = a('firstDay'),
|
|
f = d(t, !0)
|
|
f.setDate(1)
|
|
var v = s(d(f), 1),
|
|
g = d(f)
|
|
l(g, -((g.getDay() - n + 7) % 7)), i(g)
|
|
var p = d(v)
|
|
l(p, (7 - p.getDay() + n) % 7), i(p, -1, !0)
|
|
var m = c(),
|
|
y = Math.round(h(p, g) / 7)
|
|
'fixed' == a('weekMode') && (l(p, 7 * (6 - y)), (y = 6)),
|
|
(r.title = u(f, a('titleFormat'))),
|
|
(r.start = f),
|
|
(r.end = v),
|
|
(r.visStart = g),
|
|
(r.visEnd = p),
|
|
o(y, m, !0)
|
|
}
|
|
var r = this
|
|
;(r.render = n), Z.call(r, t, e, 'month')
|
|
var a = r.opt,
|
|
o = r.renderBasic,
|
|
i = r.skipHiddenDays,
|
|
c = r.getCellsPerWeek,
|
|
u = e.formatDate
|
|
}
|
|
function V(t, e) {
|
|
function n(t, e) {
|
|
e && l(t, 7 * e)
|
|
var n = l(d(t), -((t.getDay() - a('firstDay') + 7) % 7)),
|
|
u = l(d(n), 7),
|
|
f = d(n)
|
|
i(f)
|
|
var v = d(u)
|
|
i(v, -1, !0)
|
|
var h = s()
|
|
;(r.start = n),
|
|
(r.end = u),
|
|
(r.visStart = f),
|
|
(r.visEnd = v),
|
|
(r.title = c(f, l(d(v), -1), a('titleFormat'))),
|
|
o(1, h, !1)
|
|
}
|
|
var r = this
|
|
;(r.render = n), Z.call(r, t, e, 'basicWeek')
|
|
var a = r.opt,
|
|
o = r.renderBasic,
|
|
i = r.skipHiddenDays,
|
|
s = r.getCellsPerWeek,
|
|
c = e.formatDates
|
|
}
|
|
function U(t, e) {
|
|
function n(t, e) {
|
|
e && l(t, e), i(t, 0 > e ? -1 : 1)
|
|
var n = d(t, !0),
|
|
c = l(d(n), 1)
|
|
;(r.title = s(t, a('titleFormat'))),
|
|
(r.start = r.visStart = n),
|
|
(r.end = r.visEnd = c),
|
|
o(1, 1, !1)
|
|
}
|
|
var r = this
|
|
;(r.render = n), Z.call(r, t, e, 'basicDay')
|
|
var a = r.opt,
|
|
o = r.renderBasic,
|
|
i = r.skipHiddenDays,
|
|
s = e.formatDate
|
|
}
|
|
function Z(e, n, r) {
|
|
function a(t, e, n) {
|
|
;(ee = t), (ne = e), (re = n), o(), j || i(), s()
|
|
}
|
|
function o() {
|
|
;(le = he('theme') ? 'ui' : 'fc'),
|
|
(ce = he('columnFormat')),
|
|
(ue = he('weekNumbers')),
|
|
(de = he('weekNumberTitle')),
|
|
(ve = 'iso' != he('weekNumberCalculation') ? 'w' : 'W')
|
|
}
|
|
function i() {
|
|
Z = t(
|
|
"<div class='fc-event-container' style='position:absolute;z-index:8;top:0;left:0'/>"
|
|
).appendTo(e)
|
|
}
|
|
function s() {
|
|
var n = c()
|
|
L && L.remove(),
|
|
(L = t(n).appendTo(e)),
|
|
(_ = L.find('thead')),
|
|
(P = _.find('.fc-day-header')),
|
|
(j = L.find('tbody')),
|
|
(I = j.find('tr')),
|
|
(X = j.find('.fc-day')),
|
|
(J = I.find('td:first-child')),
|
|
(V = I.eq(0).find('.fc-day > div')),
|
|
(U = I.eq(0).find('.fc-day-content > div')),
|
|
B(_.add(_.find('tr'))),
|
|
B(I),
|
|
I.eq(0).addClass('fc-first'),
|
|
I.filter(':last').addClass('fc-last'),
|
|
X.each(function (e, n) {
|
|
var r = Ee(Math.floor(e / ne), e % ne)
|
|
ge('dayRender', O, r, t(n))
|
|
}),
|
|
y(X)
|
|
}
|
|
function c() {
|
|
var t =
|
|
"<table class='fc-border-separate' style='width:100%' cellspacing='0'>" +
|
|
u() +
|
|
v() +
|
|
'</table>'
|
|
return t
|
|
}
|
|
function u() {
|
|
var t,
|
|
e,
|
|
n = le + '-widget-header',
|
|
r = ''
|
|
for (
|
|
r += '<thead><tr>',
|
|
ue &&
|
|
(r +=
|
|
"<th class='fc-week-number " +
|
|
n +
|
|
"'>" +
|
|
q(de) +
|
|
'</th>'),
|
|
t = 0;
|
|
ne > t;
|
|
t++
|
|
)
|
|
(e = Ee(0, t)),
|
|
(r +=
|
|
"<th class='fc-day-header fc-" +
|
|
ke[e.getDay()] +
|
|
' ' +
|
|
n +
|
|
"'>" +
|
|
q(xe(e, ce)) +
|
|
'</th>')
|
|
return (r += '</tr></thead>')
|
|
}
|
|
function v() {
|
|
var t,
|
|
e,
|
|
n,
|
|
r = le + '-widget-content',
|
|
a = ''
|
|
for (a += '<tbody>', t = 0; ee > t; t++) {
|
|
for (
|
|
a += "<tr class='fc-week'>",
|
|
ue &&
|
|
((n = Ee(t, 0)),
|
|
(a +=
|
|
"<td class='fc-week-number " +
|
|
r +
|
|
"'>" +
|
|
'<div>' +
|
|
q(xe(n, ve)) +
|
|
'</div>' +
|
|
'</td>')),
|
|
e = 0;
|
|
ne > e;
|
|
e++
|
|
)
|
|
(n = Ee(t, e)), (a += h(n))
|
|
a += '</tr>'
|
|
}
|
|
return (a += '</tbody>')
|
|
}
|
|
function h(t) {
|
|
var e = le + '-widget-content',
|
|
n = O.start.getMonth(),
|
|
r = f(new Date()),
|
|
a = '',
|
|
o = ['fc-day', 'fc-' + ke[t.getDay()], e]
|
|
return (
|
|
t.getMonth() != n && o.push('fc-other-month'),
|
|
+t == +r
|
|
? o.push('fc-today', le + '-state-highlight')
|
|
: r > t
|
|
? o.push('fc-past')
|
|
: o.push('fc-future'),
|
|
(a +=
|
|
"<td class='" +
|
|
o.join(' ') +
|
|
"'" +
|
|
" data-date='" +
|
|
xe(t, 'yyyy-MM-dd') +
|
|
"'" +
|
|
'>' +
|
|
'<div>'),
|
|
re &&
|
|
(a +=
|
|
"<div class='fc-day-number'>" + t.getDate() + '</div>'),
|
|
(a +=
|
|
"<div class='fc-day-content'><div style='position:relative'> </div></div></div></td>")
|
|
)
|
|
}
|
|
function g(e) {
|
|
Q = e
|
|
var n,
|
|
r,
|
|
a,
|
|
o = Q - _.height()
|
|
'variable' == he('weekMode')
|
|
? (n = r = Math.floor(o / (1 == ee ? 2 : 6)))
|
|
: ((n = Math.floor(o / ee)), (r = o - n * (ee - 1))),
|
|
J.each(function (e, o) {
|
|
ee > e &&
|
|
((a = t(o)),
|
|
a
|
|
.find('> div')
|
|
.css('min-height', (e == ee - 1 ? r : n) - R(a)))
|
|
})
|
|
}
|
|
function p(t) {
|
|
;($ = t),
|
|
ie.clear(),
|
|
se.clear(),
|
|
(te = 0),
|
|
ue && (te = _.find('th.fc-week-number').outerWidth()),
|
|
(K = Math.floor(($ - te) / ne)),
|
|
S(P.slice(0, -1), K)
|
|
}
|
|
function y(t) {
|
|
t.click(w).mousedown(Me)
|
|
}
|
|
function w(e) {
|
|
if (!he('selectable')) {
|
|
var n = m(t(this).data('date'))
|
|
ge('dayClick', this, n, !0, e)
|
|
}
|
|
}
|
|
function b(t, e, n) {
|
|
n && ae.build()
|
|
for (var r = Te(t, e), a = 0; r.length > a; a++) {
|
|
var o = r[a]
|
|
y(D(o.row, o.leftCol, o.row, o.rightCol))
|
|
}
|
|
}
|
|
function D(t, n, r, a) {
|
|
var o = ae.rect(t, n, r, a, e)
|
|
return be(o, e)
|
|
}
|
|
function C(t) {
|
|
return d(t)
|
|
}
|
|
function M(t, e) {
|
|
b(t, l(d(e), 1), !0)
|
|
}
|
|
function E() {
|
|
Ce()
|
|
}
|
|
function T(t, e, n) {
|
|
var r = Se(t),
|
|
a = X[r.row * ne + r.col]
|
|
ge('dayClick', a, t, e, n)
|
|
}
|
|
function x(t, e) {
|
|
oe.start(function (t) {
|
|
Ce(), t && D(t.row, t.col, t.row, t.col)
|
|
}, e)
|
|
}
|
|
function k(t, e, n) {
|
|
var r = oe.stop()
|
|
if ((Ce(), r)) {
|
|
var a = Ee(r)
|
|
ge('drop', t, a, !0, e, n)
|
|
}
|
|
}
|
|
function H(t) {
|
|
return d(t.start)
|
|
}
|
|
function F(t) {
|
|
return ie.left(t)
|
|
}
|
|
function N(t) {
|
|
return ie.right(t)
|
|
}
|
|
function z(t) {
|
|
return se.left(t)
|
|
}
|
|
function W(t) {
|
|
return se.right(t)
|
|
}
|
|
function A(t) {
|
|
return I.eq(t)
|
|
}
|
|
var O = this
|
|
;(O.renderBasic = a),
|
|
(O.setHeight = g),
|
|
(O.setWidth = p),
|
|
(O.renderDayOverlay = b),
|
|
(O.defaultSelectionEnd = C),
|
|
(O.renderSelection = M),
|
|
(O.clearSelection = E),
|
|
(O.reportDayClick = T),
|
|
(O.dragStart = x),
|
|
(O.dragStop = k),
|
|
(O.defaultEventEnd = H),
|
|
(O.getHoverListener = function () {
|
|
return oe
|
|
}),
|
|
(O.colLeft = F),
|
|
(O.colRight = N),
|
|
(O.colContentLeft = z),
|
|
(O.colContentRight = W),
|
|
(O.getIsCellAllDay = function () {
|
|
return !0
|
|
}),
|
|
(O.allDayRow = A),
|
|
(O.getRowCnt = function () {
|
|
return ee
|
|
}),
|
|
(O.getColCnt = function () {
|
|
return ne
|
|
}),
|
|
(O.getColWidth = function () {
|
|
return K
|
|
}),
|
|
(O.getDaySegmentContainer = function () {
|
|
return Z
|
|
}),
|
|
fe.call(O, e, n, r),
|
|
me.call(O),
|
|
pe.call(O),
|
|
G.call(O)
|
|
var L,
|
|
_,
|
|
P,
|
|
j,
|
|
I,
|
|
X,
|
|
J,
|
|
V,
|
|
U,
|
|
Z,
|
|
$,
|
|
Q,
|
|
K,
|
|
te,
|
|
ee,
|
|
ne,
|
|
re,
|
|
ae,
|
|
oe,
|
|
ie,
|
|
se,
|
|
le,
|
|
ce,
|
|
ue,
|
|
de,
|
|
ve,
|
|
he = O.opt,
|
|
ge = O.trigger,
|
|
be = O.renderOverlay,
|
|
Ce = O.clearOverlays,
|
|
Me = O.daySelectionMousedown,
|
|
Ee = O.cellToDate,
|
|
Se = O.dateToCell,
|
|
Te = O.rangeToSegments,
|
|
xe = n.formatDate
|
|
Y(e.addClass('fc-grid')),
|
|
(ae = new ye(function (e, n) {
|
|
var r, a, o
|
|
P.each(function (e, i) {
|
|
;(r = t(i)),
|
|
(a = r.offset().left),
|
|
e && (o[1] = a),
|
|
(o = [a]),
|
|
(n[e] = o)
|
|
}),
|
|
(o[1] = a + r.outerWidth()),
|
|
I.each(function (n, i) {
|
|
ee > n &&
|
|
((r = t(i)),
|
|
(a = r.offset().top),
|
|
n && (o[1] = a),
|
|
(o = [a]),
|
|
(e[n] = o))
|
|
}),
|
|
(o[1] = a + r.outerHeight())
|
|
})),
|
|
(oe = new we(ae)),
|
|
(ie = new De(function (t) {
|
|
return V.eq(t)
|
|
})),
|
|
(se = new De(function (t) {
|
|
return U.eq(t)
|
|
}))
|
|
}
|
|
function G() {
|
|
function t(t, e) {
|
|
n.renderDayEvents(t, e)
|
|
}
|
|
function e() {
|
|
n.getDaySegmentContainer().empty()
|
|
}
|
|
var n = this
|
|
;(n.renderEvents = t), (n.clearEvents = e), de.call(n)
|
|
}
|
|
function $(t, e) {
|
|
function n(t, e) {
|
|
e && l(t, 7 * e)
|
|
var n = l(d(t), -((t.getDay() - a('firstDay') + 7) % 7)),
|
|
u = l(d(n), 7),
|
|
f = d(n)
|
|
i(f)
|
|
var v = d(u)
|
|
i(v, -1, !0)
|
|
var h = s()
|
|
;(r.title = c(f, l(d(v), -1), a('titleFormat'))),
|
|
(r.start = n),
|
|
(r.end = u),
|
|
(r.visStart = f),
|
|
(r.visEnd = v),
|
|
o(h)
|
|
}
|
|
var r = this
|
|
;(r.render = n), K.call(r, t, e, 'agendaWeek')
|
|
var a = r.opt,
|
|
o = r.renderAgenda,
|
|
i = r.skipHiddenDays,
|
|
s = r.getCellsPerWeek,
|
|
c = e.formatDates
|
|
}
|
|
function Q(t, e) {
|
|
function n(t, e) {
|
|
e && l(t, e), i(t, 0 > e ? -1 : 1)
|
|
var n = d(t, !0),
|
|
c = l(d(n), 1)
|
|
;(r.title = s(t, a('titleFormat'))),
|
|
(r.start = r.visStart = n),
|
|
(r.end = r.visEnd = c),
|
|
o(1)
|
|
}
|
|
var r = this
|
|
;(r.render = n), K.call(r, t, e, 'agendaDay')
|
|
var a = r.opt,
|
|
o = r.renderAgenda,
|
|
i = r.skipHiddenDays,
|
|
s = e.formatDate
|
|
}
|
|
function K(n, r, a) {
|
|
function o(t) {
|
|
;(We = t), i(), K ? c() : s()
|
|
}
|
|
function i() {
|
|
;(qe = Ue('theme') ? 'ui' : 'fc'),
|
|
(Ye = Ue('isRTL')),
|
|
(Be = y(Ue('minTime'))),
|
|
(je = y(Ue('maxTime'))),
|
|
(Ie = Ue('columnFormat')),
|
|
(Xe = Ue('weekNumbers')),
|
|
(Je = Ue('weekNumberTitle')),
|
|
(Ve = 'iso' != Ue('weekNumberCalculation') ? 'w' : 'W'),
|
|
(Re = Ue('snapMinutes') || Ue('slotMinutes'))
|
|
}
|
|
function s() {
|
|
var e,
|
|
r,
|
|
a,
|
|
o,
|
|
i,
|
|
s = qe + '-widget-header',
|
|
l = qe + '-widget-content',
|
|
f = 0 == Ue('slotMinutes') % 15
|
|
for (
|
|
c(),
|
|
ce = t(
|
|
"<div style='position:absolute;z-index:2;left:0;width:100%'/>"
|
|
).appendTo(n),
|
|
Ue('allDaySlot')
|
|
? ((ue = t(
|
|
"<div class='fc-event-container' style='position:absolute;z-index:8;top:0;left:0'/>"
|
|
).appendTo(ce)),
|
|
(e =
|
|
"<table style='width:100%' class='fc-agenda-allday' cellspacing='0'><tr><th class='" +
|
|
s +
|
|
" fc-agenda-axis'>" +
|
|
Ue('allDayText') +
|
|
'</th>' +
|
|
'<td>' +
|
|
"<div class='fc-day-content'><div style='position:relative'/></div>" +
|
|
'</td>' +
|
|
"<th class='" +
|
|
s +
|
|
" fc-agenda-gutter'> </th>" +
|
|
'</tr>' +
|
|
'</table>'),
|
|
(de = t(e).appendTo(ce)),
|
|
(ve = de.find('tr')),
|
|
C(ve.find('td')),
|
|
ce.append(
|
|
"<div class='fc-agenda-divider " +
|
|
s +
|
|
"'>" +
|
|
"<div class='fc-agenda-divider-inner'/>" +
|
|
'</div>'
|
|
))
|
|
: (ue = t([])),
|
|
he = t(
|
|
"<div style='position:absolute;width:100%;overflow-x:hidden;overflow-y:auto'/>"
|
|
).appendTo(ce),
|
|
ge = t(
|
|
"<div style='position:relative;width:100%;overflow:hidden'/>"
|
|
).appendTo(he),
|
|
be = t(
|
|
"<div class='fc-event-container' style='position:absolute;z-index:8;top:0;left:0'/>"
|
|
).appendTo(ge),
|
|
e =
|
|
"<table class='fc-agenda-slots' style='width:100%' cellspacing='0'><tbody>",
|
|
r = v(),
|
|
o = u(d(r), je),
|
|
u(r, Be),
|
|
Ae = 0,
|
|
a = 0;
|
|
o > r;
|
|
a++
|
|
)
|
|
(i = r.getMinutes()),
|
|
(e +=
|
|
"<tr class='fc-slot" +
|
|
a +
|
|
' ' +
|
|
(i ? 'fc-minor' : '') +
|
|
"'>" +
|
|
"<th class='fc-agenda-axis " +
|
|
s +
|
|
"'>" +
|
|
(f && i ? ' ' : on(r, Ue('axisFormat'))) +
|
|
'</th>' +
|
|
"<td class='" +
|
|
l +
|
|
"'>" +
|
|
"<div style='position:relative'> </div>" +
|
|
'</td>' +
|
|
'</tr>'),
|
|
u(r, Ue('slotMinutes')),
|
|
Ae++
|
|
;(e += '</tbody></table>'),
|
|
(Ce = t(e).appendTo(ge)),
|
|
M(Ce.find('td'))
|
|
}
|
|
function c() {
|
|
var e = h()
|
|
K && K.remove(),
|
|
(K = t(e).appendTo(n)),
|
|
(ee = K.find('thead')),
|
|
(ne = ee.find('th').slice(1, -1)),
|
|
(re = K.find('tbody')),
|
|
(ae = re.find('td').slice(0, -1)),
|
|
(oe = ae.find('> div')),
|
|
(ie = ae.find('.fc-day-content > div')),
|
|
(se = ae.eq(0)),
|
|
(le = oe.eq(0)),
|
|
B(ee.add(ee.find('tr'))),
|
|
B(re.add(re.find('tr')))
|
|
}
|
|
function h() {
|
|
var t =
|
|
"<table style='width:100%' class='fc-agenda-days fc-border-separate' cellspacing='0'>" +
|
|
g() +
|
|
p() +
|
|
'</table>'
|
|
return t
|
|
}
|
|
function g() {
|
|
var t,
|
|
e,
|
|
n,
|
|
r = qe + '-widget-header',
|
|
a = ''
|
|
for (
|
|
a += '<thead><tr>',
|
|
Xe
|
|
? ((t = nn(0, 0)),
|
|
(e = on(t, Ve)),
|
|
Ye ? (e += Je) : (e = Je + e),
|
|
(a +=
|
|
"<th class='fc-agenda-axis fc-week-number " +
|
|
r +
|
|
"'>" +
|
|
q(e) +
|
|
'</th>'))
|
|
: (a +=
|
|
"<th class='fc-agenda-axis " +
|
|
r +
|
|
"'> </th>"),
|
|
n = 0;
|
|
We > n;
|
|
n++
|
|
)
|
|
(t = nn(0, n)),
|
|
(a +=
|
|
"<th class='fc-" +
|
|
ke[t.getDay()] +
|
|
' fc-col' +
|
|
n +
|
|
' ' +
|
|
r +
|
|
"'>" +
|
|
q(on(t, Ie)) +
|
|
'</th>')
|
|
return (a +=
|
|
"<th class='fc-agenda-gutter " +
|
|
r +
|
|
"'> </th>" +
|
|
'</tr>' +
|
|
'</thead>')
|
|
}
|
|
function p() {
|
|
var t,
|
|
e,
|
|
n,
|
|
r,
|
|
a,
|
|
o = qe + '-widget-header',
|
|
i = qe + '-widget-content',
|
|
s = f(new Date()),
|
|
l = ''
|
|
for (
|
|
l +=
|
|
"<tbody><tr><th class='fc-agenda-axis " +
|
|
o +
|
|
"'> </th>",
|
|
n = '',
|
|
e = 0;
|
|
We > e;
|
|
e++
|
|
)
|
|
(t = nn(0, e)),
|
|
(a = ['fc-col' + e, 'fc-' + ke[t.getDay()], i]),
|
|
+t == +s
|
|
? a.push(qe + '-state-highlight', 'fc-today')
|
|
: s > t
|
|
? a.push('fc-past')
|
|
: a.push('fc-future'),
|
|
(r =
|
|
"<td class='" +
|
|
a.join(' ') +
|
|
"'>" +
|
|
'<div>' +
|
|
"<div class='fc-day-content'>" +
|
|
"<div style='position:relative'> </div>" +
|
|
'</div>' +
|
|
'</div>' +
|
|
'</td>'),
|
|
(n += r)
|
|
return (
|
|
(l += n),
|
|
(l +=
|
|
"<td class='fc-agenda-gutter " +
|
|
i +
|
|
"'> </td>" +
|
|
'</tr>' +
|
|
'</tbody>')
|
|
)
|
|
}
|
|
function m(t) {
|
|
t === e && (t = Se), (Se = t), (sn = {})
|
|
var n = re.position().top,
|
|
r = he.position().top,
|
|
a = Math.min(t - n, Ce.height() + r + 1)
|
|
le.height(a - R(se)),
|
|
ce.css('top', n),
|
|
he.height(a - r - 1),
|
|
(Fe = Ce.find('tr:first').height() + 1),
|
|
(Ne = Ue('slotMinutes') / Re),
|
|
(ze = Fe / Ne)
|
|
}
|
|
function w(e) {
|
|
;(Ee = e), _e.clear(), Pe.clear()
|
|
var n = ee.find('th:first')
|
|
de && (n = n.add(de.find('th:first'))),
|
|
(n = n.add(Ce.find('th:first'))),
|
|
(Te = 0),
|
|
S(
|
|
n.width('').each(function (e, n) {
|
|
Te = Math.max(Te, t(n).outerWidth())
|
|
}),
|
|
Te
|
|
)
|
|
var r = K.find('.fc-agenda-gutter')
|
|
de && (r = r.add(de.find('th.fc-agenda-gutter')))
|
|
var a = he[0].clientWidth
|
|
;(He = he.width() - a),
|
|
He
|
|
? (S(r, He), r.show().prev().removeClass('fc-last'))
|
|
: r.hide().prev().addClass('fc-last'),
|
|
(xe = Math.floor((a - Te) / We)),
|
|
S(ne.slice(0, -1), xe)
|
|
}
|
|
function b() {
|
|
function t() {
|
|
he.scrollTop(r)
|
|
}
|
|
var e = v(),
|
|
n = d(e)
|
|
n.setHours(Ue('firstHour'))
|
|
var r = _(e, n) + 1
|
|
t(), setTimeout(t, 0)
|
|
}
|
|
function D() {
|
|
b()
|
|
}
|
|
function C(t) {
|
|
t.click(E).mousedown(tn)
|
|
}
|
|
function M(t) {
|
|
t.click(E).mousedown(U)
|
|
}
|
|
function E(t) {
|
|
if (!Ue('selectable')) {
|
|
var e = Math.min(
|
|
We - 1,
|
|
Math.floor((t.pageX - K.offset().left - Te) / xe)
|
|
),
|
|
n = nn(0, e),
|
|
r = this.parentNode.className.match(/fc-slot(\d+)/)
|
|
if (r) {
|
|
var a = parseInt(r[1]) * Ue('slotMinutes'),
|
|
o = Math.floor(a / 60)
|
|
n.setHours(o),
|
|
n.setMinutes((a % 60) + Be),
|
|
Ze('dayClick', ae[e], n, !1, t)
|
|
} else Ze('dayClick', ae[e], n, !0, t)
|
|
}
|
|
}
|
|
function x(t, e, n) {
|
|
n && Oe.build()
|
|
for (var r = an(t, e), a = 0; r.length > a; a++) {
|
|
var o = r[a]
|
|
C(k(o.row, o.leftCol, o.row, o.rightCol))
|
|
}
|
|
}
|
|
function k(t, e, n, r) {
|
|
var a = Oe.rect(t, e, n, r, ce)
|
|
return Ge(a, ce)
|
|
}
|
|
function H(t, e) {
|
|
for (var n = 0; We > n; n++) {
|
|
var r = nn(0, n),
|
|
a = l(d(r), 1),
|
|
o = new Date(Math.max(r, t)),
|
|
i = new Date(Math.min(a, e))
|
|
if (i > o) {
|
|
var s = Oe.rect(0, n, 0, n, ge),
|
|
c = _(r, o),
|
|
u = _(r, i)
|
|
;(s.top = c), (s.height = u - c), M(Ge(s, ge))
|
|
}
|
|
}
|
|
}
|
|
function F(t) {
|
|
return _e.left(t)
|
|
}
|
|
function N(t) {
|
|
return Pe.left(t)
|
|
}
|
|
function z(t) {
|
|
return _e.right(t)
|
|
}
|
|
function W(t) {
|
|
return Pe.right(t)
|
|
}
|
|
function A(t) {
|
|
return Ue('allDaySlot') && !t.row
|
|
}
|
|
function L(t) {
|
|
var e = nn(0, t.col),
|
|
n = t.row
|
|
return Ue('allDaySlot') && n--, n >= 0 && u(e, Be + n * Re), e
|
|
}
|
|
function _(t, n) {
|
|
if (((t = d(t, !0)), u(d(t), Be) > n)) return 0
|
|
if (n >= u(d(t), je)) return Ce.height()
|
|
var r = Ue('slotMinutes'),
|
|
a = 60 * n.getHours() + n.getMinutes() - Be,
|
|
o = Math.floor(a / r),
|
|
i = sn[o]
|
|
return (
|
|
i === e &&
|
|
(i = sn[o] = Ce.find('tr')
|
|
.eq(o)
|
|
.find('td div')[0].offsetTop),
|
|
Math.max(0, Math.round(i - 1 + Fe * ((a % r) / r)))
|
|
)
|
|
}
|
|
function P() {
|
|
return ve
|
|
}
|
|
function j(t) {
|
|
var e = d(t.start)
|
|
return t.allDay ? e : u(e, Ue('defaultEventMinutes'))
|
|
}
|
|
function I(t, e) {
|
|
return e ? d(t) : u(d(t), Ue('slotMinutes'))
|
|
}
|
|
function X(t, e, n) {
|
|
n ? Ue('allDaySlot') && x(t, l(d(e), 1), !0) : J(t, e)
|
|
}
|
|
function J(e, n) {
|
|
var r = Ue('selectHelper')
|
|
if ((Oe.build(), r)) {
|
|
var a = rn(e).col
|
|
if (a >= 0 && We > a) {
|
|
var o = Oe.rect(0, a, 0, a, ge),
|
|
i = _(e, e),
|
|
s = _(e, n)
|
|
if (s > i) {
|
|
if (
|
|
((o.top = i),
|
|
(o.height = s - i),
|
|
(o.left += 2),
|
|
(o.width -= 5),
|
|
t.isFunction(r))
|
|
) {
|
|
var l = r(e, n)
|
|
l &&
|
|
((o.position = 'absolute'),
|
|
(Me = t(l).css(o).appendTo(ge)))
|
|
} else
|
|
(o.isStart = !0),
|
|
(o.isEnd = !0),
|
|
(Me = t(
|
|
en(
|
|
{
|
|
title: '',
|
|
start: e,
|
|
end: n,
|
|
className: ['fc-select-helper'],
|
|
editable: !1,
|
|
},
|
|
o
|
|
)
|
|
)),
|
|
Me.css('opacity', Ue('dragOpacity'))
|
|
Me &&
|
|
(M(Me),
|
|
ge.append(Me),
|
|
S(Me, o.width, !0),
|
|
T(Me, o.height, !0))
|
|
}
|
|
}
|
|
} else H(e, n)
|
|
}
|
|
function V() {
|
|
$e(), Me && (Me.remove(), (Me = null))
|
|
}
|
|
function U(e) {
|
|
if (1 == e.which && Ue('selectable')) {
|
|
Ke(e)
|
|
var n
|
|
Le.start(function (t, e) {
|
|
if ((V(), t && t.col == e.col && !A(t))) {
|
|
var r = L(e),
|
|
a = L(t)
|
|
;(n = [r, u(d(r), Re), a, u(d(a), Re)].sort(O)),
|
|
J(n[0], n[3])
|
|
} else n = null
|
|
}, e),
|
|
t(document).one('mouseup', function (t) {
|
|
Le.stop(),
|
|
n &&
|
|
(+n[0] == +n[1] && Z(n[0], !1, t),
|
|
Qe(n[0], n[3], !1, t))
|
|
})
|
|
}
|
|
}
|
|
function Z(t, e, n) {
|
|
Ze('dayClick', ae[rn(t).col], t, e, n)
|
|
}
|
|
function G(t, e) {
|
|
Le.start(function (t) {
|
|
if (($e(), t))
|
|
if (A(t)) k(t.row, t.col, t.row, t.col)
|
|
else {
|
|
var e = L(t),
|
|
n = u(d(e), Ue('defaultEventMinutes'))
|
|
H(e, n)
|
|
}
|
|
}, e)
|
|
}
|
|
function $(t, e, n) {
|
|
var r = Le.stop()
|
|
$e(), r && Ze('drop', t, L(r), A(r), e, n)
|
|
}
|
|
var Q = this
|
|
;(Q.renderAgenda = o),
|
|
(Q.setWidth = w),
|
|
(Q.setHeight = m),
|
|
(Q.afterRender = D),
|
|
(Q.defaultEventEnd = j),
|
|
(Q.timePosition = _),
|
|
(Q.getIsCellAllDay = A),
|
|
(Q.allDayRow = P),
|
|
(Q.getCoordinateGrid = function () {
|
|
return Oe
|
|
}),
|
|
(Q.getHoverListener = function () {
|
|
return Le
|
|
}),
|
|
(Q.colLeft = F),
|
|
(Q.colRight = z),
|
|
(Q.colContentLeft = N),
|
|
(Q.colContentRight = W),
|
|
(Q.getDaySegmentContainer = function () {
|
|
return ue
|
|
}),
|
|
(Q.getSlotSegmentContainer = function () {
|
|
return be
|
|
}),
|
|
(Q.getMinMinute = function () {
|
|
return Be
|
|
}),
|
|
(Q.getMaxMinute = function () {
|
|
return je
|
|
}),
|
|
(Q.getSlotContainer = function () {
|
|
return ge
|
|
}),
|
|
(Q.getRowCnt = function () {
|
|
return 1
|
|
}),
|
|
(Q.getColCnt = function () {
|
|
return We
|
|
}),
|
|
(Q.getColWidth = function () {
|
|
return xe
|
|
}),
|
|
(Q.getSnapHeight = function () {
|
|
return ze
|
|
}),
|
|
(Q.getSnapMinutes = function () {
|
|
return Re
|
|
}),
|
|
(Q.defaultSelectionEnd = I),
|
|
(Q.renderDayOverlay = x),
|
|
(Q.renderSelection = X),
|
|
(Q.clearSelection = V),
|
|
(Q.reportDayClick = Z),
|
|
(Q.dragStart = G),
|
|
(Q.dragStop = $),
|
|
fe.call(Q, n, r, a),
|
|
me.call(Q),
|
|
pe.call(Q),
|
|
te.call(Q)
|
|
var K,
|
|
ee,
|
|
ne,
|
|
re,
|
|
ae,
|
|
oe,
|
|
ie,
|
|
se,
|
|
le,
|
|
ce,
|
|
ue,
|
|
de,
|
|
ve,
|
|
he,
|
|
ge,
|
|
be,
|
|
Ce,
|
|
Me,
|
|
Ee,
|
|
Se,
|
|
Te,
|
|
xe,
|
|
He,
|
|
Fe,
|
|
Re,
|
|
Ne,
|
|
ze,
|
|
We,
|
|
Ae,
|
|
Oe,
|
|
Le,
|
|
_e,
|
|
Pe,
|
|
qe,
|
|
Ye,
|
|
Be,
|
|
je,
|
|
Ie,
|
|
Xe,
|
|
Je,
|
|
Ve,
|
|
Ue = Q.opt,
|
|
Ze = Q.trigger,
|
|
Ge = Q.renderOverlay,
|
|
$e = Q.clearOverlays,
|
|
Qe = Q.reportSelection,
|
|
Ke = Q.unselect,
|
|
tn = Q.daySelectionMousedown,
|
|
en = Q.slotSegHtml,
|
|
nn = Q.cellToDate,
|
|
rn = Q.dateToCell,
|
|
an = Q.rangeToSegments,
|
|
on = r.formatDate,
|
|
sn = {}
|
|
Y(n.addClass('fc-agenda')),
|
|
(Oe = new ye(function (e, n) {
|
|
function r(t) {
|
|
return Math.max(l, Math.min(c, t))
|
|
}
|
|
var a, o, i
|
|
ne.each(function (e, r) {
|
|
;(a = t(r)),
|
|
(o = a.offset().left),
|
|
e && (i[1] = o),
|
|
(i = [o]),
|
|
(n[e] = i)
|
|
}),
|
|
(i[1] = o + a.outerWidth()),
|
|
Ue('allDaySlot') &&
|
|
((a = ve),
|
|
(o = a.offset().top),
|
|
(e[0] = [o, o + a.outerHeight()]))
|
|
for (
|
|
var s = ge.offset().top,
|
|
l = he.offset().top,
|
|
c = l + he.outerHeight(),
|
|
u = 0;
|
|
Ae * Ne > u;
|
|
u++
|
|
)
|
|
e.push([r(s + ze * u), r(s + ze * (u + 1))])
|
|
})),
|
|
(Le = new we(Oe)),
|
|
(_e = new De(function (t) {
|
|
return oe.eq(t)
|
|
})),
|
|
(Pe = new De(function (t) {
|
|
return ie.eq(t)
|
|
}))
|
|
}
|
|
function te() {
|
|
function n(t, e) {
|
|
var n,
|
|
r = t.length,
|
|
o = [],
|
|
i = []
|
|
for (n = 0; r > n; n++) t[n].allDay ? o.push(t[n]) : i.push(t[n])
|
|
y('allDaySlot') && (te(o, e), k()), s(a(i), e)
|
|
}
|
|
function r() {
|
|
H().empty(), F().empty()
|
|
}
|
|
function a(e) {
|
|
var n,
|
|
r,
|
|
a,
|
|
s,
|
|
l,
|
|
c = Y(),
|
|
f = W(),
|
|
v = z(),
|
|
h = t.map(e, i),
|
|
g = []
|
|
for (r = 0; c > r; r++)
|
|
for (
|
|
n = P(0, r),
|
|
u(n, f),
|
|
l = o(e, h, n, u(d(n), v - f)),
|
|
l = ee(l),
|
|
a = 0;
|
|
l.length > a;
|
|
a++
|
|
)
|
|
(s = l[a]), (s.col = r), g.push(s)
|
|
return g
|
|
}
|
|
function o(t, e, n, r) {
|
|
var a,
|
|
o,
|
|
i,
|
|
s,
|
|
l,
|
|
c,
|
|
u,
|
|
f,
|
|
v = [],
|
|
h = t.length
|
|
for (a = 0; h > a; a++)
|
|
(o = t[a]),
|
|
(i = o.start),
|
|
(s = e[a]),
|
|
s > n &&
|
|
r > i &&
|
|
(n > i ? ((l = d(n)), (u = !1)) : ((l = i), (u = !0)),
|
|
s > r ? ((c = d(r)), (f = !1)) : ((c = s), (f = !0)),
|
|
v.push({
|
|
event: o,
|
|
start: l,
|
|
end: c,
|
|
isStart: u,
|
|
isEnd: f,
|
|
}))
|
|
return v.sort(ue)
|
|
}
|
|
function i(t) {
|
|
return t.end ? d(t.end) : u(d(t.start), y('defaultEventMinutes'))
|
|
}
|
|
function s(n, r) {
|
|
var a,
|
|
o,
|
|
i,
|
|
s,
|
|
l,
|
|
u,
|
|
d,
|
|
v,
|
|
h,
|
|
g,
|
|
p,
|
|
m,
|
|
b,
|
|
D,
|
|
C,
|
|
M,
|
|
S = n.length,
|
|
T = '',
|
|
k = F(),
|
|
H = y('isRTL')
|
|
for (a = 0; S > a; a++)
|
|
(o = n[a]),
|
|
(i = o.event),
|
|
(s = A(o.start, o.start)),
|
|
(l = A(o.start, o.end)),
|
|
(u = L(o.col)),
|
|
(d = _(o.col)),
|
|
(v = d - u),
|
|
(d -= 0.025 * v),
|
|
(v = d - u),
|
|
(h = v * (o.forwardCoord - o.backwardCoord)),
|
|
y('slotEventOverlap') && (h = Math.max(2 * (h - 10), h)),
|
|
H
|
|
? ((p = d - o.backwardCoord * v), (g = p - h))
|
|
: ((g = u + o.backwardCoord * v), (p = g + h)),
|
|
(g = Math.max(g, u)),
|
|
(p = Math.min(p, d)),
|
|
(h = p - g),
|
|
(o.top = s),
|
|
(o.left = g),
|
|
(o.outerWidth = h),
|
|
(o.outerHeight = l - s),
|
|
(T += c(i, o))
|
|
for (k[0].innerHTML = T, m = k.children(), a = 0; S > a; a++)
|
|
(o = n[a]),
|
|
(i = o.event),
|
|
(b = t(m[a])),
|
|
(D = w('eventRender', i, i, b)),
|
|
D === !1
|
|
? b.remove()
|
|
: (D &&
|
|
D !== !0 &&
|
|
(b.remove(),
|
|
(b = t(D)
|
|
.css({
|
|
position: 'absolute',
|
|
top: o.top,
|
|
left: o.left,
|
|
})
|
|
.appendTo(k))),
|
|
(o.element = b),
|
|
i._id === r ? f(i, b, o) : (b[0]._fci = a),
|
|
V(i, b))
|
|
for (E(k, n, f), a = 0; S > a; a++)
|
|
(o = n[a]),
|
|
(b = o.element) &&
|
|
((o.vsides = R(b, !0)),
|
|
(o.hsides = x(b, !0)),
|
|
(C = b.find('.fc-event-title')),
|
|
C.length && (o.contentTop = C[0].offsetTop))
|
|
for (a = 0; S > a; a++)
|
|
(o = n[a]),
|
|
(b = o.element) &&
|
|
((b[0].style.width =
|
|
Math.max(0, o.outerWidth - o.hsides) + 'px'),
|
|
(M = Math.max(0, o.outerHeight - o.vsides)),
|
|
(b[0].style.height = M + 'px'),
|
|
(i = o.event),
|
|
o.contentTop !== e &&
|
|
10 > M - o.contentTop &&
|
|
(b
|
|
.find('div.fc-event-time')
|
|
.text(
|
|
re(i.start, y('timeFormat')) +
|
|
' - ' +
|
|
i.title
|
|
),
|
|
b.find('div.fc-event-title').remove()),
|
|
w('eventAfterRender', i, i, b))
|
|
}
|
|
function c(t, e) {
|
|
var n = '<',
|
|
r = t.url,
|
|
a = j(t, y),
|
|
o = ['fc-event', 'fc-event-vert']
|
|
return (
|
|
b(t) && o.push('fc-event-draggable'),
|
|
e.isStart && o.push('fc-event-start'),
|
|
e.isEnd && o.push('fc-event-end'),
|
|
(o = o.concat(t.className)),
|
|
t.source && (o = o.concat(t.source.className || [])),
|
|
(n += r ? "a href='" + q(t.url) + "'" : 'div'),
|
|
(n +=
|
|
" class='" +
|
|
o.join(' ') +
|
|
"'" +
|
|
' style=' +
|
|
"'" +
|
|
'position:absolute;' +
|
|
'top:' +
|
|
e.top +
|
|
'px;' +
|
|
'left:' +
|
|
e.left +
|
|
'px;' +
|
|
a +
|
|
"'" +
|
|
'>' +
|
|
"<div class='fc-event-inner'>" +
|
|
"<div class='fc-event-time'>" +
|
|
q(ae(t.start, t.end, y('timeFormat'))) +
|
|
'</div>' +
|
|
"<div class='fc-event-title'>" +
|
|
q(t.title || '') +
|
|
'</div>' +
|
|
'</div>' +
|
|
"<div class='fc-event-bg'></div>"),
|
|
e.isEnd &&
|
|
D(t) &&
|
|
(n +=
|
|
"<div class='ui-resizable-handle ui-resizable-s'>=</div>"),
|
|
(n += '</' + (r ? 'a' : 'div') + '>')
|
|
)
|
|
}
|
|
function f(t, e, n) {
|
|
var r = e.find('div.fc-event-time')
|
|
b(t) && g(t, e, r), n.isEnd && D(t) && p(t, e, r), S(t, e)
|
|
}
|
|
function v(t, e, n) {
|
|
function r() {
|
|
c ||
|
|
(e.width(a).height('').draggable('option', 'grid', null),
|
|
(c = !0))
|
|
}
|
|
var a,
|
|
o,
|
|
i,
|
|
s = n.isStart,
|
|
c = !0,
|
|
u = N(),
|
|
f = B(),
|
|
v = I(),
|
|
g = X(),
|
|
p = W()
|
|
e.draggable({
|
|
opacity: y('dragOpacity', 'month'),
|
|
revertDuration: y('dragRevertDuration'),
|
|
start: function (n, p) {
|
|
w('eventDragStart', e, t, n, p),
|
|
Z(t, e),
|
|
(a = e.width()),
|
|
u.start(
|
|
function (n, a) {
|
|
if ((K(), n)) {
|
|
o = !1
|
|
var u = P(0, a.col),
|
|
p = P(0, n.col)
|
|
;(i = h(p, u)),
|
|
n.row
|
|
? s
|
|
? c &&
|
|
(e.width(f - 10),
|
|
T(
|
|
e,
|
|
v *
|
|
Math.round(
|
|
(t.end
|
|
? (t.end -
|
|
t.start) /
|
|
Re
|
|
: y(
|
|
'defaultEventMinutes'
|
|
)) / g
|
|
)
|
|
),
|
|
e.draggable(
|
|
'option',
|
|
'grid',
|
|
[f, 1]
|
|
),
|
|
(c = !1))
|
|
: (o = !0)
|
|
: (Q(l(d(t.start), i), l(C(t), i)),
|
|
r()),
|
|
(o = o || (c && !i))
|
|
} else r(), (o = !0)
|
|
e.draggable('option', 'revert', o)
|
|
},
|
|
n,
|
|
'drag'
|
|
)
|
|
},
|
|
stop: function (n, a) {
|
|
if ((u.stop(), K(), w('eventDragStop', e, t, n, a), o))
|
|
r(), e.css('filter', ''), U(t, e)
|
|
else {
|
|
var s = 0
|
|
c ||
|
|
(s =
|
|
Math.round(
|
|
(e.offset().top - J().offset().top) / v
|
|
) *
|
|
g +
|
|
p -
|
|
(60 * t.start.getHours() +
|
|
t.start.getMinutes())),
|
|
G(this, t, i, s, c, n, a)
|
|
}
|
|
},
|
|
})
|
|
}
|
|
function g(t, e, n) {
|
|
function r() {
|
|
K(),
|
|
s &&
|
|
(f
|
|
? (n.hide(),
|
|
e.draggable('option', 'grid', null),
|
|
Q(l(d(t.start), b), l(C(t), b)))
|
|
: (a(D),
|
|
n.css('display', ''),
|
|
e.draggable('option', 'grid', [T, x])))
|
|
}
|
|
function a(e) {
|
|
var r,
|
|
a = u(d(t.start), e)
|
|
t.end && (r = u(d(t.end), e)), n.text(ae(a, r, y('timeFormat')))
|
|
}
|
|
var o,
|
|
i,
|
|
s,
|
|
c,
|
|
f,
|
|
v,
|
|
g,
|
|
p,
|
|
b,
|
|
D,
|
|
M,
|
|
E = m.getCoordinateGrid(),
|
|
S = Y(),
|
|
T = B(),
|
|
x = I(),
|
|
k = X()
|
|
e.draggable({
|
|
scroll: !1,
|
|
grid: [T, x],
|
|
axis: 1 == S ? 'y' : !1,
|
|
opacity: y('dragOpacity'),
|
|
revertDuration: y('dragRevertDuration'),
|
|
start: function (n, r) {
|
|
w('eventDragStart', e, t, n, r),
|
|
Z(t, e),
|
|
E.build(),
|
|
(o = e.position()),
|
|
(i = E.cell(n.pageX, n.pageY)),
|
|
(s = c = !0),
|
|
(f = v = O(i)),
|
|
(g = p = 0),
|
|
(b = 0),
|
|
(D = M = 0)
|
|
},
|
|
drag: function (t, n) {
|
|
var a = E.cell(t.pageX, t.pageY)
|
|
if ((s = !!a)) {
|
|
if (
|
|
((f = O(a)),
|
|
(g = Math.round((n.position.left - o.left) / T)),
|
|
g != p)
|
|
) {
|
|
var l = P(0, i.col),
|
|
u = i.col + g
|
|
;(u = Math.max(0, u)), (u = Math.min(S - 1, u))
|
|
var d = P(0, u)
|
|
b = h(d, l)
|
|
}
|
|
f || (D = Math.round((n.position.top - o.top) / x) * k)
|
|
}
|
|
;(s != c || f != v || g != p || D != M) &&
|
|
(r(), (c = s), (v = f), (p = g), (M = D)),
|
|
e.draggable('option', 'revert', !s)
|
|
},
|
|
stop: function (n, a) {
|
|
K(),
|
|
w('eventDragStop', e, t, n, a),
|
|
s && (f || b || D)
|
|
? G(this, t, b, f ? 0 : D, f, n, a)
|
|
: ((s = !0),
|
|
(f = !1),
|
|
(g = 0),
|
|
(b = 0),
|
|
(D = 0),
|
|
r(),
|
|
e.css('filter', ''),
|
|
e.css(o),
|
|
U(t, e))
|
|
},
|
|
})
|
|
}
|
|
function p(t, e, n) {
|
|
var r,
|
|
a,
|
|
o = I(),
|
|
i = X()
|
|
e.resizable({
|
|
handles: { s: '.ui-resizable-handle' },
|
|
grid: o,
|
|
start: function (n, o) {
|
|
;(r = a = 0), Z(t, e), w('eventResizeStart', this, t, n, o)
|
|
},
|
|
resize: function (s, l) {
|
|
;(r = Math.round(
|
|
(Math.max(o, e.height()) - l.originalSize.height) / o
|
|
)),
|
|
r != a &&
|
|
(n.text(
|
|
ae(
|
|
t.start,
|
|
r || t.end ? u(M(t), i * r) : null,
|
|
y('timeFormat')
|
|
)
|
|
),
|
|
(a = r))
|
|
},
|
|
stop: function (n, a) {
|
|
w('eventResizeStop', this, t, n, a),
|
|
r ? $(this, t, 0, i * r, n, a) : U(t, e)
|
|
},
|
|
})
|
|
}
|
|
var m = this
|
|
;(m.renderEvents = n),
|
|
(m.clearEvents = r),
|
|
(m.slotSegHtml = c),
|
|
de.call(m)
|
|
var y = m.opt,
|
|
w = m.trigger,
|
|
b = m.isEventDraggable,
|
|
D = m.isEventResizable,
|
|
M = m.eventEnd,
|
|
S = m.eventElementHandlers,
|
|
k = m.setHeight,
|
|
H = m.getDaySegmentContainer,
|
|
F = m.getSlotSegmentContainer,
|
|
N = m.getHoverListener,
|
|
z = m.getMaxMinute,
|
|
W = m.getMinMinute,
|
|
A = m.timePosition,
|
|
O = m.getIsCellAllDay,
|
|
L = m.colContentLeft,
|
|
_ = m.colContentRight,
|
|
P = m.cellToDate,
|
|
Y = m.getColCnt,
|
|
B = m.getColWidth,
|
|
I = m.getSnapHeight,
|
|
X = m.getSnapMinutes,
|
|
J = m.getSlotContainer,
|
|
V = m.reportEventElement,
|
|
U = m.showEvents,
|
|
Z = m.hideEvents,
|
|
G = m.eventDrop,
|
|
$ = m.eventResize,
|
|
Q = m.renderDayOverlay,
|
|
K = m.clearOverlays,
|
|
te = m.renderDayEvents,
|
|
ne = m.calendar,
|
|
re = ne.formatDate,
|
|
ae = ne.formatDates
|
|
m.draggableDayEvent = v
|
|
}
|
|
function ee(t) {
|
|
var e,
|
|
n = ne(t),
|
|
r = n[0]
|
|
if ((re(n), r)) {
|
|
for (e = 0; r.length > e; e++) ae(r[e])
|
|
for (e = 0; r.length > e; e++) oe(r[e], 0, 0)
|
|
}
|
|
return ie(n)
|
|
}
|
|
function ne(t) {
|
|
var e,
|
|
n,
|
|
r,
|
|
a = []
|
|
for (e = 0; t.length > e; e++) {
|
|
for (n = t[e], r = 0; a.length > r && se(n, a[r]).length; r++);
|
|
;(a[r] || (a[r] = [])).push(n)
|
|
}
|
|
return a
|
|
}
|
|
function re(t) {
|
|
var e, n, r, a, o
|
|
for (e = 0; t.length > e; e++)
|
|
for (n = t[e], r = 0; n.length > r; r++)
|
|
for (a = n[r], a.forwardSegs = [], o = e + 1; t.length > o; o++)
|
|
se(a, t[o], a.forwardSegs)
|
|
}
|
|
function ae(t) {
|
|
var n,
|
|
r,
|
|
a = t.forwardSegs,
|
|
o = 0
|
|
if (t.forwardPressure === e) {
|
|
for (n = 0; a.length > n; n++)
|
|
(r = a[n]), ae(r), (o = Math.max(o, 1 + r.forwardPressure))
|
|
t.forwardPressure = o
|
|
}
|
|
}
|
|
function oe(t, n, r) {
|
|
var a,
|
|
o = t.forwardSegs
|
|
if (t.forwardCoord === e)
|
|
for (
|
|
o.length
|
|
? (o.sort(ce),
|
|
oe(o[0], n + 1, r),
|
|
(t.forwardCoord = o[0].backwardCoord))
|
|
: (t.forwardCoord = 1),
|
|
t.backwardCoord =
|
|
t.forwardCoord - (t.forwardCoord - r) / (n + 1),
|
|
a = 0;
|
|
o.length > a;
|
|
a++
|
|
)
|
|
oe(o[a], 0, t.forwardCoord)
|
|
}
|
|
function ie(t) {
|
|
var e,
|
|
n,
|
|
r,
|
|
a = []
|
|
for (e = 0; t.length > e; e++)
|
|
for (n = t[e], r = 0; n.length > r; r++) a.push(n[r])
|
|
return a
|
|
}
|
|
function se(t, e, n) {
|
|
n = n || []
|
|
for (var r = 0; e.length > r; r++) le(t, e[r]) && n.push(e[r])
|
|
return n
|
|
}
|
|
function le(t, e) {
|
|
return t.end > e.start && t.start < e.end
|
|
}
|
|
function ce(t, e) {
|
|
return (
|
|
e.forwardPressure - t.forwardPressure ||
|
|
(t.backwardCoord || 0) - (e.backwardCoord || 0) ||
|
|
ue(t, e)
|
|
)
|
|
}
|
|
function ue(t, e) {
|
|
return (
|
|
t.start - e.start ||
|
|
e.end - e.start - (t.end - t.start) ||
|
|
(t.event.title || '').localeCompare(e.event.title)
|
|
)
|
|
}
|
|
function fe(n, r, a) {
|
|
function o(e, n) {
|
|
var r = V[e]
|
|
return t.isPlainObject(r) ? P(r, n || a) : r
|
|
}
|
|
function i(t, e) {
|
|
return r.trigger.apply(
|
|
r,
|
|
[t, e || _].concat(Array.prototype.slice.call(arguments, 2), [
|
|
_,
|
|
])
|
|
)
|
|
}
|
|
function s(t) {
|
|
var e = t.source || {}
|
|
return (
|
|
X(
|
|
t.startEditable,
|
|
e.startEditable,
|
|
o('eventStartEditable'),
|
|
t.editable,
|
|
e.editable,
|
|
o('editable')
|
|
) && !o('disableDragging')
|
|
)
|
|
}
|
|
function c(t) {
|
|
var e = t.source || {}
|
|
return (
|
|
X(
|
|
t.durationEditable,
|
|
e.durationEditable,
|
|
o('eventDurationEditable'),
|
|
t.editable,
|
|
e.editable,
|
|
o('editable')
|
|
) && !o('disableResizing')
|
|
)
|
|
}
|
|
function f(t) {
|
|
j = {}
|
|
var e,
|
|
n,
|
|
r = t.length
|
|
for (e = 0; r > e; e++)
|
|
(n = t[e]), j[n._id] ? j[n._id].push(n) : (j[n._id] = [n])
|
|
}
|
|
function v() {
|
|
;(j = {}), (I = {}), (J = [])
|
|
}
|
|
function g(t) {
|
|
return t.end ? d(t.end) : q(t)
|
|
}
|
|
function p(t, e) {
|
|
J.push({ event: t, element: e }),
|
|
I[t._id] ? I[t._id].push(e) : (I[t._id] = [e])
|
|
}
|
|
function m() {
|
|
t.each(J, function (t, e) {
|
|
_.trigger('eventDestroy', e.event, e.event, e.element)
|
|
})
|
|
}
|
|
function y(t, n) {
|
|
n.click(function (r) {
|
|
return n.hasClass('ui-draggable-dragging') ||
|
|
n.hasClass('ui-resizable-resizing')
|
|
? e
|
|
: i('eventClick', this, t, r)
|
|
}).hover(
|
|
function (e) {
|
|
i('eventMouseover', this, t, e)
|
|
},
|
|
function (e) {
|
|
i('eventMouseout', this, t, e)
|
|
}
|
|
)
|
|
}
|
|
function w(t, e) {
|
|
D(t, e, 'show')
|
|
}
|
|
function b(t, e) {
|
|
D(t, e, 'hide')
|
|
}
|
|
function D(t, e, n) {
|
|
var r,
|
|
a = I[t._id],
|
|
o = a.length
|
|
for (r = 0; o > r; r++) (e && a[r][0] == e[0]) || a[r][n]()
|
|
}
|
|
function C(t, e, n, r, a, o, s) {
|
|
var l = e.allDay,
|
|
c = e._id
|
|
E(j[c], n, r, a),
|
|
i(
|
|
'eventDrop',
|
|
t,
|
|
e,
|
|
n,
|
|
r,
|
|
a,
|
|
function () {
|
|
E(j[c], -n, -r, l), B(c)
|
|
},
|
|
o,
|
|
s
|
|
),
|
|
B(c)
|
|
}
|
|
function M(t, e, n, r, a, o) {
|
|
var s = e._id
|
|
S(j[s], n, r),
|
|
i(
|
|
'eventResize',
|
|
t,
|
|
e,
|
|
n,
|
|
r,
|
|
function () {
|
|
S(j[s], -n, -r), B(s)
|
|
},
|
|
a,
|
|
o
|
|
),
|
|
B(s)
|
|
}
|
|
function E(t, n, r, a) {
|
|
r = r || 0
|
|
for (var o, i = t.length, s = 0; i > s; s++)
|
|
(o = t[s]),
|
|
a !== e && (o.allDay = a),
|
|
u(l(o.start, n, !0), r),
|
|
o.end && (o.end = u(l(o.end, n, !0), r)),
|
|
Y(o, V)
|
|
}
|
|
function S(t, e, n) {
|
|
n = n || 0
|
|
for (var r, a = t.length, o = 0; a > o; o++)
|
|
(r = t[o]), (r.end = u(l(g(r), e, !0), n)), Y(r, V)
|
|
}
|
|
function T(t) {
|
|
return 'object' == typeof t && (t = t.getDay()), G[t]
|
|
}
|
|
function x() {
|
|
return U
|
|
}
|
|
function k(t, e, n) {
|
|
for (e = e || 1; G[(t.getDay() + (n ? e : 0) + 7) % 7]; ) l(t, e)
|
|
}
|
|
function H() {
|
|
var t = F.apply(null, arguments),
|
|
e = R(t),
|
|
n = N(e)
|
|
return n
|
|
}
|
|
function F(t, e) {
|
|
var n = _.getColCnt(),
|
|
r = K ? -1 : 1,
|
|
a = K ? n - 1 : 0
|
|
'object' == typeof t && ((e = t.col), (t = t.row))
|
|
var o = t * n + (e * r + a)
|
|
return o
|
|
}
|
|
function R(t) {
|
|
var e = _.visStart.getDay()
|
|
return (t += $[e]), 7 * Math.floor(t / U) + Q[((t % U) + U) % U] - e
|
|
}
|
|
function N(t) {
|
|
var e = d(_.visStart)
|
|
return l(e, t), e
|
|
}
|
|
function z(t) {
|
|
var e = W(t),
|
|
n = A(e),
|
|
r = O(n)
|
|
return r
|
|
}
|
|
function W(t) {
|
|
return h(t, _.visStart)
|
|
}
|
|
function A(t) {
|
|
var e = _.visStart.getDay()
|
|
return (t += e), Math.floor(t / 7) * U + $[((t % 7) + 7) % 7] - $[e]
|
|
}
|
|
function O(t) {
|
|
var e = _.getColCnt(),
|
|
n = K ? -1 : 1,
|
|
r = K ? e - 1 : 0,
|
|
a = Math.floor(t / e),
|
|
o = (((t % e) + e) % e) * n + r
|
|
return { row: a, col: o }
|
|
}
|
|
function L(t, e) {
|
|
for (
|
|
var n = _.getRowCnt(),
|
|
r = _.getColCnt(),
|
|
a = [],
|
|
o = W(t),
|
|
i = W(e),
|
|
s = A(o),
|
|
l = A(i) - 1,
|
|
c = 0;
|
|
n > c;
|
|
c++
|
|
) {
|
|
var u = c * r,
|
|
f = u + r - 1,
|
|
d = Math.max(s, u),
|
|
v = Math.min(l, f)
|
|
if (v >= d) {
|
|
var h = O(d),
|
|
g = O(v),
|
|
p = [h.col, g.col].sort(),
|
|
m = R(d) == o,
|
|
y = R(v) + 1 == i
|
|
a.push({
|
|
row: c,
|
|
leftCol: p[0],
|
|
rightCol: p[1],
|
|
isStart: m,
|
|
isEnd: y,
|
|
})
|
|
}
|
|
}
|
|
return a
|
|
}
|
|
var _ = this
|
|
;(_.element = n),
|
|
(_.calendar = r),
|
|
(_.name = a),
|
|
(_.opt = o),
|
|
(_.trigger = i),
|
|
(_.isEventDraggable = s),
|
|
(_.isEventResizable = c),
|
|
(_.setEventData = f),
|
|
(_.clearEventData = v),
|
|
(_.eventEnd = g),
|
|
(_.reportEventElement = p),
|
|
(_.triggerEventDestroy = m),
|
|
(_.eventElementHandlers = y),
|
|
(_.showEvents = w),
|
|
(_.hideEvents = b),
|
|
(_.eventDrop = C),
|
|
(_.eventResize = M)
|
|
var q = _.defaultEventEnd,
|
|
Y = r.normalizeEvent,
|
|
B = r.reportEventChange,
|
|
j = {},
|
|
I = {},
|
|
J = [],
|
|
V = r.options
|
|
;(_.isHiddenDay = T),
|
|
(_.skipHiddenDays = k),
|
|
(_.getCellsPerWeek = x),
|
|
(_.dateToCell = z),
|
|
(_.dateToDayOffset = W),
|
|
(_.dayOffsetToCellOffset = A),
|
|
(_.cellOffsetToCell = O),
|
|
(_.cellToDate = H),
|
|
(_.cellToCellOffset = F),
|
|
(_.cellOffsetToDayOffset = R),
|
|
(_.dayOffsetToDate = N),
|
|
(_.rangeToSegments = L)
|
|
var U,
|
|
Z = o('hiddenDays') || [],
|
|
G = [],
|
|
$ = [],
|
|
Q = [],
|
|
K = o('isRTL')
|
|
;(function () {
|
|
o('weekends') === !1 && Z.push(0, 6)
|
|
for (var e = 0, n = 0; 7 > e; e++)
|
|
($[e] = n),
|
|
(G[e] = -1 != t.inArray(e, Z)),
|
|
G[e] || ((Q[n] = e), n++)
|
|
if (((U = n), !U)) throw 'invalid hiddenDays'
|
|
})()
|
|
}
|
|
function de() {
|
|
function e(t, e) {
|
|
var n = r(t, !1, !0)
|
|
he(n, function (t, e) {
|
|
N(t.event, e)
|
|
}),
|
|
w(n, e),
|
|
he(n, function (t, e) {
|
|
k('eventAfterRender', t.event, t.event, e)
|
|
})
|
|
}
|
|
function n(t, e, n) {
|
|
var a = r([t], !0, !1),
|
|
o = []
|
|
return (
|
|
he(a, function (t, r) {
|
|
t.row === e && r.css('top', n), o.push(r[0])
|
|
}),
|
|
o
|
|
)
|
|
}
|
|
function r(e, n, r) {
|
|
var o,
|
|
l,
|
|
c = Z(),
|
|
d = n ? t('<div/>') : c,
|
|
v = a(e)
|
|
return (
|
|
i(v),
|
|
(o = s(v)),
|
|
(d[0].innerHTML = o),
|
|
(l = d.children()),
|
|
n && c.append(l),
|
|
u(v, l),
|
|
he(v, function (t, e) {
|
|
t.hsides = x(e, !0)
|
|
}),
|
|
he(v, function (t, e) {
|
|
e.width(Math.max(0, t.outerWidth - t.hsides))
|
|
}),
|
|
he(v, function (t, e) {
|
|
t.outerHeight = e.outerHeight(!0)
|
|
}),
|
|
f(v, r),
|
|
v
|
|
)
|
|
}
|
|
function a(t) {
|
|
for (var e = [], n = 0; t.length > n; n++) {
|
|
var r = o(t[n])
|
|
e.push.apply(e, r)
|
|
}
|
|
return e
|
|
}
|
|
function o(t) {
|
|
for (
|
|
var e = t.start, n = C(t), r = ee(e, n), a = 0;
|
|
r.length > a;
|
|
a++
|
|
)
|
|
r[a].event = t
|
|
return r
|
|
}
|
|
function i(t) {
|
|
for (var e = T('isRTL'), n = 0; t.length > n; n++) {
|
|
var r = t[n],
|
|
a = (e ? r.isEnd : r.isStart) ? V : X,
|
|
o = (e ? r.isStart : r.isEnd) ? U : J,
|
|
i = a(r.leftCol),
|
|
s = o(r.rightCol)
|
|
;(r.left = i), (r.outerWidth = s - i)
|
|
}
|
|
}
|
|
function s(t) {
|
|
for (var e = '', n = 0; t.length > n; n++) e += c(t[n])
|
|
return e
|
|
}
|
|
function c(t) {
|
|
var e = '',
|
|
n = T('isRTL'),
|
|
r = t.event,
|
|
a = r.url,
|
|
o = ['fc-event', 'fc-event-hori']
|
|
H(r) && o.push('fc-event-draggable'),
|
|
t.isStart && o.push('fc-event-start'),
|
|
t.isEnd && o.push('fc-event-end'),
|
|
(o = o.concat(r.className)),
|
|
r.source && (o = o.concat(r.source.className || []))
|
|
var i = j(r, T)
|
|
return (
|
|
(e += a ? "<a href='" + q(a) + "'" : '<div'),
|
|
(e +=
|
|
" class='" +
|
|
o.join(' ') +
|
|
"'" +
|
|
' style=' +
|
|
"'" +
|
|
'position:absolute;' +
|
|
'left:' +
|
|
t.left +
|
|
'px;' +
|
|
i +
|
|
"'" +
|
|
'>' +
|
|
"<div class='fc-event-inner'>"),
|
|
!r.allDay &&
|
|
t.isStart &&
|
|
(e +=
|
|
"<span class='fc-event-time'>" +
|
|
q(G(r.start, r.end, T('timeFormat'))) +
|
|
'</span>'),
|
|
(e +=
|
|
"<span class='fc-event-title'>" +
|
|
q(r.title || '') +
|
|
'</span>' +
|
|
' </div>'),
|
|
t.isEnd &&
|
|
F(r) &&
|
|
(e +=
|
|
"<div class='ui-resizable-handle ui-resizable-" +
|
|
(n ? 'w' : 'e') +
|
|
"'>" +
|
|
' ' +
|
|
'</div>'),
|
|
(e += '</' + (a ? 'a' : 'div') + '>')
|
|
)
|
|
}
|
|
function u(e, n) {
|
|
for (var r = 0; e.length > r; r++) {
|
|
var a = e[r],
|
|
o = a.event,
|
|
i = n.eq(r),
|
|
s = k('eventRender', o, o, i)
|
|
s === !1
|
|
? i.remove()
|
|
: (s &&
|
|
s !== !0 &&
|
|
((s = t(s).css({
|
|
position: 'absolute',
|
|
left: a.left,
|
|
})),
|
|
i.replaceWith(s),
|
|
(i = s)),
|
|
(a.element = i))
|
|
}
|
|
}
|
|
function f(t, e) {
|
|
var n = v(t),
|
|
r = y(),
|
|
a = []
|
|
if (e) for (var o = 0; r.length > o; o++) r[o].height(n[o])
|
|
for (var o = 0; r.length > o; o++) a.push(r[o].position().top)
|
|
he(t, function (t, e) {
|
|
e.css('top', a[t.row] + t.top)
|
|
})
|
|
}
|
|
function v(t) {
|
|
for (var e = P(), n = B(), r = [], a = g(t), o = 0; e > o; o++) {
|
|
for (var i = a[o], s = [], l = 0; n > l; l++) s.push(0)
|
|
for (var c = 0; i.length > c; c++) {
|
|
var u = i[c]
|
|
u.top = L(s.slice(u.leftCol, u.rightCol + 1))
|
|
for (var l = u.leftCol; u.rightCol >= l; l++)
|
|
s[l] = u.top + u.outerHeight
|
|
}
|
|
r.push(L(s))
|
|
}
|
|
return r
|
|
}
|
|
function g(t) {
|
|
var e,
|
|
n,
|
|
r,
|
|
a = P(),
|
|
o = []
|
|
for (e = 0; t.length > e; e++)
|
|
(n = t[e]),
|
|
(r = n.row),
|
|
n.element && (o[r] ? o[r].push(n) : (o[r] = [n]))
|
|
for (r = 0; a > r; r++) o[r] = p(o[r] || [])
|
|
return o
|
|
}
|
|
function p(t) {
|
|
for (var e = [], n = m(t), r = 0; n.length > r; r++)
|
|
e.push.apply(e, n[r])
|
|
return e
|
|
}
|
|
function m(t) {
|
|
t.sort(ge)
|
|
for (var e = [], n = 0; t.length > n; n++) {
|
|
for (var r = t[n], a = 0; e.length > a && ve(r, e[a]); a++);
|
|
e[a] ? e[a].push(r) : (e[a] = [r])
|
|
}
|
|
return e
|
|
}
|
|
function y() {
|
|
var t,
|
|
e = P(),
|
|
n = []
|
|
for (t = 0; e > t; t++) n[t] = I(t).find('div.fc-day-content > div')
|
|
return n
|
|
}
|
|
function w(t, e) {
|
|
var n = Z()
|
|
he(t, function (t, n, r) {
|
|
var a = t.event
|
|
a._id === e ? b(a, n, t) : (n[0]._fci = r)
|
|
}),
|
|
E(n, t, b)
|
|
}
|
|
function b(t, e, n) {
|
|
H(t) && S.draggableDayEvent(t, e, n),
|
|
n.isEnd && F(t) && S.resizableDayEvent(t, e, n),
|
|
z(t, e)
|
|
}
|
|
function D(t, e) {
|
|
var n,
|
|
r = te()
|
|
e.draggable({
|
|
delay: 50,
|
|
opacity: T('dragOpacity'),
|
|
revertDuration: T('dragRevertDuration'),
|
|
start: function (a, o) {
|
|
k('eventDragStart', e, t, a, o),
|
|
A(t, e),
|
|
r.start(
|
|
function (r, a, o, i) {
|
|
if (
|
|
(e.draggable(
|
|
'option',
|
|
'revert',
|
|
!r || (!o && !i)
|
|
),
|
|
Q(),
|
|
r)
|
|
) {
|
|
var s = ne(a),
|
|
c = ne(r)
|
|
;(n = h(c, s)),
|
|
$(l(d(t.start), n), l(C(t), n))
|
|
} else n = 0
|
|
},
|
|
a,
|
|
'drag'
|
|
)
|
|
},
|
|
stop: function (a, o) {
|
|
r.stop(),
|
|
Q(),
|
|
k('eventDragStop', e, t, a, o),
|
|
n
|
|
? O(this, t, n, 0, t.allDay, a, o)
|
|
: (e.css('filter', ''), W(t, e))
|
|
},
|
|
})
|
|
}
|
|
function M(e, r, a) {
|
|
var o = T('isRTL'),
|
|
i = o ? 'w' : 'e',
|
|
s = r.find('.ui-resizable-' + i),
|
|
c = !1
|
|
Y(r),
|
|
r
|
|
.mousedown(function (t) {
|
|
t.preventDefault()
|
|
})
|
|
.click(function (t) {
|
|
c && (t.preventDefault(), t.stopImmediatePropagation())
|
|
}),
|
|
s.mousedown(function (o) {
|
|
function s(n) {
|
|
k('eventResizeStop', this, e, n),
|
|
t('body').css('cursor', ''),
|
|
u.stop(),
|
|
Q(),
|
|
f && _(this, e, f, 0, n),
|
|
setTimeout(function () {
|
|
c = !1
|
|
}, 0)
|
|
}
|
|
if (1 == o.which) {
|
|
c = !0
|
|
var u = te()
|
|
P(), B()
|
|
var f,
|
|
d,
|
|
v = r.css('top'),
|
|
h = t.extend({}, e),
|
|
g = ie(oe(e.start))
|
|
K(),
|
|
t('body')
|
|
.css('cursor', i + '-resize')
|
|
.one('mouseup', s),
|
|
k('eventResizeStart', this, e, o),
|
|
u.start(function (r, o) {
|
|
if (r) {
|
|
var s = re(o),
|
|
c = re(r)
|
|
if (
|
|
((c = Math.max(c, g)),
|
|
(f = ae(c) - ae(s)))
|
|
) {
|
|
h.end = l(R(e), f, !0)
|
|
var u = d
|
|
;(d = n(h, a.row, v)),
|
|
(d = t(d)),
|
|
d
|
|
.find('*')
|
|
.css('cursor', i + '-resize'),
|
|
u && u.remove(),
|
|
A(e)
|
|
} else d && (W(e), d.remove(), (d = null))
|
|
Q(), $(e.start, l(C(e), f))
|
|
}
|
|
}, o)
|
|
}
|
|
})
|
|
}
|
|
var S = this
|
|
;(S.renderDayEvents = e),
|
|
(S.draggableDayEvent = D),
|
|
(S.resizableDayEvent = M)
|
|
var T = S.opt,
|
|
k = S.trigger,
|
|
H = S.isEventDraggable,
|
|
F = S.isEventResizable,
|
|
R = S.eventEnd,
|
|
N = S.reportEventElement,
|
|
z = S.eventElementHandlers,
|
|
W = S.showEvents,
|
|
A = S.hideEvents,
|
|
O = S.eventDrop,
|
|
_ = S.eventResize,
|
|
P = S.getRowCnt,
|
|
B = S.getColCnt
|
|
S.getColWidth
|
|
var I = S.allDayRow,
|
|
X = S.colLeft,
|
|
J = S.colRight,
|
|
V = S.colContentLeft,
|
|
U = S.colContentRight
|
|
S.dateToCell
|
|
var Z = S.getDaySegmentContainer,
|
|
G = S.calendar.formatDates,
|
|
$ = S.renderDayOverlay,
|
|
Q = S.clearOverlays,
|
|
K = S.clearSelection,
|
|
te = S.getHoverListener,
|
|
ee = S.rangeToSegments,
|
|
ne = S.cellToDate,
|
|
re = S.cellToCellOffset,
|
|
ae = S.cellOffsetToDayOffset,
|
|
oe = S.dateToDayOffset,
|
|
ie = S.dayOffsetToCellOffset
|
|
}
|
|
function ve(t, e) {
|
|
for (var n = 0; e.length > n; n++) {
|
|
var r = e[n]
|
|
if (r.leftCol <= t.rightCol && r.rightCol >= t.leftCol) return !0
|
|
}
|
|
return !1
|
|
}
|
|
function he(t, e) {
|
|
for (var n = 0; t.length > n; n++) {
|
|
var r = t[n],
|
|
a = r.element
|
|
a && e(r, a, n)
|
|
}
|
|
}
|
|
function ge(t, e) {
|
|
return (
|
|
e.rightCol - e.leftCol - (t.rightCol - t.leftCol) ||
|
|
e.event.allDay - t.event.allDay ||
|
|
t.event.start - e.event.start ||
|
|
(t.event.title || '').localeCompare(e.event.title)
|
|
)
|
|
}
|
|
function pe() {
|
|
function e(t, e, a) {
|
|
n(), e || (e = l(t, a)), c(t, e, a), r(t, e, a)
|
|
}
|
|
function n(t) {
|
|
f && ((f = !1), u(), s('unselect', null, t))
|
|
}
|
|
function r(t, e, n, r) {
|
|
;(f = !0), s('select', null, t, e, n, r)
|
|
}
|
|
function a(e) {
|
|
var a = o.cellToDate,
|
|
s = o.getIsCellAllDay,
|
|
l = o.getHoverListener(),
|
|
f = o.reportDayClick
|
|
if (1 == e.which && i('selectable')) {
|
|
n(e)
|
|
var d
|
|
l.start(function (t, e) {
|
|
u(),
|
|
t && s(t)
|
|
? ((d = [a(e), a(t)].sort(O)), c(d[0], d[1], !0))
|
|
: (d = null)
|
|
}, e),
|
|
t(document).one('mouseup', function (t) {
|
|
l.stop(),
|
|
d &&
|
|
(+d[0] == +d[1] && f(d[0], !0, t),
|
|
r(d[0], d[1], !0, t))
|
|
})
|
|
}
|
|
}
|
|
var o = this
|
|
;(o.select = e),
|
|
(o.unselect = n),
|
|
(o.reportSelection = r),
|
|
(o.daySelectionMousedown = a)
|
|
var i = o.opt,
|
|
s = o.trigger,
|
|
l = o.defaultSelectionEnd,
|
|
c = o.renderSelection,
|
|
u = o.clearSelection,
|
|
f = !1
|
|
i('selectable') &&
|
|
i('unselectAuto') &&
|
|
t(document).mousedown(function (e) {
|
|
var r = i('unselectCancel')
|
|
;(r && t(e.target).parents(r).length) || n(e)
|
|
})
|
|
}
|
|
function me() {
|
|
function e(e, n) {
|
|
var r = o.shift()
|
|
return (
|
|
r ||
|
|
(r = t(
|
|
"<div class='fc-cell-overlay' style='position:absolute;z-index:3'/>"
|
|
)),
|
|
r[0].parentNode != n[0] && r.appendTo(n),
|
|
a.push(r.css(e).show()),
|
|
r
|
|
)
|
|
}
|
|
function n() {
|
|
for (var t; (t = a.shift()); ) o.push(t.hide().unbind())
|
|
}
|
|
var r = this
|
|
;(r.renderOverlay = e), (r.clearOverlays = n)
|
|
var a = [],
|
|
o = []
|
|
}
|
|
function ye(t) {
|
|
var e,
|
|
n,
|
|
r = this
|
|
;(r.build = function () {
|
|
;(e = []), (n = []), t(e, n)
|
|
}),
|
|
(r.cell = function (t, r) {
|
|
var a,
|
|
o = e.length,
|
|
i = n.length,
|
|
s = -1,
|
|
l = -1
|
|
for (a = 0; o > a; a++)
|
|
if (r >= e[a][0] && e[a][1] > r) {
|
|
s = a
|
|
break
|
|
}
|
|
for (a = 0; i > a; a++)
|
|
if (t >= n[a][0] && n[a][1] > t) {
|
|
l = a
|
|
break
|
|
}
|
|
return s >= 0 && l >= 0 ? { row: s, col: l } : null
|
|
}),
|
|
(r.rect = function (t, r, a, o, i) {
|
|
var s = i.offset()
|
|
return {
|
|
top: e[t][0] - s.top,
|
|
left: n[r][0] - s.left,
|
|
width: n[o][1] - n[r][0],
|
|
height: e[a][1] - e[t][0],
|
|
}
|
|
})
|
|
}
|
|
function we(e) {
|
|
function n(t) {
|
|
be(t)
|
|
var n = e.cell(t.pageX, t.pageY)
|
|
;(!n != !i || (n && (n.row != i.row || n.col != i.col))) &&
|
|
(n
|
|
? (o || (o = n), a(n, o, n.row - o.row, n.col - o.col))
|
|
: a(n, o),
|
|
(i = n))
|
|
}
|
|
var r,
|
|
a,
|
|
o,
|
|
i,
|
|
s = this
|
|
;(s.start = function (s, l, c) {
|
|
;(a = s),
|
|
(o = i = null),
|
|
e.build(),
|
|
n(l),
|
|
(r = c || 'mousemove'),
|
|
t(document).bind(r, n)
|
|
}),
|
|
(s.stop = function () {
|
|
return t(document).unbind(r, n), i
|
|
})
|
|
}
|
|
function be(t) {
|
|
t.pageX === e &&
|
|
((t.pageX = t.originalEvent.pageX),
|
|
(t.pageY = t.originalEvent.pageY))
|
|
}
|
|
function De(t) {
|
|
function n(e) {
|
|
return (a[e] = a[e] || t(e))
|
|
}
|
|
var r = this,
|
|
a = {},
|
|
o = {},
|
|
i = {}
|
|
;(r.left = function (t) {
|
|
return (o[t] = o[t] === e ? n(t).position().left : o[t])
|
|
}),
|
|
(r.right = function (t) {
|
|
return (i[t] = i[t] === e ? r.left(t) + n(t).width() : i[t])
|
|
}),
|
|
(r.clear = function () {
|
|
;(a = {}), (o = {}), (i = {})
|
|
})
|
|
}
|
|
var Ce = {
|
|
defaultView: 'month',
|
|
aspectRatio: 1.35,
|
|
header: { left: 'title', center: '', right: 'today prev,next' },
|
|
weekends: !0,
|
|
weekNumbers: !1,
|
|
weekNumberCalculation: 'iso',
|
|
weekNumberTitle: 'W',
|
|
allDayDefault: !0,
|
|
ignoreTimezone: !0,
|
|
lazyFetching: !0,
|
|
startParam: 'start',
|
|
endParam: 'end',
|
|
titleFormat: {
|
|
month: 'MMMM yyyy',
|
|
week: "MMM d[ yyyy]{ '—'[ MMM] d yyyy}",
|
|
day: 'dddd, MMM d, yyyy',
|
|
},
|
|
columnFormat: { month: 'ddd', week: 'ddd M/d', day: 'dddd M/d' },
|
|
timeFormat: { '': 'h(:mm)t' },
|
|
isRTL: !1,
|
|
firstDay: 0,
|
|
monthNames: [
|
|
'January',
|
|
'February',
|
|
'March',
|
|
'April',
|
|
'May',
|
|
'June',
|
|
'July',
|
|
'August',
|
|
'September',
|
|
'October',
|
|
'November',
|
|
'December',
|
|
],
|
|
monthNamesShort: [
|
|
'Jan',
|
|
'Feb',
|
|
'Mar',
|
|
'Apr',
|
|
'May',
|
|
'Jun',
|
|
'Jul',
|
|
'Aug',
|
|
'Sep',
|
|
'Oct',
|
|
'Nov',
|
|
'Dec',
|
|
],
|
|
dayNames: [
|
|
'Sunday',
|
|
'Monday',
|
|
'Tuesday',
|
|
'Wednesday',
|
|
'Thursday',
|
|
'Friday',
|
|
'Saturday',
|
|
],
|
|
dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
|
|
buttonText: {
|
|
prev: "<span class='fc-text-arrow'>‹</span>",
|
|
next: "<span class='fc-text-arrow'>›</span>",
|
|
prevYear: "<span class='fc-text-arrow'>«</span>",
|
|
nextYear: "<span class='fc-text-arrow'>»</span>",
|
|
today: 'today',
|
|
month: 'month',
|
|
week: 'week',
|
|
day: 'day',
|
|
},
|
|
theme: !1,
|
|
buttonIcons: {
|
|
prev: 'circle-triangle-w',
|
|
next: 'circle-triangle-e',
|
|
},
|
|
unselectAuto: !0,
|
|
dropAccept: '*',
|
|
handleWindowResize: !0,
|
|
},
|
|
Me = {
|
|
header: { left: 'next,prev today', center: '', right: 'title' },
|
|
buttonText: {
|
|
prev: "<span class='fc-text-arrow'>›</span>",
|
|
next: "<span class='fc-text-arrow'>‹</span>",
|
|
prevYear: "<span class='fc-text-arrow'>»</span>",
|
|
nextYear: "<span class='fc-text-arrow'>«</span>",
|
|
},
|
|
buttonIcons: {
|
|
prev: 'circle-triangle-e',
|
|
next: 'circle-triangle-w',
|
|
},
|
|
},
|
|
Ee = (t.fullCalendar = { version: '1.6.4' }),
|
|
Se = (Ee.views = {})
|
|
;(t.fn.fullCalendar = function (n) {
|
|
if ('string' == typeof n) {
|
|
var a,
|
|
o = Array.prototype.slice.call(arguments, 1)
|
|
return (
|
|
this.each(function () {
|
|
var r = t.data(this, 'fullCalendar')
|
|
if (r && t.isFunction(r[n])) {
|
|
var i = r[n].apply(r, o)
|
|
a === e && (a = i),
|
|
'destroy' == n && t.removeData(this, 'fullCalendar')
|
|
}
|
|
}),
|
|
a !== e ? a : this
|
|
)
|
|
}
|
|
n = n || {}
|
|
var i = n.eventSources || []
|
|
return (
|
|
delete n.eventSources,
|
|
n.events && (i.push(n.events), delete n.events),
|
|
(n = t.extend(
|
|
!0,
|
|
{},
|
|
Ce,
|
|
n.isRTL || (n.isRTL === e && Ce.isRTL) ? Me : {},
|
|
n
|
|
)),
|
|
this.each(function (e, a) {
|
|
var o = t(a),
|
|
s = new r(o, n, i)
|
|
o.data('fullCalendar', s), s.render()
|
|
}),
|
|
this
|
|
)
|
|
}),
|
|
(Ee.sourceNormalizers = []),
|
|
(Ee.sourceFetchers = [])
|
|
var Te = { dataType: 'json', cache: !1 },
|
|
xe = 1
|
|
;(Ee.addDays = l),
|
|
(Ee.cloneDate = d),
|
|
(Ee.parseDate = p),
|
|
(Ee.parseISO8601 = m),
|
|
(Ee.parseTime = y),
|
|
(Ee.formatDate = w),
|
|
(Ee.formatDates = b)
|
|
var ke = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'],
|
|
He = 864e5,
|
|
Fe = 36e5,
|
|
Re = 6e4,
|
|
Ne = {
|
|
s: function (t) {
|
|
return t.getSeconds()
|
|
},
|
|
ss: function (t) {
|
|
return _(t.getSeconds())
|
|
},
|
|
m: function (t) {
|
|
return t.getMinutes()
|
|
},
|
|
mm: function (t) {
|
|
return _(t.getMinutes())
|
|
},
|
|
h: function (t) {
|
|
return t.getHours() % 12 || 12
|
|
},
|
|
hh: function (t) {
|
|
return _(t.getHours() % 12 || 12)
|
|
},
|
|
H: function (t) {
|
|
return t.getHours()
|
|
},
|
|
HH: function (t) {
|
|
return _(t.getHours())
|
|
},
|
|
d: function (t) {
|
|
return t.getDate()
|
|
},
|
|
dd: function (t) {
|
|
return _(t.getDate())
|
|
},
|
|
ddd: function (t, e) {
|
|
return e.dayNamesShort[t.getDay()]
|
|
},
|
|
dddd: function (t, e) {
|
|
return e.dayNames[t.getDay()]
|
|
},
|
|
M: function (t) {
|
|
return t.getMonth() + 1
|
|
},
|
|
MM: function (t) {
|
|
return _(t.getMonth() + 1)
|
|
},
|
|
MMM: function (t, e) {
|
|
return e.monthNamesShort[t.getMonth()]
|
|
},
|
|
MMMM: function (t, e) {
|
|
return e.monthNames[t.getMonth()]
|
|
},
|
|
yy: function (t) {
|
|
return (t.getFullYear() + '').substring(2)
|
|
},
|
|
yyyy: function (t) {
|
|
return t.getFullYear()
|
|
},
|
|
t: function (t) {
|
|
return 12 > t.getHours() ? 'a' : 'p'
|
|
},
|
|
tt: function (t) {
|
|
return 12 > t.getHours() ? 'am' : 'pm'
|
|
},
|
|
T: function (t) {
|
|
return 12 > t.getHours() ? 'A' : 'P'
|
|
},
|
|
TT: function (t) {
|
|
return 12 > t.getHours() ? 'AM' : 'PM'
|
|
},
|
|
u: function (t) {
|
|
return w(t, "yyyy-MM-dd'T'HH:mm:ss'Z'")
|
|
},
|
|
S: function (t) {
|
|
var e = t.getDate()
|
|
return e > 10 && 20 > e
|
|
? 'th'
|
|
: ['st', 'nd', 'rd'][(e % 10) - 1] || 'th'
|
|
},
|
|
w: function (t, e) {
|
|
return e.weekNumberCalculation(t)
|
|
},
|
|
W: function (t) {
|
|
return D(t)
|
|
},
|
|
}
|
|
;(Ee.dateFormatters = Ne),
|
|
(Ee.applyAll = I),
|
|
(Se.month = J),
|
|
(Se.basicWeek = V),
|
|
(Se.basicDay = U),
|
|
n({ weekMode: 'fixed' }),
|
|
(Se.agendaWeek = $),
|
|
(Se.agendaDay = Q),
|
|
n({
|
|
allDaySlot: !0,
|
|
allDayText: 'all-day',
|
|
firstHour: 6,
|
|
slotMinutes: 30,
|
|
defaultEventMinutes: 120,
|
|
axisFormat: 'h(:mm)tt',
|
|
timeFormat: { agenda: 'h:mm{ - h:mm}' },
|
|
dragOpacity: { agenda: 0.5 },
|
|
minTime: 0,
|
|
maxTime: 24,
|
|
slotEventOverlap: !0,
|
|
})
|
|
})(jQuery)
|