5070 lines
206 KiB
JavaScript
5070 lines
206 KiB
JavaScript
/* Copyright 2005 - 2015 Annpoint, s.r.o.
|
||
Use of this software is subject to license terms.
|
||
http://www.daypilot.org/
|
||
*/
|
||
|
||
if (typeof DayPilot === 'undefined') {
|
||
var DayPilot = {};
|
||
}
|
||
|
||
if (typeof DayPilot.Global === 'undefined') {
|
||
DayPilot.Global = {};
|
||
}
|
||
|
||
(function() {
|
||
|
||
|
||
if (typeof DayPilot.$ !== 'undefined') {
|
||
return;
|
||
}
|
||
|
||
DayPilot.$ = function(id) {
|
||
return document.getElementById(id);
|
||
};
|
||
|
||
// mouse offset relative to the positioned element (FF) or relative to element that fired the event (IE)
|
||
// deprecated, replaced by DayPilot.mo2
|
||
// still being used in Month.js, replace carefully
|
||
DayPilot.mo = function(t, ev) {
|
||
ev = ev || window.event;
|
||
|
||
if (ev.layerX) { // Mozilla and others
|
||
var coords = {x: ev.layerX, y: ev.layerY};
|
||
if (!t) {
|
||
return coords;
|
||
}
|
||
return coords;
|
||
//while
|
||
|
||
}
|
||
// this has to be first because IE9 supports layerX but it is not consistent with Mozilla
|
||
if (ev.offsetX) { // IE
|
||
return {x: ev.offsetX, y: ev.offsetY};
|
||
}
|
||
|
||
return null;
|
||
};
|
||
|
||
DayPilot.isKhtml = (navigator && navigator.userAgent && navigator.userAgent.indexOf("KHTML") !== -1);
|
||
DayPilot.isIE = (navigator && navigator.userAgent && (navigator.userAgent.indexOf("MSIE") !== -1 || navigator.userAgent.indexOf("Trident") !== -1));
|
||
//DayPilot.isIE7 = (navigator && navigator.userAgent && navigator.userAgent.indexOf("MSIE 7") !== -1);
|
||
//DayPilot.isIE8 = (navigator && navigator.userAgent && navigator.userAgent.indexOf("MSIE 8") !== -1);
|
||
DayPilot.isIEQuirks = DayPilot.isIE && (document.compatMode && document.compatMode === "BackCompat");
|
||
|
||
DayPilot.browser = {};
|
||
//DayPilot.browser.ie9 = (navigator && navigator.userAgent && navigator.userAgent.indexOf("MSIE 9") !== -1); // IE
|
||
DayPilot.browser.ie8 = (function() {
|
||
var div = document.createElement("div");
|
||
div.innerHTML = "<!--[if IE 8]><i></i><![endif]-->";
|
||
var result = (div.getElementsByTagName("i").length === 1);
|
||
return result;
|
||
})();
|
||
DayPilot.browser.ie9 = (function() {
|
||
var div = document.createElement("div");
|
||
div.innerHTML = "<!--[if IE 9]><i></i><![endif]-->";
|
||
var result = (div.getElementsByTagName("i").length === 1);
|
||
return result;
|
||
})();
|
||
DayPilot.browser.ielt9 = (function() {
|
||
var div = document.createElement("div");
|
||
div.innerHTML = "<!--[if lt IE 9]><i></i><![endif]-->";
|
||
var result = (div.getElementsByTagName("i").length === 1);
|
||
return result;
|
||
})();
|
||
|
||
|
||
DayPilot.touch = {};
|
||
DayPilot.touch.start = window.navigator.msPointerEnabled ? "MSPointerDown" : "touchstart";
|
||
DayPilot.touch.move = window.navigator.msPointerEnabled ? "MSPointerMove" : "touchmove";
|
||
DayPilot.touch.end = window.navigator.msPointerEnabled ? "MSPointerUp" : "touchend";
|
||
|
||
DayPilot.mo2 = function(target, ev) {
|
||
ev = ev || window.event;
|
||
|
||
// IE
|
||
if (typeof (ev.offsetX) !== 'undefined') {
|
||
|
||
var coords = {x: ev.offsetX + 1, y: ev.offsetY + 1};
|
||
|
||
if (!target) {
|
||
return coords;
|
||
}
|
||
|
||
var current = ev.srcElement;
|
||
while (current && current !== target) {
|
||
if (current.tagName !== 'SPAN') { // hack for DayPilotMonth/IE, hour info on the right side of an event
|
||
coords.x += current.offsetLeft;
|
||
if (current.offsetTop > 0) { // hack for http://forums.daypilot.org/Topic.aspx/879/move_event_bug
|
||
coords.y += current.offsetTop - current.scrollTop;
|
||
}
|
||
}
|
||
|
||
current = current.offsetParent;
|
||
}
|
||
|
||
if (current) {
|
||
return coords;
|
||
}
|
||
return null;
|
||
}
|
||
|
||
// FF
|
||
if (typeof (ev.layerX) !== 'undefined') {
|
||
|
||
var coords = {x: ev.layerX, y: ev.layerY, src: ev.target};
|
||
|
||
if (!target) {
|
||
return coords;
|
||
}
|
||
var current = ev.target;
|
||
|
||
// find the positioned offsetParent, the layerX reference
|
||
while (current && current.style.position !== 'absolute' && current.style.position !== 'relative') {
|
||
current = current.parentNode;
|
||
if (DayPilot.isKhtml) { // hack for KHTML (Safari and Google Chrome), used in DPC/event moving
|
||
coords.y += current.scrollTop;
|
||
}
|
||
}
|
||
|
||
while (current && current !== target) {
|
||
coords.x += current.offsetLeft;
|
||
coords.y += current.offsetTop - current.scrollTop;
|
||
current = current.offsetParent;
|
||
}
|
||
if (current) {
|
||
return coords;
|
||
}
|
||
|
||
return null;
|
||
}
|
||
|
||
return null;
|
||
};
|
||
|
||
// mouse offset relative to the specified target
|
||
DayPilot.mo3 = function(target, ev) {
|
||
ev = ev || window.event;
|
||
|
||
var page = DayPilot.page(ev);
|
||
if (page) {
|
||
var abs = DayPilot.abs(target);
|
||
return {x: page.x - abs.x, y: page.y - abs.y};
|
||
}
|
||
|
||
return DayPilot.mo2(target, ev);
|
||
};
|
||
|
||
// mouse coords
|
||
DayPilot.mc = function(ev) {
|
||
if (ev.pageX || ev.pageY) {
|
||
return {x: ev.pageX, y: ev.pageY};
|
||
}
|
||
return {
|
||
x: ev.clientX + document.documentElement.scrollLeft,
|
||
y: ev.clientY + document.documentElement.scrollTop
|
||
};
|
||
};
|
||
|
||
DayPilot.Queue = function() {
|
||
var q = this;
|
||
this.items = [];
|
||
this.index = 0;
|
||
this.add = function(f) {
|
||
q.items.push(f);
|
||
q.testNext();
|
||
};
|
||
this.testNext = function() {
|
||
var f = q.items[q.index];
|
||
if (typeof f === 'function') {
|
||
setTimeout(q.doNext);
|
||
}
|
||
else {
|
||
q.clear();
|
||
setTimeout(q.testNext, 100);
|
||
}
|
||
};
|
||
this.doNext = function() {
|
||
var f = q.items[q.index];
|
||
if (typeof f === 'function') {
|
||
f();
|
||
q.index += 1;
|
||
}
|
||
q.testNext();
|
||
};
|
||
this.clear = function() {
|
||
if (q.items.length === 0) {
|
||
return;
|
||
}
|
||
q.items = [];
|
||
q.index = 0;
|
||
};
|
||
};
|
||
|
||
DayPilot.dynlist = function(array) {
|
||
var result = {};
|
||
|
||
result.each = function(f) {
|
||
if (!f) {
|
||
return;
|
||
}
|
||
for (var i = 0; i < array.length; i++) {
|
||
var getItemProcessor = function(i) {
|
||
return function() {
|
||
f(i);
|
||
}
|
||
}
|
||
setTimeout(getItemProcessor(array[i]));
|
||
}
|
||
};
|
||
|
||
result.seqEach = function(f) {
|
||
if (!f) {
|
||
return;
|
||
}
|
||
|
||
process(0);
|
||
|
||
function process(i) {
|
||
if (i >= array.length) {
|
||
return;
|
||
}
|
||
f(array[i]);
|
||
|
||
setTimeout(process(i+1));
|
||
}
|
||
};
|
||
|
||
return result;
|
||
};
|
||
|
||
DayPilot.list = function(array) {
|
||
var list = [];
|
||
|
||
list.each = function(f) {
|
||
if (!f) {
|
||
return;
|
||
}
|
||
if (list.forEach) {
|
||
list.forEach(f);
|
||
return;
|
||
}
|
||
for (var i = 0; i < this.length; i++) {
|
||
f(list[i], i);
|
||
}
|
||
};
|
||
|
||
// creates a copy, adds properties
|
||
list.addProps = function(fields) {
|
||
var result = DayPilot.list(this);
|
||
if (fields) {
|
||
for (var name in fields) {
|
||
result[name] = fields[name];
|
||
}
|
||
}
|
||
return result;
|
||
};
|
||
|
||
list.last = function() {
|
||
if (list.length === 0) {
|
||
return null;
|
||
}
|
||
return list[list.length - 1];
|
||
};
|
||
|
||
// creates a copy with old items plus new item
|
||
list.add = function(item) {
|
||
var result = DayPilot.list(list);
|
||
result.push(item);
|
||
return result;
|
||
};
|
||
|
||
// override, returns DayPilot.list()
|
||
list.map = function(f) {
|
||
if (typeof f !== "function") {
|
||
throw "DayPilot.list().map(f): Function expected";
|
||
}
|
||
var result = DayPilot.list();
|
||
list.each(function(item) {
|
||
result.push(f(item));
|
||
});
|
||
|
||
return result;
|
||
};
|
||
|
||
list.filter = function(f) {
|
||
var result = DayPilot.list();
|
||
if (typeof f !== "function") {
|
||
throw "DayPilot.list().filter(f): Function expected";
|
||
}
|
||
list.each(function(item) {
|
||
if (f(item)) {
|
||
result.push(item);
|
||
}
|
||
});
|
||
return result;
|
||
};
|
||
|
||
// override, returns DayPilot.list()
|
||
list.concat = function(another) {
|
||
var result = DayPilot.list(this);
|
||
DayPilot.list(another).each(function(item) {
|
||
result.push(item);
|
||
});
|
||
return result;
|
||
};
|
||
|
||
// reuse if available
|
||
if (!list.some) {
|
||
list.some = function(f) {
|
||
if (typeof f !== "function") {
|
||
throw "DayPilot.list().some(f): Function expected";
|
||
}
|
||
for (var i = 0; i < this.length; i++) {
|
||
if (f(list[i])) {
|
||
return true;
|
||
};
|
||
}
|
||
return false;
|
||
}
|
||
}
|
||
|
||
// reuse if available
|
||
if (!list.reduce) {
|
||
list.reduce = function(f, initial) {
|
||
if (typeof f !== "function") {
|
||
throw "DayPilot.list().reduce(f): Function expected";
|
||
}
|
||
var result;
|
||
var start = 0;
|
||
if (typeof initial !== 'undefined') {
|
||
result = initial;
|
||
}
|
||
else {
|
||
start = 1;
|
||
if (list.length === 0) {
|
||
throw "DayPilot.list().reduce(f): No initial value and empty list";
|
||
}
|
||
result = list[0];
|
||
}
|
||
for (var i = start; i < this.length; i++) {
|
||
result = f(result, list[i], i, this);
|
||
}
|
||
return result;
|
||
};
|
||
}
|
||
|
||
list.isEmpty = function() {
|
||
return list.length === 0;
|
||
};
|
||
|
||
if (DayPilot.isArray(array)) {
|
||
for (var i = 0; i < array.length; i++) {
|
||
list.push(array[i]);
|
||
}
|
||
}
|
||
else if (typeof array === 'object' && array !== null) {
|
||
list.push(array);
|
||
}
|
||
|
||
return list;
|
||
};
|
||
|
||
DayPilot.line = function (x1, y1, x2, y2, arrow) {
|
||
var source = { x: x1, y: y1 };
|
||
var target = { x: x2, y: y2, "deg": DayPilot.deg(x1, y1, x2, y2)};
|
||
|
||
if (y1 < y2){
|
||
var pom = y1;
|
||
y1 = y2;
|
||
y2 = pom;
|
||
pom = x1;
|
||
x1 = x2;
|
||
x2 = pom;
|
||
}
|
||
|
||
var deg = DayPilot.deg(x1, y1, x2, y2);
|
||
|
||
var width = (function() {
|
||
var a = Math.abs(x1-x2);
|
||
var b = Math.abs(y1-y2);
|
||
return Math.sqrt(a*a + b*b ) ;
|
||
})();
|
||
|
||
var x = (function() {
|
||
var a = Math.abs(x1-x2);
|
||
var b = Math.abs(y1-y2);
|
||
var sx = (x1+x2)/2 ;
|
||
var sy = (y1+y2)/2 ;
|
||
var width = Math.sqrt(a*a + b*b ) ;
|
||
return sx - width/2;
|
||
})();
|
||
|
||
var y = (function() {
|
||
return (y1+y2)/2 ;
|
||
})();
|
||
|
||
var div = document.createElement("div");
|
||
div.setAttribute('style','border:1px solid black;width:'+width+'px;height:0px;-moz-transform:rotate('+deg+'deg);-webkit-transform:rotate('+deg+'deg);-ms-transform:rotate('+deg+'deg);transform:rotate('+deg+'deg);position:absolute;top:'+y+'px;left:'+x+'px;');
|
||
|
||
var wrapper = document.createElement("div");
|
||
wrapper.appendChild(div);
|
||
|
||
if (arrow) {
|
||
var width = 6;
|
||
var top = target.y - width;
|
||
var left = target.x - width;;
|
||
//if (target.x < source.x) { left -= width; }
|
||
var deg = deg;
|
||
if (target.y > source.y) { deg -= 180; }
|
||
var a = document.createElement("div");
|
||
a.style.borderColor = "transparent black transparent transparent";
|
||
a.style.borderWidth = width + "px";
|
||
a.style.borderStyle = "solid";
|
||
a.style.position = "absolute";
|
||
a.style.left = left + "px";
|
||
a.style.top = top + "px";
|
||
a.style.transform = "rotate(" + deg + "deg)";
|
||
wrapper.appendChild(a);
|
||
}
|
||
|
||
return wrapper;
|
||
|
||
};
|
||
|
||
DayPilot.deg = function(x1, y1, x2, y2) {
|
||
var a = Math.abs(x1-x2);
|
||
var b = Math.abs(y1-y2);
|
||
var c;
|
||
var sx = (x1+x2)/2 ;
|
||
var sy = (y1+y2)/2 ;
|
||
var width = Math.sqrt(a*a + b*b ) ;
|
||
var x = sx - width/2;
|
||
var y = sy;
|
||
|
||
a = width / 2;
|
||
|
||
c = Math.abs(sx-x);
|
||
|
||
b = Math.sqrt(Math.abs(x1-x)*Math.abs(x1-x)+Math.abs(y1-y)*Math.abs(y1-y) );
|
||
|
||
var cosb = (b*b - a*a - c*c) / (2*a*c);
|
||
var rad = Math.acos(cosb);
|
||
var deg = (rad*180)/Math.PI;
|
||
|
||
return deg;
|
||
};
|
||
|
||
DayPilot.complete = function(f) {
|
||
if (document.readyState === "complete") {
|
||
f();
|
||
return;
|
||
}
|
||
if (!DayPilot.complete.list) {
|
||
DayPilot.complete.list = [];
|
||
DayPilot.re(document, "readystatechange", function() {
|
||
if (document.readyState === "complete") {
|
||
for (var i = 0; i < DayPilot.complete.list.length; i++) {
|
||
var d = DayPilot.complete.list[i];
|
||
d();
|
||
}
|
||
DayPilot.complete.list = [];
|
||
}
|
||
});
|
||
}
|
||
DayPilot.complete.list.push(f);
|
||
};
|
||
|
||
// returns pageX, pageY (calculated from clientX if pageX is not available)
|
||
DayPilot.page = function(ev) {
|
||
ev = ev || window.event;
|
||
if (typeof ev.pageX !== 'undefined') {
|
||
return {x: ev.pageX, y: ev.pageY};
|
||
}
|
||
if (typeof ev.clientX !== 'undefined') {
|
||
return {
|
||
x: ev.clientX + document.body.scrollLeft + document.documentElement.scrollLeft,
|
||
y: ev.clientY + document.body.scrollTop + document.documentElement.scrollTop
|
||
};
|
||
}
|
||
// shouldn't happen
|
||
return null;
|
||
};
|
||
|
||
// absolute element position on page
|
||
DayPilot.abs = function(element, visible) {
|
||
if (!element) {
|
||
return null;
|
||
}
|
||
|
||
var r = {
|
||
x: element.offsetLeft,
|
||
y: element.offsetTop,
|
||
w: element.clientWidth,
|
||
h: element.clientHeight,
|
||
toString: function() {
|
||
return "x:" + this.x + " y:" + this.y + " w:" + this.w + " h:" + this.h;
|
||
}
|
||
};
|
||
|
||
if (element.getBoundingClientRect) {
|
||
//var b = element.getBoundingClientRect();
|
||
var b = null;
|
||
try {
|
||
b = element.getBoundingClientRect();
|
||
} catch (e) {
|
||
b = {top: element.offsetTop, left: element.offsetLeft};
|
||
}
|
||
;
|
||
r.x = b.left;
|
||
r.y = b.top;
|
||
|
||
var d = DayPilot.doc();
|
||
r.x -= d.clientLeft || 0;
|
||
r.y -= d.clientTop || 0;
|
||
|
||
var pageOffset = DayPilot.pageOffset();
|
||
r.x += pageOffset.x;
|
||
r.y += pageOffset.y;
|
||
|
||
if (visible) {
|
||
// use diff, absOffsetBased is not as accurate
|
||
var full = DayPilot.absOffsetBased(element, false);
|
||
var visible = DayPilot.absOffsetBased(element, true);
|
||
|
||
r.x += visible.x - full.x;
|
||
r.y += visible.y - full.y;
|
||
r.w = visible.w;
|
||
r.h = visible.h;
|
||
}
|
||
|
||
return r;
|
||
}
|
||
else {
|
||
return DayPilot.absOffsetBased(element, visible);
|
||
}
|
||
|
||
};
|
||
|
||
DayPilot.isArray = function(o) {
|
||
return Object.prototype.toString.call(o) === '[object Array]';
|
||
};
|
||
|
||
// old implementation of absolute position
|
||
// problems with adjacent float and margin-left in IE7
|
||
// still the best way to calculate the visible part of the element
|
||
DayPilot.absOffsetBased = function(element, visible) {
|
||
var r = {
|
||
x: element.offsetLeft,
|
||
y: element.offsetTop,
|
||
w: element.clientWidth,
|
||
h: element.clientHeight,
|
||
toString: function() {
|
||
return "x:" + this.x + " y:" + this.y + " w:" + this.w + " h:" + this.h;
|
||
}
|
||
};
|
||
|
||
while (DayPilot.op(element)) {
|
||
element = DayPilot.op(element);
|
||
|
||
r.x -= element.scrollLeft;
|
||
r.y -= element.scrollTop;
|
||
|
||
if (visible) { // calculates the visible part
|
||
if (r.x < 0) {
|
||
r.w += r.x; // decrease width
|
||
r.x = 0;
|
||
}
|
||
|
||
if (r.y < 0) {
|
||
r.h += r.y; // decrease height
|
||
r.y = 0;
|
||
}
|
||
|
||
if (element.scrollLeft > 0 && r.x + r.w > element.clientWidth) {
|
||
r.w -= r.x + r.w - element.clientWidth;
|
||
}
|
||
|
||
if (element.scrollTop && r.y + r.h > element.clientHeight) {
|
||
r.h -= r.y + r.h - element.clientHeight;
|
||
}
|
||
}
|
||
|
||
r.x += element.offsetLeft;
|
||
r.y += element.offsetTop;
|
||
|
||
}
|
||
|
||
var pageOffset = DayPilot.pageOffset();
|
||
r.x += pageOffset.x;
|
||
r.y += pageOffset.y;
|
||
|
||
return r;
|
||
};
|
||
|
||
// window dimensions
|
||
DayPilot.wd = function() {
|
||
var ieQuirks = DayPilot.isIEQuirks;
|
||
|
||
// don't show the bubble outside of the visible window
|
||
var windowHeight = document.documentElement.clientHeight;
|
||
// fixing http://forums.daypilot.org/Topic.aspx/519/issue_with_bubble_in_ie
|
||
if (ieQuirks) {
|
||
windowHeight = document.body.clientHeight;
|
||
}
|
||
|
||
var windowWidth = document.documentElement.clientWidth;
|
||
// fixing http://forums.daypilot.org/Topic.aspx/519/issue_with_bubble_in_ie
|
||
if (ieQuirks) {
|
||
windowWidth = document.body.clientWidth;
|
||
}
|
||
|
||
var scrollTop = (document.documentElement && document.documentElement.scrollTop) || document.body.scrollTop;
|
||
var scrollLeft = (document.documentElement && document.documentElement.scrollLeft) || document.body.scrollLeft;
|
||
|
||
var result = {};
|
||
result.width = windowWidth;
|
||
result.height = windowHeight;
|
||
result.scrollTop = scrollTop;
|
||
result.scrollLeft = scrollLeft;
|
||
|
||
return result;
|
||
};
|
||
|
||
// offsetParent, safe access to prevent "Unspecified Error" in IE
|
||
DayPilot.op = function(element) {
|
||
try {
|
||
return element.offsetParent;
|
||
}
|
||
catch (e) {
|
||
return document.body;
|
||
}
|
||
};
|
||
|
||
// distance of two points, works with x and y
|
||
DayPilot.distance = function(point1, point2) {
|
||
return Math.sqrt(Math.pow(point1.x - point2.x, 2) + Math.pow(point1.y - point2.y, 2));
|
||
};
|
||
|
||
// document element
|
||
DayPilot.doc = function() {
|
||
var de = document.documentElement;
|
||
return (de && de.clientHeight) ? de : document.body;
|
||
};
|
||
|
||
DayPilot.pageOffset = function() {
|
||
if (typeof pageXOffset !== 'undefined') {
|
||
return {x: pageXOffset, y: pageYOffset};
|
||
}
|
||
var d = DayPilot.doc();
|
||
return {x: d.scrollLeft, y: d.scrollTop};
|
||
};
|
||
|
||
// all children
|
||
DayPilot.ac = function(e, children) {
|
||
if (!children) {
|
||
var children = [];
|
||
}
|
||
for (var i = 0; e.children && i < e.children.length; i++) {
|
||
children.push(e.children[i]);
|
||
DayPilot.ac(e.children[i], children);
|
||
}
|
||
|
||
return children;
|
||
};
|
||
|
||
DayPilot.indexOf = function(array, object) {
|
||
if (!array || !array.length) {
|
||
return -1;
|
||
}
|
||
for (var i = 0; i < array.length; i++) {
|
||
if (array[i] === object) {
|
||
return i;
|
||
}
|
||
}
|
||
return -1;
|
||
};
|
||
|
||
DayPilot.contains = function(array, object) {
|
||
if (!array) {
|
||
return false;
|
||
}
|
||
|
||
if (array === object && !DayPilot.isArray(array)) {
|
||
return true;
|
||
}
|
||
return DayPilot.indexOf(array, object) !== -1;
|
||
};
|
||
|
||
// remove from array
|
||
DayPilot.rfa = function(array, object) {
|
||
var i = DayPilot.indexOf(array, object);
|
||
if (i === -1) {
|
||
return;
|
||
}
|
||
array.splice(i, 1);
|
||
};
|
||
|
||
DayPilot.sheet = function() {
|
||
var style = document.createElement("style");
|
||
style.setAttribute("type", "text/css");
|
||
if (!style.styleSheet) { // ie
|
||
style.appendChild(document.createTextNode(""));
|
||
}
|
||
|
||
var h = document.head || document.getElementsByTagName('head')[0];
|
||
h.appendChild(style);
|
||
|
||
var oldStyle = !! style.styleSheet; // old ie
|
||
|
||
var sheet = {};
|
||
sheet.rules = [];
|
||
sheet.commit = function() {
|
||
try {
|
||
if (oldStyle) {
|
||
style.styleSheet.cssText = this.rules.join("\n");
|
||
}
|
||
}
|
||
catch (e) {
|
||
//alert("Error registering the built-in stylesheet (IE stylesheet limit reached). Stylesheet count: " + document.styleSheets.length);
|
||
}
|
||
};
|
||
|
||
sheet.add = function(selector, rules, index) {
|
||
if (oldStyle) {
|
||
this.rules.push(selector + "{" + rules + "\u007d");
|
||
return;
|
||
}
|
||
if(style.sheet.insertRule) {
|
||
style.sheet.insertRule(selector + "{" + rules + "\u007d", index);
|
||
}
|
||
else if (style.sheet.addRule) {
|
||
style.sheet.addRule(selector, rules, index);
|
||
}
|
||
else {
|
||
throw "No CSS registration method found";
|
||
}
|
||
};
|
||
return sheet;
|
||
};
|
||
|
||
DayPilot.Debug = function(calendar) {
|
||
var debug = this;
|
||
|
||
this.printToBrowserConsole = false;
|
||
this.messages = [];
|
||
this._div = null;
|
||
this.clear = function() {
|
||
this.messages = [];
|
||
if (debug._div) {
|
||
debug._div.innerHTML = '';
|
||
}
|
||
};
|
||
|
||
this.hide = function() {
|
||
DayPilot.de(debug._div);
|
||
debug._div = null;
|
||
};
|
||
|
||
this.show = function() {
|
||
if (debug._div) {
|
||
debug.hide();
|
||
}
|
||
|
||
var ref = calendar.nav.top;
|
||
|
||
var div = document.createElement("div");
|
||
div.style.position = "absolute";
|
||
div.style.top = "0px";
|
||
div.style.bottom = "0px";
|
||
div.style.left = "0px";
|
||
div.style.right = "0px";
|
||
div.style.backgroundColor = "black";
|
||
div.style.color = "#ccc";
|
||
div.style.overflow = "auto";
|
||
div.style.webkitUserSelect = 'auto';
|
||
div.style.MozUserSelect = 'all';
|
||
div.onclick = function() {
|
||
debug.hide();
|
||
};
|
||
|
||
for(var i = 0; i < this.messages.length; i++) {
|
||
var msg = debug.messages[i];
|
||
|
||
var line = msg._toElement();
|
||
div.appendChild(line);
|
||
}
|
||
|
||
this._div = div;
|
||
ref.appendChild(div);
|
||
};
|
||
|
||
this.message = function(text, level) { // levels: info, warning, error
|
||
var msg = {};
|
||
msg.time = new DayPilot.Date();
|
||
msg.level = level || "debug";
|
||
msg.text = text;
|
||
msg._toElement = function() {
|
||
var line = document.createElement("div");
|
||
line.innerHTML = msg.time + " (" + msg.level + "): " + msg.text;
|
||
switch (msg.level) {
|
||
case "error":
|
||
line.style.color = "red";
|
||
break;
|
||
case "warning":
|
||
line.style.color = "orange";
|
||
break;
|
||
case "info":
|
||
line.style.color = "white";
|
||
break;
|
||
case "debug":
|
||
break;
|
||
}
|
||
return line;
|
||
};
|
||
|
||
this.messages.push(msg);
|
||
|
||
if (this.printToBrowserConsole && typeof console !== 'undefined') {
|
||
console.log(msg);
|
||
}
|
||
};
|
||
};
|
||
|
||
// register event
|
||
DayPilot.re = function(el, ev, func) {
|
||
if (!func) {
|
||
return;
|
||
}
|
||
if (el.addEventListener) {
|
||
el.addEventListener(ev, func, false);
|
||
} else if (el.attachEvent) {
|
||
var f = function(ev) {
|
||
func.call(el, ev);
|
||
}
|
||
el.attachEvent("on" + ev, f);
|
||
}
|
||
};
|
||
// unregister event
|
||
DayPilot.ue = function(el, ev, func) {
|
||
if (el.removeEventListener) {
|
||
el.removeEventListener(ev, func, false);
|
||
} else if (el.detachEvent) {
|
||
el.detachEvent("on" + ev, func);
|
||
}
|
||
};
|
||
// trim
|
||
DayPilot.tr = function(stringToTrim) {
|
||
if (!stringToTrim)
|
||
return '';
|
||
return stringToTrim.replace(/^\s+|\s+$/g, "");
|
||
};
|
||
// date sortable (DateTime.ToString("s"))
|
||
DayPilot.ds = function(d) {
|
||
return DayPilot.Date.toStringSortable(d);
|
||
};
|
||
// get style
|
||
DayPilot.gs = function(el, styleProp) {
|
||
var x = el;
|
||
if (x.currentStyle)
|
||
var y = x.currentStyle[styleProp];
|
||
else if (window.getComputedStyle)
|
||
var y = document.defaultView.getComputedStyle(x, null).getPropertyValue(styleProp);
|
||
if (typeof (y) === 'undefined')
|
||
y = '';
|
||
return y;
|
||
};
|
||
// encode arguments
|
||
DayPilot.ea = function(a) {
|
||
var joined = "";
|
||
for (var i = 0; i < a.length; i++) {
|
||
if (a[i] || typeof (a[i]) === 'number') {
|
||
if (a[i].isDayPilotDate) {
|
||
a[i] = a[i].toStringSortable();
|
||
}
|
||
else if (a[i].getFullYear) {
|
||
a[i] = DayPilot.ds(a[i]);
|
||
}
|
||
joined += encodeURIComponent(a[i]);
|
||
}
|
||
if (i + 1 < a.length) {
|
||
joined += '&';
|
||
}
|
||
}
|
||
return joined;
|
||
};
|
||
|
||
// html encode
|
||
DayPilot.he = function(str) {
|
||
var result = str.replace(/&/g, "&");
|
||
result = result.replace(/</g, "<");
|
||
result = result.replace(/>/g, ">");
|
||
result = result.replace(/"/g, """);
|
||
return result;
|
||
};
|
||
|
||
// cellIndex
|
||
DayPilot.ci = function(cell) {
|
||
var i = cell.cellIndex;
|
||
if (i && i > 0)
|
||
return i;
|
||
var tr = cell.parentNode;
|
||
var len = tr.cells.length;
|
||
for (i = 0; i < len; i++) {
|
||
if (tr.cells[i] === cell)
|
||
return i;
|
||
}
|
||
return null;
|
||
};
|
||
|
||
// make unselectable
|
||
DayPilot.us = function(element) {
|
||
if (element) {
|
||
element.setAttribute("unselectable", "on");
|
||
element.style.userSelect = 'none';
|
||
element.style.MozUserSelect = 'none';
|
||
element.style.KhtmlUserSelect = 'none';
|
||
element.style.webkitUserSelect = 'none';
|
||
for (var i = 0; i < element.childNodes.length; i++) {
|
||
if (element.childNodes[i].nodeType === 1) {
|
||
DayPilot.us(element.childNodes[i]);
|
||
}
|
||
}
|
||
}
|
||
};
|
||
|
||
// purge
|
||
// thanks to http://javascript.crockford.com/memory/leak.html
|
||
DayPilot.pu = function(d) {
|
||
//var removed = [];
|
||
//var start = new Date();
|
||
var a = d.attributes, i, l, n;
|
||
if (a) {
|
||
l = a.length;
|
||
for (i = 0; i < l; i += 1) {
|
||
if (!a[i]) {
|
||
continue;
|
||
}
|
||
n = a[i].name;
|
||
if (typeof d[n] === 'function') {
|
||
//DayPilot.log.push(d.tagName + "." + n);
|
||
//removed.push(n);
|
||
d[n] = null;
|
||
}
|
||
}
|
||
}
|
||
a = d.childNodes;
|
||
if (a) {
|
||
l = a.length;
|
||
for (i = 0; i < l; i += 1) {
|
||
var children = DayPilot.pu(d.childNodes[i]);
|
||
//removed = removed.concat(children);
|
||
}
|
||
}
|
||
//return removed;
|
||
};
|
||
|
||
// purge children
|
||
DayPilot.puc = function(d) {
|
||
var a = d.childNodes, i, l;
|
||
if (a) {
|
||
var l = a.length;
|
||
for (i = 0; i < l; i += 1) {
|
||
DayPilot.pu(d.childNodes[i]);
|
||
}
|
||
}
|
||
};
|
||
|
||
// delete element
|
||
DayPilot.de = function(e) {
|
||
if (!e) {
|
||
return;
|
||
}
|
||
if (DayPilot.isArray(e)) {
|
||
for (var i = 0; i < e.length; i++) {
|
||
DayPilot.de(e[i]);
|
||
}
|
||
return;
|
||
}
|
||
/*
|
||
if (!e.parentNode) {
|
||
return;
|
||
}*/
|
||
e.parentNode && e.parentNode.removeChild(e);
|
||
};
|
||
|
||
// get row
|
||
DayPilot.gr = function(cell) {
|
||
var i = 0;
|
||
var tr = cell.parentNode;
|
||
while (tr.previousSibling) {
|
||
tr = tr.previousSibling;
|
||
if (tr.tagName === "TR") {
|
||
i++;
|
||
}
|
||
}
|
||
return i;
|
||
};
|
||
|
||
DayPilot.fade = function(element, step, end) {
|
||
if (!element) {
|
||
return;
|
||
}
|
||
|
||
clearTimeout(element.messageTimeout);
|
||
|
||
var delay = 50;
|
||
var visible = element.style.display !== 'none';
|
||
var fadeIn = step > 0;
|
||
var fadeOut = step < 0;
|
||
|
||
if (step === 0) {
|
||
return;
|
||
}
|
||
|
||
if (fadeIn) {
|
||
element.status = "in";
|
||
}
|
||
else if (fadeOut) {
|
||
element.status = "out";
|
||
}
|
||
|
||
if (fadeIn && !visible) {
|
||
element.target = parseFloat(element.style.opacity);
|
||
element.opacity = 0; // current, for IE
|
||
element.style.opacity = 0;
|
||
element.style.filter = "alpha(opacity=0)";
|
||
element.style.display = '';
|
||
}
|
||
else if (fadeOut && !element.target) {
|
||
element.target = element.style.opacity;
|
||
}
|
||
else {
|
||
//var current = parseFloat(element.style.opacity);
|
||
var current = element.opacity;
|
||
var updated = Math.floor(10 * (current + step)) / 10;
|
||
if (fadeIn && updated > element.target) {
|
||
updated = element.target;
|
||
}
|
||
if (fadeOut && updated < 0) {
|
||
updated = 0;
|
||
}
|
||
var ie = updated * 100;
|
||
element.opacity = updated;
|
||
element.style.opacity = updated;
|
||
element.style.filter = "alpha(opacity=" + ie + ")";
|
||
}
|
||
if ((fadeIn && (element.opacity >= element.target || element.opacity >= 1)) || (fadeOut && element.opacity <= 0)) {
|
||
element.target = null;
|
||
if (fadeOut) {
|
||
element.style.opacity = element.target;
|
||
element.opacity = element.target;
|
||
var filter = element.target ? "alpha(opacity=" + (element.target * 100) + ")" : null;
|
||
element.style.filter = filter;
|
||
element.style.display = 'none';
|
||
}
|
||
if (end && typeof end === 'function') {
|
||
element.status = null;
|
||
end();
|
||
}
|
||
}
|
||
else {
|
||
element.messageTimeout = setTimeout(function() {
|
||
DayPilot.fade(element, step, end);
|
||
}, delay);
|
||
}
|
||
};
|
||
|
||
|
||
// vertical scrollbar width
|
||
DayPilot.sw = function(element) {
|
||
if (!element) {
|
||
return 0;
|
||
}
|
||
return element.offsetWidth - element.clientWidth;
|
||
};
|
||
|
||
DayPilot.swa = function() {
|
||
var div = document.createElement("div");
|
||
div.style.position = "absolute";
|
||
div.style.top = "-2000px";
|
||
div.style.left = "-2000px";
|
||
div.style.width = '200px';
|
||
div.style.height = '100px';
|
||
div.style.overflow = 'auto';
|
||
|
||
var inner = document.createElement("div");
|
||
inner.style.width = '300px';
|
||
inner.style.height = '300px';
|
||
div.appendChild(inner);
|
||
|
||
document.body.appendChild(div);
|
||
var sw = DayPilot.sw(div);
|
||
document.body.removeChild(div);
|
||
|
||
return sw;
|
||
};
|
||
|
||
// horizontal scrollbar height
|
||
DayPilot.sh = function(element) {
|
||
if (!element) {
|
||
return 0;
|
||
}
|
||
return element.offsetHeight - element.clientHeight;
|
||
};
|
||
|
||
DayPilot.guid = function() {
|
||
var S4 = function() {
|
||
return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
|
||
};
|
||
return ("" + S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4());
|
||
};
|
||
|
||
// unique array members
|
||
// works for strings and numbers only
|
||
DayPilot.ua = function(array) {
|
||
if (typeof array === "string" || typeof array === "number") {
|
||
return [array];
|
||
}
|
||
var u = {}, a = [];
|
||
for (var i = 0, l = array.length; i < l; ++i) {
|
||
if (array[i] in u) {
|
||
continue;
|
||
}
|
||
a.push(array[i]);
|
||
u[array[i]] = 1;
|
||
}
|
||
return a;
|
||
};
|
||
|
||
// angular module
|
||
DayPilot.am = function() {
|
||
if (typeof angular === "undefined") {
|
||
return null;
|
||
}
|
||
if (!DayPilot.am.cached) {
|
||
DayPilot.am.cached = angular.module("daypilot", []);
|
||
}
|
||
return DayPilot.am.cached;
|
||
};
|
||
|
||
(function () {
|
||
DayPilot.pop = wave;
|
||
|
||
function wave(div, options) {
|
||
var target = {
|
||
w: div.offsetWidth,
|
||
h: div.offsetHeight,
|
||
x: parseInt(div.style.left),
|
||
y: parseInt(div.style.top)
|
||
};
|
||
target.height = div.style.height;
|
||
target.width = div.style.width;
|
||
target.top = div.style.top;
|
||
target.left = div.style.left;
|
||
target.toString = function () { return "w: " + this.w + " h:" + this.h; };
|
||
|
||
var config = {};
|
||
config.finished = null;
|
||
config.vertical = 'center';
|
||
config.horizontal = 'center';
|
||
|
||
if (options) {
|
||
for (var name in options) {
|
||
config[name] = options[name];
|
||
}
|
||
}
|
||
|
||
div.style.visibility = 'hidden';
|
||
div.style.display = '';
|
||
|
||
var animation = options.animation || "fast";
|
||
|
||
var plan = createPlan(animation);
|
||
|
||
plan.div = div;
|
||
plan.i = 0;
|
||
plan.target = target;
|
||
plan.config = config;
|
||
|
||
doStep(plan);
|
||
}
|
||
|
||
function createPlan(type) {
|
||
|
||
var jump = function() {
|
||
var plan = [];
|
||
plan.time = 10;
|
||
var last;
|
||
|
||
var step = 0.08;
|
||
last = 0.1;
|
||
|
||
for (var i = last; i < 1.2; i += step) {
|
||
plan.push(i);
|
||
last = i;
|
||
}
|
||
|
||
step = 0.03;
|
||
|
||
for (var i = last; i > 0.8; i -= step) {
|
||
plan.push(i);
|
||
last = i;
|
||
}
|
||
|
||
for (var i = last; i <= 1; i += step) {
|
||
plan.push(i);
|
||
last = i;
|
||
}
|
||
|
||
return plan;
|
||
};
|
||
|
||
var slow = function() {
|
||
var plan = [];
|
||
plan.time = 15;
|
||
var last;
|
||
|
||
var step = 0.04;
|
||
last = 0.1;
|
||
|
||
for (var i = last; i <= 1; i += step) {
|
||
plan.push(i);
|
||
last = i;
|
||
}
|
||
return plan;
|
||
};
|
||
|
||
var fast = function() {
|
||
var plan = [];
|
||
plan.time = 9;
|
||
var last;
|
||
|
||
var step = 0.04;
|
||
last = 0.1;
|
||
|
||
for (var i = last; i <= 1; i += step) {
|
||
plan.push(i);
|
||
last = i;
|
||
}
|
||
return plan;
|
||
};
|
||
|
||
var types = {
|
||
"fast": fast,
|
||
"slow": slow,
|
||
"jump": jump
|
||
};
|
||
|
||
if (!types[type]) {
|
||
type = "fast";
|
||
}
|
||
|
||
return types[type]();
|
||
}
|
||
|
||
function doStep(plan) {
|
||
var div = plan.div;
|
||
|
||
var pct = plan[plan.i];
|
||
|
||
var height = pct * plan.target.h;
|
||
var top;
|
||
switch (plan.config.vertical) {
|
||
case "center":
|
||
top = plan.target.y - (height - plan.target.h) / 2;
|
||
break;
|
||
case "top":
|
||
top = plan.target.y;
|
||
break;
|
||
case "bottom":
|
||
top = plan.target.y - (height - plan.target.h);
|
||
break;
|
||
default:
|
||
throw "Unexpected 'vertical' value.";
|
||
}
|
||
|
||
var width = pct * plan.target.w;
|
||
var left;
|
||
|
||
switch (plan.config.horizontal) {
|
||
case "left":
|
||
left = plan.target.x;
|
||
break;
|
||
case "center":
|
||
left = plan.target.x - (width - plan.target.w) / 2;
|
||
break;
|
||
case "right":
|
||
left = plan.target.x - (width - plan.target.w);
|
||
break;
|
||
default:
|
||
throw "Unexpected 'horizontal' value.";
|
||
}
|
||
|
||
// TODO add scrollLeft
|
||
var wd = DayPilot.wd();
|
||
var bottom = (wd.height + wd.scrollTop) - (top + height);
|
||
if (bottom < 0) {
|
||
top += bottom;
|
||
}
|
||
|
||
var right = (wd.width) - (left + width);
|
||
if (right < 0) {
|
||
left += right;
|
||
}
|
||
|
||
div.style.height = height + "px";
|
||
div.style.top = top + "px";
|
||
|
||
div.style.width = width + "px";
|
||
div.style.left = left + "px";
|
||
|
||
//div.style.display = '';
|
||
div.style.visibility = 'visible';
|
||
|
||
plan.i++;
|
||
|
||
if (plan.i < plan.length - 1) {
|
||
setTimeout((function (plan) {
|
||
return function () {
|
||
doStep(plan);
|
||
};
|
||
})(plan), plan.time);
|
||
}
|
||
else {
|
||
// set the original dimensions
|
||
div.style.width = plan.target.width;
|
||
div.style.height = plan.target.height;
|
||
// and position
|
||
div.style.top = plan.target.top;
|
||
div.style.left = plan.target.left;
|
||
|
||
// callback
|
||
if (typeof plan.config.finished === 'function') {
|
||
plan.config.finished();
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
})();
|
||
|
||
DayPilot.Util = {};
|
||
|
||
// object - DOM element or array of DOM elements
|
||
DayPilot.Util.addClass = function(object, name) {
|
||
if (!name) {
|
||
return;
|
||
}
|
||
if (!object) {
|
||
return;
|
||
}
|
||
if (DayPilot.isArray(object)) {
|
||
for (var i = 0; i < object.length; i++) {
|
||
DayPilot.Util.addClass(object[i], name);
|
||
}
|
||
return;
|
||
}
|
||
if (!object.className) {
|
||
object.className = name;
|
||
return;
|
||
}
|
||
var already = new RegExp("(^|\\s)" + name + "($|\\s)");
|
||
if (!already.test(object.className)) {
|
||
object.className = object.className + ' ' + name;
|
||
}
|
||
};
|
||
|
||
DayPilot.Util.addClassToString = function(str, name) {
|
||
if (!str) {
|
||
return name;
|
||
}
|
||
var already = new RegExp("(^|\\s)" + name + "($|\\s)");
|
||
if (!already.test(str)) {
|
||
return str + ' ' + name;
|
||
}
|
||
else {
|
||
return str;
|
||
}
|
||
};
|
||
|
||
DayPilot.Util.removeClassFromString = function(str, name) {
|
||
if (!str) {
|
||
return "";
|
||
}
|
||
var already = new RegExp("(^|\\s)" + name + "($|\\s)");
|
||
return str.replace(already, ' ').replace(/^\s\s*/, '').replace(/\s\s*$/, ''); // trim spaces
|
||
};
|
||
|
||
DayPilot.Util.removeClass = function(object, name) {
|
||
if (!object) {
|
||
return;
|
||
}
|
||
if (DayPilot.isArray(object)) {
|
||
for (var i = 0; i < object.length; i++) {
|
||
DayPilot.Util.removeClass(object[i], name);
|
||
}
|
||
return;
|
||
}
|
||
var already = new RegExp("(^|\\s)" + name + "($|\\s)");
|
||
object.className = object.className.replace(already, ' ').replace(/^\s\s*/, '').replace(/\s\s*$/, ''); // trim spaces
|
||
};
|
||
|
||
DayPilot.Util.props = function(o) {
|
||
var t = [];
|
||
for (var a in o) {
|
||
t.push(a);
|
||
t.push(o[a]);
|
||
}
|
||
return t.join("-");
|
||
};
|
||
|
||
|
||
DayPilot.Util.propArray = function(props, name) {
|
||
var result = [];
|
||
if (!props || !props.length) {
|
||
return result;
|
||
}
|
||
|
||
for (var i = 0; i < props.length; i++) {
|
||
result.push(props[i][name]);
|
||
}
|
||
return result;
|
||
};
|
||
|
||
DayPilot.Util.updatePropsFromArray = function(props, name, array) {
|
||
for (var i = 0; i < array.length; i++) {
|
||
props[i][name] = array[i];
|
||
}
|
||
};
|
||
|
||
DayPilot.Util.copyProps = function(source, target, props) {
|
||
if (!source) {
|
||
return;
|
||
}
|
||
if (typeof props === 'undefined') {
|
||
for (var name in source) {
|
||
if (typeof source[name] !== 'undefined') {
|
||
target[name] = source[name];
|
||
}
|
||
}
|
||
}
|
||
else {
|
||
for (var i = 0; i < props.length; i++) {
|
||
var name = props[i];
|
||
if (typeof source[name] !== 'undefined') {
|
||
target[name] = source[name];
|
||
}
|
||
}
|
||
}
|
||
};
|
||
|
||
DayPilot.Util.createArrayCopy = function(source, itemProps) {
|
||
if (!DayPilot.isArray(source)) {
|
||
return [];
|
||
}
|
||
var list = [];
|
||
for (var i = 0; i < source.length; i++) {
|
||
var item = {};
|
||
DayPilot.Util.copyProps(source[i], item, itemProps);
|
||
list.push(item);
|
||
}
|
||
return list;
|
||
};
|
||
|
||
DayPilot.Util.avg = function(a, b) {
|
||
return (a + b) / 2;
|
||
};
|
||
|
||
DayPilot.Util.div = function(parent, left, top, width, height) {
|
||
var div = document.createElement("div");
|
||
if (left || top || width || height) {
|
||
if (width < 0) {
|
||
left += width;
|
||
width *= -1;
|
||
}
|
||
if (height < 0) {
|
||
top += height;
|
||
height *= -1;
|
||
}
|
||
div.style.position = "absolute";
|
||
if (typeof left === "number") {
|
||
div.style.left = left + "px";
|
||
}
|
||
if (typeof top === "number") {
|
||
div.style.top = top + "px";
|
||
}
|
||
if (typeof width === "number") {
|
||
div.style.width = width + "px";
|
||
}
|
||
if (typeof height === "number") {
|
||
div.style.height = height + "px";
|
||
}
|
||
}
|
||
if (parent) {
|
||
parent.appendChild(div);
|
||
}
|
||
return div;
|
||
};
|
||
|
||
DayPilot.Util.overlaps = function(start1, end1, start2, end2) {
|
||
start1 = start1.isDayPilotDate ? start1.getTime() : start1;
|
||
start2 = start2.isDayPilotDate ? start2.getTime() : start2;
|
||
end1 = end1.isDayPilotDate ? end1.getTime() : end1;
|
||
end2 = end2.isDayPilotDate ? end2.getTime() : end2;
|
||
|
||
return !(end1 <= start2 || start1 >= end2);
|
||
};
|
||
|
||
DayPilot.Util.isMouseEvent = function(ev) {
|
||
if (!navigator.msPointerEnabled) {
|
||
return false;
|
||
}
|
||
if (!ev.pointerType) {
|
||
return false;
|
||
}
|
||
if (ev.pointerType === "mouse") { // Windows 8.1
|
||
return true;
|
||
}
|
||
if (ev.pointerType === 4) { // Windows 7 - 8
|
||
return true;
|
||
}
|
||
return false;
|
||
};
|
||
|
||
DayPilot.Util.mouseButton = function(ev) {
|
||
var result = {};
|
||
|
||
ev = ev || window.event;
|
||
|
||
if (typeof ev.which === 'undefined') {
|
||
switch (ev.button) {
|
||
case 1:
|
||
result.left = true;
|
||
break;
|
||
case 4:
|
||
result.middle = true;
|
||
break;
|
||
case 2:
|
||
result.right = true;
|
||
break;
|
||
case 0:
|
||
result.unknown = true;
|
||
break;
|
||
}
|
||
}
|
||
else {
|
||
switch (ev.which) {
|
||
case 1:
|
||
result.left = true;
|
||
break;
|
||
case 2:
|
||
result.middle = true;
|
||
break;
|
||
case 3:
|
||
result.right = true;
|
||
break;
|
||
}
|
||
}
|
||
return result;
|
||
};
|
||
|
||
DayPilot.Util.membersPlain = function(obj) {
|
||
var members = DayPilot.Util.members(obj, 2);
|
||
|
||
var transformArray = function(array) {
|
||
for (var i = 0; i < array.length; i++) {
|
||
var item = array[i];
|
||
var name = item.name;
|
||
if (item.obsolete) {
|
||
name += " (obsolete)";
|
||
}
|
||
if (item.noCssOnly) {
|
||
name += " (!cssOnly)";
|
||
}
|
||
if (item.aspnet) {
|
||
name += " (ASP.NET)";
|
||
}
|
||
if (item.mvc) {
|
||
name += "(MVC)";
|
||
}
|
||
array[i] = name;
|
||
}
|
||
};
|
||
|
||
transformArray(members.events);
|
||
transformArray(members.methods);
|
||
transformArray(members.properties);
|
||
|
||
return members;
|
||
};
|
||
|
||
DayPilot.Util.members = function(obj, maxLevel) {
|
||
var events = [];
|
||
var methods = [];
|
||
var properties = [];
|
||
|
||
var obsolete = (obj && obj.members) ? obj.members.obsolete : [];
|
||
var noCssOnly = (obj && obj.members) ? obj.members.noCssOnly : [];
|
||
var ignore = (obj && obj.members) ? obj.members.ignore : [];
|
||
var ignoreFilter = (obj && obj.members && obj.members.ignoreFilter) ? obj.members.ignoreFilter : function() { return false; };
|
||
|
||
for (var name in obj) {
|
||
//var start = name.substring(0, 1);
|
||
if (name.indexOf("$") === 0) {
|
||
continue;
|
||
}
|
||
if (name.indexOf("_") === 0) {
|
||
continue;
|
||
}
|
||
if (name.indexOf("number") === 0) {
|
||
continue;
|
||
}
|
||
if (name.indexOf("is") === 0) {
|
||
continue;
|
||
}
|
||
if (name === "v") {
|
||
continue;
|
||
}
|
||
if (DayPilot.contains(ignore, name)) {
|
||
continue;
|
||
}
|
||
if (ignoreFilter(name)) {
|
||
continue;
|
||
}
|
||
if (name.indexOf("on") === 0) {
|
||
events.push(name);
|
||
continue;
|
||
}
|
||
if (typeof obj[name] === 'function') {
|
||
methods.push(name);
|
||
continue;
|
||
}
|
||
if (typeof obj[name] === 'object') {
|
||
var o = obj[name];
|
||
if (maxLevel === 0) {
|
||
properties.push(name);
|
||
continue;
|
||
}
|
||
if (o && o.nodeType > 0) {
|
||
properties.push(name);
|
||
continue;
|
||
}
|
||
if (o instanceof DayPilot.Bubble) {
|
||
properties.push(name);
|
||
continue;
|
||
}
|
||
if (o instanceof DayPilot.Date) {
|
||
properties.push(name);
|
||
continue;
|
||
}
|
||
if (o instanceof DayPilot.Menu) {
|
||
properties.push(name);
|
||
continue;
|
||
}
|
||
if (o instanceof DayPilot.Scheduler) {
|
||
properties.push(name);
|
||
continue;
|
||
}
|
||
if (DayPilot.isArray(o)) {
|
||
properties.push(name);
|
||
continue;
|
||
}
|
||
if (o === null) {
|
||
properties.push(name);
|
||
}
|
||
var ml = null;
|
||
if (typeof maxLevel === "number") {
|
||
ml = maxLevel - 1;
|
||
}
|
||
var members = DayPilot.Util.members(o, ml);
|
||
for (var i = 0; i < members.events.length; i++) {
|
||
events.push(name + "." + members.events[i].name);
|
||
}
|
||
for (var i = 0; i < members.methods.length; i++) {
|
||
methods.push(name + "." + members.methods[i].name);
|
||
}
|
||
for (var i = 0; i < members.properties.length; i++) {
|
||
properties.push(name + "." + members.properties[i].name);
|
||
}
|
||
continue;
|
||
}
|
||
properties.push(name);
|
||
}
|
||
|
||
events.sort();
|
||
methods.sort();
|
||
properties.sort();
|
||
|
||
var transformArray = function(array) {
|
||
for (var i = 0; i < array.length; i++) {
|
||
var name = array[i];
|
||
var item = {};
|
||
item.name = name;
|
||
array[i] = item;
|
||
if (DayPilot.contains(obsolete, name)) {
|
||
item.obsolete = true;
|
||
}
|
||
if (DayPilot.contains(noCssOnly, name)) {
|
||
item.noCssOnly = true;
|
||
}
|
||
if (name.indexOf("CallBack") !== -1) {
|
||
item.aspnet = true;
|
||
item.mvc = true;
|
||
}
|
||
if (name.indexOf("PostBack") !== -1) {
|
||
item.aspnet = true;
|
||
}
|
||
if (name.indexOf("Notify") !== -1) {
|
||
item.aspnet = true;
|
||
item.mvc = true;
|
||
}
|
||
|
||
}
|
||
};
|
||
transformArray(events);
|
||
transformArray(methods);
|
||
transformArray(properties);
|
||
|
||
return {
|
||
"events": events,
|
||
"methods": methods,
|
||
"properties": properties
|
||
};
|
||
};
|
||
|
||
DayPilot.Util.replaceCharAt = function(str, index, character) {
|
||
return str.substr(0, index) + character + str.substr(index + character.length);
|
||
};
|
||
|
||
DayPilot.Util.evalVariable = function(str, allowed) {
|
||
allowed = allowed || ['object']; // 'function'
|
||
|
||
if (str === null || typeof str === 'undefined') {
|
||
return null;
|
||
}
|
||
|
||
if (DayPilot.indexOf(allowed, typeof str) !== -1) {
|
||
return str;
|
||
}
|
||
if (typeof str !== "string") {
|
||
throw "Unable to resolve a variable name (not a string).";
|
||
}
|
||
if (!/^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(str)) {
|
||
throw "Invalid variable name: " + str;
|
||
}
|
||
return eval(str);
|
||
};
|
||
|
||
DayPilot.Util.evalFunction = function(str) {
|
||
if (str === null) {
|
||
return null;
|
||
}
|
||
if (typeof str === "function") {
|
||
return str;
|
||
}
|
||
if (typeof str !== "string") {
|
||
throw "Unable to resolve a function (not a string).";
|
||
}
|
||
if (!/^\(?function/.test(str)) {
|
||
throw "Invalid function string";
|
||
}
|
||
return eval("(" + str + ")");
|
||
};
|
||
|
||
DayPilot.Util.parseJSON = function(str) {
|
||
if (JSON && JSON.parse) {
|
||
return JSON.parse(str);
|
||
}
|
||
else {
|
||
return DayPilot.JSON.parse(str);
|
||
}
|
||
};
|
||
|
||
DayPilot.Util.isNullOrUndefined = function(val) {
|
||
return val === null || typeof val === "undefined";
|
||
};
|
||
|
||
DayPilot.Util.log = function(message) {
|
||
window.console && window.console.log && window.console.log(message);
|
||
};
|
||
|
||
DayPilot.Areas = {};
|
||
|
||
/**
|
||
* Attach active areas to a target div.
|
||
*/
|
||
DayPilot.Areas.attach = function (div, e, options) {
|
||
var areas = options.areas;
|
||
var allowed = options.allowed || function() { return true; };
|
||
|
||
DayPilot.re(div, "mousemove", function(ev) {
|
||
if (!div.active && allowed()) {
|
||
DayPilot.Areas.showAreas(div, e, ev, areas);
|
||
}
|
||
});
|
||
DayPilot.re(div, "mouseout", function(ev) {
|
||
DayPilot.Areas.hideAreas(div, ev);
|
||
});
|
||
|
||
// permanently visible active areas
|
||
areas = areasExtract(e, areas);
|
||
for (var j = 0; j < areas.length; j++) {
|
||
var area = areas[j];
|
||
var v = area.v || "Visible";
|
||
if (v !== "Visible") {
|
||
continue;
|
||
}
|
||
//var r = calendar._createRowObject(row);
|
||
var a = DayPilot.Areas.createArea(div, e, area);
|
||
div.appendChild(a);
|
||
}
|
||
};
|
||
|
||
/**
|
||
* Extracts areas array from the source object, giving priority to a standalone areas object.
|
||
* @param e
|
||
* @param areas
|
||
*/
|
||
var areasExtract = function(e, areas) {
|
||
if (!DayPilot.isArray(areas)) {
|
||
areas = e.areas;
|
||
if (!areas) {
|
||
if (e.cache) {
|
||
areas = e.cache.areas;
|
||
}
|
||
else if (e.data) {
|
||
areas = e.data.areas;
|
||
}
|
||
}
|
||
}
|
||
return areas;
|
||
};
|
||
|
||
|
||
DayPilot.Areas.showAreas = function(div, e, ev, areas) {
|
||
if (DayPilot.Global.resizing) {
|
||
return;
|
||
}
|
||
|
||
if (DayPilot.Global.moving) {
|
||
return;
|
||
}
|
||
|
||
if (DayPilot.Areas.all && DayPilot.Areas.all.length > 0) {
|
||
for (var i = 0; i < DayPilot.Areas.all.length; i++) {
|
||
var d = DayPilot.Areas.all[i];
|
||
if (d !== div) {
|
||
DayPilot.Areas.hideAreas(d, ev);
|
||
}
|
||
}
|
||
}
|
||
|
||
if (div.active) {
|
||
return;
|
||
}
|
||
div.active = {};
|
||
|
||
//var areas;
|
||
if (!DayPilot.isArray(areas)) {
|
||
areas = e.areas;
|
||
if (!areas) {
|
||
if (e.cache) {
|
||
areas = e.cache.areas;
|
||
}
|
||
else if (e.data) {
|
||
areas = e.data.areas;
|
||
}
|
||
}
|
||
}
|
||
|
||
/*
|
||
if (!areas && e.cache && e.cache.areas) {
|
||
areas = e.cache.areas;
|
||
}
|
||
|
||
if (!areas && e.data && e.data.areas) {
|
||
areas = e.data.areas;
|
||
}
|
||
*/
|
||
|
||
if (!areas || areas.length === 0) {
|
||
return;
|
||
}
|
||
|
||
if (div.areas && div.areas.length > 0) {
|
||
return;
|
||
}
|
||
//if (typeof div.areas == 'undefined') {
|
||
div.areas = [];
|
||
//}
|
||
|
||
for (var i = 0; i < areas.length; i++) {
|
||
var area = areas[i];
|
||
var v = area.v || "Visible";
|
||
if (v !== 'Hover') {
|
||
continue;
|
||
}
|
||
|
||
var a = DayPilot.Areas.createArea(div, e, area);
|
||
|
||
div.areas.push(a);
|
||
div.appendChild(a);
|
||
|
||
DayPilot.Areas.all.push(div);
|
||
}
|
||
div.active.children = DayPilot.ac(div);
|
||
};
|
||
|
||
DayPilot.Areas.createArea = function(div, e, area) {
|
||
|
||
var a = document.createElement("div");
|
||
a.isActiveArea = true;
|
||
a.setAttribute("unselectable", "on");
|
||
var w = area.w || area.width;
|
||
var h = area.h || area.height;
|
||
var css = area.css || area.className;
|
||
if (typeof area.style !== "undefined") {
|
||
a.setAttribute("style", area.style);
|
||
}
|
||
a.style.position = "absolute";
|
||
if (typeof w !== 'undefined') {
|
||
a.style.width = w + "px";
|
||
}
|
||
if (typeof h !== 'undefined') {
|
||
a.style.height = h + "px";
|
||
}
|
||
if (typeof area.right !== 'undefined') {
|
||
a.style.right = area.right + "px";
|
||
}
|
||
if (typeof area.top !== 'undefined') {
|
||
a.style.top = area.top + "px";
|
||
}
|
||
if (typeof area.left !== 'undefined') {
|
||
a.style.left = area.left + "px";
|
||
}
|
||
if (typeof area.bottom !== 'undefined') {
|
||
a.style.bottom = area.bottom + "px";
|
||
}
|
||
if (typeof area.html !== 'undefined' && area.html) {
|
||
a.innerHTML = area.html;
|
||
}
|
||
if (css) {
|
||
a.className = css;
|
||
}
|
||
if (area.backColor) {
|
||
a.style.background = area.backColor;
|
||
}
|
||
if (area.action === "ResizeEnd" || area.action === "ResizeStart" || area.action === "Move") {
|
||
if (e.calendar.isCalendar) {
|
||
switch (area.action) {
|
||
case "ResizeEnd":
|
||
area.cursor = "s-resize";
|
||
area.dpBorder = "bottom";
|
||
break;
|
||
case "ResizeStart":
|
||
area.cursor = "n-resize";
|
||
area.dpBorder = "top";
|
||
break;
|
||
case "Move":
|
||
area.cursor = "move";
|
||
break;
|
||
}
|
||
}
|
||
if (e.calendar.isScheduler || e.calendar.isMonth) {
|
||
switch (area.action) {
|
||
case "ResizeEnd":
|
||
area.cursor = "e-resize";
|
||
area.dpBorder = "right";
|
||
break;
|
||
case "ResizeStart":
|
||
area.cursor = "w-resize";
|
||
area.dpBorder = "left";
|
||
break;
|
||
case "Move":
|
||
area.cursor = "move";
|
||
break;
|
||
}
|
||
}
|
||
a.onmousemove = (function(div, e, area) {
|
||
return function(ev) {
|
||
var ev = ev || window.event;
|
||
div.style.cursor = area.cursor;
|
||
if (area.dpBorder) {
|
||
div.dpBorder = area.dpBorder;
|
||
}
|
||
ev.cancelBubble = true;
|
||
};
|
||
})(div, e, area);
|
||
a.onmouseout = (function(div, e, area) {
|
||
return function(ev) {
|
||
div.style.cursor = '';
|
||
};
|
||
})(div, e, area);
|
||
}
|
||
if (area.action === "Move" && e.isEvent) {
|
||
if (e.calendar.internal.touch) {
|
||
var touchstart = (function(div, e, area) {
|
||
return function(ev) {
|
||
ev.cancelBubble = true;
|
||
var touch = e.calendar.internal.touch;
|
||
var t = ev.touches ? ev.touches[0] : ev;
|
||
var coords = {x: t.pageX, y: t.pageY };
|
||
// immediately
|
||
e.calendar.coords = touch.relativeCoords(ev);
|
||
touch.preventEventTap = true;
|
||
touch.startMoving(div, coords);
|
||
};
|
||
})(div, e, area);
|
||
DayPilot.re(a, DayPilot.touch.start, touchstart);
|
||
}
|
||
}
|
||
if (area.action === "Move" && e.isRow) {
|
||
if (e.calendar.internal.touch) {
|
||
// TODO
|
||
}
|
||
/*
|
||
a.onmousedown = (function(div, e, area) {
|
||
return function(ev) {
|
||
rowmoving.row = row;
|
||
rowtools.createOverlay(row);
|
||
};
|
||
})(div, e, area);
|
||
*/
|
||
}
|
||
if (area.action === "Bubble" && e.isEvent) {
|
||
a.onmousemove = (function(div, e, area) {
|
||
return function(ev) {
|
||
if (e.calendar.bubble) {
|
||
e.calendar.bubble.showEvent(e);
|
||
}
|
||
};
|
||
})(div, e, area);
|
||
a.onmouseout = (function(div, e, area) {
|
||
return function(ev) {
|
||
if (typeof DayPilot.Bubble !== "undefined") {
|
||
//DayPilot.Bubble.hideActive();
|
||
if (e.calendar.bubble) {
|
||
e.calendar.bubble.hideOnMouseOut();
|
||
}
|
||
}
|
||
|
||
};
|
||
})(div, e, area);
|
||
}
|
||
if (area.action === "HoverMenu") {
|
||
a.onmousemove = (function(div, e, area) {
|
||
return function(ev) {
|
||
var m = area.menu;
|
||
if (typeof m === 'string') {
|
||
m = DayPilot.Util.evalVariable(m);
|
||
}
|
||
if (m && m.show) {
|
||
if (!m.visible) {
|
||
m.show(e);
|
||
}
|
||
else if (m.source && typeof m.source.id !== 'undefined' && m.source.id !== e.id) {
|
||
m.show(e);
|
||
}
|
||
m.cancelHideTimeout();
|
||
}
|
||
};
|
||
})(div, e, area);
|
||
a.onmouseout = (function(div, e, area) {
|
||
return function(ev) {
|
||
var m = area.menu;
|
||
if (typeof m === 'string') {
|
||
m = DayPilot.Util.evalVariable(m);
|
||
}
|
||
if (!m) {
|
||
return;
|
||
}
|
||
if (m.hideOnMouseOver) {
|
||
m.delayedHide();
|
||
}
|
||
};
|
||
})(div, e, area);
|
||
}
|
||
// prevent event moving
|
||
a.onmousedown = (function(div, e, area) {
|
||
return function(ev) {
|
||
if (typeof area.onmousedown === 'function') {
|
||
area.onmousedown(ev);
|
||
}
|
||
|
||
if (area.action === "Move" && e.isRow) {
|
||
var row = e.$.row;
|
||
var rowtools = e.calendar.internal.rowtools;
|
||
|
||
rowtools.startMoving(row);
|
||
}
|
||
|
||
var cancel = true;
|
||
|
||
if (cancel) {
|
||
if (area.action === "Move" || area.action === "ResizeEnd" || area.action === "ResizeStart") {
|
||
return;
|
||
}
|
||
ev = ev || window.event;
|
||
ev.cancelBubble = true;
|
||
}
|
||
};
|
||
})(div, e, area);
|
||
a.onclick = (function(div, e, area) {
|
||
return function(ev) {
|
||
var ev = ev || window.event;
|
||
switch (area.action) {
|
||
case "JavaScript":
|
||
var f = area.js;
|
||
if (typeof f === 'string') {
|
||
f = DayPilot.Util.evalFunction(area.js);
|
||
}
|
||
if (typeof f === 'function') {
|
||
f.call(this, e);
|
||
}
|
||
break;
|
||
case "ContextMenu":
|
||
var m = area.menu;
|
||
if (typeof m === 'string') {
|
||
m = DayPilot.Util.evalVariable(m);
|
||
}
|
||
if (m && m.show) {
|
||
m.show(e);
|
||
}
|
||
break;
|
||
case "CallBack":
|
||
alert("callback not implemented yet, id: " + area.id);
|
||
break;
|
||
}
|
||
ev.cancelBubble = true;
|
||
};
|
||
})(div, e, area);
|
||
|
||
|
||
return a;
|
||
};
|
||
|
||
DayPilot.Areas.all = [];
|
||
|
||
DayPilot.Areas.hideAreas = function(div, ev) {
|
||
if (!div) {
|
||
return;
|
||
}
|
||
|
||
if (!div || !div.active) {
|
||
return;
|
||
}
|
||
|
||
var active = div.active;
|
||
var areas = div.areas;
|
||
|
||
if (active && active.children) {
|
||
var ev = ev || window.event;
|
||
if (ev) {
|
||
var target = ev.toElement || ev.relatedTarget;
|
||
if (~DayPilot.indexOf(active.children, target)) {
|
||
return;
|
||
}
|
||
}
|
||
}
|
||
|
||
if (!areas || areas.length === 0) {
|
||
div.active = null;
|
||
return;
|
||
}
|
||
|
||
DayPilot.de(areas);
|
||
/*
|
||
for (var i = 0; i < areas.length; i++) {
|
||
var a = areas[i];
|
||
div.removeChild(a);
|
||
}*/
|
||
|
||
div.active = null;
|
||
div.areas = [];
|
||
|
||
DayPilot.rfa(DayPilot.Areas.all, div);
|
||
|
||
active.children = null;
|
||
};
|
||
|
||
DayPilot.Areas.hideAll = function(ev) {
|
||
if (!DayPilot.Areas.all || DayPilot.Areas.all.length === 0) {
|
||
return;
|
||
}
|
||
for (var i = 0; i < DayPilot.Areas.all.length; i++) {
|
||
DayPilot.Areas.hideAreas(DayPilot.Areas.all[i], ev);
|
||
}
|
||
|
||
};
|
||
|
||
DayPilot.Action = function(calendar, action, params, data) {
|
||
this.calendar = calendar;
|
||
this.isAction = true;
|
||
this.action = action;
|
||
this.params = params;
|
||
this.data = data;
|
||
|
||
this.notify = function() {
|
||
calendar.internal.invokeEvent("Immediate", this.action, this.params, this.data);
|
||
};
|
||
|
||
this.auto = function() {
|
||
calendar.internal.invokeEvent("Notify", this.action, this.params, this.data);
|
||
};
|
||
|
||
this.queue = function() {
|
||
calendar.queue.add(this);
|
||
};
|
||
|
||
this.toJSON = function() {
|
||
var json = {};
|
||
json.name = this.action;
|
||
json.params = this.params;
|
||
json.data = this.data;
|
||
|
||
return json;
|
||
};
|
||
|
||
};
|
||
|
||
DayPilot.Selection = function(start, end, resource, root) {
|
||
this.menuType = 'selection'; // for menu
|
||
this.start = start.isDayPilotDate ? start : new DayPilot.Date(start);
|
||
this.end = end.isDayPilotDate ? end : new DayPilot.Date(end);
|
||
this.resource = resource;
|
||
this.root = root;
|
||
this.calendar = root;
|
||
|
||
this.toJSON = function(key) {
|
||
var json = {};
|
||
json.start = this.start;
|
||
json.end = this.end;
|
||
json.resource = this.resource;
|
||
|
||
return json;
|
||
};
|
||
};
|
||
|
||
DayPilot.Link = function(data, calendar) {
|
||
this.isLink = true;
|
||
this.data = data;
|
||
this.calendar = calendar;
|
||
|
||
this.to = function() {
|
||
return this.data.to;
|
||
};
|
||
|
||
this.from = function() {
|
||
return this.data.from;
|
||
};
|
||
|
||
this.type = function() {
|
||
return this.data.type;
|
||
};
|
||
|
||
this.id = function() {
|
||
return this.data.id;
|
||
};
|
||
|
||
this.toJSON = function() {
|
||
var json = {};
|
||
json.from = this.data.from;
|
||
json.to = this.data.to;
|
||
json.id = this.data.id;
|
||
json.type = this.data.type;
|
||
return json;
|
||
};
|
||
};
|
||
|
||
DayPilot.Args = function() {
|
||
this.isArgs = true;
|
||
this.preventDefault = function () {
|
||
this.preventDefault.value = true;
|
||
};
|
||
};
|
||
|
||
DayPilot.Event = function(data, calendar, part) {
|
||
var e = this;
|
||
this.calendar = calendar;
|
||
this.data = data ? data : {};
|
||
this.part = part ? part : {};
|
||
|
||
// backwards compatibility, still accepts id in "value"
|
||
if (typeof this.data.id === 'undefined') {
|
||
this.data.id = this.data.value;
|
||
}
|
||
|
||
var copy = {};
|
||
var synced = ["id", "text", "start", "end", "resource"];
|
||
|
||
this.isEvent = true;
|
||
|
||
// internal
|
||
this.temp = function() {
|
||
if (copy.dirty) {
|
||
return copy;
|
||
}
|
||
for (var i = 0; i < synced.length; i++) {
|
||
copy[synced[i]] = e.data[synced[i]];
|
||
}
|
||
copy.dirty = true;
|
||
return copy;
|
||
|
||
};
|
||
|
||
// internal
|
||
// copies data object
|
||
// used when the original state of the data is needed (notified EventMove etc.)
|
||
this.copy = function() {
|
||
var result = {};
|
||
DayPilot.Util.copyProps(e.data, result);
|
||
return result;
|
||
/*
|
||
for (var i = 0; i < synced.length; i++) {
|
||
result[synced[i]] = e.data[synced[i]];
|
||
}
|
||
return result;
|
||
*/
|
||
};
|
||
|
||
this.commit = function() {
|
||
if (!copy.dirty) {
|
||
return;
|
||
}
|
||
|
||
for (var i = 0; i < synced.length; i++) {
|
||
e.data[synced[i]] = copy[synced[i]];
|
||
}
|
||
|
||
copy.dirty = false;
|
||
};
|
||
|
||
this.dirty = function() {
|
||
return copy.dirty;
|
||
};
|
||
|
||
this.id = function(val) {
|
||
if (typeof val === 'undefined') {
|
||
return e.data.id;
|
||
}
|
||
else {
|
||
this.temp().id = val;
|
||
}
|
||
};
|
||
// obsolete, use id() instead
|
||
this.value = function(val) {
|
||
if (typeof val === 'undefined') {
|
||
return e.id();
|
||
}
|
||
else {
|
||
e.id(val);
|
||
}
|
||
};
|
||
this.text = function(val) {
|
||
if (typeof val === 'undefined') {
|
||
return e.data.text;
|
||
}
|
||
else {
|
||
this.temp().text = val;
|
||
this.client.innerHTML(val); // update the HTML automatically
|
||
}
|
||
};
|
||
this.start = function(val) {
|
||
if (typeof val === 'undefined') {
|
||
return new DayPilot.Date(e.data.start);
|
||
}
|
||
else {
|
||
this.temp().start = new DayPilot.Date(val);
|
||
}
|
||
};
|
||
this.end = function(val) {
|
||
if (typeof val === 'undefined') {
|
||
if (calendar && calendar.internal.adjustEndNormalize) {
|
||
return calendar.internal.adjustEndNormalize(new DayPilot.Date(e.data.end));
|
||
}
|
||
return new DayPilot.Date(e.data.end);
|
||
}
|
||
else {
|
||
this.temp().end = new DayPilot.Date(val);
|
||
}
|
||
};
|
||
this.rawend = function() {
|
||
if (typeof val === 'undefined') {
|
||
if (calendar && calendar.internal.adjustEndIn) {
|
||
return calendar.internal.adjustEndIn(new DayPilot.Date(e.data.end));
|
||
}
|
||
return new DayPilot.Date(e.data.end);
|
||
}
|
||
else {
|
||
this.temp().end = new DayPilot.Date(val);
|
||
}
|
||
};
|
||
this.partStart = function() {
|
||
return new DayPilot.Date(this.part.start);
|
||
};
|
||
this.partEnd = function() {
|
||
return new DayPilot.Date(this.part.end);
|
||
};
|
||
this.row = function() {
|
||
return this.resource();
|
||
};
|
||
|
||
this.allday = function() {
|
||
if (typeof val === 'undefined') {
|
||
return e.data.allday;
|
||
}
|
||
else {
|
||
this.temp().allday = val;
|
||
}
|
||
};
|
||
|
||
// backwards compatibility, 7.3
|
||
this.isAllDay = this.allday;
|
||
|
||
this.resource = function(val) {
|
||
if (typeof val === 'undefined') {
|
||
return e.data.resource;
|
||
}
|
||
else { // it's a resource id
|
||
this.temp().resource = val;
|
||
}
|
||
};
|
||
|
||
this.recurrent = function() {
|
||
return e.data.recurrent;
|
||
};
|
||
this.recurrentMasterId = function() {
|
||
return e.data.recurrentMasterId;
|
||
};
|
||
this.useBox = function() {
|
||
return this.part.box;
|
||
};
|
||
this.staticBubbleHTML = function() {
|
||
return this.bubbleHtml();
|
||
};
|
||
this.bubbleHtml = function() {
|
||
if (e.cache) {
|
||
return e.cache.bubbleHtml || e.data.bubbleHtml;
|
||
}
|
||
return e.data.bubbleHtml;
|
||
};
|
||
this.tag = function(field) {
|
||
if (e.data.tags) {
|
||
return e.data.tags[field];
|
||
}
|
||
else {
|
||
var values = e.data.tag;
|
||
if (!values) {
|
||
return null;
|
||
}
|
||
if (typeof field === 'undefined') {
|
||
return e.data.tag;
|
||
}
|
||
var fields = e.calendar.tagFields;
|
||
var index = -1;
|
||
for (var i = 0; i < fields.length; i++) {
|
||
if (field === fields[i])
|
||
index = i;
|
||
}
|
||
if (index === -1) {
|
||
throw "Field name not found.";
|
||
}
|
||
return values[index];
|
||
}
|
||
};
|
||
|
||
this.client = {};
|
||
this.client.innerHTML = function(val) {
|
||
if (typeof val === 'undefined') {
|
||
if (e.cache && typeof e.cache.html !== "undefined") {
|
||
return e.cache.html;
|
||
}
|
||
if (typeof e.data.html !== "undefined") {
|
||
return e.data.html;
|
||
}
|
||
return e.data.text;
|
||
}
|
||
else {
|
||
e.data.html = val;
|
||
}
|
||
};
|
||
|
||
this.client.html = this.client.innerHTML;
|
||
|
||
this.client.header = function(val) {
|
||
if (typeof val === 'undefined') {
|
||
return e.data.header;
|
||
}
|
||
else {
|
||
e.data.header = val;
|
||
}
|
||
};
|
||
|
||
this.client.cssClass = function(val) {
|
||
if (typeof val === 'undefined') {
|
||
return e.data.cssClass;
|
||
}
|
||
else {
|
||
e.data.cssClass = val;
|
||
}
|
||
};
|
||
this.client.toolTip = function(val) {
|
||
if (typeof val === 'undefined') {
|
||
if (e.cache && typeof e.cache.toolTip !== "undefined") {
|
||
return e.cache.toolTip;
|
||
}
|
||
return typeof e.data.toolTip !== 'undefined' ? e.data.toolTip : e.data.text;
|
||
}
|
||
else {
|
||
e.data.toolTip = val;
|
||
}
|
||
};
|
||
|
||
this.client.backColor = function(val) {
|
||
if (typeof val === 'undefined') {
|
||
if (e.cache && typeof e.cache.backColor !== "undefined") {
|
||
return e.cache.backColor;
|
||
}
|
||
return typeof e.data.backColor !== "undefined" ? e.data.backColor : e.calendar.eventBackColor;
|
||
}
|
||
else {
|
||
e.data.backColor = val;
|
||
}
|
||
};
|
||
|
||
this.client.borderColor = function(val) {
|
||
if (typeof val === 'undefined') {
|
||
if (e.cache && typeof e.cache.borderColor !== "undefined") {
|
||
return e.cache.borderColor;
|
||
}
|
||
return typeof e.data.borderColor !== "undefined" ? e.data.borderColor : e.calendar.eventBorderColor;
|
||
}
|
||
else {
|
||
e.data.borderColor = val;
|
||
}
|
||
};
|
||
|
||
this.client.barColor = function(val) {
|
||
if (typeof val === 'undefined') {
|
||
if (e.cache && typeof e.cache.barColor !== "undefined") {
|
||
return e.cache.barColor;
|
||
}
|
||
return typeof e.data.barColor !== "undefined" ? e.data.barColor : e.calendar.durationBarColor;
|
||
}
|
||
else {
|
||
e.data.barColor = val;
|
||
}
|
||
};
|
||
|
||
this.client.barVisible = function(val) {
|
||
if (typeof val === 'undefined') {
|
||
if (e.cache && typeof e.cache.barHidden !== "undefined") {
|
||
return !e.cache.barHidden;
|
||
}
|
||
return e.calendar.durationBarVisible && !e.data.barHidden;
|
||
}
|
||
else {
|
||
e.data.barHidden = !val;
|
||
}
|
||
};
|
||
|
||
this.client.contextMenu = function(val) {
|
||
if (typeof val === 'undefined') {
|
||
if (e.oContextMenu) {
|
||
return e.oContextMenu;
|
||
}
|
||
var cm = e.cache ? e.cache.contextMenu : e.data.contextMenu;
|
||
return (cm) ? DayPilot.Util.evalVariable(cm) : null; // might want to return the default context menu in the future
|
||
}
|
||
else {
|
||
e.oContextMenu = val;
|
||
}
|
||
};
|
||
|
||
this.client.moveEnabled = function(val) {
|
||
if (typeof val === 'undefined') {
|
||
if (e.cache && typeof e.cache.moveDisabled !== "undefined") {
|
||
return !e.cache.moveDisabled;
|
||
}
|
||
return e.calendar.eventMoveHandling !== 'Disabled' && !e.data.moveDisabled;
|
||
}
|
||
else {
|
||
e.data.moveDisabled = !val;
|
||
}
|
||
};
|
||
|
||
this.client.resizeEnabled = function(val) {
|
||
if (typeof val === 'undefined') {
|
||
if (e.cache && typeof e.cache.resizeDisabled !== "undefined") {
|
||
return !e.cache.resizeDisabled;
|
||
}
|
||
return e.calendar.eventResizeHandling !== 'Disabled' && !e.data.resizeDisabled;
|
||
}
|
||
else {
|
||
e.data.resizeDisabled = !val;
|
||
}
|
||
};
|
||
|
||
this.client.rightClickEnabled = function(val) {
|
||
if (typeof val === 'undefined') {
|
||
if (e.cache && typeof e.cache.rightClickDisabled !== "undefined") {
|
||
return !e.cache.rightClickDisabled;
|
||
}
|
||
return e.calendar.rightClickHandling !== 'Disabled' && !e.data.rightClickDisabled;
|
||
}
|
||
else {
|
||
e.data.rightClickDisabled = !val;
|
||
}
|
||
};
|
||
|
||
this.client.clickEnabled = function(val) {
|
||
if (typeof val === 'undefined') {
|
||
if (e.cache && typeof e.cache.clickDisabled !== "undefined") {
|
||
return !e.cache.clickDisabled;
|
||
}
|
||
return e.calendar.clickHandling !== 'Disabled' && !e.data.clickDisabled;
|
||
}
|
||
else {
|
||
e.data.clickDisabled = !val;
|
||
}
|
||
};
|
||
|
||
this.client.deleteEnabled = function(val) {
|
||
if (typeof val === 'undefined') {
|
||
if (e.cache && typeof e.cache.deleteDisabled !== "undefined") {
|
||
return !e.cache.deleteDisabled;
|
||
}
|
||
return e.calendar.eventDeleteHandling !== 'Disabled' && !e.data.deleteDisabled;
|
||
}
|
||
else {
|
||
e.data.deleteDisabled = !val;
|
||
}
|
||
};
|
||
|
||
this.client.doubleClickEnabled = function(val) {
|
||
if (typeof val === 'undefined') {
|
||
if (e.cache && typeof e.cache.doubleClickDisabled !== "undefined") {
|
||
return !e.cache.doubleClickDisabled;
|
||
}
|
||
return e.calendar.eventDoubleClickHandling !== 'Disabled' && !e.data.doubleClickDisabled;
|
||
}
|
||
else {
|
||
e.data.doubleClickDisabled = !val;
|
||
}
|
||
};
|
||
|
||
this.client.deleteClickEnabled = function(val) {
|
||
if (typeof val === 'undefined') {
|
||
if (e.cache && typeof e.cache.deleteDisabled !== "undefined") {
|
||
return !e.cache.deleteDisabled;
|
||
}
|
||
return e.calendar.eventDeleteHandling !== 'Disabled' && !e.data.deleteDisabled;
|
||
}
|
||
else {
|
||
e.data.deleteDisabled = !val;
|
||
}
|
||
};
|
||
|
||
this.toJSON = function(key) {
|
||
var json = {};
|
||
json.value = this.id(); // still sending it with the old name
|
||
json.id = this.id();
|
||
json.text = this.text();
|
||
json.start = this.start().toJSON();
|
||
json.end = this.end().toJSON();
|
||
json.resource = this.resource();
|
||
json.isAllDay = false;
|
||
json.recurrentMasterId = this.recurrentMasterId();
|
||
json.join = this.data.join;
|
||
json.tag = {};
|
||
|
||
if (e.data.tags) {
|
||
for (var name in e.data.tags) {
|
||
if (e.data.tags.hasOwnProperty(name)) {
|
||
json.tag[name] = "" + e.data.tags[name];
|
||
}
|
||
}
|
||
}
|
||
else {
|
||
if (e.calendar.tagFields) {
|
||
var fields = e.calendar.tagFields;
|
||
for (var i = 0; i < fields.length; i++) {
|
||
json.tag[fields[i]] = this.tag(fields[i]);
|
||
}
|
||
}
|
||
}
|
||
|
||
return json;
|
||
};
|
||
};
|
||
|
||
/**
|
||
* A simple wrapper around task data.
|
||
* @param data
|
||
* @constructor
|
||
*/
|
||
DayPilot.Task = function(data, calendar) {
|
||
if (!data) {
|
||
throw "Trying to initialize DayPilot.Task with null data parameter";
|
||
}
|
||
|
||
var e = this;
|
||
|
||
var event = null; // reference to DayPilot.Event received from the Scheduler
|
||
|
||
if (data instanceof DayPilot.Event) {
|
||
event = data;
|
||
this.data = data.data.task;
|
||
}
|
||
else if (data instanceof DayPilot.Task) {
|
||
return data; // don't create a new object
|
||
}
|
||
else if (data.isTaskWrapper) {
|
||
this.data = data.data;
|
||
}
|
||
else {
|
||
this.data = data;
|
||
}
|
||
|
||
var copy = {};
|
||
var synced = ["id", "text", "start", "end", "complete", "type"];
|
||
|
||
this.isTask = true;
|
||
this.calendar = calendar;
|
||
|
||
// internal
|
||
this.temp = function() {
|
||
if (copy.dirty) {
|
||
return copy;
|
||
}
|
||
for (var i = 0; i < synced.length; i++) {
|
||
copy[synced[i]] = e.data[synced[i]];
|
||
}
|
||
copy.dirty = true;
|
||
return copy;
|
||
|
||
};
|
||
|
||
// internal
|
||
// copies data object
|
||
// used when the original state of the data is needed (notified EventMove etc.)
|
||
this.copy = function() {
|
||
var result = {};
|
||
DayPilot.Util.copyProps(e.data, result);
|
||
return result;
|
||
};
|
||
|
||
this.commit = function() {
|
||
if (!copy.dirty) {
|
||
return;
|
||
}
|
||
|
||
for (var i = 0; i < synced.length; i++) {
|
||
e.data[synced[i]] = copy[synced[i]];
|
||
}
|
||
|
||
copy.dirty = false;
|
||
};
|
||
|
||
this.dirty = function() {
|
||
return copy.dirty;
|
||
};
|
||
|
||
this.id = function(val) {
|
||
if (typeof val === 'undefined') {
|
||
return e.data.id;
|
||
}
|
||
else {
|
||
this.temp().id = val;
|
||
}
|
||
};
|
||
this.text = function(val) {
|
||
if (typeof val === 'undefined') {
|
||
return e.data.text;
|
||
}
|
||
else {
|
||
this.temp().text = val;
|
||
this.client.innerHTML(val); // update the HTML automatically
|
||
}
|
||
};
|
||
this.start = function(val) {
|
||
if (typeof val === 'undefined') {
|
||
return new DayPilot.Date(e.data.start);
|
||
}
|
||
else {
|
||
this.temp().start = new DayPilot.Date(val);
|
||
}
|
||
};
|
||
this.duration = function() {
|
||
return new DayPilot.Duration(this.start(), this.end());
|
||
};
|
||
this.end = function(val) {
|
||
if (typeof val === 'undefined') {
|
||
if (calendar && calendar.eventEndSpec === "Date") {
|
||
return new DayPilot.Date(e.data.end).getDatePart().addDays(1);
|
||
}
|
||
return new DayPilot.Date(e.data.end);
|
||
}
|
||
else {
|
||
this.temp().end = new DayPilot.Date(val);
|
||
}
|
||
};
|
||
this.type = function(val) {
|
||
if (typeof val === 'undefined') {
|
||
if (event) {
|
||
return event.data.type;
|
||
}
|
||
return e.data.type;
|
||
}
|
||
else {
|
||
this.temp().type = val;
|
||
}
|
||
};
|
||
this.complete = function(val) {
|
||
if (typeof val === 'undefined') {
|
||
if (!e.data.complete) {
|
||
return 0;
|
||
}
|
||
return e.data.complete;
|
||
}
|
||
else {
|
||
this.temp().complete = val;
|
||
}
|
||
};
|
||
this.children = function() {
|
||
var list = [];
|
||
list.add = function(data) {
|
||
var task = new DayPilot.Task(data);
|
||
if (!this.data.children) {
|
||
this.data.children = [];
|
||
}
|
||
this.children.push(task.data);
|
||
};
|
||
for(var i = 0; this.data.children && i < this.data.children.length; i++) {
|
||
list.push(new DayPilot.Task(this.data.children[i], calendar));
|
||
}
|
||
|
||
return list;
|
||
};
|
||
|
||
this.toJSON = function(key) {
|
||
var json = {};
|
||
json.id = this.id();
|
||
json.text = this.text();
|
||
json.start = this.start().toJSON();
|
||
json.end = this.end().toJSON();
|
||
json.type = this.type();
|
||
json.tags = {};
|
||
|
||
DayPilot.Util.copyProps(this.data.tags, json.tags);
|
||
|
||
return json;
|
||
}
|
||
|
||
this.row = {};
|
||
var row = this.row;
|
||
|
||
row.expanded = function(val) {
|
||
if (typeof val === 'undefined') {
|
||
if (!e.data.row) {
|
||
return true;
|
||
}
|
||
return !e.data.row.collapsed;
|
||
}
|
||
else {
|
||
if (!e.data.row) {
|
||
e.data.row = {};
|
||
}
|
||
if (!!e.data.row.collapsed !== !val) {
|
||
calendar.internal.rowObjectForTaskData(e.data).toggle();
|
||
}
|
||
e.data.row.collapsed = !val;
|
||
|
||
/*
|
||
if (calendar) {
|
||
calendar.update();
|
||
}
|
||
*/
|
||
}
|
||
};
|
||
|
||
row.expand = function() {
|
||
row.expanded(true);
|
||
};
|
||
|
||
row.collapse = function() {
|
||
row.expanded(false);
|
||
};
|
||
|
||
row.toggle = function() {
|
||
row.expanded(!row.expanded());
|
||
};
|
||
|
||
};
|
||
|
||
|
||
/* JSON objects */
|
||
/*
|
||
DayPilot.EventData = function(e) {
|
||
this.value = function() {
|
||
return id;
|
||
};
|
||
this.tag = function() {
|
||
return null;
|
||
};
|
||
this.start = function() {
|
||
return new Date(0);
|
||
};
|
||
this.end = function() {
|
||
return new Date(duration * 1000);
|
||
};
|
||
this.text = function() {
|
||
return text;
|
||
};
|
||
this.isAllDay = function() {
|
||
return false;
|
||
};
|
||
this.allday = this.isAllDay;
|
||
};
|
||
*/
|
||
|
||
|
||
/* XMLHttpRequest */
|
||
|
||
DayPilot.request = function(url, callback, postData, errorCallback) {
|
||
var req = DayPilot.createXmlHttp();
|
||
if (!req) {
|
||
return;
|
||
}
|
||
|
||
req.open("POST", url, true);
|
||
req.setRequestHeader('Content-type', 'text/plain');
|
||
req.onreadystatechange = function() {
|
||
if (req.readyState !== 4)
|
||
return;
|
||
if (req.status !== 200 && req.status !== 304) {
|
||
if (errorCallback) {
|
||
errorCallback(req);
|
||
}
|
||
else {
|
||
if (window.console) { console.log('HTTP error ' + req.status); }
|
||
}
|
||
return;
|
||
}
|
||
callback(req);
|
||
};
|
||
if (req.readyState === 4) {
|
||
return;
|
||
}
|
||
if (typeof postData === 'object') {
|
||
postData = DayPilot.JSON.stringify(postData);
|
||
}
|
||
req.send(postData);
|
||
};
|
||
|
||
DayPilot.ajax = function(object) {
|
||
var req = DayPilot.createXmlHttp();
|
||
if (!req) {
|
||
return;
|
||
}
|
||
|
||
var method = object.method || "GET";
|
||
var success = object.success || function() {};
|
||
var error = object.error || function() {};
|
||
var data = object.data;
|
||
var url = object.url;
|
||
|
||
req.open(method, url, true);
|
||
req.setRequestHeader('Content-type', 'text/plain');
|
||
req.onreadystatechange = function() {
|
||
if (req.readyState !== 4)
|
||
return;
|
||
if (req.status !== 200 && req.status !== 304) {
|
||
if (error) {
|
||
var args = {};
|
||
args.request = req;
|
||
error(args);
|
||
}
|
||
else {
|
||
if (window.console) { console.log('HTTP error ' + req.status); }
|
||
}
|
||
return;
|
||
}
|
||
var args = {};
|
||
args.request = req;
|
||
success(args);
|
||
};
|
||
if (req.readyState === 4) {
|
||
return;
|
||
}
|
||
if (typeof data === 'object') {
|
||
data = DayPilot.JSON.stringify(postData);
|
||
}
|
||
req.send(data);
|
||
};
|
||
|
||
DayPilot.createXmlHttp = function() {
|
||
var xmlHttp;
|
||
try {
|
||
xmlHttp = new XMLHttpRequest();
|
||
}
|
||
catch (e) {
|
||
try {
|
||
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
|
||
}
|
||
catch (e) {
|
||
}
|
||
}
|
||
return xmlHttp;
|
||
};
|
||
|
||
|
||
DayPilot.Duration = function(ticks) {
|
||
var d = this;
|
||
|
||
var day = 1000*60*60*24;
|
||
var hour = 1000*60*60;
|
||
var minute = 1000*60;
|
||
var second = 1000;
|
||
|
||
if (arguments.length === 2) {
|
||
var start = arguments[0];
|
||
var end = arguments[1];
|
||
|
||
if (!start || !start.isDayPilotDate) {
|
||
throw "DayPilot.Duration(): Invalid start argument, DayPilot.Date expected";
|
||
}
|
||
if (!end || !end.isDayPilotDate) {
|
||
throw "DayPilot.Duration(): Invalid end argument, DayPilot.Date expected";
|
||
}
|
||
this.ticks = end.getTime() - start.getTime();
|
||
}
|
||
else {
|
||
this.ticks = ticks;
|
||
}
|
||
|
||
this.toString = function(pattern) {
|
||
if (!pattern) {
|
||
return d.days() + "." + d.hours() + ":" + d.minutes() + ":" + d.seconds() + "." + d.milliseconds();
|
||
}
|
||
|
||
var minutes = d.minutes();
|
||
minutes = (minutes < 10 ? "0" : "") + minutes;
|
||
|
||
// dumb replacement
|
||
var result = pattern;
|
||
result = result.replace("mm", minutes);
|
||
result = result.replace("m", d.minutes());
|
||
result = result.replace("H", d.hours());
|
||
result = result.replace("h", d.hours());
|
||
result = result.replace("d", d.days());
|
||
result = result.replace("s", d.seconds());
|
||
return result;
|
||
};
|
||
|
||
this.totalHours = function() {
|
||
return d.ticks / hour;
|
||
};
|
||
|
||
this.totalDays = function() {
|
||
return d.ticks / day;
|
||
};
|
||
|
||
this.totalHours = function() {
|
||
return d.ticks / hour;
|
||
};
|
||
|
||
this.totalMinutes = function() {
|
||
return d.ticks / minute;
|
||
};
|
||
|
||
this.totalSeconds = function() {
|
||
return d.ticks / second;
|
||
};
|
||
|
||
this.days = function() {
|
||
return Math.floor(d.totalDays());
|
||
};
|
||
|
||
this.hours = function() {
|
||
var hourPartTicks = d.ticks - d.days()*day;
|
||
return Math.floor(hourPartTicks/hour);
|
||
};
|
||
|
||
this.minutes = function() {
|
||
var minutePartTicks = d.ticks - Math.floor(d.totalHours()) * hour;
|
||
return Math.floor(minutePartTicks/minute);
|
||
};
|
||
|
||
this.seconds = function() {
|
||
var secondPartTicks = d.ticks - Math.floor(d.totalMinutes()) * minute;
|
||
return Math.floor(secondPartTicks/second);
|
||
};
|
||
|
||
this.milliseconds = function() {
|
||
return d.ticks % second;
|
||
};
|
||
|
||
};
|
||
|
||
// alias to DayPilot.Duration
|
||
DayPilot.TimeSpan = function() {
|
||
DayPilot.Duration.apply(this, arguments);
|
||
};
|
||
try {
|
||
DayPilot.TimeSpan.prototype = Object.create(DayPilot.Duration.prototype); // make instanceof work
|
||
}
|
||
catch (e) {} // doesn't work in IE8
|
||
|
||
// DayPilot.TimeSpan.prototype.constructor = DayPilot.TimeSpan; // not necessary, it's an alias, not an inherited class
|
||
|
||
/* Date utils */
|
||
|
||
// DayPilot.Date class
|
||
/* Constructor signatures:
|
||
|
||
-- new DayPilot.Date(date, isLocal)
|
||
date - JavaScript Date object
|
||
isLocal - true if the local time should be taken from date, otherwise GMT base is used
|
||
|
||
-- new DayPilot.Date() - returns now, using local date
|
||
|
||
-- new DayPilot.Date(string)
|
||
string - date in ISO 8601 format, e.g. 2009-01-01T00:00:00
|
||
|
||
*/
|
||
DayPilot.Date = function(date, isLocal) {
|
||
|
||
if (DayPilot.Util.isNullOrUndefined(date)) { // date not set, use NOW
|
||
this.isDayPilotDate = true; // allow class detection
|
||
this.d = DayPilot.Date.fromLocal();
|
||
this.ticks = this.d.getTime();
|
||
this.value = this.toStringSortable();
|
||
return;
|
||
}
|
||
|
||
if (date.isDayPilotDate) { // it's already DayPilot.Date object, return it (no copy)
|
||
return date;
|
||
}
|
||
|
||
var cache = DayPilot.Date.Cache.Ctor;
|
||
if (cache[date]) {
|
||
return cache[date];
|
||
}
|
||
|
||
if (typeof date === "string") {
|
||
var result = DayPilot.Date.fromStringSortable(date);
|
||
cache[date] = result;
|
||
return result;
|
||
}
|
||
|
||
if (typeof date === "number") {
|
||
return new DayPilot.Date(new Date(date));
|
||
}
|
||
|
||
if (!date.getFullYear) { // it's not a date object, fail
|
||
throw "date parameter is not a Date object: " + date;
|
||
}
|
||
|
||
if (isLocal) { // if the date passed should be read as local date
|
||
this.isDayPilotDate = true; // allow class detection
|
||
this.d = DayPilot.Date.fromLocal(date);
|
||
this.ticks = this.d.getTime();
|
||
}
|
||
else { // should be read as GMT
|
||
this.isDayPilotDate = true; // allow class detection
|
||
this.d = date;
|
||
this.ticks = this.d.getTime();
|
||
}
|
||
this.value = this.toStringSortable();
|
||
};
|
||
|
||
DayPilot.Date.Cache = {};
|
||
DayPilot.Date.Cache.Parsing = {};
|
||
DayPilot.Date.Cache.Ctor = {};
|
||
|
||
/*
|
||
DayPilot.Date.prototype.toJSON = function() {
|
||
return this.value;
|
||
};
|
||
*/
|
||
DayPilot.Date.prototype.addDays = function(days) {
|
||
return new DayPilot.Date(DayPilot.Date.addDays(this.d, days));
|
||
};
|
||
|
||
DayPilot.Date.prototype.addHours = function(hours) {
|
||
return this.addTime(hours * 60 * 60 * 1000);
|
||
};
|
||
|
||
DayPilot.Date.prototype.addMilliseconds = function(millis) {
|
||
return this.addTime(millis);
|
||
};
|
||
|
||
DayPilot.Date.prototype.addMinutes = function(minutes) {
|
||
return this.addTime(minutes * 60 * 1000);
|
||
};
|
||
|
||
DayPilot.Date.prototype.addMonths = function(months) {
|
||
return new DayPilot.Date(DayPilot.Date.addMonths(this.d, months));
|
||
};
|
||
|
||
DayPilot.Date.prototype.addSeconds = function(seconds) {
|
||
return this.addTime(seconds * 1000);
|
||
};
|
||
|
||
DayPilot.Date.prototype.addTime = function(ticks) {
|
||
return new DayPilot.Date(DayPilot.Date.addTime(this.d, ticks));
|
||
};
|
||
|
||
DayPilot.Date.prototype.addYears = function(years) {
|
||
var n = this.clone();
|
||
n.d.setUTCFullYear(this.getYear() + years);
|
||
return n;
|
||
};
|
||
|
||
DayPilot.Date.prototype.clone = function() {
|
||
return new DayPilot.Date(DayPilot.Date.clone(this.d));
|
||
};
|
||
|
||
DayPilot.Date.prototype.dayOfWeek = function() {
|
||
return this.d.getUTCDay();
|
||
};
|
||
|
||
DayPilot.Date.prototype.getDayOfWeek = function() {
|
||
return this.d.getUTCDay();
|
||
};
|
||
|
||
DayPilot.Date.prototype.daysInMonth = function() {
|
||
return DayPilot.Date.daysInMonth(this.d);
|
||
};
|
||
|
||
DayPilot.Date.prototype.daysInYear = function() {
|
||
var year = this.getYear();
|
||
if (year % 4 !== 0) {
|
||
return 365;
|
||
}
|
||
if (year % 100 === 0 && year % 400 !== 0) {
|
||
return 365;
|
||
}
|
||
return 366;
|
||
};
|
||
|
||
DayPilot.Date.prototype.dayOfYear = function() {
|
||
return Math.ceil((this.getDatePart().getTime() - this.firstDayOfYear().getTime()) / 86400000) + 1;
|
||
};
|
||
|
||
DayPilot.Date.prototype.equals = function(another) {
|
||
if (another === null) {
|
||
return false;
|
||
}
|
||
if (another.isDayPilotDate) {
|
||
return DayPilot.Date.equals(this.d, another.d);
|
||
}
|
||
else {
|
||
throw "The parameter must be a DayPilot.Date object (DayPilot.Date.equals())";
|
||
}
|
||
};
|
||
|
||
DayPilot.Date.prototype.firstDayOfMonth = function() {
|
||
var utc = DayPilot.Date.firstDayOfMonth(this.getYear(), this.getMonth() + 1);
|
||
return new DayPilot.Date(utc);
|
||
};
|
||
|
||
DayPilot.Date.prototype.firstDayOfYear = function() {
|
||
var year = this.getYear();
|
||
var d = new Date();
|
||
d.setUTCFullYear(year, 0, 1);
|
||
d.setUTCHours(0);
|
||
d.setUTCMinutes(0);
|
||
d.setUTCSeconds(0);
|
||
d.setUTCMilliseconds(0);
|
||
return new DayPilot.Date(d);
|
||
};
|
||
|
||
DayPilot.Date.prototype.firstDayOfWeek = function(weekStarts) {
|
||
var utc = DayPilot.Date.firstDayOfWeek(this.d, weekStarts);
|
||
return new DayPilot.Date(utc);
|
||
};
|
||
|
||
DayPilot.Date.prototype.getDay = function() {
|
||
return this.d.getUTCDate();
|
||
};
|
||
|
||
DayPilot.Date.prototype.getDatePart = function() {
|
||
return new DayPilot.Date(DayPilot.Date.getDate(this.d));
|
||
};
|
||
|
||
DayPilot.Date.prototype.getYear = function() {
|
||
return this.d.getUTCFullYear();
|
||
};
|
||
|
||
DayPilot.Date.prototype.getHours = function() {
|
||
return this.d.getUTCHours();
|
||
};
|
||
|
||
DayPilot.Date.prototype.getMilliseconds = function() {
|
||
return this.d.getUTCMilliseconds();
|
||
};
|
||
|
||
DayPilot.Date.prototype.getMinutes = function() {
|
||
return this.d.getUTCMinutes();
|
||
};
|
||
|
||
DayPilot.Date.prototype.getMonth = function() {
|
||
return this.d.getUTCMonth();
|
||
};
|
||
|
||
DayPilot.Date.prototype.getSeconds = function() {
|
||
return this.d.getUTCSeconds();
|
||
};
|
||
|
||
DayPilot.Date.prototype.getTotalTicks = function() {
|
||
return this.getTime();
|
||
};
|
||
|
||
// undocumented
|
||
DayPilot.Date.prototype.getTime = function() {
|
||
/*
|
||
if (typeof this.ticks !== 'number') {
|
||
throw "Uninitialized DayPilot.Date (internal error)";
|
||
}*/
|
||
return this.ticks;
|
||
};
|
||
|
||
DayPilot.Date.prototype.getTimePart = function() {
|
||
return DayPilot.Date.getTime(this.d);
|
||
};
|
||
|
||
DayPilot.Date.prototype.lastDayOfMonth = function() {
|
||
var utc = DayPilot.Date.lastDayOfMonth(this.getYear(), this.getMonth() + 1);
|
||
return new DayPilot.Date(utc);
|
||
};
|
||
|
||
DayPilot.Date.prototype.weekNumber = function() {
|
||
var first = this.firstDayOfYear();
|
||
var days = (this.getTime() - first.getTime()) / 86400000;
|
||
return Math.ceil((days + first.dayOfWeek() + 1) / 7);
|
||
};
|
||
|
||
DayPilot.Date.prototype.local = function() {
|
||
if (typeof this.offset === 'undefined') {
|
||
return new DayPilot.Date(this.d);
|
||
}
|
||
return this.addMinutes(this.offset);
|
||
};
|
||
|
||
// ISO 8601
|
||
DayPilot.Date.prototype.weekNumberISO = function() {
|
||
var thursdayFlag = false;
|
||
var dayOfYear = this.dayOfYear();
|
||
|
||
var startWeekDayOfYear = this.firstDayOfYear().dayOfWeek();
|
||
var endWeekDayOfYear = this.firstDayOfYear().addYears(1).addDays(-1).dayOfWeek();
|
||
//int startWeekDayOfYear = new DateTime(date.getYear(), 1, 1).getDayOfWeekOrdinal();
|
||
//int endWeekDayOfYear = new DateTime(date.getYear(), 12, 31).getDayOfWeekOrdinal();
|
||
|
||
if (startWeekDayOfYear === 0) {
|
||
startWeekDayOfYear = 7;
|
||
}
|
||
if (endWeekDayOfYear === 0) {
|
||
endWeekDayOfYear = 7;
|
||
}
|
||
|
||
var daysInFirstWeek = 8 - (startWeekDayOfYear);
|
||
|
||
if (startWeekDayOfYear === 4 || endWeekDayOfYear === 4) {
|
||
thursdayFlag = true;
|
||
}
|
||
|
||
var fullWeeks = Math.ceil((dayOfYear - (daysInFirstWeek)) / 7.0);
|
||
|
||
var weekNumber = fullWeeks;
|
||
|
||
if (daysInFirstWeek >= 4) {
|
||
weekNumber = weekNumber + 1;
|
||
}
|
||
|
||
if (weekNumber > 52 && !thursdayFlag) {
|
||
weekNumber = 1;
|
||
}
|
||
|
||
if (weekNumber === 0) {
|
||
weekNumber = this.firstDayOfYear().addDays(-1).weekNumberISO(); //weekNrISO8601(new DateTime(date.getYear() - 1, 12, 31));
|
||
}
|
||
|
||
return weekNumber;
|
||
|
||
};
|
||
|
||
DayPilot.Date.prototype.toDateLocal = function() {
|
||
return DayPilot.Date.toLocal(this.d);
|
||
};
|
||
|
||
DayPilot.Date.prototype.toJSON = function() {
|
||
return this.value;
|
||
};
|
||
|
||
// formatting and languages needed here
|
||
DayPilot.Date.prototype.toString = function(pattern, locale) {
|
||
if (typeof pattern === 'undefined') {
|
||
return this.toStringSortable();
|
||
}
|
||
return new Pattern(pattern, locale).print(this);
|
||
};
|
||
|
||
DayPilot.Date.prototype.toStringSortable = function() {
|
||
return DayPilot.Date.toStringSortable(this.d);
|
||
};
|
||
|
||
/* static functions, return DayPilot.Date object */
|
||
|
||
|
||
// returns null if parsing was not successful
|
||
DayPilot.Date.parse = function(str, pattern) {
|
||
var p = new Pattern(pattern);
|
||
return p.parse(str);
|
||
};
|
||
|
||
DayPilot.Date.fromStringSortable = function(string) {
|
||
var result;
|
||
//var datetime = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(?:(\+|-)(\d{2}):(\d{2}))?$/;
|
||
//var date = /^(\d{4})-(\d{2})-(\d{2})$/;
|
||
|
||
//var isValidDateTime = datetime.test(string);
|
||
//var isValidDate = date.test(string);
|
||
//var isValid = isValidDateTime || isValidDate;
|
||
|
||
// 2010-01-01 --- 10
|
||
//
|
||
// 2010-01-01T00:00:00 --- 19
|
||
// 2010-01-01T00:00:00+00:00 --- 25
|
||
|
||
if (!string) {
|
||
throw "Can't create DayPilot.Date from empty string";
|
||
}
|
||
|
||
var len = string.length;
|
||
var date = len === 10;
|
||
var datetime = len = 19;
|
||
var datetimetz = len === 25;
|
||
|
||
if (!date && !datetime && !datetimetz) {
|
||
throw "Invalid string format (use '2010-01-01', '2010-01-01T00:00:00', or '2010-01-01T00:00:00+00:00'.";
|
||
}
|
||
|
||
if (DayPilot.Date.Cache.Parsing[string]) {
|
||
return DayPilot.Date.Cache.Parsing[string];
|
||
}
|
||
|
||
var year = string.substring(0, 4);
|
||
var month = string.substring(5, 7);
|
||
var day = string.substring(8, 10);
|
||
|
||
var d = new Date();
|
||
d.setUTCFullYear(year, month - 1, day);
|
||
|
||
if (date) {
|
||
d.setUTCHours(0);
|
||
d.setUTCMinutes(0);
|
||
d.setUTCSeconds(0);
|
||
d.setUTCMilliseconds(0);
|
||
result = new DayPilot.Date(d);
|
||
DayPilot.Date.Cache.Parsing[string] = result;
|
||
return result;
|
||
}
|
||
|
||
var hours = string.substring(11, 13);
|
||
var minutes = string.substring(14, 16);
|
||
var seconds = string.substring(17, 19);
|
||
|
||
d.setUTCHours(hours);
|
||
d.setUTCMinutes(minutes);
|
||
d.setUTCSeconds(seconds);
|
||
d.setUTCMilliseconds(0);
|
||
var result = new DayPilot.Date(d);
|
||
|
||
if (datetime) {
|
||
DayPilot.Date.Cache.Parsing[string] = result;
|
||
return result;
|
||
}
|
||
|
||
var tzdir = string[20];
|
||
var tzhours = string.substring(21, 23);
|
||
var tzminutes = string.substring(24);
|
||
var tzoffset = tzhours * 60 + tzminutes;
|
||
if (tzdir === "-") {
|
||
tzoffset = -tzoffset;
|
||
}
|
||
result = result.addMinutes(-tzoffset); // get UTC base
|
||
result.offset = offset; // store offset
|
||
|
||
DayPilot.Date.Cache.Parsing[string] = result;
|
||
return result;
|
||
};
|
||
|
||
/* internal functions, all operate with GMT base of the date object
|
||
(except of DayPilot.Date.fromLocal()) */
|
||
|
||
DayPilot.Date.addDays = function(date, days) {
|
||
var d = new Date();
|
||
d.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);
|
||
return d;
|
||
};
|
||
|
||
DayPilot.Date.addMinutes = function(date, minutes) {
|
||
var d = new Date();
|
||
d.setTime(date.getTime() + minutes * 60 * 1000);
|
||
return d;
|
||
};
|
||
|
||
DayPilot.Date.addMonths = function(date, months) {
|
||
if (months === 0)
|
||
return date;
|
||
|
||
var y = date.getUTCFullYear();
|
||
var m = date.getUTCMonth() + 1;
|
||
|
||
if (months > 0) {
|
||
while (months >= 12) {
|
||
months -= 12;
|
||
y++;
|
||
}
|
||
if (months > 12 - m) {
|
||
y++;
|
||
m = months - (12 - m);
|
||
}
|
||
else {
|
||
m += months;
|
||
}
|
||
}
|
||
else {
|
||
while (months <= -12) {
|
||
months += 12;
|
||
y--;
|
||
}
|
||
if (m + months <= 0) { //
|
||
y--;
|
||
m = 12 + m + months;
|
||
}
|
||
else {
|
||
m = m + months;
|
||
}
|
||
}
|
||
|
||
var d = DayPilot.Date.clone(date);
|
||
d.setUTCDate(1);
|
||
d.setUTCFullYear(y);
|
||
d.setUTCMonth(m - 1);
|
||
|
||
var max = DayPilot.Date.daysInMonth(y, m);
|
||
d.setUTCDate(Math.min(max, date.getUTCDate()));
|
||
|
||
return d;
|
||
};
|
||
|
||
DayPilot.Date.addTime = function(date, time) {
|
||
var d = new Date();
|
||
d.setTime(date.getTime() + time);
|
||
return d;
|
||
};
|
||
|
||
DayPilot.Date.clone = function(original) {
|
||
var d = new Date();
|
||
return DayPilot.Date.dateFromTicks(original.getTime());
|
||
};
|
||
|
||
|
||
// rename candidate: diffDays
|
||
DayPilot.Date.daysDiff = function(first, second) {
|
||
if (first.getTime() > second.getTime()) {
|
||
return null;
|
||
}
|
||
|
||
var i = 0;
|
||
var fDay = DayPilot.Date.getDate(first);
|
||
var sDay = DayPilot.Date.getDate(second);
|
||
|
||
while (fDay < sDay) {
|
||
fDay = DayPilot.Date.addDays(fDay, 1);
|
||
i++;
|
||
}
|
||
|
||
return i;
|
||
};
|
||
|
||
DayPilot.Date.daysInMonth = function(year, month) { // accepts also: function(date)
|
||
if (year.getUTCFullYear) { // it's a date object
|
||
month = year.getUTCMonth() + 1;
|
||
year = year.getUTCFullYear();
|
||
}
|
||
|
||
var m = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
|
||
if (month !== 2)
|
||
return m[month - 1];
|
||
if (year % 4 !== 0)
|
||
return m[1];
|
||
if (year % 100 === 0 && year % 400 !== 0)
|
||
return m[1];
|
||
return m[1] + 1;
|
||
};
|
||
|
||
DayPilot.Date.daysSpan = function(first, second) {
|
||
if (first.getTime() === second.getTime()) {
|
||
return 0;
|
||
}
|
||
|
||
var diff = DayPilot.Date.daysDiff(first, second);
|
||
|
||
if (DayPilot.Date.equals(second, DayPilot.Date.getDate(second))) {
|
||
diff--;
|
||
}
|
||
|
||
return diff;
|
||
};
|
||
|
||
DayPilot.Date.diff = function(first, second) { // = first - second
|
||
if (!(first && second && first.getTime && second.getTime)) {
|
||
throw "Both compared objects must be Date objects (DayPilot.Date.diff).";
|
||
}
|
||
|
||
return first.getTime() - second.getTime();
|
||
};
|
||
|
||
DayPilot.Date.equals = function(first, second) {
|
||
return first.getTime() === second.getTime();
|
||
};
|
||
|
||
DayPilot.Date.fromLocal = function(localDate) {
|
||
if (!localDate) {
|
||
localDate = new Date();
|
||
}
|
||
|
||
var d = new Date();
|
||
d.setUTCFullYear(localDate.getFullYear(), localDate.getMonth(), localDate.getDate());
|
||
d.setUTCHours(localDate.getHours());
|
||
d.setUTCMinutes(localDate.getMinutes());
|
||
d.setUTCSeconds(localDate.getSeconds());
|
||
d.setUTCMilliseconds(localDate.getMilliseconds());
|
||
return d;
|
||
};
|
||
|
||
DayPilot.Date.firstDayOfMonth = function(year, month) {
|
||
var d = new Date();
|
||
d.setUTCFullYear(year, month - 1, 1);
|
||
d.setUTCHours(0);
|
||
d.setUTCMinutes(0);
|
||
d.setUTCSeconds(0);
|
||
d.setUTCMilliseconds(0);
|
||
return d;
|
||
};
|
||
|
||
DayPilot.Date.firstDayOfWeek = function(d, weekStarts) {
|
||
var weekStarts = weekStarts || 0;
|
||
var day = d.getUTCDay();
|
||
while (day !== weekStarts) {
|
||
d = DayPilot.Date.addDays(d, -1);
|
||
day = d.getUTCDay();
|
||
}
|
||
return d;
|
||
};
|
||
|
||
|
||
// rename candidate: fromTicks
|
||
DayPilot.Date.dateFromTicks = function(ticks) {
|
||
var d = new Date();
|
||
d.setTime(ticks);
|
||
return d;
|
||
};
|
||
|
||
// rename candidate: getDatePart
|
||
DayPilot.Date.getDate = function(original) {
|
||
var d = DayPilot.Date.clone(original);
|
||
d.setUTCHours(0);
|
||
d.setUTCMinutes(0);
|
||
d.setUTCSeconds(0);
|
||
d.setUTCMilliseconds(0);
|
||
return d;
|
||
};
|
||
|
||
DayPilot.Date.getStart = function(year, month, weekStarts) { // gets the first days of week where the first day of month occurs
|
||
var fdom = DayPilot.Date.firstDayOfMonth(year, month);
|
||
var d = DayPilot.Date.firstDayOfWeek(fdom, weekStarts);
|
||
return d;
|
||
};
|
||
|
||
// rename candidate: getTimePart
|
||
DayPilot.Date.getTime = function(original) {
|
||
var date = DayPilot.Date.getDate(original);
|
||
|
||
return DayPilot.Date.diff(original, date);
|
||
};
|
||
|
||
// rename candidate: toHourString
|
||
DayPilot.Date.hours = function(date, use12) {
|
||
|
||
var minute = date.getUTCMinutes();
|
||
if (minute < 10)
|
||
minute = "0" + minute;
|
||
|
||
|
||
var hour = date.getUTCHours();
|
||
//if (hour < 10) hour = "0" + hour;
|
||
|
||
if (use12) {
|
||
var am = hour < 12;
|
||
var hour = hour % 12;
|
||
if (hour === 0) {
|
||
hour = 12;
|
||
}
|
||
var suffix = am ? "AM" : "PM";
|
||
return hour + ':' + minute + ' ' + suffix;
|
||
}
|
||
else {
|
||
return hour + ':' + minute;
|
||
}
|
||
};
|
||
|
||
DayPilot.Date.lastDayOfMonth = function(year, month) {
|
||
var d = DayPilot.Date.firstDayOfMonth(year, month);
|
||
var length = DayPilot.Date.daysInMonth(year, month);
|
||
d.setUTCDate(length);
|
||
return d;
|
||
};
|
||
|
||
DayPilot.Date.max = function(first, second) {
|
||
if (first.getTime() > second.getTime()) {
|
||
return first;
|
||
}
|
||
else {
|
||
return second;
|
||
}
|
||
};
|
||
|
||
DayPilot.Date.min = function(first, second) {
|
||
if (first.getTime() < second.getTime()) {
|
||
return first;
|
||
}
|
||
else {
|
||
return second;
|
||
}
|
||
};
|
||
|
||
DayPilot.Date.today = function() {
|
||
var relative = new Date();
|
||
var d = new Date();
|
||
d.setUTCFullYear(relative.getFullYear());
|
||
d.setUTCMonth(relative.getMonth());
|
||
d.setUTCDate(relative.getDate());
|
||
|
||
return d;
|
||
};
|
||
|
||
DayPilot.Date.toLocal = function(date) {
|
||
if (!date) {
|
||
date = new Date();
|
||
}
|
||
|
||
var d = new Date();
|
||
d.setFullYear(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());
|
||
d.setHours(date.getUTCHours());
|
||
d.setMinutes(date.getUTCMinutes());
|
||
d.setSeconds(date.getUTCSeconds());
|
||
d.setMilliseconds(date.getUTCMilliseconds());
|
||
return d;
|
||
};
|
||
|
||
|
||
DayPilot.Date.toStringSortable = function(date) {
|
||
if (date.isDayPilotDate) {
|
||
return date.toStringSortable();
|
||
}
|
||
|
||
var d = date;
|
||
var second = d.getUTCSeconds();
|
||
if (second < 10)
|
||
second = "0" + second;
|
||
var minute = d.getUTCMinutes();
|
||
if (minute < 10)
|
||
minute = "0" + minute;
|
||
var hour = d.getUTCHours();
|
||
if (hour < 10)
|
||
hour = "0" + hour;
|
||
var day = d.getUTCDate();
|
||
if (day < 10)
|
||
day = "0" + day;
|
||
var month = d.getUTCMonth() + 1;
|
||
if (month < 10)
|
||
month = "0" + month;
|
||
var year = d.getUTCFullYear();
|
||
|
||
if (year <= 0) {
|
||
throw "The minimum year supported is 1.";
|
||
}
|
||
if (year < 10) {
|
||
year = "000" + year;
|
||
}
|
||
else if (year < 100) {
|
||
year = "00" + year;
|
||
}
|
||
else if (year < 1000) {
|
||
year = "0" + year;
|
||
}
|
||
|
||
return year + "-" + month + "-" + day + 'T' + hour + ":" + minute + ":" + second;
|
||
};
|
||
|
||
var Pattern = function(pattern, locale) {
|
||
if (typeof locale === "string") {
|
||
locale = DayPilot.Locale.find(locale);
|
||
}
|
||
var locale = locale || DayPilot.Locale.US;
|
||
var all = [
|
||
{"seq": "yyyy", "expr": "[0-9]{4,4\u007d", "str": function(d) {
|
||
return d.getYear();
|
||
}},
|
||
{"seq": "yy", "expr": "[0-9]{2,2\u007d", "str": function(d) {
|
||
return d.getYear() % 100;
|
||
}},
|
||
{"seq": "MMMM", "expr": "[a-z]*", "str": function(d) {
|
||
var r = locale.monthNames[d.getMonth()];
|
||
return r;
|
||
}},
|
||
{"seq": "MMM", "expr": "[a-z]*", "str": function(d) {
|
||
var r = locale.monthNamesShort[d.getMonth()];
|
||
return r;
|
||
}},
|
||
{"seq": "MM", "expr": "[0-9]{2,2\u007d", "str": function(d) {
|
||
var r = d.getMonth() + 1;
|
||
return r < 10 ? "0" + r : r;
|
||
}},
|
||
{"seq": "M", "expr": "[0-9]{1,2\u007d", "str": function(d) {
|
||
var r = d.getMonth() + 1;
|
||
return r;
|
||
}},
|
||
{"seq": "dddd", "expr": "[a-z]*", "str": function(d) {
|
||
var r = locale.dayNames[d.getDayOfWeek()];
|
||
return r;
|
||
}},
|
||
{"seq": "ddd", "expr": "[a-z]*", "str": function(d) {
|
||
var r = locale.dayNamesShort[d.getDayOfWeek()];
|
||
return r;
|
||
}},
|
||
{"seq": "dd", "expr": "[0-9]{2,2\u007d", "str": function(d) {
|
||
var r = d.getDay();
|
||
return r < 10 ? "0" + r : r;
|
||
}},
|
||
{"seq": "%d", "expr": "[0-9]{1,2\u007d", "str": function(d) {
|
||
var r = d.getDay();
|
||
return r;
|
||
}},
|
||
{"seq": "d", "expr": "[0-9]{1,2\u007d", "str": function(d) {
|
||
var r = d.getDay();
|
||
return r;
|
||
}},
|
||
{"seq": "m", "expr": "[0-9]{1,2\u007d", "str": function(d) {
|
||
var r = d.getMinutes();
|
||
return r;
|
||
}},
|
||
{"seq": "mm", "expr": "[0-9]{2,2\u007d", "str": function(d) {
|
||
var r = d.getMinutes();
|
||
return r < 10 ? "0" + r : r;
|
||
}},
|
||
{"seq": "H", "expr": "[0-9]{1,2\u007d", "str": function(d) {
|
||
var r = d.getHours();
|
||
return r;
|
||
}},
|
||
{"seq": "HH", "expr": "[0-9]{2,2\u007d", "str": function(d) {
|
||
var r = d.getHours();
|
||
return r < 10 ? "0" + r : r;
|
||
}},
|
||
{"seq": "h", "expr": "[0-9]{1,2\u007d", "str": function(d) {
|
||
var hour = d.getHours();
|
||
var hour = hour % 12;
|
||
if (hour === 0) {
|
||
hour = 12;
|
||
}
|
||
return hour;
|
||
}},
|
||
{"seq": "hh", "expr": "[0-9]{2,2\u007d", "str": function(d) {
|
||
var hour = d.getHours();
|
||
var hour = hour % 12;
|
||
if (hour === 0) {
|
||
hour = 12;
|
||
}
|
||
var r = hour;
|
||
return r < 10 ? "0" + r : r;
|
||
}},
|
||
{"seq": "tt", "expr": "(AM|PM)", "str": function(d) {
|
||
var hour = d.getHours();
|
||
var am = hour < 12;
|
||
return am ? "AM" : "PM";
|
||
}},
|
||
{"seq": "s", "expr": "[0-9]{1,2\u007d", "str": function(d) {
|
||
var r = d.getSeconds();
|
||
return r;
|
||
}},
|
||
{"seq": "ss", "expr": "[0-9]{2,2\u007d", "str": function(d) {
|
||
var r = d.getSeconds();
|
||
return r < 10 ? "0" + r : r;
|
||
}}
|
||
];
|
||
|
||
var escapeRegex = function(text) {
|
||
return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
|
||
};
|
||
|
||
this.init = function() {
|
||
this.year = this.findSequence("yyyy");
|
||
this.month = this.findSequence("MM") || this.findSequence("M");
|
||
this.day = this.findSequence("dd") || this.findSequence("d");
|
||
|
||
this.hours = this.findSequence("HH") || this.findSequence("H");
|
||
this.minutes = this.findSequence("mm") || this.findSequence("m");
|
||
this.seconds = this.findSequence("ss") || this.findSequence("s");
|
||
};
|
||
|
||
this.findSequence = function(seq) {
|
||
|
||
var index = pattern.indexOf(seq);
|
||
if (index === -1) {
|
||
return null;
|
||
}
|
||
return {
|
||
"findValue": function(input) {
|
||
var prepared = escapeRegex(pattern);
|
||
for (var i = 0; i < all.length; i++) {
|
||
var len = all[i].length;
|
||
var pick = (seq === all[i].seq);
|
||
//var expr = "";
|
||
var expr = all[i].expr;
|
||
if (pick) {
|
||
expr = "(" + expr + ")";
|
||
}
|
||
prepared = prepared.replace(all[i].seq, expr);
|
||
}
|
||
|
||
try {
|
||
var r = new RegExp(prepared);
|
||
var array = r.exec(input);
|
||
if (!array) {
|
||
return null;
|
||
}
|
||
return parseInt(array[1]);
|
||
}
|
||
catch (e) {
|
||
throw "unable to create regex from: " + prepared;
|
||
}
|
||
}
|
||
};
|
||
};
|
||
|
||
this.print = function(date) {
|
||
// always recompiles the pattern
|
||
|
||
var find = function(t) {
|
||
for (var i = 0; i < all.length; i++) {
|
||
if (all[i].seq === t) {
|
||
return all[i];
|
||
}
|
||
}
|
||
return null;
|
||
};
|
||
|
||
var eos = pattern.length <= 0;
|
||
var pos = 0;
|
||
var components = [];
|
||
|
||
while (!eos) {
|
||
var rem = pattern.substring(pos);
|
||
var matches = /%?(.)\1*/.exec(rem); // matches a sequence of identical characters, with an optional '%' preceding char
|
||
if (matches && matches.length > 0) {
|
||
var match = matches[0];
|
||
var q = find(match);
|
||
if (q) {
|
||
components.push(q);
|
||
}
|
||
else {
|
||
components.push(match);
|
||
}
|
||
pos += match.length;
|
||
eos = pattern.length <= pos;
|
||
}
|
||
else {
|
||
eos = true;
|
||
}
|
||
}
|
||
|
||
// resolve placeholders
|
||
for (var i = 0; i < components.length; i++) {
|
||
var c = components[i];
|
||
if (typeof c !== 'string') {
|
||
components[i] = c.str(date);
|
||
}
|
||
}
|
||
|
||
return components.join("");
|
||
};
|
||
|
||
|
||
|
||
this.parse = function(input) {
|
||
|
||
var year = this.year.findValue(input);
|
||
if (!year) {
|
||
return null; // unparseable
|
||
}
|
||
|
||
var month = this.month.findValue(input);
|
||
var day = this.day.findValue(input);
|
||
|
||
var hours = this.hours ? this.hours.findValue(input) : 0;
|
||
var minutes = this.minutes ? this.minutes.findValue(input) : 0;
|
||
var seconds = this.seconds ? this.seconds.findValue(input) : 0;
|
||
|
||
var d = new Date();
|
||
d.setUTCFullYear(year, month - 1, day);
|
||
d.setUTCHours(hours);
|
||
d.setUTCMinutes(minutes);
|
||
d.setUTCSeconds(seconds);
|
||
d.setUTCMilliseconds(0);
|
||
|
||
return new DayPilot.Date(d);
|
||
};
|
||
|
||
this.init();
|
||
|
||
};
|
||
|
||
DayPilot.Action = function(calendar, action, params, data) {
|
||
this.calendar = calendar;
|
||
this.isAction = true;
|
||
this.action = action;
|
||
this.params = params;
|
||
this.data = data;
|
||
|
||
this.notify = function() {
|
||
calendar.invokeEvent("Immediate", this.action, this.params, this.data);
|
||
};
|
||
|
||
this.auto = function() {
|
||
calendar.invokeEvent("Notify", this.action, this.params, this.data);
|
||
};
|
||
|
||
this.queue = function() {
|
||
calendar.queue.add(this);
|
||
};
|
||
|
||
|
||
this.toJSON = function() {
|
||
var json = {};
|
||
json.name = this.action;
|
||
json.params = this.params;
|
||
json.data = this.data;
|
||
|
||
return json;
|
||
};
|
||
|
||
};
|
||
|
||
DayPilot.Locale = function(id, config) {
|
||
this.id = id;
|
||
this.dayNames = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
|
||
this.dayNamesShort = ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"];
|
||
this.monthNames = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
|
||
this.monthNamesShort = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
|
||
this.datePattern = "M/d/yyyy";
|
||
this.timePattern = "H:mm";
|
||
this.dateTimePattern = "M/d/yyyy H:mm";
|
||
this.timeFormat = "Clock12Hours";
|
||
this.weekStarts = 0; // Sunday
|
||
|
||
if (config) {
|
||
for (var name in config) {
|
||
this[name] = config[name];
|
||
}
|
||
}
|
||
};
|
||
|
||
DayPilot.Locale.all = {};
|
||
|
||
DayPilot.Locale.find = function(id) {
|
||
if (!id) {
|
||
return null;
|
||
}
|
||
var normalized = id.toLowerCase();
|
||
if (normalized.length > 2) {
|
||
normalized = DayPilot.Util.replaceCharAt(normalized, 2, '-');
|
||
}
|
||
return DayPilot.Locale.all[normalized];
|
||
};
|
||
|
||
DayPilot.Locale.register = function(locale) {
|
||
DayPilot.Locale.all[locale.id] = locale;
|
||
};
|
||
|
||
DayPilot.Locale.register(new DayPilot.Locale('ca-es', {'dayNames':['diumenge','dilluns','dimarts','dimecres','dijous','divendres','dissabte'],'dayNamesShort':['dg','dl','dt','dc','dj','dv','ds'],'monthNames':['gener','febrer','març','abril','maig','juny','juliol','agost','setembre','octubre','novembre','desembre',''],'monthNamesShort':['gen.','febr.','març','abr.','maig','juny','jul.','ag.','set.','oct.','nov.','des.',''],'timePattern':'H:mm','datePattern':'dd/MM/yyyy','dateTimePattern':'dd/MM/yyyy H:mm','timeFormat':'Clock24Hours','weekStarts':1}));
|
||
DayPilot.Locale.register(new DayPilot.Locale('cs-cz', {'dayNames':['neděle','pondělí','úterý','středa','čtvrtek','pátek','sobota'],'dayNamesShort':['ne','po','út','st','čt','pá','so'],'monthNames':['leden','únor','březen','duben','květen','červen','červenec','srpen','září','říjen','listopad','prosinec',''],'monthNamesShort':['I','II','III','IV','V','VI','VII','VIII','IX','X','XI','XII',''],'timePattern':'H:mm','datePattern':'d. M. yyyy','dateTimePattern':'d. M. yyyy H:mm','timeFormat':'Clock24Hours','weekStarts':1}));
|
||
DayPilot.Locale.register(new DayPilot.Locale('da-dk', {'dayNames':['søndag','mandag','tirsdag','onsdag','torsdag','fredag','lørdag'],'dayNamesShort':['sø','ma','ti','on','to','fr','lø'],'monthNames':['januar','februar','marts','april','maj','juni','juli','august','september','oktober','november','december',''],'monthNamesShort':['jan','feb','mar','apr','maj','jun','jul','aug','sep','okt','nov','dec',''],'timePattern':'HH:mm','datePattern':'dd-MM-yyyy','dateTimePattern':'dd-MM-yyyy HH:mm','timeFormat':'Clock24Hours','weekStarts':1}));
|
||
DayPilot.Locale.register(new DayPilot.Locale('de-at', {'dayNames':['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],'dayNamesShort':['So','Mo','Di','Mi','Do','Fr','Sa'],'monthNames':['Jänner','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember',''],'monthNamesShort':['Jän','Feb','Mär','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez',''],'timePattern':'HH:mm','datePattern':'dd.MM.yyyy','dateTimePattern':'dd.MM.yyyy HH:mm','timeFormat':'Clock24Hours','weekStarts':1}));
|
||
DayPilot.Locale.register(new DayPilot.Locale('de-ch', {'dayNames':['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],'dayNamesShort':['So','Mo','Di','Mi','Do','Fr','Sa'],'monthNames':['Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember',''],'monthNamesShort':['Jan','Feb','Mrz','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez',''],'timePattern':'HH:mm','datePattern':'dd.MM.yyyy','dateTimePattern':'dd.MM.yyyy HH:mm','timeFormat':'Clock24Hours','weekStarts':1}));
|
||
DayPilot.Locale.register(new DayPilot.Locale('de-de', {'dayNames':['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],'dayNamesShort':['So','Mo','Di','Mi','Do','Fr','Sa'],'monthNames':['Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember',''],'monthNamesShort':['Jan','Feb','Mrz','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez',''],'timePattern':'HH:mm','datePattern':'dd.MM.yyyy','dateTimePattern':'dd.MM.yyyy HH:mm','timeFormat':'Clock24Hours','weekStarts':1}));
|
||
DayPilot.Locale.register(new DayPilot.Locale('de-lu', {'dayNames':['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],'dayNamesShort':['So','Mo','Di','Mi','Do','Fr','Sa'],'monthNames':['Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember',''],'monthNamesShort':['Jan','Feb','Mrz','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez',''],'timePattern':'HH:mm','datePattern':'dd.MM.yyyy','dateTimePattern':'dd.MM.yyyy HH:mm','timeFormat':'Clock24Hours','weekStarts':1}));
|
||
DayPilot.Locale.register(new DayPilot.Locale('en-au', {'dayNames':['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],'dayNamesShort':['Su','Mo','Tu','We','Th','Fr','Sa'],'monthNames':['January','February','March','April','May','June','July','August','September','October','November','December',''],'monthNamesShort':['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec',''],'timePattern':'h:mm tt','datePattern':'d/MM/yyyy','dateTimePattern':'d/MM/yyyy h:mm tt','timeFormat':'Clock12Hours','weekStarts':1}));
|
||
DayPilot.Locale.register(new DayPilot.Locale('en-ca', {'dayNames':['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],'dayNamesShort':['Su','Mo','Tu','We','Th','Fr','Sa'],'monthNames':['January','February','March','April','May','June','July','August','September','October','November','December',''],'monthNamesShort':['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec',''],'timePattern':'h:mm tt','datePattern':'yyyy-MM-dd','dateTimePattern':'yyyy-MM-dd h:mm tt','timeFormat':'Clock12Hours','weekStarts':0}));
|
||
DayPilot.Locale.register(new DayPilot.Locale('en-gb', {'dayNames':['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],'dayNamesShort':['Su','Mo','Tu','We','Th','Fr','Sa'],'monthNames':['January','February','March','April','May','June','July','August','September','October','November','December',''],'monthNamesShort':['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec',''],'timePattern':'HH:mm','datePattern':'dd/MM/yyyy','dateTimePattern':'dd/MM/yyyy HH:mm','timeFormat':'Clock24Hours','weekStarts':1}));
|
||
DayPilot.Locale.register(new DayPilot.Locale('en-us', {'dayNames':['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],'dayNamesShort':['Su','Mo','Tu','We','Th','Fr','Sa'],'monthNames':['January','February','March','April','May','June','July','August','September','October','November','December',''],'monthNamesShort':['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec',''],'timePattern':'h:mm tt','datePattern':'M/d/yyyy','dateTimePattern':'M/d/yyyy h:mm tt','timeFormat':'Clock12Hours','weekStarts':0}));
|
||
DayPilot.Locale.register(new DayPilot.Locale('es-es', {'dayNames':['domingo','lunes','martes','miércoles','jueves','viernes','sábado'],'dayNamesShort':['D','L','M','X','J','V','S'],'monthNames':['enero','febrero','marzo','abril','mayo','junio','julio','agosto','septiembre','octubre','noviembre','diciembre',''],'monthNamesShort':['ene.','feb.','mar.','abr.','may.','jun.','jul.','ago.','sep.','oct.','nov.','dic.',''],'timePattern':'H:mm','datePattern':'dd/MM/yyyy','dateTimePattern':'dd/MM/yyyy H:mm','timeFormat':'Clock24Hours','weekStarts':1}));
|
||
DayPilot.Locale.register(new DayPilot.Locale('es-mx', {'dayNames':['domingo','lunes','martes','miércoles','jueves','viernes','sábado'],'dayNamesShort':['do.','lu.','ma.','mi.','ju.','vi.','sá.'],'monthNames':['enero','febrero','marzo','abril','mayo','junio','julio','agosto','septiembre','octubre','noviembre','diciembre',''],'monthNamesShort':['ene.','feb.','mar.','abr.','may.','jun.','jul.','ago.','sep.','oct.','nov.','dic.',''],'timePattern':'hh:mm tt','datePattern':'dd/MM/yyyy','dateTimePattern':'dd/MM/yyyy hh:mm tt','timeFormat':'Clock12Hours','weekStarts':0}));
|
||
DayPilot.Locale.register(new DayPilot.Locale('eu-es', {'dayNames':['igandea','astelehena','asteartea','asteazkena','osteguna','ostirala','larunbata'],'dayNamesShort':['ig','al','as','az','og','or','lr'],'monthNames':['urtarrila','otsaila','martxoa','apirila','maiatza','ekaina','uztaila','abuztua','iraila','urria','azaroa','abendua',''],'monthNamesShort':['urt.','ots.','mar.','api.','mai.','eka.','uzt.','abu.','ira.','urr.','aza.','abe.',''],'timePattern':'H:mm','datePattern':'yyyy/MM/dd','dateTimePattern':'yyyy/MM/dd H:mm','timeFormat':'Clock24Hours','weekStarts':1}));
|
||
DayPilot.Locale.register(new DayPilot.Locale('fi-fi', {'dayNames':['sunnuntai','maanantai','tiistai','keskiviikko','torstai','perjantai','lauantai'],'dayNamesShort':['su','ma','ti','ke','to','pe','la'],'monthNames':['tammikuu','helmikuu','maaliskuu','huhtikuu','toukokuu','kesäkuu','heinäkuu','elokuu','syyskuu','lokakuu','marraskuu','joulukuu',''],'monthNamesShort':['tammi','helmi','maalis','huhti','touko','kesä','heinä','elo','syys','loka','marras','joulu',''],'timePattern':'H:mm','datePattern':'d.M.yyyy','dateTimePattern':'d.M.yyyy H:mm','timeFormat':'Clock24Hours','weekStarts':1}));
|
||
DayPilot.Locale.register(new DayPilot.Locale('fr-be', {'dayNames':['dimanche','lundi','mardi','mercredi','jeudi','vendredi','samedi'],'dayNamesShort':['di','lu','ma','me','je','ve','sa'],'monthNames':['janvier','février','mars','avril','mai','juin','juillet','août','septembre','octobre','novembre','décembre',''],'monthNamesShort':['janv.','févr.','mars','avr.','mai','juin','juil.','août','sept.','oct.','nov.','déc.',''],'timePattern':'HH:mm','datePattern':'dd-MM-yy','dateTimePattern':'dd-MM-yy HH:mm','timeFormat':'Clock24Hours','weekStarts':1}));
|
||
DayPilot.Locale.register(new DayPilot.Locale('fr-ch', {'dayNames':['dimanche','lundi','mardi','mercredi','jeudi','vendredi','samedi'],'dayNamesShort':['di','lu','ma','me','je','ve','sa'],'monthNames':['janvier','février','mars','avril','mai','juin','juillet','août','septembre','octobre','novembre','décembre',''],'monthNamesShort':['janv.','févr.','mars','avr.','mai','juin','juil.','août','sept.','oct.','nov.','déc.',''],'timePattern':'HH:mm','datePattern':'dd.MM.yyyy','dateTimePattern':'dd.MM.yyyy HH:mm','timeFormat':'Clock24Hours','weekStarts':1}));
|
||
DayPilot.Locale.register(new DayPilot.Locale('fr-fr', {'dayNames':['dimanche','lundi','mardi','mercredi','jeudi','vendredi','samedi'],'dayNamesShort':['di','lu','ma','me','je','ve','sa'],'monthNames':['janvier','février','mars','avril','mai','juin','juillet','août','septembre','octobre','novembre','décembre',''],'monthNamesShort':['janv.','févr.','mars','avr.','mai','juin','juil.','août','sept.','oct.','nov.','déc.',''],'timePattern':'HH:mm','datePattern':'dd/MM/yyyy','dateTimePattern':'dd/MM/yyyy HH:mm','timeFormat':'Clock24Hours','weekStarts':1}));
|
||
DayPilot.Locale.register(new DayPilot.Locale('fr-lu', {'dayNames':['dimanche','lundi','mardi','mercredi','jeudi','vendredi','samedi'],'dayNamesShort':['di','lu','ma','me','je','ve','sa'],'monthNames':['janvier','février','mars','avril','mai','juin','juillet','août','septembre','octobre','novembre','décembre',''],'monthNamesShort':['janv.','févr.','mars','avr.','mai','juin','juil.','août','sept.','oct.','nov.','déc.',''],'timePattern':'HH:mm','datePattern':'dd/MM/yyyy','dateTimePattern':'dd/MM/yyyy HH:mm','timeFormat':'Clock24Hours','weekStarts':1}));
|
||
DayPilot.Locale.register(new DayPilot.Locale('gl-es', {'dayNames':['domingo','luns','martes','mércores','xoves','venres','sábado'],'dayNamesShort':['do','lu','ma','mé','xo','ve','sá'],'monthNames':['xaneiro','febreiro','marzo','abril','maio','xuño','xullo','agosto','setembro','outubro','novembro','decembro',''],'monthNamesShort':['xan','feb','mar','abr','maio','xuño','xul','ago','set','out','nov','dec',''],'timePattern':'H:mm','datePattern':'dd/MM/yyyy','dateTimePattern':'dd/MM/yyyy H:mm','timeFormat':'Clock24Hours','weekStarts':1}));
|
||
DayPilot.Locale.register(new DayPilot.Locale('it-it', {'dayNames':['domenica','lunedì','martedì','mercoledì','giovedì','venerdì','sabato'],'dayNamesShort':['do','lu','ma','me','gi','ve','sa'],'monthNames':['gennaio','febbraio','marzo','aprile','maggio','giugno','luglio','agosto','settembre','ottobre','novembre','dicembre',''],'monthNamesShort':['gen','feb','mar','apr','mag','giu','lug','ago','set','ott','nov','dic',''],'timePattern':'HH:mm','datePattern':'dd/MM/yyyy','dateTimePattern':'dd/MM/yyyy HH:mm','timeFormat':'Clock24Hours','weekStarts':1}));
|
||
DayPilot.Locale.register(new DayPilot.Locale('it-ch', {'dayNames':['domenica','lunedì','martedì','mercoledì','giovedì','venerdì','sabato'],'dayNamesShort':['do','lu','ma','me','gi','ve','sa'],'monthNames':['gennaio','febbraio','marzo','aprile','maggio','giugno','luglio','agosto','settembre','ottobre','novembre','dicembre',''],'monthNamesShort':['gen','feb','mar','apr','mag','giu','lug','ago','set','ott','nov','dic',''],'timePattern':'HH:mm','datePattern':'dd.MM.yyyy','dateTimePattern':'dd.MM.yyyy HH:mm','timeFormat':'Clock24Hours','weekStarts':1}));
|
||
DayPilot.Locale.register(new DayPilot.Locale('ja-jp', {'dayNames':['日曜日','月曜日','火曜日','水曜日','木曜日','金曜日','土曜日'],'dayNamesShort':['日','月','火','水','木','金','土'],'monthNames':['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月',''],'monthNamesShort':['1','2','3','4','5','6','7','8','9','10','11','12',''],'timePattern':'H:mm','datePattern':'yyyy/MM/dd','dateTimePattern':'yyyy/MM/dd H:mm','timeFormat':'Clock24Hours','weekStarts':0}));
|
||
DayPilot.Locale.register(new DayPilot.Locale('ko-kr', {'dayNames':["\uc77c\uc694\uc77c","\uc6d4\uc694\uc77c","\ud654\uc694\uc77c","\uc218\uc694\uc77c","\ubaa9\uc694\uc77c","\uae08\uc694\uc77c","\ud1a0\uc694\uc77c"],'dayNamesShort':["\uc77c","\uc6d4","\ud654","\uc218","\ubaa9","\uae08","\ud1a0"],'monthNames':["1\uc6d4","2\uc6d4","3\uc6d4","4\uc6d4","5\uc6d4","6\uc6d4","7\uc6d4","8\uc6d4","9\uc6d4","10\uc6d4","11\uc6d4","12\uc6d4",''],'monthNamesShort':["1\uc6d4","2\uc6d4","3\uc6d4","4\uc6d4","5\uc6d4","6\uc6d4","7\uc6d4","8\uc6d4","9\uc6d4","10\uc6d4","11\uc6d4","12\uc6d4",''],'timePattern':'a h:mm','datePattern':'yy. M. d.','dateTimePattern':'yy. M. d. a h:mm','timeFormat':'Clock24Hours','weekStarts':1}));
|
||
DayPilot.Locale.register(new DayPilot.Locale('nb-no', {'dayNames':['søndag','mandag','tirsdag','onsdag','torsdag','fredag','lørdag'],'dayNamesShort':['sø','ma','ti','on','to','fr','lø'],'monthNames':['januar','februar','mars','april','mai','juni','juli','august','september','oktober','november','desember',''],'monthNamesShort':['jan','feb','mar','apr','mai','jun','jul','aug','sep','okt','nov','des',''],'timePattern':'HH:mm','datePattern':'dd.MM.yyyy','dateTimePattern':'dd.MM.yyyy HH:mm','timeFormat':'Clock24Hours','weekStarts':1}));
|
||
DayPilot.Locale.register(new DayPilot.Locale('nl-nl', {'dayNames':['zondag','maandag','dinsdag','woensdag','donderdag','vrijdag','zaterdag'],'dayNamesShort':['zo','ma','di','wo','do','vr','za'],'monthNames':['januari','februari','maart','april','mei','juni','juli','augustus','september','oktober','november','december',''],'monthNamesShort':['jan','feb','mrt','apr','mei','jun','jul','aug','sep','okt','nov','dec',''],'timePattern':'HH:mm','datePattern':'d-M-yyyy','dateTimePattern':'d-M-yyyy HH:mm','timeFormat':'Clock24Hours','weekStarts':1}));
|
||
DayPilot.Locale.register(new DayPilot.Locale('nl-be', {'dayNames':['zondag','maandag','dinsdag','woensdag','donderdag','vrijdag','zaterdag'],'dayNamesShort':['zo','ma','di','wo','do','vr','za'],'monthNames':['januari','februari','maart','april','mei','juni','juli','augustus','september','oktober','november','december',''],'monthNamesShort':['jan','feb','mrt','apr','mei','jun','jul','aug','sep','okt','nov','dec',''],'timePattern':'H:mm','datePattern':'d/MM/yyyy','dateTimePattern':'d/MM/yyyy H:mm','timeFormat':'Clock24Hours','weekStarts':1}));
|
||
DayPilot.Locale.register(new DayPilot.Locale('nn-no', {'dayNames':['søndag','måndag','tysdag','onsdag','torsdag','fredag','laurdag'],'dayNamesShort':['sø','må','ty','on','to','fr','la'],'monthNames':['januar','februar','mars','april','mai','juni','juli','august','september','oktober','november','desember',''],'monthNamesShort':['jan','feb','mar','apr','mai','jun','jul','aug','sep','okt','nov','des',''],'timePattern':'HH:mm','datePattern':'dd.MM.yyyy','dateTimePattern':'dd.MM.yyyy HH:mm','timeFormat':'Clock24Hours','weekStarts':1}));
|
||
DayPilot.Locale.register(new DayPilot.Locale('pt-br', {'dayNames':['domingo','segunda-feira','terça-feira','quarta-feira','quinta-feira','sexta-feira','sábado'],'dayNamesShort':['D','S','T','Q','Q','S','S'],'monthNames':['janeiro','fevereiro','março','abril','maio','junho','julho','agosto','setembro','outubro','novembro','dezembro',''],'monthNamesShort':['jan','fev','mar','abr','mai','jun','jul','ago','set','out','nov','dez',''],'timePattern':'HH:mm','datePattern':'dd/MM/yyyy','dateTimePattern':'dd/MM/yyyy HH:mm','timeFormat':'Clock24Hours','weekStarts':0}));
|
||
DayPilot.Locale.register(new DayPilot.Locale('pl-pl', {'dayNames':['niedziela','poniedziałek','wtorek','środa','czwartek','piątek','sobota'],'dayNamesShort':['N','Pn','Wt','Śr','Cz','Pt','So'],'monthNames':['styczeń','luty','marzec','kwiecień','maj','czerwiec','lipiec','sierpień','wrzesień','październik','listopad','grudzień',''],'monthNamesShort':['sty','lut','mar','kwi','maj','cze','lip','sie','wrz','paź','lis','gru',''],'timePattern':'HH:mm','datePattern':'yyyy-MM-dd','dateTimePattern':'yyyy-MM-dd HH:mm','timeFormat':'Clock24Hours','weekStarts':1}));
|
||
DayPilot.Locale.register(new DayPilot.Locale('pt-pt', {'dayNames':['domingo','segunda-feira','terça-feira','quarta-feira','quinta-feira','sexta-feira','sábado'],'dayNamesShort':['D','S','T','Q','Q','S','S'],'monthNames':['janeiro','fevereiro','março','abril','maio','junho','julho','agosto','setembro','outubro','novembro','dezembro',''],'monthNamesShort':['jan','fev','mar','abr','mai','jun','jul','ago','set','out','nov','dez',''],'timePattern':'HH:mm','datePattern':'dd/MM/yyyy','dateTimePattern':'dd/MM/yyyy HH:mm','timeFormat':'Clock24Hours','weekStarts':0}));
|
||
DayPilot.Locale.register(new DayPilot.Locale('ru-ru', {'dayNames':['воскресенье','понедельник','вторник','среда','четверг','пятница','суббота'],'dayNamesShort':['Вс','Пн','Вт','Ср','Чт','Пт','Сб'],'monthNames':['Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь',''],'monthNamesShort':['янв','фев','мар','апр','май','июн','июл','авг','сен','окт','ноя','дек',''],'timePattern':'H:mm','datePattern':'dd.MM.yyyy','dateTimePattern':'dd.MM.yyyy H:mm','timeFormat':'Clock24Hours','weekStarts':1}));
|
||
DayPilot.Locale.register(new DayPilot.Locale('sk-sk', {'dayNames':['nedeľa','pondelok','utorok','streda','štvrtok','piatok','sobota'],'dayNamesShort':['ne','po','ut','st','št','pi','so'],'monthNames':['január','február','marec','apríl','máj','jún','júl','august','september','október','november','december',''],'monthNamesShort':['1','2','3','4','5','6','7','8','9','10','11','12',''],'timePattern':'H:mm','datePattern':'d.M.yyyy','dateTimePattern':'d.M.yyyy H:mm','timeFormat':'Clock24Hours','weekStarts':1}));
|
||
DayPilot.Locale.register(new DayPilot.Locale('sv-se', {'dayNames':['söndag','måndag','tisdag','onsdag','torsdag','fredag','lördag'],'dayNamesShort':['sö','må','ti','on','to','fr','lö'],'monthNames':['januari','februari','mars','april','maj','juni','juli','augusti','september','oktober','november','december',''],'monthNamesShort':['jan','feb','mar','apr','maj','jun','jul','aug','sep','okt','nov','dec',''],'timePattern':'HH:mm','datePattern':'yyyy-MM-dd','dateTimePattern':'yyyy-MM-dd HH:mm','timeFormat':'Clock24Hours','weekStarts':1}));
|
||
DayPilot.Locale.register(new DayPilot.Locale('zh-cn', {'dayNames':['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],'dayNamesShort':['日','一','二','三','四','五','六'],'monthNames':['一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月',''],'monthNamesShort':['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月',''],'timePattern':'H:mm','datePattern':'yyyy/M/d','dateTimePattern':'yyyy/M/d H:mm','timeFormat':'Clock24Hours','weekStarts':1}));
|
||
|
||
DayPilot.Locale.US = DayPilot.Locale.find("en-us");
|
||
|
||
DayPilot.Switcher = function () {
|
||
|
||
var This = this;
|
||
|
||
this.views = [];
|
||
this.switchers = [];
|
||
this.navigator = {};
|
||
|
||
this.selectedClass = null;
|
||
|
||
this.active = null;
|
||
|
||
this.day = new DayPilot.Date();
|
||
|
||
this.navigator.updateMode = function (mode) {
|
||
var control = This.navigator.control;
|
||
if (!control) {
|
||
return;
|
||
}
|
||
control.selectMode = mode;
|
||
control.select(This.day);
|
||
};
|
||
|
||
this.addView = function (spec, options) {
|
||
var element;
|
||
if (typeof spec === 'string') {
|
||
element = document.getElementById(spec);
|
||
if (!element) {
|
||
throw "Element not found: " + spec;
|
||
}
|
||
}
|
||
else { // DayPilot object, DOM element
|
||
element = spec;
|
||
}
|
||
|
||
var control = element;
|
||
|
||
var view = {};
|
||
view.isView = true;
|
||
view.id = control.id;
|
||
view.control = control;
|
||
view.options = options || {};
|
||
view.hide = function () {
|
||
if (control.hide) {
|
||
control.hide();
|
||
}
|
||
else if (control.nav && control.nav.top) {
|
||
control.nav.top.style.display = 'none';
|
||
}
|
||
else {
|
||
control.style.display = 'none';
|
||
}
|
||
};
|
||
view.sendNavigate = function(date) {
|
||
var serverBased = (function() {
|
||
if (control.backendUrl) { // ASP.NET MVC, Java
|
||
return true;
|
||
}
|
||
if (typeof WebForm_DoCallback === 'function' && control.uniqueID) { // ASP.NET WebForms
|
||
return true;
|
||
}
|
||
return false;
|
||
})();
|
||
if (serverBased) {
|
||
if (control.commandCallBack) {
|
||
control.commandCallBack("navigate", { "day": date });
|
||
}
|
||
}
|
||
};
|
||
view.show = function () {
|
||
This._hideViews();
|
||
if (control.show) {
|
||
control.show();
|
||
}
|
||
else if (control.nav && control.nav.top) {
|
||
control.nav.top.style.display = '';
|
||
}
|
||
else {
|
||
control.style.display = '';
|
||
}
|
||
};
|
||
view.selectMode = function () { // for navigator
|
||
if (view.options.navigatorSelectMode) {
|
||
return view.options.navigatorSelectMode;
|
||
}
|
||
|
||
if (control.isCalendar) {
|
||
switch (control.viewType) {
|
||
case "Day":
|
||
return "day";
|
||
case "Week":
|
||
return "week";
|
||
case "WorkWeek":
|
||
return "week";
|
||
default:
|
||
return "day";
|
||
}
|
||
}
|
||
else if (control.isMonth) {
|
||
switch (control.viewType) {
|
||
case "Month":
|
||
return "month";
|
||
case "Weeks":
|
||
return "week";
|
||
default:
|
||
return "day";
|
||
}
|
||
}
|
||
return "day";
|
||
};
|
||
|
||
this.views.push(view);
|
||
|
||
return view;
|
||
};
|
||
|
||
this.addButton = function (id, control) {
|
||
var element;
|
||
if (typeof id === 'string') {
|
||
element = document.getElementById(id);
|
||
if (!element) {
|
||
throw "Element not found: " + id;
|
||
}
|
||
}
|
||
else {
|
||
element = id;
|
||
}
|
||
|
||
var view = this._findViewByControl(control);
|
||
if (!view) {
|
||
view = this.addView(control);
|
||
}
|
||
|
||
var switcher = {};
|
||
switcher.isSwitcher = true;
|
||
switcher.element = element;
|
||
switcher.id = element.id;
|
||
switcher.view = view;
|
||
switcher.onClick = function (ev) {
|
||
|
||
This.show(switcher);
|
||
This._select(switcher);
|
||
|
||
ev = ev || window.event;
|
||
if (ev) {
|
||
ev.preventDefault ? ev.preventDefault() : ev.returnValue = false;
|
||
}
|
||
|
||
};
|
||
|
||
DayPilot.re(element, 'click', switcher.onClick);
|
||
|
||
this.switchers.push(switcher);
|
||
|
||
return switcher;
|
||
};
|
||
|
||
this.select = function(id) {
|
||
var switcher = this._findSwitcherById(id);
|
||
if (switcher) {
|
||
switcher.onClick();
|
||
}
|
||
else if (this.switchers.length > 0) {
|
||
this.switchers[0].onClick();
|
||
}
|
||
};
|
||
|
||
this._findSwitcherById = function(id) {
|
||
for (var i = 0; i < this.switchers.length; i++) {
|
||
var switcher = this.switchers[i];
|
||
if (switcher.id === id) {
|
||
return switcher;
|
||
}
|
||
}
|
||
return null;
|
||
};
|
||
|
||
this._select = function(switcher) {
|
||
if (!this.selectedClass) {
|
||
return;
|
||
}
|
||
|
||
for (var i = 0; i < this.switchers.length; i++) {
|
||
var s = this.switchers[i];
|
||
DayPilot.Util.removeClass(s.element, this.selectedClass);
|
||
}
|
||
DayPilot.Util.addClass(switcher.element, this.selectedClass);
|
||
};
|
||
|
||
this.addNavigator = function (control) {
|
||
//this.navigator = {};
|
||
This.navigator.control = control;
|
||
|
||
control.timeRangeSelectedHandling = "JavaScript";
|
||
control.onTimeRangeSelected = function() {
|
||
var start, end, day;
|
||
if (control.api === 1) {
|
||
start = arguments[0];
|
||
end = arguments[1];
|
||
day = arguments[2];
|
||
}
|
||
else {
|
||
var args = arguments[0];
|
||
start = args.start;
|
||
end = args.end;
|
||
day = args.day;
|
||
}
|
||
This.day = day;
|
||
This.active.sendNavigate(This.day);
|
||
if (This.onTimeRangeSelected) {
|
||
var args = {};
|
||
args.start = start;
|
||
args.end = end;
|
||
args.day = day;
|
||
args.target = This.active.control;
|
||
This.onTimeRangeSelected(args);
|
||
}
|
||
//This.active.control.commandCallBack("navigate", { "day": This.day });
|
||
};
|
||
};
|
||
|
||
this.show = function (el) {
|
||
var view, switcher;
|
||
if (el.isSwitcher) {
|
||
switcher = el;
|
||
view = switcher.view;
|
||
}
|
||
else {
|
||
view = el.isView ? el : this._findViewByControl(el);
|
||
if (this.active === view) {
|
||
return;
|
||
}
|
||
}
|
||
|
||
if (This.onSelect) {
|
||
var args = {};
|
||
//args.switcher = switcher;
|
||
args.source = switcher ? switcher.element : null;
|
||
args.target = view.control;
|
||
|
||
This.onSelect(args);
|
||
// TODO add preventDefault
|
||
}
|
||
|
||
this.active = view;
|
||
view.show();
|
||
|
||
var mode = view.selectMode();
|
||
This.navigator.updateMode(mode);
|
||
|
||
This.active.sendNavigate(this.day);
|
||
};
|
||
|
||
this._findViewByControl = function (control) {
|
||
for (var i = 0; i < this.views.length; i++) {
|
||
if (this.views[i].control === control) {
|
||
return this.views[i];
|
||
}
|
||
}
|
||
return null;
|
||
};
|
||
|
||
this._hideViews = function () {
|
||
//var controls = [dp_day, dp_week, dp_month];
|
||
for (var i = 0; i < this.views.length; i++) {
|
||
this.views[i].hide();
|
||
}
|
||
};
|
||
};
|
||
|
||
// register the default theme
|
||
(function() {
|
||
if (DayPilot.Global.defaultCss) {
|
||
return;
|
||
}
|
||
|
||
var sheet = DayPilot.sheet();
|
||
|
||
// bubble
|
||
sheet.add(".bubble_default_main", "cursor: default;");
|
||
sheet.add(".bubble_default_main_inner", 'border-radius: 5px;font-size: 12px;padding: 4px;color: #666;background: #eeeeee; background: -webkit-gradient(linear, left top, left bottom, from(#ffffff), to(#eeeeee));background: -webkit-linear-gradient(top, #ffffff 0%, #eeeeee);background: -moz-linear-gradient(top, #ffffff 0%, #eeeeee);background: -ms-linear-gradient(top, #ffffff 0%, #eeeeee);background: -o-linear-gradient(top, #ffffff 0%, #eeeeee);background: linear-gradient(top, #ffffff 0%, #eeeeee);filter: progid:DXImageTransform.Microsoft.Gradient(startColorStr="#ffffff", endColorStr="#eeeeee");border: 1px solid #ccc;-moz-border-radius: 5px;-webkit-border-radius: 5px;border-radius: 5px;-moz-box-shadow:0px 2px 3px rgba(000,000,000,0.3),inset 0px 0px 2px rgba(255,255,255,0.8);-webkit-box-shadow:0px 2px 3px rgba(000,000,000,0.3),inset 0px 0px 2px rgba(255,255,255,0.8);box-shadow:0px 2px 3px rgba(000,000,000,0.3),inset 0px 0px 2px rgba(255,255,255,0.8);');
|
||
|
||
// calendar
|
||
sheet.add(".calendar_default_main", "border: 1px solid #999; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 12px;");
|
||
sheet.add(".calendar_default_rowheader_inner,.calendar_default_cornerright_inner,.calendar_default_corner_inner,.calendar_default_colheader_inner,.calendar_default_alldayheader_inner", "color: #666;background: #eee;");
|
||
sheet.add(".calendar_default_cornerright_inner", "position: absolute;top: 0px;left: 0px;bottom: 0px;right: 0px; border-bottom: 1px solid #999;");
|
||
sheet.add(".calendar_default_rowheader_inner", "font-size: 16pt;text-align: right; position: absolute;top: 0px;left: 0px;bottom: 0px;right: 0px;border-right: 1px solid #999;border-bottom: 1px solid #999;");
|
||
sheet.add(".calendar_default_corner_inner", "position: absolute;top: 0px;left: 0px;bottom: 0px;right: 0px;border-right: 1px solid #999;border-bottom: 1px solid #999;");
|
||
sheet.add(".calendar_default_rowheader_minutes", "font-size:10px;vertical-align: super;padding-left: 2px;padding-right: 2px;");
|
||
sheet.add(".calendar_default_colheader_inner", "text-align: center; position: absolute;top: 0px;left: 0px;bottom: 0px;right: 0px;border-right: 1px solid #999;border-bottom: 1px solid #999;");
|
||
sheet.add(".calendar_default_cell_inner", "position: absolute;top: 0px;left: 0px;bottom: 0px;right: 0px;border-right: 1px solid #ddd;border-bottom: 1px solid #ddd; background: #f9f9f9;");
|
||
sheet.add(".calendar_default_cell_business .calendar_default_cell_inner", "background: #fff");
|
||
sheet.add(".calendar_default_alldayheader_inner", "text-align: center;position: absolute;top: 0px;left: 0px;bottom: 0px;right: 0px;border-right: 1px solid #999;border-bottom: 1px solid #999;");
|
||
sheet.add(".calendar_default_message", "opacity: 0.9;filter: alpha(opacity=90); padding: 10px; color: #ffffff;background: #ffa216;");
|
||
sheet.add(".calendar_default_alldayevent_inner,.calendar_default_event_inner", 'color: #666; border: 1px solid #999;'); // border-top: 4px solid #1066a8;
|
||
sheet.add(".calendar_default_event_bar", "top: 0px;bottom: 0px;left: 0px;width: 4px;background-color: #9dc8e8;");
|
||
sheet.add(".calendar_default_event_bar_inner", "position: absolute;width: 4px;background-color: #1066a8;");
|
||
sheet.add(".calendar_default_alldayevent_inner,.calendar_default_event_inner", 'background: #fff;background: -webkit-gradient(linear, left top, left bottom, from(#ffffff), to(#eeeeee));background: -webkit-linear-gradient(top, #ffffff 0%, #eeeeee);background: -moz-linear-gradient(top, #ffffff 0%, #eeeeee);background: -ms-linear-gradient(top, #ffffff 0%, #eeeeee);background: -o-linear-gradient(top, #ffffff 0%, #eeeeee);background: linear-gradient(top, #ffffff 0%, #eeeeee);filter: progid:DXImageTransform.Microsoft.Gradient(startColorStr="#ffffff", endColorStr="#eeeeee");');
|
||
sheet.add(".calendar_default_selected .calendar_default_event_inner", "background: #ddd;");
|
||
sheet.add(".calendar_default_alldayevent_inner", "position: absolute;top: 2px;bottom: 2px;left: 2px;right: 2px;padding: 2px;margin-right: 1px;font-size: 12px;");
|
||
sheet.add(".calendar_default_event_withheader .calendar_default_event_inner", "padding-top: 15px;");
|
||
sheet.add(".calendar_default_event", "cursor: default;");
|
||
sheet.add(".calendar_default_event_inner", "position: absolute;overflow: hidden;top: 0px;bottom: 0px;left: 0px;right: 0px;padding: 2px 2px 2px 6px;font-size: 12px;");
|
||
sheet.add(".calendar_default_shadow_inner", "background-color: #666666; opacity: 0.5;filter: alpha(opacity=50);height: 100%;");
|
||
sheet.add(".calendar_default_event_delete", "background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAYAAACprHcmAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjExR/NCNwAAAI5JREFUKFNtkLERgCAMRbmzdK8s4gAUlhYOYEHJEJYOYOEwDmGBPxC4kOPfvePy84MGR0RJ2N1A8H3N6DATwSQ57m2ql8NBG+AEM7D+UW+wjdfUPgerYNgB5gOLRHqhcasg84C2QxPMtrUhSqQIhg7ypy9VM2EUZPI/4rQ7rGxqo9sadTegw+UdjeDLAKUfhbaQUVPIfJYAAAAASUVORK5CYII=) center center no-repeat; opacity: 0.6; -ms-filter:'progid:DXImageTransform.Microsoft.Alpha(Opacity=60)'; cursor: pointer;");
|
||
sheet.add(".calendar_default_event_delete:hover", "opacity: 1;-ms-filter: none;");
|
||
sheet.add(".calendar_default_scroll_up", "background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAB3RJTUUH2wESDiYcrhwCiQAAAAlwSFlzAAAuIwAALiMBeKU/dgAAAARnQU1BAACxjwv8YQUAAACcSURBVHjaY2AgF9wWsTW6yGMlhi7OhC7AyMDQzMnBXIpFHAFuCtuaMTP+P8nA8P/b1x//FfW/HHuF1UQmxv+NUP1c3OxMVVhNvCVi683E8H8LXOY/w9+fTH81tF8fv4NiIpBRj+YoZtZ/LDUoJmKYhsVUpv0MDiyMDP96sIYV0FS2/8z9ICaLlOhvS4b/jC//MzC8xBG0vJeF7GQBlK0xdiUzCtsAAAAASUVORK5CYII=);");
|
||
sheet.add(".calendar_default_scroll_down", "background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAALiMAAC4jAXilP3YAAACqSURBVChTY7wpam3L9J+xmQEP+PGPKZZxP4MDi4zI78uMDIwa2NT+Z2DYovrmiC+TI8OBP/8ZmEqwGvif4e8vxr+FIDkmEKH25vBWBgbG0+iK/zEwLtF+ffwOXCGI8Y+BoRFFIdC030x/WmBiYBNhpgLdswNJ8RSYaSgmgk39z1gPUfj/29ef/9rwhQTDHRHbrbdEbLvRFcGthkkAra/9/uMvhkK8piNLAgCRpTnNn4AEmAAAAABJRU5ErkJggg==);");
|
||
|
||
sheet.add(".calendar_default_now", "background-color: red;");
|
||
sheet.add(".calendar_default_now:before", "content: ''; top: -5px; border-width: 5px; border-color: transparent transparent transparent red; border-style: solid; width: 0px; height:0px; position: absolute; -moz-transform: scale(.9999);");
|
||
|
||
// menu
|
||
sheet.add(".menu_default_main", "font-family: Tahoma, Arial, Helvetica, Sans-Serif;font-size: 12px;border: 1px solid #dddddd;background-color: white;padding: 0px;cursor: default;background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAABCAIAAABG0om7AAAAKXRFWHRDcmVhdGlvbiBUaW1lAHBvIDEwIDUgMjAxMCAyMjozMzo1OSArMDEwMGzy7+IAAAAHdElNRQfaBQoUJAesj4VUAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAABGdBTUEAALGPC/xhBQAAABVJREFUeNpj/P//PwO1weMnT2RlZAAYuwX/4oA3BgAAAABJRU5ErkJggg==);background-repeat: repeat-y;xborder-radius: 5px;-moz-box-shadow:0px 2px 3px rgba(000,000,000,0.3),inset 0px 0px 2px rgba(255,255,255,0.8);-webkit-box-shadow:0px 2px 3px rgba(000,000,000,0.3),inset 0px 0px 2px rgba(255,255,255,0.8);box-shadow:0px 2px 3px rgba(000,000,000,0.3),inset 0px 0px 2px rgba(255,255,255,0.8);");
|
||
sheet.add(".menu_default_title", "background-color: #f2f2f2;border-bottom: 1px solid gray;padding: 4px 4px 4px 37px;");
|
||
sheet.add(".menu_default_main a", "padding: 2px 2px 2px 35px;color: black;text-decoration: none;cursor: default;");
|
||
sheet.add(".menu_default_main a img", "margin-left: 6px;margin-top: 2px;");
|
||
sheet.add(".menu_default_main a span", "display: block;height: 20px;line-height: 20px; overflow:hidden;padding-left: 2px;padding-right: 20px;");
|
||
sheet.add(".menu_default_main a:hover", 'background: #eeeeee;background: -webkit-gradient(linear, left top, left bottom, from(#efefef), to(#e6e6e6));background: -webkit-linear-gradient(top, #efefef 0%, #e6e6e6);background: -moz-linear-gradient(top, #efefef 0%, #e6e6e6);background: -ms-linear-gradient(top, #efefef 0%, #e6e6e6);background: -o-linear-gradient(top, #efefef 0%, #e6e6e6);background: linear-gradient(top, #efefef 0%, #e6e6e6);filter: progid:DXImageTransform.Microsoft.Gradient(startColorStr="#efefef", endColorStr="#e6e6e6");');
|
||
sheet.add(".menu_default_main div div", "border-top: 1px solid #dddddd;margin-top: 2px;margin-bottom: 2px;margin-left: 28px;");
|
||
|
||
sheet.add(".menu_default_main a.menu_default_item_disabled", "color: #ccc");
|
||
|
||
// month
|
||
sheet.add(".month_default_main", "border: 1px solid #aaa;font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 12px;color: #666;");
|
||
sheet.add(".month_default_cell_inner", "border-right: 1px solid #ddd;border-bottom: 1px solid #ddd;position: absolute;top: 0px;left: 0px;bottom: 0px;right: 0px;background-color: #f9f9f9;");
|
||
sheet.add(".month_default_cell_business .month_default_cell_inner", "background-color: #fff;");
|
||
sheet.add(".month_default_cell_header", "text-align: right;padding-right: 2px;");
|
||
sheet.add(".month_default_header_inner", 'text-align: center; vertical-align: middle;position: absolute;top: 0px;left: 0px;bottom: 0px;right: 0px;border-right: 1px solid #999;border-bottom: 1px solid #999;cursor: default;color: #666;background: #eee;');
|
||
sheet.add(".month_default_message", 'padding: 10px;opacity: 0.9;filter: alpha(opacity=90);color: #ffffff;background: #ffa216;background: -webkit-gradient(linear, left top, left bottom, from(#ffa216), to(#ff8400));background: -webkit-linear-gradient(top, #ffa216 0%, #ff8400);background: -moz-linear-gradient(top, #ffa216 0%, #ff8400);background: -ms-linear-gradient(top, #ffa216 0%, #ff8400);background: -o-linear-gradient(top, #ffa216 0%, #ff8400);background: linear-gradient(top, #ffa216 0%, #ff8400);filter: progid:DXImageTransform.Microsoft.Gradient(startColorStr="#ffa216", endColorStr="#ff8400");');
|
||
sheet.add(".month_default_event_inner", 'position: absolute;top: 0px;bottom: 0px;left: 1px;right: 1px;overflow:hidden;padding: 2px;padding-left: 5px;font-size: 12px;color: #666;background: #fff;background: -webkit-gradient(linear, left top, left bottom, from(#ffffff), to(#eeeeee));background: -webkit-linear-gradient(top, #ffffff 0%, #eeeeee);background: -moz-linear-gradient(top, #ffffff 0%, #eeeeee);background: -ms-linear-gradient(top, #ffffff 0%, #eeeeee);background: -o-linear-gradient(top, #ffffff 0%, #eeeeee);background: linear-gradient(top, #ffffff 0%, #eeeeee);filter: progid:DXImageTransform.Microsoft.Gradient(startColorStr="#ffffff", endColorStr="#eeeeee");border: 1px solid #999;border-radius: 0px;');
|
||
sheet.add(".month_default_event_continueright .month_default_event_inner", "border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-right-style: dotted;");
|
||
sheet.add(".month_default_event_continueleft .month_default_event_inner", "border-top-left-radius: 0px;border-bottom-left-radius: 0px;border-left-style: dotted;");
|
||
sheet.add(".month_default_event_hover .month_default_event_inner", 'background: #fff;background: -webkit-gradient(linear, left top, left bottom, from(#ffffff), to(#e8e8e8));background: -webkit-linear-gradient(top, #ffffff 0%, #e8e8e8);background: -moz-linear-gradient(top, #ffffff 0%, #e8e8e8);background: -ms-linear-gradient(top, #ffffff 0%, #e8e8e8);background: -o-linear-gradient(top, #ffffff 0%, #e8e8e8);background: linear-gradient(top, #ffffff 0%, #e8e8e8);filter: progid:DXImageTransform.Microsoft.Gradient(startColorStr="#ffffff", endColorStr="#e8e8e8");');
|
||
sheet.add(".month_default_selected .month_default_event_inner, .month_default_event_hover.month_default_selected .month_default_event_inner", "background: #ddd;");
|
||
sheet.add(".month_default_shadow_inner", "background-color: #666666;opacity: 0.5;filter: alpha(opacity=50);height: 100%;");
|
||
sheet.add(".month_default_event_delete", "background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAYAAACprHcmAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjExR/NCNwAAAI5JREFUKFNtkLERgCAMRbmzdK8s4gAUlhYOYEHJEJYOYOEwDmGBPxC4kOPfvePy84MGR0RJ2N1A8H3N6DATwSQ57m2ql8NBG+AEM7D+UW+wjdfUPgerYNgB5gOLRHqhcasg84C2QxPMtrUhSqQIhg7ypy9VM2EUZPI/4rQ7rGxqo9sadTegw+UdjeDLAKUfhbaQUVPIfJYAAAAASUVORK5CYII=) center center no-repeat; opacity: 0.6; -ms-filter:'progid:DXImageTransform.Microsoft.Alpha(Opacity=60)';cursor: pointer;");
|
||
sheet.add(".month_default_event_delete:hover", "opacity: 1;-ms-filter: none;");
|
||
|
||
sheet.add(".month_default_event_timeleft", "color: #ccc; font-size: 8pt");
|
||
sheet.add(".month_default_event_timeright", "color: #ccc; font-size: 8pt; text-align: right;");
|
||
|
||
// navigator
|
||
sheet.add(".navigator_default_main", "border-left: 1px solid #A0A0A0;border-right: 1px solid #A0A0A0;border-bottom: 1px solid #A0A0A0;background-color: white;color: #000000;");
|
||
sheet.add(".navigator_default_month", "font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 11px;");
|
||
sheet.add(".navigator_default_day", "color: black;");
|
||
sheet.add(".navigator_default_weekend", "background-color: #f0f0f0;");
|
||
sheet.add(".navigator_default_dayheader", "color: black;");
|
||
sheet.add(".navigator_default_line", "border-bottom: 1px solid #A0A0A0;");
|
||
sheet.add(".navigator_default_dayother", "color: gray;");
|
||
sheet.add(".navigator_default_todaybox", "border: 1px solid red;");
|
||
//sheet.add(".navigator_default_select, .navigator_default_weekend.navigator_default_select", "background-color: #FFE794;");
|
||
sheet.add(".navigator_default_title, .navigator_default_titleleft, .navigator_default_titleright", 'border-top: 1px solid #A0A0A0;color: #666;background: #eee;background: -webkit-gradient(linear, left top, left bottom, from(#eeeeee), to(#dddddd));background: -webkit-linear-gradient(top, #eeeeee 0%, #dddddd);background: -moz-linear-gradient(top, #eeeeee 0%, #dddddd);background: -ms-linear-gradient(top, #eeeeee 0%, #dddddd);background: -o-linear-gradient(top, #eeeeee 0%, #dddddd);background: linear-gradient(top, #eeeeee 0%, #dddddd);filter: progid:DXImageTransform.Microsoft.Gradient(startColorStr="#eeeeee", endColorStr="#dddddd");');
|
||
sheet.add(".navigator_default_busy", "font-weight: bold;");
|
||
|
||
// 2015-05-19
|
||
// new classes: _cell, _cell_box, _cell_text
|
||
sheet.add(".navigator_default_cell", "text-align: center;");
|
||
sheet.add(".navigator_default_select .navigator_default_cell_box", "background-color: #FFE794; opacity: 0.5;");
|
||
|
||
// scheduler
|
||
sheet.add(".scheduler_default_selected .scheduler_default_event_inner", "background: #ddd;");
|
||
sheet.add(".scheduler_default_main", "border: 1px solid #aaa;font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 12px;");
|
||
sheet.add(".scheduler_default_timeheader", "cursor: default;color: #666;");
|
||
sheet.add(".scheduler_default_message", "opacity: 0.9;filter: alpha(opacity=90);padding: 10px; color: #ffffff;background: #ffa216;");
|
||
sheet.add(".scheduler_default_timeheadergroup,.scheduler_default_timeheadercol", "color: #666;background: #eee;");
|
||
sheet.add(".scheduler_default_rowheader,.scheduler_default_corner", "color: #666;background: #eee;");
|
||
sheet.add(".scheduler_default_rowheader.scheduler_default_rowheader_selected", "background-color: #aaa;background-image: -webkit-gradient(linear, 0 100%, 100% 0,color-stop(.25, rgba(255, 255, 255, .2)), color-stop(.25, transparent), color-stop(.5, transparent), color-stop(.5, rgba(255, 255, 255, .2)), color-stop(.75, rgba(255, 255, 255, .2)), color-stop(.75, transparent), to(transparent));background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .2) 50%, rgba(255, 255, 255, .2) 75%, transparent 75%, transparent);background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, .2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .2) 50%, rgba(255, 255, 255, .2) 75%, transparent 75%, transparent);background-image: -ms-linear-gradient(45deg, rgba(255, 255, 255, .2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .2) 50%, rgba(255, 255, 255, .2) 75%, transparent 75%, transparent);background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .2) 50%, rgba(255, 255, 255, .2) 75%, transparent 75%, transparent);background-image: linear-gradient(45deg, rgba(255, 255, 255, .2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .2) 50%, rgba(255, 255, 255, .2) 75%, transparent 75%, transparent);-webkit-background-size: 20px 20px;-moz-background-size: 20px 20px;background-size: 20px 20px;");
|
||
sheet.add(".scheduler_default_rowheader_inner", "position: absolute;left: 0px;right: 0px;top: 0px;bottom: 0px;border-right: 1px solid #eee;padding: 2px;");
|
||
sheet.add(".scheduler_default_timeheadergroup, .scheduler_default_timeheadercol", "text-align: center;");
|
||
sheet.add(".scheduler_default_timeheadergroup_inner", "position: absolute;left: 0px;right: 0px;top: 0px;bottom: 0px;border-right: 1px solid #aaa;border-bottom: 1px solid #aaa;");
|
||
sheet.add(".scheduler_default_timeheadercol_inner", "position: absolute;left: 0px;right: 0px;top: 0px;bottom: 0px;border-right: 1px solid #aaa;");
|
||
sheet.add(".scheduler_default_divider, .scheduler_default_splitter", "background-color: #aaa;");
|
||
sheet.add(".scheduler_default_divider_horizontal", "background-color: #aaa;");
|
||
sheet.add(".scheduler_default_matrix_vertical_line", "background-color: #eee;");
|
||
sheet.add(".scheduler_default_matrix_vertical_break", "background-color: #000;");
|
||
sheet.add(".scheduler_default_matrix_horizontal_line", "background-color: #eee;");
|
||
sheet.add(".scheduler_default_resourcedivider", "background-color: #aaa;");
|
||
sheet.add(".scheduler_default_shadow_inner", "background-color: #666666;opacity: 0.5;filter: alpha(opacity=50);height: 100%;");
|
||
sheet.add(".scheduler_default_event", "font-size:12px;color:#666;");
|
||
sheet.add(".scheduler_default_event_inner", "position:absolute;top:0px;left:0px;right:0px;bottom:0px;padding:5px 2px 2px 2px;overflow:hidden;border:1px solid #ccc;");
|
||
sheet.add(".scheduler_default_event_bar", "top:0px;left:0px;right:0px;height:4px;background-color:#9dc8e8;");
|
||
sheet.add(".scheduler_default_event_bar_inner", "position:absolute;height:4px;background-color:#1066a8;");
|
||
sheet.add(".scheduler_default_event_inner", 'background:#fff;background: -webkit-gradient(linear, left top, left bottom, from(#ffffff), to(#eeeeee));background: -webkit-linear-gradient(top, #ffffff 0%, #eeeeee);background: -moz-linear-gradient(top, #ffffff 0%, #eeeeee);background: -ms-linear-gradient(top, #ffffff 0%, #eeeeee);background: -o-linear-gradient(top, #ffffff 0%, #eeeeee);background: linear-gradient(top, #ffffff 0%, #eeeeee);filter: progid:DXImageTransform.Microsoft.Gradient(startColorStr="#ffffff", endColorStr="#eeeeee");');
|
||
sheet.add(".scheduler_default_event_float_inner", "padding:6px 2px 2px 8px;"); // space for arrow
|
||
sheet.add(".scheduler_default_event_float_inner:after", 'content:"";border-color: transparent #666 transparent transparent;border-style:solid;border-width:5px;width:0;height:0;position:absolute;top:8px;left:-4px;');
|
||
sheet.add(".scheduler_default_columnheader_inner", "font-weight: bold;");
|
||
sheet.add(".scheduler_default_columnheader_splitter", "background-color: #666;opacity: 0.5;filter: alpha(opacity=50);");
|
||
sheet.add(".scheduler_default_columnheader_cell_inner", "padding: 2px;");
|
||
sheet.add(".scheduler_default_cell", "background-color: #f9f9f9;");
|
||
sheet.add(".scheduler_default_cell.scheduler_default_cell_business", "background-color: #fff;");
|
||
sheet.add(".scheduler_default_cell.scheduler_default_cell_business.scheduler_default_cell_selected,.scheduler_default_cell.scheduler_default_cell_selected", "background-color: #ccc;background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(.25, rgba(255, 255, 255, .2)), color-stop(.25, transparent), color-stop(.5, transparent), color-stop(.5, rgba(255, 255, 255, .2)), color-stop(.75, rgba(255, 255, 255, .2)), color-stop(.75, transparent), to(transparent));background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .2) 50%, rgba(255, 255, 255, .2) 75%, transparent 75%, transparent);background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, .2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .2) 50%, rgba(255, 255, 255, .2) 75%, transparent 75%, transparent);background-image: -ms-linear-gradient(45deg, rgba(255, 255, 255, .2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .2) 50%, rgba(255, 255, 255, .2) 75%, transparent 75%, transparent);background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .2) 50%, rgba(255, 255, 255, .2) 75%, transparent 75%, transparent);background-image: linear-gradient(45deg, rgba(255, 255, 255, .2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .2) 50%, rgba(255, 255, 255, .2) 75%, transparent 75%, transparent);-webkit-background-size: 20px 20px;-moz-background-size: 20px 20px;background-size: 20px 20px;");
|
||
sheet.add(".scheduler_default_tree_image_no_children", "background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAIAAABv85FHAAAAKXRFWHRDcmVhdGlvbiBUaW1lAHDhIDMwIEkgMjAwOSAwODo0NjozMSArMDEwMClDkt4AAAAHdElNRQfZAR4HLzEyzsCJAAAACXBIWXMAAA7CAAAOwgEVKEqAAAAABGdBTUEAALGPC/xhBQAAADBJREFUeNpjrK6s5uTl/P75OybJ0NLW8h8bAIozgeSxAaA4E1A7VjmgOL31MeLxHwCeXUT0WkFMKAAAAABJRU5ErkJggg==);");
|
||
sheet.add(".scheduler_default_tree_image_expand", "background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAIAAABv85FHAAAAKXRFWHRDcmVhdGlvbiBUaW1lAHDhIDMwIEkgMjAwOSAwODo0NjozMSArMDEwMClDkt4AAAAHdElNRQfZAR4HLyUoFBT0AAAACXBIWXMAAA7CAAAOwgEVKEqAAAAABGdBTUEAALGPC/xhBQAAAFJJREFUeNpjrK6s5uTl/P75OybJ0NLW8h8bAIozgeRhgJGREc4GijMBtTNgA0BxFog+uA4IA2gmUJwFog/IgUhAGBB9KPYhA3T74Jog+hjx+A8A1KRQ+AN5vcwAAAAASUVORK5CYII=);");
|
||
sheet.add(".scheduler_default_tree_image_collapse", "background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAIAAABv85FHAAAAKXRFWHRDcmVhdGlvbiBUaW1lAHDhIDMwIEkgMjAwOSAwODo0NjozMSArMDEwMClDkt4AAAAHdElNRQfZAR4HLxB+p9DXAAAACXBIWXMAAA7CAAAOwgEVKEqAAAAABGdBTUEAALGPC/xhBQAAAENJREFUeNpjrK6s5uTl/P75OybJ0NLW8h8bAIozgeSxAaA4E1A7VjmgOAtEHyMjI7IE0EygOAtEH5CDqY9c+xjx+A8ANndK9WaZlP4AAAAASUVORK5CYII=);");
|
||
sheet.add(".scheduler_default_event_move_left", 'box-sizing: border-box; padding:2px;border:1px solid #ccc;background:#fff;background: -webkit-gradient(linear, left top, left bottom, from(#ffffff), to(#eeeeee));background: -webkit-linear-gradient(top, #ffffff 0%, #eeeeee);background: -moz-linear-gradient(top, #ffffff 0%, #eeeeee);background: -ms-linear-gradient(top, #ffffff 0%, #eeeeee);background: -o-linear-gradient(top, #ffffff 0%, #eeeeee);background: linear-gradient(top, #ffffff 0%, #eeeeee);filter: progid:DXImageTransform.Microsoft.Gradient(startColorStr="#ffffff", endColorStr="#eeeeee");');
|
||
sheet.add(".scheduler_default_event_move_right", 'box-sizing: border-box; padding:2px;border:1px solid #ccc;background:#fff;background: -webkit-gradient(linear, left top, left bottom, from(#ffffff), to(#eeeeee));background: -webkit-linear-gradient(top, #ffffff 0%, #eeeeee);background: -moz-linear-gradient(top, #ffffff 0%, #eeeeee);background: -ms-linear-gradient(top, #ffffff 0%, #eeeeee);background: -o-linear-gradient(top, #ffffff 0%, #eeeeee);background: linear-gradient(top, #ffffff 0%, #eeeeee);filter: progid:DXImageTransform.Microsoft.Gradient(startColorStr="#ffffff", endColorStr="#eeeeee");');
|
||
sheet.add(".scheduler_default_event_delete", "background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAYAAACprHcmAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjExR/NCNwAAAI5JREFUKFNtkLERgCAMRbmzdK8s4gAUlhYOYEHJEJYOYOEwDmGBPxC4kOPfvePy84MGR0RJ2N1A8H3N6DATwSQ57m2ql8NBG+AEM7D+UW+wjdfUPgerYNgB5gOLRHqhcasg84C2QxPMtrUhSqQIhg7ypy9VM2EUZPI/4rQ7rGxqo9sadTegw+UdjeDLAKUfhbaQUVPIfJYAAAAASUVORK5CYII=) center center no-repeat; opacity: 0.6; -ms-filter:'progid:DXImageTransform.Microsoft.Alpha(Opacity=60)';cursor: pointer;");
|
||
sheet.add(".scheduler_default_event_delete:hover", "opacity: 1;-ms-filter: none;");
|
||
|
||
sheet.add(".scheduler_default_rowmove_handle", "background-repeat: no-repeat; background-position: center center; background-color: #ccc; background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAKCAYAAACT+/8OAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjExR/NCNwAAAClJREFUGFdj+P//P4O9vX2Bg4NDP4gNFgBytgPxebgAMsYuQGMz/jMAAFsTZDPYJlDHAAAAAElFTkSuQmCC); cursor: move;");
|
||
sheet.add(".scheduler_default_rowmove_source", "background-color: black; opacity: 0.2;");
|
||
sheet.add(".scheduler_default_rowmove_position_before, .scheduler_default_rowmove_position_after", "background-color: #999; height: 2px;");
|
||
sheet.add(".scheduler_default_rowmove_position_child", "margin-left: 10px; background-color: #999; height: 2px;");
|
||
sheet.add(".scheduler_default_rowmove_position_child:before", "content: '+'; color: #999; position: absolute; top: -8px; left: -10px;");
|
||
sheet.add(".scheduler_default_rowmove_position_forbidden", "background-color: red; height: 2px; margin-left: 10px;");
|
||
sheet.add(".scheduler_default_rowmove_position_forbidden:before", "content: 'x'; color: red; position: absolute; top: -8px; left: -10px;");
|
||
|
||
sheet.add(".scheduler_default_link_horizontal", "border-bottom-style: solid; border-bottom-color: red");
|
||
sheet.add(".scheduler_default_link_vertical", "border-right-style: solid; border-right-color: red");
|
||
sheet.add(".scheduler_default_link_arrow_right:before", "content: ''; border-width: 6px; border-color: transparent transparent transparent red; border-style: solid; width: 0px; height:0px; position: absolute;");
|
||
sheet.add(".scheduler_default_link_arrow_left:before", "content: ''; border-width: 6px; border-color: transparent red transparent transparent; border-style: solid; width: 0px; height:0px; position: absolute;");
|
||
sheet.add(".scheduler_default_link_arrow_down:before", "content: ''; border-width: 6px; border-color: red transparent transparent transparent; border-style: solid; width: 0px; height:0px; position: absolute;");
|
||
|
||
sheet.add(".scheduler_default_shadow_overlap .scheduler_default_shadow_inner", "background-color: red;");
|
||
sheet.add(".scheduler_default_block", "background-color: gray; opacity: 0.5; filter: alpha(opacity=50);");
|
||
|
||
sheet.add(".scheduler_default_event_group", "box-sizing: border-box; font-size:12px; color:#666; padding:4px 2px 2px 2px; overflow:hidden; border:1px solid #ccc; background-color: #fff;");
|
||
|
||
sheet.add(".scheduler_default_header_icon", "box-sizing: border-box; border: 1px solid #aaa; background-color: #f5f5f5; color: #000;");
|
||
sheet.add(".scheduler_default_header_icon:hover", "background-color: #ccc;");
|
||
sheet.add(".scheduler_default_header_icon_hide:before", "content: '\\00AB';");
|
||
sheet.add(".scheduler_default_header_icon_show:before", "content: '\\00BB';");
|
||
|
||
sheet.add(".scheduler_default_row_new .scheduler_default_rowheader_inner", "cursor: text; background-position: 0px 5px; background-repeat: no-repeat; background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAABUSURBVChTY0ACslAaK2CC0iCQDMSlECYmQFYIAl1AjFUxukIQwKoYm0IQwFCMSyEIaEJpMMClcD4Qp0CYEIBNIUzRPzAPCtAVYlWEDgyAGIdTGBgAbqEJYyjqa3oAAAAASUVORK5CYII=);");
|
||
sheet.add(".scheduler_default_row_new .scheduler_default_rowheader_inner:hover", "background: white;");
|
||
sheet.add(".scheduler_default_rowheader textarea", "padding: 3px;");
|
||
sheet.add(".scheduler_default_rowheader_scroll", "cursor: default;");
|
||
|
||
sheet.add(".scheduler_default_shadow_forbidden .scheduler_default_shadow_inner", "background-color: red;");
|
||
|
||
sheet.add(".scheduler_default_event_moving_source", "opacity: 0.5; filter: alpha(opacity=50);");
|
||
|
||
// gantt
|
||
sheet.add(".gantt_default_selected .gantt_default_event_inner", "background: #ddd;");
|
||
sheet.add(".gantt_default_main", "border: 1px solid #aaa;font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 12px;");
|
||
sheet.add(".gantt_default_timeheader", "cursor: default;color: #666;");
|
||
sheet.add(".gantt_default_message", "opacity: 0.9;filter: alpha(opacity=90);padding: 10px; color: #ffffff;background: #ffa216;");
|
||
sheet.add(".gantt_default_timeheadergroup,.gantt_default_timeheadercol", "color: #666;background: #eee;");
|
||
sheet.add(".gantt_default_rowheader,.gantt_default_corner", "color: #666;background: #eee;");
|
||
sheet.add(".gantt_default_rowheader.gantt_default_rowheader_selected", "background-color: #aaa;background-image: -webkit-gradient(linear, 0 100%, 100% 0,color-stop(.25, rgba(255, 255, 255, .2)), color-stop(.25, transparent), color-stop(.5, transparent), color-stop(.5, rgba(255, 255, 255, .2)), color-stop(.75, rgba(255, 255, 255, .2)), color-stop(.75, transparent), to(transparent));background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .2) 50%, rgba(255, 255, 255, .2) 75%, transparent 75%, transparent);background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, .2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .2) 50%, rgba(255, 255, 255, .2) 75%, transparent 75%, transparent);background-image: -ms-linear-gradient(45deg, rgba(255, 255, 255, .2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .2) 50%, rgba(255, 255, 255, .2) 75%, transparent 75%, transparent);background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .2) 50%, rgba(255, 255, 255, .2) 75%, transparent 75%, transparent);background-image: linear-gradient(45deg, rgba(255, 255, 255, .2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .2) 50%, rgba(255, 255, 255, .2) 75%, transparent 75%, transparent);-webkit-background-size: 20px 20px;-moz-background-size: 20px 20px;background-size: 20px 20px;");
|
||
sheet.add(".gantt_default_rowheader_inner", "position: absolute;left: 0px;right: 0px;top: 0px;bottom: 0px;border-right: 1px solid #eee;padding: 2px;");
|
||
sheet.add(".gantt_default_timeheadergroup, .gantt_default_timeheadercol", "text-align: center;");
|
||
sheet.add(".gantt_default_timeheadergroup_inner", "position: absolute;left: 0px;right: 0px;top: 0px;bottom: 0px;border-right: 1px solid #aaa;border-bottom: 1px solid #aaa;");
|
||
sheet.add(".gantt_default_timeheadercol_inner", "position: absolute;left: 0px;right: 0px;top: 0px;bottom: 0px;border-right: 1px solid #aaa;");
|
||
sheet.add(".gantt_default_divider, .gantt_default_splitter", "background-color: #aaa;");
|
||
sheet.add(".gantt_default_divider_horizontal", "background-color: #aaa;");
|
||
sheet.add(".gantt_default_matrix_vertical_line", "background-color: #eee;");
|
||
sheet.add(".gantt_default_matrix_vertical_break", "background-color: #000;");
|
||
sheet.add(".gantt_default_matrix_horizontal_line", "background-color: #eee;");
|
||
sheet.add(".gantt_default_resourcedivider", "background-color: #aaa;");
|
||
sheet.add(".gantt_default_shadow_inner", "background-color: #666666;opacity: 0.5;filter: alpha(opacity=50);height: 100%;");
|
||
sheet.add(".gantt_default_event", "font-size:12px;color:#666;");
|
||
sheet.add(".gantt_default_event_inner", "position:absolute;top:0px;left:0px;right:0px;bottom:0px;padding:5px 2px 2px 2px;overflow:hidden;border:1px solid #ccc;");
|
||
sheet.add(".gantt_default_event_bar", "top:0px;left:0px;right:0px;height:4px;background-color:#9dc8e8;");
|
||
sheet.add(".gantt_default_event_bar_inner", "position:absolute;height:4px;background-color:#1066a8;");
|
||
sheet.add(".gantt_default_event_inner", 'background:#fff;background: -webkit-gradient(linear, left top, left bottom, from(#ffffff), to(#eeeeee));background: -webkit-linear-gradient(top, #ffffff 0%, #eeeeee);background: -moz-linear-gradient(top, #ffffff 0%, #eeeeee);background: -ms-linear-gradient(top, #ffffff 0%, #eeeeee);background: -o-linear-gradient(top, #ffffff 0%, #eeeeee);background: linear-gradient(top, #ffffff 0%, #eeeeee);filter: progid:DXImageTransform.Microsoft.Gradient(startColorStr="#ffffff", endColorStr="#eeeeee");');
|
||
sheet.add(".gantt_default_event_float_inner", "padding:6px 2px 2px 8px;"); // space for arrow
|
||
sheet.add(".gantt_default_event_float_inner:after", 'content:"";border-color: transparent #666 transparent transparent;border-style:solid;border-width:5px;width:0;height:0;position:absolute;top:8px;left:-4px;');
|
||
sheet.add(".gantt_default_columnheader_inner", "font-weight: bold;");
|
||
sheet.add(".gantt_default_columnheader_splitter", "background-color: #666;opacity: 0.5;filter: alpha(opacity=50);");
|
||
sheet.add(".gantt_default_columnheader_cell_inner", "padding: 2px;");
|
||
sheet.add(".gantt_default_cell", "background-color: #f9f9f9;");
|
||
sheet.add(".gantt_default_cell.gantt_default_cell_business", "background-color: #fff;");
|
||
sheet.add(".gantt_default_cell.gantt_default_cell_business.gantt_default_cell_selected,.gantt_default_cell.gantt_default_cell_selected", "background-color: #ccc;background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(.25, rgba(255, 255, 255, .2)), color-stop(.25, transparent), color-stop(.5, transparent), color-stop(.5, rgba(255, 255, 255, .2)), color-stop(.75, rgba(255, 255, 255, .2)), color-stop(.75, transparent), to(transparent));background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .2) 50%, rgba(255, 255, 255, .2) 75%, transparent 75%, transparent);background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, .2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .2) 50%, rgba(255, 255, 255, .2) 75%, transparent 75%, transparent);background-image: -ms-linear-gradient(45deg, rgba(255, 255, 255, .2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .2) 50%, rgba(255, 255, 255, .2) 75%, transparent 75%, transparent);background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .2) 50%, rgba(255, 255, 255, .2) 75%, transparent 75%, transparent);background-image: linear-gradient(45deg, rgba(255, 255, 255, .2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .2) 50%, rgba(255, 255, 255, .2) 75%, transparent 75%, transparent);-webkit-background-size: 20px 20px;-moz-background-size: 20px 20px;background-size: 20px 20px;");
|
||
sheet.add(".gantt_default_tree_image_no_children", "background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAIAAABv85FHAAAAKXRFWHRDcmVhdGlvbiBUaW1lAHDhIDMwIEkgMjAwOSAwODo0NjozMSArMDEwMClDkt4AAAAHdElNRQfZAR4HLzEyzsCJAAAACXBIWXMAAA7CAAAOwgEVKEqAAAAABGdBTUEAALGPC/xhBQAAADBJREFUeNpjrK6s5uTl/P75OybJ0NLW8h8bAIozgeSxAaA4E1A7VjmgOL31MeLxHwCeXUT0WkFMKAAAAABJRU5ErkJggg==);");
|
||
sheet.add(".gantt_default_tree_image_expand", "background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAIAAABv85FHAAAAKXRFWHRDcmVhdGlvbiBUaW1lAHDhIDMwIEkgMjAwOSAwODo0NjozMSArMDEwMClDkt4AAAAHdElNRQfZAR4HLyUoFBT0AAAACXBIWXMAAA7CAAAOwgEVKEqAAAAABGdBTUEAALGPC/xhBQAAAFJJREFUeNpjrK6s5uTl/P75OybJ0NLW8h8bAIozgeRhgJGREc4GijMBtTNgA0BxFog+uA4IA2gmUJwFog/IgUhAGBB9KPYhA3T74Jog+hjx+A8A1KRQ+AN5vcwAAAAASUVORK5CYII=);");
|
||
sheet.add(".gantt_default_tree_image_collapse", "background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAIAAABv85FHAAAAKXRFWHRDcmVhdGlvbiBUaW1lAHDhIDMwIEkgMjAwOSAwODo0NjozMSArMDEwMClDkt4AAAAHdElNRQfZAR4HLxB+p9DXAAAACXBIWXMAAA7CAAAOwgEVKEqAAAAABGdBTUEAALGPC/xhBQAAAENJREFUeNpjrK6s5uTl/P75OybJ0NLW8h8bAIozgeSxAaA4E1A7VjmgOAtEHyMjI7IE0EygOAtEH5CDqY9c+xjx+A8ANndK9WaZlP4AAAAASUVORK5CYII=);");
|
||
sheet.add(".gantt_default_event_move_left", 'box-sizing: border-box; padding:2px;border:1px solid #ccc;background:#fff;background: -webkit-gradient(linear, left top, left bottom, from(#ffffff), to(#eeeeee));background: -webkit-linear-gradient(top, #ffffff 0%, #eeeeee);background: -moz-linear-gradient(top, #ffffff 0%, #eeeeee);background: -ms-linear-gradient(top, #ffffff 0%, #eeeeee);background: -o-linear-gradient(top, #ffffff 0%, #eeeeee);background: linear-gradient(top, #ffffff 0%, #eeeeee);filter: progid:DXImageTransform.Microsoft.Gradient(startColorStr="#ffffff", endColorStr="#eeeeee");');
|
||
sheet.add(".gantt_default_event_move_right", 'box-sizing: border-box; padding:2px;border:1px solid #ccc;background:#fff;background: -webkit-gradient(linear, left top, left bottom, from(#ffffff), to(#eeeeee));background: -webkit-linear-gradient(top, #ffffff 0%, #eeeeee);background: -moz-linear-gradient(top, #ffffff 0%, #eeeeee);background: -ms-linear-gradient(top, #ffffff 0%, #eeeeee);background: -o-linear-gradient(top, #ffffff 0%, #eeeeee);background: linear-gradient(top, #ffffff 0%, #eeeeee);filter: progid:DXImageTransform.Microsoft.Gradient(startColorStr="#ffffff", endColorStr="#eeeeee");');
|
||
sheet.add(".gantt_default_event_delete", "background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAYAAACprHcmAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjExR/NCNwAAAI5JREFUKFNtkLERgCAMRbmzdK8s4gAUlhYOYEHJEJYOYOEwDmGBPxC4kOPfvePy84MGR0RJ2N1A8H3N6DATwSQ57m2ql8NBG+AEM7D+UW+wjdfUPgerYNgB5gOLRHqhcasg84C2QxPMtrUhSqQIhg7ypy9VM2EUZPI/4rQ7rGxqo9sadTegw+UdjeDLAKUfhbaQUVPIfJYAAAAASUVORK5CYII=) center center no-repeat; opacity: 0.6; -ms-filter:'progid:DXImageTransform.Microsoft.Alpha(Opacity=60)';cursor: pointer;");
|
||
sheet.add(".gantt_default_event_delete:hover", "opacity: 1;-ms-filter: none;");
|
||
|
||
sheet.add(".gantt_default_rowmove_handle", "background-repeat: no-repeat; background-position: center center; background-color: #ccc; background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAKCAYAAACT+/8OAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjExR/NCNwAAAClJREFUGFdj+P//P4O9vX2Bg4NDP4gNFgBytgPxebgAMsYuQGMz/jMAAFsTZDPYJlDHAAAAAElFTkSuQmCC); cursor: move;");
|
||
sheet.add(".gantt_default_rowmove_source", "background-color: black; opacity: 0.2;");
|
||
sheet.add(".gantt_default_rowmove_position_before, .gantt_default_rowmove_position_after", "background-color: #999; height: 2px;");
|
||
sheet.add(".gantt_default_rowmove_position_child", "margin-left: 10px; background-color: #999; height: 2px;");
|
||
sheet.add(".gantt_default_rowmove_position_child:before", "content: '+'; color: #999; position: absolute; top: -8px; left: -10px;");
|
||
sheet.add(".gantt_default_rowmove_position_forbidden", "background-color: red; height: 2px; margin-left: 10px;");
|
||
sheet.add(".gantt_default_rowmove_position_forbidden:before", "content: 'x'; color: red; position: absolute; top: -8px; left: -10px;");
|
||
|
||
sheet.add(".gantt_default_task_group .gantt_default_event_inner", "position:absolute;top:5px;left:0px;right:0px;bottom:6px;overflow:hidden; background: blue; filter: none; border: 0px none;");
|
||
sheet.add(".gantt_default_task_group.gantt_default_event:before", "content:''; border-color: transparent transparent transparent blue; border-style: solid; border-width: 6px; position: absolute; bottom: 0px;");
|
||
sheet.add(".gantt_default_task_group.gantt_default_event:after", "content:''; border-color: transparent blue transparent transparent; border-style: solid; border-width: 6px; position: absolute; bottom: 0px; right: 0px;");
|
||
|
||
sheet.add(".gantt_default_task_milestone .gantt_default_event_inner", "position:absolute;top:16%;left:16%;right:16%;bottom:16%; background: green; border: 0px none; -webkit-transform: rotate(45deg);-moz-transform: rotate(45deg);-ms-transform: rotate(45deg);-o-transform: rotate(45deg); transform: rotate(45deg); filter: none;");
|
||
sheet.add(".gantt_default_browser_ie8 .gantt_default_task_milestone .gantt_default_event_inner", "-ms-filter: \"progid:DXImageTransform.Microsoft.Matrix(SizingMethod='auto expand', M11=0.7071067811865476, M12=-0.7071067811865475, M21=0.7071067811865475, M22=0.7071067811865476);\"");
|
||
|
||
sheet.add(".gantt_default_event_left", "white-space: nowrap; padding-top: 5px; color: #666; cursor: default;");
|
||
sheet.add(".gantt_default_event_right", "white-space: nowrap; padding-top: 5px; color: #666; cursor: default;");
|
||
|
||
sheet.add(".gantt_default_link_horizontal", "border-bottom-style: solid; border-bottom-color: red;");
|
||
sheet.add(".gantt_default_link_vertical", "border-right-style: solid; border-right-color: red;");
|
||
sheet.add(".gantt_default_link_arrow_right:before", "content: ''; border-width: 6px; border-color: transparent transparent transparent red; border-style: solid; width: 0px; height:0px; position: absolute;");
|
||
sheet.add(".gantt_default_link_arrow_left:before", "content: ''; border-width: 6px; border-color: transparent red transparent transparent; border-style: solid; width: 0px; height:0px; position: absolute;");
|
||
sheet.add(".gantt_default_link_arrow_down:before", "content: ''; border-width: 6px; border-color: red transparent transparent transparent; border-style: solid; width: 0px; height:0px; position: absolute;");
|
||
|
||
sheet.add(".gantt_default_shadow_overlap .gantt_default_shadow_inner", "background-color: red;");
|
||
sheet.add(".gantt_default_block", "background-color: gray; opacity: 0.5; filter: alpha(opacity=50);");
|
||
|
||
sheet.add(".gantt_default_link_hover", "box-shadow: 0px 0px 2px 2px rgba(255, 0, 0, 0.3)");
|
||
|
||
sheet.add(".gantt_default_header_icon", "box-sizing: border-box; border: 1px solid #aaa; background-color: #f5f5f5; color: #000;");
|
||
sheet.add(".gantt_default_header_icon:hover", "background-color: #ccc;");
|
||
sheet.add(".gantt_default_header_icon_hide:before", "content: '\\00AB';");
|
||
sheet.add(".gantt_default_header_icon_show:before", "content: '\\00BB';");
|
||
|
||
sheet.add(".gantt_default_row_new .gantt_default_rowheader_inner", "cursor: text; background-position: 0 50%; background-repeat: no-repeat; background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAABUSURBVChTY0ACslAaK2CC0iCQDMSlECYmQFYIAl1AjFUxukIQwKoYm0IQwFCMSyEIaEJpMMClcD4Qp0CYEIBNIUzRPzAPCtAVYlWEDgyAGIdTGBgAbqEJYyjqa3oAAAAASUVORK5CYII=);");
|
||
sheet.add(".gantt_default_row_new .gantt_default_rowheader_inner:hover", "background: white;");
|
||
sheet.add(".gantt_default_rowheader textarea", "padding: 5px;");
|
||
sheet.add(".gantt_default_rowheader_scroll", "cursor: default;");
|
||
|
||
sheet.add(".gantt_default_shadow_forbidden .gantt_default_shadow_inner", "background-color: red;");
|
||
sheet.add(".gantt_default_event_moving_source", "opacity: 0.5; filter: alpha(opacity=50);");
|
||
|
||
sheet.commit();
|
||
|
||
DayPilot.Global.defaultCss = true;
|
||
})();
|
||
|
||
|
||
var Splitter = function(id) {
|
||
var This = this;
|
||
|
||
this.id = id;
|
||
//this.count = 3;
|
||
this.widths = [];
|
||
this.titles = [];
|
||
this.height = null;
|
||
//this.height = 20;
|
||
this.splitterWidth = 3;
|
||
//this.color = "#000000";
|
||
//this.opacity = 60;
|
||
//this.padding = '0px 2px 0px 2px';
|
||
this.css = {};
|
||
this.css.title = null;
|
||
this.css.titleInner = null;
|
||
this.css.splitter = null;
|
||
|
||
// internal
|
||
this.blocks = [];
|
||
this.drag = {};
|
||
|
||
// callback
|
||
this.updated = function() {};
|
||
this.updating = function() {};
|
||
|
||
this.init = function() {
|
||
var div;
|
||
|
||
if (!id) {
|
||
throw "error: id not provided";
|
||
}
|
||
else if (typeof id === 'string') {
|
||
div = document.getElementById(id);
|
||
}
|
||
else if (id.appendChild) {
|
||
div = id;
|
||
}
|
||
else {
|
||
throw "error: invalid object provided";
|
||
}
|
||
|
||
this.div = div;
|
||
this.blocks = [];
|
||
|
||
for (var i = 0; i < this.widths.length; i++) {
|
||
var s = document.createElement("div");
|
||
s.style.display = "inline-block";
|
||
if (This.height !== null) {
|
||
s.style.height = This.height + "px";
|
||
}
|
||
else {
|
||
s.style.height = "100%";
|
||
}
|
||
s.style.width = (this.widths[i] - this.splitterWidth) + "px";
|
||
s.style.overflow = 'hidden';
|
||
s.style.verticalAlign = "top";
|
||
s.style.position = "relative";
|
||
s.setAttribute("unselectable", "on");
|
||
s.className = this.css.title;
|
||
div.appendChild(s);
|
||
|
||
var inner = document.createElement("div");
|
||
inner.innerHTML = this.titles[i];
|
||
inner.setAttribute("unselectable", "on");
|
||
inner.className = this.css.titleInner;
|
||
s.appendChild(inner);
|
||
|
||
var handle = document.createElement("div");
|
||
handle.style.display = "inline-block";
|
||
|
||
//handle.style.top = "0px";
|
||
//handle.style.left = "0px";
|
||
//handle.style.float = "left";
|
||
//handle.style.height = this.height + "px";
|
||
if (This.height !== null) {
|
||
handle.style.height = This.height + "px";
|
||
}
|
||
else {
|
||
handle.style.height = "100%";
|
||
}
|
||
handle.style.width = this.splitterWidth + "px";
|
||
handle.style.position = "relative";
|
||
|
||
handle.appendChild(document.createElement("div"));
|
||
/*
|
||
handle.style.backgroundColor = this.color;
|
||
if (this.opacity >= 0 && this.opacity <= 100) {
|
||
handle.style.opacity = this.opacity / 100;
|
||
handle.style.filter = "alpha(opacity=" + this.opacity + ")";
|
||
}*/
|
||
handle.style.cursor = "col-resize";
|
||
handle.setAttribute("unselectable", "on");
|
||
handle.className = this.css.splitter;
|
||
|
||
var data = {};
|
||
data.index = i;
|
||
data.width = this.widths[i];
|
||
|
||
handle.data = data;
|
||
|
||
handle.onmousedown = function(ev) {
|
||
This.drag.start = DayPilot.page(ev);
|
||
This.drag.data = this.data;
|
||
This.div.style.cursor = "col-resize";
|
||
//document.body.style.cursor = "col-resize";
|
||
ev = ev || window.event;
|
||
ev.preventDefault ? ev.preventDefault() : ev.returnValue = false;
|
||
};
|
||
|
||
div.appendChild(handle);
|
||
|
||
var block = {};
|
||
block.section = s;
|
||
block.handle = handle;
|
||
this.blocks.push(block);
|
||
}
|
||
|
||
this.registerGlobalHandlers();
|
||
}; // Init
|
||
|
||
// resets the initial value
|
||
this.updateWidths = function() {
|
||
for (var i = 0; i < this.blocks.length; i++) {
|
||
var block = this.blocks[i];
|
||
var width = this.widths[i];
|
||
block.handle.data.width = width;
|
||
|
||
this._updateWidth(i);
|
||
}
|
||
};
|
||
|
||
this._updateWidth = function(i) {
|
||
var block = this.blocks[i];
|
||
var width = this.widths[i];
|
||
block.section.style.width = (width - this.splitterWidth) + "px";
|
||
};
|
||
|
||
this.totalWidth = function() {
|
||
var t = 0;
|
||
for (var i = 0; i < this.widths.length; i++) {
|
||
t += this.widths[i];
|
||
}
|
||
return t;
|
||
};
|
||
|
||
this.gMouseMove = function(ev) {
|
||
if (!This.drag.start) {
|
||
return;
|
||
}
|
||
|
||
var data = This.drag.data;
|
||
|
||
var now = DayPilot.page(ev);
|
||
var delta = now.x - This.drag.start.x;
|
||
var i = data.index;
|
||
|
||
This.widths[i] = Math.max(5, data.width + delta);
|
||
This._updateWidth(i);
|
||
|
||
// callback
|
||
var params = {};
|
||
params.widths = this.widths;
|
||
params.index = data.index;
|
||
|
||
This.updating(params);
|
||
};
|
||
|
||
this.gMouseUp = function(ev) {
|
||
if (!This.drag.start) {
|
||
return;
|
||
}
|
||
This.drag.start = null;
|
||
document.body.style.cursor = "";
|
||
This.div.style.cursor = "";
|
||
|
||
var data = This.drag.data;
|
||
data.width = This.widths[data.index];
|
||
|
||
// callback
|
||
var params = {};
|
||
params.widths = this.widths;
|
||
params.index = data.index;
|
||
|
||
This.updated(params);
|
||
|
||
};
|
||
|
||
this.registerGlobalHandlers = function() {
|
||
DayPilot.re(document, 'mousemove', this.gMouseMove);
|
||
DayPilot.re(document, 'mouseup', this.gMouseUp);
|
||
};
|
||
};
|
||
|
||
DayPilot.Splitter = Splitter;
|
||
|
||
})();
|
||
|
||
/* JSON */
|
||
// thanks to http://www.json.org/js.html
|
||
|
||
|
||
// declares DayPilot.JSON.stringify()
|
||
DayPilot.JSON = {};
|
||
|
||
(function() {
|
||
function f(n) {
|
||
return n < 10 ? '0' + n : n;
|
||
}
|
||
|
||
if (typeof Date.prototype.toJSON !== 'function') {
|
||
Date.prototype.toJSON = function () {
|
||
|
||
return isFinite(this.valueOf())
|
||
? this.getUTCFullYear() + '-' +
|
||
f(this.getUTCMonth() + 1) + '-' +
|
||
f(this.getUTCDate()) + 'T' +
|
||
f(this.getUTCHours()) + ':' +
|
||
f(this.getUTCMinutes()) + ':' +
|
||
f(this.getUTCSeconds()) + 'Z'
|
||
: null;
|
||
};/*
|
||
Date.prototype.toJSON = function(key) {
|
||
return this.getUTCFullYear() + '-' +
|
||
f(this.getUTCMonth() + 1) + '-' +
|
||
f(this.getUTCDate()) + 'T' +
|
||
f(this.getUTCHours()) + ':' +
|
||
f(this.getUTCMinutes()) + ':' +
|
||
f(this.getUTCSeconds()) + '';
|
||
};*/
|
||
}
|
||
|
||
if (typeof String.prototype.toJSON !== 'function') {
|
||
String.prototype.toJSON =
|
||
Number.prototype.toJSON =
|
||
Boolean.prototype.toJSON = function(key) {
|
||
return this.valueOf();
|
||
};
|
||
}
|
||
|
||
var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
|
||
escapeable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
|
||
gap,
|
||
indent,
|
||
meta = {
|
||
'\b': '\\b',
|
||
'\t': '\\t',
|
||
'\n': '\\n',
|
||
'\f': '\\f',
|
||
'\r': '\\r',
|
||
'"': '\\"',
|
||
'\\': '\\\\'
|
||
},
|
||
rep;
|
||
|
||
function quote(string) {
|
||
escapeable.lastIndex = 0;
|
||
return escapeable.test(string) ?
|
||
'"' + string.replace(escapeable, function(a) {
|
||
var c = meta[a];
|
||
if (typeof c === 'string') {
|
||
return c;
|
||
}
|
||
return '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
|
||
}) + '"' :
|
||
'"' + string + '"';
|
||
}
|
||
|
||
function str(key, holder) {
|
||
var i,
|
||
k,
|
||
v,
|
||
length,
|
||
mind = gap,
|
||
partial,
|
||
value = holder[key];
|
||
/*
|
||
if (value && typeof value === 'object' && typeof value.toJSON2 === 'function') {
|
||
value = value.toJSON2(key);
|
||
}
|
||
else
|
||
*/if (value && typeof value === 'object' && typeof value.toJSON === 'function' && !value.ignoreToJSON) {
|
||
value = value.toJSON(key);
|
||
}
|
||
if (typeof rep === 'function') {
|
||
value = rep.call(holder, key, value);
|
||
}
|
||
switch (typeof value) {
|
||
case 'string':
|
||
return quote(value);
|
||
case 'number':
|
||
return isFinite(value) ? String(value) : 'null';
|
||
case 'boolean':
|
||
case 'null':
|
||
return String(value);
|
||
case 'object':
|
||
if (!value) {
|
||
return 'null';
|
||
}
|
||
gap += indent;
|
||
partial = [];
|
||
if (typeof value.length === 'number' &&
|
||
!value.propertyIsEnumerable('length')) {
|
||
length = value.length;
|
||
for (i = 0; i < length; i += 1) {
|
||
partial[i] = str(i, value) || 'null';
|
||
}
|
||
v = partial.length === 0 ? '[]' :
|
||
gap ? '[\n' + gap +
|
||
partial.join(',\n' + gap) + '\n' +
|
||
mind + ']' :
|
||
'[' + partial.join(',') + ']';
|
||
gap = mind;
|
||
return v;
|
||
}
|
||
if (rep && typeof rep === 'object') {
|
||
length = rep.length;
|
||
for (i = 0; i < length; i += 1) {
|
||
k = rep[i];
|
||
if (typeof k === 'string') {
|
||
v = str(k, value);
|
||
if (v) {
|
||
partial.push(quote(k) + (gap ? ': ' : ':') + v);
|
||
}
|
||
}
|
||
}
|
||
} else {
|
||
for (k in value) {
|
||
if (Object.hasOwnProperty.call(value, k)) {
|
||
v = str(k, value);
|
||
if (v) {
|
||
partial.push(quote(k) + (gap ? ': ' : ':') + v);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
v = (partial.length === 0) ? '{\u007D' :
|
||
gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' +
|
||
mind + '\u007D' : '{' + partial.join(',') + '\u007D';
|
||
gap = mind;
|
||
return v;
|
||
}
|
||
}
|
||
|
||
DayPilot.JSON.stringify = function(value, replacer, space) {
|
||
var i;
|
||
gap = '';
|
||
indent = '';
|
||
if (typeof space === 'number') {
|
||
for (i = 0; i < space; i += 1) {
|
||
indent += ' ';
|
||
}
|
||
} else if (typeof space === 'string') {
|
||
indent = space;
|
||
}
|
||
rep = replacer;
|
||
if (replacer && typeof replacer !== 'function' && (typeof replacer !== 'object' || typeof replacer.length !== 'number')) {
|
||
throw new Error('JSON.stringify');
|
||
}
|
||
return str('', {'': value});
|
||
};
|
||
|
||
DayPilot.JSON.parse = function (text, reviver) {
|
||
var j;
|
||
function walk(holder, key) {
|
||
var k, v, value = holder[key];
|
||
if (value && typeof value === 'object') {
|
||
for (k in value) {
|
||
if (Object.prototype.hasOwnProperty.call(value, k)) {
|
||
v = walk(value, k);
|
||
if (v !== undefined) {
|
||
value[k] = v;
|
||
} else {
|
||
delete value[k];
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return reviver.call(holder, key, value);
|
||
}
|
||
text = String(text);
|
||
cx.lastIndex = 0;
|
||
if (cx.test(text)) {
|
||
text = text.replace(cx, function (a) {
|
||
return '\\u' +
|
||
('0000' + a.charCodeAt(0).toString(16)).slice(-4);
|
||
});
|
||
}
|
||
if (/^[\],:{}\s]*$/
|
||
.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@')
|
||
.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']')
|
||
.replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
|
||
j = eval('(' + text + ')');
|
||
return typeof reviver === 'function'
|
||
? walk({'': j}, '')
|
||
: j;
|
||
}
|
||
throw new SyntaxError('JSON.parse');
|
||
};
|
||
|
||
|
||
if (typeof Sys !== 'undefined' && Sys.Application && Sys.Application.notifyScriptLoaded) {
|
||
Sys.Application.notifyScriptLoaded();
|
||
}
|
||
|
||
})();
|