/* dhtmlxScheduler v.4.3.0 Stardard This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited. (c) Dinamenta, UAB. */ (function(){ var temp_section; var before; scheduler.config.collision_limit = 1; function _setTempSection(event_id) { // for custom views (matrix, timeline, units) var checked_mode = scheduler._get_section_view(); if(checked_mode && event_id){ temp_section = scheduler.getEvent(event_id)[scheduler._get_section_property()]; } } scheduler.attachEvent("onBeforeDrag",function(id){ _setTempSection(id); return true; }); scheduler.attachEvent("onBeforeLightbox",function(id){ var ev = scheduler.getEvent(id); before = [ev.start_date, ev.end_date]; _setTempSection(id); return true; }); scheduler.attachEvent("onEventChanged",function(id){ if (!id || !scheduler.getEvent(id)) return true; var ev = scheduler.getEvent(id); if (!scheduler.checkCollision(ev)){ if (!before) return false; ev.start_date = before[0]; ev.end_date = before[1]; ev._timed=this.isOneDayEvent(ev); } return true; }); scheduler.attachEvent("onBeforeEventChanged",function(ev,e,is_new){ return scheduler.checkCollision(ev); }); scheduler.attachEvent("onEventAdded",function(id,ev) { var result = scheduler.checkCollision(ev); if (!result) scheduler.deleteEvent(id); }); scheduler.attachEvent("onEventSave",function(id, edited_ev, is_new){ edited_ev = scheduler._lame_clone(edited_ev); edited_ev.id = id; //lightbox may not have 'time' section if(!(edited_ev.start_date && edited_ev.end_date)){ var ev = scheduler.getEvent(id); edited_ev.start_date = new Date(ev.start_date); edited_ev.end_date = new Date(ev.end_date); } if(edited_ev.rec_type){ scheduler._roll_back_dates(edited_ev); } return scheduler.checkCollision(edited_ev); // in case user creates event on one date but then edited it another }); scheduler._check_sections_collision = function(first, second){ var map_to = scheduler._get_section_property(); if (first[map_to] == second[map_to] && first.id != second.id) return true; return false; }; scheduler.checkCollision = function(ev) { var evs = []; var collision_limit = scheduler.config.collision_limit; if (ev.rec_type) { var evs_dates = scheduler.getRecDates(ev); for(var k=0; k= collision_limit) { single = false; } } else { if ( evs.length >= collision_limit ) single = false; } if (!single) { var res = !scheduler.callEvent("onEventCollision",[ev,evs]); if (!res) { ev[map_to] = temp_section||ev[map_to]; // from _setTempSection for custom views } return res; } return single; }; })();