! function(e) {
"use strict";
var t = function() {
this.$body = e("body"), this.$modal = e("#event-modal"), this.$event = "#external-events div.external-event", this.$calendar = e("#calendar"), this.$saveCategoryBtn = e(".save-category"), this.$categoryForm = e("#add-category form"), this.$extEvents = e("#external-events"), this.$calendarObj = null
};
t.prototype.onDrop = function(t, n) {
var a = t.data("eventObject"),
o = t.attr("data-class"),
i = e.extend({}, a);
i.start = n, o && (i.className = [o]), this.$calendar.fullCalendar("renderEvent", i, !0), e("#drop-remove").is(":checked") && t.remove()
}, t.prototype.onEventClick = function(t, n, a) {
var o = this,
i = e("
");
i.append(""), i.append("
"), o.$modal.modal({
backdrop: "static"
}), o.$modal.find(".delete-event").show().end().find(".save-event").hide().end().find(".modal-body").empty().prepend(i).end().find(".delete-event").unbind("click").on("click", function() {
o.$calendarObj.fullCalendar("removeEvents", function(e) {
return e._id == t._id
}), o.$modal.modal("hide")
}), o.$modal.find("form").on("submit", function() {
return t.title = i.find("input[type=text]").val(), o.$calendarObj.fullCalendar("updateEvent", t), o.$modal.modal("hide"), !1
})
}, t.prototype.onSelect = function(t, n, a) {
var o = this;
o.$modal.modal({
backdrop: "static"
});
var i = e("");
i.append(""), i.find(".row").append("").append("").find("select[name='category']").append("").append("").append("").append("").append("").append("").append(""), o.$modal.find(".delete-event").hide().end().find(".save-event").show().end().find(".modal-body").empty().prepend(i).end().find(".save-event").unbind("click").on("click", function() {
i.submit()
}), o.$modal.find("form").on("submit", function() {
var e = i.find("input[name='title']").val(),
a = (i.find("input[name='beginning']").val(), i.find("input[name='ending']").val(), i.find("select[name='category'] option:checked").val());
return null !== e && 0 != e.length ? (o.$calendarObj.fullCalendar("renderEvent", {
title: e,
start: t,
end: n,
allDay: !1,
className: a
}, !0), o.$modal.modal("hide")) : alert("You have to give a title to your event"), !1
}), o.$calendarObj.fullCalendar("unselect")
}, t.prototype.enableDrag = function() {
e(this.$event).each(function() {
var t = {
title: e.trim(e(this).text())
};
e(this).data("eventObject", t), e(this).draggable({
zIndex: 999,
revert: !0,
revertDuration: 0
})
})
}, t.prototype.init = function() {
this.enableDrag();
var t = new Date,
n = (t.getDate(), t.getMonth(), t.getFullYear(), new Date(e.now())),
a = [{
title: "Chicken Burger",
start: new Date(e.now() + 158e6),
className: "bg-dark"
}, {
title: "Soft drinks",
start: n,
end: n,
className: "bg-danger"
}, {
title: "Hot dog",
start: new Date(e.now() + 338e6),
className: "bg-primary"
}],
o = this;
o.$calendarObj = o.$calendar.fullCalendar({
slotDuration: "00:15:00",
minTime: "08:00:00",
maxTime: "19:00:00",
defaultView: "month",
handleWindowResize: !0,
height: e(window).height() - 100,
header: {
left: "prev,next today",
center: "title",
right: "month,agendaWeek,agendaDay"
},
events: a,
editable: !0,
droppable: !0,
eventLimit: !0,
selectable: !0,
drop: function(t) {
o.onDrop(e(this), t)
},
select: function(e, t, n) {
o.onSelect(e, t, n)
},
eventClick: function(e, t, n) {
o.onEventClick(e, t, n)
}
}), this.$saveCategoryBtn.on("click", function() {
var e = o.$categoryForm.find("input[name='category-name']").val(),
t = o.$categoryForm.find("select[name='category-color']").val();
null !== e && 0 != e.length && (o.$extEvents.append('' + e + "
"), o.enableDrag())
})
}, e.CalendarApp = new t, e.CalendarApp.Constructor = t
}(window.jQuery),
function(e) {
"use strict";
e.CalendarApp.init()
}(window.jQuery);