summaryrefslogtreecommitdiffstats
path: root/sources/ext/dhtmlxscheduler_recurring.js
diff options
context:
space:
mode:
authorAlexKlimenkov <shurick.klimenkov@gmail.com>2014-06-10 20:50:30 +0300
committerAlexKlimenkov <shurick.klimenkov@gmail.com>2014-06-10 20:50:30 +0300
commitb5a0589955460a44c5428c4cb5429fcfce265d23 (patch)
tree87db58400a3e036de646fb630cbb358beeac3bc1 /sources/ext/dhtmlxscheduler_recurring.js
parente2aaaef8540fabd0b5200a4959c269d6f1ae352e (diff)
downloadscheduler-b5a0589955460a44c5428c4cb5429fcfce265d23.zip
scheduler-b5a0589955460a44c5428c4cb5429fcfce265d23.tar.gz
scheduler-b5a0589955460a44c5428c4cb5429fcfce265d23.tar.bz2
[update] version 4.1.0
Diffstat (limited to 'sources/ext/dhtmlxscheduler_recurring.js')
-rw-r--r--sources/ext/dhtmlxscheduler_recurring.js786
1 files changed, 0 insertions, 786 deletions
diff --git a/sources/ext/dhtmlxscheduler_recurring.js b/sources/ext/dhtmlxscheduler_recurring.js
deleted file mode 100644
index 56eb265..0000000
--- a/sources/ext/dhtmlxscheduler_recurring.js
+++ /dev/null
@@ -1,786 +0,0 @@
-/*
-This software is allowed to use under GPL or you need to obtain Commercial or Enterise License
-to use it in non-GPL project. Please contact sales@dhtmlx.com for details
-*/
-
-scheduler.config.occurrence_timestamp_in_utc = false;
-scheduler.form_blocks["recurring"] = {
- render:function(sns) {
- return scheduler.__recurring_template;
- },
- _ds: {},
- _init_set_value:function(node, value, ev) {
- scheduler.form_blocks["recurring"]._ds = {start:ev.start_date, end:ev._end_date};
-
- var str_date_format = scheduler.date.str_to_date(scheduler.config.repeat_date);
- var str_date = function(str_date) {
- var date = str_date_format(str_date);
- if (scheduler.config.include_end_by)
- date = scheduler.date.add(date, 1, 'day');
- return date;
- };
-
- var date_str = scheduler.date.date_to_str(scheduler.config.repeat_date);
-
- var top = node.getElementsByTagName("FORM")[0];
- var els = [];
-
- function register_els(inps) {
- for (var i = 0; i < inps.length; i++) {
- var inp = inps[i];
- if (inp.type == "checkbox" || inp.type == "radio") {
- if (!els[inp.name])
- els[inp.name] = [];
- els[inp.name].push(inp);
- } else
- els[inp.name] = inp;
- }
- }
-
- register_els(top.getElementsByTagName("INPUT"));
- register_els(top.getElementsByTagName("SELECT"));
-
- if (!scheduler.config.repeat_date_of_end) {
- var formatter = scheduler.date.date_to_str(scheduler.config.repeat_date);
- scheduler.config.repeat_date_of_end = formatter(scheduler.date.add(scheduler._currentDate(), 30, "day"));
- }
- els["date_of_end"].value = scheduler.config.repeat_date_of_end;
-
- var $ = function(a) {
- return document.getElementById(a);
- };
-
- function get_radio_value(name) {
- var col = els[name];
- for (var i = 0; i < col.length; i++)
- if (col[i].checked) return col[i].value;
- }
-
- function change_current_view() {
- $("dhx_repeat_day").style.display = "none";
- $("dhx_repeat_week").style.display = "none";
- $("dhx_repeat_month").style.display = "none";
- $("dhx_repeat_year").style.display = "none";
- $("dhx_repeat_" + this.value).style.display = "block";
- }
-
- function get_repeat_code(dates) {
- var code = [get_radio_value("repeat")];
- get_rcode[code[0]](code, dates);
-
- while (code.length < 5) code.push("");
- var repeat = "";
- if (els["end"][0].checked) {
- dates.end = new Date(9999, 1, 1);
- repeat = "no";
- }
- else if (els["end"][2].checked) {
- dates.end = str_date(els["date_of_end"].value);
- }
- else {
- scheduler.transpose_type(code.join("_"));
- repeat = Math.max(1, els["occurences_count"].value);
- var transp = ((code[0] == "week" && code[4] && code[4].toString().indexOf(scheduler.config.start_on_monday ? 1 : 0) == -1) ? 1 : 0);
- dates.end = scheduler.date.add(new Date(dates.start), repeat + transp, code.join("_"));
- }
-
- return code.join("_") + "#" + repeat;
- }
-
- scheduler.form_blocks["recurring"]._get_repeat_code = get_repeat_code;
- var get_rcode = {
- month:function(code, dates) {
- if (get_radio_value("month_type") == "d") {
- code.push(Math.max(1, els["month_count"].value));
- dates.start.setDate(els["month_day"].value);
- } else {
- code.push(Math.max(1, els["month_count2"].value));
- code.push(els["month_day2"].value);
- code.push(Math.max(1, els["month_week2"].value));
- dates.start.setDate(1);
- }
- dates._start = true;
- },
- week:function(code, dates) {
- code.push(Math.max(1, els["week_count"].value));
- code.push("");
- code.push("");
- var t = [];
- var col = els["week_day"];
- var day = dates.start.getDay();
- var start_exists = false;
-
- for (var i = 0; i < col.length; i++){
- if (col[i].checked) {
- t.push(col[i].value);
- start_exists = start_exists || col[i].value == day;
- }
- }
- if (!t.length){
- t.push(day);
- start_exists = true;
- }
- t.sort();
-
-
- if (!scheduler.config.repeat_precise){
- dates.start = scheduler.date.week_start(dates.start);
- dates._start = true;
- } else if (!start_exists){
- scheduler.transpose_day_week(dates.start, t, 1, 7);
- dates._start = true;
- }
-
- code.push(t.join(","));
- },
- day:function(code) {
- if (get_radio_value("day_type") == "d") {
- code.push(Math.max(1, els["day_count"].value));
- }
- else {
- code.push("week");
- code.push(1);
- code.push("");
- code.push("");
- code.push("1,2,3,4,5");
- code.splice(0, 1);
- }
- },
- year:function(code, dates) {
- if (get_radio_value("year_type") == "d") {
- code.push("1");
- dates.start.setMonth(0);
- dates.start.setDate(els["year_day"].value);
- dates.start.setMonth(els["year_month"].value);
-
- } else {
- code.push("1");
- code.push(els["year_day2"].value);
- code.push(els["year_week2"].value);
- dates.start.setDate(1);
- dates.start.setMonth(els["year_month2"].value);
- }
- dates._start = true;
- }
- };
- var set_rcode = {
- week:function(code, dates) {
- els["week_count"].value = code[1];
- var col = els["week_day"];
- var t = code[4].split(",");
- var d = {};
- for (var i = 0; i < t.length; i++) d[t[i]] = true;
- for (var i = 0; i < col.length; i++)
- col[i].checked = (!!d[col[i].value]);
- },
- month:function(code, dates) {
- if (code[2] == "") {
- els["month_type"][0].checked = true;
- els["month_count"].value = code[1];
- els["month_day"].value = dates.start.getDate();
- } else {
- els["month_type"][1].checked = true;
- els["month_count2"].value = code[1];
- els["month_week2"].value = code[3];
- els["month_day2"].value = code[2];
- }
- },
- day:function(code, dates) {
- els["day_type"][0].checked = true;
- els["day_count"].value = code[1];
- },
- year:function(code, dates) {
- if (code[2] == "") {
- els["year_type"][0].checked = true;
- els["year_day"].value = dates.start.getDate();
- els["year_month"].value = dates.start.getMonth();
- } else {
- els["year_type"][1].checked = true;
- els["year_week2"].value = code[3];
- els["year_day2"].value = code[2];
- els["year_month2"].value = dates.start.getMonth();
- }
- }
- };
-
- function set_repeat_code(code, dates) {
- var data = code.split("#");
- code = data[0].split("_");
- set_rcode[code[0]](code, dates);
- var e = els["repeat"][({day:0, week:1, month:2, year:3})[code[0]]];
- switch (data[1]) {
- case "no":
- els["end"][0].checked = true;
- break;
- case "":
- els["end"][2].checked = true;
- els["date_of_end"].value = date_str(dates.end);
- break;
- default:
- els["end"][1].checked = true;
- els["occurences_count"].value = data[1];
- break;
- }
-
- e.checked = true;
- e.onclick();
- }
-
- scheduler.form_blocks["recurring"]._set_repeat_code = set_repeat_code;
-
- for (var i = 0; i < top.elements.length; i++) {
- var el = top.elements[i];
- switch (el.name) {
- case "repeat":
- el.onclick = change_current_view;
- break;
- }
- }
- scheduler._lightbox._rec_init_done = true;
- },
- set_value:function(node, value, ev) {
- var rf = scheduler.form_blocks["recurring"];
- if (!scheduler._lightbox._rec_init_done)
- rf._init_set_value(node, value, ev);
- node.open = !ev.rec_type;
- if (ev.event_pid && ev.event_pid != "0")
- node.blocked = true;
- else node.blocked = false;
-
- var ds = rf._ds;
- ds.start = ev.start_date;
- ds.end = ev._end_date;
-
- rf.button_click(0, node.previousSibling.firstChild.firstChild, node, node);
- if (value)
- rf._set_repeat_code(value, ds);
- },
- get_value:function(node, ev) {
- if (node.open) {
- var ds = scheduler.form_blocks["recurring"]._ds;
- var actual_dates = {};
- this.formSection('time').getValue(actual_dates);
- ds.start = actual_dates.start_date;
- ev.rec_type = scheduler.form_blocks["recurring"]._get_repeat_code(ds);
- if (ds._start) {
- ev.start_date = new Date(ds.start);
- ev._start_date = new Date(ds.start);
- ds._start = false;
- } else
- ev._start_date = null;
-
- ev._end_date = ds.end;
- ev.rec_pattern = ev.rec_type.split("#")[0];
- } else {
- ev.rec_type = ev.rec_pattern = "";
- ev._end_date = ev.end_date;
- }
- return ev.rec_type;
- },
- focus:function(node) {
- },
- button_click:function(index, el, section, cont) {
- if (!cont.open && !cont.blocked) {
- cont.style.height = "115px";
- el.style.backgroundPosition = "-5px 0px";
- el.nextSibling.innerHTML = scheduler.locale.labels.button_recurring_open;
- } else {
- cont.style.height = "0px";
- el.style.backgroundPosition = "-5px 20px";
- el.nextSibling.innerHTML = scheduler.locale.labels.button_recurring;
- }
- cont.open = !cont.open;
-
- scheduler.setLightboxSize();
- }
-};
-
-
-//problem may occur if we will have two repeating events in the same moment of time
-scheduler._rec_markers = {};
-scheduler._rec_markers_pull = {};
-scheduler._add_rec_marker = function(ev, time) {
- ev._pid_time = time;
- this._rec_markers[ev.id] = ev;
- if (!this._rec_markers_pull[ev.event_pid]) this._rec_markers_pull[ev.event_pid] = {};
- this._rec_markers_pull[ev.event_pid][time] = ev;
-};
-scheduler._get_rec_marker = function(time, id) {
- var ch = this._rec_markers_pull[id];
- if (ch) return ch[time];
- return null;
-};
-scheduler._get_rec_markers = function(id) {
- return (this._rec_markers_pull[id] || []);
-};
-scheduler._rec_temp = [];
-(function() {
- var old_add_event = scheduler.addEvent;
- scheduler.addEvent = function(start_date, end_date, text, id, extra_data) {
- var ev_id = old_add_event.apply(this, arguments);
-
- if (ev_id) {
- var ev = scheduler.getEvent(ev_id);
- if (ev.event_pid != 0)
- scheduler._add_rec_marker(ev, ev.event_length * 1000);
- if (ev.rec_type)
- ev.rec_pattern = ev.rec_type.split("#")[0];
- }
- return ev_id;
- };
-})();
-scheduler.attachEvent("onEventIdChange", function(id, new_id) {
- if (this._ignore_call) return;
- this._ignore_call = true;
-
- for (var i = 0; i < this._rec_temp.length; i++) {
- var tev = this._rec_temp[i];
- if (tev.event_pid == id) {
- tev.event_pid = new_id;
- this.changeEventId(tev.id, new_id + "#" + tev.id.split("#")[1]);
- }
- }
-
- delete this._ignore_call;
-});
-scheduler.attachEvent("onConfirmedBeforeEventDelete", function(id) {
- var ev = this.getEvent(id);
- if (id.toString().indexOf("#") != -1 || (ev.event_pid && ev.event_pid != "0" && ev.rec_type && ev.rec_type != 'none')) {
- id = id.split("#");
- var nid = this.uid();
- var tid = (id[1]) ? id[1] : (ev._pid_time / 1000);
-
- var nev = this._copy_event(ev);
- nev.id = nid;
- nev.event_pid = ev.event_pid || id[0];
- var timestamp = tid;
- nev.event_length = timestamp;
- nev.rec_type = nev.rec_pattern = "none";
- this.addEvent(nev);
-
- this._add_rec_marker(nev, timestamp * 1000);
- } else {
- if (ev.rec_type && this._lightbox_id)
- this._roll_back_dates(ev);
- var sub = this._get_rec_markers(id);
- for (var i in sub) {
- if (sub.hasOwnProperty(i)) {
- id = sub[i].id;
- if (this.getEvent(id))
- this.deleteEvent(id, true);
- }
- }
- }
- return true;
-});
-
-scheduler.attachEvent("onEventChanged", function(id) {
- if (this._loading) return true;
-
- var ev = this.getEvent(id);
-
- if (id.toString().indexOf("#") != -1) {
- var id = id.split("#");
- var nid = this.uid();
- this._not_render = true;
-
- var nev = this._copy_event(ev);
- nev.id = nid;
- nev.event_pid = id[0];
- var timestamp = id[1];
- nev.event_length = timestamp;
- nev.rec_type = nev.rec_pattern = "";
-
- this._add_rec_marker(nev, timestamp * 1000);
- this.addEvent(nev);
-
- this._not_render = false;
-
- } else {
- if (ev.rec_type && this._lightbox_id)
- this._roll_back_dates(ev);
- var sub = this._get_rec_markers(id);
- for (var i in sub) {
- if (sub.hasOwnProperty(i)) {
- delete this._rec_markers[sub[i].id];
- this.deleteEvent(sub[i].id, true);
- }
- }
- delete this._rec_markers_pull[id];
-
- // it's possible that after editing event is no longer exists, in such case we need to remove _select_id flag
- var isEventFound = false;
- for (var k = 0; k < this._rendered.length; k++) {
- if (this._rendered[k].getAttribute('event_id') == id)
- isEventFound = true;
- }
- if (!isEventFound)
- this._select_id = null;
- }
- return true;
-});
-scheduler.attachEvent("onEventAdded", function(id) {
- if (!this._loading) {
- var ev = this.getEvent(id);
- if (ev.rec_type && !ev.event_length)
- this._roll_back_dates(ev);
- }
- return true;
-});
-scheduler.attachEvent("onEventSave", function(id, data, is_new_event) {
- var ev = this.getEvent(id);
- if (!ev.rec_type && data.rec_type && (id + '').indexOf('#') == -1)
- this._select_id = null;
- return true;
-});
-scheduler.attachEvent("onEventCreated", function(id) {
- var ev = this.getEvent(id);
- if (!ev.rec_type)
- ev.rec_type = ev.rec_pattern = ev.event_length = ev.event_pid = "";
- return true;
-});
-scheduler.attachEvent("onEventCancel", function(id) {
- var ev = this.getEvent(id);
- if (ev.rec_type) {
- this._roll_back_dates(ev);
- // a bit expensive, but we need to be sure that event re-rendered, because view can be corrupted by resize , during edit process
- this.render_view_data();
- }
-});
-scheduler._roll_back_dates = function(ev) {
- ev.event_length = (ev.end_date.valueOf() - ev.start_date.valueOf()) / 1000;
- ev.end_date = ev._end_date;
- if (ev._start_date) {
- ev.start_date.setMonth(0);
- ev.start_date.setDate(ev._start_date.getDate());
- ev.start_date.setMonth(ev._start_date.getMonth());
- ev.start_date.setFullYear(ev._start_date.getFullYear());
-
- }
-};
-
-scheduler._validId = function(id) {
- return id.toString().indexOf("#") == -1;
-};
-
-scheduler.showLightbox_rec = scheduler.showLightbox;
-scheduler.showLightbox = function(id) {
- var locale = this.locale;
- var c = scheduler.config.lightbox_recurring;
- var ev = this.getEvent(id);
- var pid = ev.event_pid;
- var isVirtual = (id.toString().indexOf("#") != -1);
- if (isVirtual)
- pid = id.split("#")[0];
-
- // show series
- var showSeries = function(id) {
- var event = scheduler.getEvent(id);
- event._end_date = event.end_date;
- event.end_date = new Date(event.start_date.valueOf() + event.event_length * 1000);
- return scheduler.showLightbox_rec(id); // editing series
- };
-
- if ( (pid || pid == 0) && ev.rec_type) {
- // direct API call on series id
- return showSeries(id);
- }
- if ( !pid || pid == 0 || ( (!locale.labels.confirm_recurring || c == 'instance') || (c == 'series' && !isVirtual)) ) {
- // editing instance or non recurring event
- return this.showLightbox_rec(id);
- }
- if (c == 'ask') {
- var that = this;
- dhtmlx.modalbox({
- text: locale.labels.confirm_recurring,
- title: locale.labels.title_confirm_recurring,
- width: "500px",
- position: "middle",
- buttons:[locale.labels.button_edit_series, locale.labels.button_edit_occurrence, locale.labels.icon_cancel],
- callback: function(index) {
- switch(+index) {
- case 0:
- return showSeries(pid);
- case 1:
- return that.showLightbox_rec(id);
- case 2:
- return;
- }
- }
- });
- } else {
- showSeries(pid);
- }
-};
-
-
-scheduler.get_visible_events_rec = scheduler.get_visible_events;
-scheduler.get_visible_events = function(only_timed) {
- for (var i = 0; i < this._rec_temp.length; i++)
- delete this._events[this._rec_temp[i].id];
- this._rec_temp = [];
-
- var stack = this.get_visible_events_rec(only_timed);
- var out = [];
- for (var i = 0; i < stack.length; i++) {
- if (stack[i].rec_type) {
- //deleted element of serie
- if (stack[i].rec_pattern != "none")
- this.repeat_date(stack[i], out);
- }
- else out.push(stack[i]);
- }
- return out;
-};
-
-
-(function() {
- var old = scheduler.isOneDayEvent;
- scheduler.isOneDayEvent = function(ev) {
- if (ev.rec_type) return true;
- return old.call(this, ev);
- };
- var old_update_event = scheduler.updateEvent;
- scheduler.updateEvent = function(id) {
- var ev = scheduler.getEvent(id);
- if(ev.rec_type){
- //rec_type can be changed without the lightbox,
- // make sure rec_pattern updated as well
- ev.rec_pattern = (ev.rec_type || "").split("#")[0];
- }
- if (ev && ev.rec_type && id.toString().indexOf('#') === -1) {
- scheduler.update_view();
- } else {
- old_update_event.call(this, id);
- }
- };
-})();
-
-scheduler.transponse_size = {
- day:1, week:7, month:1, year:12
-};
-scheduler.date.day_week = function(sd, day, week) {
- sd.setDate(1);
- week = (week - 1) * 7;
- var cday = sd.getDay();
- var nday = day * 1 + week - cday + 1;
- sd.setDate(nday <= week ? (nday + 7) : nday);
-};
-scheduler.transpose_day_week = function(sd, list, cor, size, cor2) {
- var cday = (sd.getDay() || (scheduler.config.start_on_monday ? 7 : 0)) - cor;
- for (var i = 0; i < list.length; i++) {
- if (list[i] > cday)
- return sd.setDate(sd.getDate() + list[i] * 1 - cday - (size ? cor : cor2));
- }
- this.transpose_day_week(sd, list, cor + size, null, cor);
-};
-scheduler.transpose_type = function(type) {
- var f = "transpose_" + type;
- if (!this.date[f]) {
- var str = type.split("_");
- var day = 60 * 60 * 24 * 1000;
- var gf = "add_" + type;
- var step = this.transponse_size[str[0]] * str[1];
-
- if (str[0] == "day" || str[0] == "week") {
- var days = null;
- if (str[4]) {
- days = str[4].split(",");
- if (scheduler.config.start_on_monday) {
- for (var i = 0; i < days.length; i++)
- days[i] = (days[i] * 1) || 7;
- days.sort();
- }
- }
-
- this.date[f] = function(nd, td) {
- var delta = Math.floor((td.valueOf() - nd.valueOf()) / (day * step));
- if (delta > 0)
- nd.setDate(nd.getDate() + delta * step);
- if (days)
- scheduler.transpose_day_week(nd, days, 1, step);
- };
- this.date[gf] = function(sd, inc) {
- var nd = new Date(sd.valueOf());
- if (days) {
- for (var count = 0; count < inc; count++)
- scheduler.transpose_day_week(nd, days, 0, step);
- } else
- nd.setDate(nd.getDate() + inc * step);
-
- return nd;
- };
- }
- else if (str[0] == "month" || str[0] == "year") {
- this.date[f] = function(nd, td) {
- var delta = Math.ceil(((td.getFullYear() * 12 + td.getMonth() * 1) - (nd.getFullYear() * 12 + nd.getMonth() * 1)) / (step));
- if (delta >= 0)
- nd.setMonth(nd.getMonth() + delta * step);
- if (str[3])
- scheduler.date.day_week(nd, str[2], str[3]);
- };
- this.date[gf] = function(sd, inc) {
- var nd = new Date(sd.valueOf());
- nd.setMonth(nd.getMonth() + inc * step);
- if (str[3])
- scheduler.date.day_week(nd, str[2], str[3]);
- return nd;
- };
- }
- }
-};
-scheduler.repeat_date = function(ev, stack, non_render, from, to) {
-
- from = from || this._min_date;
- to = to || this._max_date;
-
- var td = new Date(ev.start_date.valueOf());
-
- if (!ev.rec_pattern && ev.rec_type)
- ev.rec_pattern = ev.rec_type.split("#")[0];
-
- this.transpose_type(ev.rec_pattern);
- scheduler.date["transpose_" + ev.rec_pattern](td, from);
- while (td < ev.start_date || scheduler._fix_daylight_saving_date(td,from,ev,td,new Date(td.valueOf() + ev.event_length * 1000)).valueOf() <= from.valueOf() || td.valueOf() + ev.event_length * 1000 <= from.valueOf())
- td = this.date.add(td, 1, ev.rec_pattern);
- while (td < to && td < ev.end_date) {
- var timestamp = (scheduler.config.occurrence_timestamp_in_utc) ? Date.UTC(td.getFullYear(), td.getMonth(), td.getDate(), td.getHours(), td.getMinutes(), td.getSeconds()) : td.valueOf();
- var ch = this._get_rec_marker(timestamp, ev.id);
- if (!ch) { // unmodified element of series
- var ted = new Date(td.valueOf() + ev.event_length * 1000);
- var copy = this._copy_event(ev);
- //copy._timed = ev._timed;
- copy.text = ev.text;
- copy.start_date = td;
- copy.event_pid = ev.id;
- copy.id = ev.id + "#" + Math.ceil(timestamp / 1000);
- copy.end_date = ted;
-
- copy.end_date = scheduler._fix_daylight_saving_date(copy.start_date, copy.end_date, ev, td, copy.end_date);
-
- copy._timed = this.isOneDayEvent(copy);
-
- if (!copy._timed && !this._table_view && !this.config.multi_day) return;
- stack.push(copy);
-
- if (!non_render) {
- this._events[copy.id] = copy;
- this._rec_temp.push(copy);
- }
-
- } else
- if (non_render) stack.push(ch);
-
- td = this.date.add(td, 1, ev.rec_pattern);
- }
-};
-scheduler._fix_daylight_saving_date = function(start_date, end_date, ev, counter, default_date) {
- var shift = start_date.getTimezoneOffset() - end_date.getTimezoneOffset();
- if (shift) {
- if (shift > 0) {
- // e.g. 24h -> 23h
- return new Date(counter.valueOf() + ev.event_length * 1000 - shift * 60 * 1000);
- }
- else {
- // e.g. 24h -> 25h
- return new Date(end_date.valueOf() - shift * 60 * 1000);
- }
- }
- return new Date(default_date.valueOf());
-};
-scheduler.getRecDates = function(id, max) {
- var ev = typeof id == "object" ? id : scheduler.getEvent(id);
- var count = 0;
- var result = [];
- max = max || 100;
-
- var td = new Date(ev.start_date.valueOf());
- var from = new Date(td.valueOf());
-
- if (!ev.rec_type) {
- return [
- { start_date: ev.start_date, end_date: ev.end_date }
- ];
- }
- if (ev.rec_type == "none") {
- return [];
- }
- this.transpose_type(ev.rec_pattern);
- scheduler.date["transpose_" + ev.rec_pattern](td, from);
-
- while (td < ev.start_date || (td.valueOf() + ev.event_length * 1000) <= from.valueOf())
- td = this.date.add(td, 1, ev.rec_pattern);
- while (td < ev.end_date) {
- var ch = this._get_rec_marker(td.valueOf(), ev.id);
- var res = true;
- if (!ch) { // unmodified element of series
- var sed = new Date(td);
- var ted = new Date(td.valueOf() + ev.event_length * 1000);
-
- ted = scheduler._fix_daylight_saving_date(sed, ted, ev, td, ted);
-
- result.push({start_date:sed, end_date:ted});
- } else {
- (ch.rec_type == "none") ?
- (res = false) :
- result.push({ start_date: ch.start_date, end_date: ch.end_date });
- }
- td = this.date.add(td, 1, ev.rec_pattern);
- if (res) {
- count++;
- if (count == max)
- break;
- }
- }
- return result;
-};
-scheduler.getEvents = function(from, to) {
- var result = [];
- for (var a in this._events) {
- var ev = this._events[a];
- if (ev && ev.start_date < to && ev.end_date > from) {
- if (ev.rec_pattern) {
- if (ev.rec_pattern == "none") continue;
- var sev = [];
- this.repeat_date(ev, sev, true, from, to);
- for (var i = 0; i < sev.length; i++) {
- // if event is in rec_markers then it will be checked by himself, here need to skip it
- if (!sev[i].rec_pattern && sev[i].start_date < to && sev[i].end_date > from && !this._rec_markers[sev[i].id]) {
- result.push(sev[i]);
- }
- }
- } else if (ev.id.toString().indexOf("#") == -1) { // if it's virtual event we can skip it
- result.push(ev);
- }
- }
- }
- return result;
-};
-
-scheduler.config.repeat_date = "%m.%d.%Y";
-scheduler.config.lightbox.sections = [
- {name:"description", height:130, map_to:"text", type:"textarea" , focus:true},
- {name:"recurring", type:"recurring", map_to:"rec_type", button:"recurring"},
- {name:"time", height:72, type:"time", map_to:"auto"}
-];
-
-
-//drop secondary attributes
-scheduler._copy_dummy = function(ev) {
- var start_date = new Date(this.start_date);
- var end_date = new Date(this.end_date);
- this.start_date = start_date;
- this.end_date = end_date;
- this.event_length = this.event_pid = this.rec_pattern = this.rec_type = null;
-};
-
-scheduler.config.include_end_by = false;
-scheduler.config.lightbox_recurring = 'ask'; // series, instance
-
-scheduler.attachEvent("onClearAll", function(){
- scheduler._rec_markers = {}; //clear recurring events data
- scheduler._rec_markers_pull = {};
- scheduler._rec_temp = [];
-});
-scheduler.__recurring_template='<div class="dhx_form_repeat"> <form> <div class="dhx_repeat_left"> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="day" />Daily</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="week"/>Weekly</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="month" checked />Monthly</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="year" />Yearly</label> </div> <div class="dhx_repeat_divider"></div> <div class="dhx_repeat_center"> <div style="display:none;" id="dhx_repeat_day"> <label><input class="dhx_repeat_radio" type="radio" name="day_type" value="d"/>Every</label><input class="dhx_repeat_text" type="text" name="day_count" value="1" />day<br /> <label><input class="dhx_repeat_radio" type="radio" name="day_type" checked value="w"/>Every workday</label> </div> <div style="display:none;" id="dhx_repeat_week"> Repeat every<input class="dhx_repeat_text" type="text" name="week_count" value="1" />week next days:<br /> <table class="dhx_repeat_days"> <tr> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="1" />Monday</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="4" />Thursday</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="2" />Tuesday</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="5" />Friday</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="3" />Wednesday</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="6" />Saturday</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="0" />Sunday</label><br /><br /> </td> </tr> </table> </div> <div id="dhx_repeat_month"> <label><input class="dhx_repeat_radio" type="radio" name="month_type" value="d"/>Repeat</label><input class="dhx_repeat_text" type="text" name="month_day" value="1" />day every<input class="dhx_repeat_text" type="text" name="month_count" value="1" />month<br /> <label><input class="dhx_repeat_radio" type="radio" name="month_type" checked value="w"/>On</label><input class="dhx_repeat_text" type="text" name="month_week2" value="1" /><select name="month_day2"><option value="1" selected >Monday<option value="2">Tuesday<option value="3">Wednesday<option value="4">Thursday<option value="5">Friday<option value="6">Saturday<option value="0">Sunday</select>every<input class="dhx_repeat_text" type="text" name="month_count2" value="1" />month<br /> </div> <div style="display:none;" id="dhx_repeat_year"> <label><input class="dhx_repeat_radio" type="radio" name="year_type" value="d"/>Every</label><input class="dhx_repeat_text" type="text" name="year_day" value="1" />day<select name="year_month"><option value="0" selected >January<option value="1">February<option value="2">March<option value="3">April<option value="4">May<option value="5">June<option value="6">July<option value="7">August<option value="8">September<option value="9">October<option value="10">November<option value="11">December</select>month<br /> <label><input class="dhx_repeat_radio" type="radio" name="year_type" checked value="w"/>On</label><input class="dhx_repeat_text" type="text" name="year_week2" value="1" /><select name="year_day2"><option value="1" selected >Monday<option value="2">Tuesday<option value="3">Wednesday<option value="4">Thursday<option value="5">Friday<option value="6">Saturday<option value="7">Sunday</select>of<select name="year_month2"><option value="0" selected >January<option value="1">February<option value="2">March<option value="3">April<option value="4">May<option value="5">June<option value="6">July<option value="7">August<option value="8">September<option value="9">October<option value="10">November<option value="11">December</select><br /> </div> </div> <div class="dhx_repeat_divider"></div> <div class="dhx_repeat_right"> <label><input class="dhx_repeat_radio" type="radio" name="end" checked/>No end date</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="end" />After</label><input class="dhx_repeat_text" type="text" name="occurences_count" value="1" />occurrences<br /> <label><input class="dhx_repeat_radio" type="radio" name="end" />End by</label><input class="dhx_repeat_date" type="text" name="date_of_end" value="'+scheduler.config.repeat_date_of_end+'" /><br /> </div> </form> </div> <div style="clear:both"> </div>';
-