/* Methods & Utilities for All Views -----------------------------------------------------------------------------*/ var viewMethods = { /* * Objects inheriting these methods must implement the following properties/methods: * - title * - start * - end * - visStart * - visEnd * - defaultEventEnd(event) * - visEventEnd(event) * - render(events) * - rerenderEvents() * * * z-index reservations: * 1. day-overlay * 2. events * 3. dragging/resizing events * */ init: function(element, options) { this.element = element; this.options = options; this.cachedEvents = []; this.eventsByID = {}; this.eventElements = []; this.eventElementsByID = {}; }, // triggers an event handler, always append view as last arg trigger: function(name, thisObj) { if (this.options[name]) { return this.options[name].apply(thisObj || this, Array.prototype.slice.call(arguments, 2).concat([this])); } }, // returns a Date object for an event's end eventEnd: function(event) { return event.end || this.defaultEventEnd(event); }, // report when view receives new events reportEvents: function(events) { // events are already normalized at this point var i, len=events.length, event, eventsByID = this.eventsByID = {}, cachedEvents = this.cachedEvents = []; for (i=0; i