fullcalendar.js 95 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928
  1. /*!
  2. * FullCalendar v1.6.4
  3. * Docs & License: http://arshaw.com/fullcalendar/
  4. * (c) 2013 Adam Shaw
  5. */
  6. (function(t, e) {
  7. function n(e) {
  8. t.extend(!0, Ce, e)
  9. }
  10. function r(n, r, c) {
  11. function u(t) {
  12. ae ? p() && (S(),
  13. M(t)) : f()
  14. }
  15. function f() {
  16. oe = r.theme ? "ui" : "fc",
  17. n.addClass("fc"),
  18. r.isRTL ? n.addClass("fc-rtl") : n.addClass("fc-ltr"),
  19. r.theme && n.addClass("ui-widget"),
  20. ae = t("<div class='fc-content' style='position:relative'/>").prependTo(n),
  21. ne = new a(ee,r),
  22. re = ne.render(),
  23. re && n.prepend(re),
  24. y(r.defaultView),
  25. r.handleWindowResize && t(window).resize(x),
  26. m() || v()
  27. }
  28. function v() {
  29. setTimeout(function() {
  30. !ie.start && m() && C()
  31. }, 0)
  32. }
  33. function h() {
  34. ie && (te("viewDestroy", ie, ie, ie.element),
  35. ie.triggerEventDestroy()),
  36. t(window).unbind("resize", x),
  37. ne.destroy(),
  38. ae.remove(),
  39. n.removeClass("fc fc-rtl ui-widget")
  40. }
  41. function p() {
  42. return n.is(":visible")
  43. }
  44. function m() {
  45. return t("body").is(":visible")
  46. }
  47. function y(t) {
  48. ie && t == ie.name || D(t)
  49. }
  50. function D(e) {
  51. he++,
  52. ie && (te("viewDestroy", ie, ie, ie.element),
  53. Y(),
  54. ie.triggerEventDestroy(),
  55. G(),
  56. ie.element.remove(),
  57. ne.deactivateButton(ie.name)),
  58. ne.activateButton(e),
  59. ie = new Se[e](t("<div class='fc-view fc-view-" + e + "' style='position:relative'/>").appendTo(ae),ee),
  60. C(),
  61. $(),
  62. he--
  63. }
  64. function C(t) {
  65. (!ie.start || t || ie.start > ge || ge >= ie.end) && p() && M(t)
  66. }
  67. function M(t) {
  68. he++,
  69. ie.start && (te("viewDestroy", ie, ie, ie.element),
  70. Y(),
  71. N()),
  72. G(),
  73. ie.render(ge, t || 0),
  74. T(),
  75. $(),
  76. (ie.afterRender || A)(),
  77. _(),
  78. P(),
  79. te("viewRender", ie, ie, ie.element),
  80. ie.trigger("viewDisplay", de),
  81. he--,
  82. z()
  83. }
  84. function E() {
  85. p() && (Y(),
  86. N(),
  87. S(),
  88. T(),
  89. F())
  90. }
  91. function S() {
  92. le = r.contentHeight ? r.contentHeight : r.height ? r.height - (re ? re.height() : 0) - R(ae) : Math.round(ae.width() / Math.max(r.aspectRatio, .5))
  93. }
  94. function T() {
  95. le === e && S(),
  96. he++,
  97. ie.setHeight(le),
  98. ie.setWidth(ae.width()),
  99. he--,
  100. se = n.outerWidth()
  101. }
  102. function x() {
  103. if (!he)
  104. if (ie.start) {
  105. var t = ++ve;
  106. setTimeout(function() {
  107. t == ve && !he && p() && se != (se = n.outerWidth()) && (he++,
  108. E(),
  109. ie.trigger("windowResize", de),
  110. he--)
  111. }, 200)
  112. } else
  113. v()
  114. }
  115. function k() {
  116. N(),
  117. W()
  118. }
  119. function H(t) {
  120. N(),
  121. F(t)
  122. }
  123. function F(t) {
  124. p() && (ie.setEventData(pe),
  125. ie.renderEvents(pe, t),
  126. ie.trigger("eventAfterAllRender"))
  127. }
  128. function N() {
  129. ie.triggerEventDestroy(),
  130. ie.clearEvents(),
  131. ie.clearEventData()
  132. }
  133. function z() {
  134. !r.lazyFetching || ue(ie.visStart, ie.visEnd) ? W() : F()
  135. }
  136. function W() {
  137. fe(ie.visStart, ie.visEnd)
  138. }
  139. function O(t) {
  140. pe = t,
  141. F()
  142. }
  143. function L(t) {
  144. H(t)
  145. }
  146. function _() {
  147. ne.updateTitle(ie.title)
  148. }
  149. function P() {
  150. var t = new Date;
  151. t >= ie.start && ie.end > t ? ne.disableButton("today") : ne.enableButton("today")
  152. }
  153. function q(t, n, r) {
  154. ie.select(t, n, r === e ? !0 : r)
  155. }
  156. function Y() {
  157. ie && ie.unselect()
  158. }
  159. function B() {
  160. C(-1)
  161. }
  162. function j() {
  163. C(1)
  164. }
  165. function I() {
  166. i(ge, -1),
  167. C()
  168. }
  169. function X() {
  170. i(ge, 1),
  171. C()
  172. }
  173. function J() {
  174. ge = ee.options.defaultDate ? new Date(ee.options.defaultDate) : new Date,
  175. C()
  176. }
  177. function V(t, e, n) {
  178. t instanceof Date ? ge = d(t) : g(ge, t, e, n),
  179. C()
  180. }
  181. function U(t, n, r) {
  182. t !== e && i(ge, t),
  183. n !== e && s(ge, n),
  184. r !== e && l(ge, r),
  185. C()
  186. }
  187. function Z() {
  188. return d(ge)
  189. }
  190. function G() {
  191. ae.css({
  192. width: "100%",
  193. height: ae.height(),
  194. overflow: "hidden"
  195. })
  196. }
  197. function $() {
  198. ae.css({
  199. width: "",
  200. height: "",
  201. overflow: ""
  202. })
  203. }
  204. function Q() {
  205. return ie
  206. }
  207. function K(t, n) {
  208. return n === e ? r[t] : (("height" == t || "contentHeight" == t || "aspectRatio" == t) && (r[t] = n,
  209. E()),
  210. e)
  211. }
  212. function te(t, n) {
  213. return r[t] ? r[t].apply(n || de, Array.prototype.slice.call(arguments, 2)) : e
  214. }
  215. var ee = this;
  216. ee.options = r,
  217. ee.render = u,
  218. ee.destroy = h,
  219. ee.refetchEvents = k,
  220. ee.reportEvents = O,
  221. ee.reportEventChange = L,
  222. ee.rerenderEvents = H,
  223. ee.changeView = y,
  224. ee.select = q,
  225. ee.unselect = Y,
  226. ee.prev = B,
  227. ee.next = j,
  228. ee.prevYear = I,
  229. ee.nextYear = X,
  230. ee.today = J,
  231. ee.gotoDate = V,
  232. ee.incrementDate = U,
  233. ee.formatDate = function(t, e) {
  234. return w(t, e, r)
  235. }
  236. ,
  237. ee.formatDates = function(t, e, n) {
  238. return b(t, e, n, r)
  239. }
  240. ,
  241. ee.getDate = Z,
  242. ee.getView = Q,
  243. ee.option = K,
  244. ee.trigger = te,
  245. o.call(ee, r, c);
  246. var ne, re, ae, oe, ie, se, le, ce, ue = ee.isFetchNeeded, fe = ee.fetchEvents, de = n[0], ve = 0, he = 0, ge = ee.options.defaultDate ? new Date(ee.options.defaultDate) : new Date, pe = [];
  247. g(ge, r.year, r.month, r.date),
  248. r.droppable && t(document).bind("dragstart", function(e, n) {
  249. var a = e.target
  250. , o = t(a);
  251. if (!o.parents(".fc").length) {
  252. var i = r.dropAccept;
  253. (t.isFunction(i) ? i.call(a, o) : o.is(i)) && (ce = a,
  254. ie.dragStart(ce, e, n))
  255. }
  256. }).bind("dragstop", function(t, e) {
  257. ce && (ie.dragStop(ce, t, e),
  258. ce = null)
  259. })
  260. }
  261. function a(n, r) {
  262. function a() {
  263. v = r.theme ? "ui" : "fc";
  264. var n = r.header;
  265. return n ? h = t("<table class='fc-header' style='width:100%'/>").append(t("<tr/>").append(i("left")).append(i("center")).append(i("right"))) : e
  266. }
  267. function o() {
  268. h.remove()
  269. }
  270. function i(e) {
  271. var a = t("<td class='fc-header-" + e + "'/>")
  272. , o = r.header[e];
  273. return o && t.each(o.split(" "), function(e) {
  274. e > 0 && a.append("<span class='fc-header-space'/>");
  275. var o;
  276. t.each(this.split(","), function(e, i) {
  277. if ("title" == i)
  278. a.append("<span class='fc-header-title'><h2>&nbsp;</h2></span>"),
  279. o && o.addClass(v + "-corner-right"),
  280. o = null;
  281. else {
  282. var s;
  283. if (n[i] ? s = n[i] : Se[i] && (s = function() {
  284. u.removeClass(v + "-state-hover"),
  285. n.changeView(i)
  286. }
  287. ),
  288. s) {
  289. var l = r.theme ? P(r.buttonIcons, i) : null
  290. , c = P(r.buttonText, i)
  291. , 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() {
  292. u.hasClass(v + "-state-disabled") || s()
  293. }).mousedown(function() {
  294. u.not("." + v + "-state-active").not("." + v + "-state-disabled").addClass(v + "-state-down")
  295. }).mouseup(function() {
  296. u.removeClass(v + "-state-down")
  297. }).hover(function() {
  298. u.not("." + v + "-state-active").not("." + v + "-state-disabled").addClass(v + "-state-hover")
  299. }, function() {
  300. u.removeClass(v + "-state-hover").removeClass(v + "-state-down")
  301. }).appendTo(a);
  302. Y(u),
  303. o || u.addClass(v + "-corner-left"),
  304. o = u
  305. }
  306. }
  307. }),
  308. o && o.addClass(v + "-corner-right")
  309. }),
  310. a
  311. }
  312. function s(t) {
  313. h.find("h2").html(t)
  314. }
  315. function l(t) {
  316. h.find("span.fc-button-" + t).addClass(v + "-state-active")
  317. }
  318. function c(t) {
  319. h.find("span.fc-button-" + t).removeClass(v + "-state-active")
  320. }
  321. function u(t) {
  322. h.find("span.fc-button-" + t).addClass(v + "-state-disabled")
  323. }
  324. function f(t) {
  325. h.find("span.fc-button-" + t).removeClass(v + "-state-disabled")
  326. }
  327. var d = this;
  328. d.render = a,
  329. d.destroy = o,
  330. d.updateTitle = s,
  331. d.activateButton = l,
  332. d.deactivateButton = c,
  333. d.disableButton = u,
  334. d.enableButton = f;
  335. var v, h = t([])
  336. }
  337. function o(n, r) {
  338. function a(t, e) {
  339. return !E || E > t || e > S
  340. }
  341. function o(t, e) {
  342. E = t,
  343. S = e,
  344. W = [];
  345. var n = ++R
  346. , r = F.length;
  347. N = r;
  348. for (var a = 0; r > a; a++)
  349. i(F[a], n)
  350. }
  351. function i(e, r) {
  352. s(e, function(a) {
  353. if (r == R) {
  354. if (a) {
  355. n.eventDataTransform && (a = t.map(a, n.eventDataTransform)),
  356. e.eventDataTransform && (a = t.map(a, e.eventDataTransform));
  357. for (var o = 0; a.length > o; o++)
  358. a[o].source = e,
  359. w(a[o]);
  360. W = W.concat(a)
  361. }
  362. N--,
  363. N || k(W)
  364. }
  365. })
  366. }
  367. function s(r, a) {
  368. var o, i, l = Ee.sourceFetchers;
  369. for (o = 0; l.length > o; o++) {
  370. if (i = l[o](r, E, S, a),
  371. i === !0)
  372. return;
  373. if ("object" == typeof i)
  374. return s(i, a),
  375. e
  376. }
  377. var c = r.events;
  378. if (c)
  379. t.isFunction(c) ? (m(),
  380. c(d(E), d(S), function(t) {
  381. a(t),
  382. y()
  383. })) : t.isArray(c) ? a(c) : a();
  384. else {
  385. var u = r.url;
  386. if (u) {
  387. var f, v = r.success, h = r.error, g = r.complete;
  388. f = t.isFunction(r.data) ? r.data() : r.data;
  389. var p = t.extend({}, f || {})
  390. , w = X(r.startParam, n.startParam)
  391. , b = X(r.endParam, n.endParam);
  392. w && (p[w] = Math.round(+E / 1e3)),
  393. b && (p[b] = Math.round(+S / 1e3)),
  394. m(),
  395. t.ajax(t.extend({}, Te, r, {
  396. data: p,
  397. success: function(e) {
  398. e = e || [];
  399. var n = I(v, this, arguments);
  400. t.isArray(n) && (e = n),
  401. a(e)
  402. },
  403. error: function() {
  404. I(h, this, arguments),
  405. a()
  406. },
  407. complete: function() {
  408. I(g, this, arguments),
  409. y()
  410. }
  411. }))
  412. } else
  413. a()
  414. }
  415. }
  416. function l(t) {
  417. t = c(t),
  418. t && (N++,
  419. i(t, R))
  420. }
  421. function c(n) {
  422. return t.isFunction(n) || t.isArray(n) ? n = {
  423. events: n
  424. } : "string" == typeof n && (n = {
  425. url: n
  426. }),
  427. "object" == typeof n ? (b(n),
  428. F.push(n),
  429. n) : e
  430. }
  431. function u(e) {
  432. F = t.grep(F, function(t) {
  433. return !D(t, e)
  434. }),
  435. W = t.grep(W, function(t) {
  436. return !D(t.source, e)
  437. }),
  438. k(W)
  439. }
  440. function f(t) {
  441. var e, n, r = W.length, a = x().defaultEventEnd, o = t.start - t._start, i = t.end ? t.end - (t._end || a(t)) : 0;
  442. for (e = 0; r > e; e++)
  443. n = W[e],
  444. n._id == t._id && n != t && (n.start = new Date(+n.start + o),
  445. n.end = t.end ? n.end ? new Date(+n.end + i) : new Date(+a(n) + i) : null,
  446. n.title = t.title,
  447. n.url = t.url,
  448. n.allDay = t.allDay,
  449. n.className = t.className,
  450. n.editable = t.editable,
  451. n.color = t.color,
  452. n.backgroundColor = t.backgroundColor,
  453. n.borderColor = t.borderColor,
  454. n.textColor = t.textColor,
  455. w(n));
  456. w(t),
  457. k(W)
  458. }
  459. function v(t, e) {
  460. w(t),
  461. t.source || (e && (H.events.push(t),
  462. t.source = H),
  463. W.push(t)),
  464. k(W)
  465. }
  466. function h(e) {
  467. if (e) {
  468. if (!t.isFunction(e)) {
  469. var n = e + "";
  470. e = function(t) {
  471. return t._id == n
  472. }
  473. }
  474. W = t.grep(W, e, !0);
  475. for (var r = 0; F.length > r; r++)
  476. t.isArray(F[r].events) && (F[r].events = t.grep(F[r].events, e, !0))
  477. } else {
  478. W = [];
  479. for (var r = 0; F.length > r; r++)
  480. t.isArray(F[r].events) && (F[r].events = [])
  481. }
  482. k(W)
  483. }
  484. function g(e) {
  485. return t.isFunction(e) ? t.grep(W, e) : e ? (e += "",
  486. t.grep(W, function(t) {
  487. return t._id == e
  488. })) : W
  489. }
  490. function m() {
  491. z++ || T("loading", null, !0, x())
  492. }
  493. function y() {
  494. --z || T("loading", null, !1, x())
  495. }
  496. function w(t) {
  497. var r = t.source || {}
  498. , a = X(r.ignoreTimezone, n.ignoreTimezone);
  499. t._id = t._id || (t.id === e ? "_fc" + xe++ : t.id + ""),
  500. t.date && (t.start || (t.start = t.date),
  501. delete t.date),
  502. t._start = d(t.start = p(t.start, a)),
  503. t.end = p(t.end, a),
  504. t.end && t.end <= t.start && (t.end = null),
  505. t._end = t.end ? d(t.end) : null,
  506. t.allDay === e && (t.allDay = X(r.allDayDefault, n.allDayDefault)),
  507. t.className ? "string" == typeof t.className && (t.className = t.className.split(/\s+/)) : t.className = []
  508. }
  509. function b(t) {
  510. t.className ? "string" == typeof t.className && (t.className = t.className.split(/\s+/)) : t.className = [];
  511. for (var e = Ee.sourceNormalizers, n = 0; e.length > n; n++)
  512. e[n](t)
  513. }
  514. function D(t, e) {
  515. return t && e && C(t) == C(e)
  516. }
  517. function C(t) {
  518. return ("object" == typeof t ? t.events || t.url : "") || t
  519. }
  520. var M = this;
  521. M.isFetchNeeded = a,
  522. M.fetchEvents = o,
  523. M.addEventSource = l,
  524. M.removeEventSource = u,
  525. M.updateEvent = f,
  526. M.renderEvent = v,
  527. M.removeEvents = h,
  528. M.clientEvents = g,
  529. M.normalizeEvent = w;
  530. for (var E, S, T = M.trigger, x = M.getView, k = M.reportEvents, H = {
  531. events: []
  532. }, F = [H], R = 0, N = 0, z = 0, W = [], A = 0; r.length > A; A++)
  533. c(r[A])
  534. }
  535. function i(t, e, n) {
  536. return t.setFullYear(t.getFullYear() + e),
  537. n || f(t),
  538. t
  539. }
  540. function s(t, e, n) {
  541. if (+t) {
  542. var r = t.getMonth() + e
  543. , a = d(t);
  544. for (a.setDate(1),
  545. a.setMonth(r),
  546. t.setMonth(r),
  547. n || f(t); t.getMonth() != a.getMonth(); )
  548. t.setDate(t.getDate() + (a > t ? 1 : -1))
  549. }
  550. return t
  551. }
  552. function l(t, e, n) {
  553. if (+t) {
  554. var r = t.getDate() + e
  555. , a = d(t);
  556. a.setHours(9),
  557. a.setDate(r),
  558. t.setDate(r),
  559. n || f(t),
  560. c(t, a)
  561. }
  562. return t
  563. }
  564. function c(t, e) {
  565. if (+t)
  566. for (; t.getDate() != e.getDate(); )
  567. t.setTime(+t + (e > t ? 1 : -1) * Fe)
  568. }
  569. function u(t, e) {
  570. return t.setMinutes(t.getMinutes() + e),
  571. t
  572. }
  573. function f(t) {
  574. return t.setHours(0),
  575. t.setMinutes(0),
  576. t.setSeconds(0),
  577. t.setMilliseconds(0),
  578. t
  579. }
  580. function d(t, e) {
  581. return e ? f(new Date(+t)) : new Date(+t)
  582. }
  583. function v() {
  584. var t, e = 0;
  585. do
  586. t = new Date(1970,e++,1);
  587. while (t.getHours());return t
  588. }
  589. function h(t, e) {
  590. return Math.round((d(t, !0) - d(e, !0)) / He)
  591. }
  592. function g(t, n, r, a) {
  593. n !== e && n != t.getFullYear() && (t.setDate(1),
  594. t.setMonth(0),
  595. t.setFullYear(n)),
  596. r !== e && r != t.getMonth() && (t.setDate(1),
  597. t.setMonth(r)),
  598. a !== e && t.setDate(a)
  599. }
  600. function p(t, n) {
  601. 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),
  602. m(t, n) || (t ? new Date(t) : null)) : null
  603. }
  604. function m(t, e) {
  605. 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}))?))?)?)?)?$/);
  606. if (!n)
  607. return null;
  608. var r = new Date(n[1],0,1);
  609. if (e || !n[13]) {
  610. var a = new Date(n[1],0,1,9,0);
  611. n[3] && (r.setMonth(n[3] - 1),
  612. a.setMonth(n[3] - 1)),
  613. n[5] && (r.setDate(n[5]),
  614. a.setDate(n[5])),
  615. c(r, a),
  616. n[7] && r.setHours(n[7]),
  617. n[8] && r.setMinutes(n[8]),
  618. n[10] && r.setSeconds(n[10]),
  619. n[12] && r.setMilliseconds(1e3 * Number("0." + n[12])),
  620. c(r, a)
  621. } else if (r.setUTCFullYear(n[1], n[3] ? n[3] - 1 : 0, n[5] || 1),
  622. r.setUTCHours(n[7] || 0, n[8] || 0, n[10] || 0, n[12] ? 1e3 * Number("0." + n[12]) : 0),
  623. n[14]) {
  624. var o = 60 * Number(n[16]) + (n[18] ? Number(n[18]) : 0);
  625. o *= "-" == n[15] ? 1 : -1,
  626. r = new Date(+r + 1e3 * 60 * o)
  627. }
  628. return r
  629. }
  630. function y(t) {
  631. if ("number" == typeof t)
  632. return 60 * t;
  633. if ("object" == typeof t)
  634. return 60 * t.getHours() + t.getMinutes();
  635. var e = t.match(/(\d+)(?::(\d+))?\s*(\w+)?/);
  636. if (e) {
  637. var n = parseInt(e[1], 10);
  638. return e[3] && (n %= 12,
  639. "p" == e[3].toLowerCase().charAt(0) && (n += 12)),
  640. 60 * n + (e[2] ? parseInt(e[2], 10) : 0)
  641. }
  642. }
  643. function w(t, e, n) {
  644. return b(t, null, e, n)
  645. }
  646. function b(t, e, n, r) {
  647. r = r || Ce;
  648. var a, o, i, s, l = t, c = e, u = n.length, f = "";
  649. for (a = 0; u > a; a++)
  650. if (o = n.charAt(a),
  651. "'" == o) {
  652. for (i = a + 1; u > i; i++)
  653. if ("'" == n.charAt(i)) {
  654. l && (f += i == a + 1 ? "'" : n.substring(a + 1, i),
  655. a = i);
  656. break
  657. }
  658. } else if ("(" == o) {
  659. for (i = a + 1; u > i; i++)
  660. if (")" == n.charAt(i)) {
  661. var d = w(l, n.substring(a + 1, i), r);
  662. parseInt(d.replace(/\D/, ""), 10) && (f += d),
  663. a = i;
  664. break
  665. }
  666. } else if ("[" == o) {
  667. for (i = a + 1; u > i; i++)
  668. if ("]" == n.charAt(i)) {
  669. var v = n.substring(a + 1, i)
  670. , d = w(l, v, r);
  671. d != w(c, v, r) && (f += d),
  672. a = i;
  673. break
  674. }
  675. } else if ("{" == o)
  676. l = e,
  677. c = t;
  678. else if ("}" == o)
  679. l = t,
  680. c = e;
  681. else {
  682. for (i = u; i > a; i--)
  683. if (s = Ne[n.substring(a, i)]) {
  684. l && (f += s(l, r)),
  685. a = i - 1;
  686. break
  687. }
  688. i == a && l && (f += o)
  689. }
  690. return f
  691. }
  692. function D(t) {
  693. var e, n = new Date(t.getTime());
  694. return n.setDate(n.getDate() + 4 - (n.getDay() || 7)),
  695. e = n.getTime(),
  696. n.setMonth(0),
  697. n.setDate(1),
  698. Math.floor(Math.round((e - n) / 864e5) / 7) + 1
  699. }
  700. function C(t) {
  701. return t.end ? M(t.end, t.allDay) : l(d(t.start), 1)
  702. }
  703. function M(t, e) {
  704. return t = d(t),
  705. e || t.getHours() || t.getMinutes() ? l(t, 1) : f(t)
  706. }
  707. function E(n, r, a) {
  708. n.unbind("mouseover").mouseover(function(n) {
  709. for (var o, i, s, l = n.target; l != this; )
  710. o = l,
  711. l = l.parentNode;
  712. (i = o._fci) !== e && (o._fci = e,
  713. s = r[i],
  714. a(s.event, s.element, s),
  715. t(n.target).trigger(n)),
  716. n.stopPropagation()
  717. })
  718. }
  719. function S(e, n, r) {
  720. for (var a, o = 0; e.length > o; o++)
  721. a = t(e[o]),
  722. a.width(Math.max(0, n - x(a, r)))
  723. }
  724. function T(e, n, r) {
  725. for (var a, o = 0; e.length > o; o++)
  726. a = t(e[o]),
  727. a.height(Math.max(0, n - R(a, r)))
  728. }
  729. function x(t, e) {
  730. return k(t) + F(t) + (e ? H(t) : 0)
  731. }
  732. function k(e) {
  733. return (parseFloat(t.css(e[0], "paddingLeft", !0)) || 0) + (parseFloat(t.css(e[0], "paddingRight", !0)) || 0)
  734. }
  735. function H(e) {
  736. return (parseFloat(t.css(e[0], "marginLeft", !0)) || 0) + (parseFloat(t.css(e[0], "marginRight", !0)) || 0)
  737. }
  738. function F(e) {
  739. return (parseFloat(t.css(e[0], "borderLeftWidth", !0)) || 0) + (parseFloat(t.css(e[0], "borderRightWidth", !0)) || 0)
  740. }
  741. function R(t, e) {
  742. return N(t) + W(t) + (e ? z(t) : 0)
  743. }
  744. function N(e) {
  745. return (parseFloat(t.css(e[0], "paddingTop", !0)) || 0) + (parseFloat(t.css(e[0], "paddingBottom", !0)) || 0)
  746. }
  747. function z(e) {
  748. return (parseFloat(t.css(e[0], "marginTop", !0)) || 0) + (parseFloat(t.css(e[0], "marginBottom", !0)) || 0)
  749. }
  750. function W(e) {
  751. return (parseFloat(t.css(e[0], "borderTopWidth", !0)) || 0) + (parseFloat(t.css(e[0], "borderBottomWidth", !0)) || 0)
  752. }
  753. function A() {}
  754. function O(t, e) {
  755. return t - e
  756. }
  757. function L(t) {
  758. return Math.max.apply(Math, t)
  759. }
  760. function _(t) {
  761. return (10 > t ? "0" : "") + t
  762. }
  763. function P(t, n) {
  764. if (t[n] !== e)
  765. return t[n];
  766. for (var r, a = n.split(/(?=[A-Z])/), o = a.length - 1; o >= 0; o--)
  767. if (r = t[a[o].toLowerCase()],
  768. r !== e)
  769. return r;
  770. return t[""]
  771. }
  772. function q(t) {
  773. return t.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/'/g, "&#039;").replace(/"/g, "&quot;").replace(/\n/g, "<br />")
  774. }
  775. function Y(t) {
  776. t.attr("unselectable", "on").css("MozUserSelect", "none").bind("selectstart.ui", function() {
  777. return !1
  778. })
  779. }
  780. function B(t) {
  781. t.children().removeClass("fc-first fc-last").filter(":first-child").addClass("fc-first").end().filter(":last-child").addClass("fc-last")
  782. }
  783. function j(t, e) {
  784. var n = t.source || {}
  785. , r = t.color
  786. , a = n.color
  787. , o = e("eventColor")
  788. , i = t.backgroundColor || r || n.backgroundColor || a || e("eventBackgroundColor") || o
  789. , s = t.borderColor || r || n.borderColor || a || e("eventBorderColor") || o
  790. , l = t.textColor || n.textColor || e("eventTextColor")
  791. , c = [];
  792. return i && c.push("background-color:" + i),
  793. s && c.push("border-color:" + s),
  794. l && c.push("color:" + l),
  795. c.join(";")
  796. }
  797. function I(e, n, r) {
  798. if (t.isFunction(e) && (e = [e]),
  799. e) {
  800. var a, o;
  801. for (a = 0; e.length > a; a++)
  802. o = e[a].apply(n, r) || o;
  803. return o
  804. }
  805. }
  806. function X() {
  807. for (var t = 0; arguments.length > t; t++)
  808. if (arguments[t] !== e)
  809. return arguments[t]
  810. }
  811. function J(t, e) {
  812. function n(t, e) {
  813. e && (s(t, e),
  814. t.setDate(1));
  815. var n = a("firstDay")
  816. , f = d(t, !0);
  817. f.setDate(1);
  818. var v = s(d(f), 1)
  819. , g = d(f);
  820. l(g, -((g.getDay() - n + 7) % 7)),
  821. i(g);
  822. var p = d(v);
  823. l(p, (7 - p.getDay() + n) % 7),
  824. i(p, -1, !0);
  825. var m = c()
  826. , y = Math.round(h(p, g) / 7);
  827. "fixed" == a("weekMode") && (l(p, 7 * (6 - y)),
  828. y = 6),
  829. r.title = u(f, a("titleFormat")),
  830. r.start = f,
  831. r.end = v,
  832. r.visStart = g,
  833. r.visEnd = p,
  834. o(y, m, !0)
  835. }
  836. var r = this;
  837. r.render = n,
  838. Z.call(r, t, e, "month");
  839. var a = r.opt
  840. , o = r.renderBasic
  841. , i = r.skipHiddenDays
  842. , c = r.getCellsPerWeek
  843. , u = e.formatDate
  844. }
  845. function V(t, e) {
  846. function n(t, e) {
  847. e && l(t, 7 * e);
  848. var n = l(d(t), -((t.getDay() - a("firstDay") + 7) % 7))
  849. , u = l(d(n), 7)
  850. , f = d(n);
  851. i(f);
  852. var v = d(u);
  853. i(v, -1, !0);
  854. var h = s();
  855. r.start = n,
  856. r.end = u,
  857. r.visStart = f,
  858. r.visEnd = v,
  859. r.title = c(f, l(d(v), -1), a("titleFormat")),
  860. o(1, h, !1)
  861. }
  862. var r = this;
  863. r.render = n,
  864. Z.call(r, t, e, "basicWeek");
  865. var a = r.opt
  866. , o = r.renderBasic
  867. , i = r.skipHiddenDays
  868. , s = r.getCellsPerWeek
  869. , c = e.formatDates
  870. }
  871. function U(t, e) {
  872. function n(t, e) {
  873. e && l(t, e),
  874. i(t, 0 > e ? -1 : 1);
  875. var n = d(t, !0)
  876. , c = l(d(n), 1);
  877. r.title = s(t, a("titleFormat")),
  878. r.start = r.visStart = n,
  879. r.end = r.visEnd = c,
  880. o(1, 1, !1)
  881. }
  882. var r = this;
  883. r.render = n,
  884. Z.call(r, t, e, "basicDay");
  885. var a = r.opt
  886. , o = r.renderBasic
  887. , i = r.skipHiddenDays
  888. , s = e.formatDate
  889. }
  890. function Z(e, n, r) {
  891. function a(t, e, n) {
  892. ee = t,
  893. ne = e,
  894. re = n,
  895. o(),
  896. j || i(),
  897. s()
  898. }
  899. function o() {
  900. le = he("theme") ? "ui" : "fc",
  901. ce = he("columnFormat"),
  902. ue = he("weekNumbers"),
  903. de = he("weekNumberTitle"),
  904. ve = "iso" != he("weekNumberCalculation") ? "w" : "W"
  905. }
  906. function i() {
  907. Z = t("<div class='fc-event-container' style='position:absolute;z-index:8;top:0;left:0'/>").appendTo(e)
  908. }
  909. function s() {
  910. var n = c();
  911. L && L.remove(),
  912. L = t(n).appendTo(e),
  913. _ = L.find("thead"),
  914. P = _.find(".fc-day-header"),
  915. j = L.find("tbody"),
  916. I = j.find("tr"),
  917. X = j.find(".fc-day"),
  918. J = I.find("td:first-child"),
  919. V = I.eq(0).find(".fc-day > div"),
  920. U = I.eq(0).find(".fc-day-content > div"),
  921. B(_.add(_.find("tr"))),
  922. B(I),
  923. I.eq(0).addClass("fc-first"),
  924. I.filter(":last").addClass("fc-last"),
  925. X.each(function(e, n) {
  926. var r = Ee(Math.floor(e / ne), e % ne);
  927. ge("dayRender", O, r, t(n))
  928. }),
  929. y(X)
  930. }
  931. function c() {
  932. var t = "<table class='fc-border-separate' style='width:100%' cellspacing='0'>" + u() + v() + "</table>";
  933. return t
  934. }
  935. function u() {
  936. var t, e, n = le + "-widget-header", r = "";
  937. for (r += "<thead><tr>",
  938. ue && (r += "<th class='fc-week-number " + n + "'>" + q(de) + "</th>"),
  939. t = 0; ne > t; t++)
  940. e = Ee(0, t),
  941. r += "<th class='fc-day-header fc-" + ke[e.getDay()] + " " + n + "'>" + q(xe(e, ce)) + "</th>";
  942. return r += "</tr></thead>"
  943. }
  944. function v() {
  945. var t, e, n, r = le + "-widget-content", a = "";
  946. for (a += "<tbody>",
  947. t = 0; ee > t; t++) {
  948. for (a += "<tr class='fc-week'>",
  949. ue && (n = Ee(t, 0),
  950. a += "<td class='fc-week-number " + r + "'>" + "<div>" + q(xe(n, ve)) + "</div>" + "</td>"),
  951. e = 0; ne > e; e++)
  952. n = Ee(t, e),
  953. a += h(n);
  954. a += "</tr>"
  955. }
  956. return a += "</tbody>"
  957. }
  958. function h(t) {
  959. var e = le + "-widget-content"
  960. , n = O.start.getMonth()
  961. , r = f(O.options.defaultDate ? new Date(O.options.defaultDate) : new Date)
  962. , a = ""
  963. , o = ["fc-day", "fc-" + ke[t.getDay()], e];
  964. return t.getMonth() != n && o.push("fc-other-month"),
  965. +t == +r ? o.push("fc-today", le + "-state-highlight") : r > t ? o.push("fc-past") : o.push("fc-future"),
  966. a += "<td class='" + o.join(" ") + "'" + " data-date='" + xe(t, "yyyy-MM-dd") + "'" + ">" + "<div>",
  967. re && (a += "<div class='fc-day-number'>" + t.getDate() + "</div>"),
  968. a += "<div class='fc-day-content'><div style='position:relative'>&nbsp;</div></div></div></td>"
  969. }
  970. function g(e) {
  971. Q = e;
  972. var n, r, a, o = Q - _.height();
  973. "variable" == he("weekMode") ? n = r = Math.floor(o / (1 == ee ? 2 : 6)) : (n = Math.floor(o / ee),
  974. r = o - n * (ee - 1)),
  975. J.each(function(e, o) {
  976. ee > e && (a = t(o),
  977. a.find("> div").css("min-height", (e == ee - 1 ? r : n) - R(a)))
  978. })
  979. }
  980. function p(t) {
  981. $ = t,
  982. ie.clear(),
  983. se.clear(),
  984. te = 0,
  985. ue && (te = _.find("th.fc-week-number").outerWidth()),
  986. K = Math.floor(($ - te) / ne),
  987. S(P.slice(0, -1), K)
  988. }
  989. function y(t) {
  990. t.click(w).mousedown(Me)
  991. }
  992. function w(e) {
  993. if (!he("selectable")) {
  994. var n = m(t(this).data("date"));
  995. ge("dayClick", this, n, !0, e)
  996. }
  997. }
  998. function b(t, e, n) {
  999. n && ae.build();
  1000. for (var r = Te(t, e), a = 0; r.length > a; a++) {
  1001. var o = r[a];
  1002. y(D(o.row, o.leftCol, o.row, o.rightCol))
  1003. }
  1004. }
  1005. function D(t, n, r, a) {
  1006. var o = ae.rect(t, n, r, a, e);
  1007. return be(o, e)
  1008. }
  1009. function C(t) {
  1010. return d(t)
  1011. }
  1012. function M(t, e) {
  1013. b(t, l(d(e), 1), !0)
  1014. }
  1015. function E() {
  1016. Ce()
  1017. }
  1018. function T(t, e, n) {
  1019. var r = Se(t)
  1020. , a = X[r.row * ne + r.col];
  1021. ge("dayClick", a, t, e, n)
  1022. }
  1023. function x(t, e) {
  1024. oe.start(function(t) {
  1025. Ce(),
  1026. t && D(t.row, t.col, t.row, t.col)
  1027. }, e)
  1028. }
  1029. function k(t, e, n) {
  1030. var r = oe.stop();
  1031. if (Ce(),
  1032. r) {
  1033. var a = Ee(r);
  1034. ge("drop", t, a, !0, e, n)
  1035. }
  1036. }
  1037. function H(t) {
  1038. return d(t.start)
  1039. }
  1040. function F(t) {
  1041. return ie.left(t)
  1042. }
  1043. function N(t) {
  1044. return ie.right(t)
  1045. }
  1046. function z(t) {
  1047. return se.left(t)
  1048. }
  1049. function W(t) {
  1050. return se.right(t)
  1051. }
  1052. function A(t) {
  1053. return I.eq(t)
  1054. }
  1055. var O = this;
  1056. O.options = n.options,
  1057. O.renderBasic = a,
  1058. O.setHeight = g,
  1059. O.setWidth = p,
  1060. O.renderDayOverlay = b,
  1061. O.defaultSelectionEnd = C,
  1062. O.renderSelection = M,
  1063. O.clearSelection = E,
  1064. O.reportDayClick = T,
  1065. O.dragStart = x,
  1066. O.dragStop = k,
  1067. O.defaultEventEnd = H,
  1068. O.getHoverListener = function() {
  1069. return oe
  1070. }
  1071. ,
  1072. O.colLeft = F,
  1073. O.colRight = N,
  1074. O.colContentLeft = z,
  1075. O.colContentRight = W,
  1076. O.getIsCellAllDay = function() {
  1077. return !0
  1078. }
  1079. ,
  1080. O.allDayRow = A,
  1081. O.getRowCnt = function() {
  1082. return ee
  1083. }
  1084. ,
  1085. O.getColCnt = function() {
  1086. return ne
  1087. }
  1088. ,
  1089. O.getColWidth = function() {
  1090. return K
  1091. }
  1092. ,
  1093. O.getDaySegmentContainer = function() {
  1094. return Z
  1095. }
  1096. ,
  1097. fe.call(O, e, n, r),
  1098. me.call(O),
  1099. pe.call(O),
  1100. G.call(O);
  1101. 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;
  1102. Y(e.addClass("fc-grid")),
  1103. ae = new ye(function(e, n) {
  1104. var r, a, o;
  1105. P.each(function(e, i) {
  1106. r = t(i),
  1107. a = r.offset().left,
  1108. e && (o[1] = a),
  1109. o = [a],
  1110. n[e] = o
  1111. }),
  1112. o[1] = a + r.outerWidth(),
  1113. I.each(function(n, i) {
  1114. ee > n && (r = t(i),
  1115. a = r.offset().top,
  1116. n && (o[1] = a),
  1117. o = [a],
  1118. e[n] = o)
  1119. }),
  1120. o[1] = a + r.outerHeight()
  1121. }
  1122. ),
  1123. oe = new we(ae),
  1124. ie = new De(function(t) {
  1125. return V.eq(t)
  1126. }
  1127. ),
  1128. se = new De(function(t) {
  1129. return U.eq(t)
  1130. }
  1131. )
  1132. }
  1133. function G() {
  1134. function t(t, e) {
  1135. n.renderDayEvents(t, e)
  1136. }
  1137. function e() {
  1138. n.getDaySegmentContainer().empty()
  1139. }
  1140. var n = this;
  1141. n.renderEvents = t,
  1142. n.clearEvents = e,
  1143. de.call(n)
  1144. }
  1145. function $(t, e) {
  1146. function n(t, e) {
  1147. e && l(t, 7 * e);
  1148. var n = l(d(t), -((t.getDay() - a("firstDay") + 7) % 7))
  1149. , u = l(d(n), 7)
  1150. , f = d(n);
  1151. i(f);
  1152. var v = d(u);
  1153. i(v, -1, !0);
  1154. var h = s();
  1155. r.title = c(f, l(d(v), -1), a("titleFormat")),
  1156. r.start = n,
  1157. r.end = u,
  1158. r.visStart = f,
  1159. r.visEnd = v,
  1160. o(h)
  1161. }
  1162. var r = this;
  1163. r.render = n,
  1164. K.call(r, t, e, "agendaWeek");
  1165. var a = r.opt
  1166. , o = r.renderAgenda
  1167. , i = r.skipHiddenDays
  1168. , s = r.getCellsPerWeek
  1169. , c = e.formatDates
  1170. }
  1171. function Q(t, e) {
  1172. function n(t, e) {
  1173. e && l(t, e),
  1174. i(t, 0 > e ? -1 : 1);
  1175. var n = d(t, !0)
  1176. , c = l(d(n), 1);
  1177. r.title = s(t, a("titleFormat")),
  1178. r.start = r.visStart = n,
  1179. r.end = r.visEnd = c,
  1180. o(1)
  1181. }
  1182. var r = this;
  1183. r.render = n,
  1184. K.call(r, t, e, "agendaDay");
  1185. var a = r.opt
  1186. , o = r.renderAgenda
  1187. , i = r.skipHiddenDays
  1188. , s = e.formatDate
  1189. }
  1190. function K(n, r, a) {
  1191. function o(t) {
  1192. We = t,
  1193. i(),
  1194. K ? c() : s()
  1195. }
  1196. function i() {
  1197. qe = Ue("theme") ? "ui" : "fc",
  1198. Ye = Ue("isRTL"),
  1199. Be = y(Ue("minTime")),
  1200. je = y(Ue("maxTime")),
  1201. Ie = Ue("columnFormat"),
  1202. Xe = Ue("weekNumbers"),
  1203. Je = Ue("weekNumberTitle"),
  1204. Ve = "iso" != Ue("weekNumberCalculation") ? "w" : "W",
  1205. Re = Ue("snapMinutes") || Ue("slotMinutes")
  1206. }
  1207. function s() {
  1208. var e, r, a, o, i, s = qe + "-widget-header", l = qe + "-widget-content", f = 0 == Ue("slotMinutes") % 15;
  1209. for (c(),
  1210. ce = t("<div style='position:absolute;z-index:2;left:0;width:100%'/>").appendTo(n),
  1211. Ue("allDaySlot") ? (ue = t("<div class='fc-event-container' style='position:absolute;z-index:8;top:0;left:0'/>").appendTo(ce),
  1212. 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'>&nbsp;</th>" + "</tr>" + "</table>",
  1213. de = t(e).appendTo(ce),
  1214. ve = de.find("tr"),
  1215. C(ve.find("td")),
  1216. ce.append("<div class='fc-agenda-divider " + s + "'>" + "<div class='fc-agenda-divider-inner'/>" + "</div>")) : ue = t([]),
  1217. he = t("<div style='position:absolute;width:100%;overflow-x:hidden;overflow-y:auto'/>").appendTo(ce),
  1218. ge = t("<div style='position:relative;width:100%;overflow:hidden'/>").appendTo(he),
  1219. be = t("<div class='fc-event-container' style='position:absolute;z-index:8;top:0;left:0'/>").appendTo(ge),
  1220. e = "<table class='fc-agenda-slots' style='width:100%' cellspacing='0'><tbody>",
  1221. r = v(),
  1222. o = u(d(r), je),
  1223. u(r, Be),
  1224. Ae = 0,
  1225. a = 0; o > r; a++)
  1226. i = r.getMinutes(),
  1227. e += "<tr class='fc-slot" + a + " " + (i ? "fc-minor" : "") + "'>" + "<th class='fc-agenda-axis " + s + "'>" + (f && i ? "&nbsp;" : on(r, Ue("axisFormat"))) + "</th>" + "<td class='" + l + "'>" + "<div style='position:relative'>&nbsp;</div>" + "</td>" + "</tr>",
  1228. u(r, Ue("slotMinutes")),
  1229. Ae++;
  1230. e += "</tbody></table>",
  1231. Ce = t(e).appendTo(ge),
  1232. M(Ce.find("td"))
  1233. }
  1234. function c() {
  1235. var e = h();
  1236. K && K.remove(),
  1237. K = t(e).appendTo(n),
  1238. ee = K.find("thead"),
  1239. ne = ee.find("th").slice(1, -1),
  1240. re = K.find("tbody"),
  1241. ae = re.find("td").slice(0, -1),
  1242. oe = ae.find("> div"),
  1243. ie = ae.find(".fc-day-content > div"),
  1244. se = ae.eq(0),
  1245. le = oe.eq(0),
  1246. B(ee.add(ee.find("tr"))),
  1247. B(re.add(re.find("tr")))
  1248. }
  1249. function h() {
  1250. var t = "<table style='width:100%' class='fc-agenda-days fc-border-separate' cellspacing='0'>" + g() + p() + "</table>";
  1251. return t
  1252. }
  1253. function g() {
  1254. var t, e, n, r = qe + "-widget-header", a = "";
  1255. for (a += "<thead><tr>",
  1256. Xe ? (t = nn(0, 0),
  1257. e = on(t, Ve),
  1258. Ye ? e += Je : e = Je + e,
  1259. a += "<th class='fc-agenda-axis fc-week-number " + r + "'>" + q(e) + "</th>") : a += "<th class='fc-agenda-axis " + r + "'>&nbsp;</th>",
  1260. n = 0; We > n; n++)
  1261. t = nn(0, n),
  1262. a += "<th class='fc-" + ke[t.getDay()] + " fc-col" + n + " " + r + "'>" + q(on(t, Ie)) + "</th>";
  1263. return a += "<th class='fc-agenda-gutter " + r + "'>&nbsp;</th>" + "</tr>" + "</thead>"
  1264. }
  1265. function p() {
  1266. var t, e, n, r, a, o = qe + "-widget-header", i = qe + "-widget-content", s = f(new Date), l = "";
  1267. for (l += "<tbody><tr><th class='fc-agenda-axis " + o + "'>&nbsp;</th>",
  1268. n = "",
  1269. e = 0; We > e; e++)
  1270. t = nn(0, e),
  1271. a = ["fc-col" + e, "fc-" + ke[t.getDay()], i],
  1272. +t == +s ? a.push(qe + "-state-highlight", "fc-today") : s > t ? a.push("fc-past") : a.push("fc-future"),
  1273. r = "<td class='" + a.join(" ") + "'>" + "<div>" + "<div class='fc-day-content'>" + "<div style='position:relative'>&nbsp;</div>" + "</div>" + "</div>" + "</td>",
  1274. n += r;
  1275. return l += n,
  1276. l += "<td class='fc-agenda-gutter " + i + "'>&nbsp;</td>" + "</tr>" + "</tbody>"
  1277. }
  1278. function m(t) {
  1279. t === e && (t = Se),
  1280. Se = t,
  1281. sn = {};
  1282. var n = re.position().top
  1283. , r = he.position().top
  1284. , a = Math.min(t - n, Ce.height() + r + 1);
  1285. le.height(a - R(se)),
  1286. ce.css("top", n),
  1287. he.height(a - r - 1),
  1288. Fe = Ce.find("tr:first").height() + 1,
  1289. Ne = Ue("slotMinutes") / Re,
  1290. ze = Fe / Ne
  1291. }
  1292. function w(e) {
  1293. Ee = e,
  1294. _e.clear(),
  1295. Pe.clear();
  1296. var n = ee.find("th:first");
  1297. de && (n = n.add(de.find("th:first"))),
  1298. n = n.add(Ce.find("th:first")),
  1299. Te = 0,
  1300. S(n.width("").each(function(e, n) {
  1301. Te = Math.max(Te, t(n).outerWidth())
  1302. }), Te);
  1303. var r = K.find(".fc-agenda-gutter");
  1304. de && (r = r.add(de.find("th.fc-agenda-gutter")));
  1305. var a = he[0].clientWidth;
  1306. He = he.width() - a,
  1307. He ? (S(r, He),
  1308. r.show().prev().removeClass("fc-last")) : r.hide().prev().addClass("fc-last"),
  1309. xe = Math.floor((a - Te) / We),
  1310. S(ne.slice(0, -1), xe)
  1311. }
  1312. function b() {
  1313. function t() {
  1314. he.scrollTop(r)
  1315. }
  1316. var e = v()
  1317. , n = d(e);
  1318. n.setHours(Ue("firstHour"));
  1319. var r = _(e, n) + 1;
  1320. t(),
  1321. setTimeout(t, 0)
  1322. }
  1323. function D() {
  1324. b()
  1325. }
  1326. function C(t) {
  1327. t.click(E).mousedown(tn)
  1328. }
  1329. function M(t) {
  1330. t.click(E).mousedown(U)
  1331. }
  1332. function E(t) {
  1333. if (!Ue("selectable")) {
  1334. var e = Math.min(We - 1, Math.floor((t.pageX - K.offset().left - Te) / xe))
  1335. , n = nn(0, e)
  1336. , r = this.parentNode.className.match(/fc-slot(\d+)/);
  1337. if (r) {
  1338. var a = parseInt(r[1]) * Ue("slotMinutes")
  1339. , o = Math.floor(a / 60);
  1340. n.setHours(o),
  1341. n.setMinutes(a % 60 + Be),
  1342. Ze("dayClick", ae[e], n, !1, t)
  1343. } else
  1344. Ze("dayClick", ae[e], n, !0, t)
  1345. }
  1346. }
  1347. function x(t, e, n) {
  1348. n && Oe.build();
  1349. for (var r = an(t, e), a = 0; r.length > a; a++) {
  1350. var o = r[a];
  1351. C(k(o.row, o.leftCol, o.row, o.rightCol))
  1352. }
  1353. }
  1354. function k(t, e, n, r) {
  1355. var a = Oe.rect(t, e, n, r, ce);
  1356. return Ge(a, ce)
  1357. }
  1358. function H(t, e) {
  1359. for (var n = 0; We > n; n++) {
  1360. var r = nn(0, n)
  1361. , a = l(d(r), 1)
  1362. , o = new Date(Math.max(r, t))
  1363. , i = new Date(Math.min(a, e));
  1364. if (i > o) {
  1365. var s = Oe.rect(0, n, 0, n, ge)
  1366. , c = _(r, o)
  1367. , u = _(r, i);
  1368. s.top = c,
  1369. s.height = u - c,
  1370. M(Ge(s, ge))
  1371. }
  1372. }
  1373. }
  1374. function F(t) {
  1375. return _e.left(t)
  1376. }
  1377. function N(t) {
  1378. return Pe.left(t)
  1379. }
  1380. function z(t) {
  1381. return _e.right(t)
  1382. }
  1383. function W(t) {
  1384. return Pe.right(t)
  1385. }
  1386. function A(t) {
  1387. return Ue("allDaySlot") && !t.row
  1388. }
  1389. function L(t) {
  1390. var e = nn(0, t.col)
  1391. , n = t.row;
  1392. return Ue("allDaySlot") && n--,
  1393. n >= 0 && u(e, Be + n * Re),
  1394. e
  1395. }
  1396. function _(t, n) {
  1397. if (t = d(t, !0),
  1398. u(d(t), Be) > n)
  1399. return 0;
  1400. if (n >= u(d(t), je))
  1401. return Ce.height();
  1402. var r = Ue("slotMinutes")
  1403. , a = 60 * n.getHours() + n.getMinutes() - Be
  1404. , o = Math.floor(a / r)
  1405. , i = sn[o];
  1406. return i === e && (i = sn[o] = Ce.find("tr").eq(o).find("td div")[0].offsetTop),
  1407. Math.max(0, Math.round(i - 1 + Fe * (a % r / r)))
  1408. }
  1409. function P() {
  1410. return ve
  1411. }
  1412. function j(t) {
  1413. var e = d(t.start);
  1414. return t.allDay ? e : u(e, Ue("defaultEventMinutes"))
  1415. }
  1416. function I(t, e) {
  1417. return e ? d(t) : u(d(t), Ue("slotMinutes"))
  1418. }
  1419. function X(t, e, n) {
  1420. n ? Ue("allDaySlot") && x(t, l(d(e), 1), !0) : J(t, e)
  1421. }
  1422. function J(e, n) {
  1423. var r = Ue("selectHelper");
  1424. if (Oe.build(),
  1425. r) {
  1426. var a = rn(e).col;
  1427. if (a >= 0 && We > a) {
  1428. var o = Oe.rect(0, a, 0, a, ge)
  1429. , i = _(e, e)
  1430. , s = _(e, n);
  1431. if (s > i) {
  1432. if (o.top = i,
  1433. o.height = s - i,
  1434. o.left += 2,
  1435. o.width -= 5,
  1436. t.isFunction(r)) {
  1437. var l = r(e, n);
  1438. l && (o.position = "absolute",
  1439. Me = t(l).css(o).appendTo(ge))
  1440. } else
  1441. o.isStart = !0,
  1442. o.isEnd = !0,
  1443. Me = t(en({
  1444. title: "",
  1445. start: e,
  1446. end: n,
  1447. className: ["fc-select-helper"],
  1448. editable: !1
  1449. }, o)),
  1450. Me.css("opacity", Ue("dragOpacity"));
  1451. Me && (M(Me),
  1452. ge.append(Me),
  1453. S(Me, o.width, !0),
  1454. T(Me, o.height, !0))
  1455. }
  1456. }
  1457. } else
  1458. H(e, n)
  1459. }
  1460. function V() {
  1461. $e(),
  1462. Me && (Me.remove(),
  1463. Me = null)
  1464. }
  1465. function U(e) {
  1466. if (1 == e.which && Ue("selectable")) {
  1467. Ke(e);
  1468. var n;
  1469. Le.start(function(t, e) {
  1470. if (V(),
  1471. t && t.col == e.col && !A(t)) {
  1472. var r = L(e)
  1473. , a = L(t);
  1474. n = [r, u(d(r), Re), a, u(d(a), Re)].sort(O),
  1475. J(n[0], n[3])
  1476. } else
  1477. n = null
  1478. }, e),
  1479. t(document).one("mouseup", function(t) {
  1480. Le.stop(),
  1481. n && (+n[0] == +n[1] && Z(n[0], !1, t),
  1482. Qe(n[0], n[3], !1, t))
  1483. })
  1484. }
  1485. }
  1486. function Z(t, e, n) {
  1487. Ze("dayClick", ae[rn(t).col], t, e, n)
  1488. }
  1489. function G(t, e) {
  1490. Le.start(function(t) {
  1491. if ($e(),
  1492. t)
  1493. if (A(t))
  1494. k(t.row, t.col, t.row, t.col);
  1495. else {
  1496. var e = L(t)
  1497. , n = u(d(e), Ue("defaultEventMinutes"));
  1498. H(e, n)
  1499. }
  1500. }, e)
  1501. }
  1502. function $(t, e, n) {
  1503. var r = Le.stop();
  1504. $e(),
  1505. r && Ze("drop", t, L(r), A(r), e, n)
  1506. }
  1507. var Q = this;
  1508. Q.renderAgenda = o,
  1509. Q.setWidth = w,
  1510. Q.setHeight = m,
  1511. Q.afterRender = D,
  1512. Q.defaultEventEnd = j,
  1513. Q.timePosition = _,
  1514. Q.getIsCellAllDay = A,
  1515. Q.allDayRow = P,
  1516. Q.getCoordinateGrid = function() {
  1517. return Oe
  1518. }
  1519. ,
  1520. Q.getHoverListener = function() {
  1521. return Le
  1522. }
  1523. ,
  1524. Q.colLeft = F,
  1525. Q.colRight = z,
  1526. Q.colContentLeft = N,
  1527. Q.colContentRight = W,
  1528. Q.getDaySegmentContainer = function() {
  1529. return ue
  1530. }
  1531. ,
  1532. Q.getSlotSegmentContainer = function() {
  1533. return be
  1534. }
  1535. ,
  1536. Q.getMinMinute = function() {
  1537. return Be
  1538. }
  1539. ,
  1540. Q.getMaxMinute = function() {
  1541. return je
  1542. }
  1543. ,
  1544. Q.getSlotContainer = function() {
  1545. return ge
  1546. }
  1547. ,
  1548. Q.getRowCnt = function() {
  1549. return 1
  1550. }
  1551. ,
  1552. Q.getColCnt = function() {
  1553. return We
  1554. }
  1555. ,
  1556. Q.getColWidth = function() {
  1557. return xe
  1558. }
  1559. ,
  1560. Q.getSnapHeight = function() {
  1561. return ze
  1562. }
  1563. ,
  1564. Q.getSnapMinutes = function() {
  1565. return Re
  1566. }
  1567. ,
  1568. Q.defaultSelectionEnd = I,
  1569. Q.renderDayOverlay = x,
  1570. Q.renderSelection = X,
  1571. Q.clearSelection = V,
  1572. Q.reportDayClick = Z,
  1573. Q.dragStart = G,
  1574. Q.dragStop = $,
  1575. fe.call(Q, n, r, a),
  1576. me.call(Q),
  1577. pe.call(Q),
  1578. te.call(Q);
  1579. 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 = {};
  1580. Y(n.addClass("fc-agenda")),
  1581. Oe = new ye(function(e, n) {
  1582. function r(t) {
  1583. return Math.max(l, Math.min(c, t))
  1584. }
  1585. var a, o, i;
  1586. ne.each(function(e, r) {
  1587. a = t(r),
  1588. o = a.offset().left,
  1589. e && (i[1] = o),
  1590. i = [o],
  1591. n[e] = i
  1592. }),
  1593. i[1] = o + a.outerWidth(),
  1594. Ue("allDaySlot") && (a = ve,
  1595. o = a.offset().top,
  1596. e[0] = [o, o + a.outerHeight()]);
  1597. for (var s = ge.offset().top, l = he.offset().top, c = l + he.outerHeight(), u = 0; Ae * Ne > u; u++)
  1598. e.push([r(s + ze * u), r(s + ze * (u + 1))])
  1599. }
  1600. ),
  1601. Le = new we(Oe),
  1602. _e = new De(function(t) {
  1603. return oe.eq(t)
  1604. }
  1605. ),
  1606. Pe = new De(function(t) {
  1607. return ie.eq(t)
  1608. }
  1609. )
  1610. }
  1611. function te() {
  1612. function n(t, e) {
  1613. var n, r = t.length, o = [], i = [];
  1614. for (n = 0; r > n; n++)
  1615. t[n].allDay ? o.push(t[n]) : i.push(t[n]);
  1616. y("allDaySlot") && (te(o, e),
  1617. k()),
  1618. s(a(i), e)
  1619. }
  1620. function r() {
  1621. H().empty(),
  1622. F().empty()
  1623. }
  1624. function a(e) {
  1625. var n, r, a, s, l, c = Y(), f = W(), v = z(), h = t.map(e, i), g = [];
  1626. for (r = 0; c > r; r++)
  1627. for (n = P(0, r),
  1628. u(n, f),
  1629. l = o(e, h, n, u(d(n), v - f)),
  1630. l = ee(l),
  1631. a = 0; l.length > a; a++)
  1632. s = l[a],
  1633. s.col = r,
  1634. g.push(s);
  1635. return g
  1636. }
  1637. function o(t, e, n, r) {
  1638. var a, o, i, s, l, c, u, f, v = [], h = t.length;
  1639. for (a = 0; h > a; a++)
  1640. o = t[a],
  1641. i = o.start,
  1642. s = e[a],
  1643. s > n && r > i && (n > i ? (l = d(n),
  1644. u = !1) : (l = i,
  1645. u = !0),
  1646. s > r ? (c = d(r),
  1647. f = !1) : (c = s,
  1648. f = !0),
  1649. v.push({
  1650. event: o,
  1651. start: l,
  1652. end: c,
  1653. isStart: u,
  1654. isEnd: f
  1655. }));
  1656. return v.sort(ue)
  1657. }
  1658. function i(t) {
  1659. return t.end ? d(t.end) : u(d(t.start), y("defaultEventMinutes"))
  1660. }
  1661. function s(n, r) {
  1662. 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");
  1663. for (a = 0; S > a; a++)
  1664. o = n[a],
  1665. i = o.event,
  1666. s = A(o.start, o.start),
  1667. l = A(o.start, o.end),
  1668. u = L(o.col),
  1669. d = _(o.col),
  1670. v = d - u,
  1671. d -= .025 * v,
  1672. v = d - u,
  1673. h = v * (o.forwardCoord - o.backwardCoord),
  1674. y("slotEventOverlap") && (h = Math.max(2 * (h - 10), h)),
  1675. H ? (p = d - o.backwardCoord * v,
  1676. g = p - h) : (g = u + o.backwardCoord * v,
  1677. p = g + h),
  1678. g = Math.max(g, u),
  1679. p = Math.min(p, d),
  1680. h = p - g,
  1681. o.top = s,
  1682. o.left = g,
  1683. o.outerWidth = h,
  1684. o.outerHeight = l - s,
  1685. T += c(i, o);
  1686. for (k[0].innerHTML = T,
  1687. m = k.children(),
  1688. a = 0; S > a; a++)
  1689. o = n[a],
  1690. i = o.event,
  1691. b = t(m[a]),
  1692. D = w("eventRender", i, i, b),
  1693. D === !1 ? b.remove() : (D && D !== !0 && (b.remove(),
  1694. b = t(D).css({
  1695. position: "absolute",
  1696. top: o.top,
  1697. left: o.left
  1698. }).appendTo(k)),
  1699. o.element = b,
  1700. i._id === r ? f(i, b, o) : b[0]._fci = a,
  1701. V(i, b));
  1702. for (E(k, n, f),
  1703. a = 0; S > a; a++)
  1704. o = n[a],
  1705. (b = o.element) && (o.vsides = R(b, !0),
  1706. o.hsides = x(b, !0),
  1707. C = b.find(".fc-event-title"),
  1708. C.length && (o.contentTop = C[0].offsetTop));
  1709. for (a = 0; S > a; a++)
  1710. o = n[a],
  1711. (b = o.element) && (b[0].style.width = Math.max(0, o.outerWidth - o.hsides) + "px",
  1712. M = Math.max(0, o.outerHeight - o.vsides),
  1713. b[0].style.height = M + "px",
  1714. i = o.event,
  1715. o.contentTop !== e && 10 > M - o.contentTop && (b.find("div.fc-event-time").text(re(i.start, y("timeFormat")) + " - " + i.title),
  1716. b.find("div.fc-event-title").remove()),
  1717. w("eventAfterRender", i, i, b))
  1718. }
  1719. function c(t, e) {
  1720. var n = "<"
  1721. , r = t.url
  1722. , a = j(t, y)
  1723. , o = ["fc-event", "fc-event-vert"];
  1724. return b(t) && o.push("fc-event-draggable"),
  1725. e.isStart && o.push("fc-event-start"),
  1726. e.isEnd && o.push("fc-event-end"),
  1727. o = o.concat(t.className),
  1728. t.source && (o = o.concat(t.source.className || [])),
  1729. n += r ? "a href='" + q(t.url) + "'" : "div",
  1730. 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>",
  1731. e.isEnd && D(t) && (n += "<div class='ui-resizable-handle ui-resizable-s'>=</div>"),
  1732. n += "</" + (r ? "a" : "div") + ">"
  1733. }
  1734. function f(t, e, n) {
  1735. var r = e.find("div.fc-event-time");
  1736. b(t) && g(t, e, r),
  1737. n.isEnd && D(t) && p(t, e, r),
  1738. S(t, e)
  1739. }
  1740. function v(t, e, n) {
  1741. function r() {
  1742. c || (e.width(a).height("").draggable("option", "grid", null),
  1743. c = !0)
  1744. }
  1745. var a, o, i, s = n.isStart, c = !0, u = N(), f = B(), v = I(), g = X(), p = W();
  1746. e.draggable({
  1747. opacity: y("dragOpacity", "month"),
  1748. revertDuration: y("dragRevertDuration"),
  1749. start: function(n, p) {
  1750. w("eventDragStart", e, t, n, p),
  1751. Z(t, e),
  1752. a = e.width(),
  1753. u.start(function(n, a) {
  1754. if (K(),
  1755. n) {
  1756. o = !1;
  1757. var u = P(0, a.col)
  1758. , p = P(0, n.col);
  1759. i = h(p, u),
  1760. n.row ? s ? c && (e.width(f - 10),
  1761. T(e, v * Math.round((t.end ? (t.end - t.start) / Re : y("defaultEventMinutes")) / g)),
  1762. e.draggable("option", "grid", [f, 1]),
  1763. c = !1) : o = !0 : (Q(l(d(t.start), i), l(C(t), i)),
  1764. r()),
  1765. o = o || c && !i
  1766. } else
  1767. r(),
  1768. o = !0;
  1769. e.draggable("option", "revert", o)
  1770. }, n, "drag")
  1771. },
  1772. stop: function(n, a) {
  1773. if (u.stop(),
  1774. K(),
  1775. w("eventDragStop", e, t, n, a),
  1776. o)
  1777. r(),
  1778. e.css("filter", ""),
  1779. U(t, e);
  1780. else {
  1781. var s = 0;
  1782. c || (s = Math.round((e.offset().top - J().offset().top) / v) * g + p - (60 * t.start.getHours() + t.start.getMinutes())),
  1783. G(this, t, i, s, c, n, a)
  1784. }
  1785. }
  1786. })
  1787. }
  1788. function g(t, e, n) {
  1789. function r() {
  1790. K(),
  1791. s && (f ? (n.hide(),
  1792. e.draggable("option", "grid", null),
  1793. Q(l(d(t.start), b), l(C(t), b))) : (a(D),
  1794. n.css("display", ""),
  1795. e.draggable("option", "grid", [T, x])))
  1796. }
  1797. function a(e) {
  1798. var r, a = u(d(t.start), e);
  1799. t.end && (r = u(d(t.end), e)),
  1800. n.text(ae(a, r, y("timeFormat")))
  1801. }
  1802. var o, i, s, c, f, v, g, p, b, D, M, E = m.getCoordinateGrid(), S = Y(), T = B(), x = I(), k = X();
  1803. e.draggable({
  1804. scroll: !1,
  1805. grid: [T, x],
  1806. axis: 1 == S ? "y" : !1,
  1807. opacity: y("dragOpacity"),
  1808. revertDuration: y("dragRevertDuration"),
  1809. start: function(n, r) {
  1810. w("eventDragStart", e, t, n, r),
  1811. Z(t, e),
  1812. E.build(),
  1813. o = e.position(),
  1814. i = E.cell(n.pageX, n.pageY),
  1815. s = c = !0,
  1816. f = v = O(i),
  1817. g = p = 0,
  1818. b = 0,
  1819. D = M = 0
  1820. },
  1821. drag: function(t, n) {
  1822. var a = E.cell(t.pageX, t.pageY);
  1823. if (s = !!a) {
  1824. if (f = O(a),
  1825. g = Math.round((n.position.left - o.left) / T),
  1826. g != p) {
  1827. var l = P(0, i.col)
  1828. , u = i.col + g;
  1829. u = Math.max(0, u),
  1830. u = Math.min(S - 1, u);
  1831. var d = P(0, u);
  1832. b = h(d, l)
  1833. }
  1834. f || (D = Math.round((n.position.top - o.top) / x) * k)
  1835. }
  1836. (s != c || f != v || g != p || D != M) && (r(),
  1837. c = s,
  1838. v = f,
  1839. p = g,
  1840. M = D),
  1841. e.draggable("option", "revert", !s)
  1842. },
  1843. stop: function(n, a) {
  1844. K(),
  1845. w("eventDragStop", e, t, n, a),
  1846. s && (f || b || D) ? G(this, t, b, f ? 0 : D, f, n, a) : (s = !0,
  1847. f = !1,
  1848. g = 0,
  1849. b = 0,
  1850. D = 0,
  1851. r(),
  1852. e.css("filter", ""),
  1853. e.css(o),
  1854. U(t, e))
  1855. }
  1856. })
  1857. }
  1858. function p(t, e, n) {
  1859. var r, a, o = I(), i = X();
  1860. e.resizable({
  1861. handles: {
  1862. s: ".ui-resizable-handle"
  1863. },
  1864. grid: o,
  1865. start: function(n, o) {
  1866. r = a = 0,
  1867. Z(t, e),
  1868. w("eventResizeStart", this, t, n, o)
  1869. },
  1870. resize: function(s, l) {
  1871. r = Math.round((Math.max(o, e.height()) - l.originalSize.height) / o),
  1872. r != a && (n.text(ae(t.start, r || t.end ? u(M(t), i * r) : null, y("timeFormat"))),
  1873. a = r)
  1874. },
  1875. stop: function(n, a) {
  1876. w("eventResizeStop", this, t, n, a),
  1877. r ? $(this, t, 0, i * r, n, a) : U(t, e)
  1878. }
  1879. })
  1880. }
  1881. var m = this;
  1882. m.renderEvents = n,
  1883. m.clearEvents = r,
  1884. m.slotSegHtml = c,
  1885. de.call(m);
  1886. var y = m.opt
  1887. , w = m.trigger
  1888. , b = m.isEventDraggable
  1889. , D = m.isEventResizable
  1890. , M = m.eventEnd
  1891. , S = m.eventElementHandlers
  1892. , k = m.setHeight
  1893. , H = m.getDaySegmentContainer
  1894. , F = m.getSlotSegmentContainer
  1895. , N = m.getHoverListener
  1896. , z = m.getMaxMinute
  1897. , W = m.getMinMinute
  1898. , A = m.timePosition
  1899. , O = m.getIsCellAllDay
  1900. , L = m.colContentLeft
  1901. , _ = m.colContentRight
  1902. , P = m.cellToDate
  1903. , Y = m.getColCnt
  1904. , B = m.getColWidth
  1905. , I = m.getSnapHeight
  1906. , X = m.getSnapMinutes
  1907. , J = m.getSlotContainer
  1908. , V = m.reportEventElement
  1909. , U = m.showEvents
  1910. , Z = m.hideEvents
  1911. , G = m.eventDrop
  1912. , $ = m.eventResize
  1913. , Q = m.renderDayOverlay
  1914. , K = m.clearOverlays
  1915. , te = m.renderDayEvents
  1916. , ne = m.calendar
  1917. , re = ne.formatDate
  1918. , ae = ne.formatDates;
  1919. m.draggableDayEvent = v
  1920. }
  1921. function ee(t) {
  1922. var e, n = ne(t), r = n[0];
  1923. if (re(n),
  1924. r) {
  1925. for (e = 0; r.length > e; e++)
  1926. ae(r[e]);
  1927. for (e = 0; r.length > e; e++)
  1928. oe(r[e], 0, 0)
  1929. }
  1930. return ie(n)
  1931. }
  1932. function ne(t) {
  1933. var e, n, r, a = [];
  1934. for (e = 0; t.length > e; e++) {
  1935. for (n = t[e],
  1936. r = 0; a.length > r && se(n, a[r]).length; r++)
  1937. ;
  1938. (a[r] || (a[r] = [])).push(n)
  1939. }
  1940. return a
  1941. }
  1942. function re(t) {
  1943. var e, n, r, a, o;
  1944. for (e = 0; t.length > e; e++)
  1945. for (n = t[e],
  1946. r = 0; n.length > r; r++)
  1947. for (a = n[r],
  1948. a.forwardSegs = [],
  1949. o = e + 1; t.length > o; o++)
  1950. se(a, t[o], a.forwardSegs)
  1951. }
  1952. function ae(t) {
  1953. var n, r, a = t.forwardSegs, o = 0;
  1954. if (t.forwardPressure === e) {
  1955. for (n = 0; a.length > n; n++)
  1956. r = a[n],
  1957. ae(r),
  1958. o = Math.max(o, 1 + r.forwardPressure);
  1959. t.forwardPressure = o
  1960. }
  1961. }
  1962. function oe(t, n, r) {
  1963. var a, o = t.forwardSegs;
  1964. if (t.forwardCoord === e)
  1965. for (o.length ? (o.sort(ce),
  1966. oe(o[0], n + 1, r),
  1967. t.forwardCoord = o[0].backwardCoord) : t.forwardCoord = 1,
  1968. t.backwardCoord = t.forwardCoord - (t.forwardCoord - r) / (n + 1),
  1969. a = 0; o.length > a; a++)
  1970. oe(o[a], 0, t.forwardCoord)
  1971. }
  1972. function ie(t) {
  1973. var e, n, r, a = [];
  1974. for (e = 0; t.length > e; e++)
  1975. for (n = t[e],
  1976. r = 0; n.length > r; r++)
  1977. a.push(n[r]);
  1978. return a
  1979. }
  1980. function se(t, e, n) {
  1981. n = n || [];
  1982. for (var r = 0; e.length > r; r++)
  1983. le(t, e[r]) && n.push(e[r]);
  1984. return n
  1985. }
  1986. function le(t, e) {
  1987. return t.end > e.start && t.start < e.end
  1988. }
  1989. function ce(t, e) {
  1990. return e.forwardPressure - t.forwardPressure || (t.backwardCoord || 0) - (e.backwardCoord || 0) || ue(t, e)
  1991. }
  1992. function ue(t, e) {
  1993. return t.start - e.start || e.end - e.start - (t.end - t.start) || (t.event.title || "").localeCompare(e.event.title)
  1994. }
  1995. function fe(n, r, a) {
  1996. function o(e, n) {
  1997. var r = V[e];
  1998. return t.isPlainObject(r) ? P(r, n || a) : r
  1999. }
  2000. function i(t, e) {
  2001. return r.trigger.apply(r, [t, e || _].concat(Array.prototype.slice.call(arguments, 2), [_]))
  2002. }
  2003. function s(t) {
  2004. var e = t.source || {};
  2005. return X(t.startEditable, e.startEditable, o("eventStartEditable"), t.editable, e.editable, o("editable")) && !o("disableDragging")
  2006. }
  2007. function c(t) {
  2008. var e = t.source || {};
  2009. return X(t.durationEditable, e.durationEditable, o("eventDurationEditable"), t.editable, e.editable, o("editable")) && !o("disableResizing")
  2010. }
  2011. function f(t) {
  2012. j = {};
  2013. var e, n, r = t.length;
  2014. for (e = 0; r > e; e++)
  2015. n = t[e],
  2016. j[n._id] ? j[n._id].push(n) : j[n._id] = [n]
  2017. }
  2018. function v() {
  2019. j = {},
  2020. I = {},
  2021. J = []
  2022. }
  2023. function g(t) {
  2024. return t.end ? d(t.end) : q(t)
  2025. }
  2026. function p(t, e) {
  2027. J.push({
  2028. event: t,
  2029. element: e
  2030. }),
  2031. I[t._id] ? I[t._id].push(e) : I[t._id] = [e]
  2032. }
  2033. function m() {
  2034. t.each(J, function(t, e) {
  2035. _.trigger("eventDestroy", e.event, e.event, e.element)
  2036. })
  2037. }
  2038. function y(t, n) {
  2039. n.click(function(r) {
  2040. return n.hasClass("ui-draggable-dragging") || n.hasClass("ui-resizable-resizing") ? e : i("eventClick", this, t, r)
  2041. }).hover(function(e) {
  2042. i("eventMouseover", this, t, e)
  2043. }, function(e) {
  2044. i("eventMouseout", this, t, e)
  2045. })
  2046. }
  2047. function w(t, e) {
  2048. D(t, e, "show")
  2049. }
  2050. function b(t, e) {
  2051. D(t, e, "hide")
  2052. }
  2053. function D(t, e, n) {
  2054. var r, a = I[t._id], o = a.length;
  2055. for (r = 0; o > r; r++)
  2056. e && a[r][0] == e[0] || a[r][n]()
  2057. }
  2058. function C(t, e, n, r, a, o, s) {
  2059. var l = e.allDay
  2060. , c = e._id;
  2061. E(j[c], n, r, a),
  2062. i("eventDrop", t, e, n, r, a, function() {
  2063. E(j[c], -n, -r, l),
  2064. B(c)
  2065. }, o, s),
  2066. B(c)
  2067. }
  2068. function M(t, e, n, r, a, o) {
  2069. var s = e._id;
  2070. S(j[s], n, r),
  2071. i("eventResize", t, e, n, r, function() {
  2072. S(j[s], -n, -r),
  2073. B(s)
  2074. }, a, o),
  2075. B(s)
  2076. }
  2077. function E(t, n, r, a) {
  2078. r = r || 0;
  2079. for (var o, i = t.length, s = 0; i > s; s++)
  2080. o = t[s],
  2081. a !== e && (o.allDay = a),
  2082. u(l(o.start, n, !0), r),
  2083. o.end && (o.end = u(l(o.end, n, !0), r)),
  2084. Y(o, V)
  2085. }
  2086. function S(t, e, n) {
  2087. n = n || 0;
  2088. for (var r, a = t.length, o = 0; a > o; o++)
  2089. r = t[o],
  2090. r.end = u(l(g(r), e, !0), n),
  2091. Y(r, V)
  2092. }
  2093. function T(t) {
  2094. return "object" == typeof t && (t = t.getDay()),
  2095. G[t]
  2096. }
  2097. function x() {
  2098. return U
  2099. }
  2100. function k(t, e, n) {
  2101. for (e = e || 1; G[(t.getDay() + (n ? e : 0) + 7) % 7]; )
  2102. l(t, e)
  2103. }
  2104. function H() {
  2105. var t = F.apply(null, arguments)
  2106. , e = R(t)
  2107. , n = N(e);
  2108. return n
  2109. }
  2110. function F(t, e) {
  2111. var n = _.getColCnt()
  2112. , r = K ? -1 : 1
  2113. , a = K ? n - 1 : 0;
  2114. "object" == typeof t && (e = t.col,
  2115. t = t.row);
  2116. var o = t * n + (e * r + a);
  2117. return o
  2118. }
  2119. function R(t) {
  2120. var e = _.visStart.getDay();
  2121. return t += $[e],
  2122. 7 * Math.floor(t / U) + Q[(t % U + U) % U] - e
  2123. }
  2124. function N(t) {
  2125. var e = d(_.visStart);
  2126. return l(e, t),
  2127. e
  2128. }
  2129. function z(t) {
  2130. var e = W(t)
  2131. , n = A(e)
  2132. , r = O(n);
  2133. return r
  2134. }
  2135. function W(t) {
  2136. return h(t, _.visStart)
  2137. }
  2138. function A(t) {
  2139. var e = _.visStart.getDay();
  2140. return t += e,
  2141. Math.floor(t / 7) * U + $[(t % 7 + 7) % 7] - $[e]
  2142. }
  2143. function O(t) {
  2144. var e = _.getColCnt()
  2145. , n = K ? -1 : 1
  2146. , r = K ? e - 1 : 0
  2147. , a = Math.floor(t / e)
  2148. , o = (t % e + e) % e * n + r;
  2149. return {
  2150. row: a,
  2151. col: o
  2152. }
  2153. }
  2154. function L(t, e) {
  2155. 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++) {
  2156. var u = c * r
  2157. , f = u + r - 1
  2158. , d = Math.max(s, u)
  2159. , v = Math.min(l, f);
  2160. if (v >= d) {
  2161. var h = O(d)
  2162. , g = O(v)
  2163. , p = [h.col, g.col].sort()
  2164. , m = R(d) == o
  2165. , y = R(v) + 1 == i;
  2166. a.push({
  2167. row: c,
  2168. leftCol: p[0],
  2169. rightCol: p[1],
  2170. isStart: m,
  2171. isEnd: y
  2172. })
  2173. }
  2174. }
  2175. return a
  2176. }
  2177. var _ = this;
  2178. _.element = n,
  2179. _.calendar = r,
  2180. _.name = a,
  2181. _.opt = o,
  2182. _.trigger = i,
  2183. _.isEventDraggable = s,
  2184. _.isEventResizable = c,
  2185. _.setEventData = f,
  2186. _.clearEventData = v,
  2187. _.eventEnd = g,
  2188. _.reportEventElement = p,
  2189. _.triggerEventDestroy = m,
  2190. _.eventElementHandlers = y,
  2191. _.showEvents = w,
  2192. _.hideEvents = b,
  2193. _.eventDrop = C,
  2194. _.eventResize = M;
  2195. var q = _.defaultEventEnd
  2196. , Y = r.normalizeEvent
  2197. , B = r.reportEventChange
  2198. , j = {}
  2199. , I = {}
  2200. , J = []
  2201. , V = r.options;
  2202. _.isHiddenDay = T,
  2203. _.skipHiddenDays = k,
  2204. _.getCellsPerWeek = x,
  2205. _.dateToCell = z,
  2206. _.dateToDayOffset = W,
  2207. _.dayOffsetToCellOffset = A,
  2208. _.cellOffsetToCell = O,
  2209. _.cellToDate = H,
  2210. _.cellToCellOffset = F,
  2211. _.cellOffsetToDayOffset = R,
  2212. _.dayOffsetToDate = N,
  2213. _.rangeToSegments = L;
  2214. var U, Z = o("hiddenDays") || [], G = [], $ = [], Q = [], K = o("isRTL");
  2215. (function() {
  2216. o("weekends") === !1 && Z.push(0, 6);
  2217. for (var e = 0, n = 0; 7 > e; e++)
  2218. $[e] = n,
  2219. G[e] = -1 != t.inArray(e, Z),
  2220. G[e] || (Q[n] = e,
  2221. n++);
  2222. if (U = n,
  2223. !U)
  2224. throw "invalid hiddenDays"
  2225. }
  2226. )()
  2227. }
  2228. function de() {
  2229. function e(t, e) {
  2230. var n = r(t, !1, !0);
  2231. he(n, function(t, e) {
  2232. N(t.event, e)
  2233. }),
  2234. w(n, e),
  2235. he(n, function(t, e) {
  2236. k("eventAfterRender", t.event, t.event, e)
  2237. })
  2238. }
  2239. function n(t, e, n) {
  2240. var a = r([t], !0, !1)
  2241. , o = [];
  2242. return he(a, function(t, r) {
  2243. t.row === e && r.css("top", n),
  2244. o.push(r[0])
  2245. }),
  2246. o
  2247. }
  2248. function r(e, n, r) {
  2249. var o, l, c = Z(), d = n ? t("<div/>") : c, v = a(e);
  2250. return i(v),
  2251. o = s(v),
  2252. d[0].innerHTML = o,
  2253. l = d.children(),
  2254. n && c.append(l),
  2255. u(v, l),
  2256. he(v, function(t, e) {
  2257. t.hsides = x(e, !0)
  2258. }),
  2259. he(v, function(t, e) {
  2260. e.width(Math.max(0, t.outerWidth - t.hsides))
  2261. }),
  2262. he(v, function(t, e) {
  2263. t.outerHeight = e.outerHeight(!0)
  2264. }),
  2265. f(v, r),
  2266. v
  2267. }
  2268. function a(t) {
  2269. for (var e = [], n = 0; t.length > n; n++) {
  2270. var r = o(t[n]);
  2271. e.push.apply(e, r)
  2272. }
  2273. return e
  2274. }
  2275. function o(t) {
  2276. for (var e = t.start, n = C(t), r = ee(e, n), a = 0; r.length > a; a++)
  2277. r[a].event = t;
  2278. return r
  2279. }
  2280. function i(t) {
  2281. for (var e = T("isRTL"), n = 0; t.length > n; n++) {
  2282. var r = t[n]
  2283. , a = (e ? r.isEnd : r.isStart) ? V : X
  2284. , o = (e ? r.isStart : r.isEnd) ? U : J
  2285. , i = a(r.leftCol)
  2286. , s = o(r.rightCol);
  2287. r.left = i,
  2288. r.outerWidth = s - i
  2289. }
  2290. }
  2291. function s(t) {
  2292. for (var e = "", n = 0; t.length > n; n++)
  2293. e += c(t[n]);
  2294. return e
  2295. }
  2296. function c(t) {
  2297. var e = ""
  2298. , n = T("isRTL")
  2299. , r = t.event
  2300. , a = r.url
  2301. , o = ["fc-event", "fc-event-hori"];
  2302. H(r) && o.push("fc-event-draggable"),
  2303. t.isStart && o.push("fc-event-start"),
  2304. t.isEnd && o.push("fc-event-end"),
  2305. o = o.concat(r.className),
  2306. r.source && (o = o.concat(r.source.className || []));
  2307. var i = j(r, T);
  2308. return e += a ? "<a href='" + q(a) + "'" : "<div",
  2309. e += " class='" + o.join(" ") + "'" + " style=" + "'" + "position:absolute;" + "left:" + t.left + "px;" + i + "'" + ">" + "<div class='fc-event-inner'>",
  2310. !r.allDay && t.isStart && (e += "<span class='fc-event-time'>" + q(G(r.start, r.end, T("timeFormat"))) + "</span>"),
  2311. e += "<span class='fc-event-title'>" + q(r.title || "") + "</span>" + "</div>",
  2312. t.isEnd && F(r) && (e += "<div class='ui-resizable-handle ui-resizable-" + (n ? "w" : "e") + "'>" + "&nbsp;&nbsp;&nbsp;" + "</div>"),
  2313. e += "</" + (a ? "a" : "div") + ">"
  2314. }
  2315. function u(e, n) {
  2316. for (var r = 0; e.length > r; r++) {
  2317. var a = e[r]
  2318. , o = a.event
  2319. , i = n.eq(r)
  2320. , s = k("eventRender", o, o, i);
  2321. s === !1 ? i.remove() : (s && s !== !0 && (s = t(s).css({
  2322. position: "absolute",
  2323. left: a.left
  2324. }),
  2325. i.replaceWith(s),
  2326. i = s),
  2327. a.element = i)
  2328. }
  2329. }
  2330. function f(t, e) {
  2331. var n = v(t)
  2332. , r = y()
  2333. , a = [];
  2334. if (e)
  2335. for (var o = 0; r.length > o; o++)
  2336. r[o].height(n[o]);
  2337. for (var o = 0; r.length > o; o++)
  2338. a.push(r[o].position().top);
  2339. he(t, function(t, e) {
  2340. e.css("top", a[t.row] + t.top)
  2341. })
  2342. }
  2343. function v(t) {
  2344. for (var e = P(), n = B(), r = [], a = g(t), o = 0; e > o; o++) {
  2345. for (var i = a[o], s = [], l = 0; n > l; l++)
  2346. s.push(0);
  2347. for (var c = 0; i.length > c; c++) {
  2348. var u = i[c];
  2349. u.top = L(s.slice(u.leftCol, u.rightCol + 1));
  2350. for (var l = u.leftCol; u.rightCol >= l; l++)
  2351. s[l] = u.top + u.outerHeight
  2352. }
  2353. r.push(L(s))
  2354. }
  2355. return r
  2356. }
  2357. function g(t) {
  2358. var e, n, r, a = P(), o = [];
  2359. for (e = 0; t.length > e; e++)
  2360. n = t[e],
  2361. r = n.row,
  2362. n.element && (o[r] ? o[r].push(n) : o[r] = [n]);
  2363. for (r = 0; a > r; r++)
  2364. o[r] = p(o[r] || []);
  2365. return o
  2366. }
  2367. function p(t) {
  2368. for (var e = [], n = m(t), r = 0; n.length > r; r++)
  2369. e.push.apply(e, n[r]);
  2370. return e
  2371. }
  2372. function m(t) {
  2373. t.sort(ge);
  2374. for (var e = [], n = 0; t.length > n; n++) {
  2375. for (var r = t[n], a = 0; e.length > a && ve(r, e[a]); a++)
  2376. ;
  2377. e[a] ? e[a].push(r) : e[a] = [r]
  2378. }
  2379. return e
  2380. }
  2381. function y() {
  2382. var t, e = P(), n = [];
  2383. for (t = 0; e > t; t++)
  2384. n[t] = I(t).find("div.fc-day-content > div");
  2385. return n
  2386. }
  2387. function w(t, e) {
  2388. var n = Z();
  2389. he(t, function(t, n, r) {
  2390. var a = t.event;
  2391. a._id === e ? b(a, n, t) : n[0]._fci = r
  2392. }),
  2393. E(n, t, b)
  2394. }
  2395. function b(t, e, n) {
  2396. H(t) && S.draggableDayEvent(t, e, n),
  2397. n.isEnd && F(t) && S.resizableDayEvent(t, e, n),
  2398. z(t, e)
  2399. }
  2400. function D(t, e) {
  2401. var n, r = te();
  2402. e.draggable({
  2403. delay: 50,
  2404. opacity: T("dragOpacity"),
  2405. revertDuration: T("dragRevertDuration"),
  2406. start: function(a, o) {
  2407. k("eventDragStart", e, t, a, o),
  2408. A(t, e),
  2409. r.start(function(r, a, o, i) {
  2410. if (e.draggable("option", "revert", !r || !o && !i),
  2411. Q(),
  2412. r) {
  2413. var s = ne(a)
  2414. , c = ne(r);
  2415. n = h(c, s),
  2416. $(l(d(t.start), n), l(C(t), n))
  2417. } else
  2418. n = 0
  2419. }, a, "drag")
  2420. },
  2421. stop: function(a, o) {
  2422. r.stop(),
  2423. Q(),
  2424. k("eventDragStop", e, t, a, o),
  2425. n ? O(this, t, n, 0, t.allDay, a, o) : (e.css("filter", ""),
  2426. W(t, e))
  2427. }
  2428. })
  2429. }
  2430. function M(e, r, a) {
  2431. var o = T("isRTL")
  2432. , i = o ? "w" : "e"
  2433. , s = r.find(".ui-resizable-" + i)
  2434. , c = !1;
  2435. Y(r),
  2436. r.mousedown(function(t) {
  2437. t.preventDefault()
  2438. }).click(function(t) {
  2439. c && (t.preventDefault(),
  2440. t.stopImmediatePropagation())
  2441. }),
  2442. s.mousedown(function(o) {
  2443. function s(n) {
  2444. k("eventResizeStop", this, e, n),
  2445. t("body").css("cursor", ""),
  2446. u.stop(),
  2447. Q(),
  2448. f && _(this, e, f, 0, n),
  2449. setTimeout(function() {
  2450. c = !1
  2451. }, 0)
  2452. }
  2453. if (1 == o.which) {
  2454. c = !0;
  2455. var u = te();
  2456. P(),
  2457. B();
  2458. var f, d, v = r.css("top"), h = t.extend({}, e), g = ie(oe(e.start));
  2459. K(),
  2460. t("body").css("cursor", i + "-resize").one("mouseup", s),
  2461. k("eventResizeStart", this, e, o),
  2462. u.start(function(r, o) {
  2463. if (r) {
  2464. var s = re(o)
  2465. , c = re(r);
  2466. if (c = Math.max(c, g),
  2467. f = ae(c) - ae(s)) {
  2468. h.end = l(R(e), f, !0);
  2469. var u = d;
  2470. d = n(h, a.row, v),
  2471. d = t(d),
  2472. d.find("*").css("cursor", i + "-resize"),
  2473. u && u.remove(),
  2474. A(e)
  2475. } else
  2476. d && (W(e),
  2477. d.remove(),
  2478. d = null);
  2479. Q(),
  2480. $(e.start, l(C(e), f))
  2481. }
  2482. }, o)
  2483. }
  2484. })
  2485. }
  2486. var S = this;
  2487. S.renderDayEvents = e,
  2488. S.draggableDayEvent = D,
  2489. S.resizableDayEvent = M;
  2490. var T = S.opt
  2491. , k = S.trigger
  2492. , H = S.isEventDraggable
  2493. , F = S.isEventResizable
  2494. , R = S.eventEnd
  2495. , N = S.reportEventElement
  2496. , z = S.eventElementHandlers
  2497. , W = S.showEvents
  2498. , A = S.hideEvents
  2499. , O = S.eventDrop
  2500. , _ = S.eventResize
  2501. , P = S.getRowCnt
  2502. , B = S.getColCnt;
  2503. S.getColWidth;
  2504. var I = S.allDayRow
  2505. , X = S.colLeft
  2506. , J = S.colRight
  2507. , V = S.colContentLeft
  2508. , U = S.colContentRight;
  2509. S.dateToCell;
  2510. var Z = S.getDaySegmentContainer
  2511. , G = S.calendar.formatDates
  2512. , $ = S.renderDayOverlay
  2513. , Q = S.clearOverlays
  2514. , K = S.clearSelection
  2515. , te = S.getHoverListener
  2516. , ee = S.rangeToSegments
  2517. , ne = S.cellToDate
  2518. , re = S.cellToCellOffset
  2519. , ae = S.cellOffsetToDayOffset
  2520. , oe = S.dateToDayOffset
  2521. , ie = S.dayOffsetToCellOffset
  2522. }
  2523. function ve(t, e) {
  2524. for (var n = 0; e.length > n; n++) {
  2525. var r = e[n];
  2526. if (r.leftCol <= t.rightCol && r.rightCol >= t.leftCol)
  2527. return !0
  2528. }
  2529. return !1
  2530. }
  2531. function he(t, e) {
  2532. for (var n = 0; t.length > n; n++) {
  2533. var r = t[n]
  2534. , a = r.element;
  2535. a && e(r, a, n)
  2536. }
  2537. }
  2538. function ge(t, e) {
  2539. 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)
  2540. }
  2541. function pe() {
  2542. function e(t, e, a) {
  2543. n(),
  2544. e || (e = l(t, a)),
  2545. c(t, e, a),
  2546. r(t, e, a)
  2547. }
  2548. function n(t) {
  2549. f && (f = !1,
  2550. u(),
  2551. s("unselect", null, t))
  2552. }
  2553. function r(t, e, n, r) {
  2554. f = !0,
  2555. s("select", null, t, e, n, r)
  2556. }
  2557. function a(e) {
  2558. var a = o.cellToDate
  2559. , s = o.getIsCellAllDay
  2560. , l = o.getHoverListener()
  2561. , f = o.reportDayClick;
  2562. if (1 == e.which && i("selectable")) {
  2563. n(e);
  2564. var d;
  2565. l.start(function(t, e) {
  2566. u(),
  2567. t && s(t) ? (d = [a(e), a(t)].sort(O),
  2568. c(d[0], d[1], !0)) : d = null
  2569. }, e),
  2570. t(document).one("mouseup", function(t) {
  2571. l.stop(),
  2572. d && (+d[0] == +d[1] && f(d[0], !0, t),
  2573. r(d[0], d[1], !0, t))
  2574. })
  2575. }
  2576. }
  2577. var o = this;
  2578. o.select = e,
  2579. o.unselect = n,
  2580. o.reportSelection = r,
  2581. o.daySelectionMousedown = a;
  2582. var i = o.opt
  2583. , s = o.trigger
  2584. , l = o.defaultSelectionEnd
  2585. , c = o.renderSelection
  2586. , u = o.clearSelection
  2587. , f = !1;
  2588. i("selectable") && i("unselectAuto") && t(document).mousedown(function(e) {
  2589. var r = i("unselectCancel");
  2590. r && t(e.target).parents(r).length || n(e)
  2591. })
  2592. }
  2593. function me() {
  2594. function e(e, n) {
  2595. var r = o.shift();
  2596. return r || (r = t("<div class='fc-cell-overlay' style='position:absolute;z-index:3'/>")),
  2597. r[0].parentNode != n[0] && r.appendTo(n),
  2598. a.push(r.css(e).show()),
  2599. r
  2600. }
  2601. function n() {
  2602. for (var t; t = a.shift(); )
  2603. o.push(t.hide().unbind())
  2604. }
  2605. var r = this;
  2606. r.renderOverlay = e,
  2607. r.clearOverlays = n;
  2608. var a = []
  2609. , o = []
  2610. }
  2611. function ye(t) {
  2612. var e, n, r = this;
  2613. r.build = function() {
  2614. e = [],
  2615. n = [],
  2616. t(e, n)
  2617. }
  2618. ,
  2619. r.cell = function(t, r) {
  2620. var a, o = e.length, i = n.length, s = -1, l = -1;
  2621. for (a = 0; o > a; a++)
  2622. if (r >= e[a][0] && e[a][1] > r) {
  2623. s = a;
  2624. break
  2625. }
  2626. for (a = 0; i > a; a++)
  2627. if (t >= n[a][0] && n[a][1] > t) {
  2628. l = a;
  2629. break
  2630. }
  2631. return s >= 0 && l >= 0 ? {
  2632. row: s,
  2633. col: l
  2634. } : null
  2635. }
  2636. ,
  2637. r.rect = function(t, r, a, o, i) {
  2638. var s = i.offset();
  2639. return {
  2640. top: e[t][0] - s.top,
  2641. left: n[r][0] - s.left,
  2642. width: n[o][1] - n[r][0],
  2643. height: e[a][1] - e[t][0]
  2644. }
  2645. }
  2646. }
  2647. function we(e) {
  2648. function n(t) {
  2649. be(t);
  2650. var n = e.cell(t.pageX, t.pageY);
  2651. (!n != !i || n && (n.row != i.row || n.col != i.col)) && (n ? (o || (o = n),
  2652. a(n, o, n.row - o.row, n.col - o.col)) : a(n, o),
  2653. i = n)
  2654. }
  2655. var r, a, o, i, s = this;
  2656. s.start = function(s, l, c) {
  2657. a = s,
  2658. o = i = null,
  2659. e.build(),
  2660. n(l),
  2661. r = c || "mousemove",
  2662. t(document).bind(r, n)
  2663. }
  2664. ,
  2665. s.stop = function() {
  2666. return t(document).unbind(r, n),
  2667. i
  2668. }
  2669. }
  2670. function be(t) {
  2671. t.pageX === e && (t.pageX = t.originalEvent.pageX,
  2672. t.pageY = t.originalEvent.pageY)
  2673. }
  2674. function De(t) {
  2675. function n(e) {
  2676. return a[e] = a[e] || t(e)
  2677. }
  2678. var r = this
  2679. , a = {}
  2680. , o = {}
  2681. , i = {};
  2682. r.left = function(t) {
  2683. return o[t] = o[t] === e ? n(t).position().left : o[t]
  2684. }
  2685. ,
  2686. r.right = function(t) {
  2687. return i[t] = i[t] === e ? r.left(t) + n(t).width() : i[t]
  2688. }
  2689. ,
  2690. r.clear = function() {
  2691. a = {},
  2692. o = {},
  2693. i = {}
  2694. }
  2695. }
  2696. var Ce = {
  2697. defaultView: "month",
  2698. aspectRatio: 1.35,
  2699. header: {
  2700. left: "prev,next today",
  2701. center: "title",
  2702. right: "month,agendaWeek,agendaDay"
  2703. },
  2704. weekends: !0,
  2705. weekNumbers: !1,
  2706. weekNumberCalculation: "iso",
  2707. weekNumberTitle: "W",
  2708. allDayDefault: !0,
  2709. ignoreTimezone: !0,
  2710. lazyFetching: !0,
  2711. startParam: "start",
  2712. endParam: "end",
  2713. titleFormat: {
  2714. month: "yyyy年MMMM月",
  2715. week: "yyyy年MMMM月d{'&#8212;'d日}",
  2716. day: "yyyy年MMMM月d日 dddd"
  2717. },
  2718. columnFormat: {
  2719. month: "ddd",
  2720. week: "ddd M/d",
  2721. day: "dddd M/d"
  2722. },
  2723. timeFormat: {
  2724. "": "H:mm"
  2725. },
  2726. isRTL: !1,
  2727. firstDay: 1,
  2728. monthNames: ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'],
  2729. monthNamesShort: ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'],
  2730. dayNames: ['周日', '周一', '周二', '周三', '周四', '周五', '周六'],
  2731. dayNamesShort: ['日', '一', '二', '三', '四', '五', '六'],
  2732. buttonText: {
  2733. prev: "<span class='fc-text-arrow'>&lsaquo;</span>",
  2734. next: "<span class='fc-text-arrow'>&rsaquo;</span>",
  2735. prevYear: "<span class='fc-text-arrow'>&laquo;</span>",
  2736. nextYear: "<span class='fc-text-arrow'>&raquo;</span>",
  2737. today: "今天",
  2738. month: "月",
  2739. week: "周",
  2740. day: "日"
  2741. },
  2742. theme: !1,
  2743. buttonIcons: {
  2744. prev: "circle-triangle-w",
  2745. next: "circle-triangle-e"
  2746. },
  2747. unselectAuto: !0,
  2748. dropAccept: "*",
  2749. handleWindowResize: !0
  2750. }
  2751. , Me = {
  2752. header: {
  2753. left: "next,prev today",
  2754. center: "",
  2755. right: "title"
  2756. },
  2757. buttonText: {
  2758. prev: "<span class='fc-text-arrow'>&rsaquo;</span>",
  2759. next: "<span class='fc-text-arrow'>&lsaquo;</span>",
  2760. prevYear: "<span class='fc-text-arrow'>&raquo;</span>",
  2761. nextYear: "<span class='fc-text-arrow'>&laquo;</span>"
  2762. },
  2763. buttonIcons: {
  2764. prev: "circle-triangle-e",
  2765. next: "circle-triangle-w"
  2766. }
  2767. }
  2768. , Ee = t.fullCalendar = {
  2769. version: "1.6.4"
  2770. }
  2771. , Se = Ee.views = {};
  2772. t.fn.fullCalendar = function(n) {
  2773. if ("string" == typeof n) {
  2774. var a, o = Array.prototype.slice.call(arguments, 1);
  2775. return this.each(function() {
  2776. var r = t.data(this, "fullCalendar");
  2777. if (r && t.isFunction(r[n])) {
  2778. var i = r[n].apply(r, o);
  2779. a === e && (a = i),
  2780. "destroy" == n && t.removeData(this, "fullCalendar")
  2781. }
  2782. }),
  2783. a !== e ? a : this
  2784. }
  2785. n = n || {};
  2786. var i = n.eventSources || [];
  2787. return delete n.eventSources,
  2788. n.events && (i.push(n.events),
  2789. delete n.events),
  2790. n = t.extend(!0, {}, Ce, n.isRTL || n.isRTL === e && Ce.isRTL ? Me : {}, n),
  2791. this.each(function(e, a) {
  2792. var o = t(a)
  2793. , s = new r(o,n,i);
  2794. o.data("fullCalendar", s),
  2795. s.render()
  2796. }),
  2797. this
  2798. }
  2799. ,
  2800. Ee.sourceNormalizers = [],
  2801. Ee.sourceFetchers = [];
  2802. var Te = {
  2803. dataType: "json",
  2804. cache: !1
  2805. }
  2806. , xe = 1;
  2807. Ee.addDays = l,
  2808. Ee.cloneDate = d,
  2809. Ee.parseDate = p,
  2810. Ee.parseISO8601 = m,
  2811. Ee.parseTime = y,
  2812. Ee.formatDate = w,
  2813. Ee.formatDates = b;
  2814. var ke = ["sun", "mon", "tue", "wed", "thu", "fri", "sat"]
  2815. , He = 864e5
  2816. , Fe = 36e5
  2817. , Re = 6e4
  2818. , Ne = {
  2819. s: function(t) {
  2820. return t.getSeconds()
  2821. },
  2822. ss: function(t) {
  2823. return _(t.getSeconds())
  2824. },
  2825. m: function(t) {
  2826. return t.getMinutes()
  2827. },
  2828. mm: function(t) {
  2829. return _(t.getMinutes())
  2830. },
  2831. h: function(t) {
  2832. return t.getHours() % 12 || 12
  2833. },
  2834. hh: function(t) {
  2835. return _(t.getHours() % 12 || 12)
  2836. },
  2837. H: function(t) {
  2838. return t.getHours()
  2839. },
  2840. HH: function(t) {
  2841. return _(t.getHours())
  2842. },
  2843. d: function(t) {
  2844. return t.getDate()
  2845. },
  2846. dd: function(t) {
  2847. return _(t.getDate())
  2848. },
  2849. ddd: function(t, e) {
  2850. return e.dayNamesShort[t.getDay()]
  2851. },
  2852. dddd: function(t, e) {
  2853. return e.dayNames[t.getDay()]
  2854. },
  2855. M: function(t) {
  2856. return t.getMonth() + 1
  2857. },
  2858. MM: function(t) {
  2859. return _(t.getMonth() + 1)
  2860. },
  2861. MMM: function(t, e) {
  2862. return e.monthNamesShort[t.getMonth()]
  2863. },
  2864. MMMM: function(t, e) {
  2865. return e.monthNames[t.getMonth()]
  2866. },
  2867. yy: function(t) {
  2868. return (t.getFullYear() + "").substring(2)
  2869. },
  2870. yyyy: function(t) {
  2871. return t.getFullYear()
  2872. },
  2873. t: function(t) {
  2874. return 12 > t.getHours() ? "a" : "p"
  2875. },
  2876. tt: function(t) {
  2877. return 12 > t.getHours() ? "am" : "pm"
  2878. },
  2879. T: function(t) {
  2880. return 12 > t.getHours() ? "A" : "P"
  2881. },
  2882. TT: function(t) {
  2883. return 12 > t.getHours() ? "AM" : "PM"
  2884. },
  2885. u: function(t) {
  2886. return w(t, "yyyy-MM-dd'T'HH:mm:ss'Z'")
  2887. },
  2888. S: function(t) {
  2889. var e = t.getDate();
  2890. return e > 10 && 20 > e ? "th" : ["st", "nd", "rd"][e % 10 - 1] || "th"
  2891. },
  2892. w: function(t, e) {
  2893. return e.weekNumberCalculation(t)
  2894. },
  2895. W: function(t) {
  2896. return D(t)
  2897. }
  2898. };
  2899. Ee.dateFormatters = Ne,
  2900. Ee.applyAll = I,
  2901. Se.month = J,
  2902. Se.basicWeek = V,
  2903. Se.basicDay = U,
  2904. n({
  2905. weekMode: "fixed"
  2906. }),
  2907. Se.agendaWeek = $,
  2908. Se.agendaDay = Q,
  2909. n({
  2910. allDaySlot: !0,
  2911. allDayText: "全天",
  2912. firstHour: 6,
  2913. slotMinutes: 30,
  2914. defaultEventMinutes: 120,
  2915. axisFormat: "H:mm",
  2916. timeFormat: {
  2917. agenda: "H:mm"
  2918. },
  2919. dragOpacity: {
  2920. agenda: .5
  2921. },
  2922. minTime: 0,
  2923. maxTime: 24,
  2924. slotEventOverlap: !0
  2925. })
  2926. }
  2927. )(jQuery);