summaryrefslogtreecommitdiff
path: root/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler.js
diff options
context:
space:
mode:
Diffstat (limited to 'addons/base_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler.js')
-rw-r--r--addons/base_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler.js3883
1 files changed, 192 insertions, 3691 deletions
diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler.js b/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler.js
index ec0b61b638d..2c78468e81e 100644
--- a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler.js
+++ b/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler.js
@@ -1,3694 +1,195 @@
/*
-dhtmlxScheduler v.2.3
-
-This software is allowed to use under GPL or you need to obtain Commercial or Enterise License
+This software is allowed to use under GPL or you need to obtain Commercial or Enterise License
to use it in not GPL project. Please contact sales@dhtmlx.com for details
-
-(c) DHTMLX Ltd.
-*/
-dhtmlxAjax = {
- get: function (A, C) {
- var B = new dtmlXMLLoaderObject(true);
- B.async = (arguments.length < 3);
- B.waitCall = C;
- B.loadXML(A);
- return B
- },
- post: function (A, C, D) {
- var B = new dtmlXMLLoaderObject(true);
- B.async = (arguments.length < 4);
- B.waitCall = D;
- B.loadXML(A, true, C);
- return B
- },
- getSync: function (A) {
- return this.get(A, null, true)
- },
- postSync: function (A, B) {
- return this.post(A, B, null, true)
- }
-};
-
-function dtmlXMLLoaderObject(B, D, C, A) {
- this.xmlDoc = "";
- if (typeof(C) != "undefined") {
- this.async = C
- } else {
- this.async = true
- }
- this.onloadAction = B || null;
- this.mainObject = D || null;
- this.waitCall = null;
- this.rSeed = A || false;
- return this
-}
-dtmlXMLLoaderObject.prototype.waitLoadFunction = function (B) {
- var A = true;
- this.check = function () {
- if ((B) && (B.onloadAction != null)) {
- if ((!B.xmlDoc.readyState) || (B.xmlDoc.readyState == 4)) {
- if (!A) {
- return
- }
- A = false;
- if (typeof B.onloadAction == "function") {
- B.onloadAction(B.mainObject, null, null, null, B)
- }
- if (B.waitCall) {
- B.waitCall.call(this, B);
- B.waitCall = null
- }
- }
- }
- };
- return this.check
-};
-dtmlXMLLoaderObject.prototype.getXMLTopNode = function (C, A) {
- if (this.xmlDoc.responseXML) {
- var B = this.xmlDoc.responseXML.getElementsByTagName(C);
- if (B.length == 0 && C.indexOf(":") != -1) {
- var B = this.xmlDoc.responseXML.getElementsByTagName((C.split(":"))[1])
- }
- var E = B[0]
- } else {
- var E = this.xmlDoc.documentElement
- }
- if (E) {
- this._retry = false;
- return E
- }
- if ((_isIE) && (!this._retry)) {
- var D = this.xmlDoc.responseText;
- var A = this.xmlDoc;
- this._retry = true;
- this.xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
- this.xmlDoc.async = false;
- this.xmlDoc.loadXML(D);
- return this.getXMLTopNode(C, A)
- }
- dhtmlxError.throwError("LoadXML", "Incorrect XML", [(A || this.xmlDoc), this.mainObject]);
- return document.createElement("DIV")
-};
-dtmlXMLLoaderObject.prototype.loadXMLString = function (B) {
- try {
- var C = new DOMParser();
- this.xmlDoc = C.parseFromString(B, "text/xml")
- } catch (A) {
- this.xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
- this.xmlDoc.async = this.async;
- this.xmlDoc.loadXML(B)
- }
- this.onloadAction(this.mainObject, null, null, null, this);
- if (this.waitCall) {
- this.waitCall();
- this.waitCall = null
- }
-};
-dtmlXMLLoaderObject.prototype.loadXML = function (C, B, A, D) {
- if (this.rSeed) {
- C += ((C.indexOf("?") != -1) ? "&" : "?") + "a_dhx_rSeed=" + (new Date()).valueOf()
- }
- this.filePath = C;
- if ((!_isIE) && (window.XMLHttpRequest)) {
- this.xmlDoc = new XMLHttpRequest()
- } else {
- this.xmlDoc = new ActiveXObject("Microsoft.XMLHTTP")
- }
- if (this.async) {
- this.xmlDoc.onreadystatechange = new this.waitLoadFunction(this)
- }
- this.xmlDoc.open(B ? "POST" : "GET", C, this.async);
- if (D) {
- this.xmlDoc.setRequestHeader("User-Agent", "dhtmlxRPC v0.1 (" + navigator.userAgent + ")");
- this.xmlDoc.setRequestHeader("Content-type", "text/xml")
- } else {
- if (B) {
- this.xmlDoc.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
- }
- }
- this.xmlDoc.setRequestHeader("X-Requested-With", "XMLHttpRequest");
- this.xmlDoc.send(null || A);
- if (!this.async) {
- (new this.waitLoadFunction(this))()
- }
-};
-dtmlXMLLoaderObject.prototype.destructor = function () {
- this.onloadAction = null;
- this.mainObject = null;
- this.xmlDoc = null;
- return null
-};
-dtmlXMLLoaderObject.prototype.xmlNodeToJSON = function (D) {
- var C = {};
- for (var B = 0; B < D.attributes.length; B++) {
- C[D.attributes[B].name] = D.attributes[B].value
- }
- C._tagvalue = D.firstChild ? D.firstChild.nodeValue : "";
- for (var B = 0; B < D.childNodes.length; B++) {
- var A = D.childNodes[B].tagName;
- if (A) {
- if (!C[A]) {
- C[A] = []
- }
- C[A].push(this.xmlNodeToJSON(D.childNodes[B]))
- }
- }
- return C
-};
-
-function callerFunction(A, B) {
- this.handler = function (C) {
- if (!C) {
- C = window.event
- }
- A(C, B);
- return true
- };
- return this.handler
-}
-function getAbsoluteLeft(A) {
- return getOffset(A).left
-}
-function getAbsoluteTop(A) {
- return getOffset(A).top
-}
-function getOffsetSum(A) {
- var C = 0,
- B = 0;
- while (A) {
- C = C + parseInt(A.offsetTop);
- B = B + parseInt(A.offsetLeft);
- A = A.offsetParent
- }
- return {
- top: C,
- left: B
- }
-}
-function getOffsetRect(D) {
- var G = D.getBoundingClientRect();
- var H = document.body;
- var B = document.documentElement;
- var A = window.pageYOffset || B.scrollTop || H.scrollTop;
- var E = window.pageXOffset || B.scrollLeft || H.scrollLeft;
- var F = B.clientTop || H.clientTop || 0;
- var I = B.clientLeft || H.clientLeft || 0;
- var J = G.top + A - F;
- var C = G.left + E - I;
- return {
- top: Math.round(J),
- left: Math.round(C)
- }
-}
-function getOffset(A) {
- if (A.getBoundingClientRect && !_isChrome) {
- return getOffsetRect(A)
- } else {
- return getOffsetSum(A)
- }
-}
-function convertStringToBoolean(A) {
- if (typeof(A) == "string") {
- A = A.toLowerCase()
- }
- switch (A) {
- case "1":
- case "true":
- case "yes":
- case "y":
- case 1:
- case true:
- return true;
- break;
- default:
- return false
- }
-}
-function getUrlSymbol(A) {
- if (A.indexOf("?") != -1) {
- return "&"
- } else {
- return "?"
- }
-}
-function dhtmlDragAndDropObject() {
- if (window.dhtmlDragAndDrop) {
- return window.dhtmlDragAndDrop
- }
- this.lastLanding = 0;
- this.dragNode = 0;
- this.dragStartNode = 0;
- this.dragStartObject = 0;
- this.tempDOMU = null;
- this.tempDOMM = null;
- this.waitDrag = 0;
- window.dhtmlDragAndDrop = this;
- return this
-}
-dhtmlDragAndDropObject.prototype.removeDraggableItem = function (A) {
- A.onmousedown = null;
- A.dragStarter = null;
- A.dragLanding = null
-};
-dhtmlDragAndDropObject.prototype.addDraggableItem = function (A, B) {
- A.onmousedown = this.preCreateDragCopy;
- A.dragStarter = B;
- this.addDragLanding(A, B)
-};
-dhtmlDragAndDropObject.prototype.addDragLanding = function (A, B) {
- A.dragLanding = B
-};
-dhtmlDragAndDropObject.prototype.preCreateDragCopy = function (A) {
- if ((A || event) && (A || event).button == 2) {
- return
- }
- if (window.dhtmlDragAndDrop.waitDrag) {
- window.dhtmlDragAndDrop.waitDrag = 0;
- document.body.onmouseup = window.dhtmlDragAndDrop.tempDOMU;
- document.body.onmousemove = window.dhtmlDragAndDrop.tempDOMM;
- return false
- }
- window.dhtmlDragAndDrop.waitDrag = 1;
- window.dhtmlDragAndDrop.tempDOMU = document.body.onmouseup;
- window.dhtmlDragAndDrop.tempDOMM = document.body.onmousemove;
- window.dhtmlDragAndDrop.dragStartNode = this;
- window.dhtmlDragAndDrop.dragStartObject = this.dragStarter;
- document.body.onmouseup = window.dhtmlDragAndDrop.preCreateDragCopy;
- document.body.onmousemove = window.dhtmlDragAndDrop.callDrag;
- window.dhtmlDragAndDrop.downtime = new Date().valueOf();
- if ((A) && (A.preventDefault)) {
- A.preventDefault();
- return false
- }
- return false
-};
-dhtmlDragAndDropObject.prototype.callDrag = function (C) {
- if (!C) {
- C = window.event
- }
- dragger = window.dhtmlDragAndDrop;
- if ((new Date()).valueOf() - dragger.downtime < 100) {
- return
- }
- if ((C.button == 0) && (_isIE)) {
- return dragger.stopDrag()
- }
- if (!dragger.dragNode && dragger.waitDrag) {
- dragger.dragNode = dragger.dragStartObject._createDragNode(dragger.dragStartNode, C);
- if (!dragger.dragNode) {
- return dragger.stopDrag()
- }
- dragger.dragNode.onselectstart = function () {
- return false
- };
- dragger.gldragNode = dragger.dragNode;
- document.body.appendChild(dragger.dragNode);
- document.body.onmouseup = dragger.stopDrag;
- dragger.waitDrag = 0;
- dragger.dragNode.pWindow = window;
- dragger.initFrameRoute()
- }
- if (dragger.dragNode.parentNode != window.document.body) {
- var A = dragger.gldragNode;
- if (dragger.gldragNode.old) {
- A = dragger.gldragNode.old
- }
- A.parentNode.removeChild(A);
- var B = dragger.dragNode.pWindow;
- if (_isIE) {
- var E = document.createElement("Div");
- E.innerHTML = dragger.dragNode.outerHTML;
- dragger.dragNode = E.childNodes[0]
- } else {
- dragger.dragNode = dragger.dragNode.cloneNode(true)
- }
- dragger.dragNode.pWindow = window;
- dragger.gldragNode.old = dragger.dragNode;
- document.body.appendChild(dragger.dragNode);
- B.dhtmlDragAndDrop.dragNode = dragger.dragNode
- }
- dragger.dragNode.style.left = C.clientX + 15 + (dragger.fx ? dragger.fx * (-1) : 0) + (document.body.scrollLeft || document.documentElement.scrollLeft) + "px";
- dragger.dragNode.style.top = C.clientY + 3 + (dragger.fy ? dragger.fy * (-1) : 0) + (document.body.scrollTop || document.documentElement.scrollTop) + "px";
- if (!C.srcElement) {
- var D = C.target
- } else {
- D = C.srcElement
- }
- dragger.checkLanding(D, C)
-};
-dhtmlDragAndDropObject.prototype.calculateFramePosition = function (E) {
- if (window.name) {
- var C = parent.frames[window.name].frameElement.offsetParent;
- var D = 0;
- var B = 0;
- while (C) {
- D += C.offsetLeft;
- B += C.offsetTop;
- C = C.offsetParent
- }
- if ((parent.dhtmlDragAndDrop)) {
- var A = parent.dhtmlDragAndDrop.calculateFramePosition(1);
- D += A.split("_")[0] * 1;
- B += A.split("_")[1] * 1
- }
- if (E) {
- return D + "_" + B
- } else {
- this.fx = D
- }
- this.fy = B
- }
- return "0_0"
-};
-dhtmlDragAndDropObject.prototype.checkLanding = function (B, A) {
- if ((B) && (B.dragLanding)) {
- if (this.lastLanding) {
- this.lastLanding.dragLanding._dragOut(this.lastLanding)
- }
- this.lastLanding = B;
- this.lastLanding = this.lastLanding.dragLanding._dragIn(this.lastLanding, this.dragStartNode, A.clientX, A.clientY, A);
- this.lastLanding_scr = (_isIE ? A.srcElement : A.target)
- } else {
- if ((B) && (B.tagName != "BODY")) {
- this.checkLanding(B.parentNode, A)
- } else {
- if (this.lastLanding) {
- this.lastLanding.dragLanding._dragOut(this.lastLanding, A.clientX, A.clientY, A)
- }
- this.lastLanding = 0;
- if (this._onNotFound) {
- this._onNotFound()
- }
- }
- }
-};
-dhtmlDragAndDropObject.prototype.stopDrag = function (B, C) {
- dragger = window.dhtmlDragAndDrop;
- if (!C) {
- dragger.stopFrameRoute();
- var A = dragger.lastLanding;
- dragger.lastLanding = null;
- if (A) {
- A.dragLanding._drag(dragger.dragStartNode, dragger.dragStartObject, A, (_isIE ? event.srcElement : B.target))
- }
- }
- dragger.lastLanding = null;
- if ((dragger.dragNode) && (dragger.dragNode.parentNode == document.body)) {
- dragger.dragNode.parentNode.removeChild(dragger.dragNode)
- }
- dragger.dragNode = 0;
- dragger.gldragNode = 0;
- dragger.fx = 0;
- dragger.fy = 0;
- dragger.dragStartNode = 0;
- dragger.dragStartObject = 0;
- document.body.onmouseup = dragger.tempDOMU;
- document.body.onmousemove = dragger.tempDOMM;
- dragger.tempDOMU = null;
- dragger.tempDOMM = null;
- dragger.waitDrag = 0
-};
-dhtmlDragAndDropObject.prototype.stopFrameRoute = function (C) {
- if (C) {
- window.dhtmlDragAndDrop.stopDrag(1, 1)
- }
- for (var A = 0; A < window.frames.length; A++) {
- try {
- if ((window.frames[A] != C) && (window.frames[A].dhtmlDragAndDrop)) {
- window.frames[A].dhtmlDragAndDrop.stopFrameRoute(window)
- }
- } catch (B) {}
- }
- try {
- if ((parent.dhtmlDragAndDrop) && (parent != window) && (parent != C)) {
- parent.dhtmlDragAndDrop.stopFrameRoute(window)
- }
- } catch (B) {}
-};
-dhtmlDragAndDropObject.prototype.initFrameRoute = function (C, D) {
- if (C) {
- window.dhtmlDragAndDrop.preCreateDragCopy({});
- window.dhtmlDragAndDrop.dragStartNode = C.dhtmlDragAndDrop.dragStartNode;
- window.dhtmlDragAndDrop.dragStartObject = C.dhtmlDragAndDrop.dragStartObject;
- window.dhtmlDragAndDrop.dragNode = C.dhtmlDragAndDrop.dragNode;
- window.dhtmlDragAndDrop.gldragNode = C.dhtmlDragAndDrop.dragNode;
- window.document.body.onmouseup = window.dhtmlDragAndDrop.stopDrag;
- window.waitDrag = 0;
- if (((!_isIE) && (D)) && ((!_isFF) || (_FFrv < 1.8))) {
- window.dhtmlDragAndDrop.calculateFramePosition()
- }
- }
- try {
- if ((parent.dhtmlDragAndDrop) && (parent != window) && (parent != C)) {
- parent.dhtmlDragAndDrop.initFrameRoute(window)
- }
- } catch (B) {}
- for (var A = 0; A < window.frames.length; A++) {
- try {
- if ((window.frames[A] != C) && (window.frames[A].dhtmlDragAndDrop)) {
- window.frames[A].dhtmlDragAndDrop.initFrameRoute(window, ((!C || D) ? 1 : 0))
- }
- } catch (B) {}
- }
-};
-var _isFF = false;
-var _isIE = false;
-var _isOpera = false;
-var _isKHTML = false;
-var _isMacOS = false;
-var _isChrome = false;
-if (navigator.userAgent.indexOf("Macintosh") != -1) {
- _isMacOS = true
-}
-if (navigator.userAgent.toLowerCase().indexOf("chrome") > -1) {
- _isChrome = true
-}
-if ((navigator.userAgent.indexOf("Safari") != -1) || (navigator.userAgent.indexOf("Konqueror") != -1)) {
- var _KHTMLrv = parseFloat(navigator.userAgent.substr(navigator.userAgent.indexOf("Safari") + 7, 5));
- if (_KHTMLrv > 525) {
- _isFF = true;
- var _FFrv = 1.9
- } else {
- _isKHTML = true
- }
-} else {
- if (navigator.userAgent.indexOf("Opera") != -1) {
- _isOpera = true;
- _OperaRv = parseFloat(navigator.userAgent.substr(navigator.userAgent.indexOf("Opera") + 6, 3))
- } else {
- if (navigator.appName.indexOf("Microsoft") != -1) {
- _isIE = true;
- if (navigator.appVersion.indexOf("MSIE 8.0") != -1 && document.compatMode != "BackCompat") {
- _isIE = 8
- }
- } else {
- _isFF = true;
- var _FFrv = parseFloat(navigator.userAgent.split("rv:")[1])
- }
- }
-}
-dtmlXMLLoaderObject.prototype.doXPath = function (C, E, D, I) {
- if (_isKHTML || (!_isIE && !window.XPathResult)) {
- return this.doXPathOpera(C, E)
- }
- if (_isIE) {
- if (!E) {
- if (!this.xmlDoc.nodeName) {
- E = this.xmlDoc.responseXML
- } else {
- E = this.xmlDoc
- }
- }
- if (!E) {
- dhtmlxError.throwError("LoadXML", "Incorrect XML", [(E || this.xmlDoc), this.mainObject])
- }
- if (D != null) {
- E.setProperty("SelectionNamespaces", "xmlns:xsl='" + D + "'")
- }
- if (I == "single") {
- return E.selectSingleNode(C)
- } else {
- return E.selectNodes(C) || new Array(0)
- }
- } else {
- var A = E;
- if (!E) {
- if (!this.xmlDoc.nodeName) {
- E = this.xmlDoc.responseXML
- } else {
- E = this.xmlDoc
- }
- }
- if (!E) {
- dhtmlxError.throwError("LoadXML", "Incorrect XML", [(E || this.xmlDoc), this.mainObject])
- }
- if (E.nodeName.indexOf("document") != -1) {
- A = E
- } else {
- A = E;
- E = E.ownerDocument
- }
- var G = XPathResult.ANY_TYPE;
- if (I == "single") {
- G = XPathResult.FIRST_ORDERED_NODE_TYPE
- }
- var F = new Array();
- var B = E.evaluate(C, A, function (J) {
- return D
- }, G, null);
- if (G == XPathResult.FIRST_ORDERED_NODE_TYPE) {
- return B.singleNodeValue
- }
- var H = B.iterateNext();
- while (H) {
- F[F.length] = H;
- H = B.iterateNext()
- }
- return F
- }
-};
-
-function _dhtmlxError(B, A, C) {
- if (!this.catches) {
- this.catches = new Array()
- }
- return this
-}
-_dhtmlxError.prototype.catchError = function (B, A) {
- this.catches[B] = A
-};
-_dhtmlxError.prototype.throwError = function (B, A, C) {
- if (this.catches[B]) {
- return this.catches[B](B, A, C)
- }
- if (this.catches.ALL) {
- return this.catches.ALL(B, A, C)
- }
- alert("Error type: " + arguments[0] + "\nDescription: " + arguments[1]);
- return null
-};
-window.dhtmlxError = new _dhtmlxError();
-dtmlXMLLoaderObject.prototype.doXPathOpera = function (C, A) {
- var E = C.replace(/[\/]+/gi, "/").split("/");
- var D = null;
- var B = 1;
- if (!E.length) {
- return []
- }
- if (E[0] == ".") {
- D = [A]
- } else {
- if (E[0] == "") {
- D = (this.xmlDoc.responseXML || this.xmlDoc).getElementsByTagName(E[B].replace(/\[[^\]]*\]/g, ""));
- B++
- } else {
- return []
- }
- }
- for (B; B < E.length; B++) {
- D = this._getAllNamedChilds(D, E[B])
- }
- if (E[B - 1].indexOf("[") != -1) {
- D = this._filterXPath(D, E[B - 1])
- }
- return D
-};
-dtmlXMLLoaderObject.prototype._filterXPath = function (B, A) {
- var D = new Array();
- var A = A.replace(/[^\[]*\[\@/g, "").replace(/[\[\]\@]*/g, "");
- for (var C = 0; C < B.length; C++) {
- if (B[C].getAttribute(A)) {
- D[D.length] = B[C]
- }
- }
- return D
-};
-dtmlXMLLoaderObject.prototype._getAllNamedChilds = function (B, A) {
- var E = new Array();
- if (_isKHTML) {
- A = A.toUpperCase()
- }
- for (var D = 0; D < B.length; D++) {
- for (var C = 0; C < B[D].childNodes.length; C++) {
- if (_isKHTML) {
- if (B[D].childNodes[C].tagName && B[D].childNodes[C].tagName.toUpperCase() == A) {
- E[E.length] = B[D].childNodes[C]
- }
- } else {
- if (B[D].childNodes[C].tagName == A) {
- E[E.length] = B[D].childNodes[C]
- }
- }
- }
- }
- return E
-};
-
-function dhtmlXHeir(B, A) {
- for (var C in A) {
- if (typeof(A[C]) == "function") {
- B[C] = A[C]
- }
- }
- return B
-}
-function dhtmlxEvent(B, C, A) {
- if (B.addEventListener) {
- B.addEventListener(C, A, false)
- } else {
- if (B.attachEvent) {
- B.attachEvent("on" + C, A)
- }
- }
-}
-dtmlXMLLoaderObject.prototype.xslDoc = null;
-dtmlXMLLoaderObject.prototype.setXSLParamValue = function (B, C, D) {
- if (!D) {
- D = this.xslDoc
- }
- if (D.responseXML) {
- D = D.responseXML
- }
- var A = this.doXPath("/xsl:stylesheet/xsl:variable[@name='" + B + "']", D, "http://www.w3.org/1999/XSL/Transform", "single");
- if (A != null) {
- A.firstChild.nodeValue = C
- }
-};
-dtmlXMLLoaderObject.prototype.doXSLTransToObject = function (D, B) {
- if (!D) {
- D = this.xslDoc
- }
- if (D.responseXML) {
- D = D.responseXML
- }
- if (!B) {
- B = this.xmlDoc
- }
- if (B.responseXML) {
- B = B.responseXML
- }
- if (!_isIE) {
- if (!this.XSLProcessor) {
- this.XSLProcessor = new XSLTProcessor();
- this.XSLProcessor.importStylesheet(D)
- }
- var A = this.XSLProcessor.transformToDocument(B)
- } else {
- var A = new ActiveXObject("Msxml2.DOMDocument.3.0");
- try {
- B.transformNodeToObject(D, A)
- } catch (C) {
- A = B.transformNode(D)
- }
- }
- return A
-};
-dtmlXMLLoaderObject.prototype.doXSLTransToString = function (C, B) {
- var A = this.doXSLTransToObject(C, B);
- if (typeof(A) == "string") {
- return A
- }
- return this.doSerialization(A)
-};
-dtmlXMLLoaderObject.prototype.doSerialization = function (B) {
- if (!B) {
- B = this.xmlDoc
- }
- if (B.responseXML) {
- B = B.responseXML
- }
- if (!_isIE) {
- var A = new XMLSerializer();
- return A.serializeToString(B)
- } else {
- return B.xml
- }
-};
-dhtmlxEventable = function (obj) {
- obj.dhx_SeverCatcherPath = "";
- obj.attachEvent = function (name, catcher, callObj) {
- name = "ev_" + name.toLowerCase();
- if (!this[name]) {
- this[name] = new this.eventCatcher(callObj || this)
- }
- return (name + ":" + this[name].addEvent(catcher))
- };
- obj.callEvent = function (name, arg0) {
- name = "ev_" + name.toLowerCase();
- if (this[name]) {
- return this[name].apply(this, arg0)
- }
- return true
- };
- obj.checkEvent = function (name) {
- return ( !! this["ev_" + name.toLowerCase()])
- };
- obj.eventCatcher = function (obj) {
- var dhx_catch = [];
- var z = function () {
- var res = true;
- for (var i = 0; i < dhx_catch.length; i++) {
- if (dhx_catch[i] != null) {
- var zr = dhx_catch[i].apply(obj, arguments);
- res = res && zr
- }
- }
- return res
- };
- z.addEvent = function (ev) {
- if (typeof(ev) != "function") {
- ev = eval(ev)
- }
- if (ev) {
- return dhx_catch.push(ev) - 1
- }
- return false
- };
- z.removeEvent = function (id) {
- dhx_catch[id] = null
- };
- return z
- };
- obj.detachEvent = function (id) {
- if (id != false) {
- var list = id.split(":");
- this[list[0]].removeEvent(list[1])
- }
- }
-};
-
-function dataProcessor(A) {
- this.serverProcessor = A;
- this.action_param = "!nativeeditor_status";
- this.object = null;
- this.updatedRows = [];
- this.autoUpdate = true;
- this.updateMode = "cell";
- this._tMode = "GET";
- this.post_delim = "_";
- this._waitMode = 0;
- this._in_progress = {};
- this._invalid = {};
- this.mandatoryFields = [];
- this.messages = [];
- this.styles = {
- updated: "font-weight:bold;",
- inserted: "font-weight:bold;",
- deleted: "text-decoration : line-through;",
- invalid: "background-color:FFE0E0;",
- invalid_cell: "border-bottom:2px solid red;",
- error: "color:red;",
- clear: "font-weight:normal;text-decoration:none;"
- };
- this.enableUTFencoding(true);
- dhtmlxEventable(this);
- return this
-}
-dataProcessor.prototype = {
- setTransactionMode: function (B, A) {
- this._tMode = B;
- this._tSend = A
- },
- escape: function (A) {
- if (this._utf) {
- return encodeURIComponent(A)
- } else {
- return escape(A)
- }
- },
- enableUTFencoding: function (A) {
- this._utf = convertStringToBoolean(A)
- },
- setDataColumns: function (A) {
- this._columns = (typeof A == "string") ? A.split(",") : A
- },
- getSyncState: function () {
- return !this.updatedRows.length
- },
- enableDataNames: function (A) {
- this._endnm = convertStringToBoolean(A)
- },
- enablePartialDataSend: function (A) {
- this._changed = convertStringToBoolean(A)
- },
- setUpdateMode: function (B, A) {
- this.autoUpdate = (B == "cell");
- this.updateMode = B;
- this.dnd = A
- },
- ignore: function (B, A) {
- this._silent_mode = true;
- B.call(A || window);
- this._silent_mode = false
- },
- setUpdated: function (D, C, E) {
- if (this._silent_mode) {
- return
- }
- var B = this.findRow(D);
- E = E || "updated";
- var A = this.obj.getUserData(D, this.action_param);
- if (A && E == "updated") {
- E = A
- }
- if (C) {
- this.set_invalid(D, false);
- this.updatedRows[B] = D;
- this.obj.setUserData(D, this.action_param, E);
- if (this._in_progress[D]) {
- this._in_progress[D] = "wait"
- }
- } else {
- if (!this.is_invalid(D)) {
- this.updatedRows.splice(B, 1);
- this.obj.setUserData(D, this.action_param, "")
- }
- }
- if (!C) {
- this._clearUpdateFlag(D)
- }
- this.markRow(D, C, E);
- if (C && this.autoUpdate) {
- this.sendData(D)
- }
- },
- _clearUpdateFlag: function (A) {},
- markRow: function (F, C, E) {
- var D = "";
- var B = this.is_invalid(F);
- if (B) {
- D = this.styles[B];
- C = true
- }
- if (this.callEvent("onRowMark", [F, C, E, B])) {
- D = this.styles[C ? E : "clear"] + D;
- this.obj[this._methods[0]](F, D);
- if (B && B.details) {
- D += this.styles[B + "_cell"];
- for (var A = 0; A < B.details.length; A++) {
- if (B.details[A]) {
- this.obj[this._methods[1]](F, A, D)
- }
- }
- }
- }
- },
- getState: function (A) {
- return this.obj.getUserData(A, this.action_param)
- },
- is_invalid: function (A) {
- return this._invalid[A]
- },
- set_invalid: function (C, B, A) {
- if (A) {
- B = {
- value: B,
- details: A,
- toString: function () {
- return this.value.toString()
- }
- }
- }
- this._invalid[C] = B
- },
- checkBeforeUpdate: function (A) {
- return true
- },
- sendData: function (A) {
- if (this._waitMode && (this.obj.mytype == "tree" || this.obj._h2)) {
- return
- }
- if (this.obj.editStop) {
- this.obj.editStop()
- }
- if (typeof A == "undefined" || this._tSend) {
- return this.sendAllData()
- }
- if (this._in_progress[A]) {
- return false
- }
- this.messages = [];
- if (!this.checkBeforeUpdate(A) && this.callEvent("onValidatationError", [A, this.messages])) {
- return false
- }
- this._beforeSendData(this._getRowData(A), A)
- },
- _beforeSendData: function (A, B) {
- if (!this.callEvent("onBeforeUpdate", [B, this.getState(B), A])) {
- return false
- }
- this._sendData(A, B)
- },
- serialize: function (D, E) {
- if (typeof D == "string") {
- return D
- }
- if (typeof E != "undefined") {
- return this.serialize_one(D, "")
- } else {
- var A = [];
- var C = [];
- for (var B in D) {
- if (D.hasOwnProperty(B)) {
- A.push(this.serialize_one(D[B], B + this.post_delim));
- C.push(B)
- }
- }
- A.push("ids=" + this.escape(C.join(",")));
- return A.join("&")
- }
- },
- serialize_one: function (D, B) {
- if (typeof D == "string") {
- return D
- }
- var A = [];
- for (var C in D) {
- if (D.hasOwnProperty(C)) {
- A.push(this.escape((B || "") + C) + "=" + this.escape(D[C]))
- }
- }
- return A.join("&")
- },
- _sendData: function (B, C) {
- if (!B) {
- return
- }
- if (!this.callEvent("onBeforeDataSending", C ? [C, this.getState(C), B] : [null, null, B])) {
- return false
- }
- if (C) {
- this._in_progress[C] = (new Date()).valueOf()
- }
- var A = new dtmlXMLLoaderObject(this.afterUpdate, this, true);
- var D = this.serverProcessor + (this._user ? (getUrlSymbol(this.serverProcessor) + ["dhx_user=" + this._user, "dhx_version=" + this.obj.getUserData(0, "version")].join("&")) : "");
- if (this._tMode != "POST") {
- A.loadXML(D + ((D.indexOf("?") != -1) ? "&" : "?") + this.serialize(B, C))
- } else {
- A.loadXML(D, true, this.serialize(B, C))
- }
- this._waitMode++
- },
- sendAllData: function () {
- if (!this.updatedRows.length) {
- return
- }
- this.messages = [];
- var B = true;
- for (var A = 0; A < this.updatedRows.length; A++) {
- B &= this.checkBeforeUpdate(this.updatedRows[A])
- }
- if (!B && !this.callEvent("onValidatationError", ["", this.messages])) {
- return false
- }
- if (this._tSend) {
- this._sendData(this._getAllData())
- } else {
- for (var A = 0; A < this.updatedRows.length; A++) {
- if (!this._in_progress[this.updatedRows[A]]) {
- if (this.is_invalid(this.updatedRows[A])) {
- continue
- }
- this._beforeSendData(this._getRowData(this.updatedRows[A]), this.updatedRows[A]);
- if (this._waitMode && (this.obj.mytype == "tree" || this.obj._h2)) {
- return
- }
- }
- }
- }
- },
- _getAllData: function (D) {
- var B = {};
- var A = false;
- for (var C = 0; C < this.updatedRows.length; C++) {
- var E = this.updatedRows[C];
- if (this._in_progress[E] || this.is_invalid(E)) {
- continue
- }
- if (!this.callEvent("onBeforeUpdate", [E, this.getState(E)])) {
- continue
- }
- B[E] = this._getRowData(E, E + this.post_delim);
- A = true;
- this._in_progress[E] = (new Date()).valueOf()
- }
- return A ? B : null
- },
- setVerificator: function (B, A) {
- this.mandatoryFields[B] = A || (function (C) {
- return (C != "")
- })
- },
- clearVerificator: function (A) {
- this.mandatoryFields[A] = false
- },
- findRow: function (B) {
- var A = 0;
- for (A = 0; A < this.updatedRows.length; A++) {
- if (B == this.updatedRows[A]) {
- break
- }
- }
- return A
- },
- defineAction: function (A, B) {
- if (!this._uActions) {
- this._uActions = []
- }
- this._uActions[A] = B
- },
- afterUpdateCallback: function (B, G, F, E) {
- var A = B;
- var D = (F != "error" && F != "invalid");
- if (!D) {
- this.set_invalid(B, F)
- }
- if ((this._uActions) && (this._uActions[F]) && (!this._uActions[F](E))) {
- return (delete this._in_progress[A])
- }
- if (this._in_progress[A] != "wait") {
- this.setUpdated(B, false)
- }
- var C = B;
- switch (F) {
- case "inserted":
- case "insert":
- if (G != B) {
- this.obj[this._methods[2]](B, G);
- B = G
- }
- break;
- case "delete":
- case "deleted":
- this.obj.setUserData(B, this.action_param, "true_deleted");
- this.obj[this._methods[3]](B);
- delete this._in_progress[A];
- return this.callEvent("onAfterUpdate", [B, F, G, E]);
- break
- }
- if (this._in_progress[A] != "wait") {
- if (D) {
- this.obj.setUserData(B, this.action_param, "")
- }
- delete this._in_progress[A]
- } else {
- delete this._in_progress[A];
- this.setUpdated(G, true, this.obj.getUserData(B, this.action_param))
- }
- this.callEvent("onAfterUpdate", [B, F, G, E])
- },
- afterUpdate: function (G, K, I, H, F) {
- F.getXMLTopNode("data");
- if (!F.xmlDoc.responseXML) {
- return
- }
- var J = F.doXPath("//data/action");
- for (var D = 0; D < J.length; D++) {
- var E = J[D];
- var C = E.getAttribute("type");
- var A = E.getAttribute("sid");
- var B = E.getAttribute("tid");
- G.afterUpdateCallback(A, B, C, E)
- }
- G.finalizeUpdate()
- },
- finalizeUpdate: function () {
- if (this._waitMode) {
- this._waitMode--
- }
- if ((this.obj.mytype == "tree" || this.obj._h2) && this.updatedRows.length) {
- this.sendData()
- }
- this.callEvent("onAfterUpdateFinish", []);
- if (!this.updatedRows.length) {
- this.callEvent("onFullSync", [])
- }
- },
- init: function (A) {
- this.obj = A;
- if (this.obj._dp_init) {
- this.obj._dp_init(this)
- }
- },
- setOnAfterUpdate: function (A) {
- this.attachEvent("onAfterUpdate", A)
- },
- enableDebug: function (A) {},
- setOnBeforeUpdateHandler: function (A) {
- this.attachEvent("onBeforeDataSending", A)
- },
-/* starts autoupdate mode
- @param interval
- time interval for sending update requests
- */
- setAutoUpdate: function (C, B) {
- C = C || 2000;
- this._user = B || (new Date()).valueOf();
- this._need_update = false;
- this._loader = null;
- this._update_busy = false;
- this.attachEvent("onAfterUpdate", function (D, F, G, E) {
- this.afterAutoUpdate(D, F, G, E)
- });
- this.attachEvent("onFullSync", function () {
- this.fullSync()
- });
- var A = this;
- window.setInterval(function () {
- A.loadUpdate()
- }, C)
- },
-/* process updating request answer
- if status == collision version is depricated
- set flag for autoupdating immidiatly
- */
- afterAutoUpdate: function (A, C, D, B) {
- if (C == "collision") {
- this._need_update = true;
- return false
- } else {
- return true
- }
- },
-/* callback function for onFillSync event
- call update function if it's need
- */
- fullSync: function () {
- if (this._need_update == true) {
- this._need_update = false;
- this.loadUpdate()
- }
- return true
- },
-/* sends query to the server and call callback function
- */
- getUpdates: function (A, B) {
- if (this._update_busy) {
- return false
- } else {
- this._update_busy = true
- }
- this._loader = this._loader || new dtmlXMLLoaderObject(true);
- this._loader.async = true;
- this._loader.waitCall = B;
- this._loader.loadXML(A)
- },
-/* returns xml node value
- @param node
- xml node
- */
- _v: function (A) {
- if (A.firstChild) {
- return A.firstChild.nodeValue
- }
- return ""
- },
-/* returns values array of xml nodes array
- @param arr
- array of xml nodes
- */
- _a: function (A) {
- var C = [];
- for (var B = 0; B < A.length; B++) {
- C[B] = this._v(A[B])
- }
- return C
- },
-/* loads updates and processes them
- */
- loadUpdate: function () {
- var B = this;
- var A = this.obj.getUserData(0, "version");
- var C = this.serverProcessor + getUrlSymbol(this.serverProcessor) + ["dhx_user=" + this._user, "dhx_version=" + A].join("&");
- C = C.replace("editing=true&", "");
- this.getUpdates(C, function () {
- var F = B._loader.doXPath("//userdata");
- B.obj.setUserData(0, "version", B._v(F[0]));
- var D = B._loader.doXPath("//update");
- if (D.length) {
- B._silent_mode = true;
- for (var G = 0; G < D.length; G++) {
- var E = D[G].getAttribute("status");
- var I = D[G].getAttribute("id");
- var H = D[G].getAttribute("parent");
- switch (E) {
- case "inserted":
- B.callEvent("insertCallback", [D[G], I, H]);
- break;
- case "updated":
- B.callEvent("updateCallback", [D[G], I, H]);
- break;
- case "deleted":
- B.callEvent("deleteCallback", [D[G], I, H]);
- break
- }
- }
- B._silent_mode = false
- }
- B._update_busy = false;
- B = null
- })
- }
-};
-if (window.dhtmlXGridObject) {
- dhtmlXGridObject.prototype._init_point_connector = dhtmlXGridObject.prototype._init_point;
- dhtmlXGridObject.prototype._init_point = function () {
- var A = function (E) {
- E = E.replace(/(\?|\&)connector[^\f]*/g, "");
- return E + (E.indexOf("?") != -1 ? "&" : "?") + "connector=true" + (mygrid.hdr.rows.length > 0 ? "&dhx_no_header=1" : "")
- };
- var D = function (E) {
- return A(E) + (this._connector_sorting || "") + (this._connector_filter || "")
- };
- var C = function (F, G, E) {
- this._connector_sorting = "&dhx_sort[" + G + "]=" + E;
- return D.call(this, F)
- };
- var B = function (F, E, H) {
- for (var G = 0; G < E.length; G++) {
- E[G] = "dhx_filter[" + E[G] + "]=" + encodeURIComponent(H[G])
- }
- this._connector_filter = "&" + E.join("&");
- return D.call(this, F)
- };
- this.attachEvent("onCollectValues", function (E) {
- if (this._con_f_used[E]) {
- if (typeof(this._con_f_used[E]) == "object") {
- return this._con_f_used[E]
- } else {
- return false
- }
- }
- return true
- });
- this.attachEvent("onDynXLS", function () {
- this.xmlFileUrl = D.call(this, this.xmlFileUrl);
- return true
- });
- this.attachEvent("onBeforeSorting", function (H, G, F) {
- if (G == "connector") {
- var E = this;
- this.clearAndLoad(C.call(this, this.xmlFileUrl, H, F), function () {
- E.setSortImgState(true, H, F)
- });
- return false
- }
- return true
- });
- this.attachEvent("onFilterStart", function (F, E) {
- if (this._con_f_used.length) {
- this.clearAndLoad(B.call(this, this.xmlFileUrl, F, E));
- return false
- }
- return true
- });
- this.attachEvent("onXLE", function (F, E, H, G) {
- if (!G) {
- return
- }
- });
- if (this._init_point_connector) {
- this._init_point_connector()
- }
- };
- dhtmlXGridObject.prototype._con_f_used = [];
- dhtmlXGridObject.prototype._in_header_connector_text_filter = function (B, A) {
- if (!this._con_f_used[A]) {
- this._con_f_used[A] = 1
- }
- return this._in_header_text_filter(B, A)
- };
- dhtmlXGridObject.prototype._in_header_connector_select_filter = function (B, A) {
- if (!this._con_f_used[A]) {
- this._con_f_used[A] = 2
- }
- return this._in_header_select_filter(B, A)
- };
- dhtmlXGridObject.prototype.load_connector = dhtmlXGridObject.prototype.load;
- dhtmlXGridObject.prototype.load = function (B, E, D) {
- if (!this._colls_loaded && this.cellType) {
- var A = [];
- for (var C = 0; C < this.cellType.length; C++) {
- if (this.cellType[C].indexOf("co") == 0 || this._con_f_used[C] == 2) {
- A.push(C)
- }
- }
- if (A.length) {
- arguments[0] += (arguments[0].indexOf("?") != -1 ? "&" : "?") + "connector=true&dhx_colls=" + A.join(",")
- }
- }
- return this.load_connector.apply(this, arguments)
- };
- dhtmlXGridObject.prototype._parseHead_connector = dhtmlXGridObject.prototype._parseHead;
- dhtmlXGridObject.prototype._parseHead = function (A, L, I) {
- this._parseHead_connector.apply(this, arguments);
- if (!this._colls_loaded) {
- var J = this.xmlLoader.doXPath("./coll_options", arguments[0]);
- for (var F = 0; F < J.length; F++) {
- var H = J[F].getAttribute("for");
- var K = [];
- var C = null;
- if (this.cellType[H] == "combo") {
- C = this.getColumnCombo(H)
- }
- if (this.cellType[H].indexOf("co") == 0) {
- C = this.getCombo(H)
- }
- var E = this.xmlLoader.doXPath("./item", J[F]);
- for (var D = 0; D < E.length; D++) {
- var B = E[D].getAttribute("value");
- if (C) {
- var G = E[D].getAttribute("label") || B;
- if (C.addOption) {
- C.addOption([
- [B, G]
- ])
- } else {
- C.put(B, G)
- }
- K[K.length] = G
- } else {
- K[K.length] = B
- }
- }
- if (this._con_f_used[H * 1]) {
- this._con_f_used[H * 1] = K
- }
- }
- this._colls_loaded = true
- }
- }
-}
-if (window.dataProcessor) {
- dataProcessor.prototype.init_original = dataProcessor.prototype.init;
- dataProcessor.prototype.init = function (A) {
- this.init_original(A);
- A._dataprocessor = this;
- this.setTransactionMode("POST", true);
- this.serverProcessor += (this.serverProcessor.indexOf("?") != -1 ? "&" : "?") + "editing=true"
- }
-}
-dhtmlxError.catchError("LoadXML", function (B, A, C) {
- alert(C[0].responseText)
-});
-window.dhtmlXScheduler = window.scheduler = {
- version: 2.2
-};
-dhtmlxEventable(scheduler);
-scheduler.init = function (C, A, B) {
- A = A || (new Date());
- B = B || "week";
- this._obj = (typeof C == "string") ? document.getElementById(C) : C;
- this._els = [];
- this._scroll = true;
- this._quirks = (_isIE && document.compatMode == "BackCompat");
- this._quirks7 = (_isIE && navigator.appVersion.indexOf("MSIE 8") == -1);
- this.get_elements();
- this.init_templates();
- this.set_actions();
- dhtmlxEvent(window, "resize", function () {
- window.clearTimeout(scheduler._resize_timer);
- scheduler._resize_timer = window.setTimeout(function () {
- if (scheduler.callEvent("onSchedulerResize", [])) {
- scheduler.update_view()
- }
- }, 100)
- });
- this.set_sizes();
- this.setCurrentView(A, B)
-};
-scheduler.xy = {
- nav_height: 22,
- min_event_height: 40,
- scale_width: 50,
- bar_height: 20,
- scroll_width: 18,
- scale_height: 20,
- month_scale_height: 20,
- menu_width: 25,
- margin_top: 0,
- margin_left: 0,
- editor_width: 140
-};
-scheduler.keys = {
- edit_save: 13,
- edit_cancel: 27
-};
-scheduler.set_sizes = function () {
- var B = this._x = this._obj.clientWidth - this.xy.margin_left;
- var D = this._y = this._obj.clientHeight - this.xy.margin_top;
- var E = this._table_view ? 0 : (this.xy.scale_width + this.xy.scroll_width);
- var A = this._table_view ? -1 : this.xy.scale_width;
- this.set_xy(this._els.dhx_cal_navline[0], B, this.xy.nav_height, 0, 0);
- this.set_xy(this._els.dhx_cal_header[0], B - E, this.xy.scale_height, A, this.xy.nav_height + (this._quirks ? -1 : 1));
- var F = this._els.dhx_cal_navline[0].offsetHeight;
- if (F > 0) {
- this.xy.nav_height = F
- }
- var C = this.xy.scale_height + this.xy.nav_height + (this._quirks ? -2 : 0);
- this.set_xy(this._els.dhx_cal_data[0], B, D - (C + 2), 0, C + 2)
-};
-scheduler.set_xy = function (D, B, C, A, E) {
- D.style.width = Math.max(0, B) + "px";
- D.style.height = Math.max(0, C) + "px";
- if (arguments.length > 3) {
- D.style.left = A + "px";
- D.style.top = E + "px"
- }
-};
-scheduler.get_elements = function () {
- var D = this._obj.getElementsByTagName("DIV");
- for (var C = 0; C < D.length; C++) {
- var A = D[C].className;
- if (!this._els[A]) {
- this._els[A] = []
- }
- this._els[A].push(D[C]);
- var B = scheduler.locale.labels[D[C].getAttribute("name") || A];
- if (B) {
- D[C].innerHTML = B
- }
- }
-};
-scheduler.set_actions = function () {
- for (var A in this._els) {
- if (this._click[A]) {
- for (var B = 0; B < this._els[A].length; B++) {
- this._els[A][B].onclick = scheduler._click[A]
- }
- }
- }
- this._obj.onselectstart = function (C) {
- return false
- };
- this._obj.onmousemove = function (C) {
- scheduler._on_mouse_move(C || event)
- };
- this._obj.onmousedown = function (C) {
- scheduler._on_mouse_down(C || event)
- };
- this._obj.onmouseup = function (C) {
- scheduler._on_mouse_up(C || event)
- };
- this._obj.ondblclick = function (C) {
- scheduler._on_dbl_click(C || event)
- }
-};
-scheduler.select = function (A) {
- if (this._table_view || !this.getEvent(A)._timed) {
- return
- }
- if (this._select_id == A) {
- return
- }
- this.editStop(false);
- this.unselect();
- this._select_id = A;
- this.updateEvent(A)
-};
-scheduler.unselect = function (B) {
- if (B && B != this._select_id) {
- return
- }
- var A = this._select_id;
- this._select_id = null;
- if (A) {
- this.updateEvent(A)
- }
-};
-scheduler.getState = function () {
- return {
- mode: this._mode,
- date: this._date,
- min_date: this._min_date,
- max_date: this._max_date,
- editor_id: this._edit_id,
- lightbox_id: this._lightbox_id
- }
-};
-scheduler._click = {
- dhx_cal_data: function (C) {
- var B = C ? C.target : event.srcElement;
- var D = scheduler._locate_event(B);
- C = C || event;
- if ((D && !scheduler.callEvent("onClick", [D, C])) || scheduler.config.readonly) {
- return
- }
- if (D) {
- scheduler.select(D);
- var A = B.className;
- if (A.indexOf("_icon") != -1) {
- scheduler._click.buttons[A.split(" ")[1].replace("icon_", "")](D)
- }
- } else {
- scheduler._close_not_saved()
- }
- },
- dhx_cal_prev_button: function () {
- scheduler._click.dhx_cal_next_button(0, -1)
- },
- dhx_cal_next_button: function (B, A) {
- scheduler.setCurrentView(scheduler.date.add(scheduler.date[scheduler._mode + "_start"](scheduler._date), (A || 1), scheduler._mode))
- },
- dhx_cal_today_button: function () {
- scheduler.setCurrentView(new Date())
- },
- dhx_cal_tab: function () {
- var A = this.getAttribute("name").split("_")[0];
- scheduler.setCurrentView(scheduler._date, A)
- },
- buttons: {
- "delete": function (B) {
- var A = scheduler.locale.labels.confirm_deleting;
- if (!A || confirm(A)) {
- scheduler.deleteEvent(B)
- }
- },
- edit: function (A) {
- scheduler.edit(A)
- },
- save: function (A) {
- scheduler.editStop(true)
- },
- details: function (A) {
- scheduler.showLightbox(A)
- },
- cancel: function (A) {
- scheduler.editStop(false)
- }
- }
-};
-scheduler.addEventNow = function (G, B, D) {
- var C = {};
- if (typeof G == "object") {
- C = G;
- G = null
- }
- var E = (this.config.event_duration || this.config.time_step) * 60000;
- if (!G) {
- G = Math.round((new Date()).valueOf() / E) * E
- }
- var A = new Date(G);
- if (!B) {
- var F = this.config.first_hour;
- if (F > A.getHours()) {
- A.setHours(F);
- G = A.valueOf()
- }
- B = G + E
- }
- C.start_date = C.start_date || A;
- C.end_date = C.end_date || new Date(B);
- C.text = C.text || this.locale.labels.new_event;
- C.id = this._drag_id = this.uid();
- this._drag_mode = "new-size";
- this._loading = true;
- this.addEvent(C);
- this.callEvent("onEventCreated", [this._drag_id, D]);
- this._loading = false;
- this._drag_event = {};
- this._on_mouse_up(D)
-};
-scheduler._on_dbl_click = function (C, D) {
- D = D || (C.target || C.srcElement);
- if (this.config.readonly) {
- return
- }
- var A = D.className.split(" ")[0];
- switch (A) {
- case "dhx_scale_holder":
- case "dhx_scale_holder_now":
- case "dhx_month_body":
- if (!scheduler.config.dblclick_create) {
- break
- }
- var G = this._mouse_coords(C);
- var F = this._min_date.valueOf() + (G.y * this.config.time_step + (this._table_view ? 0 : G.x) * 24 * 60) * 60000;
- F = this._correct_shift(F);
- this.addEventNow(F, null, C);
- break;
- case "dhx_body":
- case "dhx_cal_event_line":
- case "dhx_cal_event_clear":
- var E = this._locate_event(D);
- if (!this.callEvent("onDblClick", [E, C])) {
- return
- }
- if (this.config.details_on_dblclick || this._table_view || !this.getEvent(E)._timed) {
- this.showLightbox(E)
- } else {
- this.edit(E)
- }
- break;
- case "":
- if (D.parentNode) {
- return scheduler._on_dbl_click(C, D.parentNode)
- }
- default:
- var B = this["dblclick_" + A];
- if (B) {
- B.call(this, C)
- }
- break
- }
-};
-scheduler._mouse_coords = function (D) {
- var F;
- var A = document.body;
- var E = document.documentElement;
- if (D.pageX || D.pageY) {
- F = {
- x: D.pageX,
- y: D.pageY
- }
- } else {
- F = {
- x: D.clientX + (A.scrollLeft || E.scrollLeft || 0) - A.clientLeft,
- y: D.clientY + (A.scrollTop || E.scrollTop || 0) - A.clientTop
- }
- }
- F.x -= getAbsoluteLeft(this._obj) + (this._table_view ? 0 : this.xy.scale_width);
- F.y -= getAbsoluteTop(this._obj) + this.xy.nav_height + (this._dy_shift || 0) + this.xy.scale_height - this._els.dhx_cal_data[0].scrollTop;
- F.ev = D;
- var C = this["mouse_" + this._mode];
- if (C) {
- return C.call(this, F)
- }
- if (!this._table_view) {
- F.x = Math.max(0, Math.ceil(F.x / this._cols[0]) - 1);
- F.y = Math.max(0, Math.ceil(F.y * 60 / (this.config.time_step * this.config.hour_size_px)) - 1) + this.config.first_hour * (60 / this.config.time_step)
- } else {
- var B = 0;
- for (B = 1; B < this._colsS.heights.length; B++) {
- if (this._colsS.heights[B] > F.y) {
- break
- }
- }
- F.y = (Math.max(0, Math.ceil(F.x / this._cols[0]) - 1) + Math.max(0, B - 1) * 7) * 24 * 60 / this.config.time_step;
- F.x = 0
- }
- return F
-};
-scheduler._close_not_saved = function () {
- if (new Date().valueOf() - (scheduler._new_event || 0) > 500 && scheduler._edit_id) {
- var A = scheduler.locale.labels.confirm_closing;
- if (!A || confirm(A)) {
- scheduler.editStop(scheduler.config.positive_closing)
- }
- }
-};
-scheduler._correct_shift = function (B, A) {
- return B -= ((new Date(scheduler._min_date)).getTimezoneOffset() - (new Date(B)).getTimezoneOffset()) * 60000 * (A ? -1 : 1)
-};
-scheduler._on_mouse_move = function (F) {
- if (this._drag_mode) {
- var G = this._mouse_coords(F);
- if (!this._drag_pos || this._drag_pos.x != G.x || this._drag_pos.y != G.y) {
- if (this._edit_id != this._drag_id) {
- this._close_not_saved()
- }
- this._drag_pos = G;
- if (this._drag_mode == "create") {
- this._close_not_saved();
- this._loading = true;
- var B = this._min_date.valueOf() + (G.y * this.config.time_step + (this._table_view ? 0 : G.x) * 24 * 60) * 60000;
- B = this._correct_shift(B);
- if (!this._drag_start) {
- this._drag_start = B;
- return
- }
- var E = B;
- if (E == this._drag_start) {
- return
- }
- this._drag_id = this.uid();
- this.addEvent(new Date(this._drag_start), new Date(E), this.locale.labels.new_event, this._drag_id, G.fields);
- this.callEvent("onEventCreated", [this._drag_id, F]);
- this._loading = false;
- this._drag_mode = "new-size"
- }
- var H = this.getEvent(this._drag_id);
- var B, E;
- if (this._drag_mode == "move") {
- B = this._min_date.valueOf() + (G.y * this.config.time_step + G.x * 24 * 60) * 60000;
- if (!G.custom && this._table_view) {
- B += this.date.time_part(H.start_date) * 1000
- }
- B = this._correct_shift(B);
- E = H.end_date.valueOf() - (H.start_date.valueOf() - B)
- } else {
- B = H.start_date.valueOf();
- if (this._table_view) {
- E = this._min_date.valueOf() + G.y * this.config.time_step * 60000 + (G.custom ? 0 : 24 * 60 * 60000)
- } else {
- E = this.date.date_part(new Date(H.end_date)).valueOf() + G.y * this.config.time_step * 60000;
- this._els.dhx_cal_data[0].style.cursor = "s-resize";
- if (this._mode == "week" || this._mode == "day") {
- E = this._correct_shift(E)
- }
- }
- if (this._drag_mode == "new-size") {
- if (E <= this._drag_start) {
- var D = G.shift || ((this._table_view && !G.custom) ? 24 * 60 * 60000 : 0);
- B = E - D;
- E = this._drag_start + (D || (this.config.time_step * 60000))
- } else {
- B = this._drag_start
- }
- } else {
- if (E <= B) {
- E = B + this.config.time_step * 60000
- }
- }
- }
- var I = new Date(E - 1);
- var C = new Date(B);
- if (this._table_view || (I.getDate() == C.getDate() && I.getHours() < this.config.last_hour)) {
- H.start_date = C;
- H.end_date = new Date(E);
- if (this.config.update_render) {
- this.update_view()
- } else {
- this.updateEvent(this._drag_id)
- }
- }
- if (this._table_view) {
- this.for_rendered(this._drag_id, function (J) {
- J.className += " dhx_in_move"
- })
- }
- }
- } else {
- if (scheduler.checkEvent("onMouseMove")) {
- var A = this._locate_event(F.target || F.srcElement);
- this.callEvent("onMouseMove", [A, F])
- }
- }
-};
-scheduler._on_mouse_context = function (A, B) {
- return this.callEvent("onContextMenu", [this._locate_event(B), A])
-};
-scheduler._on_mouse_down = function (A, B) {
- if (this.config.readonly || this._drag_mode) {
- return
- }
- B = B || (A.target || A.srcElement);
- if (A.button == 2 || A.ctrlKey) {
- return this._on_mouse_context(A, B)
- }
- switch (B.className.split(" ")[0]) {
- case "dhx_cal_event_line":
- case "dhx_cal_event_clear":
- if (this._table_view) {
- this._drag_mode = "move"
- }
- break;
- case "dhx_header":
- case "dhx_title":
- this._drag_mode = "move";
- break;
- case "dhx_footer":
- this._drag_mode = "resize";
- break;
- case "dhx_scale_holder":
- case "dhx_scale_holder_now":
- case "dhx_month_body":
- case "dhx_matrix_cell":
- this._drag_mode = "create";
- break;
- case "":
- if (B.parentNode) {
- return scheduler._on_mouse_down(A, B.parentNode)
- }
- default:
- this._drag_mode = null;
- this._drag_id = null
- }
- if (this._drag_mode) {
- var C = this._locate_event(B);
- if (!this.config["drag_" + this._drag_mode] || !this.callEvent("onBeforeDrag", [C, this._drag_mode, A])) {
- this._drag_mode = this._drag_id = 0
- } else {
- this._drag_id = C;
- this._drag_event = this._copy_event(this.getEvent(this._drag_id) || {})
- }
- }
- this._drag_start = null
-};
-scheduler._on_mouse_up = function (B) {
- if (this._drag_mode && this._drag_id) {
- this._els.dhx_cal_data[0].style.cursor = "default";
- var A = this.getEvent(this._drag_id);
- if (this._drag_event._dhx_changed || !this._drag_event.start_date || A.start_date.valueOf() != this._drag_event.start_date.valueOf() || A.end_date.valueOf() != this._drag_event.end_date.valueOf()) {
- var C = (this._drag_mode == "new-size");
- if (!this.callEvent("onBeforeEventChanged", [A, B, C])) {
- if (C) {
- this.deleteEvent(A.id, true)
- } else {
- A.start_date = this._drag_event.start_date;
- A.end_date = this._drag_event.end_date;
- this.updateEvent(A.id)
- }
- } else {
- if (C && this.config.edit_on_create) {
- this.unselect();
- this._new_event = new Date();
- if (this._table_view || this.config.details_on_create) {
- this._drag_mode = null;
- return this.showLightbox(this._drag_id)
- }
- this._drag_pos = true;
- this._select_id = this._edit_id = this._drag_id
- } else {
- if (!this._new_event) {
- this.callEvent(C ? "onEventAdded" : "onEventChanged", [this._drag_id, this.getEvent(this._drag_id)])
- }
- }
- }
- }
- if (this._drag_pos) {
- this.render_view_data()
- }
- }
- this._drag_mode = null;
- this._drag_pos = null
-};
-scheduler.update_view = function () {
- this._reset_scale();
- if (this._load_mode && this._load()) {
- return this._render_wait = true
- }
- this.render_view_data()
-};
-scheduler.setCurrentView = function (B, E) {
- if (!this.callEvent("onBeforeViewChange", [this._mode, this._date, E, B])) {
- return
- }
- if (this[this._mode + "_view"] && E && this._mode != E) {
- this[this._mode + "_view"](false)
- }
- this._close_not_saved();
- this._mode = E || this._mode;
- this._date = B;
- this._table_view = (this._mode == "month");
- var D = this._els.dhx_cal_tab;
- for (var C = 0; C < D.length; C++) {
- D[C].className = "dhx_cal_tab" + ((D[C].getAttribute("name") == this._mode + "_tab") ? " active" : "")
- }
- var A = this[this._mode + "_view"];
- A ? A(true) : this.update_view();
- this.callEvent("onViewChange", [this._mode, this._date])
-};
-scheduler._render_x_header = function (B, D, E, C) {
- var A = document.createElement("DIV");
- A.className = "dhx_scale_bar";
- this.set_xy(A, this._cols[B] - 1, this.xy.scale_height - 2, D, 0);
- A.innerHTML = this.templates[this._mode + "_scale_date"](E, this._mode);
- C.appendChild(A)
-};
-scheduler._reset_scale = function () {
- if (!this.templates[this._mode + "_date"]) {
- return
- }
- var M = this._els.dhx_cal_header[0];
- var R = this._els.dhx_cal_data[0];
- var P = this.config;
- M.innerHTML = "";
- R.scrollTop = 0;
- R.innerHTML = "";
- var K = ((P.readonly || (!P.drag_resize)) ? " dhx_resize_denied" : "") + ((P.readonly || (!P.drag_move)) ? " dhx_move_denied" : "");
- if (K) {
- R.className = "dhx_cal_data" + K
- }
- this._cols = [];
- this._colsS = {
- height: 0
- };
- this._dy_shift = 0;
- this.set_sizes();
- var I = parseInt(M.style.width);
- var C = 0;
- var O, Q, A, N;
- Q = this.date[this._mode + "_start"](new Date(this._date.valueOf()));
- O = A = this._table_view ? scheduler.date.week_start(Q) : Q;
- N = this.date.date_part(new Date());
- var D = scheduler.date.add(Q, 1, this._mode);
- var E = 7;
- if (!this._table_view) {
- var G = this.date["get_" + this._mode + "_end"];
- if (G) {
- D = G(Q)
- }
- E = Math.round((D.valueOf() - Q.valueOf()) / (1000 * 60 * 60 * 24))
- }
- this._min_date = O;
- this._els.dhx_cal_date[0].innerHTML = this.templates[this._mode + "_date"](Q, D, this._mode);
- for (var L = 0; L < E; L++) {
- this._cols[L] = Math.floor(I / (E - L));
- this._render_x_header(L, C, O, M);
- if (!this._table_view) {
- var F = document.createElement("DIV");
- var B = "dhx_scale_holder";
- if (O.valueOf() == N.valueOf()) {
- B = "dhx_scale_holder_now"
- }
- F.className = B + " " + this.templates.week_date_class(O, N);
- this.set_xy(F, this._cols[L] - 1, P.hour_size_px * (P.last_hour - P.first_hour), C + this.xy.scale_width + 1, 0);
- R.appendChild(F)
- }
- O = this.date.add(O, 1, "day");
- I -= this._cols[L];
- C += this._cols[L];
- this._colsS[L] = (this._cols[L - 1] || 0) + (this._colsS[L - 1] || (this._table_view ? 0 : this.xy.scale_width + 2))
- }
- this._max_date = O;
- this._colsS[E] = this._cols[E - 1] + this._colsS[E - 1];
- if (this._table_view) {
- this._reset_month_scale(R, Q, A)
- } else {
- this._reset_hours_scale(R, Q, A);
- if (P.multi_day) {
- var J = document.createElement("DIV");
- J.className = "dhx_multi_day";
- J.style.visibility = "hidden";
- this.set_xy(J, parseInt(M.style.width), 0, this.xy.scale_width, 0);
- R.appendChild(J);
- var H = J.cloneNode(true);
- H.className = "dhx_multi_day_icon";
- H.style.visibility = "hidden";
- this.set_xy(H, this.xy.scale_width - 1, 0, 0, 0);
- R.appendChild(H);
- this._els.dhx_multi_day = [J, H]
- }
- }
-};
-scheduler._reset_hours_scale = function (B, A, E) {
- var G = document.createElement("DIV");
- G.className = "dhx_scale_holder";
- var C = new Date(1980, 1, 1, this.config.first_hour, 0, 0);
- for (var D = this.config.first_hour * 1; D < this.config.last_hour; D++) {
- var F = document.createElement("DIV");
- F.className = "dhx_scale_hour";
- F.style.height = this.config.hour_size_px - (this._quirks ? 0 : 1) + "px";
- F.style.width = this.xy.scale_width + "px";
- F.innerHTML = scheduler.templates.hour_scale(C);
- G.appendChild(F);
- C = this.date.add(C, 1, "hour")
- }
- B.appendChild(G);
- if (this.config.scroll_hour) {
- B.scrollTop = this.config.hour_size_px * (this.config.scroll_hour - this.config.first_hour)
- }
-};
-scheduler._reset_month_scale = function (J, K, I) {
- var H = scheduler.date.add(K, 1, "month");
- var A = new Date();
- this.date.date_part(A);
- this.date.date_part(I);
- var N = Math.ceil((H.valueOf() - I.valueOf()) / (60 * 60 * 24 * 1000 * 7));
- var B = [];
- var L = (Math.floor(J.clientHeight / N) - 22);
- this._colsS.height = L + 22;
- var G = this._colsS.heights = [];
- for (var E = 0; E <= 7; E++) {
- B[E] = " style='height:" + L + "px; width:" + ((this._cols[E] || 0) - 1) + "px;' "
- }
- var D = 0;
- this._min_date = I;
- var F = "<table cellpadding='0' cellspacing='0'>";
- for (var E = 0; E < N; E++) {
- F += "<tr>";
- for (var C = 0; C < 7; C++) {
- F += "<td";
- var M = "";
- if (I < K) {
- M = "dhx_before"
- } else {
- if (I >= H) {
- M = "dhx_after"
- } else {
- if (I.valueOf() == A.valueOf()) {
- M = "dhx_now"
- }
- }
- }
- F += " class='" + M + " " + this.templates.month_date_class(I, A) + "' ";
- F += "><div class='dhx_month_head'>" + this.templates.month_day(I) + "</div><div class='dhx_month_body' " + B[C] + "></div></td>";
- I = this.date.add(I, 1, "day")
- }
- F += "</tr>";
- G[E] = D;
- D += this._colsS.height
- }
- F += "</table>";
- this._max_date = I;
- J.innerHTML = F;
- return I
-};
-scheduler.getLabel = function (E, D) {
- var F = this.config.lightbox.sections;
- for (var C = 0; C < F.length; C++) {
- if (F[C].map_to == E) {
- var B = F[C].options;
- for (var A = 0; A < B.length; A++) {
- if (B[A].key == D) {
- return B[A].label
- }
- }
- }
- }
- return ""
-};
-scheduler.date = {
- date_part: function (A) {
- A.setHours(0);
- A.setMinutes(0);
- A.setSeconds(0);
- A.setMilliseconds(0);
- return A
- },
- time_part: function (A) {
- return (A.valueOf() / 1000 - A.getTimezoneOffset() * 60) % 86400
- },
- week_start: function (B) {
- var A = B.getDay();
- if (scheduler.config.start_on_monday) {
- if (A == 0) {
- A = 6
- } else {
- A--
- }
- }
- return this.date_part(this.add(B, -1 * A, "day"))
- },
- month_start: function (A) {
- A.setDate(1);
- return this.date_part(A)
- },
- year_start: function (A) {
- A.setMonth(0);
- return this.month_start(A)
- },
- day_start: function (A) {
- return this.date_part(A)
- },
- add: function (B, C, D) {
- var A = new Date(B.valueOf());
- switch (D) {
- case "day":
- A.setDate(A.getDate() + C);
- break;
- case "week":
- A.setDate(A.getDate() + 7 * C);
- break;
- case "month":
- A.setMonth(A.getMonth() + C);
- break;
- case "year":
- A.setYear(A.getFullYear() + C);
- break;
- case "hour":
- A.setHours(A.getHours() + C);
- break;
- case "minute":
- A.setMinutes(A.getMinutes() + C);
- break;
- default:
- return scheduler.date["add_" + D](B, C, D)
- }
- return A
- },
- to_fixed: function (A) {
- if (A < 10) {
- return "0" + A
- }
- return A
- },
- copy: function (A) {
- return new Date(A.valueOf())
- },
- date_to_str: function (B, A) {
- B = B.replace(/%[a-zA-Z]/g, function (C) {
- switch (C) {
- case "%d":
- return '"+scheduler.date.to_fixed(date.getDate())+"';
- case "%m":
- return '"+scheduler.date.to_fixed((date.getMonth()+1))+"';
- case "%j":
- return '"+date.getDate()+"';
- case "%n":
- return '"+(date.getMonth()+1)+"';
- case "%y":
- return '"+scheduler.date.to_fixed(date.getFullYear()%100)+"';
- case "%Y":
- return '"+date.getFullYear()+"';
- case "%D":
- return '"+scheduler.locale.date.day_short[date.getDay()]+"';
- case "%l":
- return '"+scheduler.locale.date.day_full[date.getDay()]+"';
- case "%M":
- return '"+scheduler.locale.date.month_short[date.getMonth()]+"';
- case "%F":
- return '"+scheduler.locale.date.month_full[date.getMonth()]+"';
- case "%h":
- return '"+scheduler.date.to_fixed((date.getHours()+11)%12+1)+"';
- case "%g":
- return '"+((date.getHours()+11)%12+1)+"';
- case "%G":
- return '"+date.getHours()+"';
- case "%H":
- return '"+scheduler.date.to_fixed(date.getHours())+"';
- case "%i":
- return '"+scheduler.date.to_fixed(date.getMinutes())+"';
- case "%a":
- return '"+(date.getHours()>11?"pm":"am")+"';
- case "%A":
- return '"+(date.getHours()>11?"PM":"AM")+"';
- case "%s":
- return '"+scheduler.date.to_fixed(date.getSeconds())+"';
- case "%W":
- return '"+scheduler.date.to_fixed(scheduler.date.getISOWeek(date))+"';
- default:
- return C
- }
- });
- if (A) {
- B = B.replace(/date\.get/g, "date.getUTC")
- }
- return new Function("date", 'return "' + B + '";')
- },
- str_to_date: function (E, C) {
- var F = "var temp=date.split(/[^0-9a-zA-Z]+/g);";
- var A = E.match(/%[a-zA-Z]/g);
- for (var B = 0; B < A.length; B++) {
- switch (A[B]) {
- case "%j":
- case "%d":
- F += "set[2]=temp[" + B + "]||1;";
- break;
- case "%n":
- case "%m":
- F += "set[1]=(temp[" + B + "]||1)-1;";
- break;
- case "%y":
- F += "set[0]=temp[" + B + "]*1+(temp[" + B + "]>50?1900:2000);";
- break;
- case "%g":
- case "%G":
- case "%h":
- case "%H":
- F += "set[3]=temp[" + B + "]||0;";
- break;
- case "%i":
- F += "set[4]=temp[" + B + "]||0;";
- break;
- case "%Y":
- F += "set[0]=temp[" + B + "]||0;";
- break;
- case "%a":
- case "%A":
- F += "set[3]=set[3]%12+((temp[" + B + "]||'').toLowerCase()=='am'?0:12);";
- break;
- case "%s":
- F += "set[5]=temp[" + B + "]||0;";
- break
- }
- }
- var D = "set[0],set[1],set[2],set[3],set[4],set[5]";
- if (C) {
- D = " Date.UTC(" + D + ")"
- }
- return new Function("date", "var set=[0,0,1,0,0,0]; " + F + " return new Date(" + D + ");")
- },
- getISOWeek: function (C) {
- if (!C) {
- return false
- }
- var B = C.getDay();
- if (B == 0) {
- B = 7
- }
- var D = new Date(C.valueOf());
- D.setDate(C.getDate() + (4 - B));
- var A = D.getFullYear();
- var F = Math.floor((D.getTime() - new Date(A, 0, 1).getTime()) / 86400000);
- var E = 1 + Math.floor(F / 7);
- return E
- },
- getUTCISOWeek: function (A) {
- return this.getISOWeek(A)
- }
-};
-scheduler.locale = {
- date: {
- month_full: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
- month_short: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
- day_full: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
- day_short: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]
- },
- labels: {
- dhx_cal_today_button: "Today",
- day_tab: "Day",
- week_tab: "Week",
- month_tab: "Month",
- new_event: "New event",
- icon_save: "Save",
- icon_cancel: "Cancel",
- icon_details: "Details",
- icon_edit: "Edit",
- icon_delete: "Delete",
- confirm_closing: "",
- confirm_deleting: "Event will be deleted permanently, are you sure?",
- section_description: "Description",
- section_time: "Time period",
- full_day: "Full day",
- confirm_recurring: "Do you want to edit the whole set of repeated events?",
- section_recurring: "Repeat event",
- button_recurring: "Disabled",
- button_recurring_open: "Enabled",
- agenda_tab: "Agenda",
- date: "Date",
- description: "Description",
- year_tab: "Year"
- }
-};
-scheduler.config = {
- default_date: "%j %M %Y",
- month_date: "%F %Y",
- load_date: "%Y-%m-%d",
- week_date: "%l",
- day_date: "%D, %F %j",
- hour_date: "%H:%i",
- month_day: "%d",
- xml_date: "%m/%d/%Y %H:%i",
- api_date: "%d-%m-%Y %H:%i",
- hour_size_px: 42,
- time_step: 5,
- start_on_monday: 1,
- first_hour: 0,
- last_hour: 24,
- readonly: false,
- drag_resize: 1,
- drag_move: 1,
- drag_create: 1,
- dblclick_create: 1,
- edit_on_create: 1,
- details_on_create: 0,
- click_form_details: 0,
- server_utc: false,
- positive_closing: false,
- icons_edit: ["icon_save", "icon_cancel"],
- icons_select: ["icon_details", "icon_edit", "icon_delete"],
- lightbox: {
- sections: [{
- name: "description",
- height: 200,
- map_to: "text",
- type: "textarea",
- focus: true
- }, {
- name: "time",
- height: 72,
- type: "time",
- map_to: "auto"
- }]
- }
-};
-scheduler.templates = {};
-scheduler.init_templates = function () {
- var B = scheduler.date.date_to_str;
- var C = scheduler.config;
- var A = function (E, D) {
- for (var F in D) {
- if (!E[F]) {
- E[F] = D[F]
- }
- }
- };
- A(scheduler.templates, {
- day_date: B(C.default_date),
- month_date: B(C.month_date),
- week_date: function (E, D) {
- return scheduler.templates.day_date(E) + " &ndash; " + scheduler.templates.day_date(scheduler.date.add(D, -1, "day"))
- },
- day_scale_date: B(C.default_date),
- month_scale_date: B(C.week_date),
- week_scale_date: B(C.day_date),
- hour_scale: B(C.hour_date),
- time_picker: B(C.hour_date),
- event_date: B(C.hour_date),
- month_day: B(C.month_day),
- xml_date: scheduler.date.str_to_date(C.xml_date, C.server_utc),
- load_format: B(C.load_date, C.server_utc),
- xml_format: B(C.xml_date, C.server_utc),
- api_date: scheduler.date.str_to_date(C.api_date),
- event_header: function (F, D, E) {
- return scheduler.templates.event_date(F) + " - " + scheduler.templates.event_date(D)
- },
- event_text: function (F, D, E) {
- return E.text
- },
- event_class: function (F, D, E) {
- return ""
- },
- month_date_class: function (D) {
- return ""
- },
- week_date_class: function (D) {
- return ""
- },
- event_bar_date: function (F, D, E) {
- return scheduler.templates.event_date(F) + " "
- },
- event_bar_text: function (F, D, E) {
- return E.text
- }
- });
- this.callEvent("onTemplatesReady", [])
-};
-scheduler.uid = function () {
- if (!this._seed) {
- this._seed = (new Date).valueOf()
- }
- return this._seed++
-};
-scheduler._events = {};
-scheduler.clearAll = function () {
- this._events = {};
- this._loaded = {};
- this.clear_view()
-};
-scheduler.addEvent = function (A, G, D, F, B) {
- var C = A;
- if (arguments.length != 1) {
- C = B || {};
- C.start_date = A;
- C.end_date = G;
- C.text = D;
- C.id = F
- }
- C.id = C.id || scheduler.uid();
- C.text = C.text || "";
- if (typeof C.start_date == "string") {
- C.start_date = this.templates.api_date(C.start_date)
- }
- if (typeof C.end_date == "string") {
- C.end_date = this.templates.api_date(C.end_date)
- }
- C._timed = this.is_one_day_event(C);
- var E = !this._events[C.id];
- this._events[C.id] = C;
- this.event_updated(C);
- if (!this._loading) {
- this.callEvent(E ? "onEventAdded" : "onEventChanged", [C.id, C])
- }
-};
-scheduler.deleteEvent = function (C, A) {
- var B = this._events[C];
- if (!A && !this.callEvent("onBeforeEventDelete", [C, B])) {
- return
- }
- if (B) {
- delete this._events[C];
- this.unselect(C);
- this.event_updated(B)
- }
-};
-scheduler.getEvent = function (A) {
- return this._events[A]
-};
-scheduler.setEvent = function (B, A) {
- this._events[B] = A
-};
-scheduler.for_rendered = function (C, B) {
- for (var A = this._rendered.length - 1; A >= 0; A--) {
- if (this._rendered[A].getAttribute("event_id") == C) {
- B(this._rendered[A], A)
- }
- }
-};
-scheduler.changeEventId = function (C, A) {
- if (C == A) {
- return
- }
- var B = this._events[C];
- if (B) {
- B.id = A;
- this._events[A] = B;
- delete this._events[C]
- }
- this.for_rendered(C, function (D) {
- D.setAttribute("event_id", A)
- });
- if (this._select_id == C) {
- this._select_id = A
- }
- if (this._edit_id == C) {
- this._edit_id = A
- }
- this.callEvent("onEventIdChange", [C, A])
-};
-(function () {
- var A = ["text", "Text", "start_date", "StartDate", "end_date", "EndDate"];
- var C = function (E) {
- return function (F) {
- return (scheduler.getEvent(F))[E]
- }
- };
- var D = function (E) {
- return function (H, G) {
- var F = scheduler.getEvent(H);
- F[E] = G;
- F._changed = true;
- F._timed = this.is_one_day_event(F);
- scheduler.event_updated(F, true)
- }
- };
- for (var B = 0; B < A.length; B += 2) {
- scheduler["getEvent" + A[B + 1]] = C(A[B]);
- scheduler["setEvent" + A[B + 1]] = D(A[B])
- }
-})();
-scheduler.event_updated = function (A, B) {
- if (this.is_visible_events(A)) {
- this.render_view_data()
- } else {
- this.clear_event(A.id)
- }
-};
-scheduler.is_visible_events = function (A) {
- if (A.start_date < this._max_date && this._min_date < A.end_date) {
- return true
- }
- return false
-};
-scheduler.is_one_day_event = function (A) {
- var B = A.end_date.getDate() - A.start_date.getDate();
- if (!B) {
- return A.start_date.getMonth() == A.end_date.getMonth() && A.start_date.getFullYear() == A.end_date.getFullYear()
- } else {
- if (B < 0) {
- B = Math.ceil((A.end_date.valueOf() - A.start_date.valueOf()) / (24 * 60 * 60 * 1000))
- }
- return (B == 1 && !A.end_date.getHours() && !A.end_date.getMinutes() && (A.start_date.getHours() || A.start_date.getMinutes()))
- }
-};
-scheduler.get_visible_events = function () {
- var A = [];
- var B = this["filter_" + this._mode];
- for (var C in this._events) {
- if (this.is_visible_events(this._events[C])) {
- if (this._table_view || this.config.multi_day || this._events[C]._timed) {
- if (!B || B(C, this._events[C])) {
- A.push(this._events[C])
- }
- }
- }
- }
- return A
-};
-scheduler.render_view_data = function () {
- if (this._not_render) {
- this._render_wait = true;
- return
- }
- this._render_wait = false;
- this.clear_view();
- var B = this.get_visible_events();
- if (this.config.multi_day && !this._table_view) {
- var D = [];
- var A = [];
- for (var C = 0; C < B.length; C++) {
- if (B[C]._timed) {
- D.push(B[C])
- } else {
- A.push(B[C])
- }
- }
- this._table_view = true;
- this.render_data(A);
- this._table_view = false;
- this.render_data(D)
- } else {
- this.render_data(B)
- }
-};
-scheduler.render_data = function (A, C) {
- A = this._pre_render_events(A, C);
- for (var B = 0; B < A.length; B++) {
- if (this._table_view) {
- this.render_event_bar(A[B])
- } else {
- this.render_event(A[B])
- }
- }
-};
-scheduler._pre_render_events = function (M, A) {
- var G = this.xy.bar_height;
- var D = this._colsS.heights;
- var F = this._colsS.heights = [0, 0, 0, 0, 0, 0, 0];
- if (!this._table_view) {
- M = this._pre_render_events_line(M, A)
- } else {
- M = this._pre_render_events_table(M, A)
- }
- if (this._table_view) {
- if (A) {
- this._colsS.heights = D
- } else {
- var B = this._els.dhx_cal_data[0].firstChild;
- if (B.rows) {
- for (var E = 0; E < B.rows.length; E++) {
- F[E]++;
- if ((F[E]) * G > this._colsS.height - 22) {
- var N = B.rows[E].cells;
- for (var C = 0; C < N.length; C++) {
- N[C].childNodes[1].style.height = F[E] * G + "px"
- }
- F[E] = (F[E - 1] || 0) + N[0].offsetHeight
- }
- F[E] = (F[E - 1] || 0) + B.rows[E].cells[0].offsetHeight
- }
- F.unshift(0);
- if (B.parentNode.offsetHeight < B.parentNode.scrollHeight && !B._h_fix) {
- for (var E = 0; E < B.rows.length; E++) {
- var L = B.rows[E].cells[6].childNodes[0];
- var J = L.offsetWidth - scheduler.xy.scroll_width + "px";
- L.style.width = J;
- L.nextSibling.style.width = J
- }
- B._h_fix = true
- }
- } else {
- if (!M.length && this._els.dhx_multi_day[0].style.visibility == "visible") {
- F[0] = -1
- }
- if (M.length || F[0] == -1) {
- var H = B.parentNode.childNodes;
- var I = (F[0] + 1) * G + "px";
- for (var E = 0; E < H.length; E++) {
- if (this._colsS[E]) {
- H[E].style.top = I
- }
- }
- var K = this._els.dhx_multi_day[0];
- K.style.top = "0px";
- K.style.height = I;
- K.style.visibility = (F[0] == -1 ? "hidden" : "visible");
- K = this._els.dhx_multi_day[1];
- K.style.height = I;
- K.style.visibility = (F[0] == -1 ? "hidden" : "visible");
- K.className = F[0] ? "dhx_multi_day_icon" : "dhx_multi_day_icon_small";
- this._dy_shift = (F[0] + 1) * G;
- F[0] = 0
- }
- }
- }
- }
- return M
-};
-scheduler._get_event_sday = function (A) {
- return Math.floor((A.start_date.valueOf() - this._min_date.valueOf()) / (24 * 60 * 60 * 1000))
-};
-scheduler._pre_render_events_line = function (H, A) {
- H.sort(function (K, J) {
- return K.start_date > J.start_date ? 1 : -1
- });
- var G = [];
- var I = [];
- for (var C = 0; C < H.length; C++) {
- var F = H[C];
- var D = F.start_date.getHours();
- var B = F.end_date.getHours();
- F._sday = this._get_event_sday(F);
- if (!G[F._sday]) {
- G[F._sday] = []
- }
- if (!A) {
- F._inner = false;
- var E = G[F._sday];
- while (E.length && E[E.length - 1].end_date <= F.start_date) {
- E.splice(E.length - 1, 1)
- }
- if (E.length) {
- E[E.length - 1]._inner = true
- }
- F._sorder = E.length;
- E.push(F);
- if (E.length > (E.max_count || 0)) {
- E.max_count = E.length
- }
- }
- if (D < this.config.first_hour || B >= this.config.last_hour) {
- I.push(F);
- H[C] = F = this._copy_event(F);
- if (D < this.config.first_hour) {
- F.start_date.setHours(this.config.first_hour);
- F.start_date.setMinutes(0)
- }
- if (B >= this.config.last_hour) {
- F.end_date.setMinutes(0);
- F.end_date.setHours(this.config.last_hour)
- }
- if (F.start_date > F.end_date || D == this.config.last_hour) {
- H.splice(C, 1);
- C--;
- continue
- }
- }
- }
- if (!A) {
- for (var C = 0; C < H.length; C++) {
- H[C]._count = G[H[C]._sday].max_count
- }
- for (var C = 0; C < I.length; C++) {
- I[C]._count = G[I[C]._sday].max_count
- }
- }
- return H
-};
-scheduler._time_order = function (A) {
- A.sort(function (C, B) {
- if (C.start_date.valueOf() == B.start_date.valueOf()) {
- if (C._timed && !B._timed) {
- return 1
- }
- if (!C._timed && B._timed) {
- return -1
- }
- return 0
- }
- return C.start_date > B.start_date ? 1 : -1
- })
-};
-scheduler._pre_render_events_table = function (P, C) {
- this._time_order(P);
- var F = [];
- var A = [
- [],
- [],
- [],
- [],
- [],
- [],
- []
- ];
- var N = this._colsS.heights;
- var I;
- var M = this._cols.length;
- for (var G = 0; G < P.length; G++) {
- var L = P[G];
- var J = (I || L.start_date);
- var H = L.end_date;
- if (J < this._min_date) {
- J = this._min_date
- }
- if (H > this._max_date) {
- H = this._max_date
- }
- var E = this.locate_holder_day(J, false, L);
- L._sday = E % M;
- var O = this.locate_holder_day(H, true, L) || M;
- L._eday = (O % M) || M;
- L._length = O - E;
- L._sweek = Math.floor((this._correct_shift(J.valueOf(), 1) - this._min_date.valueOf()) / (60 * 60 * 1000 * 24 * M));
- var K = A[L._sweek];
- var D;
- for (D = 0; D < K.length; D++) {
- if (K[D]._eday <= L._sday) {
- break
- }
- }
- L._sorder = D;
- if (L._sday + L._length <= M) {
- I = null;
- F.push(L);
- K[D] = L;
- N[L._sweek] = K.length - 1
- } else {
- var B = this._copy_event(L);
- B._length = M - L._sday;
- B._eday = M;
- B._sday = L._sday;
- B._sweek = L._sweek;
- B._sorder = L._sorder;
- B.end_date = this.date.add(J, B._length, "day");
- F.push(B);
- K[D] = B;
- I = B.end_date;
- N[L._sweek] = K.length - 1;
- G--;
- continue
- }
- }
- return F
-};
-scheduler._copy_dummy = function () {
- this.start_date = new Date(this.start_date);
- this.end_date = new Date(this.end_date)
-};
-scheduler._copy_event = function (A) {
- this._copy_dummy.prototype = A;
- return new this._copy_dummy()
-};
-scheduler._rendered = [];
-scheduler.clear_view = function () {
- for (var A = 0; A < this._rendered.length; A++) {
- var B = this._rendered[A];
- if (B.parentNode) {
- B.parentNode.removeChild(B)
- }
- }
- this._rendered = []
-};
-scheduler.updateEvent = function (B) {
- var A = this.getEvent(B);
- this.clear_event(B);
- if (A && this.is_visible_events(A)) {
- this.render_data([A], true)
- }
-};
-scheduler.clear_event = function (A) {
- this.for_rendered(A, function (C, B) {
- if (C.parentNode) {
- C.parentNode.removeChild(C)
- }
- scheduler._rendered.splice(B, 1)
- })
-};
-scheduler.render_event = function (L) {
- var D = scheduler.xy.menu_width;
- if (L._sday < 0) {
- return
- }
- var M = scheduler.locate_holder(L._sday);
- if (!M) {
- return
- }
- var F = L.start_date.getHours() * 60 + L.start_date.getMinutes();
- var C = (L.end_date.getHours() * 60 + L.end_date.getMinutes()) || (scheduler.config.last_hour * 60);
- var K = (Math.round((F * 60 * 1000 - this.config.first_hour * 60 * 60 * 1000) * this.config.hour_size_px / (60 * 60 * 1000))) % (this.config.hour_size_px * 24) + 1;
- var O = Math.max(scheduler.xy.min_event_height, (C - F) * this.config.hour_size_px / 60) + 1;
- var B = Math.floor((M.clientWidth - D) / L._count);
- var E = L._sorder * B + 1;
- if (!L._inner) {
- B = B * (L._count - L._sorder)
- }
- var J = this._render_v_bar(L.id, D + E, K, B, O, L._text_style, scheduler.templates.event_header(L.start_date, L.end_date, L), scheduler.templates.event_text(L.start_date, L.end_date, L));
- this._rendered.push(J);
- M.appendChild(J);
- E = E + parseInt(M.style.left, 10) + D;
- K += this._dy_shift;
- if (this._edit_id == L.id) {
- J.style.zIndex = 1;
- B = Math.max(B - 4, scheduler.xy.editor_width);
- var J = document.createElement("DIV");
- J.setAttribute("event_id", L.id);
- this.set_xy(J, B, O - 20, E, K + 14);
- J.className = "dhx_cal_editor";
- var A = document.createElement("DIV");
- this.set_xy(A, B - 6, O - 26);
- A.style.cssText += ";margin:2px 2px 2px 2px;overflow:hidden;";
- J.appendChild(A);
- this._els.dhx_cal_data[0].appendChild(J);
- this._rendered.push(J);
- A.innerHTML = "<textarea class='dhx_cal_editor'>" + L.text + "</textarea>";
- if (this._quirks7) {
- A.firstChild.style.height = O - 12 + "px"
- }
- this._editor = A.firstChild;
- this._editor.onkeypress = function (Q) {
- if ((Q || event).shiftKey) {
- return true
- }
- var P = (Q || event).keyCode;
- if (P == scheduler.keys.edit_save) {
- scheduler.editStop(true)
- }
- if (P == scheduler.keys.edit_cancel) {
- scheduler.editStop(false)
- }
- };
- this._editor.onselectstart = function (P) {
- return (P || event).cancelBubble = true
- };
- A.firstChild.focus();
- this._els.dhx_cal_data[0].scrollLeft = 0;
- A.firstChild.select()
- }
- if (this._select_id == L.id) {
- var N = this.config["icons_" + ((this._edit_id == L.id) ? "edit" : "select")];
- var I = "";
- for (var H = 0; H < N.length; H++) {
- I += "<div class='dhx_menu_icon " + N[H] + "' title='" + this.locale.labels[N[H]] + "'></div>"
- }
- var G = this._render_v_bar(L.id, E - D + 1, K, D, N.length * 20 + 26, "", "<div class='dhx_menu_head'></div>", I, true);
- G.style.left = E - D + 1;
- this._els.dhx_cal_data[0].appendChild(G);
- this._rendered.push(G)
- }
-};
-scheduler._render_v_bar = function (D, M, L, N, H, B, F, E, A) {
- var J = document.createElement("DIV");
- var K = this.getEvent(D);
- var I = "dhx_cal_event";
- var C = scheduler.templates.event_class(K.start_date, K.end_date, K);
- if (C) {
- I = I + " " + C
- }
- var G = jQuery('<div>',
- {
- 'event_id': D,
- 'class': I
- }).css({
- 'position':'absolute',
- 'top': L,
- 'left': M,
- 'width': (N - 4),
- 'height': H
- }).append(
- jQuery('<div>', {
- 'class': 'dhx_header',
- 'width': (N - 6)
- }),
- jQuery('<div>', {
- 'class': 'dhx_title'
- }).html(F),
- jQuery('<div>', {
- 'class': 'dhx_body',
- 'width': (N - (this._quirks ? 4 : 14)),
- 'height': (H - (this._quirks ? 20 : 30))
-
- }).html(E),
- jQuery('<div>', {
- 'class': 'dhx_footer',
- 'width': (N - 8),
- 'margin-top': A ? 1 : ''
- })
- )
- if(K.color) {
- jQuery('div', G).css({'background': K.color, 'color': '#FFFFFF'})
- }
- jQuery(J).html(G);
- return J.firstChild
-};
-scheduler.locate_holder = function (A) {
- if (this._mode == "day") {
- return this._els.dhx_cal_data[0].firstChild
- }
- return this._els.dhx_cal_data[0].childNodes[A]
-};
-scheduler.locate_holder_day = function (B, C) {
- var A = Math.floor((this._correct_shift(B, 1) - this._min_date) / (60 * 60 * 24 * 1000));
- if (C && this.date.time_part(B)) {
- A++
- }
- return A
-};
-scheduler.render_event_bar = function (H) {
- var J = this._els.dhx_cal_data[0];
- var I = this._colsS[H._sday];
- var A = this._colsS[H._eday];
- if (A == I) {
- A = this._colsS[H._eday + 1]
- }
- var D = this.xy.bar_height;
- var G = this._colsS.heights[H._sweek] + (this._colsS.height ? (this.xy.month_scale_height + 2) : 2) + H._sorder * D;
- var F = document.createElement("DIV");
- var E = H._timed ? "dhx_cal_event_clear" : "dhx_cal_event_line";
- var B = scheduler.templates.event_class(H.start_date, H.end_date, H);
- if (B) {
- E = E + " " + B
- }
-
- var c_innerHTML = " ";
- var C = jQuery('<div>',
- {
- 'event_id': H.id,
- 'class': E
- }).css({
- 'position': 'absolute',
- 'top': G,
- 'left': I,
- 'width': (A - I - 15)
- })
- if (H._timed) {
- c_innerHTML = scheduler.templates.event_bar_date(H.start_date, H.end_date, H)
- }
-
- C.html(c_innerHTML + scheduler.templates.event_bar_text(H.start_date, H.end_date, H))
- jQuery(F).html(C);
-
- if (H.color) {
- if (H._length) {
- C.css({'background-color':H.color, 'color': '#FFFFFF'});
- } else {
- C.css('color',H.color);;
- }
- }
-
- if(H.title) {
- C.attr('title',H.title);
- }
-
- this._rendered.push(F.firstChild);
- J.appendChild(F.firstChild)
-};
-
-scheduler._locate_event = function (A) {
- var B = null;
- while (A && !B && A.getAttribute) {
- B = A.getAttribute("event_id");
- A = A.parentNode
- }
- return B
-};
-scheduler.edit = function (A) {
- if (this._edit_id == A) {
- return
- }
- this.editStop(false, A);
- this._edit_id = A;
- this.updateEvent(A)
-};
-scheduler.editStop = function (B, C) {
- if (C && this._edit_id == C) {
- return
- }
- var A = this.getEvent(this._edit_id);
- if (A) {
- if (B) {
- A.text = this._editor.value
- }
- this._edit_id = null;
- this._editor = null;
- this.updateEvent(A.id);
- this._edit_stop_event(A, B)
- }
-};
-scheduler._edit_stop_event = function (A, B) {
- if (this._new_event) {
- if (!B) {
- this.deleteEvent(A.id, true)
- } else {
- this.callEvent("onEventAdded", [A.id, A])
- }
- this._new_event = null
- } else {
- if (B) {
- this.callEvent("onEventChanged", [A.id, A])
- }
- }
-};
-scheduler.getEvents = function (E, D) {
- var A = [];
- for (var B in this._events) {
- var C = this._events[B];
- if (C && C.start_date < D && C.end_date > E) {
- A.push(C)
- }
- }
- return A
-};
-scheduler._loaded = {};
-scheduler._load = function (C, F) {
- C = C || this._load_url;
- C += (C.indexOf("?") == -1 ? "?" : "&") + "timeshift=" + (new Date()).getTimezoneOffset();
- if (this.config.prevent_cache) {
- C += "&uid=" + this.uid()
- }
- var E;
- F = F || this._date;
- if (this._load_mode) {
- var B = this.templates.load_format;
- F = this.date[this._load_mode + "_start"](new Date(F.valueOf()));
- while (F > this._min_date) {
- F = this.date.add(F, -1, this._load_mode)
- }
- E = F;
- var D = true;
- while (E < this._max_date) {
- E = this.date.add(E, 1, this._load_mode);
- if (this._loaded[B(F)] && D) {
- F = this.date.add(F, 1, this._load_mode)
- } else {
- D = false
- }
- }
- var A = E;
- do {
- E = A;
- A = this.date.add(E, -1, this._load_mode)
- } while (A > F && this._loaded[B(A)]);
- if (E <= F) {
- return false
- }
- dhtmlxAjax.get(C + "&from=" + B(F) + "&to=" + B(E), function (G) {
- scheduler.on_load(G)
- });
- while (F < E) {
- this._loaded[B(F)] = true;
- F = this.date.add(F, 1, this._load_mode)
- }
- } else {
- dhtmlxAjax.get(C, function (G) {
- scheduler.on_load(G)
- })
- }
- this.callEvent("onXLS", []);
- return true
-};
-scheduler.on_load = function (A) {
- this._loading = true;
- if (this._process) {
- var B = this[this._process].parse(A.xmlDoc.responseText)
- } else {
- var B = this._magic_parser(A)
- }
- this._not_render = true;
- for (var C = 0; C < B.length; C++) {
- if (!this.callEvent("onEventLoading", [B[C]])) {
- continue
- }
- this.addEvent(B[C])
- }
- this._not_render = false;
- if (this._render_wait) {
- this.render_view_data()
- }
- if (this._after_call) {
- this._after_call()
- }
- this._after_call = null;
- this._loading = false;
- this.callEvent("onXLE", [])
-};
-scheduler.json = {};
-scheduler.json.parse = function (data) {
- if (typeof data == "string") {
- eval("scheduler._temp = " + data + ";");
- data = scheduler._temp
- }
- var evs = [];
- for (var i = 0; i < data.length; i++) {
- data[i].start_date = scheduler.templates.xml_date(data[i].start_date);
- data[i].end_date = scheduler.templates.xml_date(data[i].end_date);
- evs.push(data[i])
- }
- return evs
-};
-scheduler.parse = function (B, A) {
- this._process = A;
- this.on_load({
- xmlDoc: {
- responseText: B
- }
- })
-};
-scheduler.load = function (A, B) {
- if (typeof B == "string") {
- this._process = B;
- B = arguments[2]
- }
- this._load_url = A;
- this._after_call = B;
- this._load(A, this._date)
-};
-scheduler.setLoadMode = function (A) {
- if (A == "all") {
- A = ""
- }
- this._load_mode = A
-};
-scheduler.refresh = function (A) {
- alert("not implemented")
-};
-scheduler.serverList = function (A) {
- return this.serverList[A] = (this.serverList[A] || [])
-};
-scheduler._userdata = {};
-scheduler._magic_parser = function (I) {
- if (!I.getXMLTopNode) {
- var B = I.xmlDoc.responseText;
- I = new dtmlXMLLoaderObject(function () {});
- I.loadXMLString(B)
- }
- var F = I.getXMLTopNode("data");
- if (F.tagName != "data") {
- return []
- }
- var A = I.doXPath("//coll_options");
- for (var E = 0; E < A.length; E++) {
- var H = A[E].getAttribute("for");
- var G = this.serverList[H];
- if (!G) {
- continue
- }
- G.splice(0, G.length);
- var K = I.doXPath(".//item", A[E]);
- for (var C = 0; C < K.length; C++) {
- G.push({
- key: K[C].getAttribute("value"),
- label: K[C].getAttribute("label")
- })
- }
- }
- if (A.length) {
- scheduler.callEvent("onOptionsLoad", [])
- }
- var L = I.doXPath("//userdata");
- for (var E = 0; E < L.length; E++) {
- var D = this.xmlNodeToJSON(L[E]);
- this._userdata[D.name] = D.text
- }
- var J = [];
- var F = I.doXPath("//event");
- for (var E = 0; E < F.length; E++) {
- J[E] = this.xmlNodeToJSON(F[E]);
- J[E].text = J[E].text || J[E]._tagvalue;
- J[E].start_date = this.templates.xml_date(J[E].start_date);
- J[E].end_date = this.templates.xml_date(J[E].end_date)
- }
- return J
-};
-scheduler.xmlNodeToJSON = function (C) {
- var B = {};
- for (var A = 0; A < C.attributes.length; A++) {
- B[C.attributes[A].name] = C.attributes[A].value
- }
- for (var A = 0; A < C.childNodes.length; A++) {
- var D = C.childNodes[A];
- if (D.nodeType == 1) {
- B[D.tagName] = D.firstChild ? D.firstChild.nodeValue : ""
- }
- }
- if (!B.text) {
- B.text = C.firstChild ? C.firstChild.nodeValue : ""
- }
- return B
-};
-scheduler.attachEvent("onXLS", function () {
- if (this.config.show_loading === true) {
- var A;
- A = this.config.show_loading = document.createElement("DIV");
- A.className = "dhx_loading";
- A.style.left = Math.round((this._x - 128) / 2) + "px";
- A.style.top = Math.round((this._y - 15) / 2) + "px";
- this._obj.appendChild(A)
- }
-});
-scheduler.attachEvent("onXLE", function () {
- var A;
- if (A = this.config.show_loading) {
- if (typeof A == "object") {
- this._obj.removeChild(A);
- this.config.show_loading = true
- }
- }
-});
-scheduler.ical = {
- parse: function (H) {
- var E = H.match(RegExp(this.c_start + "[^\f]*" + this.c_end, ""));
- if (!E.length) {
- return
- }
- E[0] = E[0].replace(/[\r\n]+(?=[a-z \t])/g, " ");
- E[0] = E[0].replace(/\;[^:\r\n]*/g, "");
- var B = [];
- var D;
- var C = RegExp("(?:" + this.e_start + ")([^\f]*?)(?:" + this.e_end + ")", "g");
- while (D = C.exec(E)) {
- var F = {};
- var G;
- var A = /[^\r\n]+[\r\n]+/g;
- while (G = A.exec(D[1])) {
- this.parse_param(G.toString(), F)
- }
- if (F.uid && !F.id) {
- F.id = F.uid
- }
- B.push(F)
- }
- return B
- },
- parse_param: function (E, C) {
- var D = E.indexOf(":");
- if (D == -1) {
- return
- }
- var A = E.substr(0, D).toLowerCase();
- var B = E.substr(D + 1).replace(/\\\,/g, ",").replace(/[\r\n]+$/, "");
- if (A == "summary") {
- A = "text"
- } else {
- if (A == "dtstart") {
- A = "start_date";
- B = this.parse_date(B, 0, 0)
- } else {
- if (A == "dtend") {
- A = "end_date";
- if (C.start_date && C.start_date.getHours() == 0) {
- B = this.parse_date(B, 24, 0)
- } else {
- B = this.parse_date(B, 23, 59)
- }
- }
- }
- }
- C[A] = B
- },
- parse_date: function (G, F, D) {
- var E = G.split("T");
- if (E[1]) {
- F = E[1].substr(0, 2);
- D = E[1].substr(2, 2)
- }
- var C = E[0].substr(0, 4);
- var B = parseInt(E[0].substr(4, 2), 10) - 1;
- var A = E[0].substr(6, 2);
- if (scheduler.config.server_utc && !E[1]) {
- return new Date(Date.UTC(C, B, A, F, D))
- }
- return new Date(C, B, A, F, D)
- },
- c_start: "BEGIN:VCALENDAR",
- e_start: "BEGIN:VEVENT",
- e_end: "END:VEVENT",
- c_end: "END:VCALENDAR"
-};
-scheduler.form_blocks = {
- textarea: {
- render: function (B) {
- var A = (B.height || "130") + "px";
- return "<div class='dhx_cal_ltext' style='height:" + A + ";'><textarea></textarea></div>"
- },
- set_value: function (B, C, A) {
- B.firstChild.value = C || ""
- },
- get_value: function (B, A) {
- return B.firstChild.value
- },
- focus: function (B) {
- var A = B.firstChild;
- A.select();
- A.focus()
- }
- },
- select: {
- render: function (D) {
- var A = (D.height || "23") + "px";
- var C = "<div class='dhx_cal_ltext' style='height:" + A + ";'><select style='width:552px;'>";
- for (var B = 0; B < D.options.length; B++) {
- C += "<option value='" + D.options[B].key + "'>" + D.options[B].label + "</option>"
- }
- C += "</select></div>";
- return C
- },
- set_value: function (B, C, A) {
- if (typeof C == "undefined") {
- C = (B.firstChild.options[0] || {}).value
- }
- B.firstChild.value = C || ""
- },
- get_value: function (B, A) {
- return B.firstChild.value
- },
- focus: function (B) {
- var A = B.firstChild;
- if (A.select) {
- A.select()
- }
- A.focus()
- }
- },
- time: {
- render: function () {
- var A = scheduler.config;
- var E = this.date.date_part(new Date());
- var D = 24 * 60,
- G = 0;
- if (scheduler.config.limit_time_select) {
- D = 60 * A.last_hour + 1;
- G = 60 * A.first_hour;
- E.setHours(A.first_hour)
- }
- var C = "<select>";
- for (var B = G; B < D; B += this.config.time_step * 1) {
- var F = this.templates.time_picker(E);
- C += "<option value='" + B + "'>" + F + "</option>";
- E = this.date.add(E, this.config.time_step, "minute")
- }
- C += "</select> <select>";
- for (var B = 1; B < 32; B++) {
- C += "<option value='" + B + "'>" + B + "</option>"
- }
- C += "</select> <select>";
- for (var B = 0; B < 12; B++) {
- C += "<option value='" + B + "'>" + this.locale.date.month_full[B] + "</option>"
- }
- C += "</select> <select>";
- E = E.getFullYear() - 5;
- for (var B = 0; B < 10; B++) {
- C += "<option value='" + (E + B) + "'>" + (E + B) + "</option>"
- }
- C += "</select> ";
- return "<div style='height:30px; padding-top:0px; font-size:inherit;' class='dhx_cal_lsection dhx_section_time'>" + C + "<span style='font-weight:normal; font-size:10pt;'> &nbsp;&ndash;&nbsp; </span>" + C + "</div>"
- },
- set_value: function (A, I, G) {
- var J = A.getElementsByTagName("select");
- if (scheduler.config.full_day) {
- if (!A._full_day) {
- A.previousSibling.innerHTML += "<div class='dhx_fullday_checkbox'><label><input type='checkbox' name='full_day' value='true'> " + scheduler.locale.labels.full_day + "&nbsp;</label></input></div>";
- A._full_day = true
- }
- var H = A.previousSibling.getElementsByTagName("input")[0];
- var F = (scheduler.date.time_part(G.start_date) == 0 && scheduler.date.time_part(G.end_date) == 0 && G.end_date.valueOf() - G.start_date.valueOf() < 2 * 24 * 60 * 60 * 1000);
- H.checked = F;
- for (var B in J) {
- J[B].disabled = H.checked
- }
- H.onclick = function () {
- if (H.checked) {
- var K = new Date(G.start_date);
- var M = new Date(G.end_date);
- scheduler.date.date_part(K);
- M = scheduler.date.add(K, 1, "day")
- }
- for (var L in J) {
- J[L].disabled = H.checked
- }
- C(J, 0, K || G.start_date);
- C(J, 4, M || G.end_date)
- }
- }
- if (scheduler.config.auto_end_date && scheduler.config.event_duration) {
- function E() {
- G.start_date = new Date(J[3].value, J[2].value, J[1].value, 0, J[0].value);
- G.end_date.setTime(G.start_date.getTime() + (scheduler.config.event_duration * 60 * 1000));
- C(J, 4, G.end_date)
- }
- for (var D = 0; D < 4; D++) {
- J[D].onchange = E
- }
- }
- function C(L, K, M) {
- L[K + 0].value = Math.round((M.getHours() * 60 + M.getMinutes()) / scheduler.config.time_step) * scheduler.config.time_step;
- L[K + 1].value = M.getDate();
- L[K + 2].value = M.getMonth();
- L[K + 3].value = M.getFullYear()
- }
- C(J, 0, G.start_date);
- C(J, 4, G.end_date)
- },
- get_value: function (B, A) {
- s = B.getElementsByTagName("select");
- A.start_date = new Date(s[3].value, s[2].value, s[1].value, 0, s[0].value);
- A.end_date = new Date(s[7].value, s[6].value, s[5].value, 0, s[4].value);
- if (A.end_date <= A.start_date) {
- A.end_date = scheduler.date.add(A.start_date, scheduler.config.time_step, "minute")
- }
- },
- focus: function (A) {
- A.getElementsByTagName("select")[0].focus()
- }
- }
-};
-scheduler.showCover = function (A) {
- this.show_cover();
- if (A) {
- A.style.display = "block";
- var B = getOffset(this._obj);
- A.style.top = Math.round(B.top + (this._obj.offsetHeight - A.offsetHeight) / 2) + "px";
- A.style.left = Math.round(B.left + (this._obj.offsetWidth - A.offsetWidth) / 2) + "px"
- }
-};
-scheduler.showLightbox = function (B) {
- if (!B) {
- return
- }
- if (!this.callEvent("onBeforeLightbox", [B])) {
- return
- }
- var A = this._get_lightbox();
- this.showCover(A);
- this._fill_lightbox(B, A);
- this.callEvent("onLightbox", [B])
-};
-scheduler._fill_lightbox = function (H, E) {
- var D = this.getEvent(H);
- var B = E.getElementsByTagName("span");
- if (scheduler.templates.lightbox_header) {
- B[1].innerHTML = "";
- B[2].innerHTML = scheduler.templates.lightbox_header(D.start_date, D.end_date, D)
- } else {
- B[1].innerHTML = this.templates.event_header(D.start_date, D.end_date, D);
- B[2].innerHTML = (this.templates.event_bar_text(D.start_date, D.end_date, D) || "").substr(0, 70)
- }
- var F = this.config.lightbox.sections;
- for (var A = 0; A < F.length; A++) {
- var C = document.getElementById(F[A].id).nextSibling;
- var G = this.form_blocks[F[A].type];
- G.set_value.call(this, C, D[F[A].map_to], D, F[A]);
- if (F[A].focus) {
- G.focus.call(this, C)
- }
- }
- scheduler._lightbox_id = H
-};
-scheduler._lightbox_out = function (D) {
- var E = this.config.lightbox.sections;
- for (var B = 0; B < E.length; B++) {
- var C = document.getElementById(E[B].id).nextSibling;
- var F = this.form_blocks[E[B].type];
- var A = F.get_value.call(this, C, D, E[B]);
- if (E[B].map_to != "auto") {
- D[E[B].map_to] = A
- }
- }
- return D
-};
-scheduler._empty_lightbox = function () {
- var C = scheduler._lightbox_id;
- var B = this.getEvent(C);
- var A = this._get_lightbox();
- this._lightbox_out(B);
- B._timed = this.is_one_day_event(B);
- this.setEvent(B.id, B);
- this._edit_stop_event(B, true);
- this.render_view_data()
-};
-scheduler.hide_lightbox = function (A) {
- this.hideCover(this._get_lightbox());
- this._lightbox_id = null;
- this.callEvent("onAfterLightbox", [])
-};
-scheduler.hideCover = function (A) {
- if (A) {
- A.style.display = "none"
- }
- this.hide_cover()
-};
-scheduler.hide_cover = function () {
- if (this._cover) {
- this._cover.parentNode.removeChild(this._cover)
- }
- this._cover = null
-};
-scheduler.show_cover = function () {
- this._cover = document.createElement("DIV");
- this._cover.className = "dhx_cal_cover";
- document.body.appendChild(this._cover)
-};
-scheduler.save_lightbox = function () {
- if (this.checkEvent("onEventSave") && !this.callEvent("onEventSave", [this._lightbox_id, this._lightbox_out({
- id: this._lightbox_id
- }), this._new_event])) {
- return
- }
- this._empty_lightbox();
- this.hide_lightbox()
-};
-scheduler.startLightbox = function (B, A) {
- this._lightbox_id = B;
- this.showCover(A)
-};
-scheduler.endLightbox = function (B, A) {
- this._edit_stop_event(scheduler.getEvent(this._lightbox_id), B);
- if (B) {
- scheduler.render_view_data()
- }
- this.hideCover(A)
-};
-scheduler.resetLightbox = function () {
- scheduler._lightbox = null
-};
-scheduler.cancel_lightbox = function () {
- this.callEvent("onEventCancel", [this._lightbox_id, this._new_event]);
- this.endLightbox(false);
- this.hide_lightbox()
-};
-scheduler._init_lightbox_events = function () {
- this._get_lightbox().onclick = function (C) {
- var E = C ? C.target : event.srcElement;
- if (!E.className) {
- E = E.previousSibling
- }
- if (E && E.className) {
- switch (E.className) {
- case "dhx_save_btn":
- scheduler.save_lightbox();
- break;
- case "dhx_delete_btn":
- var F = scheduler.locale.labels.confirm_deleting;
- if (!F || confirm(F)) {
- scheduler.deleteEvent(scheduler._lightbox_id);
- scheduler._new_event = null;
- scheduler.hide_lightbox()
- }
- break;
- case "dhx_cancel_btn":
- scheduler.cancel_lightbox();
- break;
- default:
- if (E.className.indexOf("dhx_custom_button_") != -1) {
- var A = E.parentNode.getAttribute("index");
- var D = scheduler.form_blocks[scheduler.config.lightbox.sections[A].type];
- var B = E.parentNode.parentNode;
- D.button_click(A, E, B, B.nextSibling)
- }
- }
- }
- };
- this._get_lightbox().onkeypress = function (A) {
- switch ((A || event).keyCode) {
- case scheduler.keys.edit_save:
- if ((A || event).shiftKey) {
- return
- }
- scheduler.save_lightbox();
- break;
- case scheduler.keys.edit_cancel:
- scheduler.cancel_lightbox();
- break
- }
- }
-};
-scheduler.setLightboxSize = function () {
- var B = this._lightbox;
- if (!B) {
- return
- }
- var A = B.childNodes[1];
- A.style.height = "0px";
- A.style.height = A.scrollHeight + "px";
- B.style.height = A.scrollHeight + 50 + "px";
- A.style.height = A.scrollHeight + "px"
-};
-scheduler._get_lightbox = function () {
- if (!this._lightbox) {
- var G = document.createElement("DIV");
- G.className = "dhx_cal_light";
- if (/msie|MSIE 6/.test(navigator.userAgent)) {
- G.className += " dhx_ie6"
- }
- G.style.visibility = "hidden";
- G.innerHTML = this._lightbox_template;
- document.body.insertBefore(G, document.body.firstChild);
- this._lightbox = G;
- var E = this.config.lightbox.sections;
- var C = "";
- for (var B = 0; B < E.length; B++) {
- var F = this.form_blocks[E[B].type];
- if (!F) {
- continue
- }
- E[B].id = "area_" + this.uid();
- var A = "";
- if (E[B].button) {
- A = "<div style='float:right;' class='dhx_custom_button' index='" + B + "'><div class='dhx_custom_button_" + E[B].name + "'></div><div>" + this.locale.labels["button_" + E[B].button] + "</div></div>"
- }
- C += "<div id='" + E[B].id + "' class='dhx_cal_lsection'>" + A + this.locale.labels["section_" + E[B].name] + "</div>" + F.render.call(this, E[B])
- }
- var D = G.getElementsByTagName("div");
- D[4].innerHTML = scheduler.locale.labels.icon_save;
- D[7].innerHTML = scheduler.locale.labels.icon_cancel;
- D[10].innerHTML = scheduler.locale.labels.icon_delete;
- D[1].innerHTML = C;
- this.setLightboxSize();
- this._init_lightbox_events(this);
- G.style.display = "none";
- G.style.visibility = "visible"
- }
- return this._lightbox
-};
-scheduler._lightbox_template = "<div class='dhx_cal_ltitle'><span class='dhx_mark'>&nbsp;</span><span class='dhx_time'></span><span class='dhx_title'></span></div><div class='dhx_cal_larea'></div><div class='dhx_btn_set'><div class='dhx_save_btn'></div><div>&nbsp;</div></div><div class='dhx_btn_set'><div class='dhx_cancel_btn'></div><div>&nbsp;</div></div><div class='dhx_btn_set' style='float:right;'><div class='dhx_delete_btn'></div><div>&nbsp;</div></div>";
-scheduler._dp_init = function (A) {
- A._methods = ["setEventTextStyle", "", "changeEventId", "deleteEvent"];
- this.attachEvent("onEventAdded", function (B) {
- if (!this._loading && this.validId(B)) {
- A.setUpdated(B, true, "inserted")
- }
- });
- this.attachEvent("onBeforeEventDelete", function (C) {
- if (!this.validId(C)) {
- return
- }
- var B = A.getState(C);
- if (B == "inserted" || this._new_event) {
- A.setUpdated(C, false);
- return true
- }
- if (B == "deleted") {
- return false
- }
- if (B == "true_deleted") {
- return true
- }
- A.setUpdated(C, true, "deleted");
- return false
- });
- this.attachEvent("onEventChanged", function (B) {
- if (!this._loading && this.validId(B)) {
- A.setUpdated(B, true, "updated")
- }
- });
- A._getRowData = function (F, B) {
- var D = this.obj.getEvent(F);
- var E = {};
- for (var C in D) {
- if (C.indexOf("_") == 0) {
- continue
- }
- if (D[C] && D[C].getUTCFullYear) {
- E[C] = this.obj.templates.xml_format(D[C])
- } else {
- E[C] = D[C]
- }
- }
- return E
- };
- A._clearUpdateFlag = function () {};
- A.attachEvent("insertCallback", scheduler._update_callback);
- A.attachEvent("updateCallback", scheduler._update_callback);
- A.attachEvent("deleteCallback", function (B, C) {
- this.obj.setUserData(C, this.action_param, "true_deleted");
- this.obj.deleteEvent(C)
- })
-};
-scheduler.setUserData = function (C, A, B) {
- if (C) {
- this.getEvent(C)[A] = B
- } else {
- this._userdata[A] = B
- }
-};
-scheduler.getUserData = function (B, A) {
- return B ? this.getEvent(B)[A] : this._userdata[A]
-};
-scheduler.setEventTextStyle = function (C, A) {
- this.for_rendered(C, function (D) {
- D.style.cssText += ";" + A
- });
- var B = this.getEvent(C);
- B._text_style = A;
- this.event_updated(B)
-};
-scheduler.validId = function (A) {
- return true
-};
-scheduler._update_callback = function (B, C) {
- var A = scheduler.xmlNodeToJSON(B.firstChild);
- A.text = A.text || A._tagvalue;
- A.start_date = scheduler.templates.xml_date(A.start_date);
- A.end_date = scheduler.templates.xml_date(A.end_date);
- scheduler.addEvent(A)
-};
-
-/*
-dhtmlxScheduler v.2.3
-
-This software is allowed to use under GPL or you need to obtain Commercial or Enterise License
-to use it in not GPL project. Please contact sales@dhtmlx.com for details
-
-(c) DHTMLX Ltd.
*/
+dhtmlx=function(a){for(var b in a)dhtmlx[b]=a[b];return dhtmlx};
+dhtmlx.extend_api=function(a,b,c){var d=window[a];if(d)window[a]=function(a){if(a&&typeof a=="object"&&!a.tagName&&!(a instanceof Array)){var c=d.apply(this,b._init?b._init(a):arguments),g;for(g in dhtmlx)if(b[g])this[b[g]](dhtmlx[g]);for(g in a)if(b[g])this[b[g]](a[g]);else g.indexOf("on")==0&&this.attachEvent(g,a[g])}else c=d.apply(this,arguments);b._patch&&b._patch(this);return c||this},window[a].prototype=d.prototype,c&&dhtmlXHeir(window[a].prototype,c)};
+dhtmlxAjax={get:function(a,b){var c=new dtmlXMLLoaderObject(!0);c.async=arguments.length<3;c.waitCall=b;c.loadXML(a);return c},post:function(a,b,c){var d=new dtmlXMLLoaderObject(!0);d.async=arguments.length<4;d.waitCall=c;d.loadXML(a,!0,b);return d},getSync:function(a){return this.get(a,null,!0)},postSync:function(a,b){return this.post(a,b,null,!0)}};
+function dtmlXMLLoaderObject(a,b,c,d){this.xmlDoc="";this.async=typeof c!="undefined"?c:!0;this.onloadAction=a||null;this.mainObject=b||null;this.waitCall=null;this.rSeed=d||!1;return this}
+dtmlXMLLoaderObject.prototype.waitLoadFunction=function(a){var b=!0;return this.check=function(){if(a&&a.onloadAction!=null&&(!a.xmlDoc.readyState||a.xmlDoc.readyState==4)&&b){b=!1;if(typeof a.onloadAction=="function")a.onloadAction(a.mainObject,null,null,null,a);if(a.waitCall)a.waitCall.call(this,a),a.waitCall=null}}};
+dtmlXMLLoaderObject.prototype.getXMLTopNode=function(a,b){if(this.xmlDoc.responseXML){var c=this.xmlDoc.responseXML.getElementsByTagName(a);c.length==0&&a.indexOf(":")!=-1&&(c=this.xmlDoc.responseXML.getElementsByTagName(a.split(":")[1]));var d=c[0]}else d=this.xmlDoc.documentElement;if(d)return this._retry=!1,d;if(_isIE&&!this._retry){var e=this.xmlDoc.responseText,b=this.xmlDoc;this._retry=!0;this.xmlDoc=new ActiveXObject("Microsoft.XMLDOM");this.xmlDoc.async=!1;this.xmlDoc.loadXML(e);return this.getXMLTopNode(a,
+b)}dhtmlxError.throwError("LoadXML","Incorrect XML",[b||this.xmlDoc,this.mainObject]);return document.createElement("DIV")};dtmlXMLLoaderObject.prototype.loadXMLString=function(a){try{var b=new DOMParser;this.xmlDoc=b.parseFromString(a,"text/xml")}catch(c){this.xmlDoc=new ActiveXObject("Microsoft.XMLDOM"),this.xmlDoc.async=this.async,this.xmlDoc.loadXML(a)}this.onloadAction(this.mainObject,null,null,null,this);if(this.waitCall)this.waitCall(),this.waitCall=null};
+dtmlXMLLoaderObject.prototype.loadXML=function(a,b,c,d){this.rSeed&&(a+=(a.indexOf("?")!=-1?"&":"?")+"a_dhx_rSeed="+(new Date).valueOf());this.filePath=a;this.xmlDoc=!_isIE&&window.XMLHttpRequest?new XMLHttpRequest:new ActiveXObject("Microsoft.XMLHTTP");if(this.async)this.xmlDoc.onreadystatechange=new this.waitLoadFunction(this);this.xmlDoc.open(b?"POST":"GET",a,this.async);d?(this.xmlDoc.setRequestHeader("User-Agent","dhtmlxRPC v0.1 ("+navigator.userAgent+")"),this.xmlDoc.setRequestHeader("Content-type",
+"text/xml")):b&&this.xmlDoc.setRequestHeader("Content-type","application/x-www-form-urlencoded");this.xmlDoc.setRequestHeader("X-Requested-With","XMLHttpRequest");this.xmlDoc.send(c);this.async||(new this.waitLoadFunction(this))()};dtmlXMLLoaderObject.prototype.destructor=function(){return this.xmlDoc=this.mainObject=this.onloadAction=null};
+dtmlXMLLoaderObject.prototype.xmlNodeToJSON=function(a){for(var b={},c=0;c<a.attributes.length;c++)b[a.attributes[c].name]=a.attributes[c].value;b._tagvalue=a.firstChild?a.firstChild.nodeValue:"";for(c=0;c<a.childNodes.length;c++){var d=a.childNodes[c].tagName;d&&(b[d]||(b[d]=[]),b[d].push(this.xmlNodeToJSON(a.childNodes[c])))}return b};function callerFunction(a,b){return this.handler=function(c){if(!c)c=window.event;a(c,b);return!0}}function getAbsoluteLeft(a){return getOffset(a).left}
+function getAbsoluteTop(a){return getOffset(a).top}function getOffsetSum(a){for(var b=0,c=0;a;)b+=parseInt(a.offsetTop),c+=parseInt(a.offsetLeft),a=a.offsetParent;return{top:b,left:c}}
+function getOffsetRect(a){var b=a.getBoundingClientRect(),c=document.body,d=document.documentElement,e=window.pageYOffset||d.scrollTop||c.scrollTop,f=window.pageXOffset||d.scrollLeft||c.scrollLeft,g=d.clientTop||c.clientTop||0,h=d.clientLeft||c.clientLeft||0,i=b.top+e-g,k=b.left+f-h;return{top:Math.round(i),left:Math.round(k)}}function getOffset(a){return a.getBoundingClientRect&&!_isChrome?getOffsetRect(a):getOffsetSum(a)}
+function convertStringToBoolean(a){typeof a=="string"&&(a=a.toLowerCase());switch(a){case "1":case "true":case "yes":case "y":case 1:case !0:return!0;default:return!1}}function getUrlSymbol(a){return a.indexOf("?")!=-1?"&":"?"}function dhtmlDragAndDropObject(){if(window.dhtmlDragAndDrop)return window.dhtmlDragAndDrop;this.dragStartObject=this.dragStartNode=this.dragNode=this.lastLanding=0;this.tempDOMM=this.tempDOMU=null;this.waitDrag=0;window.dhtmlDragAndDrop=this;return this}
+dhtmlDragAndDropObject.prototype.removeDraggableItem=function(a){a.onmousedown=null;a.dragStarter=null;a.dragLanding=null};dhtmlDragAndDropObject.prototype.addDraggableItem=function(a,b){a.onmousedown=this.preCreateDragCopy;a.dragStarter=b;this.addDragLanding(a,b)};dhtmlDragAndDropObject.prototype.addDragLanding=function(a,b){a.dragLanding=b};
+dhtmlDragAndDropObject.prototype.preCreateDragCopy=function(a){if(!((a||event)&&(a||event).button==2)){if(window.dhtmlDragAndDrop.waitDrag)return window.dhtmlDragAndDrop.waitDrag=0,document.body.onmouseup=window.dhtmlDragAndDrop.tempDOMU,document.body.onmousemove=window.dhtmlDragAndDrop.tempDOMM,!1;window.dhtmlDragAndDrop.waitDrag=1;window.dhtmlDragAndDrop.tempDOMU=document.body.onmouseup;window.dhtmlDragAndDrop.tempDOMM=document.body.onmousemove;window.dhtmlDragAndDrop.dragStartNode=this;window.dhtmlDragAndDrop.dragStartObject=
+this.dragStarter;document.body.onmouseup=window.dhtmlDragAndDrop.preCreateDragCopy;document.body.onmousemove=window.dhtmlDragAndDrop.callDrag;window.dhtmlDragAndDrop.downtime=(new Date).valueOf();a&&a.preventDefault&&a.preventDefault();return!1}};
+dhtmlDragAndDropObject.prototype.callDrag=function(a){if(!a)a=window.event;dragger=window.dhtmlDragAndDrop;if(!((new Date).valueOf()-dragger.downtime<100)){if(a.button==0&&_isIE)return dragger.stopDrag();if(!dragger.dragNode&&dragger.waitDrag){dragger.dragNode=dragger.dragStartObject._createDragNode(dragger.dragStartNode,a);if(!dragger.dragNode)return dragger.stopDrag();dragger.dragNode.onselectstart=function(){return!1};dragger.gldragNode=dragger.dragNode;document.body.appendChild(dragger.dragNode);
+document.body.onmouseup=dragger.stopDrag;dragger.waitDrag=0;dragger.dragNode.pWindow=window;dragger.initFrameRoute()}if(dragger.dragNode.parentNode!=window.document.body){var b=dragger.gldragNode;if(dragger.gldragNode.old)b=dragger.gldragNode.old;b.parentNode.removeChild(b);var c=dragger.dragNode.pWindow;if(_isIE){var d=document.createElement("Div");d.innerHTML=dragger.dragNode.outerHTML;dragger.dragNode=d.childNodes[0]}else dragger.dragNode=dragger.dragNode.cloneNode(!0);dragger.dragNode.pWindow=
+window;dragger.gldragNode.old=dragger.dragNode;document.body.appendChild(dragger.dragNode);c.dhtmlDragAndDrop.dragNode=dragger.dragNode}dragger.dragNode.style.left=a.clientX+15+(dragger.fx?dragger.fx*-1:0)+(document.body.scrollLeft||document.documentElement.scrollLeft)+"px";dragger.dragNode.style.top=a.clientY+3+(dragger.fy?dragger.fy*-1:0)+(document.body.scrollTop||document.documentElement.scrollTop)+"px";var e=a.srcElement?a.srcElement:a.target;dragger.checkLanding(e,a)}};
+dhtmlDragAndDropObject.prototype.calculateFramePosition=function(a){if(window.name){for(var b=parent.frames[window.name].frameElement.offsetParent,c=0,d=0;b;)c+=b.offsetLeft,d+=b.offsetTop,b=b.offsetParent;if(parent.dhtmlDragAndDrop){var e=parent.dhtmlDragAndDrop.calculateFramePosition(1);c+=e.split("_")[0]*1;d+=e.split("_")[1]*1}if(a)return c+"_"+d;else this.fx=c;this.fy=d}return"0_0"};
+dhtmlDragAndDropObject.prototype.checkLanding=function(a,b){a&&a.dragLanding?(this.lastLanding&&this.lastLanding.dragLanding._dragOut(this.lastLanding),this.lastLanding=a,this.lastLanding=this.lastLanding.dragLanding._dragIn(this.lastLanding,this.dragStartNode,b.clientX,b.clientY,b),this.lastLanding_scr=_isIE?b.srcElement:b.target):a&&a.tagName!="BODY"?this.checkLanding(a.parentNode,b):(this.lastLanding&&this.lastLanding.dragLanding._dragOut(this.lastLanding,b.clientX,b.clientY,b),this.lastLanding=
+0,this._onNotFound&&this._onNotFound())};
+dhtmlDragAndDropObject.prototype.stopDrag=function(a,b){dragger=window.dhtmlDragAndDrop;if(!b){dragger.stopFrameRoute();var c=dragger.lastLanding;dragger.lastLanding=null;c&&c.dragLanding._drag(dragger.dragStartNode,dragger.dragStartObject,c,_isIE?event.srcElement:a.target)}dragger.lastLanding=null;dragger.dragNode&&dragger.dragNode.parentNode==document.body&&dragger.dragNode.parentNode.removeChild(dragger.dragNode);dragger.dragNode=0;dragger.gldragNode=0;dragger.fx=0;dragger.fy=0;dragger.dragStartNode=
+0;dragger.dragStartObject=0;document.body.onmouseup=dragger.tempDOMU;document.body.onmousemove=dragger.tempDOMM;dragger.tempDOMU=null;dragger.tempDOMM=null;dragger.waitDrag=0};dhtmlDragAndDropObject.prototype.stopFrameRoute=function(a){a&&window.dhtmlDragAndDrop.stopDrag(1,1);for(var b=0;b<window.frames.length;b++)try{window.frames[b]!=a&&window.frames[b].dhtmlDragAndDrop&&window.frames[b].dhtmlDragAndDrop.stopFrameRoute(window)}catch(c){}try{parent.dhtmlDragAndDrop&&parent!=window&&parent!=a&&parent.dhtmlDragAndDrop.stopFrameRoute(window)}catch(d){}};
+dhtmlDragAndDropObject.prototype.initFrameRoute=function(a,b){if(a)window.dhtmlDragAndDrop.preCreateDragCopy({}),window.dhtmlDragAndDrop.dragStartNode=a.dhtmlDragAndDrop.dragStartNode,window.dhtmlDragAndDrop.dragStartObject=a.dhtmlDragAndDrop.dragStartObject,window.dhtmlDragAndDrop.dragNode=a.dhtmlDragAndDrop.dragNode,window.dhtmlDragAndDrop.gldragNode=a.dhtmlDragAndDrop.dragNode,window.document.body.onmouseup=window.dhtmlDragAndDrop.stopDrag,window.waitDrag=0,!_isIE&&b&&(!_isFF||w<1.8)&&window.dhtmlDragAndDrop.calculateFramePosition();
+try{parent.dhtmlDragAndDrop&&parent!=window&&parent!=a&&parent.dhtmlDragAndDrop.initFrameRoute(window)}catch(c){}for(var d=0;d<window.frames.length;d++)try{window.frames[d]!=a&&window.frames[d].dhtmlDragAndDrop&&window.frames[d].dhtmlDragAndDrop.initFrameRoute(window,!a||b?1:0)}catch(e){}};w=_OperaRv=x=_isChrome=_isMacOS=_isKHTML=_isOpera=_isIE=_isFF=!1;navigator.userAgent.indexOf("Macintosh")!=-1&&(_isMacOS=!0);navigator.userAgent.toLowerCase().indexOf("chrome")>-1&&(_isChrome=!0);
+if(navigator.userAgent.indexOf("Safari")!=-1||navigator.userAgent.indexOf("Konqueror")!=-1){var x=parseFloat(navigator.userAgent.substr(navigator.userAgent.indexOf("Safari")+7,5));if(x>525){_isFF=!0;var w=1.9}else _isKHTML=!0}else navigator.userAgent.indexOf("Opera")!=-1?(_isOpera=!0,_OperaRv=parseFloat(navigator.userAgent.substr(navigator.userAgent.indexOf("Opera")+6,3))):navigator.appName.indexOf("Microsoft")!=-1?(_isIE=!0,navigator.appVersion.indexOf("MSIE 8.0")!=-1&&document.compatMode!="BackCompat"&&
+(_isIE=8)):(_isFF=!0,w=parseFloat(navigator.userAgent.split("rv:")[1]));
+dtmlXMLLoaderObject.prototype.doXPath=function(a,b,c,d){if(_isKHTML||!_isIE&&!window.XPathResult)return this.doXPathOpera(a,b);if(_isIE)return b||(b=this.xmlDoc.nodeName?this.xmlDoc:this.xmlDoc.responseXML),b||dhtmlxError.throwError("LoadXML","Incorrect XML",[b||this.xmlDoc,this.mainObject]),c!=null&&b.setProperty("SelectionNamespaces","xmlns:xsl='"+c+"'"),d=="single"?b.selectSingleNode(a):b.selectNodes(a)||[];else{var e=b;b||(b=this.xmlDoc.nodeName?this.xmlDoc:this.xmlDoc.responseXML);b||dhtmlxError.throwError("LoadXML",
+"Incorrect XML",[b||this.xmlDoc,this.mainObject]);b.nodeName.indexOf("document")!=-1?e=b:(e=b,b=b.ownerDocument);var f=XPathResult.ANY_TYPE;if(d=="single")f=XPathResult.FIRST_ORDERED_NODE_TYPE;var g=[],h=b.evaluate(a,e,function(){return c},f,null);if(f==XPathResult.FIRST_ORDERED_NODE_TYPE)return h.singleNodeValue;for(var i=h.iterateNext();i;)g[g.length]=i,i=h.iterateNext();return g}};function z(){if(!this.catches)this.catches=[];return this}z.prototype.catchError=function(a,b){this.catches[a]=b};
+z.prototype.throwError=function(a,b,c){if(this.catches[a])return this.catches[a](a,b,c);if(this.catches.ALL)return this.catches.ALL(a,b,c);alert("Error type: "+a+"\nDescription: "+b);return null};window.dhtmlxError=new z;
+dtmlXMLLoaderObject.prototype.doXPathOpera=function(a,b){var c=a.replace(/[\/]+/gi,"/").split("/"),d=null,e=1;if(!c.length)return[];if(c[0]==".")d=[b];else if(c[0]=="")d=(this.xmlDoc.responseXML||this.xmlDoc).getElementsByTagName(c[e].replace(/\[[^\]]*\]/g,"")),e++;else return[];for(;e<c.length;e++)d=this._getAllNamedChilds(d,c[e]);c[e-1].indexOf("[")!=-1&&(d=this._filterXPath(d,c[e-1]));return d};
+dtmlXMLLoaderObject.prototype._filterXPath=function(a,b){for(var c=[],b=b.replace(/[^\[]*\[\@/g,"").replace(/[\[\]\@]*/g,""),d=0;d<a.length;d++)a[d].getAttribute(b)&&(c[c.length]=a[d]);return c};
+dtmlXMLLoaderObject.prototype._getAllNamedChilds=function(a,b){var c=[];_isKHTML&&(b=b.toUpperCase());for(var d=0;d<a.length;d++)for(var e=0;e<a[d].childNodes.length;e++)_isKHTML?a[d].childNodes[e].tagName&&a[d].childNodes[e].tagName.toUpperCase()==b&&(c[c.length]=a[d].childNodes[e]):a[d].childNodes[e].tagName==b&&(c[c.length]=a[d].childNodes[e]);return c};function dhtmlXHeir(a,b){for(var c in b)typeof b[c]=="function"&&(a[c]=b[c]);return a}
+function dhtmlxEvent(a,b,c){a.addEventListener?a.addEventListener(b,c,!1):a.attachEvent&&a.attachEvent("on"+b,c)}dtmlXMLLoaderObject.prototype.xslDoc=null;dtmlXMLLoaderObject.prototype.setXSLParamValue=function(a,b,c){if(!c)c=this.xslDoc;if(c.responseXML)c=c.responseXML;var d=this.doXPath("/xsl:stylesheet/xsl:variable[@name='"+a+"']",c,"http://www.w3.org/1999/XSL/Transform","single");if(d!=null)d.firstChild.nodeValue=b};
+dtmlXMLLoaderObject.prototype.doXSLTransToObject=function(a,b){if(!a)a=this.xslDoc;if(a.responseXML)a=a.responseXML;if(!b)b=this.xmlDoc;if(b.responseXML)b=b.responseXML;if(_isIE){d=new ActiveXObject("Msxml2.DOMDocument.3.0");try{b.transformNodeToObject(a,d)}catch(c){d=b.transformNode(a)}}else{if(!this.XSLProcessor)this.XSLProcessor=new XSLTProcessor,this.XSLProcessor.importStylesheet(a);var d=this.XSLProcessor.transformToDocument(b)}return d};
+dtmlXMLLoaderObject.prototype.doXSLTransToString=function(a,b){var c=this.doXSLTransToObject(a,b);return typeof c=="string"?c:this.doSerialization(c)};dtmlXMLLoaderObject.prototype.doSerialization=function(a){if(!a)a=this.xmlDoc;if(a.responseXML)a=a.responseXML;if(_isIE)return a.xml;else{var b=new XMLSerializer;return b.serializeToString(a)}};
+dhtmlxEventable=function(a){a.dhx_SeverCatcherPath="";a.attachEvent=function(a,c,d){a="ev_"+a.toLowerCase();this[a]||(this[a]=new this.eventCatcher(d||this));return a+":"+this[a].addEvent(c)};a.callEvent=function(a,c){a="ev_"+a.toLowerCase();return this[a]?this[a].apply(this,c):!0};a.checkEvent=function(a){return!!this["ev_"+a.toLowerCase()]};a.eventCatcher=function(a){var c=[],d=function(){for(var d=!0,f=0;f<c.length;f++)if(c[f]!=null)var g=c[f].apply(a,arguments),d=d&&g;return d};d.addEvent=function(a){typeof a!=
+"function"&&(a=eval(a));return a?c.push(a)-1:!1};d.removeEvent=function(a){c[a]=null};return d};a.detachEvent=function(a){if(a!=!1){var c=a.split(":");this[c[0]].removeEvent(c[1])}};a.detachAllEvents=function(){for(var a in this)a.indexOf("ev_")==0&&delete this[a]}};
+function dataProcessor(a){this.serverProcessor=a;this.action_param="!nativeeditor_status";this.object=null;this.updatedRows=[];this.autoUpdate=!0;this.updateMode="cell";this._tMode="GET";this.post_delim="_";this._waitMode=0;this._in_progress={};this._invalid={};this.mandatoryFields=[];this.messages=[];this.styles={updated:"font-weight:bold;",inserted:"font-weight:bold;",deleted:"text-decoration : line-through;",invalid:"background-color:FFE0E0;",invalid_cell:"border-bottom:2px solid red;",clear:"font-weight:normal;text-decoration:none;"};
+this.enableUTFencoding(!0);dhtmlxEventable(this);return this}
+dataProcessor.prototype={setTransactionMode:function(a,b){this._tMode=a;this._tSend=b},escape:function(a){return this._utf?encodeURIComponent(a):escape(a)},enableUTFencoding:function(a){this._utf=convertStringToBoolean(a)},setDataColumns:function(a){this._columns=typeof a=="string"?a.split(","):a},getSyncState:function(){return!this.updatedRows.length},enableDataNames:function(a){this._endnm=convertStringToBoolean(a)},enablePartialDataSend:function(a){this._changed=convertStringToBoolean(a)},setUpdateMode:function(a,
+b){this.autoUpdate=a=="cell";this.updateMode=a;this.dnd=b},ignore:function(a,b){this._silent_mode=!0;a.call(b||window);this._silent_mode=!1},setUpdated:function(a,b,c){if(!this._silent_mode){var d=this.findRow(a),c=c||"updated",e=this.obj.getUserData(a,this.action_param);e&&c=="updated"&&(c=e);b?(this.set_invalid(a,!1),this.updatedRows[d]=a,this.obj.setUserData(a,this.action_param,c),this._in_progress[a]&&(this._in_progress[a]="wait")):this.is_invalid(a)||(this.updatedRows.splice(d,1),this.obj.setUserData(a,
+this.action_param,""));b||this._clearUpdateFlag(a);this.markRow(a,b,c);b&&this.autoUpdate&&this.sendData(a)}},_clearUpdateFlag:function(){},markRow:function(a,b,c){var d="",e=this.is_invalid(a);e&&(d=this.styles[e],b=!0);if(this.callEvent("onRowMark",[a,b,c,e])&&(d=this.styles[b?c:"clear"]+d,this.obj[this._methods[0]](a,d),e&&e.details)){d+=this.styles[e+"_cell"];for(var f=0;f<e.details.length;f++)if(e.details[f])this.obj[this._methods[1]](a,f,d)}},getState:function(a){return this.obj.getUserData(a,
+this.action_param)},is_invalid:function(a){return this._invalid[a]},set_invalid:function(a,b,c){c&&(b={value:b,details:c,toString:function(){return this.value.toString()}});this._invalid[a]=b},checkBeforeUpdate:function(){return!0},sendData:function(a){if(!this._waitMode||!(this.obj.mytype=="tree"||this.obj._h2)){this.obj.editStop&&this.obj.editStop();if(typeof a=="undefined"||this._tSend)return this.sendAllData();if(this._in_progress[a])return!1;this.messages=[];if(!this.checkBeforeUpdate(a)&&this.callEvent("onValidatationError",
+[a,this.messages]))return!1;this._beforeSendData(this._getRowData(a),a)}},_beforeSendData:function(a,b){if(!this.callEvent("onBeforeUpdate",[b,this.getState(b),a]))return!1;this._sendData(a,b)},serialize:function(a,b){if(typeof a=="string")return a;if(typeof b!="undefined")return this.serialize_one(a,"");else{var c=[],d=[],e;for(e in a)a.hasOwnProperty(e)&&(c.push(this.serialize_one(a[e],e+this.post_delim)),d.push(e));c.push("ids="+this.escape(d.join(",")));return c.join("&")}},serialize_one:function(a,
+b){if(typeof a=="string")return a;var c=[],d;for(d in a)a.hasOwnProperty(d)&&c.push(this.escape((b||"")+d)+"="+this.escape(a[d]));return c.join("&")},_sendData:function(a,b){if(a){if(!this.callEvent("onBeforeDataSending",b?[b,this.getState(b),a]:[null,null,a]))return!1;b&&(this._in_progress[b]=(new Date).valueOf());var c=new dtmlXMLLoaderObject(this.afterUpdate,this,!0),d=this.serverProcessor+(this._user?getUrlSymbol(this.serverProcessor)+["dhx_user="+this._user,"dhx_version="+this.obj.getUserData(0,
+"version")].join("&"):"");this._tMode!="POST"?c.loadXML(d+(d.indexOf("?")!=-1?"&":"?")+this.serialize(a,b)):c.loadXML(d,!0,this.serialize(a,b));this._waitMode++}},sendAllData:function(){if(this.updatedRows.length){this.messages=[];for(var a=!0,b=0;b<this.updatedRows.length;b++)a&=this.checkBeforeUpdate(this.updatedRows[b]);if(!a&&!this.callEvent("onValidatationError",["",this.messages]))return!1;if(this._tSend)this._sendData(this._getAllData());else for(b=0;b<this.updatedRows.length;b++)if(!this._in_progress[this.updatedRows[b]]&&
+!this.is_invalid(this.updatedRows[b])&&(this._beforeSendData(this._getRowData(this.updatedRows[b]),this.updatedRows[b]),this._waitMode&&(this.obj.mytype=="tree"||this.obj._h2)))break}},_getAllData:function(){for(var a={},b=!1,c=0;c<this.updatedRows.length;c++){var d=this.updatedRows[c];!this._in_progress[d]&&!this.is_invalid(d)&&this.callEvent("onBeforeUpdate",[d,this.getState(d)])&&(a[d]=this._getRowData(d,d+this.post_delim),b=!0,this._in_progress[d]=(new Date).valueOf())}return b?a:null},setVerificator:function(a,
+b){this.mandatoryFields[a]=b||function(a){return a!=""}},clearVerificator:function(a){this.mandatoryFields[a]=!1},findRow:function(a){for(var b=0,b=0;b<this.updatedRows.length;b++)if(a==this.updatedRows[b])break;return b},defineAction:function(a,b){if(!this._uActions)this._uActions=[];this._uActions[a]=b},afterUpdateCallback:function(a,b,c,d){var e=a,f=c!="error"&&c!="invalid";f||this.set_invalid(a,c);if(this._uActions&&this._uActions[c]&&!this._uActions[c](d))return delete this._in_progress[e];this._in_progress[e]!=
+"wait"&&this.setUpdated(a,!1);var g=a;switch(c){case "update":case "updated":case "inserted":case "insert":b!=a&&(this.obj[this._methods[2]](a,b),a=b);break;case "delete":case "deleted":return this.obj.setUserData(a,this.action_param,"true_deleted"),this.obj[this._methods[3]](a),delete this._in_progress[e],this.callEvent("onAfterUpdate",[a,c,b,d])}this._in_progress[e]!="wait"?(f&&this.obj.setUserData(a,this.action_param,""),delete this._in_progress[e]):(delete this._in_progress[e],this.setUpdated(b,
+!0,this.obj.getUserData(a,this.action_param)));this.callEvent("onAfterUpdate",[a,c,b,d])},afterUpdate:function(a,b,c,d,e){e.getXMLTopNode("data");if(e.xmlDoc.responseXML){for(var f=e.doXPath("//data/action"),g=0;g<f.length;g++){var h=f[g],i=h.getAttribute("type"),k=h.getAttribute("sid"),j=h.getAttribute("tid");a.afterUpdateCallback(k,j,i,h)}a.finalizeUpdate()}},finalizeUpdate:function(){this._waitMode&&this._waitMode--;(this.obj.mytype=="tree"||this.obj._h2)&&this.updatedRows.length&&this.sendData();
+this.callEvent("onAfterUpdateFinish",[]);this.updatedRows.length||this.callEvent("onFullSync",[])},init:function(a){this.obj=a;this.obj._dp_init&&this.obj._dp_init(this)},setOnAfterUpdate:function(a){this.attachEvent("onAfterUpdate",a)},enableDebug:function(){},setOnBeforeUpdateHandler:function(a){this.attachEvent("onBeforeDataSending",a)},setAutoUpdate:function(a,b){a=a||2E3;this._user=b||(new Date).valueOf();this._need_update=!1;this._loader=null;this._update_busy=!1;this.attachEvent("onAfterUpdate",
+function(a,b,c,g){this.afterAutoUpdate(a,b,c,g)});this.attachEvent("onFullSync",function(){this.fullSync()});var c=this;window.setInterval(function(){c.loadUpdate()},a)},afterAutoUpdate:function(a,b){return b=="collision"?(this._need_update=!0,!1):!0},fullSync:function(){if(this._need_update==!0)this._need_update=!1,this.loadUpdate();return!0},getUpdates:function(a,b){if(this._update_busy)return!1;else this._update_busy=!0;this._loader=this._loader||new dtmlXMLLoaderObject(!0);this._loader.async=
+!0;this._loader.waitCall=b;this._loader.loadXML(a)},_v:function(a){return a.firstChild?a.firstChild.nodeValue:""},_a:function(a){for(var b=[],c=0;c<a.length;c++)b[c]=this._v(a[c]);return b},loadUpdate:function(){var a=this,b=this.obj.getUserData(0,"version"),c=this.serverProcessor+getUrlSymbol(this.serverProcessor)+["dhx_user="+this._user,"dhx_version="+b].join("&"),c=c.replace("editing=true&","");this.getUpdates(c,function(){var b=a._loader.doXPath("//userdata");a.obj.setUserData(0,"version",a._v(b[0]));
+var c=a._loader.doXPath("//update");if(c.length){a._silent_mode=!0;for(var f=0;f<c.length;f++){var g=c[f].getAttribute("status"),h=c[f].getAttribute("id"),i=c[f].getAttribute("parent");switch(g){case "inserted":a.callEvent("insertCallback",[c[f],h,i]);break;case "updated":a.callEvent("updateCallback",[c[f],h,i]);break;case "deleted":a.callEvent("deleteCallback",[c[f],h,i])}}a._silent_mode=!1}a._update_busy=!1;a=null})}};
+if(window.dhtmlXGridObject)dhtmlXGridObject.prototype._init_point_connector=dhtmlXGridObject.prototype._init_point,dhtmlXGridObject.prototype._init_point=function(){var a=function(a){a=a.replace(/(\?|\&)connector[^\f]*/g,"");return a+(a.indexOf("?")!=-1?"&":"?")+"connector=true"+(this.hdr.rows.length>0?"&dhx_no_header=1":"")},b=function(b){return a.call(this,b)+(this._connector_sorting||"")+(this._connector_filter||"")},c=function(a,c,d){this._connector_sorting="&dhx_sort["+c+"]="+d;return b.call(this,
+a)},d=function(a,c,d){for(var h=0;h<c.length;h++)c[h]="dhx_filter["+c[h]+"]="+encodeURIComponent(d[h]);this._connector_filter="&"+c.join("&");return b.call(this,a)};this.attachEvent("onCollectValues",function(a){return this._con_f_used[a]?typeof this._con_f_used[a]=="object"?this._con_f_used[a]:!1:!0});this.attachEvent("onDynXLS",function(){this.xmlFileUrl=b.call(this,this.xmlFileUrl);return!0});this.attachEvent("onBeforeSorting",function(a,b,d){if(b=="connector"){var h=this;this.clearAndLoad(c.call(this,
+this.xmlFileUrl,a,d),function(){h.setSortImgState(!0,a,d)});return!1}return!0});this.attachEvent("onFilterStart",function(a,b){return this._con_f_used.length?(this.clearAndLoad(d.call(this,this.xmlFileUrl,a,b)),!1):!0});this.attachEvent("onXLE",function(){});this._init_point_connector&&this._init_point_connector()},dhtmlXGridObject.prototype._con_f_used=[],dhtmlXGridObject.prototype._in_header_connector_text_filter=function(a,b){this._con_f_used[b]||(this._con_f_used[b]=1);return this._in_header_text_filter(a,
+b)},dhtmlXGridObject.prototype._in_header_connector_select_filter=function(a,b){this._con_f_used[b]||(this._con_f_used[b]=2);return this._in_header_select_filter(a,b)},dhtmlXGridObject.prototype.load_connector=dhtmlXGridObject.prototype.load,dhtmlXGridObject.prototype.load=function(a,b,c){if(!this._colls_loaded&&this.cellType){for(var d=[],e=0;e<this.cellType.length;e++)(this.cellType[e].indexOf("co")==0||this._con_f_used[e]==2)&&d.push(e);d.length&&(arguments[0]+=(arguments[0].indexOf("?")!=-1?"&":
+"?")+"connector=true&dhx_colls="+d.join(","))}return this.load_connector.apply(this,arguments)},dhtmlXGridObject.prototype._parseHead_connector=dhtmlXGridObject.prototype._parseHead,dhtmlXGridObject.prototype._parseHead=function(a,b,c){this._parseHead_connector.apply(this,arguments);if(!this._colls_loaded){for(var d=this.xmlLoader.doXPath("./coll_options",arguments[0]),e=0;e<d.length;e++){var f=d[e].getAttribute("for"),g=[],h=null;this.cellType[f]=="combo"&&(h=this.getColumnCombo(f));this.cellType[f].indexOf("co")==
+0&&(h=this.getCombo(f));for(var i=this.xmlLoader.doXPath("./item",d[e]),k=0;k<i.length;k++){var j=i[k].getAttribute("value");if(h){var l=i[k].getAttribute("label")||j;h.addOption?h.addOption([[j,l]]):h.put(j,l);g[g.length]=l}else g[g.length]=j}this._con_f_used[f*1]&&(this._con_f_used[f*1]=g)}this._colls_loaded=!0}};
+if(window.dataProcessor)dataProcessor.prototype.init_original=dataProcessor.prototype.init,dataProcessor.prototype.init=function(a){this.init_original(a);a._dataprocessor=this;this.setTransactionMode("POST",!0);this.serverProcessor+=(this.serverProcessor.indexOf("?")!=-1?"&":"?")+"editing=true"};dhtmlxError.catchError("LoadXML",function(a,b,c){c[0].status!=0&&alert(c[0].responseText)});window.dhtmlXScheduler=window.scheduler={version:3};dhtmlxEventable(scheduler);
+scheduler.init=function(a,b,c){b=b||new Date;c=c||"week";scheduler.date.init();this._obj=typeof a=="string"?document.getElementById(a):a;this._els=[];this._scroll=!0;this._quirks=_isIE&&document.compatMode=="BackCompat";this._quirks7=_isIE&&navigator.appVersion.indexOf("MSIE 8")==-1;this.get_elements();this.init_templates();this.set_actions();dhtmlxEvent(window,"resize",function(){window.clearTimeout(scheduler._resize_timer);scheduler._resize_timer=window.setTimeout(function(){scheduler.callEvent("onSchedulerResize",
+[])&&scheduler.update_view()},100)});this.set_sizes();scheduler.callEvent("onSchedulerReady",[]);this.setCurrentView(b,c)};scheduler.xy={nav_height:22,min_event_height:40,scale_width:50,bar_height:20,scroll_width:18,scale_height:20,month_scale_height:20,menu_width:25,margin_top:0,margin_left:0,editor_width:140};scheduler.keys={edit_save:13,edit_cancel:27};
+scheduler.set_sizes=function(){var a=this._x=this._obj.clientWidth-this.xy.margin_left,b=this._y=this._obj.clientHeight-this.xy.margin_top,c=this._table_view?0:this.xy.scale_width+this.xy.scroll_width,d=this._table_view?-1:this.xy.scale_width;this.set_xy(this._els.dhx_cal_navline[0],a,this.xy.nav_height,0,0);this.set_xy(this._els.dhx_cal_header[0],a-c,this.xy.scale_height,d,this.xy.nav_height+(this._quirks?-1:1));var e=this._els.dhx_cal_navline[0].offsetHeight;if(e>0)this.xy.nav_height=e;var f=this.xy.scale_height+
+this.xy.nav_height+(this._quirks?-2:0);this.set_xy(this._els.dhx_cal_data[0],a,b-(f+2),0,f+2)};scheduler.set_xy=function(a,b,c,d,e){a.style.width=Math.max(0,b)+"px";a.style.height=Math.max(0,c)+"px";if(arguments.length>3)a.style.left=d+"px",a.style.top=e+"px"};
+scheduler.get_elements=function(){for(var a=this._obj.getElementsByTagName("DIV"),b=0;b<a.length;b++){var c=a[b].className;this._els[c]||(this._els[c]=[]);this._els[c].push(a[b]);var d=scheduler.locale.labels[a[b].getAttribute("name")||c];if(d)a[b].innerHTML=d}};
+scheduler.set_actions=function(){for(var a in this._els)if(this._click[a])for(var b=0;b<this._els[a].length;b++)this._els[a][b].onclick=scheduler._click[a];this._obj.onselectstart=function(){return!1};this._obj.onmousemove=function(a){scheduler._on_mouse_move(a||event)};this._obj.onmousedown=function(a){scheduler._on_mouse_down(a||event)};this._obj.onmouseup=function(a){scheduler._on_mouse_up(a||event)};this._obj.ondblclick=function(a){scheduler._on_dbl_click(a||event)}};
+scheduler.select=function(a){if(!this._table_view&&this.getEvent(a)._timed&&this._select_id!=a)this.editStop(!1),this.unselect(),this._select_id=a,this.updateEvent(a)};scheduler.unselect=function(a){if(!(a&&a!=this._select_id)){var b=this._select_id;this._select_id=null;b&&this.updateEvent(b)}};scheduler.getState=function(){return{mode:this._mode,date:this._date,min_date:this._min_date,max_date:this._max_date,editor_id:this._edit_id,lightbox_id:this._lightbox_id,new_event:this._new_event}};
+scheduler._click={dhx_cal_data:function(a){var b=a?a.target:event.srcElement,c=scheduler._locate_event(b),a=a||event;if(!(c&&!scheduler.callEvent("onClick",[c,a])||scheduler.config.readonly))if(c){scheduler.select(c);var d=b.className;if(d.indexOf("_icon")!=-1)scheduler._click.buttons[d.split(" ")[1].replace("icon_","")](c)}else scheduler._close_not_saved()},dhx_cal_prev_button:function(){scheduler._click.dhx_cal_next_button(0,-1)},dhx_cal_next_button:function(a,b){scheduler.setCurrentView(scheduler.date.add(scheduler.date[scheduler._mode+
+"_start"](scheduler._date),b||1,scheduler._mode))},dhx_cal_today_button:function(){scheduler.setCurrentView(new Date)},dhx_cal_tab:function(){var a=this.getAttribute("name"),b=a.substring(0,a.search("_tab"));scheduler.setCurrentView(scheduler._date,b)},buttons:{"delete":function(a){var b=scheduler.locale.labels.confirm_deleting;(!b||confirm(b))&&scheduler.deleteEvent(a)},edit:function(a){scheduler.edit(a)},save:function(){scheduler.editStop(!0)},details:function(a){scheduler.showLightbox(a)},cancel:function(){scheduler.editStop(!1)}}};
+scheduler.addEventNow=function(a,b,c){var d={};a&&a.constructor.toString().match(/object/i)!==null&&(d=a,a=null);var e=(this.config.event_duration||this.config.time_step)*6E4;a||(a=Math.round((new Date).valueOf()/e)*e);var f=new Date(a);if(!b){var g=this.config.first_hour;g>f.getHours()&&(f.setHours(g),a=f.valueOf());b=a+e}var h=new Date(b);f.valueOf()==h.valueOf()&&h.setTime(h.valueOf()+e);d.start_date=d.start_date||f;d.end_date=d.end_date||h;d.text=d.text||this.locale.labels.new_event;d.id=this._drag_id=
+this.uid();this._drag_mode="new-size";this._loading=!0;this.addEvent(d);this.callEvent("onEventCreated",[this._drag_id,c]);this._loading=!1;this._drag_event={};this._on_mouse_up(c)};
+scheduler._on_dbl_click=function(a,b){b=b||a.target||a.srcElement;if(!this.config.readonly){var c=b.className.split(" ")[0];switch(c){case "dhx_scale_holder":case "dhx_scale_holder_now":case "dhx_month_body":case "dhx_wa_day_data":if(!scheduler.config.dblclick_create)break;var d=this._mouse_coords(a),e=this._min_date.valueOf()+(d.y*this.config.time_step+(this._table_view?0:d.x)*1440)*6E4,e=this._correct_shift(e);this.addEventNow(e,null,a);break;case "dhx_body":case "dhx_wa_ev_body":case "dhx_cal_event_line":case "dhx_cal_event_clear":var f=
+this._locate_event(b);if(!this.callEvent("onDblClick",[f,a]))break;this.config.details_on_dblclick||this._table_view||!this.getEvent(f)._timed?this.showLightbox(f):this.edit(f);break;case "":if(b.parentNode)return scheduler._on_dbl_click(a,b.parentNode);default:var g=this["dblclick_"+c];g&&g.call(this,a)}}};
+scheduler._mouse_coords=function(a){var b,c=document.body,d=document.documentElement;b=a.pageX||a.pageY?{x:a.pageX,y:a.pageY}:{x:a.clientX+(c.scrollLeft||d.scrollLeft||0)-c.clientLeft,y:a.clientY+(c.scrollTop||d.scrollTop||0)-c.clientTop};b.x-=getAbsoluteLeft(this._obj)+(this._table_view?0:this.xy.scale_width);b.y-=getAbsoluteTop(this._obj)+this.xy.nav_height+(this._dy_shift||0)+this.xy.scale_height-this._els.dhx_cal_data[0].scrollTop;b.ev=a;var e=this["mouse_"+this._mode];if(e)return e.call(this,
+b);if(this._table_view){for(var f=0,f=1;f<this._colsS.heights.length;f++)if(this._colsS.heights[f]>b.y)break;b.y=(Math.max(0,Math.ceil(b.x/this._cols[0])-1)+Math.max(0,f-1)*7)*1440/this.config.time_step;b.x=0}else b.x=Math.max(0,Math.ceil(b.x/this._cols[0])-1),b.y=Math.max(0,Math.ceil(b.y*60/(this.config.time_step*this.config.hour_size_px))-1)+this.config.first_hour*(60/this.config.time_step);return b};
+scheduler._close_not_saved=function(){if((new Date).valueOf()-(scheduler._new_event||0)>500&&scheduler._edit_id){var a=scheduler.locale.labels.confirm_closing;(!a||confirm(a))&&scheduler.editStop(scheduler.config.positive_closing)}};scheduler._correct_shift=function(a,b){return a-=((new Date(scheduler._min_date)).getTimezoneOffset()-(new Date(a)).getTimezoneOffset())*6E4*(b?-1:1)};
+scheduler._on_mouse_move=function(a){if(this._drag_mode){var b=this._mouse_coords(a);if(!this._drag_pos||b.custom||this._drag_pos.x!=b.x||this._drag_pos.y!=b.y){this._edit_id!=this._drag_id&&this._close_not_saved();this._drag_pos=b;if(this._drag_mode=="create"){this._close_not_saved();this._loading=!0;var c=this._min_date.valueOf()+(b.y*this.config.time_step+(this._table_view?0:b.x)*1440)*6E4,c=this._correct_shift(c);if(!this._drag_start){this._drag_start=c;return}var d=c;if(d==this._drag_start)return;
+this._drag_id=this.uid();this.addEvent(new Date(this._drag_start),new Date(d),this.locale.labels.new_event,this._drag_id,b.fields);this.callEvent("onEventCreated",[this._drag_id,a]);this._loading=!1;this._drag_mode="new-size"}var e=this.getEvent(this._drag_id);if(this._drag_mode=="move")c=this._min_date.valueOf()+(b.y*this.config.time_step+b.x*1440)*6E4,!b.custom&&this._table_view&&(c+=this.date.time_part(e.start_date)*1E3),c=this._correct_shift(c),d=e.end_date.valueOf()-(e.start_date.valueOf()-c);
+else{c=e.start_date.valueOf();if(this._table_view)d=this._min_date.valueOf()+b.y*this.config.time_step*6E4+(b.custom?0:864E5),this._mode=="month"&&(d=this._correct_shift(d,!1));else if(d=this.date.date_part(new Date(e.end_date)).valueOf()+b.y*this.config.time_step*6E4,this._els.dhx_cal_data[0].style.cursor="s-resize",this._mode=="week"||this._mode=="day")d=this._correct_shift(d);if(this._drag_mode=="new-size")if(d<=this._drag_start)var f=b.shift||(this._table_view&&!b.custom?864E5:0),c=d-(b.shift?
+0:f),d=this._drag_start+(f||this.config.time_step*6E4);else c=this._drag_start;else d<=c&&(d=c+this.config.time_step*6E4)}var g=new Date(d-1),h=new Date(c);if(this._table_view||g.getDate()==h.getDate()&&g.getHours()<this.config.last_hour||scheduler._wa&&scheduler._wa._dnd)e.start_date=h,e.end_date=new Date(d),this.config.update_render?this.update_view():this.updateEvent(this._drag_id);this._table_view&&this.for_rendered(this._drag_id,function(a){a.className+=" dhx_in_move"})}}else if(scheduler.checkEvent("onMouseMove")){var i=
+this._locate_event(a.target||a.srcElement);this.callEvent("onMouseMove",[i,a])}};scheduler._on_mouse_context=function(a,b){return this.callEvent("onContextMenu",[this._locate_event(b),a])};
+scheduler._on_mouse_down=function(a,b){if(!this.config.readonly&&!this._drag_mode){b=b||a.target||a.srcElement;if(a.button==2||a.ctrlKey)return this._on_mouse_context(a,b);switch(b.className.split(" ")[0]){case "dhx_cal_event_line":case "dhx_cal_event_clear":if(this._table_view)this._drag_mode="move";break;case "dhx_header":case "dhx_title":case "dhx_wa_ev_body":this._drag_mode="move";break;case "dhx_footer":this._drag_mode="resize";break;case "dhx_scale_holder":case "dhx_scale_holder_now":case "dhx_month_body":case "dhx_matrix_cell":this._drag_mode=
+"create";break;case "":if(b.parentNode)return scheduler._on_mouse_down(a,b.parentNode);default:this._drag_id=this._drag_mode=null}if(this._drag_mode){var c=this._locate_event(b);!this.config["drag_"+this._drag_mode]||!this.callEvent("onBeforeDrag",[c,this._drag_mode,a])?this._drag_mode=this._drag_id=0:(this._drag_id=c,this._drag_event=scheduler._lame_copy({},this._copy_event(this.getEvent(this._drag_id)||{})))}this._drag_start=null}};
+scheduler._on_mouse_up=function(a){if(this._drag_mode&&this._drag_id){this._els.dhx_cal_data[0].style.cursor="default";var b=this.getEvent(this._drag_id);if(this._drag_event._dhx_changed||!this._drag_event.start_date||b.start_date.valueOf()!=this._drag_event.start_date.valueOf()||b.end_date.valueOf()!=this._drag_event.end_date.valueOf()){var c=this._drag_mode=="new-size";if(this.callEvent("onBeforeEventChanged",[b,a,c]))if(c&&this.config.edit_on_create){this.unselect();this._new_event=new Date;if(this._table_view||
+this.config.details_on_create)return this._drag_mode=null,this.showLightbox(this._drag_id);this._drag_pos=!0;this._select_id=this._edit_id=this._drag_id}else this._new_event||this.callEvent(c?"onEventAdded":"onEventChanged",[this._drag_id,this.getEvent(this._drag_id)]);else c?this.deleteEvent(b.id,!0):(this._drag_event._dhx_changed=!1,scheduler._lame_copy(b,this._drag_event),this.updateEvent(b.id))}this._drag_pos&&this.render_view_data()}this._drag_pos=this._drag_mode=null};
+scheduler.update_view=function(){this._reset_scale();if(this._load_mode&&this._load())return this._render_wait=!0;this.render_view_data()};
+scheduler.setCurrentView=function(a,b){a=a||this._date;b=b||this._mode;if(this.callEvent("onBeforeViewChange",[this._mode,this._date,b,a])){var c="dhx_cal_data",d=this._mode==b&&this.config.preserve_scroll?this._els[c][0].scrollTop:!1;if(this[this._mode+"_view"]&&b&&this._mode!=b)this[this._mode+"_view"](!1);this._close_not_saved();var e="dhx_multi_day";this._els[e]&&(this._els[e][0].parentNode.removeChild(this._els[e][0]),this._els[e]=null);this._mode=b;this._date=a;this._table_view=this._mode==
+"month";for(var f=this._els.dhx_cal_tab,g=0;g<f.length;g++)f[g].className="dhx_cal_tab"+(f[g].getAttribute("name")==this._mode+"_tab"?" active":"");var h=this[this._mode+"_view"];h?h(!0):this.update_view();if(typeof d=="number")this._els[c][0].scrollTop=d;this.callEvent("onViewChange",[this._mode,this._date])}};
+scheduler._render_x_header=function(a,b,c,d){var e=document.createElement("DIV");e.className="dhx_scale_bar";this.set_xy(e,this._cols[a]-1,this.xy.scale_height-2,b,0);e.innerHTML=this.templates[this._mode+"_scale_date"](c,this._mode);d.appendChild(e)};
+scheduler._reset_scale=function(){if(this.templates[this._mode+"_date"]){var a=this._els.dhx_cal_header[0],b=this._els.dhx_cal_data[0],c=this.config;a.innerHTML="";b.scrollTop=0;b.innerHTML="";var d=(c.readonly||!c.drag_resize?" dhx_resize_denied":"")+(c.readonly||!c.drag_move?" dhx_move_denied":"");if(d)b.className="dhx_cal_data"+d;this._cols=[];this._colsS={height:0};this._dy_shift=0;this.set_sizes();var e=parseInt(a.style.width),f=0,g,h,i,k;h=this.date[this._mode+"_start"](new Date(this._date.valueOf()));
+g=i=this._table_view?scheduler.date.week_start(h):h;k=this.date.date_part(new Date);var j=scheduler.date.add(h,1,this._mode),l=7;if(!this._table_view){var o=this.date["get_"+this._mode+"_end"];o&&(j=o(h));l=Math.round((j.valueOf()-h.valueOf())/864E5)}this._min_date=g;this._els.dhx_cal_date[0].innerHTML=this.templates[this._mode+"_date"](h,j,this._mode);for(var m=0;m<l;m++){this._cols[m]=Math.floor(e/(l-m));this._render_x_header(m,f,g,a);if(!this._table_view){var n=document.createElement("DIV"),p=
+"dhx_scale_holder";g.valueOf()==k.valueOf()&&(p="dhx_scale_holder_now");n.className=p+" "+this.templates.week_date_class(g,k);this.set_xy(n,this._cols[m]-1,c.hour_size_px*(c.last_hour-c.first_hour),f+this.xy.scale_width+1,0);b.appendChild(n);this.callEvent("onScaleAdd",[n,g])}g=this.date.add(g,1,"day");e-=this._cols[m];f+=this._cols[m];this._colsS[m]=(this._cols[m-1]||0)+(this._colsS[m-1]||(this._table_view?0:this.xy.scale_width+2));this._colsS.col_length=l+1}this._max_date=g;this._colsS[l]=this._cols[l-
+1]+this._colsS[l-1];if(this._table_view)this._reset_month_scale(b,h,i);else{this._reset_hours_scale(b,h,i);if(c.multi_day){var q="dhx_multi_day";this._els[q]&&(this._els[q][0].parentNode.removeChild(this._els[q][0]),this._els[q]=null);var v=this._els.dhx_cal_navline[0],s=v.offsetHeight+this._els.dhx_cal_header[0].offsetHeight+1,r=document.createElement("DIV");r.className=q;r.style.visibility="hidden";this.set_xy(r,this._colsS[this._colsS.col_length-1]+this.xy.scroll_width,0,0,s);b.parentNode.insertBefore(r,
+b);var u=r.cloneNode(!0);u.className=q+"_icon";u.style.visibility="hidden";this.set_xy(u,this.xy.scale_width,0,0,s);r.appendChild(u);this._els[q]=[r,u];this._els[q][0].onclick=this._click.dhx_cal_data}if(this.config.mark_now){var t=new Date;if(t<this._max_date&&t>this._min_date&&t.getHours()>=this.config.first_hour&&t.getHours()<this.config.last_hour){var A=this.locate_holder_day(t),B=t.getHours()*60+t.getMinutes(),y=document.createElement("DIV");y.className="dhx_now_time";y.style.top=Math.round((B*
+6E4-this.config.first_hour*36E5)*this.config.hour_size_px/36E5)%(this.config.hour_size_px*24)+1+"px";b.childNodes[A].appendChild(y)}}}}};
+scheduler._reset_hours_scale=function(a){var b=document.createElement("DIV");b.className="dhx_scale_holder";for(var c=new Date(1980,1,1,this.config.first_hour,0,0),d=this.config.first_hour*1;d<this.config.last_hour;d++){var e=document.createElement("DIV");e.className="dhx_scale_hour";e.style.height=this.config.hour_size_px-(this._quirks?0:1)+"px";e.style.width=this.xy.scale_width+"px";e.innerHTML=scheduler.templates.hour_scale(c);b.appendChild(e);c=this.date.add(c,1,"hour")}a.appendChild(b);if(this.config.scroll_hour)a.scrollTop=
+this.config.hour_size_px*(this.config.scroll_hour-this.config.first_hour)};
+scheduler._reset_month_scale=function(a,b,c){var d=scheduler.date.add(b,1,"month"),e=new Date;this.date.date_part(e);this.date.date_part(c);var f=Math.ceil(Math.round((d.valueOf()-c.valueOf())/864E5)/7),g=[],h=Math.floor(a.clientHeight/f)-22;this._colsS.height=h+22;for(var i=this._colsS.heights=[],k=0;k<=7;k++)g[k]=" style='height:"+h+"px; width:"+((this._cols[k]||0)-1)+"px;' ";var j=0;this._min_date=c;for(var l="<table cellpadding='0' cellspacing='0'>",k=0;k<f;k++){l+="<tr>";for(var o=0;o<7;o++){l+=
+"<td";var m="";c<b?m="dhx_before":c>=d?m="dhx_after":c.valueOf()==e.valueOf()&&(m="dhx_now");l+=" class='"+m+" "+this.templates.month_date_class(c,e)+"' ";l+="><div class='dhx_month_head'>"+this.templates.month_day(c)+"</div><div class='dhx_month_body' "+g[o]+"></div></td>";c=this.date.add(c,1,"day")}l+="</tr>";i[k]=j;j+=this._colsS.height}l+="</table>";this._max_date=c;a.innerHTML=l;return c};
+scheduler.getLabel=function(a,b){for(var c=this.config.lightbox.sections,d=0;d<c.length;d++)if(c[d].map_to==a)for(var e=c[d].options,f=0;f<e.length;f++)if(e[f].key==b)return e[f].label;return""};scheduler.updateCollection=function(a,b){var c=scheduler.serverList(a);if(!c)return!1;c.splice(0,c.length);c.push.apply(c,b||[]);scheduler.callEvent("onOptionsLoad",[]);scheduler.resetLightbox();return!0};scheduler._lame_copy=function(a,b){for(var c in b)a[c]=b[c];return a};
+scheduler.date={init:function(){for(var a=scheduler.locale.date.month_short,b=scheduler.locale.date.month_short_hash={},c=0;c<a.length;c++)b[a[c]]=c;a=scheduler.locale.date.month_full;b=scheduler.locale.date.month_full_hash={};for(c=0;c<a.length;c++)b[a[c]]=c},date_part:function(a){a.setHours(0);a.setMinutes(0);a.setSeconds(0);a.setMilliseconds(0);return a},time_part:function(a){return(a.valueOf()/1E3-a.getTimezoneOffset()*60)%86400},week_start:function(a){var b=a.getDay();scheduler.config.start_on_monday&&
+(b===0?b=6:b--);return this.date_part(this.add(a,-1*b,"day"))},month_start:function(a){a.setDate(1);return this.date_part(a)},year_start:function(a){a.setMonth(0);return this.month_start(a)},day_start:function(a){return this.date_part(a)},add:function(a,b,c){var d=new Date(a.valueOf());switch(c){case "day":d.setDate(d.getDate()+b);if(a.getDate()==d.getDate()&&b){do d.setTime(d.getTime()+36E5);while(a.getDate()==d.getDate())}break;case "week":d.setDate(d.getDate()+7*b);break;case "month":d.setMonth(d.getMonth()+
+b);break;case "year":d.setYear(d.getFullYear()+b);break;case "hour":d.setHours(d.getHours()+b);break;case "minute":d.setMinutes(d.getMinutes()+b);break;default:return scheduler.date["add_"+c](a,b,c)}return d},to_fixed:function(a){return a<10?"0"+a:a},copy:function(a){return new Date(a.valueOf())},date_to_str:function(a,b){a=a.replace(/%[a-zA-Z]/g,function(a){switch(a){case "%d":return'"+scheduler.date.to_fixed(date.getDate())+"';case "%m":return'"+scheduler.date.to_fixed((date.getMonth()+1))+"';case "%j":return'"+date.getDate()+"';
+case "%n":return'"+(date.getMonth()+1)+"';case "%y":return'"+scheduler.date.to_fixed(date.getFullYear()%100)+"';case "%Y":return'"+date.getFullYear()+"';case "%D":return'"+scheduler.locale.date.day_short[date.getDay()]+"';case "%l":return'"+scheduler.locale.date.day_full[date.getDay()]+"';case "%M":return'"+scheduler.locale.date.month_short[date.getMonth()]+"';case "%F":return'"+scheduler.locale.date.month_full[date.getMonth()]+"';case "%h":return'"+scheduler.date.to_fixed((date.getHours()+11)%12+1)+"';
+case "%g":return'"+((date.getHours()+11)%12+1)+"';case "%G":return'"+date.getHours()+"';case "%H":return'"+scheduler.date.to_fixed(date.getHours())+"';case "%i":return'"+scheduler.date.to_fixed(date.getMinutes())+"';case "%a":return'"+(date.getHours()>11?"pm":"am")+"';case "%A":return'"+(date.getHours()>11?"PM":"AM")+"';case "%s":return'"+scheduler.date.to_fixed(date.getSeconds())+"';case "%W":return'"+scheduler.date.to_fixed(scheduler.date.getISOWeek(date))+"';default:return a}});b&&(a=a.replace(/date\.get/g,
+"date.getUTC"));return new Function("date",'return "'+a+'";')},str_to_date:function(a,b){for(var c="var temp=date.split(/[^0-9a-zA-Z]+/g);",d=a.match(/%[a-zA-Z]/g),e=0;e<d.length;e++)switch(d[e]){case "%j":case "%d":c+="set[2]=temp["+e+"]||1;";break;case "%n":case "%m":c+="set[1]=(temp["+e+"]||1)-1;";break;case "%y":c+="set[0]=temp["+e+"]*1+(temp["+e+"]>50?1900:2000);";break;case "%g":case "%G":case "%h":case "%H":c+="set[3]=temp["+e+"]||0;";break;case "%i":c+="set[4]=temp["+e+"]||0;";break;case "%Y":c+=
+"set[0]=temp["+e+"]||0;";break;case "%a":case "%A":c+="set[3]=set[3]%12+((temp["+e+"]||'').toLowerCase()=='am'?0:12);";break;case "%s":c+="set[5]=temp["+e+"]||0;";break;case "%M":c+="set[1]=scheduler.locale.date.month_short_hash[temp["+e+"]]||0;";break;case "%F":c+="set[1]=scheduler.locale.date.month_full_hash[temp["+e+"]]||0;"}var f="set[0],set[1],set[2],set[3],set[4],set[5]";b&&(f=" Date.UTC("+f+")");return new Function("date","var set=[0,0,1,0,0,0]; "+c+" return new Date("+f+");")},getISOWeek:function(a){if(!a)return!1;
+var b=a.getDay();b===0&&(b=7);var c=new Date(a.valueOf());c.setDate(a.getDate()+(4-b));var d=c.getFullYear(),e=Math.round((c.getTime()-(new Date(d,0,1)).getTime())/864E5),f=1+Math.floor(e/7);return f},getUTCISOWeek:function(a){return this.getISOWeek(a)}};
+scheduler.locale={date:{month_full:"January,February,March,April,May,June,July,August,September,October,November,December".split(","),month_short:"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec".split(","),day_full:"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday".split(","),day_short:"Sun,Mon,Tue,Wed,Thu,Fri,Sat".split(",")},labels:{dhx_cal_today_button:"Today",day_tab:"Day",week_tab:"Week",month_tab:"Month",new_event:"New event",icon_save:"Save",icon_cancel:"Cancel",icon_details:"Details",
+icon_edit:"Edit",icon_delete:"Delete",confirm_closing:"",confirm_deleting:"Event will be deleted permanently, are you sure?",section_description:"Description",section_time:"Time period",full_day:"Full day",confirm_recurring:"Do you want to edit the whole set of repeated events?",section_recurring:"Repeat event",button_recurring:"Disabled",button_recurring_open:"Enabled",agenda_tab:"Agenda",date:"Date",description:"Description",year_tab:"Year",week_agenda_tab:"Agenda"}};
+scheduler.config={default_date:"%j %M %Y",month_date:"%F %Y",load_date:"%Y-%m-%d",week_date:"%l",day_date:"%D, %F %j",hour_date:"%H:%i",month_day:"%d",xml_date:"%m/%d/%Y %H:%i",api_date:"%d-%m-%Y %H:%i",hour_size_px:42,time_step:5,start_on_monday:1,first_hour:0,last_hour:24,readonly:!1,drag_resize:1,drag_move:1,drag_create:1,dblclick_create:1,edit_on_create:1,details_on_create:0,click_form_details:0,cascade_event_display:!1,cascade_event_count:4,cascade_event_margin:30,drag_lightbox:!0,preserve_scroll:!0,
+server_utc:!1,positive_closing:!1,icons_edit:["icon_save","icon_cancel"],icons_select:["icon_details","icon_edit","icon_delete"],buttons_left:["dhx_save_btn","dhx_cancel_btn"],buttons_right:["dhx_delete_btn"],lightbox:{sections:[{name:"description",height:200,map_to:"text",type:"textarea",focus:!0},{name:"time",height:72,type:"time",map_to:"auto"}]},repeat_date_of_end:"01.01.2010"};scheduler.templates={};
+scheduler.init_templates=function(){var a=scheduler.date.date_to_str,b=scheduler.config,c=function(a,b){for(var c in b)a[c]||(a[c]=b[c])};c(scheduler.templates,{day_date:a(b.default_date),month_date:a(b.month_date),week_date:function(a,b){return scheduler.templates.day_date(a)+" &ndash; "+scheduler.templates.day_date(scheduler.date.add(b,-1,"day"))},day_scale_date:a(b.default_date),month_scale_date:a(b.week_date),week_scale_date:a(b.day_date),hour_scale:a(b.hour_date),time_picker:a(b.hour_date),event_date:a(b.hour_date),
+month_day:a(b.month_day),xml_date:scheduler.date.str_to_date(b.xml_date,b.server_utc),load_format:a(b.load_date,b.server_utc),xml_format:a(b.xml_date,b.server_utc),api_date:scheduler.date.str_to_date(b.api_date),event_header:function(a,b){return scheduler.templates.event_date(a)+" - "+scheduler.templates.event_date(b)},event_text:function(a,b,c){return c.text},event_class:function(){return""},month_date_class:function(){return""},week_date_class:function(){return""},event_bar_date:function(a){return scheduler.templates.event_date(a)+
+" "},event_bar_text:function(a,b,c){return c.text}});this.callEvent("onTemplatesReady",[])};scheduler.uid=function(){if(!this._seed)this._seed=(new Date).valueOf();return this._seed++};scheduler._events={};scheduler.clearAll=function(){this._events={};this._loaded={};this.clear_view()};
+scheduler.addEvent=function(a,b,c,d,e){if(!arguments.length)return this.addEventNow();var f=a;if(arguments.length!=1)f=e||{},f.start_date=a,f.end_date=b,f.text=c,f.id=d;f.id=f.id||scheduler.uid();f.text=f.text||"";if(typeof f.start_date=="string")f.start_date=this.templates.api_date(f.start_date);if(typeof f.end_date=="string")f.end_date=this.templates.api_date(f.end_date);var g=(this.config.event_duration||this.config.time_step)*6E4;f.start_date.valueOf()==f.end_date.valueOf()&&f.end_date.setTime(f.end_date.valueOf()+
+g);f._timed=this.is_one_day_event(f);var h=!this._events[f.id];this._events[f.id]=f;this.event_updated(f);this._loading||this.callEvent(h?"onEventAdded":"onEventChanged",[f.id,f])};scheduler.deleteEvent=function(a,b){var c=this._events[a];if(b||this.callEvent("onBeforeEventDelete",[a,c])&&this.callEvent("onConfirmedBeforeEventDelete",[a,c]))c&&(delete this._events[a],this.unselect(a),this.event_updated(c)),this.callEvent("onEventDeleted",[a])};scheduler.getEvent=function(a){return this._events[a]};
+scheduler.setEvent=function(a,b){this._events[a]=b};scheduler.for_rendered=function(a,b){for(var c=this._rendered.length-1;c>=0;c--)this._rendered[c].getAttribute("event_id")==a&&b(this._rendered[c],c)};scheduler.changeEventId=function(a,b){if(a!=b){var c=this._events[a];if(c)c.id=b,this._events[b]=c,delete this._events[a];this.for_rendered(a,function(a){a.setAttribute("event_id",b)});if(this._select_id==a)this._select_id=b;if(this._edit_id==a)this._edit_id=b;this.callEvent("onEventIdChange",[a,b])}};
+(function(){for(var a="text,Text,start_date,StartDate,end_date,EndDate".split(","),b=function(a){return function(b){return scheduler.getEvent(b)[a]}},c=function(a){return function(b,c){var d=scheduler.getEvent(b);d[a]=c;d._changed=!0;d._timed=this.is_one_day_event(d);scheduler.event_updated(d,!0)}},d=0;d<a.length;d+=2)scheduler["getEvent"+a[d+1]]=b(a[d]),scheduler["setEvent"+a[d+1]]=c(a[d])})();scheduler.event_updated=function(a){this.is_visible_events(a)?this.render_view_data():this.clear_event(a.id)};
+scheduler.is_visible_events=function(a){return a.start_date<this._max_date&&this._min_date<a.end_date};scheduler.is_one_day_event=function(a){var b=a.end_date.getDate()-a.start_date.getDate();return b?(b<0&&(b=Math.ceil((a.end_date.valueOf()-a.start_date.valueOf())/864E5)),b==1&&!a.end_date.getHours()&&!a.end_date.getMinutes()&&(a.start_date.getHours()||a.start_date.getMinutes())):a.start_date.getMonth()==a.end_date.getMonth()&&a.start_date.getFullYear()==a.end_date.getFullYear()};
+scheduler.get_visible_events=function(){var a=[],b=this["filter_"+this._mode],c;for(c in this._events)if(this.is_visible_events(this._events[c])&&(this._table_view||this.config.multi_day||this._events[c]._timed))(!b||b(c,this._events[c]))&&a.push(this._events[c]);return a};
+scheduler.render_view_data=function(a,b){if(!a){if(this._not_render){this._render_wait=!0;return}this._render_wait=!1;this.clear_view();a=this.get_visible_events()}if(this.config.multi_day&&!this._table_view){for(var c=[],d=[],e=0;e<a.length;e++)a[e]._timed?c.push(a[e]):d.push(a[e]);this._rendered_location=this._els.dhx_multi_day[0];this._table_view=!0;this.render_data(d,b);this._table_view=!1;this._rendered_location=this._els.dhx_cal_data[0];this._table_view=!1;this.render_data(c,b)}else this._rendered_location=
+this._els.dhx_cal_data[0],this.render_data(a,b)};scheduler.render_data=function(a,b){for(var a=this._pre_render_events(a,b),c=0;c<a.length;c++)this._table_view?this.render_event_bar(a[c]):this.render_event(a[c])};
+scheduler._pre_render_events=function(a,b){var c=this.xy.bar_height,d=this._colsS.heights,e=this._colsS.heights=[0,0,0,0,0,0,0],f=this._els.dhx_cal_data[0],a=this._table_view?this._pre_render_events_table(a,b):this._pre_render_events_line(a,b);if(this._table_view)if(b)this._colsS.heights=d;else{var g=f.firstChild;if(g.rows){for(var h=0;h<g.rows.length;h++){e[h]++;if(e[h]*c>this._colsS.height-22){for(var i=g.rows[h].cells,k=0;k<i.length;k++)i[k].childNodes[1].style.height=e[h]*c+"px";e[h]=(e[h-1]||
+0)+i[0].offsetHeight}e[h]=(e[h-1]||0)+g.rows[h].cells[0].offsetHeight}e.unshift(0);if(g.parentNode.offsetHeight<g.parentNode.scrollHeight&&!g._h_fix){for(h=0;h<g.rows.length;h++){var j=g.rows[h].cells[6].childNodes[0],l=j.offsetWidth-scheduler.xy.scroll_width+"px";j.style.width=l;j.nextSibling.style.width=l}g._h_fix=!0}}else if(!a.length&&this._els.dhx_multi_day[0].style.visibility=="visible"&&(e[0]=-1),a.length||e[0]==-1){var o=g.parentNode.childNodes,m=(e[0]+1)*c+1+"px";f.style.top=this._els.dhx_cal_navline[0].offsetHeight+
+this._els.dhx_cal_header[0].offsetHeight+parseInt(m)+"px";f.style.height=this._obj.offsetHeight-parseInt(f.style.top)-(this.xy.margin_top||0)+"px";var n=this._els.dhx_multi_day[0];n.style.height=m;n.style.visibility=e[0]==-1?"hidden":"visible";n=this._els.dhx_multi_day[1];n.style.height=m;n.style.visibility=e[0]==-1?"hidden":"visible";n.className=e[0]?"dhx_multi_day_icon":"dhx_multi_day_icon_small";this._dy_shift=(e[0]+1)*c;e[0]=0}}return a};
+scheduler._get_event_sday=function(a){return Math.floor((a.start_date.valueOf()-this._min_date.valueOf())/864E5)};
+scheduler._pre_render_events_line=function(a,b){a.sort(function(a,b){return a.start_date.valueOf()==b.start_date.valueOf()?a.id>b.id?1:-1:a.start_date>b.start_date?1:-1});for(var c=[],d=[],e=0;e<a.length;e++){var f=a[e],g=f.start_date.getHours(),h=f.end_date.getHours();f._sday=this._get_event_sday(f);c[f._sday]||(c[f._sday]=[]);if(!b){f._inner=!1;for(var i=c[f._sday];i.length&&i[i.length-1].end_date<=f.start_date;)i.splice(i.length-1,1);for(var k=!1,j=0;j<i.length;j++)if(i[j].end_date.valueOf()<f.start_date.valueOf()){k=
+!0;f._sorder=i[j]._sorder;i.splice(j,1);f._inner=!0;break}if(i.length)i[i.length-1]._inner=!0;if(!k)if(i.length)if(i.length<=i[i.length-1]._sorder){if(i[i.length-1]._sorder)for(j=0;j<i.length;j++){var l=!1;for(k=0;k<i.length;k++)if(i[k]._sorder==j){l=!0;break}if(!l){f._sorder=j;break}}else f._sorder=0;f._inner=!0}else{l=i[0]._sorder;for(j=1;j<i.length;j++)if(i[j]._sorder>l)l=i[j]._sorder;f._sorder=l+1;f._inner=!1}else f._sorder=0;i.push(f);i.length>(i.max_count||0)?(i.max_count=i.length,f._count=
+i.length):f._count=f._count?f._count:1}if(g<this.config.first_hour||h>=this.config.last_hour)if(d.push(f),a[e]=f=this._copy_event(f),g<this.config.first_hour&&(f.start_date.setHours(this.config.first_hour),f.start_date.setMinutes(0)),h>=this.config.last_hour&&(f.end_date.setMinutes(0),f.end_date.setHours(this.config.last_hour)),f.start_date>f.end_date||g==this.config.last_hour)a.splice(e,1),e--}if(!b){for(e=0;e<a.length;e++)a[e]._count=c[a[e]._sday].max_count;for(e=0;e<d.length;e++)d[e]._count=c[d[e]._sday].max_count}return a};
+scheduler._time_order=function(a){a.sort(function(a,c){return a.start_date.valueOf()==c.start_date.valueOf()?a._timed&&!c._timed?1:!a._timed&&c._timed?-1:a.id>c.id?1:-1:a.start_date>c.start_date?1:-1})};
+scheduler._pre_render_events_table=function(a,b){this._time_order(a);for(var c=[],d=[[],[],[],[],[],[],[]],e=this._colsS.heights,f,g=this._cols.length,h=0;h<a.length;h++){var i=a[h],k=f||i.start_date,j=i.end_date;if(k<this._min_date)k=this._min_date;if(j>this._max_date)j=this._max_date;var l=this.locate_holder_day(k,!1,i);i._sday=l%g;var o=this.locate_holder_day(j,!0,i)||g;i._eday=o%g||g;i._length=o-l;i._sweek=Math.floor((this._correct_shift(k.valueOf(),1)-this._min_date.valueOf())/(864E5*g));var m=
+d[i._sweek],n;for(n=0;n<m.length;n++)if(m[n]._eday<=i._sday)break;if(!i._sorder||!b)i._sorder=n;if(i._sday+i._length<=g)f=null,c.push(i),m[n]=i,e[i._sweek]=m.length-1;else{var p=this._copy_event(i);p._length=g-i._sday;p._eday=g;p._sday=i._sday;p._sweek=i._sweek;p._sorder=i._sorder;p.end_date=this.date.add(k,p._length,"day");c.push(p);m[n]=p;f=p.end_date;e[i._sweek]=m.length-1;h--}}return c};scheduler._copy_dummy=function(){this.start_date=new Date(this.start_date);this.end_date=new Date(this.end_date)};
+scheduler._copy_event=function(a){this._copy_dummy.prototype=a;return new this._copy_dummy};scheduler._rendered=[];scheduler.clear_view=function(){for(var a=0;a<this._rendered.length;a++){var b=this._rendered[a];b.parentNode&&b.parentNode.removeChild(b)}this._rendered=[]};scheduler.updateEvent=function(a){var b=this.getEvent(a);this.clear_event(a);b&&this.is_visible_events(b)&&this.render_view_data([b],!0)};
+scheduler.clear_event=function(a){this.for_rendered(a,function(a,c){a.parentNode&&a.parentNode.removeChild(a);scheduler._rendered.splice(c,1)})};
+scheduler.render_event=function(a){var b=scheduler.xy.menu_width;if(!(a._sday<0)){var c=scheduler.locate_holder(a._sday);if(c){var d=a.start_date.getHours()*60+a.start_date.getMinutes(),e=a.end_date.getHours()*60+a.end_date.getMinutes()||scheduler.config.last_hour*60,f=Math.round((d*6E4-this.config.first_hour*36E5)*this.config.hour_size_px/36E5)%(this.config.hour_size_px*24)+1,g=Math.max(scheduler.xy.min_event_height,(e-d)*this.config.hour_size_px/60)+1,h=Math.floor((c.clientWidth-b)/a._count),i=
+a._sorder*h+1;a._inner||(h*=a._count-a._sorder);if(this.config.cascade_event_display)var k=this.config.cascade_event_count,j=this.config.cascade_event_margin,i=a._sorder%k*j,l=a._inner?(a._count-a._sorder-1)%k*j/2:0,h=Math.floor(c.clientWidth-b-i-l);var o=this._render_v_bar(a.id,b+i,f,h,g,a._text_style,scheduler.templates.event_header(a.start_date,a.end_date,a),scheduler.templates.event_text(a.start_date,a.end_date,a));this._rendered.push(o);c.appendChild(o);i=i+parseInt(c.style.left,10)+b;if(this._edit_id==
+a.id){o.style.zIndex=1;h=Math.max(h-4,scheduler.xy.editor_width);o=document.createElement("DIV");o.setAttribute("event_id",a.id);this.set_xy(o,h,g-20,i,f+14);o.className="dhx_cal_editor";var m=document.createElement("DIV");this.set_xy(m,h-6,g-26);m.style.cssText+=";margin:2px 2px 2px 2px;overflow:hidden;";o.appendChild(m);this._els.dhx_cal_data[0].appendChild(o);this._rendered.push(o);m.innerHTML="<textarea class='dhx_cal_editor'>"+a.text+"</textarea>";if(this._quirks7)m.firstChild.style.height=g-
+12+"px";this._editor=m.firstChild;this._editor.onkeypress=function(a){if((a||event).shiftKey)return!0;var b=(a||event).keyCode;b==scheduler.keys.edit_save&&scheduler.editStop(!0);b==scheduler.keys.edit_cancel&&scheduler.editStop(!1)};this._editor.onselectstart=function(a){return(a||event).cancelBubble=!0};m.firstChild.focus();this._els.dhx_cal_data[0].scrollLeft=0;m.firstChild.select()}if(this._select_id==a.id){if(this.config.cascade_event_display&&this._drag_mode)o.style.zIndex=1;for(var n=this.config["icons_"+
+(this._edit_id==a.id?"edit":"select")],p="",q=a.color?"background-color:"+a.color+";":"",v=a.textColor?"color:"+a.textColor+";":"",s=0;s<n.length;s++)p+="<div class='dhx_menu_icon "+n[s]+"' style='"+q+""+v+"' title='"+this.locale.labels[n[s]]+"'></div>";var r=this._render_v_bar(a.id,i-b+1,f,b,n.length*20+26,"","<div style='"+q+""+v+"' class='dhx_menu_head'></div>",p,!0);r.style.left=i-b+1;this._els.dhx_cal_data[0].appendChild(r);this._rendered.push(r)}}}};
+scheduler._render_v_bar=function(a,b,c,d,e,f,g,h,i){var k=document.createElement("DIV"),j=this.getEvent(a),l="dhx_cal_event",o=scheduler.templates.event_class(j.start_date,j.end_date,j);o&&(l=l+" "+o);var m=j.color?"background-color:"+j.color+";":"",n=j.textColor?"color:"+j.textColor+";":"",p='<div event_id="'+a+'" class="'+l+'" style="position:absolute; top:'+c+"px; left:"+b+"px; width:"+(d-4)+"px; height:"+e+"px;"+(f||"")+'">';p+='<div class="dhx_header" style=" width:'+(d-6)+"px;"+m+'" >&nbsp;</div>';
+p+='<div class="dhx_title" style="'+m+""+n+'">'+g+"</div>";p+='<div class="dhx_body" style=" width:'+(d-(this._quirks?4:14))+"px; height:"+(e-(this._quirks?20:30))+"px;"+m+""+n+'">'+h+"</div>";p+='<div class="dhx_footer" style=" width:'+(d-8)+"px;"+(i?" margin-top:-1px;":"")+""+m+""+n+'" ></div></div>';k.innerHTML=p;return k.firstChild};scheduler.locate_holder=function(a){return this._mode=="day"?this._els.dhx_cal_data[0].firstChild:this._els.dhx_cal_data[0].childNodes[a]};
+scheduler.locate_holder_day=function(a,b){var c=Math.floor((this._correct_shift(a,1)-this._min_date)/864E5);b&&this.date.time_part(a)&&c++;return c};
+scheduler.render_event_bar=function(a){var b=this._rendered_location,c=this._colsS[a._sday],d=this._colsS[a._eday];d==c&&(d=this._colsS[a._eday+1]);var e=this.xy.bar_height,f=this._colsS.heights[a._sweek]+(this._colsS.height?this.xy.month_scale_height+2:2)+a._sorder*e,g=document.createElement("DIV"),h=a._timed?"dhx_cal_event_clear":"dhx_cal_event_line",i=scheduler.templates.event_class(a.start_date,a.end_date,a);i&&(h=h+" "+i);var k=a.color?"background-color:"+a.color+";":"",j=a.textColor?"color:"+
+a.textColor+";":"",l='<div event_id="'+a.id+'" class="'+h+'" style="position:absolute; top:'+f+"px; left:"+c+"px; width:"+(d-c-15)+"px;"+j+""+k+""+(a._text_style||"")+'">';a._timed&&(l+=scheduler.templates.event_bar_date(a.start_date,a.end_date,a));l+=scheduler.templates.event_bar_text(a.start_date,a.end_date,a)+"</div>";l+="</div>";g.innerHTML=l;this._rendered.push(g.firstChild);b.appendChild(g.firstChild)};
+scheduler._locate_event=function(a){for(var b=null;a&&!b&&a.getAttribute;)b=a.getAttribute("event_id"),a=a.parentNode;return b};scheduler.edit=function(a){if(this._edit_id!=a)this.editStop(!1,a),this._edit_id=a,this.updateEvent(a)};scheduler.editStop=function(a,b){if(!(b&&this._edit_id==b)){var c=this.getEvent(this._edit_id);if(c){if(a)c.text=this._editor.value;this._editor=this._edit_id=null;this.updateEvent(c.id);this._edit_stop_event(c,a)}}};
+scheduler._edit_stop_event=function(a,b){this._new_event?(b?this.callEvent("onEventAdded",[a.id,a]):this.deleteEvent(a.id,!0),this._new_event=null):b&&this.callEvent("onEventChanged",[a.id,a])};scheduler.getEvents=function(a,b){var c=[],d;for(d in this._events){var e=this._events[d];e&&e.start_date<b&&e.end_date>a&&c.push(e)}return c};scheduler._loaded={};
+scheduler._load=function(a,b){a=a||this._load_url;a+=(a.indexOf("?")==-1?"?":"&")+"timeshift="+(new Date).getTimezoneOffset();this.config.prevent_cache&&(a+="&uid="+this.uid());var c,b=b||this._date;if(this._load_mode){for(var d=this.templates.load_format,b=this.date[this._load_mode+"_start"](new Date(b.valueOf()));b>this._min_date;)b=this.date.add(b,-1,this._load_mode);c=b;for(var e=!0;c<this._max_date;)c=this.date.add(c,1,this._load_mode),this._loaded[d(b)]&&e?b=this.date.add(b,1,this._load_mode):
+e=!1;var f=c;do c=f,f=this.date.add(c,-1,this._load_mode);while(f>b&&this._loaded[d(f)]);if(c<=b)return!1;for(dhtmlxAjax.get(a+"&from="+d(b)+"&to="+d(c),function(a){scheduler.on_load(a)});b<c;)this._loaded[d(b)]=!0,b=this.date.add(b,1,this._load_mode)}else dhtmlxAjax.get(a,function(a){scheduler.on_load(a)});this.callEvent("onXLS",[]);return!0};
+scheduler.on_load=function(a){this._loading=!0;var b;b=this._process?this[this._process].parse(a.xmlDoc.responseText):this._magic_parser(a);this._not_render=!0;for(var c=0;c<b.length;c++)this.callEvent("onEventLoading",[b[c]])&&this.addEvent(b[c]);this._not_render=!1;this._render_wait&&this.render_view_data();this._loading=!1;this._after_call&&this._after_call();this._after_call=null;this.callEvent("onXLE",[])};scheduler.json={};
+scheduler.json.parse=function(a){if(typeof a=="string")eval("scheduler._temp = "+a+";"),a=scheduler._temp;for(var b=[],c=0;c<a.length;c++)a[c].start_date=scheduler.templates.xml_date(a[c].start_date),a[c].end_date=scheduler.templates.xml_date(a[c].end_date),b.push(a[c]);return b};scheduler.parse=function(a,b){this._process=b;this.on_load({xmlDoc:{responseText:a}})};scheduler.load=function(a,b,c){if(typeof b=="string")this._process=b,b=c;this._load_url=a;this._after_call=b;this._load(a,this._date)};
+scheduler.setLoadMode=function(a){a=="all"&&(a="");this._load_mode=a};scheduler.refresh=function(){alert("not implemented")};scheduler.serverList=function(a,b){return b?this.serverList[a]=b.slice(0):this.serverList[a]=this.serverList[a]||[]};scheduler._userdata={};
+scheduler._magic_parser=function(a){var b;if(!a.getXMLTopNode){var c=a.xmlDoc.responseText,a=new dtmlXMLLoaderObject(function(){});a.loadXMLString(c)}b=a.getXMLTopNode("data");if(b.tagName!="data")return[];for(var d=a.doXPath("//coll_options"),e=0;e<d.length;e++){var f=d[e].getAttribute("for"),g=this.serverList[f];if(g){g.splice(0,g.length);for(var h=a.doXPath(".//item",d[e]),i=0;i<h.length;i++){for(var k=h[i],j=k.attributes,l={key:h[i].getAttribute("value"),label:h[i].getAttribute("label")},o=0;o<
+j.length;o++){var m=j[o];if(!(m.nodeName=="value"||m.nodeName=="label"))l[m.nodeName]=m.nodeValue}g.push(l)}}}d.length&&scheduler.callEvent("onOptionsLoad",[]);for(var n=a.doXPath("//userdata"),e=0;e<n.length;e++){var p=this.xmlNodeToJSON(n[e]);this._userdata[p.name]=p.text}var q=[];b=a.doXPath("//event");for(e=0;e<b.length;e++)q[e]=this.xmlNodeToJSON(b[e]),q[e].text=q[e].text||q[e]._tagvalue,q[e].start_date=this.templates.xml_date(q[e].start_date),q[e].end_date=this.templates.xml_date(q[e].end_date);
+return q};scheduler.xmlNodeToJSON=function(a){for(var b={},c=0;c<a.attributes.length;c++)b[a.attributes[c].name]=a.attributes[c].value;for(c=0;c<a.childNodes.length;c++){var d=a.childNodes[c];d.nodeType==1&&(b[d.tagName]=d.firstChild?d.firstChild.nodeValue:"")}if(!b.text)b.text=a.firstChild?a.firstChild.nodeValue:"";return b};
+scheduler.attachEvent("onXLS",function(){if(this.config.show_loading===!0){var a;a=this.config.show_loading=document.createElement("DIV");a.className="dhx_loading";a.style.left=Math.round((this._x-128)/2)+"px";a.style.top=Math.round((this._y-15)/2)+"px";this._obj.appendChild(a)}});scheduler.attachEvent("onXLE",function(){var a;if((a=this.config.show_loading)&&typeof a=="object")this._obj.removeChild(a),this.config.show_loading=!0});
+scheduler.ical={parse:function(a){var b=a.match(RegExp(this.c_start+"[^\u000c]*"+this.c_end,""));if(b.length){b[0]=b[0].replace(/[\r\n]+(?=[a-z \t])/g," ");b[0]=b[0].replace(/\;[^:\r\n]*/g,"");for(var c=[],d,e=RegExp("(?:"+this.e_start+")([^\u000c]*?)(?:"+this.e_end+")","g");d=e.exec(b);){for(var f={},g,h=/[^\r\n]+[\r\n]+/g;g=h.exec(d[1]);)this.parse_param(g.toString(),f);if(f.uid&&!f.id)f.id=f.uid;c.push(f)}return c}},parse_param:function(a,b){var c=a.indexOf(":");if(c!=-1){var d=a.substr(0,c).toLowerCase(),
+e=a.substr(c+1).replace(/\\\,/g,",").replace(/[\r\n]+$/,"");d=="summary"?d="text":d=="dtstart"?(d="start_date",e=this.parse_date(e,0,0)):d=="dtend"&&(d="end_date",e=b.start_date&&b.start_date.getHours()==0?this.parse_date(e,24,0):this.parse_date(e,23,59));b[d]=e}},parse_date:function(a,b,c){var d=a.split("T");d[1]&&(b=d[1].substr(0,2),c=d[1].substr(2,2));var e=d[0].substr(0,4),f=parseInt(d[0].substr(4,2),10)-1,g=d[0].substr(6,2);return scheduler.config.server_utc&&!d[1]?new Date(Date.UTC(e,f,g,b,
+c)):new Date(e,f,g,b,c)},c_start:"BEGIN:VCALENDAR",e_start:"BEGIN:VEVENT",e_end:"END:VEVENT",c_end:"END:VCALENDAR"};scheduler.formSection=function(a){for(var b=this.config.lightbox.sections,c=0;c<b.length;c++)if(b[c].name==a)break;var d=b[c],e=document.getElementById(d.id).nextSibling;return{getValue:function(a){return scheduler.form_blocks[d.type].get_value(e,a||{},d)},setValue:function(a,b){return scheduler.form_blocks[d.type].set_value(e,a,b||{},d)}}};
+scheduler.form_blocks={template:{render:function(a){var b=(a.height||"30")+"px";return"<div class='dhx_cal_ltext dhx_cal_template' style='height:"+b+";'></div>"},set_value:function(a,b){a.innerHTML=b||""},get_value:function(a){return a.innerHTML||""},focus:function(){}},textarea:{render:function(a){var b=(a.height||"130")+"px";return"<div class='dhx_cal_ltext' style='height:"+b+";'><textarea></textarea></div>"},set_value:function(a,b){a.firstChild.value=b||""},get_value:function(a){return a.firstChild.value},
+focus:function(a){var b=a.firstChild;b.select();b.focus()}},select:{render:function(a){for(var b=(a.height||"23")+"px",c="<div class='dhx_cal_ltext' style='height:"+b+";'><select style='width:100%;'>",d=0;d<a.options.length;d++)c+="<option value='"+a.options[d].key+"'>"+a.options[d].label+"</option>";c+="</select></div>";return c},set_value:function(a,b){if(typeof b=="undefined")b=(a.firstChild.options[0]||{}).value;a.firstChild.value=b||""},get_value:function(a){return a.firstChild.value},focus:function(a){var b=
+a.firstChild;b.select&&b.select();b.focus()}},time:{render:function(){var a=scheduler.config,b=this.date.date_part(new Date),c=1440,d=0;scheduler.config.limit_time_select&&(c=60*a.last_hour+1,d=60*a.first_hour,b.setHours(a.first_hour));for(var e="<select>",f=d,g=b.getDate();f<c;){var h=this.templates.time_picker(b);e+="<option value='"+f+"'>"+h+"</option>";b.setTime(b.valueOf()+this.config.time_step*6E4);var i=b.getDate()!=g?1:0,f=i*1440+b.getHours()*60+b.getMinutes()}e+="</select> <select>";for(f=
+1;f<32;f++)e+="<option value='"+f+"'>"+f+"</option>";e+="</select> <select>";for(f=0;f<12;f++)e+="<option value='"+f+"'>"+this.locale.date.month_full[f]+"</option>";e+="</select> <select>";b=b.getFullYear()-5;for(f=0;f<10;f++)e+="<option value='"+(b+f)+"'>"+(b+f)+"</option>";e+="</select> ";return"<div style='height:30px;padding-top:0px;font-size:inherit;' class='dhx_section_time'>"+e+"<span style='font-weight:normal; font-size:10pt;'> &nbsp;&ndash;&nbsp; </span>"+e+"</div>"},set_value:function(a,
+b,c){function d(a,b,c){a[b+0].value=Math.round((c.getHours()*60+c.getMinutes())/scheduler.config.time_step)*scheduler.config.time_step;a[b+1].value=c.getDate();a[b+2].value=c.getMonth();a[b+3].value=c.getFullYear()}var e=a.getElementsByTagName("select");if(scheduler.config.full_day){if(!a._full_day){var f="<label class='dhx_fullday'><input type='checkbox' name='full_day' value='true'> "+scheduler.locale.labels.full_day+"&nbsp;</label></input>";scheduler.config.wide_form||(f=a.previousSibling.innerHTML+
+f);a.previousSibling.innerHTML=f;a._full_day=!0}var g=a.previousSibling.getElementsByTagName("input")[0],h=scheduler.date.time_part(c.start_date)===0&&scheduler.date.time_part(c.end_date)===0&&c.end_date.valueOf()-c.start_date.valueOf()<1728E5;g.checked=h;for(var i in e)e[i].disabled=g.checked;g.onclick=function(){if(g.checked){var a=new Date(c.start_date),b=new Date(c.end_date);scheduler.date.date_part(a);b=scheduler.date.add(a,1,"day")}for(var f in e)e[f].disabled=g.checked;d(e,0,a||c.start_date);
+d(e,4,b||c.end_date)}}if(scheduler.config.auto_end_date&&scheduler.config.event_duration)for(var k=function(){c.start_date=new Date(e[3].value,e[2].value,e[1].value,0,e[0].value);c.end_date.setTime(c.start_date.getTime()+scheduler.config.event_duration*6E4);d(e,4,c.end_date)},j=0;j<4;j++)e[j].onchange=k;d(e,0,c.start_date);d(e,4,c.end_date)},get_value:function(a,b){s=a.getElementsByTagName("select");b.start_date=new Date(s[3].value,s[2].value,s[1].value,0,s[0].value);b.end_date=new Date(s[7].value,
+s[6].value,s[5].value,0,s[4].value);if(b.end_date<=b.start_date)b.end_date=scheduler.date.add(b.start_date,scheduler.config.time_step,"minute")},focus:function(a){a.getElementsByTagName("select")[0].focus()}}};
+scheduler.showCover=function(a){if(a){a.style.display="block";var b=window.pageYOffset||document.body.scrollTop||document.documentElement.scrollTop,c=window.pageXOffset||document.body.scrollLeft||document.documentElement.scrollLeft,d=window.innerHeight||document.documentElement.clientHeight;a.style.top=b?Math.round(b+Math.max((d-a.offsetHeight)/2,0))+"px":Math.round(Math.max((d-a.offsetHeight)/2,0)+9)+"px";a.style.left=document.documentElement.scrollWidth>document.body.offsetWidth?Math.round(c+(document.body.offsetWidth-
+a.offsetWidth)/2)+"px":Math.round((document.body.offsetWidth-a.offsetWidth)/2)+"px"}this.show_cover()};scheduler.showLightbox=function(a){if(a&&this.callEvent("onBeforeLightbox",[a])){var b=this._get_lightbox();this.showCover(b);this._fill_lightbox(a,b);this.callEvent("onLightbox",[a])}};
+scheduler._fill_lightbox=function(a,b){var c=this.getEvent(a),d=b.getElementsByTagName("span");scheduler.templates.lightbox_header?(d[1].innerHTML="",d[2].innerHTML=scheduler.templates.lightbox_header(c.start_date,c.end_date,c)):(d[1].innerHTML=this.templates.event_header(c.start_date,c.end_date,c),d[2].innerHTML=(this.templates.event_bar_text(c.start_date,c.end_date,c)||"").substr(0,70));for(var e=this.config.lightbox.sections,f=0;f<e.length;f++){var g=document.getElementById(e[f].id).nextSibling,
+h=this.form_blocks[e[f].type];h.set_value.call(this,g,c[e[f].map_to],c,e[f]);e[f].focus&&h.focus.call(this,g)}scheduler._lightbox_id=a};scheduler._lightbox_out=function(a){for(var b=this.config.lightbox.sections,c=0;c<b.length;c++){var d=document.getElementById(b[c].id),d=d?d.nextSibling:d,e=this.form_blocks[b[c].type],f=e.get_value.call(this,d,a,b[c]);b[c].map_to!="auto"&&(a[b[c].map_to]=f)}return a};
+scheduler._empty_lightbox=function(){var a=scheduler._lightbox_id,b=this.getEvent(a),c=this._get_lightbox();this._lightbox_out(b);b._timed=this.is_one_day_event(b);this.setEvent(b.id,b);this._edit_stop_event(b,!0);this.render_view_data()};scheduler.hide_lightbox=function(){this.hideCover(this._get_lightbox());this._lightbox_id=null;this.callEvent("onAfterLightbox",[])};scheduler.hideCover=function(a){if(a)a.style.display="none";this.hide_cover()};
+scheduler.hide_cover=function(){this._cover&&this._cover.parentNode.removeChild(this._cover);this._cover=null};scheduler.show_cover=function(){this._cover=document.createElement("DIV");this._cover.className="dhx_cal_cover";var a=document.height!==void 0?document.height:document.body.offsetHeight,b=document.documentElement?document.documentElement.scrollHeight:0;this._cover.style.height=Math.max(a,b)+"px";document.body.appendChild(this._cover)};
+scheduler.save_lightbox=function(){if(!this.checkEvent("onEventSave")||this.callEvent("onEventSave",[this._lightbox_id,this._lightbox_out({id:this._lightbox_id}),this._new_event]))this._empty_lightbox(),this.hide_lightbox()};scheduler.startLightbox=function(a,b){this._lightbox_id=a;this.showCover(b)};scheduler.endLightbox=function(a,b){this._edit_stop_event(scheduler.getEvent(this._lightbox_id),a);a&&scheduler.render_view_data();this.hideCover(b)};
+scheduler.resetLightbox=function(){scheduler._lightbox&&scheduler._lightbox.parentNode.removeChild(scheduler._lightbox);scheduler._lightbox=null};scheduler.cancel_lightbox=function(){this.callEvent("onEventCancel",[this._lightbox_id,this._new_event]);this.endLightbox(!1);this.hide_lightbox()};
+scheduler._init_lightbox_events=function(){this._get_lightbox().onclick=function(a){var b=a?a.target:event.srcElement;if(!b.className)b=b.previousSibling;if(b&&b.className)switch(b.className){case "dhx_save_btn":scheduler.save_lightbox();break;case "dhx_delete_btn":var c=scheduler.locale.labels.confirm_deleting;if(!c||confirm(c))scheduler.deleteEvent(scheduler._lightbox_id),scheduler._new_event=null,scheduler.hide_lightbox();break;case "dhx_cancel_btn":scheduler.cancel_lightbox();break;default:if(b.getAttribute("dhx_button"))scheduler.callEvent("onLightboxButton",
+[b.className,b,a]);else if(b.className.indexOf("dhx_custom_button_")!=-1){var d=b.parentNode.getAttribute("index"),e=scheduler.form_blocks[scheduler.config.lightbox.sections[d].type],f=b.parentNode.parentNode;e.button_click(d,b,f,f.nextSibling)}}};this._get_lightbox().onkeydown=function(a){switch((a||event).keyCode){case scheduler.keys.edit_save:if((a||event).shiftKey)break;scheduler.save_lightbox();break;case scheduler.keys.edit_cancel:scheduler.cancel_lightbox()}}};
+scheduler.setLightboxSize=function(){var a=this._lightbox;if(a){var b=a.childNodes[1];b.style.height="0px";b.style.height=b.scrollHeight+"px";a.style.height=b.scrollHeight+50+"px";b.style.height=b.scrollHeight+"px"}};scheduler._init_dnd_events=function(){dhtmlxEvent(document.body,"mousemove",scheduler._move_while_dnd);dhtmlxEvent(document.body,"mouseup",scheduler._finish_dnd);scheduler._init_dnd_events=function(){}};
+scheduler._move_while_dnd=function(a){if(scheduler._dnd_start_lb){if(!document.dhx_unselectable)document.body.className+=" dhx_unselectable",document.dhx_unselectable=!0;var b=scheduler._get_lightbox(),c=a&&a.target?[a.pageX,a.pageY]:[event.clientX,event.clientY];b.style.top=scheduler._lb_start[1]+c[1]-scheduler._dnd_start_lb[1]+"px";b.style.left=scheduler._lb_start[0]+c[0]-scheduler._dnd_start_lb[0]+"px"}};
+scheduler._ready_to_dnd=function(a){var b=scheduler._get_lightbox();scheduler._lb_start=[parseInt(b.style.left,10),parseInt(b.style.top,10)];scheduler._dnd_start_lb=a&&a.target?[a.pageX,a.pageY]:[event.clientX,event.clientY]};scheduler._finish_dnd=function(){if(scheduler._lb_start)scheduler._lb_start=scheduler._dnd_start_lb=!1,document.body.className=document.body.className.replace(" dhx_unselectable",""),document.dhx_unselectable=!1};
+scheduler._get_lightbox=function(){if(!this._lightbox){var a=document.createElement("DIV");a.className="dhx_cal_light";scheduler.config.wide_form&&(a.className+=" dhx_cal_light_wide");scheduler.form_blocks.recurring&&(a.className+=" dhx_cal_light_rec");/msie|MSIE 6/.test(navigator.userAgent)&&(a.className+=" dhx_ie6");a.style.visibility="hidden";var b=this._lightbox_template,c=this.config.buttons_left;scheduler.locale.labels.dhx_save_btn=scheduler.locale.labels.icon_save;scheduler.locale.labels.dhx_cancel_btn=
+scheduler.locale.labels.icon_cancel;scheduler.locale.labels.dhx_delete_btn=scheduler.locale.labels.icon_delete;for(var d=0;d<c.length;d++)b+="<div class='dhx_btn_set'><div dhx_button='1' class='"+c[d]+"'></div><div>"+scheduler.locale.labels[c[d]]+"</div></div>";c=this.config.buttons_right;for(d=0;d<c.length;d++)b+="<div class='dhx_btn_set' style='float:right;'><div dhx_button='1' class='"+c[d]+"'></div><div>"+scheduler.locale.labels[c[d]]+"</div></div>";b+="</div>";a.innerHTML=b;if(scheduler.config.drag_lightbox)a.firstChild.onmousedown=
+scheduler._ready_to_dnd,a.firstChild.onselectstart=function(){return!1},a.firstChild.style.cursor="pointer",scheduler._init_dnd_events();document.body.insertBefore(a,document.body.firstChild);this._lightbox=a;for(var e=this.config.lightbox.sections,b="",d=0;d<e.length;d++){var f=this.form_blocks[e[d].type];if(f){e[d].id="area_"+this.uid();var g="";e[d].button&&(g="<div class='dhx_custom_button' index='"+d+"'><div class='dhx_custom_button_"+e[d].button+"'></div><div>"+this.locale.labels["button_"+
+e[d].button]+"</div></div>");this.config.wide_form&&(b+="<div class='dhx_wrap_section'>");b+="<div id='"+e[d].id+"' class='dhx_cal_lsection'>"+g+this.locale.labels["section_"+e[d].name]+"</div>"+f.render.call(this,e[d]);b+="</div>"}}var h=a.getElementsByTagName("div");h[1].innerHTML=b;this.setLightboxSize();this._init_lightbox_events(this);a.style.display="none";a.style.visibility="visible"}return this._lightbox};scheduler._lightbox_template="<div class='dhx_cal_ltitle'><span class='dhx_mark'>&nbsp;</span><span class='dhx_time'></span><span class='dhx_title'></span></div><div class='dhx_cal_larea'></div>";
+scheduler._dp_init=function(a){a._methods=["setEventTextStyle","","changeEventId","deleteEvent"];this.attachEvent("onEventAdded",function(b){!this._loading&&this.validId(b)&&a.setUpdated(b,!0,"inserted")});this.attachEvent("onConfirmedBeforeEventDelete",function(b){if(this.validId(b)){var c=a.getState(b);if(c=="inserted"||this._new_event)return a.setUpdated(b,!1),!0;if(c=="deleted")return!1;if(c=="true_deleted")return!0;a.setUpdated(b,!0,"deleted");return!1}});this.attachEvent("onEventChanged",function(b){!this._loading&&
+this.validId(b)&&a.setUpdated(b,!0,"updated")});a._getRowData=function(a){var c=this.obj.getEvent(a),d={},e;for(e in c)e.indexOf("_")!=0&&(d[e]=c[e]&&c[e].getUTCFullYear?this.obj.templates.xml_format(c[e]):c[e]);return d};a._clearUpdateFlag=function(){};a.attachEvent("insertCallback",scheduler._update_callback);a.attachEvent("updateCallback",scheduler._update_callback);a.attachEvent("deleteCallback",function(a,c){this.obj.setUserData(c,this.action_param,"true_deleted");this.obj.deleteEvent(c)})};
+scheduler.setUserData=function(a,b,c){a?this.getEvent(a)[b]=c:this._userdata[b]=c};scheduler.getUserData=function(a,b){return a?this.getEvent(a)[b]:this._userdata[b]};scheduler.setEventTextStyle=function(a,b){this.for_rendered(a,function(a){a.style.cssText+=";"+b});var c=this.getEvent(a);c._text_style=b;this.event_updated(c)};scheduler.validId=function(){return!0};
+scheduler._update_callback=function(a){var b=scheduler.xmlNodeToJSON(a.firstChild);b.text=b.text||b._tagvalue;b.start_date=scheduler.templates.xml_date(b.start_date);b.end_date=scheduler.templates.xml_date(b.end_date);scheduler.addEvent(b)};