Merge lp:~openerp-dev/openerp-web/trunk-cal-jke into lp:openerp-web

Proposed by Antony Lesuisse (OpenERP)
Status: Merged
Merged at revision: 3913
Proposed branch: lp:~openerp-dev/openerp-web/trunk-cal-jke
Merge into: lp:openerp-web
Diff against target: 27283 lines (+9062/-17740)
51 files modified
addons/web/static/src/js/view_form.js (+35/-17)
addons/web/static/src/js/views.js (+1/-0)
addons/web_calendar/__openerp__.py (+6/-8)
addons/web_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler.css (+0/-5)
addons/web_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler_dhx_terrace.css (+0/-5)
addons/web_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler_glossy.css (+0/-5)
addons/web_calendar/static/lib/dhtmlxScheduler/license.txt (+0/-228)
addons/web_calendar/static/lib/dhtmlxScheduler/readme.txt (+0/-6)
addons/web_calendar/static/lib/dhtmlxScheduler/sources/dhtmlxscheduler.css (+0/-1419)
addons/web_calendar/static/lib/dhtmlxScheduler/sources/dhtmlxscheduler.js (+0/-4806)
addons/web_calendar/static/lib/dhtmlxScheduler/sources/dhtmlxscheduler_dhx_terrace.css (+0/-2018)
addons/web_calendar/static/lib/dhtmlxScheduler/sources/dhtmlxscheduler_glossy.css (+0/-1715)
addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/dhtmlxscheduler_active_links.js (+0/-28)
addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/dhtmlxscheduler_agenda_view.js (+0/-120)
addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/dhtmlxscheduler_all_timed.js (+0/-133)
addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/dhtmlxscheduler_collision.js (+0/-119)
addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/dhtmlxscheduler_cookie.js (+0/-42)
addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/dhtmlxscheduler_dhx_terrace.js (+0/-90)
addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/dhtmlxscheduler_editors.js (+0/-142)
addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/dhtmlxscheduler_expand.js (+0/-74)
addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/dhtmlxscheduler_grid_view.js (+0/-470)
addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/dhtmlxscheduler_html_templates.js (+0/-19)
addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/dhtmlxscheduler_key_nav.js (+0/-79)
addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/dhtmlxscheduler_limit.js (+0/-831)
addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/dhtmlxscheduler_map_view.js (+0/-490)
addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/dhtmlxscheduler_minical.js (+0/-435)
addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/dhtmlxscheduler_multiselect.js (+0/-66)
addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/dhtmlxscheduler_multisource.js (+0/-26)
addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/dhtmlxscheduler_offline.js (+0/-79)
addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/dhtmlxscheduler_outerdrag.js (+0/-51)
addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/dhtmlxscheduler_pdf.js (+0/-276)
addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/dhtmlxscheduler_readonly.js (+0/-144)
addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/dhtmlxscheduler_recurring.js (+0/-750)
addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/dhtmlxscheduler_serialize.js (+0/-77)
addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/dhtmlxscheduler_timeline.js (+0/-963)
addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/dhtmlxscheduler_tooltip.js (+0/-172)
addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/dhtmlxscheduler_treetimeline.js (+0/-292)
addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/dhtmlxscheduler_units.js (+0/-226)
addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/dhtmlxscheduler_url.js (+0/-34)
addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/dhtmlxscheduler_week_agenda.js (+0/-256)
addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/dhtmlxscheduler_year_view.js (+0/-276)
addons/web_calendar/static/lib/dhtmlxScheduler/whatsnew.txt (+0/-48)
addons/web_calendar/static/lib/fullcalendar/css/fullcalendar.css (+608/-0)
addons/web_calendar/static/lib/fullcalendar/js/fullcalendar.js (+6110/-0)
addons/web_calendar/static/lib/fullcalendar/js/gcal.js (+107/-0)
addons/web_calendar/static/lib/fullcalendar/license.txt (+20/-0)
addons/web_calendar/static/src/css/Makefile (+4/-0)
addons/web_calendar/static/src/css/web_fullcalendar.css (+272/-44)
addons/web_calendar/static/src/css/web_fullcalendar.sass (+413/-41)
addons/web_calendar/static/src/js/web_calendar.js (+1413/-583)
addons/web_calendar/static/src/xml/web_fullcalendar.xml (+73/-32)
To merge this branch: bzr merge lp:~openerp-dev/openerp-web/trunk-cal-jke
Reviewer Review Type Date Requested Status
Christophe Simonis (OpenERP) Needs Fixing
Review via email: mp+199809@code.launchpad.net
To post a comment you must log in.
3890. By jke-openerp

[FIX] Fixe according to aprs review

3891. By jke-openerp

[MERGE] Merge with trunk

3892. By jke-openerp

[TYPO] cleaning

3893. By jke-openerp

[IMP] Remove unused library jquery.ui.touch-punch

3894. By jke-openerp

[Merge] Merge with trunk

Revision history for this message
Christophe Simonis (OpenERP) (kangol) wrote :

Seems you forgot to add the fullcalendar library

review: Needs Fixing
Revision history for this message
jke-openerp (jke-openerp) wrote :

> Seems you forgot to add the fullcalendar library

Library FullCalendar is well there : http://bazaar.launchpad.net/~openerp-dev/openerp-web/trunk-cal-jke/view/head:/addons/web_calendar/static/lib/fullcalendar/js/fullcalendar.js

But AL would like that I move contact model (Favorite CoWorker) from Web to Addons before the merge. I try to do it this end of week ...

3895. By jke-openerp

[IMP] Improve according first review CHS

3896. By jke-openerp

[REF] Refactoring according to the review of CHS

3897. By jke-openerp

[MERGE] Merge with trunk

3898. By jke-openerp

[MERGE] Merge with trunk

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'addons/web/static/src/js/view_form.js'
2--- addons/web/static/src/js/view_form.js 2013-12-19 13:40:55 +0000
3+++ addons/web/static/src/js/view_form.js 2014-01-14 13:58:12 +0000
4@@ -4261,6 +4261,7 @@
5
6 instance.web.form.FieldMany2ManyTags = instance.web.form.AbstractField.extend(instance.web.form.CompletionFieldMixin, instance.web.form.ReinitializeFieldMixin, {
7 template: "FieldMany2ManyTags",
8+ tag_template: "FieldMany2ManyTag",
9 init: function() {
10 this._super.apply(this, arguments);
11 instance.web.form.CompletionFieldMixin.init.call(this);
12@@ -4268,13 +4269,9 @@
13 this._display_orderer = new instance.web.DropMisordered();
14 this._drop_shown = false;
15 },
16- initialize_content: function() {
17- if (this.get("effective_readonly"))
18- return;
19+ initialize_texttext: function(){
20 var self = this;
21- var ignore_blur = false;
22- self.$text = this.$("textarea");
23- self.$text.textext({
24+ return {
25 plugins : 'tags arrow autocomplete',
26 autocomplete: {
27 render: function(suggestion) {
28@@ -4325,7 +4322,15 @@
29 },
30 },
31 },
32- }).bind('getSuggestions', function(e, data) {
33+ }
34+ },
35+ initialize_content: function() {
36+ if (this.get("effective_readonly"))
37+ return;
38+ var self = this;
39+ var ignore_blur = false;
40+ self.$text = this.$("textarea");
41+ self.$text.textext(self.initialize_texttext()).bind('getSuggestions', function(e, data) {
42 var _this = this;
43 var str = !!data ? data.query || '' : '';
44 self.get_search_result(str).done(function(result) {
45@@ -4373,6 +4378,24 @@
46 get_search_blacklist: function() {
47 return this.get("value");
48 },
49+ map_tag: function(data){
50+ return _.map(data, function(el) {return {name: el[1], id:el[0]};})
51+ },
52+ get_render_data: function(ids){
53+ var self = this;
54+ var dataset = new instance.web.DataSetStatic(this, this.field.relation, self.build_context());
55+ return dataset.name_get(ids);
56+ },
57+ render_tag: function(data) {
58+ var self = this;
59+ if (! self.get("effective_readonly")) {
60+ self.tags.containerElement().children().remove();
61+ self.$('textarea').css("padding-left", "3px");
62+ self.tags.addTags(self.map_tag(data));
63+ } else {
64+ self.$el.html(QWeb.render(self.tag_template, {elements: data}));
65+ }
66+ },
67 render_value: function() {
68 var self = this;
69 var dataset = new instance.web.DataSetStatic(this, this.field.relation, self.build_context());
70@@ -4385,17 +4408,12 @@
71 indexed[el[0]] = el;
72 });
73 data = _.map(values, function(el) { return indexed[el]; });
74- if (! self.get("effective_readonly")) {
75- self.tags.containerElement().children().remove();
76- self.$('textarea').css("padding-left", "3px");
77- self.tags.addTags(_.map(data, function(el) {return {name: el[1], id:el[0]};}));
78- } else {
79- self.$el.html(QWeb.render("FieldMany2ManyTag", {elements: data}));
80- }
81- };
82+ self.render_tag(data);
83+ }
84 if (! values || values.length > 0) {
85- this._display_orderer.add(dataset.name_get(values)).done(handle_names);
86- } else {
87+ this._display_orderer.add(self.get_render_data(values)).done(handle_names);
88+ }
89+ else{
90 handle_names([]);
91 }
92 },
93
94=== modified file 'addons/web/static/src/js/views.js'
95--- addons/web/static/src/js/views.js 2013-12-18 16:50:33 +0000
96+++ addons/web/static/src/js/views.js 2014-01-14 13:58:12 +0000
97@@ -331,6 +331,7 @@
98 action_menu_id: null,
99 additional_context: {},
100 });
101+
102 if (action === false) {
103 action = { type: 'ir.actions.act_window_close' };
104 } else if (_.isString(action) && instance.web.client_actions.contains(action)) {
105
106=== modified file 'addons/web_calendar/__openerp__.py'
107--- addons/web_calendar/__openerp__.py 2012-10-24 16:05:25 +0000
108+++ addons/web_calendar/__openerp__.py 2014-01-14 13:58:12 +0000
109@@ -8,18 +8,16 @@
110 """,
111 'version': '2.0',
112 'depends': ['web'],
113+ 'data' : [],
114 'js': [
115- 'static/lib/dhtmlxScheduler/sources/dhtmlxscheduler.js',
116- 'static/lib/dhtmlxScheduler/sources/ext/dhtmlxscheduler_minical.js',
117- 'static/src/js/calendar.js'
118+ 'static/lib/fullcalendar/js/fullcalendar.js',
119+ 'static/src/js/*.js'
120 ],
121 'css': [
122- #'static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler.css',
123- #'static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler_dhx_terrace.css',
124- 'static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler_glossy.css',
125- 'static/src/css/web_calendar.css'
126+ 'static/lib/fullcalendar/css/*.css',
127+ 'static/src/css/*.css'
128 ],
129- 'qweb' : [
130+ 'qweb': [
131 'static/src/xml/*.xml',
132 ],
133 'auto_install': True
134
135=== removed directory 'addons/web_calendar/static/lib/dhtmlxScheduler'
136=== removed directory 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase'
137=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler.css'
138--- addons/web_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler.css 2012-10-24 13:48:59 +0000
139+++ addons/web_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler.css 1970-01-01 00:00:00 +0000
140@@ -1,5 +0,0 @@
141-/*
142-This software is allowed to use under GPL or you need to obtain Commercial or Enterise License
143-to use it in non-GPL project. Please contact sales@dhtmlx.com for details
144-*/
145-.dhtmlx_message_area{position:fixed;right:5px;width:250px;z-index:1000;}.dhtmlx-info{min-width:120px;padding:4px 4px 4px 20px;font-family:Tahoma;z-index:10000;margin:5px;margin-bottom:10px;-webkit-transition:all .5s ease;-moz-transition:all .5s ease;-o-transition:all .5s ease;transition:all .5s ease;}.dhtmlx-info.hidden{height:0;padding:0;border-width:0;margin:0;overflow:hidden;}.dhtmlx_modal_box{overflow:hidden;display:inline-block;min-width:300px;width:300px;text-align:center;position:fixed;background-color:#fff;background:-webkit-linear-gradient(top,#fff 1%,#d0d0d0 99%);background:-moz-linear-gradient(top,#fff 1%,#d0d0d0 99%);box-shadow:0 0 14px #888;font-family:Tahoma;z-index:20000;border-radius:6px;border:1px solid #fff;}.dhtmlx_popup_title{border-top-left-radius:5px;border-top-right-radius:5px;border-width:0;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAoCAMAAAAIaGBFAAAAhFBMVEVwcHBubm5sbGxqampoaGhmZmZlZWVjY2NhYWFfX19dXV1bW1taWlpYWFhWVlZUVFRSUlJRUVFPT09NTU1LS0tJSUlHR0dGRkZERERCQkJAQEA+Pj49PT09PT0+Pj5AQEBBQUFDQ0NERERGRkZHR0dJSUlKSkpMTExMTEw5OTk5OTk5OTkny8YEAAAAQklEQVQImQXBCRJCAAAAwKVSQqdyjSPXNP7/QLsIhA6OTiJnF7GrRCpzc/fw9PKW+/gqlCq1RqvTG/yMJrPF6m/bAVEhAxxnHG0oAAAAAElFTkSuQmCC);background-image:-webkit-linear-gradient(top,#707070 1%,#3d3d3d 70%,#4c4c4c 97%,#393939 97%);background-image:-moz-linear-gradient(top,#707070 1%,#3d3d3d 70%,#4c4c4c 97%,#393939 97%);}.dhtmlx-info,.dhtmlx_popup_button,.dhtmlx_button{user-select:none;-webkit-user-select:none;-moz-user-select:-moz-none;cursor:pointer;}.dhtmlx_popup_text{overflow:hidden;}.dhtmlx_popup_controls{border-radius:6px;padding:5px;}.dhtmlx_popup_button,.dhtmlx_button{height:30px;line-height:30px;display:inline-block;margin:0 5px;border-radius:6px;color:#FFF;}.dhtmlx_popup_button{min-width:120px;}div.dhx_modal_cover{background-color:#000;cursor:default;filter:alpha(opacity = 20);opacity:.2;position:fixed;z-index:19999;left:0;top:0;width:100%;height:100%;border:none;zoom:1;}.dhtmlx-info img,.dhtmlx_modal_box img{float:left;margin-right:20px;}.dhtmlx-alert-error .dhtmlx_popup_title,.dhtmlx-confirm-error .dhtmlx_popup_title{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAsCAIAAAArRUU2AAAATklEQVR4nIWLuw2AMBBDjVuQiBT2oWbRDATrnB0KQOJoqPzRe3BrHI6dcBASYREKovtK6/6DsDOX+stN+3H1YX9ciRgnYq5EWYhS2dftBIuLT4JyIrPCAAAAAElFTkSuQmCC);}.dhtmlx-alert-error,.dhtmlx-confirm-error{border:1px solid #f00;}.dhtmlx_button,.dhtmlx_popup_button{box-shadow:0 0 4px #888;border:1px solid #838383;}.dhtmlx_button input,.dhtmlx_popup_button div{border:1px solid #FFF;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAeCAMAAADaS4T1AAAAYFBMVEVwcHBtbW1ra2toaGhmZmZjY2NhYWFeXl5cXFxaWlpXV1dVVVVSUlJQUFBNTU1LS0tJSUlGRkZERERBQUE/Pz88PDw9PT0+Pj5AQEBCQkJDQ0NFRUVHR0dISEhKSkpMTEzqthaMAAAAMklEQVQImQXBhQ2AMAAAsOIMlwWH/8+kRSKVyRVKlVrQaHV6g9FktlhFm93hdLk9Xt8PIfgBvdUqyskAAAAASUVORK5CYII=);background-image:-webkit-linear-gradient(top,#707070 1%,#3d3d3d 70%,#4c4c4c 99%);background-image:-moz-linear-gradient(top,#707070 1%,#3d3d3d 70%,#4c4c4c 99%);border-radius:6px;font-size:15px;font-weight:normal;-moz-box-sizing:content-box;box-sizing:content-box;color:#fff;padding:0;margin:0;vertical-align:top;height:28px;line-height:28px;}.dhtmlx_button input:focus,.dhtmlx_button input:active,.dhtmlx_popup_button div:active,.dhtmlx_popup_button div:focus{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAeCAMAAADaS4T1AAAAXVBMVEVwcHBubm5tbW1sbGxra2tpaWloaGhnZ2dmZmZlZWVjY2NiYmJhYWFgYGBfX19dXV1cXFxbW1taWlpZWVlXV1dWVlZVVVVUVFRTU1NRUVFQUFBPT09OTk5NTU1LS0tT9SY0AAAAMUlEQVQImQXBhQGAMAAAIGxnx2z9/00BiVQmVyhVakGj1ekNRpPZYhVtdofT5fZ4fT8hpwG05JjexgAAAABJRU5ErkJggg==);background-image:-webkit-linear-gradient(top,#707070 1%,#4c4c4c 99%);background-image:-moz-linear-gradient(top,#707070 1%,#4c4c4c 99%);}.dhtmlx_popup_title{color:#fff;text-shadow:1px 1px #000;height:40px;line-height:40px;font-size:20px;}.dhtmlx_popup_text{margin:15px 15px 5px 15px;font-size:14px;color:#000;min-height:30px;border-radius:6px;}.dhtmlx-info,.dhtmlx-error{font-size:14px;color:#000;box-shadow:0 0 10px #888;padding:0;background-color:#FFF;border-radius:3px;border:1px solid #fff;}.dhtmlx-info div{padding:5px 10px 5px 10px;background-color:#fff;border-radius:3px;border:1px solid #B8B8B8;}.dhtmlx-error{background-color:#d81b1b;border:1px solid #ff3c3c;box-shadow:0 0 10px #000;}.dhtmlx-error div{background-color:#d81b1b;border:1px solid #940000;color:#FFF;}.dhx_cal_container{background-color:#C2D5FC;font-family:Tahoma;font-size:8pt;position:relative;overflow:hidden;}.dhx_cal_container div{-moz-user-select:none;-moz-user-select:-moz-none;}.dhx_cal_navline{height:20px;position:absolute;z-index:3;width:750px;color:#2F3A48;}.dhx_cal_navline div{position:absolute;top:2px;white-space:nowrap;}.dhx_cal_navline .dhx_cal_date{font-weight:600;left:210px;padding-top:1px;}.dhx_cal_button .dhx_left_bg{width:1px;overflow:hidden;height:17px;z-index:20;top:0;}.dhx_cal_prev_button{background-image:url(imgs/buttons.png);background-position:0 0;width:29px;height:17px;left:50px;cursor:pointer;}.dhx_cal_next_button{background-image:url(imgs/buttons.png);background-position:-30px 0;width:29px;height:17px;left:80px;cursor:pointer;}.dhx_cal_today_button{background-image:url(imgs/buttons.png);background-position:-60px 0;width:75px;height:17px;left:112px;cursor:pointer;text-align:center;text-decoration:underline;}.dhx_cal_tab{width:59px;height:19px;text-align:center;text-decoration:underline;padding-top:2px;cursor:pointer;background-color:#D8E1EA;-webkit-border-top-left-radius:4px;-webkit-border-top-right-radius:4px;-moz-border-radius-topleft:4px;-moz-border-radius-topright:4px;border-top-left-radius:4px;border-top-right-radius:4px;}.dhx_cal_tab.active{text-decoration:none;cursor:default;font-weight:bold;border:1px dotted #586A7E;border-bottom:0;background-color:#C2D5FC;}.dhx_cal_header{position:absolute;left:10px;top:23px;width:750px;border-top:1px dotted #8894A3;border-right:1px dotted #8894A3;z-index:2;overflow:hidden;color:#2F3A48;}.dhx_cal_data{border-top:1px dotted #8894A3;position:absolute;top:44px;width:600px;overflow-y:auto;overflow-x:hidden;}.dhx_scale_bar{position:absolute;text-align:center;background-color:#C2D5FC;padding-top:3px;border-left:1px dotted #586A7E;}.dhx_scale_holder{position:absolute;border-right:1px dotted #586A7E;background-image:url(imgs/databg.png);}.dhx_scale_holder_now{position:absolute;border-right:1px dotted #586A7E;background-image:url(imgs/databg_now.png);}.dhx_scale_hour{height:41px;width:50px;border-bottom:1px dotted #8894A3;background-color:#C2D5FC;text-align:center;line-height:40px;color:#586A7E;overflow:hidden;}.dhx_month_head{background-color:#EBEFF4;color:#2F3A48;border-right:1px dotted #586A7E;height:18px;padding-right:5px;padding-top:3px;text-align:right;}.dhx_month_body{border-right:1px dotted #586A7E;border-bottom:1px dotted #586A7E;background-color:#FFF;}.dhx_now .dhx_month_body{background-color:#E2EDFF;}.dhx_after .dhx_month_body,.dhx_before .dhx_month_body{background-color:#ECECEC;}.dhx_after .dhx_month_head,.dhx_before .dhx_month_head{background-color:#E2E3E6;color:#94A6BB;}.dhx_now .dhx_month_head{background-color:#D1DEF4;font-weight:bold;}.dhx_cal_drag{position:absolute;z-index:9999;background-color:#FFE763;border:1px solid #B7A543;opacity:.5;filter:alpha(opacity=50);}.dhx_loading{position:absolute;width:128px;height:15px;background-image:url(imgs/loading.gif);z-index:9999;}.dhx_multi_day_icon,.dhx_multi_day{background-color:#E1E6FF;background-repeat:no-repeat;border-right:1px dotted #8894A3;}.dhx_multi_day{position:absolute;border-top:1px dotted #8894A3;}.dhx_multi_day_icon,.dhx_multi_day_icon_small{background-position:center center;background-color:#E1E6FF;background-repeat:no-repeat;border-bottom:1px dotted #8894A3;border-right:1px dotted #8894A3;}.dhx_multi_day_icon{background-image:url(imgs/clock_big.gif);}.dhx_multi_day_icon_small{background-image:url(imgs/clock_small.gif);}.dhtmlxLayoutPolyContainer_dhx_skyblue .dhx_cal_container{background-color:#d0e5ff;}.dhx_cal_event .dhx_header,.dhx_cal_event .dhx_title,.dhx_cal_event .dhx_body,.dhx_cal_event .dhx_footer{background-color:#FFE763;border:1px solid #B7A543;color:#887A2E;overflow:hidden;width:100%;font-family:Tahoma;font-size:8pt;}.dhx_move_denied .dhx_cal_event .dhx_header,.dhx_move_denied .dhx_cal_event .dhx_title{cursor:default;}.dhx_cal_event .dhx_header{height:1px;margin-left:1px;border-width:1px 1px 0 1px;cursor:pointer;}.dhx_cal_event .dhx_title{height:12px;border-width:0 1px 1px 1px;border-bottom-style:dotted;font-size:7pt;font-weight:bold;text-align:center;background-position:right;background-repeat:no-repeat;cursor:pointer;}.dhx_cal_event .dhx_body,.dhx_cal_event.dhx_cal_select_menu .dhx_body{border-width:0 1px 1px 1px;padding:5px;}.dhx_resize_denied{cursor:default!important;}.dhx_cal_event .dhx_event_resize{cursor:s-resize;}.dhx_cal_event .dhx_footer,.dhx_cal_event .dhx_select_menu_footer{height:1px;margin-left:2px;border-width:0 1px 1px 1px;}.dhx_cal_event_line{background-color:#FFE763;border:1px solid #B7A543;border-radius:3px;font-family:Tahoma;font-size:8pt;height:13px;padding-left:10px;color:#887A2E;cursor:pointer;overflow:hidden;}.dhx_cal_event_clear{font-family:Tahoma;font-size:8pt;height:13px;padding-left:2px;color:#887A2E;white-space:nowrap;overflow:hidden;cursor:pointer;}.dhx_in_move{background-color:#FFFF80;}div.dhx_cal_editor{background-color:#FFE763;border:1px solid #B7A543;border-top-style:dotted;z-index:999;position:absolute;overflow:hidden;}textarea.dhx_cal_editor{width:100%;height:100%;border:0 solid black;margin:none;padding:none;overflow:auto;}div.dhx_menu_head{background-image:url(imgs/controls.gif);background-position:0 -43px;width:10px;height:10px;margin-left:5px;margin-top:1px;border:none;cursor:default;}div.dhx_menu_icon{background-image:url(imgs/controls.gif);width:20px;height:20px;margin-left:-5px;margin-top:0;border:none;cursor:pointer;}div.icon_details{background-position:0 0;}div.icon_edit{background-position:-22px 0;}div.icon_save{background-position:-84px -1px;}div.icon_cancel{background-position:-62px 0;}div.icon_delete{background-position:-42px 0;}.dhx_unselectable,.dhx_unselectable div{-webkit-user-select:none;-moz-user-select:none;-moz-user-select:-moz-none;}.dhx_cal_light{background-color:#FFE763;border-radius:5px;font-family:Tahoma;font-size:8pt;border:1px solid #B7A64B;color:#887A2E;position:absolute;z-index:10001;width:580px;height:300px;box-shadow:5px 5px 5px #888;}.dhx_cal_light_wide{width:650px;}.dhx_mark{position:relative;top:3px;background-image:url('./imgs/controls.gif');background-position:0 -43px;padding-left:10px;}.dhx_ie6 .dhx_mark{background-position:6px -41px;}.dhx_cal_light select{font-family:Tahoma;font-size:8pt;color:#887A2E;padding:2px;margin:0;}.dhx_cal_ltitle{padding:2px 0 2px 5px;overflow:hidden;white-space:nowrap;}.dhx_cal_ltitle span{white-space:nowrap;}.dhx_cal_lsection{background-color:#DBCF8C;color:#FFF4B5;font-weight:bold;padding:5px 0 3px 10px;}.dhx_section_time{background-color:#DBCF8C;white-space:nowrap;}.dhx_cal_lsection .dhx_fullday{float:right;margin-right:5px;color:#887A2E;font-size:12px;font-weight:normal;line-height:20px;vertical-align:top;cursor:pointer;}.dhx_cal_lsection{font-size:18px;font-family:Arial;}.dhx_cal_ltext{padding:2px 0 2px 10px;overflow:hidden;}.dhx_cal_ltext textarea{background-color:#FFF4B5;overflow:auto;border:none;color:#887A2E;height:100%;width:100%;outline:none!important;resize:none;}.dhx_time{font-weight:bold;}.dhx_cal_light .dhx_title{padding-left:10px;}.dhx_cal_larea{border:1px solid #DCC43E;background-color:#FFF4B5;overflow:hidden;margin-left:3px;width:572px;height:1px;}.dhx_btn_set{padding:5px 10px 0 10px;float:left;}.dhx_btn_set div{float:left;height:21px;line-height:21px;vertical-align:middle;cursor:pointer;}.dhx_save_btn{background-image:url('./imgs/controls.gif');background-position:-84px 0;width:21px;}.dhx_cancel_btn{background-image:url('./imgs/controls.gif');background-position:-63px 0;width:20px;}.dhx_delete_btn{background-image:url('./imgs/controls.gif');background-position:-42px 0;width:20px;}.dhx_cal_cover{width:100%;height:100%;position:absolute;z-index:10000;top:0;left:0;background-color:black;opacity:.1;filter:alpha(opacity=10);}.dhx_custom_button{padding:0 3px 0 3px;color:#887A2E;font-family:Tahoma;font-size:8pt;background-color:#FFE763;font-weight:normal;margin-right:5px;margin-top:0;cursor:pointer;}.dhx_custom_button div{cursor:pointer;float:left;height:21px;line-height:21px;vertical-align:middle;}.dhx_cal_light_wide .dhx_cal_larea{border-top-width:0;}.dhx_cal_light_wide .dhx_cal_lsection{border:0;float:left;text-align:right;width:100px;height:20px;font-size:16px;padding:5px 0 0 10px;}.dhx_cal_light_wide .dhx_wrap_section{border-top:1px solid #DBCF8C;position:relative;background-color:#DBCF8C;overflow:hidden;}.dhx_cal_light_wide .dhx_section_time{padding-top:2px!important;height:20px!important;}.dhx_section_time{text-align:center;}.dhx_cal_light_wide .dhx_cal_larea{width:730px;}.dhx_cal_light_wide{width:738px;}.dhx_cal_light_wide .dhx_section_time{background:transparent;}.dhx_cal_light_wide .dhx_cal_checkbox label{padding-left:0;}.dhx_cal_wide_checkbox input{margin-top:8px;margin-left:14px;}.dhx_cal_light input{font-family:Tahoma;font-size:8pt;color:#887A2E;}.dhx_cal_light_wide .dhx_cal_lsection .dhx_fullday{float:none;margin-right:0;color:#FFF4B5;font-weight:bold;font-size:16px;font-family:Arial;cursor:pointer;}.dhx_custom_button{float:right;height:21px;width:90px;-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px;}.dhx_cal_light_wide .dhx_custom_button{position:absolute;top:0;right:0;margin-top:2px;}.dhx_cal_light_wide .dhx_repeat_right{margin-right:55px;}.dhx_minical_popup{position:absolute;z-index:10100;width:251px;height:175px;}.dhx_scale_bar_header{position:absolute;border-bottom:1px dotted #8894A3;width:100%;}.dhx_expand_icon{position:absolute;top:0;right:0;background-image:url(./imgs/collapse_expand_icon.gif);width:18px;height:18px;cursor:pointer;background-position:0 18px;z-index:16;}.dhx_scheduler_agenda .dhx_cal_data{background-image:url(./imgs/databg.png);}.dhx_agenda_area{width:100%;overflow-y:auto;background-image:url(./imgs/databg.png);}.dhx_agenda_line{height:21px;clear:both;overflow:hidden;}.dhx_agenda_line div{float:left;width:188px;border-right:1px dotted #8894A3;text-align:center;line-height:21px;overflow:hidden;}.dhx_agenda_area .dhx_agenda_line div{border-right:0 dotted #8894A3;}.dhx_v_border{position:absolute;left:187px;top:0;border-right:1px dotted #8894A3;width:1px;height:100%;}.dhx_agenda_line .dhx_event_icon{width:20px;border-width:0;background:url(./imgs/icon.png) no-repeat;background-position:5px 4px;cursor:pointer;}.dhx_agenda_line span{padding-left:5px;line-height:21px;}.dhx_year_body{border-left:1px dotted #586A7E;}.dhx_year_week{position:relative;}.dhx_scale_bar_last{border-right:1px dotted #586A7E;}.dhx_year_month{height:18px;padding-top:3px;border:1px dotted #586A7E;text-align:center;vertical-align:middle;}.dhx_year_body .dhx_before .dhx_month_head,.dhx_year_body .dhx_after .dhx_month_head,.dhx_year_body .dhx_before .dhx_month_head a,.dhx_year_body .dhx_after .dhx_month_head a{color:#E2E3E6!important;}.dhx_year_body .dhx_month_body{height:0;overflow:hidden;}.dhx_month_head.dhx_year_event{background-color:#FFE763;}.dhx_year_body .dhx_before .dhx_month_head,.dhx_year_body .dhx_after .dhx_month_head{cursor:default;}.dhx_tooltip{border:1px solid #BBB;background-image:url(./imgs/databg.png);position:absolute;z-index:9998;width:300px;height:auto;font-family:Tahoma;font-size:8pt;overflow:hidden;}.dhx_tooltip_line{line-height:20px;height:20px;overflow:hidden;}.dhx_tooltip_line .dhx_event_icon{width:20px;height:20px;padding-right:10px;float:left;border-width:0;position:relative;background:url(./imgs/icon.png) no-repeat;background-position:5px 4px;cursor:pointer;}.dhx_tooltip_date{float:left;width:auto;padding-left:5px;text-align:center;}.dhx_text_disabled{color:#887A2E;font-family:Tahoma;font-size:8pt;}.dhx_mini_calendar{-moz-box-shadow:5px 5px 5px #888;-khtml-box-shadow:5px 5px 5px #888;}.dhx_mini_calendar .dhx_month_head{cursor:pointer;}.dhx_mini_calendar .dhx_calendar_click{background-color:#C2D5FC;}.dhx_cal_navline div.dhx_minical_icon{width:18px;height:18px;left:190px;top:1px;cursor:pointer;background-image:url(./imgs/calendar.gif);}.dhx_matrix_scell{height:100%;}.dhx_matrix_cell,.dhx_matrix_scell{overflow:hidden;text-align:center;vertical-align:middle;border-bottom:1px dotted #8894A3;border-right:1px dotted #8894A3;}.dhx_matrix_cell{background-color:white;}.dhx_matrix_line{overflow:hidden;}.dhx_matrix_cell div,.dhx_matrix_scell div{overflow:hidden;text-align:center;height:auto;}.dhx_cal_lsection .dhx_readonly{font-size:9pt;font-size:8pt;padding:2px;color:#887A2E;}.dhx_cal_event_line .dhx_event_resize{cursor:w-resize;background:url(./imgs/resize_dots.png) repeat-y;position:absolute;top:0;width:4px;}.dhx_event_resize_start{left:0;}.dhx_event_resize_end{right:0;}.dhx_matrix_scell.folder,.dhx_data_table.folder .dhx_matrix_cell{background-color:#969394;cursor:pointer;}.dhx_matrix_scell .dhx_scell_level0{padding-left:5px;}.dhx_matrix_scell .dhx_scell_level1{padding-left:20px;}.dhx_matrix_scell .dhx_scell_level2{padding-left:35px;}.dhx_matrix_scell .dhx_scell_level3{padding-left:50px;}.dhx_matrix_scell .dhx_scell_level4{padding-left:65px;}.dhx_matrix_scell.folder{font-weight:bold;text-align:left;}.dhx_matrix_scell.folder .dhx_scell_expand{float:left;width:10px;padding-right:3px;}.dhx_matrix_scell.folder .dhx_scell_name{float:left;width:auto;}.dhx_matrix_scell.item .dhx_scell_name{padding-left:15px;text-align:left;}.dhx_data_table.folder .dhx_matrix_cell{border-right:0;}.dhx_section_timeline{overflow:hidden;padding:4px 0 2px 10px;}.dhx_section_timeline select{width:552px;}.dhx_map_area{width:100%;height:100%;overflow-y:auto;overflow-x:hidden;background-image:url(./imgs/databg.png);}.dhx_map_line .dhx_event_icon{width:20px;border-width:0;background:url(./imgs/icon.png) no-repeat;background-position:5px 4px;cursor:pointer;}.dhx_map_line{height:21px;clear:both;overflow:hidden;}.dhx_map{position:absolute;}.dhx_map_line div{float:left;border-right:1px dotted #8894A3;text-align:center;line-height:21px;overflow:hidden;}.dhx_map_line .headline_description{float:left;border-right:1px dotted #8894A3;text-align:center;line-height:21px;overflow:hidden;}.dhx_map_line .dhx_map_description{float:left;border-right:0 dotted #8894A3;text-align:center;line-height:21px;overflow:hidden;}.dhx_map_line .headline_date,.dhx_map_line .headline_description{border-left:0;}.dhx_map_line .line_description{float:left;border-right:1px dotted #8894A3;text-align:left;padding-left:5px;line-height:21px;overflow:hidden;}.dhx_map_line.highlight{background-color:#C4C5CC;}.dhx_map_area .dhx_map_line div{border-right:0 dotted #8894A3;}.dhtmlXTooltip.tooltip{-moz-box-shadow:3px 3px 3px #888;-webkit-box-shadow:3px 3px 3px #888;-o-box-shadow:3px 3px 3px #888;box-shadow:3px 3px 3px #888;filter:progid:DXImageTransform.Microsoft.Shadow(color='#888888',Direction=135,Strength=5);background-color:white;border-left:1px dotted #887A2E;border-top:1px dotted #887A2E;color:#887A2E;cursor:default;padding:10px;position:absolute;z-index:500;}.dhx_cal_checkbox label{padding-left:5px;}.dhx_cal_light .radio{padding:2px 0 2px 10px;}.dhx_cal_light .radio input,.dhx_cal_light .radio label{line-height:15px;}.dhx_cal_light .radio input{vertical-align:middle;margin:0;padding:0;}.dhx_cal_light .radio label{vertical-align:middle;padding-right:10px;}.dhx_cal_light .combo{padding:4px;}.dhx_cal_light_wide .dhx_combo_box{width:608px!important;left:10px;}.dhx_wa_column{float:left;}.dhx_wa_column_last .dhx_wa_day_cont{border-left:1px dotted #8894A3;}.dhx_wa_scale_bar{font-family:Tahoma;padding-left:10px;font-size:11px;border-top:1px dotted #8894A3;border-bottom:1px dotted #8894A3;}.dhx_wa_day_data{background-color:#FCFEFC;overflow-y:auto;}.dhx_wa_ev_body{border-bottom:1px dotted #789;font-size:12px;padding:5px 0 5px 7px;}.dhx_wa_dnd{font-family:Tahoma;position:absolute;padding-right:7px;color:#887AE2!important;background-color:#FFE763!important;border:1px solid #B7A543;}.dhx_cal_event_selected{background-color:#9cc1db;color:white;}.dhx_second_scale_bar{border-bottom:1px dotted #586A7E;padding-top:2px;}.dhx_cal_header div div{border-left:1px dotted #8894A3;}.dhx_grid_area{width:100%;height:100%;overflow-y:auto;background-color:#FCFEFC;}.dhx_grid_area table{border-collapse:collapse;border-spacing:0;width:100%;table-layout:fixed;}.dhx_grid_area td{table-layout:fixed;text-align:center;}.dhx_grid_line{height:21px;clear:both;overflow:hidden;}.dhx_grid_line div{float:left;cursor:default;padding-top:0;padding-bottom:0;text-align:center;line-height:21px;overflow:hidden;}.dhx_grid_area td,.dhx_grid_line div{padding-left:8px;padding-right:8px;}.dhx_grid_area tr.dhx_grid_event{height:21px;overflow:hidden;margin:0 0 1px 0;}.dhx_grid_area tr.dhx_grid_event td{border-bottom:1px solid #ECEEF4;}.dhx_grid_area tr.dhx_grid_event:nth-child(2n+1) td,.dhx_grid_area tr.dhx_grid_event:nth-child(2n) td{border-bottom-width:0;border-bottom-style:none;}.dhx_grid_area tr.dhx_grid_event:nth-child(2n){background-color:#ECEEF4;;}.dhx_grid_area .dhx_grid_dummy{table-layout:auto;margin:0!important;padding:0!important;}.dhx_grid_v_border{position:absolute;border-right:1px solid #A4BED4;width:1px;height:100%;}.dhx_grid_event_selected{background-color:#9cc1db!important;color:white!important;}.dhx_grid_sort_desc .dhx_grid_view_sort{background-position:0 -55px;}.dhx_grid_sort_asc .dhx_grid_view_sort{background-position:0 -66px;}.dhx_grid_view_sort{width:10px;height:10px;position:absolute;border:none!important;top:5px;background-repeat:no-repeat;background-image:url(./imgs/images.png);}.dhx_marked_timespan{position:absolute;width:100%;}.dhx_time_block{position:absolute;width:100%;background:silver;opacity:.4;filter:alpha(opacity=40);z-index:1;}.dhx_time_block_reset{opacity:1;filter:alpha(opacity=100);}.dhx_scheduler_month .dhx_marked_timespan{display:none;}.dhx_mini_calendar .dhx_marked_timespan{display:none;}.dhx_now_time{width:100%;border-bottom:2px dotted red;z-index:1;}.dhx_scheduler_month .dhx_now_time{border-bottom:0;border-left:2px dotted red;}.dhx_matrix_now_time{border-left:2px dotted red;z-index:1;}div.dhx_form_repeat input.radio{margin:-4px 0 0 -4px!ie;}div.dhx_form_repeat input.checkbox{margin:0 0 0 -4px!ie;}.dhx_form_repeat,.dhx_form_repeat input{padding:0;margin:0;padding-left:5px;font-family:Tahoma,Verdana;font-size:11px;line-height:24px;}.dhx_form_repeat{overflow:hidden;height:0;background-color:#FFF4B5;}.dhx_cal_light_wide .dhx_form_repeat{background-color:transparent;}.dhx_repeat_center,.dhx_repeat_left{height:115px;padding:10px 0 10px 10px;float:left;}.dhx_repeat_left{width:95px;}.dhx_repeat_center{width:335px;margin-top:12px;}.dhx_repeat_divider{float:left;height:115px;border-left:1px dotted #DCC43E;width:1px;}.dhx_repeat_right{float:right;height:115px;width:160px;padding:10px 3px 10px 10px;margin-top:7px;}input.dhx_repeat_text{height:16px;width:27px;margin:0 4px 0 4px;line-height:18px;padding:0 0 0 2px;}.dhx_form_repeat select{height:20px;width:87px;padding:0 0 0 2px;margin:0 4px 0 4px;}input.dhx_repeat_date{height:18px;width:80px;padding:0 0 0 2px;margin:0 4px 0 4px;background-repeat:no-repeat;background-position:64px 0;border:1px #7f9db9 solid;line-height:18px;}input.dhx_repeat_radio{margin-right:4px;}input.dhx_repeat_checkbox{margin:4px 4px 0 0;}.dhx_repeat_days td{padding-right:5px;}.dhx_repeat_days label{font-size:10px;}.dhx_custom_button{width:90px;-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px;}.dhx_custom_button_recurring{background-image:url(./imgs/but_repeat.gif);background-position:-5px 20px;width:20px;margin-right:10px;}.dhx_cal_light_rec{width:640px;}.dhx_cal_light_rec .dhx_cal_larea{width:632px;}.dhx_cal_light_rec.dhx_cal_light_wide{width:816px;}.dhx_cal_light_rec.dhx_cal_light_wide .dhx_cal_larea{width:808px;}
146\ No newline at end of file
147
148=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler_dhx_terrace.css'
149--- addons/web_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler_dhx_terrace.css 2012-10-24 13:48:59 +0000
150+++ addons/web_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler_dhx_terrace.css 1970-01-01 00:00:00 +0000
151@@ -1,5 +0,0 @@
152-/*
153-This software is allowed to use under GPL or you need to obtain Commercial or Enterise License
154-to use it in non-GPL project. Please contact sales@dhtmlx.com for details
155-*/
156-.dhtmlx_message_area{position:fixed;right:5px;width:250px;z-index:1000;}.dhtmlx-info{min-width:120px;padding:4px 4px 4px 20px;font-family:Tahoma;z-index:10000;margin:5px;margin-bottom:10px;-webkit-transition:all .5s ease;-moz-transition:all .5s ease;-o-transition:all .5s ease;transition:all .5s ease;}.dhtmlx-info.hidden{height:0;padding:0;border-width:0;margin:0;overflow:hidden;}.dhtmlx_modal_box{overflow:hidden;display:inline-block;min-width:300px;width:300px;text-align:center;position:fixed;background-color:#fff;background:-webkit-linear-gradient(top,#fff 1%,#d0d0d0 99%);background:-moz-linear-gradient(top,#fff 1%,#d0d0d0 99%);box-shadow:0 0 14px #888;font-family:Tahoma;z-index:20000;border-radius:6px;border:1px solid #fff;}.dhtmlx_popup_title{border-top-left-radius:5px;border-top-right-radius:5px;border-width:0;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAoCAMAAAAIaGBFAAAAhFBMVEVwcHBubm5sbGxqampoaGhmZmZlZWVjY2NhYWFfX19dXV1bW1taWlpYWFhWVlZUVFRSUlJRUVFPT09NTU1LS0tJSUlHR0dGRkZERERCQkJAQEA+Pj49PT09PT0+Pj5AQEBBQUFDQ0NERERGRkZHR0dJSUlKSkpMTExMTEw5OTk5OTk5OTkny8YEAAAAQklEQVQImQXBCRJCAAAAwKVSQqdyjSPXNP7/QLsIhA6OTiJnF7GrRCpzc/fw9PKW+/gqlCq1RqvTG/yMJrPF6m/bAVEhAxxnHG0oAAAAAElFTkSuQmCC);background-image:-webkit-linear-gradient(top,#707070 1%,#3d3d3d 70%,#4c4c4c 97%,#393939 97%);background-image:-moz-linear-gradient(top,#707070 1%,#3d3d3d 70%,#4c4c4c 97%,#393939 97%);}.dhtmlx-info,.dhtmlx_popup_button,.dhtmlx_button{user-select:none;-webkit-user-select:none;-moz-user-select:-moz-none;cursor:pointer;}.dhtmlx_popup_text{overflow:hidden;}.dhtmlx_popup_controls{border-radius:6px;padding:5px;}.dhtmlx_popup_button,.dhtmlx_button{height:30px;line-height:30px;display:inline-block;margin:0 5px;border-radius:6px;color:#FFF;}.dhtmlx_popup_button{min-width:120px;}div.dhx_modal_cover{background-color:#000;cursor:default;filter:alpha(opacity = 20);opacity:.2;position:fixed;z-index:19999;left:0;top:0;width:100%;height:100%;border:none;zoom:1;}.dhtmlx-info img,.dhtmlx_modal_box img{float:left;margin-right:20px;}.dhtmlx-alert-error .dhtmlx_popup_title,.dhtmlx-confirm-error .dhtmlx_popup_title{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAsCAIAAAArRUU2AAAATklEQVR4nIWLuw2AMBBDjVuQiBT2oWbRDATrnB0KQOJoqPzRe3BrHI6dcBASYREKovtK6/6DsDOX+stN+3H1YX9ciRgnYq5EWYhS2dftBIuLT4JyIrPCAAAAAElFTkSuQmCC);}.dhtmlx-alert-error,.dhtmlx-confirm-error{border:1px solid #f00;}.dhtmlx_button,.dhtmlx_popup_button{box-shadow:0 0 4px #888;border:1px solid #838383;}.dhtmlx_button input,.dhtmlx_popup_button div{border:1px solid #FFF;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAeCAMAAADaS4T1AAAAYFBMVEVwcHBtbW1ra2toaGhmZmZjY2NhYWFeXl5cXFxaWlpXV1dVVVVSUlJQUFBNTU1LS0tJSUlGRkZERERBQUE/Pz88PDw9PT0+Pj5AQEBCQkJDQ0NFRUVHR0dISEhKSkpMTEzqthaMAAAAMklEQVQImQXBhQ2AMAAAsOIMlwWH/8+kRSKVyRVKlVrQaHV6g9FktlhFm93hdLk9Xt8PIfgBvdUqyskAAAAASUVORK5CYII=);background-image:-webkit-linear-gradient(top,#707070 1%,#3d3d3d 70%,#4c4c4c 99%);background-image:-moz-linear-gradient(top,#707070 1%,#3d3d3d 70%,#4c4c4c 99%);border-radius:6px;font-size:15px;font-weight:normal;-moz-box-sizing:content-box;box-sizing:content-box;color:#fff;padding:0;margin:0;vertical-align:top;height:28px;line-height:28px;}.dhtmlx_button input:focus,.dhtmlx_button input:active,.dhtmlx_popup_button div:active,.dhtmlx_popup_button div:focus{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAeCAMAAADaS4T1AAAAXVBMVEVwcHBubm5tbW1sbGxra2tpaWloaGhnZ2dmZmZlZWVjY2NiYmJhYWFgYGBfX19dXV1cXFxbW1taWlpZWVlXV1dWVlZVVVVUVFRTU1NRUVFQUFBPT09OTk5NTU1LS0tT9SY0AAAAMUlEQVQImQXBhQGAMAAAIGxnx2z9/00BiVQmVyhVakGj1ekNRpPZYhVtdofT5fZ4fT8hpwG05JjexgAAAABJRU5ErkJggg==);background-image:-webkit-linear-gradient(top,#707070 1%,#4c4c4c 99%);background-image:-moz-linear-gradient(top,#707070 1%,#4c4c4c 99%);}.dhtmlx_popup_title{color:#fff;text-shadow:1px 1px #000;height:40px;line-height:40px;font-size:20px;}.dhtmlx_popup_text{margin:15px 15px 5px 15px;font-size:14px;color:#000;min-height:30px;border-radius:6px;}.dhtmlx-info,.dhtmlx-error{font-size:14px;color:#000;box-shadow:0 0 10px #888;padding:0;background-color:#FFF;border-radius:3px;border:1px solid #fff;}.dhtmlx-info div{padding:5px 10px 5px 10px;background-color:#fff;border-radius:3px;border:1px solid #B8B8B8;}.dhtmlx-error{background-color:#d81b1b;border:1px solid #ff3c3c;box-shadow:0 0 10px #000;}.dhtmlx-error div{background-color:#d81b1b;border:1px solid #940000;color:#FFF;}.dhx_cal_container{background-color:#C2D5FC;font-family:Tahoma;font-size:8pt;position:relative;overflow:hidden;}.dhx_cal_container div{-moz-user-select:none;-moz-user-select:-moz-none;}.dhx_cal_navline{height:20px;position:absolute;z-index:3;width:750px;color:#2F3A48;}.dhx_cal_navline div{position:absolute;top:2px;white-space:nowrap;}.dhx_cal_navline .dhx_cal_date{font-weight:600;left:210px;padding-top:1px;}.dhx_cal_button .dhx_left_bg{width:1px;overflow:hidden;height:17px;z-index:20;top:0;}.dhx_cal_prev_button{background-image:url(imgs/buttons.png);background-position:0 0;width:29px;height:17px;left:50px;cursor:pointer;}.dhx_cal_next_button{background-image:url(imgs/buttons.png);background-position:-30px 0;width:29px;height:17px;left:80px;cursor:pointer;}.dhx_cal_today_button{background-image:url(imgs/buttons.png);background-position:-60px 0;width:75px;height:17px;left:112px;cursor:pointer;text-align:center;text-decoration:underline;}.dhx_cal_tab{width:59px;height:19px;text-align:center;text-decoration:underline;padding-top:2px;cursor:pointer;background-color:#D8E1EA;-webkit-border-top-left-radius:4px;-webkit-border-top-right-radius:4px;-moz-border-radius-topleft:4px;-moz-border-radius-topright:4px;border-top-left-radius:4px;border-top-right-radius:4px;}.dhx_cal_tab.active{text-decoration:none;cursor:default;font-weight:bold;border:1px dotted #586A7E;border-bottom:0;background-color:#C2D5FC;}.dhx_cal_header{position:absolute;left:10px;top:23px;width:750px;border-top:1px dotted #8894A3;border-right:1px dotted #8894A3;z-index:2;overflow:hidden;color:#2F3A48;}.dhx_cal_data{border-top:1px dotted #8894A3;position:absolute;top:44px;width:600px;overflow-y:auto;overflow-x:hidden;}.dhx_scale_bar{position:absolute;text-align:center;background-color:#C2D5FC;padding-top:3px;border-left:1px dotted #586A7E;}.dhx_scale_holder{position:absolute;border-right:1px dotted #586A7E;background-image:url(imgs/databg.png);}.dhx_scale_holder_now{position:absolute;border-right:1px dotted #586A7E;background-image:url(imgs/databg_now.png);}.dhx_scale_hour{height:41px;width:50px;border-bottom:1px dotted #8894A3;background-color:#C2D5FC;text-align:center;line-height:40px;color:#586A7E;overflow:hidden;}.dhx_month_head{background-color:#EBEFF4;color:#2F3A48;border-right:1px dotted #586A7E;height:18px;padding-right:5px;padding-top:3px;text-align:right;}.dhx_month_body{border-right:1px dotted #586A7E;border-bottom:1px dotted #586A7E;background-color:#FFF;}.dhx_now .dhx_month_body{background-color:#E2EDFF;}.dhx_after .dhx_month_body,.dhx_before .dhx_month_body{background-color:#ECECEC;}.dhx_after .dhx_month_head,.dhx_before .dhx_month_head{background-color:#E2E3E6;color:#94A6BB;}.dhx_now .dhx_month_head{background-color:#D1DEF4;font-weight:bold;}.dhx_cal_drag{position:absolute;z-index:9999;background-color:#FFE763;border:1px solid #B7A543;opacity:.5;filter:alpha(opacity=50);}.dhx_loading{position:absolute;width:128px;height:15px;background-image:url(imgs/loading.gif);z-index:9999;}.dhx_multi_day_icon,.dhx_multi_day{background-color:#E1E6FF;background-repeat:no-repeat;border-right:1px dotted #8894A3;}.dhx_multi_day{position:absolute;border-top:1px dotted #8894A3;}.dhx_multi_day_icon,.dhx_multi_day_icon_small{background-position:center center;background-color:#E1E6FF;background-repeat:no-repeat;border-bottom:1px dotted #8894A3;border-right:1px dotted #8894A3;}.dhx_multi_day_icon{background-image:url(imgs/clock_big.gif);}.dhx_multi_day_icon_small{background-image:url(imgs/clock_small.gif);}.dhtmlxLayoutPolyContainer_dhx_skyblue .dhx_cal_container{background-color:#d0e5ff;}.dhx_cal_event .dhx_header,.dhx_cal_event .dhx_title,.dhx_cal_event .dhx_body,.dhx_cal_event .dhx_footer{background-color:#FFE763;border:1px solid #B7A543;color:#887A2E;overflow:hidden;width:100%;font-family:Tahoma;font-size:8pt;}.dhx_move_denied .dhx_cal_event .dhx_header,.dhx_move_denied .dhx_cal_event .dhx_title{cursor:default;}.dhx_cal_event .dhx_header{height:1px;margin-left:1px;border-width:1px 1px 0 1px;cursor:pointer;}.dhx_cal_event .dhx_title{height:12px;border-width:0 1px 1px 1px;border-bottom-style:dotted;font-size:7pt;font-weight:bold;text-align:center;background-position:right;background-repeat:no-repeat;cursor:pointer;}.dhx_cal_event .dhx_body,.dhx_cal_event.dhx_cal_select_menu .dhx_body{border-width:0 1px 1px 1px;padding:5px;}.dhx_resize_denied{cursor:default!important;}.dhx_cal_event .dhx_event_resize{cursor:s-resize;}.dhx_cal_event .dhx_footer,.dhx_cal_event .dhx_select_menu_footer{height:1px;margin-left:2px;border-width:0 1px 1px 1px;}.dhx_cal_event_line{background-color:#FFE763;border:1px solid #B7A543;border-radius:3px;font-family:Tahoma;font-size:8pt;height:13px;padding-left:10px;color:#887A2E;cursor:pointer;overflow:hidden;}.dhx_cal_event_clear{font-family:Tahoma;font-size:8pt;height:13px;padding-left:2px;color:#887A2E;white-space:nowrap;overflow:hidden;cursor:pointer;}.dhx_in_move{background-color:#FFFF80;}div.dhx_cal_editor{background-color:#FFE763;border:1px solid #B7A543;border-top-style:dotted;z-index:999;position:absolute;overflow:hidden;}textarea.dhx_cal_editor{width:100%;height:100%;border:0 solid black;margin:none;padding:none;overflow:auto;}div.dhx_menu_head{background-image:url(imgs/controls.gif);background-position:0 -43px;width:10px;height:10px;margin-left:5px;margin-top:1px;border:none;cursor:default;}div.dhx_menu_icon{background-image:url(imgs/controls.gif);width:20px;height:20px;margin-left:-5px;margin-top:0;border:none;cursor:pointer;}div.icon_details{background-position:0 0;}div.icon_edit{background-position:-22px 0;}div.icon_save{background-position:-84px -1px;}div.icon_cancel{background-position:-62px 0;}div.icon_delete{background-position:-42px 0;}.dhx_unselectable,.dhx_unselectable div{-webkit-user-select:none;-moz-user-select:none;-moz-user-select:-moz-none;}.dhx_cal_light{background-color:#FFE763;border-radius:5px;font-family:Tahoma;font-size:8pt;border:1px solid #B7A64B;color:#887A2E;position:absolute;z-index:10001;width:580px;height:300px;box-shadow:5px 5px 5px #888;}.dhx_cal_light_wide{width:650px;}.dhx_mark{position:relative;top:3px;background-image:url('./imgs/controls.gif');background-position:0 -43px;padding-left:10px;}.dhx_ie6 .dhx_mark{background-position:6px -41px;}.dhx_cal_light select{font-family:Tahoma;font-size:8pt;color:#887A2E;padding:2px;margin:0;}.dhx_cal_ltitle{padding:2px 0 2px 5px;overflow:hidden;white-space:nowrap;}.dhx_cal_ltitle span{white-space:nowrap;}.dhx_cal_lsection{background-color:#DBCF8C;color:#FFF4B5;font-weight:bold;padding:5px 0 3px 10px;}.dhx_section_time{background-color:#DBCF8C;white-space:nowrap;}.dhx_cal_lsection .dhx_fullday{float:right;margin-right:5px;color:#887A2E;font-size:12px;font-weight:normal;line-height:20px;vertical-align:top;cursor:pointer;}.dhx_cal_lsection{font-size:18px;font-family:Arial;}.dhx_cal_ltext{padding:2px 0 2px 10px;overflow:hidden;}.dhx_cal_ltext textarea{background-color:#FFF4B5;overflow:auto;border:none;color:#887A2E;height:100%;width:100%;outline:none!important;resize:none;}.dhx_time{font-weight:bold;}.dhx_cal_light .dhx_title{padding-left:10px;}.dhx_cal_larea{border:1px solid #DCC43E;background-color:#FFF4B5;overflow:hidden;margin-left:3px;width:572px;height:1px;}.dhx_btn_set{padding:5px 10px 0 10px;float:left;}.dhx_btn_set div{float:left;height:21px;line-height:21px;vertical-align:middle;cursor:pointer;}.dhx_save_btn{background-image:url('./imgs/controls.gif');background-position:-84px 0;width:21px;}.dhx_cancel_btn{background-image:url('./imgs/controls.gif');background-position:-63px 0;width:20px;}.dhx_delete_btn{background-image:url('./imgs/controls.gif');background-position:-42px 0;width:20px;}.dhx_cal_cover{width:100%;height:100%;position:absolute;z-index:10000;top:0;left:0;background-color:black;opacity:.1;filter:alpha(opacity=10);}.dhx_custom_button{padding:0 3px 0 3px;color:#887A2E;font-family:Tahoma;font-size:8pt;background-color:#FFE763;font-weight:normal;margin-right:5px;margin-top:0;cursor:pointer;}.dhx_custom_button div{cursor:pointer;float:left;height:21px;line-height:21px;vertical-align:middle;}.dhx_cal_light_wide .dhx_cal_larea{border-top-width:0;}.dhx_cal_light_wide .dhx_cal_lsection{border:0;float:left;text-align:right;width:100px;height:20px;font-size:16px;padding:5px 0 0 10px;}.dhx_cal_light_wide .dhx_wrap_section{border-top:1px solid #DBCF8C;position:relative;background-color:#DBCF8C;overflow:hidden;}.dhx_cal_light_wide .dhx_section_time{padding-top:2px!important;height:20px!important;}.dhx_section_time{text-align:center;}.dhx_cal_light_wide .dhx_cal_larea{width:730px;}.dhx_cal_light_wide{width:738px;}.dhx_cal_light_wide .dhx_section_time{background:transparent;}.dhx_cal_light_wide .dhx_cal_checkbox label{padding-left:0;}.dhx_cal_wide_checkbox input{margin-top:8px;margin-left:14px;}.dhx_cal_light input{font-family:Tahoma;font-size:8pt;color:#887A2E;}.dhx_cal_light_wide .dhx_cal_lsection .dhx_fullday{float:none;margin-right:0;color:#FFF4B5;font-weight:bold;font-size:16px;font-family:Arial;cursor:pointer;}.dhx_custom_button{float:right;height:21px;width:90px;-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px;}.dhx_cal_light_wide .dhx_custom_button{position:absolute;top:0;right:0;margin-top:2px;}.dhx_cal_light_wide .dhx_repeat_right{margin-right:55px;}.dhx_minical_popup{position:absolute;z-index:10100;width:251px;height:175px;}.dhx_scale_bar_header{position:absolute;border-bottom:1px dotted #8894A3;width:100%;}.dhx_expand_icon{position:absolute;top:0;right:0;background-image:url(./imgs/collapse_expand_icon.gif);width:18px;height:18px;cursor:pointer;background-position:0 18px;z-index:16;}.dhx_scheduler_agenda .dhx_cal_data{background-image:url(./imgs/databg.png);}.dhx_agenda_area{width:100%;overflow-y:auto;background-image:url(./imgs/databg.png);}.dhx_agenda_line{height:21px;clear:both;overflow:hidden;}.dhx_agenda_line div{float:left;width:188px;border-right:1px dotted #8894A3;text-align:center;line-height:21px;overflow:hidden;}.dhx_agenda_area .dhx_agenda_line div{border-right:0 dotted #8894A3;}.dhx_v_border{position:absolute;left:187px;top:0;border-right:1px dotted #8894A3;width:1px;height:100%;}.dhx_agenda_line .dhx_event_icon{width:20px;border-width:0;background:url(./imgs/icon.png) no-repeat;background-position:5px 4px;cursor:pointer;}.dhx_agenda_line span{padding-left:5px;line-height:21px;}.dhx_year_body{border-left:1px dotted #586A7E;}.dhx_year_week{position:relative;}.dhx_scale_bar_last{border-right:1px dotted #586A7E;}.dhx_year_month{height:18px;padding-top:3px;border:1px dotted #586A7E;text-align:center;vertical-align:middle;}.dhx_year_body .dhx_before .dhx_month_head,.dhx_year_body .dhx_after .dhx_month_head,.dhx_year_body .dhx_before .dhx_month_head a,.dhx_year_body .dhx_after .dhx_month_head a{color:#E2E3E6!important;}.dhx_year_body .dhx_month_body{height:0;overflow:hidden;}.dhx_month_head.dhx_year_event{background-color:#FFE763;}.dhx_year_body .dhx_before .dhx_month_head,.dhx_year_body .dhx_after .dhx_month_head{cursor:default;}.dhx_tooltip{border:1px solid #BBB;background-image:url(./imgs/databg.png);position:absolute;z-index:9998;width:300px;height:auto;font-family:Tahoma;font-size:8pt;overflow:hidden;}.dhx_tooltip_line{line-height:20px;height:20px;overflow:hidden;}.dhx_tooltip_line .dhx_event_icon{width:20px;height:20px;padding-right:10px;float:left;border-width:0;position:relative;background:url(./imgs/icon.png) no-repeat;background-position:5px 4px;cursor:pointer;}.dhx_tooltip_date{float:left;width:auto;padding-left:5px;text-align:center;}.dhx_text_disabled{color:#887A2E;font-family:Tahoma;font-size:8pt;}.dhx_mini_calendar{-moz-box-shadow:5px 5px 5px #888;-khtml-box-shadow:5px 5px 5px #888;}.dhx_mini_calendar .dhx_month_head{cursor:pointer;}.dhx_mini_calendar .dhx_calendar_click{background-color:#C2D5FC;}.dhx_cal_navline div.dhx_minical_icon{width:18px;height:18px;left:190px;top:1px;cursor:pointer;background-image:url(./imgs/calendar.gif);}.dhx_matrix_scell{height:100%;}.dhx_matrix_cell,.dhx_matrix_scell{overflow:hidden;text-align:center;vertical-align:middle;border-bottom:1px dotted #8894A3;border-right:1px dotted #8894A3;}.dhx_matrix_cell{background-color:white;}.dhx_matrix_line{overflow:hidden;}.dhx_matrix_cell div,.dhx_matrix_scell div{overflow:hidden;text-align:center;height:auto;}.dhx_cal_lsection .dhx_readonly{font-size:9pt;font-size:8pt;padding:2px;color:#887A2E;}.dhx_cal_event_line .dhx_event_resize{cursor:w-resize;background:url(./imgs/resize_dots.png) repeat-y;position:absolute;top:0;width:4px;}.dhx_event_resize_start{left:0;}.dhx_event_resize_end{right:0;}.dhx_matrix_scell.folder,.dhx_data_table.folder .dhx_matrix_cell{background-color:#969394;cursor:pointer;}.dhx_matrix_scell .dhx_scell_level0{padding-left:5px;}.dhx_matrix_scell .dhx_scell_level1{padding-left:20px;}.dhx_matrix_scell .dhx_scell_level2{padding-left:35px;}.dhx_matrix_scell .dhx_scell_level3{padding-left:50px;}.dhx_matrix_scell .dhx_scell_level4{padding-left:65px;}.dhx_matrix_scell.folder{font-weight:bold;text-align:left;}.dhx_matrix_scell.folder .dhx_scell_expand{float:left;width:10px;padding-right:3px;}.dhx_matrix_scell.folder .dhx_scell_name{float:left;width:auto;}.dhx_matrix_scell.item .dhx_scell_name{padding-left:15px;text-align:left;}.dhx_data_table.folder .dhx_matrix_cell{border-right:0;}.dhx_section_timeline{overflow:hidden;padding:4px 0 2px 10px;}.dhx_section_timeline select{width:552px;}.dhx_map_area{width:100%;height:100%;overflow-y:auto;overflow-x:hidden;background-image:url(./imgs/databg.png);}.dhx_map_line .dhx_event_icon{width:20px;border-width:0;background:url(./imgs/icon.png) no-repeat;background-position:5px 4px;cursor:pointer;}.dhx_map_line{height:21px;clear:both;overflow:hidden;}.dhx_map{position:absolute;}.dhx_map_line div{float:left;border-right:1px dotted #8894A3;text-align:center;line-height:21px;overflow:hidden;}.dhx_map_line .headline_description{float:left;border-right:1px dotted #8894A3;text-align:center;line-height:21px;overflow:hidden;}.dhx_map_line .dhx_map_description{float:left;border-right:0 dotted #8894A3;text-align:center;line-height:21px;overflow:hidden;}.dhx_map_line .headline_date,.dhx_map_line .headline_description{border-left:0;}.dhx_map_line .line_description{float:left;border-right:1px dotted #8894A3;text-align:left;padding-left:5px;line-height:21px;overflow:hidden;}.dhx_map_line.highlight{background-color:#C4C5CC;}.dhx_map_area .dhx_map_line div{border-right:0 dotted #8894A3;}.dhtmlXTooltip.tooltip{-moz-box-shadow:3px 3px 3px #888;-webkit-box-shadow:3px 3px 3px #888;-o-box-shadow:3px 3px 3px #888;box-shadow:3px 3px 3px #888;filter:progid:DXImageTransform.Microsoft.Shadow(color='#888888',Direction=135,Strength=5);background-color:white;border-left:1px dotted #887A2E;border-top:1px dotted #887A2E;color:#887A2E;cursor:default;padding:10px;position:absolute;z-index:500;}.dhx_cal_checkbox label{padding-left:5px;}.dhx_cal_light .radio{padding:2px 0 2px 10px;}.dhx_cal_light .radio input,.dhx_cal_light .radio label{line-height:15px;}.dhx_cal_light .radio input{vertical-align:middle;margin:0;padding:0;}.dhx_cal_light .radio label{vertical-align:middle;padding-right:10px;}.dhx_cal_light .combo{padding:4px;}.dhx_cal_light_wide .dhx_combo_box{width:608px!important;left:10px;}.dhx_wa_column{float:left;}.dhx_wa_column_last .dhx_wa_day_cont{border-left:1px dotted #8894A3;}.dhx_wa_scale_bar{font-family:Tahoma;padding-left:10px;font-size:11px;border-top:1px dotted #8894A3;border-bottom:1px dotted #8894A3;}.dhx_wa_day_data{background-color:#FCFEFC;overflow-y:auto;}.dhx_wa_ev_body{border-bottom:1px dotted #789;font-size:12px;padding:5px 0 5px 7px;}.dhx_wa_dnd{font-family:Tahoma;position:absolute;padding-right:7px;color:#887AE2!important;background-color:#FFE763!important;border:1px solid #B7A543;}.dhx_cal_event_selected{background-color:#9cc1db;color:white;}.dhx_second_scale_bar{border-bottom:1px dotted #586A7E;padding-top:2px;}.dhx_cal_header div div{border-left:1px dotted #8894A3;}.dhx_grid_area{width:100%;height:100%;overflow-y:auto;background-color:#FCFEFC;}.dhx_grid_area table{border-collapse:collapse;border-spacing:0;width:100%;table-layout:fixed;}.dhx_grid_area td{table-layout:fixed;text-align:center;}.dhx_grid_line{height:21px;clear:both;overflow:hidden;}.dhx_grid_line div{float:left;cursor:default;padding-top:0;padding-bottom:0;text-align:center;line-height:21px;overflow:hidden;}.dhx_grid_area td,.dhx_grid_line div{padding-left:8px;padding-right:8px;}.dhx_grid_area tr.dhx_grid_event{height:21px;overflow:hidden;margin:0 0 1px 0;}.dhx_grid_area tr.dhx_grid_event td{border-bottom:1px solid #ECEEF4;}.dhx_grid_area tr.dhx_grid_event:nth-child(2n+1) td,.dhx_grid_area tr.dhx_grid_event:nth-child(2n) td{border-bottom-width:0;border-bottom-style:none;}.dhx_grid_area tr.dhx_grid_event:nth-child(2n){background-color:#ECEEF4;;}.dhx_grid_area .dhx_grid_dummy{table-layout:auto;margin:0!important;padding:0!important;}.dhx_grid_v_border{position:absolute;border-right:1px solid #A4BED4;width:1px;height:100%;}.dhx_grid_event_selected{background-color:#9cc1db!important;color:white!important;}.dhx_grid_sort_desc .dhx_grid_view_sort{background-position:0 -55px;}.dhx_grid_sort_asc .dhx_grid_view_sort{background-position:0 -66px;}.dhx_grid_view_sort{width:10px;height:10px;position:absolute;border:none!important;top:5px;background-repeat:no-repeat;background-image:url(./imgs/images.png);}.dhx_marked_timespan{position:absolute;width:100%;}.dhx_time_block{position:absolute;width:100%;background:silver;opacity:.4;filter:alpha(opacity=40);z-index:1;}.dhx_time_block_reset{opacity:1;filter:alpha(opacity=100);}.dhx_scheduler_month .dhx_marked_timespan{display:none;}.dhx_mini_calendar .dhx_marked_timespan{display:none;}.dhx_now_time{width:100%;border-bottom:2px dotted red;z-index:1;}.dhx_scheduler_month .dhx_now_time{border-bottom:0;border-left:2px dotted red;}.dhx_matrix_now_time{border-left:2px dotted red;z-index:1;}div.dhx_form_repeat input.radio{margin:-4px 0 0 -4px!ie;}div.dhx_form_repeat input.checkbox{margin:0 0 0 -4px!ie;}.dhx_form_repeat,.dhx_form_repeat input{padding:0;margin:0;padding-left:5px;font-family:Tahoma,Verdana;font-size:11px;line-height:24px;}.dhx_form_repeat{overflow:hidden;height:0;background-color:#FFF4B5;}.dhx_cal_light_wide .dhx_form_repeat{background-color:transparent;}.dhx_repeat_center,.dhx_repeat_left{height:115px;padding:10px 0 10px 10px;float:left;}.dhx_repeat_left{width:95px;}.dhx_repeat_center{width:335px;margin-top:12px;}.dhx_repeat_divider{float:left;height:115px;border-left:1px dotted #DCC43E;width:1px;}.dhx_repeat_right{float:right;height:115px;width:160px;padding:10px 3px 10px 10px;margin-top:7px;}input.dhx_repeat_text{height:16px;width:27px;margin:0 4px 0 4px;line-height:18px;padding:0 0 0 2px;}.dhx_form_repeat select{height:20px;width:87px;padding:0 0 0 2px;margin:0 4px 0 4px;}input.dhx_repeat_date{height:18px;width:80px;padding:0 0 0 2px;margin:0 4px 0 4px;background-repeat:no-repeat;background-position:64px 0;border:1px #7f9db9 solid;line-height:18px;}input.dhx_repeat_radio{margin-right:4px;}input.dhx_repeat_checkbox{margin:4px 4px 0 0;}.dhx_repeat_days td{padding-right:5px;}.dhx_repeat_days label{font-size:10px;}.dhx_custom_button{width:90px;-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px;}.dhx_custom_button_recurring{background-image:url(./imgs/but_repeat.gif);background-position:-5px 20px;width:20px;margin-right:10px;}.dhx_cal_light_rec{width:640px;}.dhx_cal_light_rec .dhx_cal_larea{width:632px;}.dhx_cal_light_rec.dhx_cal_light_wide{width:816px;}.dhx_cal_light_rec.dhx_cal_light_wide .dhx_cal_larea{width:808px;}.dhx_cal_event .dhx_title{border-width:1px 1px 0 1px;padding-top:1px;-webkit-border-top-left-radius:4px;-webkit-border-top-right-radius:4px;-moz-border-radius-topleft:4px;-moz-border-radius-topright:4px;border-top-left-radius:4px;border-top-right-radius:4px;font-family:arial;font-weight:bold;font-size:12px;}.dhx_cal_event .dhx_body,.dhx_cal_event.dhx_cal_select_menu .dhx_body{padding-bottom:8px;-webkit-border-bottom-right-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomright:4px;-moz-border-radius-bottomleft:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;}.dhx_cal_event .dhx_header,.dhx_cal_event.dhx_cal_select_menu .dhx_footer{display:none;}.dhx_cal_event .dhx_footer{height:5px;border:0;margin-top:-6px;background:url(imgs_dhx_terrace/resizing.png) no-repeat center center;}.dhx_cal_event .dhx_header,.dhx_cal_event .dhx_footer,.dhx_cal_event .dhx_body,.dhx_cal_event .dhx_title{background-color:#1796b0;border-color:transparent;color:white;}div.dhx_cal_editor{border:1px solid transparent;background-color:#1796b0;}.dhx_cal_editor{font-size:12px;font-family:Arial,sans-serif;}div.dhx_menu_head,div.dhx_menu_icon{background-image:url(imgs_dhx_terrace/controls.png);}.dhx_cal_event_line{border:1px solid #1796b0;background-color:#1796b0;color:white;height:17px;line-height:17px;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;}.dhx_cal_event_line_start{-webkit-border-top-left-radius:9px;-webkit-border-bottom-left-radius:9px;-moz-border-radius-topleft:9px;-moz-border-radius-bottomleft:9px;border-top-left-radius:9px;border-bottom-left-radius:9px;}.dhx_cal_event_line_end{-webkit-border-top-right-radius:9px;-webkit-border-bottom-right-radius:9px;-moz-border-radius-topright:9px;-moz-border-radius-bottomright:9px;border-top-right-radius:9px;border-bottom-right-radius:9px;}.dhx_cal_event .dhx_body,.dhx_cal_event_line{font-size:12px;font-family:Arial,sans-serif;}.dhx_cal_container{background-color:white;}.dhx_cal_data{border-top:1px solid #CECECE;}.dhx_scale_holder{background-image:url(imgs_dhx_terrace/databg.png);border-right:1px solid #CECECE;}.dhx_scale_holder_now{background-image:url(imgs_dhx_terrace/databg_now.png);border-right:1px solid #CECECE;}.dhx_scale_hour{border-bottom:1px solid #CECECE;background-color:white;font:11px/44px Arial;color:#767676;}.dhx_cal_header{border:1px solid #CECECE;border-left:0;border-bottom:0;}.dhx_scale_bar{border-left:1px solid #CECECE;}.dhx_scale_bar{font:11px/16px Arial;color:#767676;padding-top:2px;background-color:white;}.dhx_cal_navline div{top:14px;}.dhx_cal_tab,.dhx_cal_date,.dhx_cal_today_button,.dhx_cal_prev_button,.dhx_cal_next_button{color:#454544;height:30px;line-height:30px;background:none;border:1px solid #CECECE;}.dhx_cal_navline .dhx_cal_date{border:0;font-size:18px;font-weight:normal;font-family:arial;width:100%;top:14px;text-align:center;position:absolute;left:0;z-index:-1;}.dhx_cal_today_button{color:#747473;left:auto;right:123px;background:none;text-decoration:none;width:80px;font-size:12px;font-weight:bold;font-family:arial;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;}.dhx_cal_prev_button,.dhx_cal_next_button{left:auto;width:46px;}.dhx_cal_prev_button{right:61px;background:url(imgs_dhx_terrace/arrow_left.png) no-repeat center center;-webkit-border-top-left-radius:5px;-webkit-border-bottom-left-radius:5px;-moz-border-radius-topleft:5px;-moz-border-radius-bottomleft:5px;border-top-left-radius:5px;border-bottom-left-radius:5px;}.dhx_cal_next_button{right:14px;background:url(imgs_dhx_terrace/arrow_right.png) no-repeat center center;-webkit-border-top-right-radius:5px;-webkit-border-bottom-right-radius:5px;-moz-border-radius-topright:5px;-moz-border-radius-bottomright:5px;border-top-right-radius:5px;border-bottom-right-radius:5px;}.dhx_cal_tab{color:#747473;width:60px;padding-top:0;text-decoration:none;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;font-weight:bold;font-family:arial;font-size:12px;}.dhx_cal_tab.active{background-color:#F0EDE7;color:#454544;border:1px solid #CECECE;text-shadow:0 1px 0 white;}.dhx_cal_tab_first{-webkit-border-top-left-radius:5px;-webkit-border-bottom-left-radius:5px;-moz-border-radius-topleft:5px;-moz-border-radius-bottomleft:5px;border-top-left-radius:5px;border-bottom-left-radius:5px;}.dhx_cal_tab_last{-webkit-border-top-right-radius:5px;-webkit-border-bottom-right-radius:5px;-moz-border-radius-topright:5px;-moz-border-radius-bottomright:5px;border-top-right-radius:5px;border-bottom-right-radius:5px;}.dhx_cal_tab_standalone{-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;padding:0 5px;}.dhx_multi_day,.dhx_multi_day_icon_small,.dhx_multi_day_icon{background-color:white;}.dhx_multi_day{border-top:1px solid #CECECE;}.dhx_multi_day_icon,.dhx_multi_day_icon_small{border-bottom:1px solid #CECECE;border-right:1px solid #CECECE;}.dhx_multi_day_icon_small{background-image:url(imgs_dhx_terrace/clock_small.gif);}.dhx_multi_day_icon{background-image:url(imgs_dhx_terrace/clock_big.gif);}.dhx_month_head,.dhx_after .dhx_month_head,.dhx_before .dhx_month_head,.dhx_after .dhx_month_body,.dhx_before .dhx_month_body{background-color:white;}.dhx_month_head{height:21px;padding-top:0;font:12px/21px Arial;color:#362d26;border-right:1px solid #CECECE;}.dhx_after .dhx_month_head,.dhx_before .dhx_month_head,.dhx_after .dhx_month_head,.dhx_before .dhx_month_head{color:#bbb;}.dhx_month_body{border-right:1px solid #CECECE;border-bottom:1px solid #CECECE;}.dhx_now .dhx_month_head,.dhx_now .dhx_month_body{background-color:#FFF3A1;font-weight:normal;}.dhx_cal_event_clear{color:#0E64A0;}.dhx_cal_larea{margin-left:0;}.dhx_cal_light_wide .dhx_cal_larea{margin-left:3px;}.dhx_cal_light_wide .dhx_wrap_section{padding:5px 0;}.dhx_cal_light,.dhx_cal_larea,.dhx_cal_lsection,.dhx_wrap_section,.dhx_cal_light_wide .dhx_wrap_section,.dhx_cal_ltext textarea{background-color:white;}.dhx_cal_lsection,.dhx_cal_light_wide .dhx_cal_lsection .dhx_fullday,.dhx_cal_lsection .dhx_fullday,.dhx_cal_light input{color:#747473;}.dhx_cal_light_wide .dhx_wrap_section{border-top:0;border-bottom:1px solid #CECECE;}.dhx_cal_larea{border:1px solid transparent;}.dhx_cal_ltext textarea,.dhx_cal_light select,.dhx_cal_light{color:#2E2E2E;}.dhx_cal_light{border:1px solid #CECECE;}.dhx_cal_light_wide .dhx_cal_lsection,.dhx_cal_light_wide .dhx_cal_lsection .dhx_fullday{font-size:13px;}.dhx_section_time{background-color:transparent;}.dhx_save_btn,.dhx_cancel_btn,.dhx_delete_btn{display:none;}.dhx_btn_set,.dhx_btn_set div{height:30px;padding:0 20px;line-height:30px;}.dhx_btn_set{margin:12px 0 0 0;padding:0;font-size:12px;color:#454544;font-weight:bold;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}.dhx_left_btn_set{margin-left:20px;}.dhx_right_btn_set{margin-right:20px;}.dhx_save_btn_set{border:1px solid #22A1BC;color:white;text-shadow:0 -1px 0 #6F6F6F;background-color:#22A1BC;}.dhx_cancel_btn_set{border:1px solid #CECECE;}.dhx_delete_btn_set{border:1px solid #FF8831;background-color:#FF8831;color:white;text-shadow:0 -1px 0 #93755F;}.dhx_cal_ltitle{height:30px;line-height:30px;border-bottom:1px solid #CECECE;}.dhx_mark{display:none;}.dhx_time{padding-left:10px;}.dhx_close_icon{float:right;width:9px;height:9px;background:url(imgs_dhx_terrace/close_icon.png) no-repeat center center;padding:10px;margin-top:1px;}.dhx_cal_light_wide .dhx_cal_ltext.dhx_cal_template{line-height:22px;}.dhx_cal_ltext textarea{line-height:20px;box-sizing:border-box;-moz-box-sizing:border-box;border:1px solid #CECECE;background-color:#F9F9F9;}.dhtmlx_modal_box{background:white;width:330px;}.dhtmlx_popup_controls{padding-bottom:9px;}.dhtmlx_popup_button,.dhtmlx_popup_button:active,.dhtmlx_popup_button div,.dhtmlx_popup_button div:active{color:#444;background:white;box-shadow:none;}.dhtmlx_popup_button.dhtmlx_ok_button{border:1px solid #22A1BC;background-color:#22A1BC;}.dhtmlx_popup_button.dhtmlx_ok_button div{background:#22A1BC;border:1px solid #22A1BC;color:white;text-shadow:0 -1px 0 #6F6F6F;}.dhx_cal_container.dhx_mini_calendar{box-sizing:border-box;border:1px solid #CECECE;box-shadow:2px 2px 5px #888;}.dhx_mini_calendar .dhx_year_month{border:1px solid #CECECE;font-family:Arial;}.dhx_mini_calendar .dhx_month_head,.dhx_mini_calendar .dhx_year_month,.dhx_mini_calendar .dhx_month_body,.dhx_mini_calendar .dhx_scale_bar,.dhx_mini_calendar .dhx_year_body{border-color:transparent;}.dhx_mini_calendar .dhx_year_body{padding-top:1px;}.dhx_mini_calendar .dhx_scale_bar{border-width:0;}.dhx_mini_calendar .dhx_year_week{border-bottom:1px solid #CECECE;padding-top:1px;}.dhx_mini_calendar .dhx_month_head{padding-right:0;margin-right:1px;text-align:center;}.dhx_mini_calendar .dhx_cal_prev_button,.dhx_mini_calendar .dhx_cal_next_button{border:0;height:20px;}.dhx_cal_navline div.dhx_minical_icon{left:210px;top:14px;width:30px;height:30px;background:url(./imgs_dhx_terrace/calendar.gif) no-repeat;background-position:3px 5px;}.dhx_cal_event_line .dhx_event_resize{background:url(./imgs_dhx_terrace/resize_dots.png) repeat-y;}.dhx_matrix_scell,.dhx_matrix_cell{border-bottom:1px solid #CECECE;border-right:1px solid #CECECE;}.dhx_cal_header div div{border-left:1px solid #CECECE;}.dhx_matrix_scell.folder{border-right:0;}.dhx_second_scale_bar{border-bottom:1px solid #CECECE;}.dhx_repeat_divider{border-left:1px solid #CECECE;}.dhx_custom_button{background-color:white;border:1px solid #CECECE;color:#747473;}.dhx_cal_light_wide .dhx_custom_button{margin-top:6px;}.dhx_custom_button_recurring{background-image:url(./imgs_dhx_terrace/but_repeat.gif);}.dhx_v_border,.dhx_agenda_line div{border-right:1px solid #CECECE;}.dhx_year_month{border:1px solid #CECECE;}.dhx_scale_bar_last{border-right:1px solid #CECECE;}.dhx_year_body{border-left:1px solid #CECECE;}.dhx_expand_icon{top:-3px;}.dhx_scale_bar .dhx_cal_next_button,.dhx_scale_bar .dhx_cal_prev_button{width:20px;height:20px;top:0!important;border:0;}.dhx_scale_bar .dhx_cal_next_button{right:1px!important;border-left:1px solid #CECECE;}.dhx_scale_bar .dhx_cal_prev_button{left:1px!important;border-right:1px solid #CECECE;}.dhx_map_line .headline_date,.dhx_map_line .headline_description{border:0;}.dhx_map_line .headline_date{border-right:1px solid #CECECE;}.dhtmlXTooltip.tooltip{border-left:1px solid #CECECE;border-top:1px solid #CECECE;color:#747473;font-size:12px;line-height:16px;}.dhx_wa_scale_bar{border-top:1px solid #CECECE;border-bottom:1px solid #CECECE;}.dhx_wa_column_last .dhx_wa_day_cont{border-left:1px solid #CECECE;}.dhx_wa_ev_body{border-bottom:1px solid #CECECE;}.dhx_wa_scale_bar{background-color:#f0ede7;}.dhx_wa_ev_body.dhx_cal_event_selected{background-color:#fff3a1;color:#362d26;}.dhx_wa_dnd{background-color:#fddb93!important;color:#747473!important;border:1px solid #ccb177;}.dhx_text_disabled{color:#2E2E2E;}.dhx_cal_ltext .dhx_text_disabled{line-height:22px;}.dhx_grid_v_border{border-right-color:#CECECE;}
157\ No newline at end of file
158
159=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler_glossy.css'
160--- addons/web_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler_glossy.css 2012-10-24 13:48:59 +0000
161+++ addons/web_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler_glossy.css 1970-01-01 00:00:00 +0000
162@@ -1,5 +0,0 @@
163-/*
164-This software is allowed to use under GPL or you need to obtain Commercial or Enterise License
165-to use it in non-GPL project. Please contact sales@dhtmlx.com for details
166-*/
167-.dhtmlx_message_area{position:fixed;right:5px;width:250px;z-index:1000;}.dhtmlx-info{min-width:120px;padding:4px 4px 4px 20px;font-family:Tahoma;z-index:10000;margin:5px;margin-bottom:10px;-webkit-transition:all .5s ease;-moz-transition:all .5s ease;-o-transition:all .5s ease;transition:all .5s ease;}.dhtmlx-info.hidden{height:0;padding:0;border-width:0;margin:0;overflow:hidden;}.dhtmlx_modal_box{overflow:hidden;display:inline-block;min-width:300px;width:300px;text-align:center;position:fixed;background-color:#fff;background:-webkit-linear-gradient(top,#fff 1%,#d0d0d0 99%);background:-moz-linear-gradient(top,#fff 1%,#d0d0d0 99%);box-shadow:0 0 14px #888;font-family:Tahoma;z-index:20000;border-radius:6px;border:1px solid #fff;}.dhtmlx_popup_title{border-top-left-radius:5px;border-top-right-radius:5px;border-width:0;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAoCAMAAAAIaGBFAAAAhFBMVEVwcHBubm5sbGxqampoaGhmZmZlZWVjY2NhYWFfX19dXV1bW1taWlpYWFhWVlZUVFRSUlJRUVFPT09NTU1LS0tJSUlHR0dGRkZERERCQkJAQEA+Pj49PT09PT0+Pj5AQEBBQUFDQ0NERERGRkZHR0dJSUlKSkpMTExMTEw5OTk5OTk5OTkny8YEAAAAQklEQVQImQXBCRJCAAAAwKVSQqdyjSPXNP7/QLsIhA6OTiJnF7GrRCpzc/fw9PKW+/gqlCq1RqvTG/yMJrPF6m/bAVEhAxxnHG0oAAAAAElFTkSuQmCC);background-image:-webkit-linear-gradient(top,#707070 1%,#3d3d3d 70%,#4c4c4c 97%,#393939 97%);background-image:-moz-linear-gradient(top,#707070 1%,#3d3d3d 70%,#4c4c4c 97%,#393939 97%);}.dhtmlx-info,.dhtmlx_popup_button,.dhtmlx_button{user-select:none;-webkit-user-select:none;-moz-user-select:-moz-none;cursor:pointer;}.dhtmlx_popup_text{overflow:hidden;}.dhtmlx_popup_controls{border-radius:6px;padding:5px;}.dhtmlx_popup_button,.dhtmlx_button{height:30px;line-height:30px;display:inline-block;margin:0 5px;border-radius:6px;color:#FFF;}.dhtmlx_popup_button{min-width:120px;}div.dhx_modal_cover{background-color:#000;cursor:default;filter:alpha(opacity = 20);opacity:.2;position:fixed;z-index:19999;left:0;top:0;width:100%;height:100%;border:none;zoom:1;}.dhtmlx-info img,.dhtmlx_modal_box img{float:left;margin-right:20px;}.dhtmlx-alert-error .dhtmlx_popup_title,.dhtmlx-confirm-error .dhtmlx_popup_title{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAsCAIAAAArRUU2AAAATklEQVR4nIWLuw2AMBBDjVuQiBT2oWbRDATrnB0KQOJoqPzRe3BrHI6dcBASYREKovtK6/6DsDOX+stN+3H1YX9ciRgnYq5EWYhS2dftBIuLT4JyIrPCAAAAAElFTkSuQmCC);}.dhtmlx-alert-error,.dhtmlx-confirm-error{border:1px solid #f00;}.dhtmlx_button,.dhtmlx_popup_button{box-shadow:0 0 4px #888;border:1px solid #838383;}.dhtmlx_button input,.dhtmlx_popup_button div{border:1px solid #FFF;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAeCAMAAADaS4T1AAAAYFBMVEVwcHBtbW1ra2toaGhmZmZjY2NhYWFeXl5cXFxaWlpXV1dVVVVSUlJQUFBNTU1LS0tJSUlGRkZERERBQUE/Pz88PDw9PT0+Pj5AQEBCQkJDQ0NFRUVHR0dISEhKSkpMTEzqthaMAAAAMklEQVQImQXBhQ2AMAAAsOIMlwWH/8+kRSKVyRVKlVrQaHV6g9FktlhFm93hdLk9Xt8PIfgBvdUqyskAAAAASUVORK5CYII=);background-image:-webkit-linear-gradient(top,#707070 1%,#3d3d3d 70%,#4c4c4c 99%);background-image:-moz-linear-gradient(top,#707070 1%,#3d3d3d 70%,#4c4c4c 99%);border-radius:6px;font-size:15px;font-weight:normal;-moz-box-sizing:content-box;box-sizing:content-box;color:#fff;padding:0;margin:0;vertical-align:top;height:28px;line-height:28px;}.dhtmlx_button input:focus,.dhtmlx_button input:active,.dhtmlx_popup_button div:active,.dhtmlx_popup_button div:focus{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAeCAMAAADaS4T1AAAAXVBMVEVwcHBubm5tbW1sbGxra2tpaWloaGhnZ2dmZmZlZWVjY2NiYmJhYWFgYGBfX19dXV1cXFxbW1taWlpZWVlXV1dWVlZVVVVUVFRTU1NRUVFQUFBPT09OTk5NTU1LS0tT9SY0AAAAMUlEQVQImQXBhQGAMAAAIGxnx2z9/00BiVQmVyhVakGj1ekNRpPZYhVtdofT5fZ4fT8hpwG05JjexgAAAABJRU5ErkJggg==);background-image:-webkit-linear-gradient(top,#707070 1%,#4c4c4c 99%);background-image:-moz-linear-gradient(top,#707070 1%,#4c4c4c 99%);}.dhtmlx_popup_title{color:#fff;text-shadow:1px 1px #000;height:40px;line-height:40px;font-size:20px;}.dhtmlx_popup_text{margin:15px 15px 5px 15px;font-size:14px;color:#000;min-height:30px;border-radius:6px;}.dhtmlx-info,.dhtmlx-error{font-size:14px;color:#000;box-shadow:0 0 10px #888;padding:0;background-color:#FFF;border-radius:3px;border:1px solid #fff;}.dhtmlx-info div{padding:5px 10px 5px 10px;background-color:#fff;border-radius:3px;border:1px solid #B8B8B8;}.dhtmlx-error{background-color:#d81b1b;border:1px solid #ff3c3c;box-shadow:0 0 10px #000;}.dhtmlx-error div{background-color:#d81b1b;border:1px solid #940000;color:#FFF;}.dhx_cal_container{background-color:#C2D5FC;font-family:Tahoma;font-size:8pt;position:relative;overflow:hidden;}.dhx_cal_container div{-moz-user-select:none;-moz-user-select:-moz-none;}.dhx_cal_navline{height:20px;position:absolute;z-index:3;width:750px;color:#2F3A48;}.dhx_cal_navline div{position:absolute;top:2px;white-space:nowrap;}.dhx_cal_navline .dhx_cal_date{font-weight:600;left:210px;padding-top:1px;}.dhx_cal_button .dhx_left_bg{width:1px;overflow:hidden;height:17px;z-index:20;top:0;}.dhx_cal_prev_button{background-image:url(imgs/buttons.png);background-position:0 0;width:29px;height:17px;left:50px;cursor:pointer;}.dhx_cal_next_button{background-image:url(imgs/buttons.png);background-position:-30px 0;width:29px;height:17px;left:80px;cursor:pointer;}.dhx_cal_today_button{background-image:url(imgs/buttons.png);background-position:-60px 0;width:75px;height:17px;left:112px;cursor:pointer;text-align:center;text-decoration:underline;}.dhx_cal_tab{width:59px;height:19px;text-align:center;text-decoration:underline;padding-top:2px;cursor:pointer;background-color:#D8E1EA;-webkit-border-top-left-radius:4px;-webkit-border-top-right-radius:4px;-moz-border-radius-topleft:4px;-moz-border-radius-topright:4px;border-top-left-radius:4px;border-top-right-radius:4px;}.dhx_cal_tab.active{text-decoration:none;cursor:default;font-weight:bold;border:1px dotted #586A7E;border-bottom:0;background-color:#C2D5FC;}.dhx_cal_header{position:absolute;left:10px;top:23px;width:750px;border-top:1px dotted #8894A3;border-right:1px dotted #8894A3;z-index:2;overflow:hidden;color:#2F3A48;}.dhx_cal_data{border-top:1px dotted #8894A3;position:absolute;top:44px;width:600px;overflow-y:auto;overflow-x:hidden;}.dhx_scale_bar{position:absolute;text-align:center;background-color:#C2D5FC;padding-top:3px;border-left:1px dotted #586A7E;}.dhx_scale_holder{position:absolute;border-right:1px dotted #586A7E;background-image:url(imgs/databg.png);}.dhx_scale_holder_now{position:absolute;border-right:1px dotted #586A7E;background-image:url(imgs/databg_now.png);}.dhx_scale_hour{height:41px;width:50px;border-bottom:1px dotted #8894A3;background-color:#C2D5FC;text-align:center;line-height:40px;color:#586A7E;overflow:hidden;}.dhx_month_head{background-color:#EBEFF4;color:#2F3A48;border-right:1px dotted #586A7E;height:18px;padding-right:5px;padding-top:3px;text-align:right;}.dhx_month_body{border-right:1px dotted #586A7E;border-bottom:1px dotted #586A7E;background-color:#FFF;}.dhx_now .dhx_month_body{background-color:#E2EDFF;}.dhx_after .dhx_month_body,.dhx_before .dhx_month_body{background-color:#ECECEC;}.dhx_after .dhx_month_head,.dhx_before .dhx_month_head{background-color:#E2E3E6;color:#94A6BB;}.dhx_now .dhx_month_head{background-color:#D1DEF4;font-weight:bold;}.dhx_cal_drag{position:absolute;z-index:9999;background-color:#FFE763;border:1px solid #B7A543;opacity:.5;filter:alpha(opacity=50);}.dhx_loading{position:absolute;width:128px;height:15px;background-image:url(imgs/loading.gif);z-index:9999;}.dhx_multi_day_icon,.dhx_multi_day{background-color:#E1E6FF;background-repeat:no-repeat;border-right:1px dotted #8894A3;}.dhx_multi_day{position:absolute;border-top:1px dotted #8894A3;}.dhx_multi_day_icon,.dhx_multi_day_icon_small{background-position:center center;background-color:#E1E6FF;background-repeat:no-repeat;border-bottom:1px dotted #8894A3;border-right:1px dotted #8894A3;}.dhx_multi_day_icon{background-image:url(imgs/clock_big.gif);}.dhx_multi_day_icon_small{background-image:url(imgs/clock_small.gif);}.dhtmlxLayoutPolyContainer_dhx_skyblue .dhx_cal_container{background-color:#d0e5ff;}.dhx_cal_event .dhx_header,.dhx_cal_event .dhx_title,.dhx_cal_event .dhx_body,.dhx_cal_event .dhx_footer{background-color:#FFE763;border:1px solid #B7A543;color:#887A2E;overflow:hidden;width:100%;font-family:Tahoma;font-size:8pt;}.dhx_move_denied .dhx_cal_event .dhx_header,.dhx_move_denied .dhx_cal_event .dhx_title{cursor:default;}.dhx_cal_event .dhx_header{height:1px;margin-left:1px;border-width:1px 1px 0 1px;cursor:pointer;}.dhx_cal_event .dhx_title{height:12px;border-width:0 1px 1px 1px;border-bottom-style:dotted;font-size:7pt;font-weight:bold;text-align:center;background-position:right;background-repeat:no-repeat;cursor:pointer;}.dhx_cal_event .dhx_body,.dhx_cal_event.dhx_cal_select_menu .dhx_body{border-width:0 1px 1px 1px;padding:5px;}.dhx_resize_denied{cursor:default!important;}.dhx_cal_event .dhx_event_resize{cursor:s-resize;}.dhx_cal_event .dhx_footer,.dhx_cal_event .dhx_select_menu_footer{height:1px;margin-left:2px;border-width:0 1px 1px 1px;}.dhx_cal_event_line{background-color:#FFE763;border:1px solid #B7A543;border-radius:3px;font-family:Tahoma;font-size:8pt;height:13px;padding-left:10px;color:#887A2E;cursor:pointer;overflow:hidden;}.dhx_cal_event_clear{font-family:Tahoma;font-size:8pt;height:13px;padding-left:2px;color:#887A2E;white-space:nowrap;overflow:hidden;cursor:pointer;}.dhx_in_move{background-color:#FFFF80;}div.dhx_cal_editor{background-color:#FFE763;border:1px solid #B7A543;border-top-style:dotted;z-index:999;position:absolute;overflow:hidden;}textarea.dhx_cal_editor{width:100%;height:100%;border:0 solid black;margin:none;padding:none;overflow:auto;}div.dhx_menu_head{background-image:url(imgs/controls.gif);background-position:0 -43px;width:10px;height:10px;margin-left:5px;margin-top:1px;border:none;cursor:default;}div.dhx_menu_icon{background-image:url(imgs/controls.gif);width:20px;height:20px;margin-left:-5px;margin-top:0;border:none;cursor:pointer;}div.icon_details{background-position:0 0;}div.icon_edit{background-position:-22px 0;}div.icon_save{background-position:-84px -1px;}div.icon_cancel{background-position:-62px 0;}div.icon_delete{background-position:-42px 0;}.dhx_unselectable,.dhx_unselectable div{-webkit-user-select:none;-moz-user-select:none;-moz-user-select:-moz-none;}.dhx_cal_light{background-color:#FFE763;border-radius:5px;font-family:Tahoma;font-size:8pt;border:1px solid #B7A64B;color:#887A2E;position:absolute;z-index:10001;width:580px;height:300px;box-shadow:5px 5px 5px #888;}.dhx_cal_light_wide{width:650px;}.dhx_mark{position:relative;top:3px;background-image:url('./imgs/controls.gif');background-position:0 -43px;padding-left:10px;}.dhx_ie6 .dhx_mark{background-position:6px -41px;}.dhx_cal_light select{font-family:Tahoma;font-size:8pt;color:#887A2E;padding:2px;margin:0;}.dhx_cal_ltitle{padding:2px 0 2px 5px;overflow:hidden;white-space:nowrap;}.dhx_cal_ltitle span{white-space:nowrap;}.dhx_cal_lsection{background-color:#DBCF8C;color:#FFF4B5;font-weight:bold;padding:5px 0 3px 10px;}.dhx_section_time{background-color:#DBCF8C;white-space:nowrap;}.dhx_cal_lsection .dhx_fullday{float:right;margin-right:5px;color:#887A2E;font-size:12px;font-weight:normal;line-height:20px;vertical-align:top;cursor:pointer;}.dhx_cal_lsection{font-size:18px;font-family:Arial;}.dhx_cal_ltext{padding:2px 0 2px 10px;overflow:hidden;}.dhx_cal_ltext textarea{background-color:#FFF4B5;overflow:auto;border:none;color:#887A2E;height:100%;width:100%;outline:none!important;resize:none;}.dhx_time{font-weight:bold;}.dhx_cal_light .dhx_title{padding-left:10px;}.dhx_cal_larea{border:1px solid #DCC43E;background-color:#FFF4B5;overflow:hidden;margin-left:3px;width:572px;height:1px;}.dhx_btn_set{padding:5px 10px 0 10px;float:left;}.dhx_btn_set div{float:left;height:21px;line-height:21px;vertical-align:middle;cursor:pointer;}.dhx_save_btn{background-image:url('./imgs/controls.gif');background-position:-84px 0;width:21px;}.dhx_cancel_btn{background-image:url('./imgs/controls.gif');background-position:-63px 0;width:20px;}.dhx_delete_btn{background-image:url('./imgs/controls.gif');background-position:-42px 0;width:20px;}.dhx_cal_cover{width:100%;height:100%;position:absolute;z-index:10000;top:0;left:0;background-color:black;opacity:.1;filter:alpha(opacity=10);}.dhx_custom_button{padding:0 3px 0 3px;color:#887A2E;font-family:Tahoma;font-size:8pt;background-color:#FFE763;font-weight:normal;margin-right:5px;margin-top:0;cursor:pointer;}.dhx_custom_button div{cursor:pointer;float:left;height:21px;line-height:21px;vertical-align:middle;}.dhx_cal_light_wide .dhx_cal_larea{border-top-width:0;}.dhx_cal_light_wide .dhx_cal_lsection{border:0;float:left;text-align:right;width:100px;height:20px;font-size:16px;padding:5px 0 0 10px;}.dhx_cal_light_wide .dhx_wrap_section{border-top:1px solid #DBCF8C;position:relative;background-color:#DBCF8C;overflow:hidden;}.dhx_cal_light_wide .dhx_section_time{padding-top:2px!important;height:20px!important;}.dhx_section_time{text-align:center;}.dhx_cal_light_wide .dhx_cal_larea{width:730px;}.dhx_cal_light_wide{width:738px;}.dhx_cal_light_wide .dhx_section_time{background:transparent;}.dhx_cal_light_wide .dhx_cal_checkbox label{padding-left:0;}.dhx_cal_wide_checkbox input{margin-top:8px;margin-left:14px;}.dhx_cal_light input{font-family:Tahoma;font-size:8pt;color:#887A2E;}.dhx_cal_light_wide .dhx_cal_lsection .dhx_fullday{float:none;margin-right:0;color:#FFF4B5;font-weight:bold;font-size:16px;font-family:Arial;cursor:pointer;}.dhx_custom_button{float:right;height:21px;width:90px;-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px;}.dhx_cal_light_wide .dhx_custom_button{position:absolute;top:0;right:0;margin-top:2px;}.dhx_cal_light_wide .dhx_repeat_right{margin-right:55px;}.dhx_minical_popup{position:absolute;z-index:10100;width:251px;height:175px;}.dhx_scale_bar_header{position:absolute;border-bottom:1px dotted #8894A3;width:100%;}.dhx_expand_icon{position:absolute;top:0;right:0;background-image:url(./imgs/collapse_expand_icon.gif);width:18px;height:18px;cursor:pointer;background-position:0 18px;z-index:16;}.dhx_scheduler_agenda .dhx_cal_data{background-image:url(./imgs/databg.png);}.dhx_agenda_area{width:100%;overflow-y:auto;background-image:url(./imgs/databg.png);}.dhx_agenda_line{height:21px;clear:both;overflow:hidden;}.dhx_agenda_line div{float:left;width:188px;border-right:1px dotted #8894A3;text-align:center;line-height:21px;overflow:hidden;}.dhx_agenda_area .dhx_agenda_line div{border-right:0 dotted #8894A3;}.dhx_v_border{position:absolute;left:187px;top:0;border-right:1px dotted #8894A3;width:1px;height:100%;}.dhx_agenda_line .dhx_event_icon{width:20px;border-width:0;background:url(./imgs/icon.png) no-repeat;background-position:5px 4px;cursor:pointer;}.dhx_agenda_line span{padding-left:5px;line-height:21px;}.dhx_year_body{border-left:1px dotted #586A7E;}.dhx_year_week{position:relative;}.dhx_scale_bar_last{border-right:1px dotted #586A7E;}.dhx_year_month{height:18px;padding-top:3px;border:1px dotted #586A7E;text-align:center;vertical-align:middle;}.dhx_year_body .dhx_before .dhx_month_head,.dhx_year_body .dhx_after .dhx_month_head,.dhx_year_body .dhx_before .dhx_month_head a,.dhx_year_body .dhx_after .dhx_month_head a{color:#E2E3E6!important;}.dhx_year_body .dhx_month_body{height:0;overflow:hidden;}.dhx_month_head.dhx_year_event{background-color:#FFE763;}.dhx_year_body .dhx_before .dhx_month_head,.dhx_year_body .dhx_after .dhx_month_head{cursor:default;}.dhx_tooltip{border:1px solid #BBB;background-image:url(./imgs/databg.png);position:absolute;z-index:9998;width:300px;height:auto;font-family:Tahoma;font-size:8pt;overflow:hidden;}.dhx_tooltip_line{line-height:20px;height:20px;overflow:hidden;}.dhx_tooltip_line .dhx_event_icon{width:20px;height:20px;padding-right:10px;float:left;border-width:0;position:relative;background:url(./imgs/icon.png) no-repeat;background-position:5px 4px;cursor:pointer;}.dhx_tooltip_date{float:left;width:auto;padding-left:5px;text-align:center;}.dhx_text_disabled{color:#887A2E;font-family:Tahoma;font-size:8pt;}.dhx_mini_calendar{-moz-box-shadow:5px 5px 5px #888;-khtml-box-shadow:5px 5px 5px #888;}.dhx_mini_calendar .dhx_month_head{cursor:pointer;}.dhx_mini_calendar .dhx_calendar_click{background-color:#C2D5FC;}.dhx_cal_navline div.dhx_minical_icon{width:18px;height:18px;left:190px;top:1px;cursor:pointer;background-image:url(./imgs/calendar.gif);}.dhx_matrix_scell{height:100%;}.dhx_matrix_cell,.dhx_matrix_scell{overflow:hidden;text-align:center;vertical-align:middle;border-bottom:1px dotted #8894A3;border-right:1px dotted #8894A3;}.dhx_matrix_cell{background-color:white;}.dhx_matrix_line{overflow:hidden;}.dhx_matrix_cell div,.dhx_matrix_scell div{overflow:hidden;text-align:center;height:auto;}.dhx_cal_lsection .dhx_readonly{font-size:9pt;font-size:8pt;padding:2px;color:#887A2E;}.dhx_cal_event_line .dhx_event_resize{cursor:w-resize;background:url(./imgs/resize_dots.png) repeat-y;position:absolute;top:0;width:4px;}.dhx_event_resize_start{left:0;}.dhx_event_resize_end{right:0;}.dhx_matrix_scell.folder,.dhx_data_table.folder .dhx_matrix_cell{background-color:#969394;cursor:pointer;}.dhx_matrix_scell .dhx_scell_level0{padding-left:5px;}.dhx_matrix_scell .dhx_scell_level1{padding-left:20px;}.dhx_matrix_scell .dhx_scell_level2{padding-left:35px;}.dhx_matrix_scell .dhx_scell_level3{padding-left:50px;}.dhx_matrix_scell .dhx_scell_level4{padding-left:65px;}.dhx_matrix_scell.folder{font-weight:bold;text-align:left;}.dhx_matrix_scell.folder .dhx_scell_expand{float:left;width:10px;padding-right:3px;}.dhx_matrix_scell.folder .dhx_scell_name{float:left;width:auto;}.dhx_matrix_scell.item .dhx_scell_name{padding-left:15px;text-align:left;}.dhx_data_table.folder .dhx_matrix_cell{border-right:0;}.dhx_section_timeline{overflow:hidden;padding:4px 0 2px 10px;}.dhx_section_timeline select{width:552px;}.dhx_map_area{width:100%;height:100%;overflow-y:auto;overflow-x:hidden;background-image:url(./imgs/databg.png);}.dhx_map_line .dhx_event_icon{width:20px;border-width:0;background:url(./imgs/icon.png) no-repeat;background-position:5px 4px;cursor:pointer;}.dhx_map_line{height:21px;clear:both;overflow:hidden;}.dhx_map{position:absolute;}.dhx_map_line div{float:left;border-right:1px dotted #8894A3;text-align:center;line-height:21px;overflow:hidden;}.dhx_map_line .headline_description{float:left;border-right:1px dotted #8894A3;text-align:center;line-height:21px;overflow:hidden;}.dhx_map_line .dhx_map_description{float:left;border-right:0 dotted #8894A3;text-align:center;line-height:21px;overflow:hidden;}.dhx_map_line .headline_date,.dhx_map_line .headline_description{border-left:0;}.dhx_map_line .line_description{float:left;border-right:1px dotted #8894A3;text-align:left;padding-left:5px;line-height:21px;overflow:hidden;}.dhx_map_line.highlight{background-color:#C4C5CC;}.dhx_map_area .dhx_map_line div{border-right:0 dotted #8894A3;}.dhtmlXTooltip.tooltip{-moz-box-shadow:3px 3px 3px #888;-webkit-box-shadow:3px 3px 3px #888;-o-box-shadow:3px 3px 3px #888;box-shadow:3px 3px 3px #888;filter:progid:DXImageTransform.Microsoft.Shadow(color='#888888',Direction=135,Strength=5);background-color:white;border-left:1px dotted #887A2E;border-top:1px dotted #887A2E;color:#887A2E;cursor:default;padding:10px;position:absolute;z-index:500;}.dhx_cal_checkbox label{padding-left:5px;}.dhx_cal_light .radio{padding:2px 0 2px 10px;}.dhx_cal_light .radio input,.dhx_cal_light .radio label{line-height:15px;}.dhx_cal_light .radio input{vertical-align:middle;margin:0;padding:0;}.dhx_cal_light .radio label{vertical-align:middle;padding-right:10px;}.dhx_cal_light .combo{padding:4px;}.dhx_cal_light_wide .dhx_combo_box{width:608px!important;left:10px;}.dhx_wa_column{float:left;}.dhx_wa_column_last .dhx_wa_day_cont{border-left:1px dotted #8894A3;}.dhx_wa_scale_bar{font-family:Tahoma;padding-left:10px;font-size:11px;border-top:1px dotted #8894A3;border-bottom:1px dotted #8894A3;}.dhx_wa_day_data{background-color:#FCFEFC;overflow-y:auto;}.dhx_wa_ev_body{border-bottom:1px dotted #789;font-size:12px;padding:5px 0 5px 7px;}.dhx_wa_dnd{font-family:Tahoma;position:absolute;padding-right:7px;color:#887AE2!important;background-color:#FFE763!important;border:1px solid #B7A543;}.dhx_cal_event_selected{background-color:#9cc1db;color:white;}.dhx_second_scale_bar{border-bottom:1px dotted #586A7E;padding-top:2px;}.dhx_cal_header div div{border-left:1px dotted #8894A3;}.dhx_grid_area{width:100%;height:100%;overflow-y:auto;background-color:#FCFEFC;}.dhx_grid_area table{border-collapse:collapse;border-spacing:0;width:100%;table-layout:fixed;}.dhx_grid_area td{table-layout:fixed;text-align:center;}.dhx_grid_line{height:21px;clear:both;overflow:hidden;}.dhx_grid_line div{float:left;cursor:default;padding-top:0;padding-bottom:0;text-align:center;line-height:21px;overflow:hidden;}.dhx_grid_area td,.dhx_grid_line div{padding-left:8px;padding-right:8px;}.dhx_grid_area tr.dhx_grid_event{height:21px;overflow:hidden;margin:0 0 1px 0;}.dhx_grid_area tr.dhx_grid_event td{border-bottom:1px solid #ECEEF4;}.dhx_grid_area tr.dhx_grid_event:nth-child(2n+1) td,.dhx_grid_area tr.dhx_grid_event:nth-child(2n) td{border-bottom-width:0;border-bottom-style:none;}.dhx_grid_area tr.dhx_grid_event:nth-child(2n){background-color:#ECEEF4;;}.dhx_grid_area .dhx_grid_dummy{table-layout:auto;margin:0!important;padding:0!important;}.dhx_grid_v_border{position:absolute;border-right:1px solid #A4BED4;width:1px;height:100%;}.dhx_grid_event_selected{background-color:#9cc1db!important;color:white!important;}.dhx_grid_sort_desc .dhx_grid_view_sort{background-position:0 -55px;}.dhx_grid_sort_asc .dhx_grid_view_sort{background-position:0 -66px;}.dhx_grid_view_sort{width:10px;height:10px;position:absolute;border:none!important;top:5px;background-repeat:no-repeat;background-image:url(./imgs/images.png);}.dhx_marked_timespan{position:absolute;width:100%;}.dhx_time_block{position:absolute;width:100%;background:silver;opacity:.4;filter:alpha(opacity=40);z-index:1;}.dhx_time_block_reset{opacity:1;filter:alpha(opacity=100);}.dhx_scheduler_month .dhx_marked_timespan{display:none;}.dhx_mini_calendar .dhx_marked_timespan{display:none;}.dhx_now_time{width:100%;border-bottom:2px dotted red;z-index:1;}.dhx_scheduler_month .dhx_now_time{border-bottom:0;border-left:2px dotted red;}.dhx_matrix_now_time{border-left:2px dotted red;z-index:1;}div.dhx_form_repeat input.radio{margin:-4px 0 0 -4px!ie;}div.dhx_form_repeat input.checkbox{margin:0 0 0 -4px!ie;}.dhx_form_repeat,.dhx_form_repeat input{padding:0;margin:0;padding-left:5px;font-family:Tahoma,Verdana;font-size:11px;line-height:24px;}.dhx_form_repeat{overflow:hidden;height:0;background-color:#FFF4B5;}.dhx_cal_light_wide .dhx_form_repeat{background-color:transparent;}.dhx_repeat_center,.dhx_repeat_left{height:115px;padding:10px 0 10px 10px;float:left;}.dhx_repeat_left{width:95px;}.dhx_repeat_center{width:335px;margin-top:12px;}.dhx_repeat_divider{float:left;height:115px;border-left:1px dotted #DCC43E;width:1px;}.dhx_repeat_right{float:right;height:115px;width:160px;padding:10px 3px 10px 10px;margin-top:7px;}input.dhx_repeat_text{height:16px;width:27px;margin:0 4px 0 4px;line-height:18px;padding:0 0 0 2px;}.dhx_form_repeat select{height:20px;width:87px;padding:0 0 0 2px;margin:0 4px 0 4px;}input.dhx_repeat_date{height:18px;width:80px;padding:0 0 0 2px;margin:0 4px 0 4px;background-repeat:no-repeat;background-position:64px 0;border:1px #7f9db9 solid;line-height:18px;}input.dhx_repeat_radio{margin-right:4px;}input.dhx_repeat_checkbox{margin:4px 4px 0 0;}.dhx_repeat_days td{padding-right:5px;}.dhx_repeat_days label{font-size:10px;}.dhx_custom_button{width:90px;-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px;}.dhx_custom_button_recurring{background-image:url(./imgs/but_repeat.gif);background-position:-5px 20px;width:20px;margin-right:10px;}.dhx_cal_light_rec{width:640px;}.dhx_cal_light_rec .dhx_cal_larea{width:632px;}.dhx_cal_light_rec.dhx_cal_light_wide{width:816px;}.dhx_cal_light_rec.dhx_cal_light_wide .dhx_cal_larea{width:808px;}.dhx_cal_tab.active{border:none;}.dhx_multi_day{border:none;border-top:1px solid #A4BED4;}.dhx_multi_day_icon,.dhx_multi_day_icon_small{border-right:none;}.dhx_cal_container{background-image:url(imgs_glossy/top-days-bg.png);background-position:0 24px;background-repeat:repeat-x;background-color:#EBEBEB;}.dhx_cal_navline{background-color:#EBEBEB;height:23px!important;}.dhx_cal_prev_button{background-image:url(imgs_glossy/buttons.gif);width:30px;height:20px;}.dhx_cal_next_button{background-image:url(imgs_glossy/buttons.gif);width:30px;height:20px;}.dhx_cal_today_button{padding-top:3px;background-image:url(imgs_glossy/buttons.gif);width:67px;left:110px;text-decoration:none;}.dhx_cal_navline .dhx_cal_date{padding-top:4px;left:230px;}.dhx_cal_tab{background-image:url(imgs_glossy/white_tab.png);width:60px;height:15px;text-decoration:none;padding-top:4px;margin-top:4px;}.dhx_cal_tab.active{background-image:url(imgs_glossy/blue_tab.png);height:18px;width:60px;padding-top:4px;margin-top:2px;}.dhx_cal_data{border-top:1px solid #A4BED4;}.dhx_cal_header{background-image:url(imgs_glossy/top-days-bg.png);background-repeat:repeat-x;border-top:0;border-right:0;}.dhx_scale_bar{background-image:url(imgs_glossy/top-separator.gif);background-position:0 0;background-repeat:no-repeat;background-color:transparent;padding-top:3px;border-left:0;}.dhx_scale_holder{border-right:1px solid #A4BED4;}.dhx_scale_holder_now{border-right:1px solid #A4BED4;}.dhx_scale_hour{background-image:url(imgs_glossy/left-time-bg.png);border-bottom:1px solid #A4BED4;color:#2F3A48;}.dhx_multi_day{background-image:url(imgs_glossy/multi-days-bg.png);background-repeat:repeat;border-bottom:1px solid #A4BED4;border-left:0;}.dhx_multi_day_icon,.dhx_multi_day_icon_small{background-image:url(imgs_glossy/clock_big.png);border-bottom:1px solid #A4BED4;border-left:1px solid #fff;background-color:transparent;background-repeat:no-repeat;}.dhx_multi_day_icon_small{background-image:url(imgs_glossy/clock_small.png);}.dhx_month_head{background-color:#FFF;}.dhx_after .dhx_month_head,.dhx_before .dhx_month_head{background-color:#EFEDE2;}.dhx_now .dhx_month_head{background-color:#E4EFFF;}.dhx_after .dhx_month_body,.dhx_before .dhx_month_body{background-color:#EFEDE2;}.dhx_cal_event div{border:1px solid #FFBD51;background-color:#FFE4AB;color:#000;}.dhx_cal_event_clear{color:#000;}.dhx_cal_event_line{background-image:url(imgs_glossy/event-bg.png);border:1px solid #FFBD51;color:#000;}.dhx_in_move{background-image:url(imgs_glossy/move.png);}.dhx_cal_event .dhx_body{background-color:#FFE4AB;}.dhx_cal_event .dhx_title{background-color:#FFE4AB;}.dhx_cal_light{-moz-box-shadow:5px 5px 5px #888;-khtml-box-shadow:5px 5px 5px #888;background-color:#EBEBEB;border:2px solid #A4BED4;color:#000;}.dhx_cal_larea{border:1px solid #A4BED4;border-width:0 1px 1px;background-color:#FFF;}.dhx_cal_lsection{background-image:url(imgs_glossy/lightbox.png);font-size:14px;padding:5px 0 5px 10px;color:#000;}.dhx_cal_light_wide .dhx_cal_lsection{background-image:url(imgs_glossy/multi-days-bg.png);}.dhx_cal_ltext textarea{background-color:#fff;color:#000;}.dhx_cal_light select,.dhx_cal_light input{color:#000;}.dhx_save_btn{background-image:url(imgs_glossy/controlls5.png);}.dhx_cancel_btn{background-image:url(imgs_glossy/controlls5.png);}.dhx_delete_btn{background-image:url(imgs_glossy/controlls5.png);}div.dhx_menu_head{background-image:url(imgs_glossy/controlls5.png);border:1px solid #FFE4AB;}div.dhx_menu_icon{background-image:url(imgs_glossy/controlls5.png);border:medium none;}.dhx_section_time{height:20px!important;padding:7px 0!important;text-align:center;background:white;}div.dhx_cal_editor{background-color:#FFE4AB;}.dhx_year_month{background-image:url(imgs_glossy/top-days-bg.png);border:0;}.dhx_year_week{background-image:url(imgs_glossy/top-days-bg.png);}.dhx_month_head{border-right:1px solid #A4BED4;}.dhx_month_body,.dhx_matrix_cell,.dhx_matrix_scell{border-right:1px solid #A4BED4;border-bottom:1px solid #A4BED4;}.dhx_year_body{border-left:1px solid #A4BED4;}.dhx_scale_bar_last{border-right:none;}.dhx_month_head.dhx_year_event{background-color:#FFE4AB;}.dhx_year_body .dhx_before .dhx_month_head,.dhx_year_body .dhx_after .dhx_month_head,.dhx_year_body .dhx_before .dhx_month_head a,.dhx_year_body .dhx_after .dhx_month_head a{color:#EFEDE2!important;}.dhx_cal_lsection .dhx_readonly{color:#000;}.dhx_tooltip{-moz-box-shadow:2px 2px 2px #888;-khtml-box-shadow:2px 2px 2px #888;}.dhx_custom_button{margin-top:-2px;}.dhx_cal_lsection .dhx_fullday{color:#000;}.dhx_cal_lsection.dhx_cal_checkbox{height:16px;line-height:18px;}.dhx_cal_light_wide .dhx_cal_lsection.dhx_cal_checkbox{height:20px;}.dhx_cal_checkbox label{vertical-align:top;}.dhx_cal_light_wide .dhx_cal_lsection{color:black;}.dhx_cal_light_wide .dhx_wrap_section{border-top:1px solid #A4BED4;background-image:url(imgs_glossy/multi-days-bg.png);}.dhx_cal_light_wide .dhx_cal_ltext{border-left:1px solid #A4BED4;}.dhx_cal_light_wide .dhx_cal_ltext{background-color:white;}.dhx_custom_button{background:white;color:black;}.dhx_form_repeat{background:white;}.dhx_repeat_divider{border-left:1px solid #A4BED4;}.dhx_cal_header.dhx_second_cal_header{background-image:url("imgs_glossy/second-top-days-bg.png");padding-right:20px;}.dhx_cal_header div div{border-left:0;}.dhx_scale_bar{padding-top:4px;}.dhx_second_scale_bar{border-bottom:0;padding-top:4px;}.dhx_cal_light_wide .dhx_cal_lsection .dhx_fullday,.dhx_cal_lsection .dhx_fullday{color:#000;font-size:14px;}.dhx_cal_light_wide .dhx_cal_lsection{font-size:14px;padding-right:10px;}
168\ No newline at end of file
169
170=== removed directory 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs'
171=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/but_repeat.gif'
172Binary files addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/but_repeat.gif 2011-04-07 16:41:06 +0000 and addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/but_repeat.gif 1970-01-01 00:00:00 +0000 differ
173=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/buttons.png'
174Binary files addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/buttons.png 2013-06-05 12:43:27 +0000 and addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/buttons.png 1970-01-01 00:00:00 +0000 differ
175=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/calendar.gif'
176Binary files addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/calendar.gif 2011-04-07 16:41:06 +0000 and addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/calendar.gif 1970-01-01 00:00:00 +0000 differ
177=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/clock_big.gif'
178Binary files addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/clock_big.gif 2011-04-07 16:41:06 +0000 and addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/clock_big.gif 1970-01-01 00:00:00 +0000 differ
179=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/clock_small.gif'
180Binary files addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/clock_small.gif 2012-10-24 13:48:59 +0000 and addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/clock_small.gif 1970-01-01 00:00:00 +0000 differ
181=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/collapse_expand_icon.gif'
182Binary files addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/collapse_expand_icon.gif 2012-10-24 13:48:59 +0000 and addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/collapse_expand_icon.gif 1970-01-01 00:00:00 +0000 differ
183=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controls.gif'
184Binary files addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controls.gif 2011-04-07 16:41:06 +0000 and addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controls.gif 1970-01-01 00:00:00 +0000 differ
185=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg.png'
186Binary files addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg.png 2013-06-05 12:43:27 +0000 and addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg.png 1970-01-01 00:00:00 +0000 differ
187=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg_now.png'
188Binary files addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg_now.png 2013-06-05 12:43:27 +0000 and addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg_now.png 1970-01-01 00:00:00 +0000 differ
189=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/icon.png'
190Binary files addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/icon.png 2013-06-05 12:43:27 +0000 and addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/icon.png 1970-01-01 00:00:00 +0000 differ
191=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/images.png'
192Binary files addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/images.png 2013-06-05 12:43:27 +0000 and addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/images.png 1970-01-01 00:00:00 +0000 differ
193=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/loading.gif'
194Binary files addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/loading.gif 2011-04-07 16:41:06 +0000 and addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/loading.gif 1970-01-01 00:00:00 +0000 differ
195=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/resize_dots.png'
196Binary files addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/resize_dots.png 2013-06-05 12:43:27 +0000 and addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/resize_dots.png 1970-01-01 00:00:00 +0000 differ
197=== removed directory 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace'
198=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/arrow_left.png'
199Binary files addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/arrow_left.png 2013-06-05 12:43:27 +0000 and addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/arrow_left.png 1970-01-01 00:00:00 +0000 differ
200=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/arrow_right.png'
201Binary files addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/arrow_right.png 2013-06-05 12:43:27 +0000 and addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/arrow_right.png 1970-01-01 00:00:00 +0000 differ
202=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/but_repeat.gif'
203Binary files addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/but_repeat.gif 2012-10-24 13:48:59 +0000 and addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/but_repeat.gif 1970-01-01 00:00:00 +0000 differ
204=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/calendar.gif'
205Binary files addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/calendar.gif 2012-10-24 13:48:59 +0000 and addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/calendar.gif 1970-01-01 00:00:00 +0000 differ
206=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/clock_big.gif'
207Binary files addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/clock_big.gif 2012-10-24 13:48:59 +0000 and addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/clock_big.gif 1970-01-01 00:00:00 +0000 differ
208=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/clock_small.gif'
209Binary files addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/clock_small.gif 2012-10-24 13:48:59 +0000 and addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/clock_small.gif 1970-01-01 00:00:00 +0000 differ
210=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/close_icon.png'
211Binary files addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/close_icon.png 2013-06-05 12:43:27 +0000 and addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/close_icon.png 1970-01-01 00:00:00 +0000 differ
212=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/collapse_expand_icon.gif'
213Binary files addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/collapse_expand_icon.gif 2012-10-24 13:48:59 +0000 and addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/collapse_expand_icon.gif 1970-01-01 00:00:00 +0000 differ
214=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/controls.png'
215Binary files addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/controls.png 2013-06-05 12:43:27 +0000 and addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/controls.png 1970-01-01 00:00:00 +0000 differ
216=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/databg.png'
217Binary files addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/databg.png 2013-06-05 12:43:27 +0000 and addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/databg.png 1970-01-01 00:00:00 +0000 differ
218=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/databg_now.png'
219Binary files addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/databg_now.png 2013-06-05 12:43:27 +0000 and addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/databg_now.png 1970-01-01 00:00:00 +0000 differ
220=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/resize_dots.png'
221Binary files addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/resize_dots.png 2013-06-05 12:43:27 +0000 and addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/resize_dots.png 1970-01-01 00:00:00 +0000 differ
222=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/resizing.png'
223Binary files addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/resizing.png 2013-06-05 12:43:27 +0000 and addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/resizing.png 1970-01-01 00:00:00 +0000 differ
224=== removed directory 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy'
225=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/blue_tab.png'
226Binary files addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/blue_tab.png 2013-06-05 12:43:27 +0000 and addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/blue_tab.png 1970-01-01 00:00:00 +0000 differ
227=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/blue_tab_wide.png'
228Binary files addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/blue_tab_wide.png 2013-06-05 12:43:27 +0000 and addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/blue_tab_wide.png 1970-01-01 00:00:00 +0000 differ
229=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/but_repeat.gif'
230Binary files addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/but_repeat.gif 2012-10-24 13:48:59 +0000 and addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/but_repeat.gif 1970-01-01 00:00:00 +0000 differ
231=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/buttons.gif'
232Binary files addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/buttons.gif 2012-10-24 13:48:59 +0000 and addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/buttons.gif 1970-01-01 00:00:00 +0000 differ
233=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/calendar.gif'
234Binary files addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/calendar.gif 2012-10-24 13:48:59 +0000 and addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/calendar.gif 1970-01-01 00:00:00 +0000 differ
235=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/clock_big.png'
236Binary files addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/clock_big.png 2013-06-05 12:43:27 +0000 and addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/clock_big.png 1970-01-01 00:00:00 +0000 differ
237=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/clock_small.png'
238Binary files addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/clock_small.png 2013-06-05 12:43:27 +0000 and addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/clock_small.png 1970-01-01 00:00:00 +0000 differ
239=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/collapse_expand_icon.gif'
240Binary files addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/collapse_expand_icon.gif 2012-10-24 13:48:59 +0000 and addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/collapse_expand_icon.gif 1970-01-01 00:00:00 +0000 differ
241=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/controlls5.png'
242Binary files addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/controlls5.png 2013-06-05 12:43:27 +0000 and addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/controlls5.png 1970-01-01 00:00:00 +0000 differ
243=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/databg.png'
244Binary files addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/databg.png 2012-10-24 13:48:59 +0000 and addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/databg.png 1970-01-01 00:00:00 +0000 differ
245=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/databg_now.png'
246Binary files addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/databg_now.png 2012-10-24 13:48:59 +0000 and addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/databg_now.png 1970-01-01 00:00:00 +0000 differ
247=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/event-bg.png'
248Binary files addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/event-bg.png 2013-06-05 12:43:27 +0000 and addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/event-bg.png 1970-01-01 00:00:00 +0000 differ
249=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/icon.png'
250Binary files addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/icon.png 2013-06-05 12:43:27 +0000 and addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/icon.png 1970-01-01 00:00:00 +0000 differ
251=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/left-separator.png'
252Binary files addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/left-separator.png 2013-06-05 12:43:27 +0000 and addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/left-separator.png 1970-01-01 00:00:00 +0000 differ
253=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/left-time-bg.png'
254Binary files addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/left-time-bg.png 2013-06-05 12:43:27 +0000 and addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/left-time-bg.png 1970-01-01 00:00:00 +0000 differ
255=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/lightbox.png'
256Binary files addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/lightbox.png 2013-06-05 12:43:27 +0000 and addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/lightbox.png 1970-01-01 00:00:00 +0000 differ
257=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/loading.gif'
258Binary files addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/loading.gif 2012-10-24 13:48:59 +0000 and addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/loading.gif 1970-01-01 00:00:00 +0000 differ
259=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/move.png'
260Binary files addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/move.png 2013-06-05 12:43:27 +0000 and addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/move.png 1970-01-01 00:00:00 +0000 differ
261=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/multi-days-bg.png'
262Binary files addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/multi-days-bg.png 2013-06-05 12:43:27 +0000 and addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/multi-days-bg.png 1970-01-01 00:00:00 +0000 differ
263=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/second-top-days-bg.png'
264Binary files addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/second-top-days-bg.png 2013-06-05 12:43:27 +0000 and addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/second-top-days-bg.png 1970-01-01 00:00:00 +0000 differ
265=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/top-days-bg.png'
266Binary files addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/top-days-bg.png 2013-06-05 12:43:27 +0000 and addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/top-days-bg.png 1970-01-01 00:00:00 +0000 differ
267=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/top-separator.gif'
268Binary files addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/top-separator.gif 2012-10-24 13:48:59 +0000 and addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/top-separator.gif 1970-01-01 00:00:00 +0000 differ
269=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/white_tab.png'
270Binary files addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/white_tab.png 2013-06-05 12:43:27 +0000 and addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/white_tab.png 1970-01-01 00:00:00 +0000 differ
271=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/white_tab_wide.png'
272Binary files addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/white_tab_wide.png 2013-06-05 12:43:27 +0000 and addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/white_tab_wide.png 1970-01-01 00:00:00 +0000 differ
273=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/license.txt'
274--- addons/web_calendar/static/lib/dhtmlxScheduler/license.txt 2013-05-14 14:34:02 +0000
275+++ addons/web_calendar/static/lib/dhtmlxScheduler/license.txt 1970-01-01 00:00:00 +0000
276@@ -1,228 +0,0 @@
277-
278- GNU GENERAL PUBLIC LICENSE
279-
280-Version 2, June 1991
281-
282-Copyright (C) 1989, 1991 Free Software Foundation, Inc.
283-
284-51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
285-
286-Everyone is permitted to copy and distribute verbatim copies
287-
288-of this license document, but changing it is not allowed.
289-
290-TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
291-
292-0. This License applies to any program or other work which contains a
293-notice placed by the copyright holder saying it may be distributed under
294-the terms of this General Public License. The "Program", below, refers
295-to any such program or work, and a "work based on the Program" means
296-either the Program or any derivative work under copyright law: that is
297-to say, a work containing the Program or a portion of it, either
298-verbatim or with modifications and/or translated into another language.
299-(Hereinafter, translation is included without limitation in the term
300-"modification".) Each licensee is addressed as "you".
301-
302-Activities other than copying, distribution and modification are not
303-covered by this License; they are outside its scope. The act of running
304-the Program is not restricted, and the output from the Program is
305-covered only if its contents constitute a work based on the Program
306-(independent of having been made by running the Program). Whether that
307-is true depends on what the Program does.
308-
309-1. You may copy and distribute verbatim copies of the Program's source
310-code as you receive it, in any medium, provided that you conspicuously
311-and appropriately publish on each copy an appropriate copyright notice
312-and disclaimer of warranty; keep intact all the notices that refer to
313-this License and to the absence of any warranty; and give any other
314-recipients of the Program a copy of this License along with the Program.
315-
316-You may charge a fee for the physical act of transferring a copy, and
317-you may at your option offer warranty protection in exchange for a fee.
318-
319-2. You may modify your copy or copies of the Program or any portion of
320-it, thus forming a work based on the Program, and copy and distribute
321-such modifications or work under the terms of Section 1 above, provided
322-that you also meet all of these conditions:
323-
324-a) You must cause the modified files to carry prominent notices stating
325-that you changed the files and the date of any change.
326-
327-b) You must cause any work that you distribute or publish, that in whole
328-or in part contains or is derived from the Program or any part thereof,
329-to be licensed as a whole at no charge to all third parties under the
330-terms of this License.
331-
332-c) If the modified program normally reads commands interactively when
333-run, you must cause it, when started running for such interactive use in
334-the most ordinary way, to print or display an announcement including an
335-appropriate copyright notice and a notice that there is no warranty (or
336-else, saying that you provide a warranty) and that users may
337-redistribute the program under these conditions, and telling the user
338-how to view a copy of this License. (Exception: if the Program itself is
339-interactive but does not normally print such an announcement, your work
340-based on the Program is not required to print an announcement.)
341-
342-These requirements apply to the modified work as a whole. If
343-identifiable sections of that work are not derived from the Program, and
344-can be reasonably considered independent and separate works in
345-themselves, then this License, and its terms, do not apply to those
346-sections when you distribute them as separate works. But when you
347-distribute the same sections as part of a whole which is a work based on
348-the Program, the distribution of the whole must be on the terms of this
349-License, whose permissions for other licensees extend to the entire
350-whole, and thus to each and every part regardless of who wrote it.
351-
352-Thus, it is not the intent of this section to claim rights or contest
353-your rights to work written entirely by you; rather, the intent is to
354-exercise the right to control the distribution of derivative or
355-collective works based on the Program.
356-
357-In addition, mere aggregation of another work not based on the Program
358-with the Program (or with a work based on the Program) on a volume of a
359-storage or distribution medium does not bring the other work under the
360-scope of this License.
361-
362-3. You may copy and distribute the Program (or a work based on it, under
363-Section 2) in object code or executable form under the terms of Sections
364-1 and 2 above provided that you also do one of the following:
365-
366-a) Accompany it with the complete corresponding machine-readable source
367-code, which must be distributed under the terms of Sections 1 and 2
368-above on a medium customarily used for software interchange; or,
369-
370-b) Accompany it with a written offer, valid for at least three years, to
371-give any third party, for a charge no more than your cost of physically
372-performing source distribution, a complete machine-readable copy of the
373-corresponding source code, to be distributed under the terms of Sections
374-1 and 2 above on a medium customarily used for software interchange; or,
375-
376-c) Accompany it with the information you received as to the offer to
377-distribute corresponding source code. (This alternative is allowed only
378-for noncommercial distribution and only if you received the program in
379-object code or executable form with such an offer, in accord with
380-Subsection b above.)
381-
382-The source code for a work means the preferred form of the work for
383-making modifications to it. For an executable work, complete source code
384-means all the source code for all modules it contains, plus any
385-associated interface definition files, plus the scripts used to control
386-compilation and installation of the executable. However, as a special
387-exception, the source code distributed need not include anything that is
388-normally distributed (in either source or binary form) with the major
389-components (compiler, kernel, and so on) of the operating system on
390-which the executable runs, unless that component itself accompanies the
391-executable.
392-
393-If distribution of executable or object code is made by offering access
394-to copy from a designated place, then offering equivalent access to copy
395-the source code from the same place counts as distribution of the source
396-code, even though third parties are not compelled to copy the source
397-along with the object code.
398-
399-4. You may not copy, modify, sublicense, or distribute the Program
400-except as expressly provided under this License. Any attempt otherwise
401-to copy, modify, sublicense or distribute the Program is void, and will
402-automatically terminate your rights under this License. However, parties
403-who have received copies, or rights, from you under this License will
404-not have their licenses terminated so long as such parties remain in
405-full compliance.
406-
407-5. You are not required to accept this License, since you have not
408-signed it. However, nothing else grants you permission to modify or
409-distribute the Program or its derivative works. These actions are
410-prohibited by law if you do not accept this License. Therefore, by
411-modifying or distributing the Program (or any work based on the
412-Program), you indicate your acceptance of this License to do so, and all
413-its terms and conditions for copying, distributing or modifying the
414-Program or works based on it.
415-
416-6. Each time you redistribute the Program (or any work based on the
417-Program), the recipient automatically receives a license from the
418-original licensor to copy, distribute or modify the Program subject to
419-these terms and conditions. You may not impose any further restrictions
420-on the recipients' exercise of the rights granted herein. You are not
421-responsible for enforcing compliance by third parties to this License.
422-
423-7. If, as a consequence of a court judgment or allegation of patent
424-infringement or for any other reason (not limited to patent issues),
425-conditions are imposed on you (whether by court order, agreement or
426-otherwise) that contradict the conditions of this License, they do not
427-excuse you from the conditions of this License. If you cannot distribute
428-so as to satisfy simultaneously your obligations under this License and
429-any other pertinent obligations, then as a consequence you may not
430-distribute the Program at all. For example, if a patent license would
431-not permit royalty-free redistribution of the Program by all those who
432-receive copies directly or indirectly through you, then the only way you
433-could satisfy both it and this License would be to refrain entirely from
434-distribution of the Program.
435-
436-If any portion of this section is held invalid or unenforceable under
437-any particular circumstance, the balance of the section is intended to
438-apply and the section as a whole is intended to apply in other
439-circumstances.
440-
441-It is not the purpose of this section to induce you to infringe any
442-patents or other property right claims or to contest validity of any
443-such claims; this section has the sole purpose of protecting the
444-integrity of the free software distribution system, which is implemented
445-by public license practices. Many people have made generous
446-contributions to the wide range of software distributed through that
447-system in reliance on consistent application of that system; it is up to
448-the author/donor to decide if he or she is willing to distribute
449-software through any other system and a licensee cannot impose that choice.
450-
451-This section is intended to make thoroughly clear what is believed to be
452-a consequence of the rest of this License.
453-
454-8. If the distribution and/or use of the Program is restricted in
455-certain countries either by patents or by copyrighted interfaces, the
456-original copyright holder who places the Program under this License may
457-add an explicit geographical distribution limitation excluding those
458-countries, so that distribution is permitted only in or among countries
459-not thus excluded. In such case, this License incorporates the
460-limitation as if written in the body of this License.
461-
462-9. The Free Software Foundation may publish revised and/or new versions
463-of the General Public License from time to time. Such new versions will
464-be similar in spirit to the present version, but may differ in detail to
465-address new problems or concerns.
466-
467-Each version is given a distinguishing version number. If the Program
468-specifies a version number of this License which applies to it and "any
469-later version", you have the option of following the terms and
470-conditions either of that version or of any later version published by
471-the Free Software Foundation. If the Program does not specify a version
472-number of this License, you may choose any version ever published by the
473-Free Software Foundation.
474-
475-10. If you wish to incorporate parts of the Program into other free
476-programs whose distribution conditions are different, write to the
477-author to ask for permission. For software which is copyrighted by the
478-Free Software Foundation, write to the Free Software Foundation; we
479-sometimes make exceptions for this. Our decision will be guided by the
480-two goals of preserving the free status of all derivatives of our free
481-software and of promoting the sharing and reuse of software generally.
482-
483-NO WARRANTY
484-
485-11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
486-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
487-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
488-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
489-EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
490-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
491-ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH
492-YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
493-NECESSARY SERVICING, REPAIR OR CORRECTION.
494-
495-12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
496-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
497-AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR
498-DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL
499-DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM
500-(INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED
501-INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF
502-THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR
503-OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
504-
505
506=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/readme.txt'
507--- addons/web_calendar/static/lib/dhtmlxScheduler/readme.txt 2012-10-24 13:48:59 +0000
508+++ addons/web_calendar/static/lib/dhtmlxScheduler/readme.txt 1970-01-01 00:00:00 +0000
509@@ -1,6 +0,0 @@
510-dhtmlxScheduler v.3.5 build 120823
511-
512-This software is allowed to use under GPL or you need to obtain Commercial or Enterise License
513-to use it in non-GPL project. Please contact sales@dhtmlx.com for details
514-
515-(c) DHTMLX Ltd.
516\ No newline at end of file
517
518=== removed directory 'addons/web_calendar/static/lib/dhtmlxScheduler/sources'
519=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/sources/dhtmlxscheduler.css'
520--- addons/web_calendar/static/lib/dhtmlxScheduler/sources/dhtmlxscheduler.css 2012-10-24 13:48:59 +0000
521+++ addons/web_calendar/static/lib/dhtmlxScheduler/sources/dhtmlxscheduler.css 1970-01-01 00:00:00 +0000
522@@ -1,1419 +0,0 @@
523-/*
524-This software is allowed to use under GPL or you need to obtain Commercial or Enterise License
525-to use it in non-GPL project. Please contact sales@dhtmlx.com for details
526-*/
527-
528-.dhtmlx_message_area{
529- position:fixed;
530- right:5px;
531- width:250px;
532- z-index:1000;
533-}
534-
535-.dhtmlx-info{
536- min-width: 120px;
537- padding:4px 4px 4px 20px;
538- font-family:Tahoma;
539- z-index: 10000;
540-
541- margin:5px;
542- margin-bottom:10px;
543-
544- -webkit-transition: all .5s ease;
545- -moz-transition: all .5s ease;
546- -o-transition: all .5s ease;
547- transition: all .5s ease;
548-}
549-.dhtmlx-info.hidden{
550- height:0px;
551- padding:0px;
552- border-width:0px;
553- margin:0px;
554- overflow:hidden;
555-}
556-
557-.dhtmlx_modal_box{
558- overflow:hidden;
559- display: inline-block;
560- min-width: 300px;
561- width: 300px;
562- text-align: center;
563- position:fixed;
564-
565- background-color: #fff;
566- background:-webkit-linear-gradient(top, #ffffff 1%, #d0d0d0 99%);
567- background:-moz-linear-gradient(top, #ffffff 1%, #d0d0d0 99%);
568- box-shadow: 0px 0px 14px #888;
569-
570- font-family: Tahoma;
571-
572- z-index:20000;
573-
574- border-radius:6px;
575- border: 1px solid #ffffff;
576-}
577-
578-.dhtmlx_popup_title{
579- border-top-left-radius:5px;
580- border-top-right-radius:5px;
581-
582- border-width:0px;
583-
584- background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAoCAMAAAAIaGBFAAAAhFBMVEVwcHBubm5sbGxqampoaGhmZmZlZWVjY2NhYWFfX19dXV1bW1taWlpYWFhWVlZUVFRSUlJRUVFPT09NTU1LS0tJSUlHR0dGRkZERERCQkJAQEA+Pj49PT09PT0+Pj5AQEBBQUFDQ0NERERGRkZHR0dJSUlKSkpMTExMTEw5OTk5OTk5OTkny8YEAAAAQklEQVQImQXBCRJCAAAAwKVSQqdyjSPXNP7/QLsIhA6OTiJnF7GrRCpzc/fw9PKW+/gqlCq1RqvTG/yMJrPF6m/bAVEhAxxnHG0oAAAAAElFTkSuQmCC);
585- background-image: -webkit-linear-gradient(top, #707070 1%, #3d3d3d 70%, #4c4c4c 97%, #393939 97%);
586- background-image: -moz-linear-gradient(top, #707070 1%, #3d3d3d 70%, #4c4c4c 97%, #393939 97%);
587-}
588-
589-.dhtmlx-info, .dhtmlx_popup_button, .dhtmlx_button{
590- user-select: none;
591- -webkit-user-select: none;
592- -moz-user-select:-moz-none;
593-
594- cursor:pointer;
595-}
596-
597-.dhtmlx_popup_text{
598- overflow:hidden;
599-}
600-
601-.dhtmlx_popup_controls{
602- border-radius:6px;
603- padding:5px;
604-}
605-
606-.dhtmlx_popup_button, .dhtmlx_button{
607- height: 30px;
608- line-height:30px;
609-
610- display: inline-block;
611- margin: 0 5px;
612- border-radius: 6px;
613-
614- color:#FFF;
615-}
616-.dhtmlx_popup_button{
617- min-width: 120px;
618-}
619-
620-div.dhx_modal_cover {
621- background-color:#000;
622- cursor:default;
623-
624- filter:alpha(opacity = 20);
625- opacity: 0.2;
626-
627- position: fixed;
628- z-index:19999;
629- left: 0px; top: 0px;
630- width: 100%; height: 100%;
631-
632- border: none;
633- zoom: 1;
634-}
635-
636-.dhtmlx-info img, .dhtmlx_modal_box img{
637- float:left;
638- margin-right:20px;
639-}
640-
641-.dhtmlx-alert-error .dhtmlx_popup_title, .dhtmlx-confirm-error .dhtmlx_popup_title{
642- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAsCAIAAAArRUU2AAAATklEQVR4nIWLuw2AMBBDjVuQiBT2oWbRDATrnB0KQOJoqPzRe3BrHI6dcBASYREKovtK6/6DsDOX+stN+3H1YX9ciRgnYq5EWYhS2dftBIuLT4JyIrPCAAAAAElFTkSuQmCC);
643-}
644-.dhtmlx-alert-error, .dhtmlx-confirm-error {
645- border: 1px solid #ff0000;
646-}
647-
648-/*Skin section*/
649-.dhtmlx_button, .dhtmlx_popup_button{
650- box-shadow: 0px 0px 4px #888;
651- border:1px solid #838383;
652-}
653-.dhtmlx_button input, .dhtmlx_popup_button div{
654- border:1px solid #FFF;
655- background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAeCAMAAADaS4T1AAAAYFBMVEVwcHBtbW1ra2toaGhmZmZjY2NhYWFeXl5cXFxaWlpXV1dVVVVSUlJQUFBNTU1LS0tJSUlGRkZERERBQUE/Pz88PDw9PT0+Pj5AQEBCQkJDQ0NFRUVHR0dISEhKSkpMTEzqthaMAAAAMklEQVQImQXBhQ2AMAAAsOIMlwWH/8+kRSKVyRVKlVrQaHV6g9FktlhFm93hdLk9Xt8PIfgBvdUqyskAAAAASUVORK5CYII=);
656- background-image: -webkit-linear-gradient(top, #707070 1%, #3d3d3d 70%, #4c4c4c 99%);
657- background-image: -moz-linear-gradient(top, #707070 1%, #3d3d3d 70%, #4c4c4c 99%);
658-
659- border-radius:6px;
660- font-size:15px;
661- font-weight:normal;
662- -moz-box-sizing:content-box;
663- box-sizing:content-box;
664-
665- color:#fff; padding:0px; margin:0px;
666- vertical-align:top;
667-
668- height:28px;
669- line-height:28px;
670-}
671-
672-.dhtmlx_button input:focus, .dhtmlx_button input:active, .dhtmlx_popup_button div:active, .dhtmlx_popup_button div:focus{
673-
674- background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAeCAMAAADaS4T1AAAAXVBMVEVwcHBubm5tbW1sbGxra2tpaWloaGhnZ2dmZmZlZWVjY2NiYmJhYWFgYGBfX19dXV1cXFxbW1taWlpZWVlXV1dWVlZVVVVUVFRTU1NRUVFQUFBPT09OTk5NTU1LS0tT9SY0AAAAMUlEQVQImQXBhQGAMAAAIGxnx2z9/00BiVQmVyhVakGj1ekNRpPZYhVtdofT5fZ4fT8hpwG05JjexgAAAABJRU5ErkJggg==);
675- background-image: -webkit-linear-gradient(top, #707070 1%, #4c4c4c 99%);
676- background-image: -moz-linear-gradient(top, #707070 1%, #4c4c4c 99%);
677-}
678-.dhtmlx_popup_title{
679- color:#fff;
680- text-shadow: 1px 1px #000;
681- height:40px; line-height:40px;
682- font-size:20px;
683-}
684-.dhtmlx_popup_text{
685- margin:15px 15px 5px 15px;
686- font-size:14px;
687- color:#000;
688- min-height:30px;
689- border-radius:6px;
690-}
691-
692-
693-.dhtmlx-info, .dhtmlx-error{
694- font-size:14px;
695- color:#000;
696- box-shadow: 0px 0px 10px #888;
697-
698- padding:0px;
699-
700- background-color:#FFF;
701- border-radius:3px;
702- border:1px solid #ffffff;
703-}
704-.dhtmlx-info div{
705- padding:5px 10px 5px 10px;
706- background-color: #fff;
707-
708- border-radius:3px;
709- border:1px solid #B8B8B8;
710-}
711-.dhtmlx-error{
712- background-color: #d81b1b;
713- border:1px solid #ff3c3c;
714- box-shadow: 0px 0px 10px #000;
715-}
716-.dhtmlx-error div{
717- background-color: #d81b1b;
718- border:1px solid #940000;
719- color:#FFF;
720-}
721-
722-
723-.dhx_cal_container{
724- background-color:#C2D5FC;
725- font-family:Tahoma;
726- font-size:8pt;
727- position:relative;
728- overflow:hidden;
729-}
730-.dhx_cal_container div{
731- -moz-user-select:none;
732- -moz-user-select:-moz-none;
733-}
734-.dhx_cal_navline{
735- height:20px;
736- position:absolute;
737- z-index:3;
738- width:750px;
739- color:#2F3A48;
740-}
741-.dhx_cal_navline div{
742- position:absolute;
743- top:2px;
744- white-space:nowrap;
745-}
746-.dhx_cal_navline .dhx_cal_date {
747- font-weight:600;
748- left:210px;
749- padding-top: 1px;
750-}
751-.dhx_cal_button .dhx_left_bg{
752- width:1px; overflow:hidden;
753- height:17px;
754- z-index:20;
755- top:0px;
756-}
757-.dhx_cal_prev_button{
758- background-image:url(imgs/buttons.png);
759- background-position:0px 0px;
760- width:29px; height:17px;
761- left:50px; cursor:pointer;
762-}
763-.dhx_cal_next_button{
764- background-image:url(imgs/buttons.png);
765- background-position: -30px 0px;
766- width:29px; height:17px;
767- left:80px; cursor:pointer;
768-}
769-.dhx_cal_today_button{
770- background-image:url(imgs/buttons.png);
771- background-position: -60px 0px;
772- width:75px; height:17px;
773- left:112px; cursor:pointer;
774- text-align:center;
775- text-decoration:underline;
776-}
777-.dhx_cal_tab{
778- width:59px; height:19px;
779- text-align:center;
780- text-decoration:underline;
781- padding-top:2px;
782- cursor:pointer;
783- background-color: #D8E1EA;
784-
785- -webkit-border-top-left-radius: 4px;
786- -webkit-border-top-right-radius: 4px;
787- -moz-border-radius-topleft: 4px;
788- -moz-border-radius-topright: 4px;
789- border-top-left-radius: 4px;
790- border-top-right-radius: 4px;
791-}
792-.dhx_cal_tab.active{
793- text-decoration:none;
794-
795- cursor:default;
796- font-weight:bold;
797- border: 1px dotted #586A7E;
798- border-bottom: 0;
799- background-color: #C2D5FC;
800-}
801-.dhx_cal_header{
802- position:absolute;
803- left:10px; top:23px;
804- width:750px;
805- border-top:1px dotted #8894A3;
806- border-right:1px dotted #8894A3;
807- z-index:2;
808- overflow:hidden;
809- color:#2F3A48;
810-}
811-.dhx_cal_data{
812- border-top:1px dotted #8894A3;
813- position:absolute;
814- top:44px;
815- width:600px;
816- overflow-y:auto;
817- overflow-x:hidden;
818-}
819-.dhx_scale_bar{
820- position:absolute;
821- text-align:center;
822- background-color:#C2D5FC;
823- padding-top:3px;
824- border-left:1px dotted #586A7E;
825-}
826-.dhx_scale_holder{
827- position:absolute;
828- border-right:1px dotted #586A7E;
829- background-image:url(imgs/databg.png);
830-}
831-.dhx_scale_holder_now{
832- position:absolute;
833- border-right:1px dotted #586A7E;
834- background-image:url(imgs/databg_now.png);
835-}
836-.dhx_scale_hour{
837- height:41px;
838- width:50px;
839- border-bottom:1px dotted #8894A3;
840- background-color:#C2D5FC;
841- text-align:center;
842- line-height:40px;
843- color:#586A7E;
844- overflow:hidden;
845-}
846-.dhx_month_head{
847- background-color:#EBEFF4;
848- color:#2F3A48;
849- border-right:1px dotted #586A7E;
850- height:18px;
851- padding-right:5px;
852- padding-top:3px;
853- text-align:right;
854-}
855-.dhx_month_body{
856- border-right:1px dotted #586A7E;
857- border-bottom:1px dotted #586A7E;
858- background-color:#FFFFFF;
859-}
860-.dhx_now .dhx_month_body{
861- background-color:#E2EDFF;
862-}
863-.dhx_after .dhx_month_body, .dhx_before .dhx_month_body{
864- background-color:#ECECEC;
865-}
866-.dhx_after .dhx_month_head, .dhx_before .dhx_month_head{
867- background-color:#E2E3E6;
868- color:#94A6BB;
869-}
870-.dhx_now .dhx_month_head{
871- background-color:#D1DEF4;
872- font-weight:bold;
873-}
874-.dhx_cal_drag{
875- position:absolute;
876- z-index:9999;
877- background-color:#FFE763;
878- border:1px solid #B7A543;
879- opacity:0.5;
880- filter:alpha(opacity=50);
881-}
882-.dhx_loading{
883- position:absolute;
884- width:128px;
885- height:15px;
886- background-image:url(imgs/loading.gif);
887- z-index:9999;
888-}
889-.dhx_multi_day_icon, .dhx_multi_day{
890- background-color:#E1E6FF;
891- background-repeat:no-repeat;
892- border-right:1px dotted #8894A3;
893-}
894-.dhx_multi_day{
895- position: absolute;
896- border-top:1px dotted #8894A3;
897-}
898-.dhx_multi_day_icon, .dhx_multi_day_icon_small{
899- background-position: center center;
900- background-color:#E1E6FF;
901- background-repeat:no-repeat;
902- border-bottom:1px dotted #8894A3;
903- border-right:1px dotted #8894A3;
904-}
905-.dhx_multi_day_icon{
906- background-image:url(imgs/clock_big.gif);
907-}
908-.dhx_multi_day_icon_small{
909- background-image:url(imgs/clock_small.gif);
910-
911-}
912-.dhtmlxLayoutPolyContainer_dhx_skyblue .dhx_cal_container {
913- background-color: #d0e5ff;
914-}
915-.dhx_cal_event .dhx_header, .dhx_cal_event .dhx_title, .dhx_cal_event .dhx_body, .dhx_cal_event .dhx_footer {
916- background-color:#FFE763;
917- border:1px solid #B7A543;
918- color:#887A2E;
919- overflow:hidden;
920- width:100%;
921-
922- font-family:Tahoma;
923- font-size:8pt;
924-}
925-.dhx_move_denied .dhx_cal_event .dhx_header, .dhx_move_denied .dhx_cal_event .dhx_title{
926- cursor:default;
927-}
928-.dhx_cal_event .dhx_header{
929- height:1px;
930- margin-left:1px;
931- border-width:1px 1px 0px 1px;
932- cursor:pointer;
933-}
934-.dhx_cal_event .dhx_title {
935- height:12px;
936- border-width:0px 1px 1px 1px;
937- border-bottom-style:dotted;
938-
939- font-size:7pt;
940- font-weight:bold;
941- text-align:center;
942-
943- background-position:right;
944- background-repeat:no-repeat;
945- cursor:pointer;
946-}
947-.dhx_cal_event .dhx_body, .dhx_cal_event.dhx_cal_select_menu .dhx_body{
948- border-width:0 1px 1px 1px;
949- padding:5px;
950-}
951-.dhx_resize_denied {
952- cursor:default !important;
953-}
954-.dhx_cal_event .dhx_event_resize {
955- cursor:s-resize;
956-}
957-.dhx_cal_event .dhx_footer, .dhx_cal_event .dhx_select_menu_footer{
958- height:1px;
959- margin-left:2px;
960- border-width:0px 1px 1px 1px;
961-}
962-.dhx_cal_event_line{
963- background-color:#FFE763;
964- border:1px solid #B7A543;
965- border-radius:3px;
966- font-family:Tahoma;
967- font-size:8pt;
968- height:13px;
969- padding-left:10px;
970- color:#887A2E;
971- cursor:pointer;
972- overflow:hidden;
973-}
974-.dhx_cal_event_clear{
975- font-family:Tahoma;
976- font-size:8pt;
977- height:13px;
978- padding-left:2px;
979- color:#887A2E;
980- white-space:nowrap;
981- overflow:hidden;
982- cursor:pointer;
983-}
984-.dhx_in_move{
985- background-color:#FFFF80;
986-}
987-div.dhx_cal_editor{
988- background-color:#FFE763;
989- border:1px solid #B7A543;
990- border-top-style:dotted;
991- z-index:999;
992- position:absolute;
993- overflow:hidden;
994-}
995-textarea.dhx_cal_editor{
996- width:100%;
997- height:100%;
998- border:0px solid black;
999- margin:none;
1000- padding:none;
1001- overflow:auto;
1002-}
1003-div.dhx_menu_head{
1004- background-image:url(imgs/controls.gif);
1005- background-position: 0px -43px;
1006- width:10px; height:10px;
1007- margin-left:5px; margin-top:1px;
1008- border:none;
1009- cursor:default;
1010-}
1011-div.dhx_menu_icon{
1012- background-image:url(imgs/controls.gif);
1013- width:20px; height:20px;
1014- margin-left:-5px; margin-top:0px;
1015- border:none;
1016- cursor:pointer;
1017-}
1018-div.icon_details{
1019- background-position: 0px 0px;
1020-}
1021-div.icon_edit{
1022- background-position: -22px 0px;
1023-}
1024-div.icon_save{
1025- background-position: -84px -1px;
1026-}
1027-div.icon_cancel{
1028- background-position: -62px 0px;
1029-}
1030-div.icon_delete{
1031- background-position: -42px 0px;
1032-}
1033-.dhx_unselectable, .dhx_unselectable div{
1034- -webkit-user-select:none;
1035- -moz-user-select:none;
1036- -moz-user-select:-moz-none;
1037-}
1038-.dhx_cal_light{
1039- background-color:#FFE763;
1040- border-radius:5px;
1041- font-family:Tahoma;
1042- font-size:8pt;
1043- border:1px solid #B7A64B;
1044- color:#887A2E;
1045-
1046- position:absolute;
1047- z-index:10001;
1048-
1049- width:580px;
1050- height:300px;
1051-
1052- box-shadow:5px 5px 5px #888;
1053-}
1054-.dhx_cal_light_wide{
1055- width:650px;
1056-}
1057-.dhx_mark{
1058- position:relative; top:3px;
1059- background-image:url('./imgs/controls.gif');
1060- background-position: 0px -43px;
1061- padding-left:10px;
1062-}
1063-.dhx_ie6 .dhx_mark{
1064- background-position: 6px -41px;
1065-}
1066-
1067-.dhx_cal_light select{
1068- font-family:Tahoma;
1069- font-size:8pt;
1070- color:#887A2E;
1071- padding:2px;
1072- margin:0px;
1073-}
1074-.dhx_cal_ltitle{
1075- padding:2px 0px 2px 5px;
1076- overflow:hidden;
1077- white-space:nowrap;
1078-}
1079-.dhx_cal_ltitle span{
1080- white-space:nowrap;
1081-}
1082-.dhx_cal_lsection{
1083- background-color:#DBCF8C;
1084- color:#FFF4B5;
1085- font-weight:bold;
1086- padding:5px 0px 3px 10px;
1087-}
1088-.dhx_section_time{
1089- background-color:#DBCF8C;
1090- white-space:nowrap;
1091-}
1092-.dhx_cal_lsection .dhx_fullday{
1093- float:right;
1094- margin-right:5px;
1095- color:#887A2E;
1096- font-size:12px;
1097- font-weight:normal;
1098- line-height:20px;
1099- vertical-align:top;
1100- cursor:pointer;
1101-}
1102-.dhx_cal_lsection{
1103- font-size:18px;
1104- font-family:Arial;
1105-}
1106-.dhx_cal_ltext{
1107- padding:2px 0px 2px 10px;
1108- overflow:hidden;
1109-}
1110-.dhx_cal_ltext textarea{
1111- background-color: #FFF4B5; /* #FFF4B5; should be the same for dhx_cal_larea, was transperent */
1112- overflow:auto;
1113- border:none;
1114- color:#887A2E;
1115- height:100%;
1116- width:100%;
1117- outline:none !important;
1118- resize: none;
1119-}
1120-.dhx_time{
1121- font-weight:bold;
1122-}
1123-.dhx_cal_light .dhx_title{
1124- padding-left:10px;
1125-}
1126-.dhx_cal_larea{
1127- border:1px solid #DCC43E;
1128- background-color:#FFF4B5;
1129- overflow:hidden;
1130-
1131- margin-left:3px;
1132-
1133- width:572px;
1134- height:1px;
1135-}
1136-.dhx_btn_set{
1137- padding:5px 10px 0px 10px;
1138- float:left;
1139-}
1140-.dhx_btn_set div{
1141- float:left;
1142- height:21px;
1143- line-height:21px;
1144- vertical-align:middle;
1145- cursor:pointer;
1146-}
1147-.dhx_save_btn{
1148- background-image:url('./imgs/controls.gif');
1149- background-position:-84px 0px;
1150- width:21px;
1151-
1152-}
1153-.dhx_cancel_btn{
1154- background-image:url('./imgs/controls.gif');
1155- background-position:-63px 0px;
1156- width:20px;
1157-}
1158-.dhx_delete_btn{
1159- background-image:url('./imgs/controls.gif');
1160- background-position:-42px 0px;
1161- width:20px;
1162-}
1163-.dhx_cal_cover{
1164- width:100%;
1165- height:100%;
1166- position:absolute;
1167- z-index:10000;
1168- top:0px;
1169- left:0px;
1170- background-color:black;
1171-
1172- opacity:0.1;
1173- filter:alpha(opacity=10);
1174-}
1175-.dhx_custom_button{
1176- padding:0px 3px 0px 3px;
1177- color:#887A2E;
1178- font-family:Tahoma;
1179- font-size:8pt;
1180- background-color:#FFE763;
1181- font-weight:normal;
1182- margin-right:5px;
1183- margin-top:0px;
1184- cursor:pointer;
1185-}
1186-.dhx_custom_button div{
1187- cursor:pointer;
1188- float:left;
1189- height:21px;
1190- line-height:21px;
1191- vertical-align:middle;
1192-}
1193-
1194-
1195-.dhx_cal_light_wide .dhx_cal_larea{
1196- border-top-width:0px;
1197-}
1198-.dhx_cal_light_wide .dhx_cal_lsection{
1199- border:0px;
1200- float:left;
1201- text-align:right;
1202- width:100px;
1203- height:20px;
1204- font-size:16px;
1205- padding: 5px 0px 0px 10px;
1206-}
1207-.dhx_cal_light_wide .dhx_wrap_section{
1208- border-top:1px solid #DBCF8C;
1209- position:relative;
1210- background-color:#DBCF8C;
1211- overflow:hidden;
1212-}
1213-.dhx_cal_light_wide .dhx_section_time{
1214- padding-top:2px !important;
1215- height:20px !important;
1216-}
1217-.dhx_section_time{
1218- text-align: center;
1219-}
1220-.dhx_cal_light_wide .dhx_cal_larea{
1221- width:730px;
1222-}
1223-.dhx_cal_light_wide{
1224- width:738px;
1225-}
1226-
1227-.dhx_cal_light_wide .dhx_section_time{
1228- background:transparent;
1229-}
1230-.dhx_cal_light_wide .dhx_cal_checkbox label{
1231- padding-left:0px;
1232-}
1233-.dhx_cal_wide_checkbox input{
1234- margin-top:8px;
1235- margin-left:14px;
1236-}
1237-.dhx_cal_light input{
1238- font-family:Tahoma;
1239- font-size:8pt;
1240- color:#887A2E;
1241-}
1242-.dhx_cal_light_wide .dhx_cal_lsection .dhx_fullday{
1243- float:none;
1244- margin-right:0px;
1245- color:#FFF4B5;
1246- font-weight:bold;
1247- font-size:16px;
1248- font-family:Arial;
1249- cursor:pointer;
1250-}
1251-.dhx_custom_button{
1252- float: right;
1253- height: 21px;
1254- width:90px;
1255- -webkit-border-radius: 4px;
1256- -moz-border-radius: 4px;
1257- -ms-border-radius: 4px;
1258- -o-border-radius: 4px;
1259- border-radius: 4px;
1260-}
1261-.dhx_cal_light_wide .dhx_custom_button {
1262- position:absolute;
1263- top:0;
1264- right:0;
1265- margin-top: 2px;
1266-}
1267-.dhx_cal_light_wide .dhx_repeat_right {
1268- margin-right: 55px;
1269-}
1270-.dhx_minical_popup{
1271- position:absolute;z-index:10100;
1272- width:251px; height:175px;
1273-}
1274-.dhx_scale_bar_header {
1275- position: absolute;
1276- border-bottom: 1px dotted #8894A3;
1277- width: 100%;
1278-}
1279-.dhx_expand_icon {
1280- position:absolute; top:0px; right:0px;
1281- background-image:url(./imgs/collapse_expand_icon.gif);
1282- width:18px; height:18px;
1283- cursor:pointer;
1284- background-position:0px 18px;
1285- z-index:16;
1286-}
1287-.dhx_scheduler_agenda .dhx_cal_data {
1288- background-image:url(./imgs/databg.png);
1289-}
1290-.dhx_agenda_area{
1291- width:100%;
1292- overflow-y:auto;
1293- background-image:url(./imgs/databg.png);
1294-}
1295-.dhx_agenda_line{
1296- height:21px;
1297- clear:both;
1298- overflow:hidden;
1299-}
1300-.dhx_agenda_line div{
1301- float:left;
1302- width:188px;
1303- border-right:1px dotted #8894A3;
1304- text-align:center;
1305- line-height:21px;
1306- overflow:hidden;
1307-}
1308-.dhx_agenda_area .dhx_agenda_line div{
1309- border-right:0px dotted #8894A3;
1310-}
1311-.dhx_v_border{
1312- position:absolute;
1313- left:187px;
1314- top:0;
1315- border-right:1px dotted #8894A3;
1316- width:1px;
1317- height:100%;
1318-}
1319-.dhx_agenda_line .dhx_event_icon{
1320- width:20px;
1321- border-width:0px;
1322- background:url(./imgs/icon.png) no-repeat;
1323- background-position: 5px 4px;
1324- cursor:pointer;
1325-}
1326-.dhx_agenda_line span{
1327- padding-left:5px;
1328- line-height:21px;
1329-}
1330-
1331-
1332-.dhx_year_body{
1333- border-left:1px dotted #586A7E;
1334-}
1335-.dhx_year_week{
1336- position:relative;
1337-}
1338-.dhx_scale_bar_last{
1339- border-right:1px dotted #586A7E;
1340-}
1341-.dhx_year_month{
1342- height:18px;
1343- padding-top:3px;
1344- border:1px dotted #586A7E;
1345- text-align:center;
1346- vertical-align:middle;
1347-}
1348-.dhx_year_body .dhx_before .dhx_month_head, .dhx_year_body .dhx_after .dhx_month_head, .dhx_year_body .dhx_before .dhx_month_head a, .dhx_year_body .dhx_after .dhx_month_head a{
1349- color:#E2E3E6 !important;
1350-}
1351-.dhx_year_body .dhx_month_body{
1352- height:0px;
1353- overflow:hidden;
1354-}
1355-.dhx_month_head.dhx_year_event{
1356- background-color:#FFE763;
1357-}
1358-.dhx_year_body .dhx_before .dhx_month_head, .dhx_year_body .dhx_after .dhx_month_head{
1359- cursor: default;
1360-}
1361-.dhx_tooltip{
1362- border:1px solid #BBBBBB;
1363- background-image:url(./imgs/databg.png);
1364- position:absolute;
1365- z-index:9998;
1366- width:300px;
1367- height:auto;
1368- font-family:Tahoma;
1369- font-size:8pt;
1370- overflow:hidden;
1371-}
1372-
1373-.dhx_tooltip_line{
1374- line-height:20px;
1375- height:20px;
1376- overflow:hidden;
1377-}
1378-
1379-.dhx_tooltip_line .dhx_event_icon{
1380- width:20px; height:20px;
1381- padding-right:10px;
1382- float:left;
1383- border-width:0px;
1384- position:relative;
1385- background:url(./imgs/icon.png) no-repeat;
1386- background-position: 5px 4px;
1387- cursor:pointer;
1388-}
1389-
1390-.dhx_tooltip_date{
1391- float:left;
1392- width:auto;
1393- padding-left:5px;
1394- text-align:center;
1395-}
1396-
1397-.dhx_text_disabled{
1398- color:#887A2E;
1399- font-family:Tahoma;
1400- font-size:8pt;
1401-}
1402-
1403-.dhx_mini_calendar{
1404- -moz-box-shadow:5px 5px 5px #888; /*Doesn't work in IE*/
1405- -khtml-box-shadow: 5px 5px 5px #888;
1406-}
1407-
1408-.dhx_mini_calendar .dhx_month_head{
1409- cursor:pointer;
1410-}
1411-.dhx_mini_calendar .dhx_calendar_click{
1412- background-color: #C2D5FC;
1413-}
1414-.dhx_cal_navline div.dhx_minical_icon{
1415- width:18px;
1416- height:18px;
1417- left:190px;
1418- top:1px;
1419- cursor:pointer;
1420- background-image:url(./imgs/calendar.gif);
1421-}
1422-
1423-.dhx_matrix_scell {
1424- height: 100%;
1425-}
1426-
1427-.dhx_matrix_cell, .dhx_matrix_scell{
1428- overflow:hidden;
1429- text-align:center;
1430- vertical-align:middle;
1431- border-bottom:1px dotted #8894A3;
1432- border-right:1px dotted #8894A3;
1433-}
1434-.dhx_matrix_cell{
1435- background-color:white;
1436-}
1437-.dhx_matrix_line{
1438- overflow: hidden;
1439-}
1440-.dhx_matrix_cell div, .dhx_matrix_scell div{
1441- overflow:hidden;
1442- text-align:center;
1443- height:auto;
1444-}
1445-
1446-.dhx_cal_lsection .dhx_readonly{
1447- font-size:9pt;
1448- font-size:8pt;
1449- padding:2px;
1450- color:#887A2E;
1451-}
1452-.dhx_cal_event_line .dhx_event_resize {
1453- cursor: w-resize;
1454- background: url(./imgs/resize_dots.png) repeat-y;
1455- position: absolute;
1456- top: 0;
1457- width: 4px;
1458-}
1459-.dhx_event_resize_start {
1460- left: 0;
1461-}
1462-.dhx_event_resize_end {
1463- right: 0;
1464-}
1465-
1466-/* Tree view */
1467-.dhx_matrix_scell.folder, .dhx_data_table.folder .dhx_matrix_cell{
1468- background-color: #969394;
1469- cursor: pointer;
1470-}
1471-.dhx_matrix_scell .dhx_scell_level0{
1472- padding-left: 5px;
1473-}
1474-.dhx_matrix_scell .dhx_scell_level1{
1475- padding-left: 20px;
1476-}
1477-.dhx_matrix_scell .dhx_scell_level2{
1478- padding-left: 35px;
1479-}
1480-.dhx_matrix_scell .dhx_scell_level3{
1481- padding-left: 50px;
1482-}
1483-.dhx_matrix_scell .dhx_scell_level4{
1484- padding-left: 65px;
1485-}
1486-
1487-.dhx_matrix_scell.folder{
1488- font-weight: bold;
1489- text-align: left;
1490-}
1491-.dhx_matrix_scell.folder .dhx_scell_expand{
1492- float: left;
1493- width: 10px;
1494- padding-right:3px;
1495-}
1496-.dhx_matrix_scell.folder .dhx_scell_name{
1497- float: left;
1498- width: auto;
1499-}
1500-.dhx_matrix_scell.item .dhx_scell_name{
1501- padding-left:15px;
1502- text-align: left;
1503-}
1504-.dhx_data_table.folder .dhx_matrix_cell{
1505- border-right: 0;
1506-}
1507-.dhx_section_timeline {
1508- overflow: hidden;
1509- padding: 4px 0 2px 10px;
1510-}
1511-.dhx_section_timeline select{
1512- width: 552px;
1513-}
1514-
1515-/* Tree view end*/
1516-
1517-/* Map view */
1518-.dhx_map_area{
1519- width:100%;
1520- height:100%;
1521- overflow-y: auto;
1522- overflow-x: hidden;
1523- background-image:url(./imgs/databg.png);
1524-}
1525-.dhx_map_line .dhx_event_icon{
1526- width:20px;
1527- border-width:0px;
1528- background:url(./imgs/icon.png) no-repeat;
1529- background-position: 5px 4px;
1530- cursor:pointer;
1531-}
1532-.dhx_map_line{
1533- height:21px;
1534- clear:both;
1535- overflow:hidden;
1536-}
1537-.dhx_map {
1538- position:absolute;
1539-}
1540-.dhx_map_line div{
1541- float:left;
1542- border-right:1px dotted #8894A3;
1543- text-align:center;
1544- line-height:21px;
1545- overflow:hidden;
1546-}
1547-.dhx_map_line .headline_description{
1548- float:left;
1549-
1550- border-right:1px dotted #8894A3;
1551- text-align:center;
1552- line-height:21px;
1553- overflow:hidden;
1554-}
1555-.dhx_map_line .dhx_map_description{
1556- float:left;
1557- border-right: 0 dotted #8894A3;
1558- text-align:center;
1559- line-height:21px;
1560- overflow:hidden;
1561-}
1562-.dhx_map_line .headline_date, .dhx_map_line .headline_description {
1563- border-left: 0;
1564-}
1565-.dhx_map_line .line_description {
1566- float:left;
1567- border-right:1px dotted #8894A3;
1568- text-align:left;
1569- padding-left:5px;
1570- line-height:21px;
1571- overflow:hidden;
1572-}
1573-.dhx_map_line.highlight{
1574- background-color: #C4C5CC;
1575-}
1576-.dhx_map_area .dhx_map_line div{
1577- border-right:0px dotted #8894A3;
1578-}
1579-/* Map view end */
1580-
1581-/* dhtmlXTooltip start */
1582-.dhtmlXTooltip.tooltip{
1583- -moz-box-shadow:3px 3px 3px #888888;
1584- -webkit-box-shadow:3px 3px 3px #888888;
1585- -o-box-shadow:3px 3px 3px #888888;
1586- box-shadow:3px 3px 3px #888888;
1587- filter:
1588- progid:DXImageTransform.Microsoft.Shadow(color='#888888', Direction=135, Strength=5)
1589- ;
1590- background-color:white;
1591- border-left:1px dotted #887A2E;
1592- border-top:1px dotted #887A2E;
1593- color:#887A2E;
1594- cursor:default;
1595- padding:10px;
1596- position:absolute;
1597- z-index:500;
1598-}
1599-/* dhtmlXTooltip end */
1600-
1601-/* Lightbox checkbox section */
1602-.dhx_cal_checkbox label {
1603- padding-left: 5px;
1604-}
1605-/* Lightbox checkbox section end */
1606-
1607-
1608-/* Lightbox radiobuttons section */
1609-.dhx_cal_light .radio {
1610- padding: 2px 0px 2px 10px;
1611-}
1612-.dhx_cal_light .radio input, .dhx_cal_light .radio label{
1613- line-height: 15px;
1614-}
1615-.dhx_cal_light .radio input {
1616- vertical-align: middle;
1617- margin: 0px;
1618- padding: 0px;
1619-}
1620-.dhx_cal_light .radio label {
1621- vertical-align: middle;
1622- padding-right: 10px;
1623-}
1624-/* Lightbox radiobuttons section end */
1625-
1626-
1627-/* Lightbox dhtmlx combo section */
1628-.dhx_cal_light .combo {
1629- padding: 4px;
1630-}
1631-.dhx_cal_light_wide .dhx_combo_box/*, .dhx_cal_light_wide .combo*/ {
1632- width: 608px !important;
1633- left: 10px;
1634-}
1635-/* Lightbox dhtmlx combo section end */
1636-
1637-/* Agenda week start */
1638-.dhx_wa_column {
1639- float: left;
1640-}
1641-.dhx_wa_column_last .dhx_wa_day_cont{
1642- border-left: 1px dotted #8894A3;
1643-}
1644-.dhx_wa_scale_bar {
1645- font-family: Tahoma;
1646- padding-left: 10px;
1647- font-size: 11px;
1648- border-top: 1px dotted #8894A3;
1649- border-bottom: 1px dotted #8894A3;
1650-}
1651-.dhx_wa_day_data {
1652- background-color: #FCFEFC;
1653- overflow-y: auto;
1654-}
1655-.dhx_wa_ev_body {
1656- border-bottom: 1px dotted #778899;
1657- font-size: 12px;
1658- padding: 5px 0 5px 7px;
1659-}
1660-.dhx_wa_dnd {
1661- font-family: Tahoma;
1662- position: absolute;
1663- padding-right: 7px;
1664- color: #887AE2 !important;
1665- background-color: #FFE763 !important;
1666- border: 1px solid #B7A543;
1667-}
1668-.dhx_cal_event_selected{
1669- background-color: #9cc1db;
1670- color: white;
1671-}
1672-/* Agenda week end */
1673-
1674-/* timeline second scale start */
1675-.dhx_second_scale_bar {
1676- border-bottom: 1px dotted #586A7E;
1677- padding-top: 2px;
1678-}
1679-/* timeline second scale end */
1680-
1681-
1682-/* grid view */
1683-
1684-.dhx_cal_header div div{
1685- border-left: 1px dotted #8894A3;
1686-}
1687-
1688-.dhx_grid_area{
1689- width:100%;
1690- height:100%;
1691- overflow-y:auto;
1692- background-color:#FCFEFC;
1693-}
1694-.dhx_grid_area table{
1695- border-collapse: collapse;
1696- border-spacing: 0;
1697- width:100%;
1698- table-layout:fixed;
1699-}
1700-.dhx_grid_area td{
1701- table-layout:fixed;
1702- text-align:center;
1703-}
1704-
1705-.dhx_grid_line{
1706- height:21px;
1707- clear:both;
1708- overflow:hidden;
1709-}
1710-.dhx_grid_line div{
1711- float:left;
1712- cursor:default;
1713- padding-top: 0;
1714- padding-bottom: 0;
1715- text-align:center;
1716- line-height:21px;
1717- overflow:hidden;
1718-}
1719-
1720-.dhx_grid_area td, .dhx_grid_line div{
1721- padding-left:8px;
1722- padding-right:8px;
1723-}
1724-
1725-
1726-.dhx_grid_area tr.dhx_grid_event{
1727- height:21px;
1728- overflow:hidden;
1729- margin:0 0 1px 0;
1730-}
1731-.dhx_grid_area tr.dhx_grid_event td{
1732- /*borders for old ies*/
1733- border-bottom:1px solid #ECEEF4;
1734-}
1735-.dhx_grid_area tr.dhx_grid_event:nth-child(2n+1) td, .dhx_grid_area tr.dhx_grid_event:nth-child(2n) td{
1736- border-bottom-width:0px;
1737- border-bottom-style:none;
1738-}
1739-.dhx_grid_area tr.dhx_grid_event:nth-child(2n){
1740- background-color:#ECEEF4;;
1741-}
1742-.dhx_grid_area .dhx_grid_dummy{
1743- table-layout:auto;
1744- margin:0 !important;
1745- padding:0 !important;
1746-}
1747-
1748-.dhx_grid_v_border{
1749- position:absolute;
1750- border-right:1px solid #A4BED4;
1751- width:1px;
1752- height:100%;
1753-}
1754-
1755-.dhx_grid_event_selected{
1756- background-color: #9cc1db !important;
1757- color: white !important;
1758-}
1759-
1760-.dhx_grid_sort_desc .dhx_grid_view_sort{
1761- background-position: 0 -55px;
1762-}
1763-.dhx_grid_sort_asc .dhx_grid_view_sort{
1764- background-position: 0 -66px;
1765-}
1766-.dhx_grid_view_sort{
1767- width:10px;
1768- height:10px;
1769- position: absolute;
1770- border:none !important;
1771- top: 5px;
1772- background-repeat:no-repeat;
1773- background-image: url(./imgs/images.png);
1774-}
1775-/* end grid */
1776-
1777-/* marked timespans */
1778-.dhx_marked_timespan {
1779- position: absolute;
1780- width: 100%;
1781-}
1782-.dhx_time_block {
1783- position:absolute;
1784- width:100%;
1785- background:silver;
1786- opacity:0.4;
1787- filter:alpha(opacity=40);
1788- z-index:1;
1789-}
1790-.dhx_time_block_reset {
1791- opacity: 1;
1792- filter:alpha(opacity=100);
1793-}
1794-.dhx_scheduler_month .dhx_marked_timespan {
1795- display: none;
1796-}
1797-.dhx_mini_calendar .dhx_marked_timespan {
1798- display: none;
1799-}
1800-/* now time */
1801-.dhx_now_time {
1802- width:100%;
1803- border-bottom:2px dotted red;
1804- z-index: 1;
1805-}
1806-.dhx_scheduler_month .dhx_now_time {
1807- border-bottom: 0;
1808- border-left: 2px dotted red;
1809-}
1810-.dhx_matrix_now_time {
1811- border-left:2px dotted red;
1812- z-index: 1;
1813-}
1814-
1815-
1816-/*IE*/
1817-div.dhx_form_repeat input.radio { margin:-4px 0 0 -4px !ie; }
1818-div.dhx_form_repeat input.checkbox { margin:0 0 0 -4px !ie; }
1819-
1820-/*All*/
1821-.dhx_form_repeat, .dhx_form_repeat input {
1822- padding:0;
1823- margin:0;
1824- padding-left:5px;
1825- font-family:Tahoma, Verdana;
1826- font-size:11px;
1827- line-height:24px;
1828-}
1829-
1830-.dhx_form_repeat {
1831- overflow:hidden;
1832- /*height:115px;*/
1833- height:0px;
1834- background-color: #FFF4B5;
1835- /*border: 1px solid #DCC43E;*/
1836-}
1837-
1838-.dhx_cal_light_wide .dhx_form_repeat {
1839- background-color: transparent;
1840-}
1841-
1842-
1843-.dhx_repeat_center, .dhx_repeat_left{
1844- height:115px;
1845- padding:10px 0 10px 10px;
1846- float:left;
1847-}
1848-
1849-.dhx_repeat_left{
1850- width:95px;
1851-}
1852-
1853-.dhx_repeat_center{
1854- width:335px;
1855- margin-top:12px;
1856-}
1857-
1858-.dhx_repeat_divider{
1859- float:left;
1860- height:115px;
1861- border-left:1px dotted #DCC43E;
1862- /*background-color: #DCC43E;*/
1863- width:1px;
1864-}
1865-
1866-.dhx_repeat_right {
1867- float:right;
1868- height:115px;
1869- width:160px;
1870- padding:10px 3px 10px 10px;
1871- margin-top:7px;
1872-}
1873-
1874-input.dhx_repeat_text {
1875- height:16px;
1876- width: 27px;
1877- margin: 0 4px 0 4px;
1878- line-height:18px;
1879- padding: 0 0 0 2px;
1880-}
1881-
1882-.dhx_form_repeat select {
1883- height: 20px;
1884- width: 87px;
1885- padding:0 0 0 2px;
1886- margin: 0 4px 0 4px;
1887-}
1888-
1889-input.dhx_repeat_date{
1890- height: 18px;
1891- width: 80px;
1892- padding:0 0 0 2px;
1893- margin: 0 4px 0 4px;
1894- background-repeat:no-repeat;
1895- background-position:64px 0;
1896- border:1px #7f9db9 solid;
1897- line-height:18px;
1898-}
1899-
1900-input.dhx_repeat_radio {
1901- margin-right:4px;
1902-}
1903-
1904-input.dhx_repeat_checkbox {
1905- margin:4px 4px 0 0;
1906-}
1907-
1908-.dhx_repeat_days td {
1909- padding-right:5px;
1910-}
1911-.dhx_repeat_days label {
1912- font-size:10px;
1913-}
1914-.dhx_custom_button{
1915- width:90px;
1916- -webkit-border-radius: 4px;
1917- -moz-border-radius: 4px;
1918- -ms-border-radius: 4px;
1919- -o-border-radius: 4px;
1920- border-radius: 4px;
1921-}
1922-.dhx_custom_button_recurring{
1923- background-image:url(./imgs/but_repeat.gif);
1924- background-position:-5px 20px;
1925- width:20px;
1926- margin-right:10px;
1927-}
1928-
1929-/* increase width of lightbox */
1930-.dhx_cal_light_rec{
1931- width:640px;
1932-}
1933-.dhx_cal_light_rec .dhx_cal_larea{
1934- width:632px;
1935-}
1936-.dhx_cal_light_rec.dhx_cal_light_wide{
1937- width:816px;
1938-}
1939-.dhx_cal_light_rec.dhx_cal_light_wide .dhx_cal_larea{
1940- width:808px;
1941-}
1942\ No newline at end of file
1943
1944=== removed file 'addons/web_calendar/static/lib/dhtmlxScheduler/sources/dhtmlxscheduler.js'
1945--- addons/web_calendar/static/lib/dhtmlxScheduler/sources/dhtmlxscheduler.js 2012-10-24 13:48:59 +0000
1946+++ addons/web_calendar/static/lib/dhtmlxScheduler/sources/dhtmlxscheduler.js 1970-01-01 00:00:00 +0000
1947@@ -1,4806 +0,0 @@
1948-/*
1949-This software is allowed to use under GPL or you need to obtain Commercial or Enterise License
1950-to use it in non-GPL project. Please contact sales@dhtmlx.com for details
1951-*/
1952-
1953-if (!window.dhtmlx) {
1954- dhtmlx = function(obj){
1955- for (var a in obj) dhtmlx[a]=obj[a];
1956- return dhtmlx; //simple singleton
1957- };
1958-}
1959-dhtmlx.extend_api=function(name,map,ext){
1960- var t = window[name];
1961- if (!t) return; //component not defined
1962- window[name]=function(obj){
1963- if (obj && typeof obj == "object" && !obj.tagName){
1964- var that = t.apply(this,(map._init?map._init(obj):arguments));
1965- //global settings
1966- for (var a in dhtmlx)
1967- if (map[a]) this[map[a]](dhtmlx[a]);
1968- //local settings
1969- for (var a in obj){
1970- if (map[a]) this[map[a]](obj[a]);
1971- else if (a.indexOf("on")==0){
1972- this.attachEvent(a,obj[a]);
1973- }
1974- }
1975- } else
1976- var that = t.apply(this,arguments);
1977- if (map._patch) map._patch(this);
1978- return that||this;
1979- };
1980- window[name].prototype=t.prototype;
1981- if (ext)
1982- dhtmlXHeir(window[name].prototype,ext);
1983-};
1984-
1985-dhtmlxAjax={
1986- get:function(url,callback){
1987- var t=new dtmlXMLLoaderObject(true);
1988- t.async=(arguments.length<3);
1989- t.waitCall=callback;
1990- t.loadXML(url)
1991- return t;
1992- },
1993- post:function(url,post,callback){
1994- var t=new dtmlXMLLoaderObject(true);
1995- t.async=(arguments.length<4);
1996- t.waitCall=callback;
1997- t.loadXML(url,true,post)
1998- return t;
1999- },
2000- getSync:function(url){
2001- return this.get(url,null,true)
2002- },
2003- postSync:function(url,post){
2004- return this.post(url,post,null,true);
2005- }
2006-}
2007-
2008-/**
2009- * @desc: xmlLoader object
2010- * @type: private
2011- * @param: funcObject - xml parser function
2012- * @param: object - jsControl object
2013- * @param: async - sync/async mode (async by default)
2014- * @param: rSeed - enable/disable random seed ( prevent IE caching)
2015- * @topic: 0
2016- */
2017-function dtmlXMLLoaderObject(funcObject, dhtmlObject, async, rSeed){
2018- this.xmlDoc="";
2019-
2020- if (typeof (async) != "undefined")
2021- this.async=async;
2022- else
2023- this.async=true;
2024-
2025- this.onloadAction=funcObject||null;
2026- this.mainObject=dhtmlObject||null;
2027- this.waitCall=null;
2028- this.rSeed=rSeed||false;
2029- return this;
2030-};
2031-
2032-dtmlXMLLoaderObject.count = 0;
2033-
2034-/**
2035- * @desc: xml loading handler
2036- * @type: private
2037- * @param: dtmlObject - xmlLoader object
2038- * @topic: 0
2039- */
2040-dtmlXMLLoaderObject.prototype.waitLoadFunction=function(dhtmlObject){
2041- var once = true;
2042- this.check=function (){
2043- if ((dhtmlObject)&&(dhtmlObject.onloadAction != null)){
2044- if ((!dhtmlObject.xmlDoc.readyState)||(dhtmlObject.xmlDoc.readyState == 4)){
2045- if (!once)
2046- return;
2047-
2048- once=false; //IE 5 fix
2049- dtmlXMLLoaderObject.count++;
2050- if (typeof dhtmlObject.onloadAction == "function")
2051- dhtmlObject.onloadAction(dhtmlObject.mainObject, null, null, null, dhtmlObject);
2052-
2053- if (dhtmlObject.waitCall){
2054- dhtmlObject.waitCall.call(this,dhtmlObject);
2055- dhtmlObject.waitCall=null;
2056- }
2057- }
2058- }
2059- };
2060- return this.check;
2061-};
2062-
2063-/**
2064- * @desc: return XML top node
2065- * @param: tagName - top XML node tag name (not used in IE, required for Safari and Mozilla)
2066- * @type: private
2067- * @returns: top XML node
2068- * @topic: 0
2069- */
2070-dtmlXMLLoaderObject.prototype.getXMLTopNode=function(tagName, oldObj){
2071- if (this.xmlDoc.responseXML){
2072- var temp = this.xmlDoc.responseXML.getElementsByTagName(tagName);
2073- if(temp.length==0 && tagName.indexOf(":")!=-1)
2074- var temp = this.xmlDoc.responseXML.getElementsByTagName((tagName.split(":"))[1]);
2075- var z = temp[0];
2076- } else
2077- var z = this.xmlDoc.documentElement;
2078-
2079- if (z){
2080- this._retry=false;
2081- return z;
2082- }
2083-
2084- if (!this._retry){
2085- this._retry=true;
2086- var oldObj = this.xmlDoc;
2087- this.loadXMLString(this.xmlDoc.responseText.replace(/^[\s]+/,""), true);
2088- return this.getXMLTopNode(tagName, oldObj);
2089- }
2090-
2091- dhtmlxError.throwError("LoadXML", "Incorrect XML", [
2092- (oldObj||this.xmlDoc),
2093- this.mainObject
2094- ]);
2095-
2096- return document.createElement("DIV");
2097-};
2098-
2099-/**
2100- * @desc: load XML from string
2101- * @type: private
2102- * @param: xmlString - xml string
2103- * @topic: 0
2104- */
2105-dtmlXMLLoaderObject.prototype.loadXMLString=function(xmlString, silent){
2106-
2107- if (!_isIE){
2108- var parser = new DOMParser();
2109- this.xmlDoc=parser.parseFromString(xmlString, "text/xml");
2110- } else {
2111- this.xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
2112- this.xmlDoc.async=this.async;
2113- this.xmlDoc.onreadystatechange = function(){};
2114- this.xmlDoc["loadXM"+"L"](xmlString);
2115- }
2116-
2117- if (silent)
2118- return;
2119-
2120- if (this.onloadAction)
2121- this.onloadAction(this.mainObject, null, null, null, this);
2122-
2123- if (this.waitCall){
2124- this.waitCall();
2125- this.waitCall=null;
2126- }
2127-}
2128-/**
2129- * @desc: load XML
2130- * @type: private
2131- * @param: filePath - xml file path
2132- * @param: postMode - send POST request
2133- * @param: postVars - list of vars for post request
2134- * @topic: 0
2135- */
2136-dtmlXMLLoaderObject.prototype.loadXML=function(filePath, postMode, postVars, rpc){
2137- if (this.rSeed)
2138- filePath+=((filePath.indexOf("?") != -1) ? "&" : "?")+"a_dhx_rSeed="+(new Date()).valueOf();
2139- this.filePath=filePath;
2140-
2141- if ((!_isIE)&&(window.XMLHttpRequest))
2142- this.xmlDoc=new XMLHttpRequest();
2143- else {
2144- this.xmlDoc=new ActiveXObject("Microsoft.XMLHTTP");
2145- }
2146-
2147- if (this.async)
2148- this.xmlDoc.onreadystatechange=new this.waitLoadFunction(this);
2149- this.xmlDoc.open(postMode ? "POST" : "GET", filePath, this.async);
2150-
2151- if (rpc){
2152- this.xmlDoc.setRequestHeader("User-Agent", "dhtmlxRPC v0.1 ("+navigator.userAgent+")");
2153- this.xmlDoc.setRequestHeader("Content-type", "text/xml");
2154- }
2155-
2156- else if (postMode)
2157- this.xmlDoc.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
2158-
2159- this.xmlDoc.setRequestHeader("X-Requested-With","XMLHttpRequest");
2160- this.xmlDoc.send(null||postVars);
2161-
2162- if (!this.async)
2163- (new this.waitLoadFunction(this))();
2164-};
2165-/**
2166- * @desc: destructor, cleans used memory
2167- * @type: private
2168- * @topic: 0
2169- */
2170-dtmlXMLLoaderObject.prototype.destructor=function(){
2171- this._filterXPath = null;
2172- this._getAllNamedChilds = null;
2173- this._retry = null;
2174- this.async = null;
2175- this.rSeed = null;
2176- this.filePath = null;
2177- this.onloadAction = null;
2178- this.mainObject = null;
2179- this.xmlDoc = null;
2180- this.doXPath = null;
2181- this.doXPathOpera = null;
2182- this.doXSLTransToObject = null;
2183- this.doXSLTransToString = null;
2184- this.loadXML = null;
2185- this.loadXMLString = null;
2186- // this.waitLoadFunction = null;
2187- this.doSerialization = null;
2188- this.xmlNodeToJSON = null;
2189- this.getXMLTopNode = null;
2190- this.setXSLParamValue = null;
2191- return null;
2192-}
2193-
2194-dtmlXMLLoaderObject.prototype.xmlNodeToJSON = function(node){
2195- var t={};
2196- for (var i=0; i<node.attributes.length; i++)
2197- t[node.attributes[i].name]=node.attributes[i].value;
2198- t["_tagvalue"]=node.firstChild?node.firstChild.nodeValue:"";
2199- for (var i=0; i<node.childNodes.length; i++){
2200- var name=node.childNodes[i].tagName;
2201- if (name){
2202- if (!t[name]) t[name]=[];
2203- t[name].push(this.xmlNodeToJSON(node.childNodes[i]));
2204- }
2205- }
2206- return t;
2207-}
2208-
2209-/**
2210- * @desc: Call wrapper
2211- * @type: private
2212- * @param: funcObject - action handler
2213- * @param: dhtmlObject - user data
2214- * @returns: function handler
2215- * @topic: 0
2216- */
2217-function callerFunction(funcObject, dhtmlObject){
2218- this.handler=function(e){
2219- if (!e)
2220- e=window.event;
2221- funcObject(e, dhtmlObject);
2222- return true;
2223- };
2224- return this.handler;
2225-};
2226-
2227-/**
2228- * @desc: Calculate absolute position of html object
2229- * @type: private
2230- * @param: htmlObject - html object
2231- * @topic: 0
2232- */
2233-function getAbsoluteLeft(htmlObject){
2234- return getOffset(htmlObject).left;
2235-}
2236-/**
2237- * @desc: Calculate absolute position of html object
2238- * @type: private
2239- * @param: htmlObject - html object
2240- * @topic: 0
2241- */
2242-function getAbsoluteTop(htmlObject){
2243- return getOffset(htmlObject).top;
2244-}
2245-
2246-function getOffsetSum(elem) {
2247- var top=0, left=0;
2248- while(elem) {
2249- top = top + parseInt(elem.offsetTop);
2250- left = left + parseInt(elem.offsetLeft);
2251- elem = elem.offsetParent;
2252- }
2253- return {top: top, left: left};
2254-}
2255-function getOffsetRect(elem) {
2256- var box = elem.getBoundingClientRect();
2257- var body = document.body;
2258- var docElem = document.documentElement;
2259- var scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;
2260- var scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;
2261- var clientTop = docElem.clientTop || body.clientTop || 0;
2262- var clientLeft = docElem.clientLeft || body.clientLeft || 0;
2263- var top = box.top + scrollTop - clientTop;
2264- var left = box.left + scrollLeft - clientLeft;
2265- return { top: Math.round(top), left: Math.round(left) };
2266-}
2267-function getOffset(elem) {
2268- if (elem.getBoundingClientRect) {
2269- return getOffsetRect(elem);
2270- } else {
2271- return getOffsetSum(elem);
2272- }
2273-}
2274-
2275-/**
2276- * @desc: Convert string to it boolean representation
2277- * @type: private
2278- * @param: inputString - string for covertion
2279- * @topic: 0
2280- */
2281-function convertStringToBoolean(inputString){
2282- if (typeof (inputString) == "string")
2283- inputString=inputString.toLowerCase();
2284-
2285- switch (inputString){
2286- case "1":
2287- case "true":
2288- case "yes":
2289- case "y":
2290- case 1:
2291- case true:
2292- return true;
2293- break;
2294-
2295- default: return false;
2296- }
2297-}
2298-
2299-/**
2300- * @desc: find out what symbol to use as url param delimiters in further params
2301- * @type: private
2302- * @param: str - current url string
2303- * @topic: 0
2304- */
2305-function getUrlSymbol(str){
2306- if (str.indexOf("?") != -1)
2307- return "&"
2308- else
2309- return "?"
2310-}
2311-
2312-function dhtmlDragAndDropObject(){
2313- if (window.dhtmlDragAndDrop)
2314- return window.dhtmlDragAndDrop;
2315-
2316- this.lastLanding=0;
2317- this.dragNode=0;
2318- this.dragStartNode=0;
2319- this.dragStartObject=0;
2320- this.tempDOMU=null;
2321- this.tempDOMM=null;
2322- this.waitDrag=0;
2323- window.dhtmlDragAndDrop=this;
2324-
2325- return this;
2326-};
2327-
2328-dhtmlDragAndDropObject.prototype.removeDraggableItem=function(htmlNode){
2329- htmlNode.onmousedown=null;
2330- htmlNode.dragStarter=null;
2331- htmlNode.dragLanding=null;
2332-}
2333-dhtmlDragAndDropObject.prototype.addDraggableItem=function(htmlNode, dhtmlObject){
2334- htmlNode.onmousedown=this.preCreateDragCopy;
2335- htmlNode.dragStarter=dhtmlObject;
2336- this.addDragLanding(htmlNode, dhtmlObject);
2337-}
2338-dhtmlDragAndDropObject.prototype.addDragLanding=function(htmlNode, dhtmlObject){
2339- htmlNode.dragLanding=dhtmlObject;
2340-}
2341-dhtmlDragAndDropObject.prototype.preCreateDragCopy=function(e){
2342- if ((e||window.event) && (e||event).button == 2)
2343- return;
2344-
2345- if (window.dhtmlDragAndDrop.waitDrag){
2346- window.dhtmlDragAndDrop.waitDrag=0;
2347- document.body.onmouseup=window.dhtmlDragAndDrop.tempDOMU;
2348- document.body.onmousemove=window.dhtmlDragAndDrop.tempDOMM;
2349- return false;
2350- }
2351-
2352- if (window.dhtmlDragAndDrop.dragNode)
2353- window.dhtmlDragAndDrop.stopDrag(e);
2354-
2355- window.dhtmlDragAndDrop.waitDrag=1;
2356- window.dhtmlDragAndDrop.tempDOMU=document.body.onmouseup;
2357- window.dhtmlDragAndDrop.tempDOMM=document.body.onmousemove;
2358- window.dhtmlDragAndDrop.dragStartNode=this;
2359- window.dhtmlDragAndDrop.dragStartObject=this.dragStarter;
2360- document.body.onmouseup=window.dhtmlDragAndDrop.preCreateDragCopy;
2361- document.body.onmousemove=window.dhtmlDragAndDrop.callDrag;
2362- window.dhtmlDragAndDrop.downtime = new Date().valueOf();
2363-
2364-
2365- if ((e)&&(e.preventDefault)){
2366- e.preventDefault();
2367- return false;
2368- }
2369- return false;
2370-};
2371-dhtmlDragAndDropObject.prototype.callDrag=function(e){
2372- if (!e)
2373- e=window.event;
2374- dragger=window.dhtmlDragAndDrop;
2375- if ((new Date()).valueOf()-dragger.downtime<100) return;
2376-
2377- //if ((e.button == 0)&&(_isIE))
2378- // return dragger.stopDrag();
2379-
2380- if (!dragger.dragNode){
2381- if (dragger.waitDrag){
2382- dragger.dragNode=dragger.dragStartObject._createDragNode(dragger.dragStartNode, e);
2383-
2384- if (!dragger.dragNode)
2385- return dragger.stopDrag();
2386-
2387- dragger.dragNode.onselectstart=function(){return false;}
2388- dragger.gldragNode=dragger.dragNode;
2389- document.body.appendChild(dragger.dragNode);
2390- document.body.onmouseup=dragger.stopDrag;
2391- dragger.waitDrag=0;
2392- dragger.dragNode.pWindow=window;
2393- dragger.initFrameRoute();
2394- }
2395- else return dragger.stopDrag(e, true);
2396- }
2397-
2398- if (dragger.dragNode.parentNode != window.document.body && dragger.gldragNode){
2399- var grd = dragger.gldragNode;
2400-
2401- if (dragger.gldragNode.old)
2402- grd=dragger.gldragNode.old;
2403-
2404- //if (!document.all) dragger.calculateFramePosition();
2405- grd.parentNode.removeChild(grd);
2406- var oldBody = dragger.dragNode.pWindow;
2407-
2408- if (grd.pWindow && grd.pWindow.dhtmlDragAndDrop.lastLanding)
2409- grd.pWindow.dhtmlDragAndDrop.lastLanding.dragLanding._dragOut(grd.pWindow.dhtmlDragAndDrop.lastLanding);
2410-
2411- // var oldp=dragger.dragNode.parentObject;
2412- if (_isIE){
2413- var div = document.createElement("Div");
2414- div.innerHTML=dragger.dragNode.outerHTML;
2415- dragger.dragNode=div.childNodes[0];
2416- } else
2417- dragger.dragNode=dragger.dragNode.cloneNode(true);
2418-
2419- dragger.dragNode.pWindow=window;
2420- // dragger.dragNode.parentObject=oldp;
2421-
2422- dragger.gldragNode.old=dragger.dragNode;
2423- document.body.appendChild(dragger.dragNode);
2424- oldBody.dhtmlDragAndDrop.dragNode=dragger.dragNode;
2425- }
2426-
2427- dragger.dragNode.style.left=e.clientX+15+(dragger.fx
2428- ? dragger.fx*(-1)
2429- : 0)
2430- +(document.body.scrollLeft||document.documentElement.scrollLeft)+"px";
2431- dragger.dragNode.style.top=e.clientY+3+(dragger.fy
2432- ? dragger.fy*(-1)
2433- : 0)
2434- +(document.body.scrollTop||document.documentElement.scrollTop)+"px";
2435-
2436- if (!e.srcElement)
2437- var z = e.target;
2438- else
2439- z=e.srcElement;
2440- dragger.checkLanding(z, e);
2441-}
2442-
2443-dhtmlDragAndDropObject.prototype.calculateFramePosition=function(n){
2444- //this.fx = 0, this.fy = 0;
2445- if (window.name){
2446- var el = parent.frames[window.name].frameElement.offsetParent;
2447- var fx = 0;
2448- var fy = 0;
2449-
2450- while (el){
2451- fx+=el.offsetLeft;
2452- fy+=el.offsetTop;
2453- el=el.offsetParent;
2454- }
2455-
2456- if ((parent.dhtmlDragAndDrop)){
2457- var ls = parent.dhtmlDragAndDrop.calculateFramePosition(1);
2458- fx+=ls.split('_')[0]*1;
2459- fy+=ls.split('_')[1]*1;
2460- }
2461-
2462- if (n)
2463- return fx+"_"+fy;
2464- else
2465- this.fx=fx;
2466- this.fy=fy;
2467- }
2468- return "0_0";
2469-}
2470-dhtmlDragAndDropObject.prototype.checkLanding=function(htmlObject, e){
2471- if ((htmlObject)&&(htmlObject.dragLanding)){
2472- if (this.lastLanding)
2473- this.lastLanding.dragLanding._dragOut(this.lastLanding);
2474- this.lastLanding=htmlObject;
2475- this.lastLanding=this.lastLanding.dragLanding._dragIn(this.lastLanding, this.dragStartNode, e.clientX,
2476- e.clientY, e);
2477- this.lastLanding_scr=(_isIE ? e.srcElement : e.target);
2478- } else {
2479- if ((htmlObject)&&(htmlObject.tagName != "BODY"))
2480- this.checkLanding(htmlObject.parentNode, e);
2481- else {
2482- if (this.lastLanding)
2483- this.lastLanding.dragLanding._dragOut(this.lastLanding, e.clientX, e.clientY, e);
2484- this.lastLanding=0;
2485-
2486- if (this._onNotFound)
2487- this._onNotFound();
2488- }
2489- }
2490-}
2491-dhtmlDragAndDropObject.prototype.stopDrag=function(e, mode){
2492- dragger=window.dhtmlDragAndDrop;
2493-
2494- if (!mode){
2495- dragger.stopFrameRoute();
2496- var temp = dragger.lastLanding;
2497- dragger.lastLanding=null;
2498-
2499- if (temp)
2500- temp.dragLanding._drag(dragger.dragStartNode, dragger.dragStartObject, temp, (_isIE
2501- ? event.srcElement
2502- : e.target));
2503- }
2504- dragger.lastLanding=null;
2505-
2506- if ((dragger.dragNode)&&(dragger.dragNode.parentNode == document.body))
2507- dragger.dragNode.parentNode.removeChild(dragger.dragNode);
2508- dragger.dragNode=0;
2509- dragger.gldragNode=0;
2510- dragger.fx=0;
2511- dragger.fy=0;
2512- dragger.dragStartNode=0;
2513- dragger.dragStartObject=0;
2514- document.body.onmouseup=dragger.tempDOMU;
2515- document.body.onmousemove=dragger.tempDOMM;
2516- dragger.tempDOMU=null;
2517- dragger.tempDOMM=null;
2518- dragger.waitDrag=0;
2519-}
2520-
2521-dhtmlDragAndDropObject.prototype.stopFrameRoute=function(win){
2522- if (win)
2523- window.dhtmlDragAndDrop.stopDrag(1, 1);
2524-
2525- for (var i = 0; i < window.frames.length; i++){
2526- try{
2527- if ((window.frames[i] != win)&&(window.frames[i].dhtmlDragAndDrop))
2528- window.frames[i].dhtmlDragAndDrop.stopFrameRoute(window);
2529- } catch(e){}
2530- }
2531-
2532- try{
2533- if ((parent.dhtmlDragAndDrop)&&(parent != window)&&(parent != win))
2534- parent.dhtmlDragAndDrop.stopFrameRoute(window);
2535- } catch(e){}
2536-}
2537-dhtmlDragAndDropObject.prototype.initFrameRoute=function(win, mode){
2538- if (win){
2539- window.dhtmlDragAndDrop.preCreateDragCopy();
2540- window.dhtmlDragAndDrop.dragStartNode=win.dhtmlDragAndDrop.dragStartNode;
2541- window.dhtmlDragAndDrop.dragStartObject=win.dhtmlDragAndDrop.dragStartObject;
2542- window.dhtmlDragAndDrop.dragNode=win.dhtmlDragAndDrop.dragNode;
2543- window.dhtmlDragAndDrop.gldragNode=win.dhtmlDragAndDrop.dragNode;
2544- window.document.body.onmouseup=window.dhtmlDragAndDrop.stopDrag;
2545- window.waitDrag=0;
2546-
2547- if (((!_isIE)&&(mode))&&((!_isFF)||(_FFrv < 1.8)))
2548- window.dhtmlDragAndDrop.calculateFramePosition();
2549- }
2550- try{
2551- if ((parent.dhtmlDragAndDrop)&&(parent != window)&&(parent != win))
2552- parent.dhtmlDragAndDrop.initFrameRoute(window);
2553- }catch(e){}
2554-
2555- for (var i = 0; i < window.frames.length; i++){
2556- try{
2557- if ((window.frames[i] != win)&&(window.frames[i].dhtmlDragAndDrop))
2558- window.frames[i].dhtmlDragAndDrop.initFrameRoute(window, ((!win||mode) ? 1 : 0));
2559- } catch(e){}
2560- }
2561-}
2562-
2563-_isFF = false;
2564-_isIE = false;
2565-_isOpera = false;
2566-_isKHTML = false;
2567-_isMacOS = false;
2568-_isChrome = false;
2569-_FFrv = false;
2570-_KHTMLrv = false;
2571-_OperaRv = false;
2572-
2573-if (navigator.userAgent.indexOf('Macintosh') != -1)
2574- _isMacOS=true;
2575-
2576-
2577-if (navigator.userAgent.toLowerCase().indexOf('chrome')>-1)
2578- _isChrome=true;
2579-
2580-if ((navigator.userAgent.indexOf('Safari') != -1)||(navigator.userAgent.indexOf('Konqueror') != -1)){
2581- _KHTMLrv = parseFloat(navigator.userAgent.substr(navigator.userAgent.indexOf('Safari')+7, 5));
2582-
2583- if (_KHTMLrv > 525){ //mimic FF behavior for Safari 3.1+
2584- _isFF=true;
2585- _FFrv = 1.9;
2586- } else
2587- _isKHTML=true;
2588-} else if (navigator.userAgent.indexOf('Opera') != -1){
2589- _isOpera=true;
2590- _OperaRv=parseFloat(navigator.userAgent.substr(navigator.userAgent.indexOf('Opera')+6, 3));
2591-}
2592-
2593-
2594-else if (navigator.appName.indexOf("Microsoft") != -1){
2595- _isIE=true;
2596- if ((navigator.appVersion.indexOf("MSIE 8.0")!= -1 || navigator.appVersion.indexOf("MSIE 9.0")!= -1 || navigator.appVersion.indexOf("MSIE 10.0")!= -1 ) && document.compatMode != "BackCompat"){
2597- _isIE=8;
2598- }
2599-} else {
2600- _isFF=true;
2601- _FFrv = parseFloat(navigator.userAgent.split("rv:")[1])
2602-}
2603-
2604-
2605-//multibrowser Xpath processor
2606-dtmlXMLLoaderObject.prototype.doXPath=function(xpathExp, docObj, namespace, result_type){
2607- if (_isKHTML || (!_isIE && !window.XPathResult))
2608- return this.doXPathOpera(xpathExp, docObj);
2609-
2610- if (_isIE){ //IE
2611- if (!docObj)
2612- if (!this.xmlDoc.nodeName)
2613- docObj=this.xmlDoc.responseXML
2614- else
2615- docObj=this.xmlDoc;
2616-
2617- if (!docObj)
2618- dhtmlxError.throwError("LoadXML", "Incorrect XML", [
2619- (docObj||this.xmlDoc),
2620- this.mainObject
2621- ]);
2622-
2623- if (namespace != null)
2624- docObj.setProperty("SelectionNamespaces", "xmlns:xsl='"+namespace+"'"); //
2625-
2626- if (result_type == 'single'){
2627- return docObj.selectSingleNode(xpathExp);
2628- }
2629- else {
2630- return docObj.selectNodes(xpathExp)||new Array(0);
2631- }
2632- } else { //Mozilla
2633- var nodeObj = docObj;
2634-
2635- if (!docObj){
2636- if (!this.xmlDoc.nodeName){
2637- docObj=this.xmlDoc.responseXML
2638- }
2639- else {
2640- docObj=this.xmlDoc;
2641- }
2642- }
2643-
2644- if (!docObj)
2645- dhtmlxError.throwError("LoadXML", "Incorrect XML", [
2646- (docObj||this.xmlDoc),
2647- this.mainObject
2648- ]);
2649-
2650- if (docObj.nodeName.indexOf("document") != -1){
2651- nodeObj=docObj;
2652- }
2653- else {
2654- nodeObj=docObj;
2655- docObj=docObj.ownerDocument;
2656- }
2657- var retType = XPathResult.ANY_TYPE;
2658-
2659- if (result_type == 'single')
2660- retType=XPathResult.FIRST_ORDERED_NODE_TYPE
2661- var rowsCol = new Array();
2662- var col = docObj.evaluate(xpathExp, nodeObj, function(pref){
2663- return namespace
2664- }, retType, null);
2665-
2666- if (retType == XPathResult.FIRST_ORDERED_NODE_TYPE){
2667- return col.singleNodeValue;
2668- }
2669- var thisColMemb = col.iterateNext();
2670-
2671- while (thisColMemb){
2672- rowsCol[rowsCol.length]=thisColMemb;
2673- thisColMemb=col.iterateNext();
2674- }
2675- return rowsCol;
2676- }
2677-}
2678-
2679-function _dhtmlxError(type, name, params){
2680- if (!this.catches)
2681- this.catches=new Array();
2682-
2683- return this;
2684-}
2685-
2686-_dhtmlxError.prototype.catchError=function(type, func_name){
2687- this.catches[type]=func_name;
2688-}
2689-_dhtmlxError.prototype.throwError=function(type, name, params){
2690- if (this.catches[type])
2691- return this.catches[type](type, name, params);
2692-
2693- if (this.catches["ALL"])
2694- return this.catches["ALL"](type, name, params);
2695-
2696- alert("Error type: "+arguments[0]+"\nDescription: "+arguments[1]);
2697- return null;
2698-}
2699-
2700-window.dhtmlxError=new _dhtmlxError();
2701-
2702-
2703-//opera fake, while 9.0 not released
2704-//multibrowser Xpath processor
2705-dtmlXMLLoaderObject.prototype.doXPathOpera=function(xpathExp, docObj){
2706- //this is fake for Opera
2707- var z = xpathExp.replace(/[\/]+/gi, "/").split('/');
2708- var obj = null;
2709- var i = 1;
2710-
2711- if (!z.length)
2712- return [];
2713-
2714- if (z[0] == ".")
2715- obj=[docObj]; else if (z[0] == ""){
2716- obj=(this.xmlDoc.responseXML||this.xmlDoc).getElementsByTagName(z[i].replace(/\[[^\]]*\]/g, ""));
2717- i++;
2718- } else
2719- return [];
2720-
2721- for (i; i < z.length; i++)obj=this._getAllNamedChilds(obj, z[i]);
2722-
2723- if (z[i-1].indexOf("[") != -1)
2724- obj=this._filterXPath(obj, z[i-1]);
2725- return obj;
2726-}
2727-
2728-dtmlXMLLoaderObject.prototype._filterXPath=function(a, b){
2729- var c = new Array();
2730- var b = b.replace(/[^\[]*\[\@/g, "").replace(/[\[\]\@]*/g, "");
2731-
2732- for (var i = 0; i < a.length; i++)
2733- if (a[i].getAttribute(b))
2734- c[c.length]=a[i];
2735-
2736- return c;
2737-}
2738-dtmlXMLLoaderObject.prototype._getAllNamedChilds=function(a, b){
2739- var c = new Array();
2740-
2741- if (_isKHTML)
2742- b=b.toUpperCase();
2743-
2744- for (var i = 0; i < a.length; i++)for (var j = 0; j < a[i].childNodes.length; j++){
2745- if (_isKHTML){
2746- if (a[i].childNodes[j].tagName&&a[i].childNodes[j].tagName.toUpperCase() == b)
2747- c[c.length]=a[i].childNodes[j];
2748- }
2749-
2750- else if (a[i].childNodes[j].tagName == b)
2751- c[c.length]=a[i].childNodes[j];
2752- }
2753-
2754- return c;
2755-}
2756-
2757-function dhtmlXHeir(a, b){
2758- for (var c in b)
2759- if (typeof (b[c]) == "function")
2760- a[c]=b[c];
2761- return a;
2762-}
2763-
2764-function dhtmlxEvent(el, event, handler){
2765- if (el.addEventListener)
2766- el.addEventListener(event, handler, false);
2767-
2768- else if (el.attachEvent)
2769- el.attachEvent("on"+event, handler);
2770-}
2771-
2772-//============= XSL Extension ===================================
2773-
2774-dtmlXMLLoaderObject.prototype.xslDoc=null;
2775-dtmlXMLLoaderObject.prototype.setXSLParamValue=function(paramName, paramValue, xslDoc){
2776- if (!xslDoc)
2777- xslDoc=this.xslDoc
2778-
2779- if (xslDoc.responseXML)
2780- xslDoc=xslDoc.responseXML;
2781- var item =
2782- this.doXPath("/xsl:stylesheet/xsl:variable[@name='"+paramName+"']", xslDoc,
2783- "http:/\/www.w3.org/1999/XSL/Transform", "single");
2784-
2785- if (item != null)
2786- item.firstChild.nodeValue=paramValue
2787-}
2788-dtmlXMLLoaderObject.prototype.doXSLTransToObject=function(xslDoc, xmlDoc){
2789- if (!xslDoc)
2790- xslDoc=this.xslDoc;
2791-
2792- if (xslDoc.responseXML)
2793- xslDoc=xslDoc.responseXML
2794-
2795- if (!xmlDoc)
2796- xmlDoc=this.xmlDoc;
2797-
2798- if (xmlDoc.responseXML)
2799- xmlDoc=xmlDoc.responseXML
2800-
2801- //MOzilla
2802- if (!_isIE){
2803- if (!this.XSLProcessor){
2804- this.XSLProcessor=new XSLTProcessor();
2805- this.XSLProcessor.importStylesheet(xslDoc);
2806- }
2807- var result = this.XSLProcessor.transformToDocument(xmlDoc);
2808- } else {
2809- var result = new ActiveXObject("Msxml2.DOMDocument.3.0");
2810- try{
2811- xmlDoc.transformNodeToObject(xslDoc, result);
2812- }catch(e){
2813- result = xmlDoc.transformNode(xslDoc);
2814- }
2815- }
2816- return result;
2817-}
2818-
2819-dtmlXMLLoaderObject.prototype.doXSLTransToString=function(xslDoc, xmlDoc){
2820- var res = this.doXSLTransToObject(xslDoc, xmlDoc);
2821- if(typeof(res)=="string")
2822- return res;
2823- return this.doSerialization(res);
2824-}
2825-
2826-dtmlXMLLoaderObject.prototype.doSerialization=function(xmlDoc){
2827- if (!xmlDoc)
2828- xmlDoc=this.xmlDoc;
2829- if (xmlDoc.responseXML)
2830- xmlDoc=xmlDoc.responseXML
2831- if (!_isIE){
2832- var xmlSerializer = new XMLSerializer();
2833- return xmlSerializer.serializeToString(xmlDoc);
2834- } else
2835- return xmlDoc.xml;
2836-}
2837-
2838-/**
2839- * @desc:
2840- * @type: private
2841- */
2842-dhtmlxEventable=function(obj){
2843- obj.attachEvent=function(name, catcher, callObj){
2844- name='ev_'+name.toLowerCase();
2845- if (!this[name])
2846- this[name]=new this.eventCatcher(callObj||this);
2847-
2848- return(name+':'+this[name].addEvent(catcher)); //return ID (event name & event ID)
2849- }
2850- obj.callEvent=function(name, arg0){
2851- name='ev_'+name.toLowerCase();
2852- if (this[name])
2853- return this[name].apply(this, arg0);
2854- return true;
2855- }
2856- obj.checkEvent=function(name){
2857- return (!!this['ev_'+name.toLowerCase()])
2858- }
2859- obj.eventCatcher=function(obj){
2860- var dhx_catch = [];
2861- var z = function(){
2862- var res = true;
2863- for (var i = 0; i < dhx_catch.length; i++){
2864- if (dhx_catch[i] != null){
2865- var zr = dhx_catch[i].apply(obj, arguments);
2866- res=res&&zr;
2867- }
2868- }
2869- return res;
2870- }
2871- z.addEvent=function(ev){
2872- if (typeof (ev) != "function")
2873- ev=eval(ev);
2874- if (ev)
2875- return dhx_catch.push(ev)-1;
2876- return false;
2877- }
2878- z.removeEvent=function(id){
2879- dhx_catch[id]=null;
2880- }
2881- return z;
2882- }
2883- obj.detachEvent=function(id){
2884- if (id != false){
2885- var list = id.split(':'); //get EventName and ID
2886- this[list[0]].removeEvent(list[1]); //remove event
2887- }
2888- }
2889- obj.detachAllEvents = function(){
2890- for (var name in this){
2891- if (name.indexOf("ev_")==0)
2892- delete this[name];
2893- }
2894- }
2895- obj = null;
2896-};
2897-
2898-if(!window.dhtmlx)
2899- window.dhtmlx = {};
2900-
2901-(function(){
2902- var _dhx_msg_cfg = null;
2903- function callback(config, result){
2904- var usercall = config.callback;
2905- modality(false);
2906- config.box.parentNode.removeChild(config.box);
2907- _dhx_msg_cfg = config.box = null;
2908- if (usercall)
2909- usercall(result);
2910- }
2911- function modal_key(e){
2912- if (_dhx_msg_cfg){
2913- e = e||event;
2914- var code = e.which||event.keyCode;
2915- if (dhtmlx.message.keyboard){
2916- if (code == 13 || code == 32)
2917- callback(_dhx_msg_cfg, true);
2918- if (code == 27)
2919- callback(_dhx_msg_cfg, false);
2920- }
2921- if (e.preventDefault)
2922- e.preventDefault();
2923- return !(e.cancelBubble = true);
2924- }
2925- }
2926- if (document.attachEvent)
2927- document.attachEvent("onkeydown", modal_key);
2928- else
2929- document.addEventListener("keydown", modal_key, true);
2930-
2931- function modality(mode){
2932- if(!modality.cover){
2933- modality.cover = document.createElement("DIV");
2934- //necessary for IE only
2935- modality.cover.onkeydown = modal_key;
2936- modality.cover.className = "dhx_modal_cover";
2937- document.body.appendChild(modality.cover);
2938- }
2939- var height = document.body.scrollHeight;
2940- modality.cover.style.display = mode?"inline-block":"none";
2941- }
2942-
2943- function button(text, result){
2944- var button_css = "dhtmlx_"+text.toLowerCase().replace(/ /g, "_")+"_button"; // dhtmlx_ok_button, dhtmlx_click_me_button
2945- return "<div class='dhtmlx_popup_button "+button_css+"' result='"+result+"' ><div>"+text+"</div></div>";
2946- }
2947-
2948- function info(text){
2949- if (!t.area){
2950- t.area = document.createElement("DIV");
2951- t.area.className = "dhtmlx_message_area";
2952- t.area.style[t.position]="5px";
2953- document.body.appendChild(t.area);
2954- }
2955-
2956- t.hide(text.id);
2957- var message = document.createElement("DIV");
2958- message.innerHTML = "<div>"+text.text+"</div>";
2959- message.className = "dhtmlx-info dhtmlx-" + text.type;
2960- message.onclick = function(){
2961- t.hide(text.id);
2962- text = null;
2963- };
2964-
2965- if (t.position == "bottom" && t.area.firstChild)
2966- t.area.insertBefore(message,t.area.firstChild);
2967- else
2968- t.area.appendChild(message);
2969-
2970- if (text.expire > 0)
2971- t.timers[text.id]=window.setTimeout(function(){
2972- t.hide(text.id);
2973- }, text.expire);
2974-
2975- t.pull[text.id] = message;
2976- message = null;
2977-
2978- return text.id;
2979- }
2980- function _boxStructure(config, ok, cancel){
2981- var box = document.createElement("DIV");
2982- box.className = " dhtmlx_modal_box dhtmlx-"+config.type;
2983- box.setAttribute("dhxbox", 1);
2984-
2985- var inner = '';
2986-
2987- if (config.width)
2988- box.style.width = config.width;
2989- if (config.height)
2990- box.style.height = config.height;
2991- if (config.title)
2992- inner+='<div class="dhtmlx_popup_title">'+config.title+'</div>';
2993- inner+='<div class="dhtmlx_popup_text"><span>'+(config.content?'':config.text)+'</span></div><div class="dhtmlx_popup_controls">';
2994- if (ok)
2995- inner += button(config.ok || "OK", true);
2996- if (cancel)
2997- inner += button(config.cancel || "Cancel", false);
2998- if (config.buttons){
2999- for (var i=0; i<config.buttons.length; i++)
3000- inner += button(config.buttons[i],i);
3001- }
3002- inner += '</div>';
3003- box.innerHTML = inner;
3004-
3005- if (config.content){
3006- var node = config.content;
3007- if (typeof node == "string")
3008- node = document.getElementById(node);
3009- if (node.style.display == 'none')
3010- node.style.display = "";
3011- box.childNodes[config.title?1:0].appendChild(node);
3012- }
3013-
3014- box.onclick = function(e){
3015- e = e ||event;
3016- var source = e.target || e.srcElement;
3017- if (!source.className) source = source.parentNode;
3018- if (source.className.split(" ")[0] == "dhtmlx_popup_button"){
3019- result = source.getAttribute("result");
3020- result = (result == "true")||(result == "false"?false:result);
3021- callback(config, result);
3022- }
3023- };
3024- config.box = box;
3025- if (ok||cancel)
3026- _dhx_msg_cfg = config;
3027-
3028- return box;
3029- }
3030- function _createBox(config, ok, cancel){
3031- var box = config.tagName ? config : _boxStructure(config, ok, cancel);
3032-
3033- if (!config.hidden)
3034- modality(true);
3035- document.body.appendChild(box);
3036- var x = Math.abs(Math.floor(((window.innerWidth||document.documentElement.offsetWidth) - box.offsetWidth)/2));
3037- var y = Math.abs(Math.floor(((window.innerHeight||document.documentElement.offsetHeight) - box.offsetHeight)/2));
3038- if (config.position == "top")
3039- box.style.top = "-3px";
3040- else
3041- box.style.top = y+'px';
3042- box.style.left = x+'px';
3043- //necessary for IE only
3044- box.onkeydown = modal_key;
3045-
3046- box.focus();
3047- if (config.hidden)
3048- dhtmlx.modalbox.hide(box);
3049-
3050- return box;
3051- }
3052-
3053- function alertPopup(config){
3054- return _createBox(config, true, false);
3055- }
3056- function confirmPopup(config){
3057- return _createBox(config, true, true);
3058- }
3059- function boxPopup(config){
3060- return _createBox(config);
3061- }
3062- function box_params(text, type, callback){
3063- if (typeof text != "object"){
3064- if (typeof type == "function"){
3065- callback = type;
3066- type = "";
3067- }
3068- text = {text:text, type:type, callback:callback };
3069- }
3070- return text;
3071- }
3072- function params(text, type, expire, id){
3073- if (typeof text != "object")
3074- text = {text:text, type:type, expire:expire, id:id};
3075- text.id = text.id||t.uid();
3076- text.expire = text.expire||t.expire;
3077- return text;
3078- }
3079- dhtmlx.alert = function(){
3080- text = box_params.apply(this, arguments);
3081- text.type = text.type || "confirm";
3082- return alertPopup(text);
3083- };
3084- dhtmlx.confirm = function(){
3085- text = box_params.apply(this, arguments);
3086- text.type = text.type || "alert";
3087- return confirmPopup(text);
3088- };
3089- dhtmlx.modalbox = function(){
3090- text = box_params.apply(this, arguments);
3091- text.type = text.type || "alert";
3092- return boxPopup(text);
3093- };
3094- dhtmlx.modalbox.hide = function(node){
3095- while (node && node.getAttribute && !node.getAttribute("dhxbox"))
3096- node = node.parentNode;
3097- if (node){
3098- node.parentNode.removeChild(node);
3099- modality(false);
3100- }
3101- };
3102- var t = dhtmlx.message = function(text, type, expire, id){
3103- text = params.apply(this, arguments);
3104- text.type = text.type||"info";
3105-
3106- var subtype = text.type.split("-")[0];
3107- switch (subtype){
3108- case "alert":
3109- return alertPopup(text);
3110- case "confirm":
3111- return confirmPopup(text);
3112- case "modalbox":
3113- return boxPopup(text);
3114- default:
3115- return info(text);
3116- break;
3117- }
3118- };
3119-
3120- t.seed = (new Date()).valueOf();
3121- t.uid = function(){return t.seed++;};
3122- t.expire = 4000;
3123- t.keyboard = true;
3124- t.position = "top";
3125- t.pull = {};
3126- t.timers = {};
3127-
3128- t.hideAll = function(){
3129- for (var key in t.pull)
3130- t.hide(key);
3131- };
3132- t.hide = function(id){
3133- var obj = t.pull[id];
3134- if (obj && obj.parentNode){
3135- window.setTimeout(function(){
3136- obj.parentNode.removeChild(obj);
3137- obj = null;
3138- },2000);
3139- obj.className+=" hidden";
3140-
3141- if(t.timers[id])
3142- window.clearTimeout(t.timers[id]);
3143- delete t.pull[id];
3144- }
3145- };
3146-})();
3147-/**
3148- * @desc: constructor, data processor object
3149- * @param: serverProcessorURL - url used for update
3150- * @type: public
3151- */
3152-function dataProcessor(serverProcessorURL){
3153- this.serverProcessor = serverProcessorURL;
3154- this.action_param="!nativeeditor_status";
3155-
3156- this.object = null;
3157- this.updatedRows = []; //ids of updated rows
3158-
3159- this.autoUpdate = true;
3160- this.updateMode = "cell";
3161- this._tMode="GET";
3162- this.post_delim = "_";
3163-
3164- this._waitMode=0;
3165- this._in_progress={};//?
3166- this._invalid={};
3167- this.mandatoryFields=[];
3168- this.messages=[];
3169-
3170- this.styles={
3171- updated:"font-weight:bold;",
3172- inserted:"font-weight:bold;",
3173- deleted:"text-decoration : line-through;",
3174- invalid:"background-color:FFE0E0;",
3175- invalid_cell:"border-bottom:2px solid red;",
3176- error:"color:red;",
3177- clear:"font-weight:normal;text-decoration:none;"
3178- };
3179-
3180- this.enableUTFencoding(true);
3181- dhtmlxEventable(this);
3182-
3183- return this;
3184- }
3185-
3186-dataProcessor.prototype={
3187- /**
3188- * @desc: select GET or POST transaction model
3189- * @param: mode - GET/POST
3190- * @param: total - true/false - send records row by row or all at once (for grid only)
3191- * @type: public
3192- */
3193- setTransactionMode:function(mode,total){
3194- this._tMode=mode;
3195- this._tSend=total;
3196- },
3197- escape:function(data){
3198- if (this._utf)
3199- return encodeURIComponent(data);
3200- else
3201- return escape(data);
3202- },
3203- /**
3204- * @desc: allows to set escaping mode
3205- * @param: true - utf based escaping, simple - use current page encoding
3206- * @type: public
3207- */
3208- enableUTFencoding:function(mode){
3209- this._utf=convertStringToBoolean(mode);
3210- },
3211- /**
3212- * @desc: allows to define, which column may trigger update
3213- * @param: val - array or list of true/false values
3214- * @type: public
3215- */
3216- setDataColumns:function(val){
3217- this._columns=(typeof val == "string")?val.split(","):val;
3218- },
3219- /**
3220- * @desc: get state of updating
3221- * @returns: true - all in sync with server, false - some items not updated yet.
3222- * @type: public
3223- */
3224- getSyncState:function(){
3225- return !this.updatedRows.length;
3226- },
3227- /**
3228- * @desc: enable/disable named field for data syncing, will use column ids for grid
3229- * @param: mode - true/false
3230- * @type: public
3231- */
3232- enableDataNames:function(mode){
3233- this._endnm=convertStringToBoolean(mode);
3234- },
3235- /**
3236- * @desc: enable/disable mode , when only changed fields and row id send to the server side, instead of all fields in default mode
3237- * @param: mode - true/false
3238- * @type: public
3239- */
3240- enablePartialDataSend:function(mode){
3241- this._changed=convertStringToBoolean(mode);
3242- },
3243- /**
3244- * @desc: set if rows should be send to server automaticaly
3245- * @param: mode - "row" - based on row selection changed, "cell" - based on cell editing finished, "off" - manual data sending
3246- * @type: public
3247- */
3248- setUpdateMode:function(mode,dnd){
3249- this.autoUpdate = (mode=="cell");
3250- this.updateMode = mode;
3251- this.dnd=dnd;
3252- },
3253- ignore:function(code,master){
3254- this._silent_mode=true;
3255- code.call(master||window);
3256- this._silent_mode=false;
3257- },
3258- /**
3259- * @desc: mark row as updated/normal. check mandatory fields,initiate autoupdate (if turned on)
3260- * @param: rowId - id of row to set update-status for
3261- * @param: state - true for "updated", false for "not updated"
3262- * @param: mode - update mode name
3263- * @type: public
3264- */
3265- setUpdated:function(rowId,state,mode){
3266- if (this._silent_mode) return;
3267- var ind=this.findRow(rowId);
3268-
3269- mode=mode||"updated";
3270- var existing = this.obj.getUserData(rowId,this.action_param);
3271- if (existing && mode == "updated") mode=existing;
3272- if (state){
3273- this.set_invalid(rowId,false); //clear previous error flag
3274- this.updatedRows[ind]=rowId;
3275- this.obj.setUserData(rowId,this.action_param,mode);
3276- if (this._in_progress[rowId])
3277- this._in_progress[rowId]="wait";
3278- } else{
3279- if (!this.is_invalid(rowId)){
3280- this.updatedRows.splice(ind,1);
3281- this.obj.setUserData(rowId,this.action_param,"");
3282- }
3283- }
3284-
3285- //clear changed flag
3286- if (!state)
3287- this._clearUpdateFlag(rowId);
3288-
3289- this.markRow(rowId,state,mode);
3290- if (state && this.autoUpdate) this.sendData(rowId);
3291- },
3292- _clearUpdateFlag:function(id){},
3293- markRow:function(id,state,mode){
3294- var str="";
3295- var invalid=this.is_invalid(id);
3296- if (invalid){
3297- str=this.styles[invalid];
3298- state=true;
3299- }
3300- if (this.callEvent("onRowMark",[id,state,mode,invalid])){
3301- //default logic
3302- str=this.styles[state?mode:"clear"]+str;
3303-
3304- this.obj[this._methods[0]](id,str);
3305-
3306- if (invalid && invalid.details){
3307- str+=this.styles[invalid+"_cell"];
3308- for (var i=0; i < invalid.details.length; i++)
3309- if (invalid.details[i])
3310- this.obj[this._methods[1]](id,i,str);
3311- }
3312- }
3313- },
3314- getState:function(id){
3315- return this.obj.getUserData(id,this.action_param);
3316- },
3317- is_invalid:function(id){
3318- return this._invalid[id];
3319- },
3320- set_invalid:function(id,mode,details){
3321- if (details) mode={value:mode, details:details, toString:function(){ return this.value.toString(); }};
3322- this._invalid[id]=mode;
3323- },
3324- /**
3325- * @desc: check mandatory fields and varify values of cells, initiate update (if specified)
3326- * @param: rowId - id of row to set update-status for
3327- * @type: public
3328- */
3329- checkBeforeUpdate:function(rowId){
3330- return true;
3331- },
3332- /**
3333- * @desc: send row(s) values to server
3334- * @param: rowId - id of row which data to send. If not specified, then all "updated" rows will be send
3335- * @type: public
3336- */
3337- sendData:function(rowId){
3338- if (this._waitMode && (this.obj.mytype=="tree" || this.obj._h2)) return;
3339- if (this.obj.editStop) this.obj.editStop();
3340-
3341-
3342- if(typeof rowId == "undefined" || this._tSend) return this.sendAllData();
3343- if (this._in_progress[rowId]) return false;
3344-
3345- this.messages=[];
3346- if (!this.checkBeforeUpdate(rowId) && this.callEvent("onValidatationError",[rowId,this.messages])) return false;
3347- this._beforeSendData(this._getRowData(rowId),rowId);
3348- },
3349- _beforeSendData:function(data,rowId){
3350- if (!this.callEvent("onBeforeUpdate",[rowId,this.getState(rowId),data])) return false;
3351- this._sendData(data,rowId);
3352- },
3353- serialize:function(data, id){
3354- if (typeof data == "string")
3355- return data;
3356- if (typeof id != "undefined")
3357- return this.serialize_one(data,"");
3358- else{
3359- var stack = [];
3360- var keys = [];
3361- for (var key in data)
3362- if (data.hasOwnProperty(key)){
3363- stack.push(this.serialize_one(data[key],key+this.post_delim));
3364- keys.push(key);
3365- }
3366- stack.push("ids="+this.escape(keys.join(",")));
3367- if (dhtmlx.security_key)
3368- stack.push("dhx_security="+dhtmlx.security_key);
3369- return stack.join("&");
3370- }
3371- },
3372- serialize_one:function(data, pref){
3373- if (typeof data == "string")
3374- return data;
3375- var stack = [];
3376- for (var key in data)
3377- if (data.hasOwnProperty(key))
3378- stack.push(this.escape((pref||"")+key)+"="+this.escape(data[key]));
3379- return stack.join("&");
3380- },
3381- _sendData:function(a1,rowId){
3382- if (!a1) return; //nothing to send
3383- if (!this.callEvent("onBeforeDataSending",rowId?[rowId,this.getState(rowId),a1]:[null, null, a1])) return false;
3384-
3385- if (rowId)
3386- this._in_progress[rowId]=(new Date()).valueOf();
3387- var a2=new dtmlXMLLoaderObject(this.afterUpdate,this,true);
3388-
3389- var a3 = this.serverProcessor+(this._user?(getUrlSymbol(this.serverProcessor)+["dhx_user="+this._user,"dhx_version="+this.obj.getUserData(0,"version")].join("&")):"");
3390-
3391- if (this._tMode!="POST")
3392- a2.loadXML(a3+((a3.indexOf("?")!=-1)?"&":"?")+this.serialize(a1,rowId));
3393- else
3394- a2.loadXML(a3,true,this.serialize(a1,rowId));
3395-
3396- this._waitMode++;
3397- },
3398- sendAllData:function(){
3399- if (!this.updatedRows.length) return;
3400-
3401- this.messages=[]; var valid=true;
3402- for (var i=0; i<this.updatedRows.length; i++)
3403- valid&=this.checkBeforeUpdate(this.updatedRows[i]);
3404- if (!valid && !this.callEvent("onValidatationError",["",this.messages])) return false;
3405-
3406- if (this._tSend)
3407- this._sendData(this._getAllData());
3408- else
3409- for (var i=0; i<this.updatedRows.length; i++)
3410- if (!this._in_progress[this.updatedRows[i]]){
3411- if (this.is_invalid(this.updatedRows[i])) continue;
3412- this._beforeSendData(this._getRowData(this.updatedRows[i]),this.updatedRows[i]);
3413- if (this._waitMode && (this.obj.mytype=="tree" || this.obj._h2)) return; //block send all for tree
3414- }
3415- },
3416-
3417-
3418-
3419-
3420-
3421-
3422-
3423-
3424- _getAllData:function(rowId){
3425- var out={};
3426- var has_one = false;
3427- for(var i=0;i<this.updatedRows.length;i++){
3428- var id=this.updatedRows[i];
3429- if (this._in_progress[id] || this.is_invalid(id)) continue;
3430- if (!this.callEvent("onBeforeUpdate",[id,this.getState(id)])) continue;
3431- out[id]=this._getRowData(id,id+this.post_delim);
3432- has_one = true;
3433- this._in_progress[id]=(new Date()).valueOf();
3434- }
3435- return has_one?out:null;
3436- },
3437-
3438-
3439- /**
3440- * @desc: specify column which value should be varified before sending to server
3441- * @param: ind - column index (0 based)
3442- * @param: verifFunction - function (object) which should verify cell value (if not specified, then value will be compared to empty string). Two arguments will be passed into it: value and column name
3443- * @type: public
3444- */
3445- setVerificator:function(ind,verifFunction){
3446- this.mandatoryFields[ind] = verifFunction||(function(value){return (value!="");});
3447- },
3448- /**
3449- * @desc: remove column from list of those which should be verified
3450- * @param: ind - column Index (0 based)
3451- * @type: public
3452- */
3453- clearVerificator:function(ind){
3454- this.mandatoryFields[ind] = false;
3455- },
3456-
3457-
3458-
3459-
3460-
3461- findRow:function(pattern){
3462- var i=0;
3463- for(i=0;i<this.updatedRows.length;i++)
3464- if(pattern==this.updatedRows[i]) break;
3465- return i;
3466- },
3467-
3468-
3469-
3470-
3471-
3472-
3473-
3474-
3475-
3476-
3477-
3478- /**
3479- * @desc: define custom actions
3480- * @param: name - name of action, same as value of action attribute
3481- * @param: handler - custom function, which receives a XMl response content for action
3482- * @type: private
3483- */
3484- defineAction:function(name,handler){
3485- if (!this._uActions) this._uActions=[];
3486- this._uActions[name]=handler;
3487- },
3488-
3489-
3490-
3491-
3492- /**
3493-* @desc: used in combination with setOnBeforeUpdateHandler to create custom client-server transport system
3494-* @param: sid - id of item before update
3495-* @param: tid - id of item after up0ate
3496-* @param: action - action name
3497-* @type: public
3498-* @topic: 0
3499-*/
3500- afterUpdateCallback:function(sid, tid, action, btag) {
3501- var marker = sid;
3502- var correct=(action!="error" && action!="invalid");
3503- if (!correct) this.set_invalid(sid,action);
3504- if ((this._uActions)&&(this._uActions[action])&&(!this._uActions[action](btag)))
3505- return (delete this._in_progress[marker]);
3506-
3507- if (this._in_progress[marker]!="wait")
3508- this.setUpdated(sid, false);
3509-
3510- var soid = sid;
3511-
3512- switch (action) {
3513- case "update":
3514- case "updated":
3515- case "inserted":
3516- case "insert":
3517- if (tid != sid) {
3518- this.obj[this._methods[2]](sid, tid);
3519- sid = tid;
3520- }
3521- break;
3522- case "delete":
3523- case "deleted":
3524- this.obj.setUserData(sid, this.action_param, "true_deleted");
3525- this.obj[this._methods[3]](sid);
3526- delete this._in_progress[marker];
3527- return this.callEvent("onAfterUpdate", [sid, action, tid, btag]);
3528- break;
3529- }
3530-
3531- if (this._in_progress[marker]!="wait"){
3532- if (correct) this.obj.setUserData(sid, this.action_param,'');
3533- delete this._in_progress[marker];
3534- } else {
3535- delete this._in_progress[marker];
3536- this.setUpdated(tid,true,this.obj.getUserData(sid,this.action_param));
3537- }
3538-
3539- this.callEvent("onAfterUpdate", [sid, action, tid, btag]);
3540- },
3541-
3542- /**
3543- * @desc: response from server
3544- * @param: xml - XMLLoader object with response XML
3545- * @type: private
3546- */
3547- afterUpdate:function(that,b,c,d,xml){
3548- xml.getXMLTopNode("data"); //fix incorrect content type in IE
3549- if (!xml.xmlDoc.responseXML) return;
3550- var atag=xml.doXPath("//data/action");
3551- for (var i=0; i<atag.length; i++){
3552- var btag=atag[i];
3553- var action = btag.getAttribute("type");
3554- var sid = btag.getAttribute("sid");
3555- var tid = btag.getAttribute("tid");
3556-
3557- that.afterUpdateCallback(sid,tid,action,btag);
3558- }
3559- that.finalizeUpdate();
3560- },
3561- finalizeUpdate:function(){
3562- if (this._waitMode) this._waitMode--;
3563-
3564- if ((this.obj.mytype=="tree" || this.obj._h2) && this.updatedRows.length)
3565- this.sendData();
3566- this.callEvent("onAfterUpdateFinish",[]);
3567- if (!this.updatedRows.length)
3568- this.callEvent("onFullSync",[]);
3569- },
3570-
3571-
3572-
3573-
3574-
3575- /**
3576- * @desc: initializes data-processor
3577- * @param: anObj - dhtmlxGrid object to attach this data-processor to
3578- * @type: public
3579- */
3580- init:function(anObj){
3581- this.obj = anObj;
3582- if (this.obj._dp_init)
3583- this.obj._dp_init(this);
3584- },
3585-
3586-
3587- setOnAfterUpdate:function(ev){
3588- this.attachEvent("onAfterUpdate",ev);
3589- },
3590- enableDebug:function(mode){
3591- },
3592- setOnBeforeUpdateHandler:function(func){
3593- this.attachEvent("onBeforeDataSending",func);
3594- },
3595-
3596-
3597-
3598- /*! starts autoupdate mode
3599- @param interval
3600- time interval for sending update requests
3601- */
3602- setAutoUpdate: function(interval, user) {
3603- interval = interval || 2000;
3604-
3605- this._user = user || (new Date()).valueOf();
3606- this._need_update = false;
3607- this._loader = null;
3608- this._update_busy = false;
3609-
3610- this.attachEvent("onAfterUpdate",function(sid,action,tid,xml_node){
3611- this.afterAutoUpdate(sid, action, tid, xml_node);
3612- });
3613- this.attachEvent("onFullSync",function(){
3614- this.fullSync();
3615- });
3616-
3617- var self = this;
3618- window.setInterval(function(){
3619- self.loadUpdate();
3620- }, interval);
3621- },
3622-
3623-
3624- /*! process updating request answer
3625- if status == collision version is depricated
3626- set flag for autoupdating immidiatly
3627- */
3628- afterAutoUpdate: function(sid, action, tid, xml_node) {
3629- if (action == 'collision') {
3630- this._need_update = true;
3631- return false;
3632- } else {
3633- return true;
3634- }
3635- },
3636-
3637-
3638- /*! callback function for onFillSync event
3639- call update function if it's need
3640- */
3641- fullSync: function() {
3642- if (this._need_update == true) {
3643- this._need_update = false;
3644- this.loadUpdate();
3645- }
3646- return true;
3647- },
3648-
3649-
3650- /*! sends query to the server and call callback function
3651- */
3652- getUpdates: function(url,callback){
3653- if (this._update_busy)
3654- return false;
3655- else
3656- this._update_busy = true;
3657-
3658- this._loader = this._loader || new dtmlXMLLoaderObject(true);
3659-
3660- this._loader.async=true;
3661- this._loader.waitCall=callback;
3662- this._loader.loadXML(url);
3663- },
3664-
3665-
3666- /*! returns xml node value
3667- @param node
3668- xml node
3669- */
3670- _v: function(node) {
3671- if (node.firstChild) return node.firstChild.nodeValue;
3672- return "";
3673- },
3674-
3675-
3676- /*! returns values array of xml nodes array
3677- @param arr
3678- array of xml nodes
3679- */
3680- _a: function(arr) {
3681- var res = [];
3682- for (var i=0; i < arr.length; i++) {
3683- res[i]=this._v(arr[i]);
3684- };
3685- return res;
3686- },
3687-
3688-
3689- /*! loads updates and processes them
3690- */
3691- loadUpdate: function(){
3692- var self = this;
3693- var version = this.obj.getUserData(0,"version");
3694- var url = this.serverProcessor+getUrlSymbol(this.serverProcessor)+["dhx_user="+this._user,"dhx_version="+version].join("&");
3695- url = url.replace("editing=true&","");
3696- this.getUpdates(url, function(){
3697- var vers = self._loader.doXPath("//userdata");
3698- self.obj.setUserData(0,"version",self._v(vers[0]));
3699-
3700- var upds = self._loader.doXPath("//update");
3701- if (upds.length){
3702- self._silent_mode = true;
3703-
3704- for (var i=0; i<upds.length; i++) {
3705- var status = upds[i].getAttribute('status');
3706- var id = upds[i].getAttribute('id');
3707- var parent = upds[i].getAttribute('parent');
3708- switch (status) {
3709- case 'inserted':
3710- self.callEvent("insertCallback",[upds[i], id, parent]);
3711- break;
3712- case 'updated':
3713- self.callEvent("updateCallback",[upds[i], id, parent]);
3714- break;
3715- case 'deleted':
3716- self.callEvent("deleteCallback",[upds[i], id, parent]);
3717- break;
3718- }
3719- }
3720-
3721- self._silent_mode = false;
3722- }
3723-
3724- self._update_busy = false;
3725- self = null;
3726- });
3727- }
3728-
3729-};
3730-
3731-//(c)dhtmlx ltd. www.dhtmlx.com
3732-/*
3733- dhx_sort[index]=direction
3734- dhx_filter[index]=mask
3735-*/
3736-if (window.dhtmlXGridObject){
3737- dhtmlXGridObject.prototype._init_point_connector=dhtmlXGridObject.prototype._init_point;
3738- dhtmlXGridObject.prototype._init_point=function(){
3739- var clear_url=function(url){
3740- url=url.replace(/(\?|\&)connector[^\f]*/g,"");
3741- return url+(url.indexOf("?")!=-1?"&":"?")+"connector=true"+(this.hdr.rows.length > 0 ? "&dhx_no_header=1":"");
3742- };
3743- var combine_urls=function(url){
3744- return clear_url.call(this,url)+(this._connector_sorting||"")+(this._connector_filter||"");
3745- };
3746- var sorting_url=function(url,ind,dir){
3747- this._connector_sorting="&dhx_sort["+ind+"]="+dir;
3748- return combine_urls.call(this,url);
3749- };
3750- var filtering_url=function(url,inds,vals){
3751- for (var i=0; i<inds.length; i++)
3752- inds[i]="dhx_filter["+inds[i]+"]="+encodeURIComponent(vals[i]);
3753- this._connector_filter="&"+inds.join("&");
3754- return combine_urls.call(this,url);
3755- };
3756- this.attachEvent("onCollectValues",function(ind){
3757- if (this._con_f_used[ind]){
3758- if (typeof(this._con_f_used[ind]) == "object")
3759- return this._con_f_used[ind];
3760- else
3761- return false;
3762- }
3763- return true;
3764- });
3765- this.attachEvent("onDynXLS",function(){
3766- this.xmlFileUrl=combine_urls.call(this,this.xmlFileUrl);
3767- return true;
3768- });
3769- this.attachEvent("onBeforeSorting",function(ind,type,dir){
3770- if (type=="connector"){
3771- var self=this;
3772- this.clearAndLoad(sorting_url.call(this,this.xmlFileUrl,ind,dir),function(){
3773- self.setSortImgState(true,ind,dir);
3774- });
3775- return false;
3776- }
3777- return true;
3778- });
3779- this.attachEvent("onFilterStart",function(a,b){
3780- if (this._con_f_used.length){
3781- this.clearAndLoad(filtering_url.call(this,this.xmlFileUrl,a,b));
3782- return false;
3783- }
3784- return true;
3785- });
3786- this.attachEvent("onXLE",function(a,b,c,xml){
3787- if (!xml) return;
3788- });
3789-
3790- if (this._init_point_connector) this._init_point_connector();
3791- };
3792- dhtmlXGridObject.prototype._con_f_used=[];
3793- dhtmlXGridObject.prototype._in_header_connector_text_filter=function(t,i){
3794- if (!this._con_f_used[i])
3795- this._con_f_used[i]=1;
3796- return this._in_header_text_filter(t,i);
3797- };
3798- dhtmlXGridObject.prototype._in_header_connector_select_filter=function(t,i){
3799- if (!this._con_f_used[i])
3800- this._con_f_used[i]=2;
3801- return this._in_header_select_filter(t,i);
3802- };
3803- dhtmlXGridObject.prototype.load_connector=dhtmlXGridObject.prototype.load;
3804- dhtmlXGridObject.prototype.load=function(url, call, type){
3805- if (!this._colls_loaded && this.cellType){
3806- var ar=[];
3807- for (var i=0; i < this.cellType.length; i++)
3808- if (this.cellType[i].indexOf("co")==0 || this._con_f_used[i]==2) ar.push(i);
3809- if (ar.length)
3810- arguments[0]+=(arguments[0].indexOf("?")!=-1?"&":"?")+"connector=true&dhx_colls="+ar.join(",");
3811- }
3812- return this.load_connector.apply(this,arguments);
3813- };
3814- dhtmlXGridObject.prototype._parseHead_connector=dhtmlXGridObject.prototype._parseHead;
3815- dhtmlXGridObject.prototype._parseHead=function(url, call, type){
3816- this._parseHead_connector.apply(this,arguments);
3817- if (!this._colls_loaded){
3818- var cols = this.xmlLoader.doXPath("./coll_options", arguments[0]);
3819- for (var i=0; i < cols.length; i++){
3820- var f = cols[i].getAttribute("for");
3821- var v = [];
3822- var combo=null;
3823- if (this.cellType[f] == "combo")
3824- combo = this.getColumnCombo(f);
3825- if (this.cellType[f].indexOf("co")==0)
3826- combo=this.getCombo(f);
3827-
3828- var os = this.xmlLoader.doXPath("./item",cols[i]);
3829- for (var j=0; j<os.length; j++){
3830- var val=os[j].getAttribute("value");
3831-
3832- if (combo){
3833- var lab=os[j].getAttribute("label")||val;
3834-
3835- if (combo.addOption)
3836- combo.addOption([[val, lab]]);
3837- else
3838- combo.put(val,lab);
3839-
3840- v[v.length]=lab;
3841- } else
3842- v[v.length]=val;
3843- }
3844- if (this._con_f_used[f*1])
3845- this._con_f_used[f*1]=v;
3846- }
3847- this._colls_loaded=true;
3848- }
3849- };
3850-}
3851-
3852-if (window.dataProcessor){
3853- dataProcessor.prototype.init_original=dataProcessor.prototype.init;
3854- dataProcessor.prototype.init=function(obj){
3855- this.init_original(obj);
3856- obj._dataprocessor=this;
3857-
3858- this.setTransactionMode("POST",true);
3859- this.serverProcessor+=(this.serverProcessor.indexOf("?")!=-1?"&":"?")+"editing=true";
3860- };
3861-}
3862-dhtmlxError.catchError("LoadXML",function(a,b,c){
3863- if (c[0].status != 0) {
3864- alert(c[0].responseText);
3865- }
3866-});
3867-
3868-window.dhtmlXScheduler = window.scheduler = { version: "3.5.0" };
3869-dhtmlxEventable(scheduler);
3870-
3871-scheduler.init=function(id,date,mode){
3872- date=date||(new Date());
3873- mode=mode||"week";
3874-
3875- scheduler.date.init();
3876-
3877- this._obj=(typeof id == "string")?document.getElementById(id):id;
3878- this._els=[];
3879- this._scroll=true;
3880- this._quirks=(_isIE && document.compatMode == "BackCompat");
3881- this._quirks7=(_isIE && navigator.appVersion.indexOf("MSIE 8")==-1);
3882-
3883- this.get_elements();
3884- this.init_templates();
3885- this.set_actions();
3886- dhtmlxEvent(window,"resize",function(){
3887- window.clearTimeout(scheduler._resize_timer);
3888- scheduler._resize_timer=window.setTimeout(function(){
3889- if (scheduler.callEvent("onSchedulerResize",[])) {
3890- scheduler.update_view();
3891- scheduler.callEvent("onAfterSchedulerResize", []);
3892- }
3893- }, 100);
3894- });
3895- this.set_sizes();
3896- scheduler.callEvent('onSchedulerReady', []);
3897- this.setCurrentView(date,mode);
3898-};
3899-scheduler.xy={
3900- nav_height:22,
3901- min_event_height:40,
3902- scale_width:50,
3903- bar_height:20,
3904- scroll_width:18,
3905- scale_height:20,
3906- month_scale_height:20,
3907- menu_width:25,
3908- margin_top:0,
3909- margin_left:0,
3910- editor_width:140,
3911- lightbox_additional_height:50
3912-};
3913-scheduler.keys={
3914- edit_save:13,
3915- edit_cancel:27
3916-};
3917-scheduler.set_sizes=function(){
3918- var w = this._x = this._obj.clientWidth-this.xy.margin_left;
3919- var h = this._y = this._obj.clientHeight-this.xy.margin_top;
3920-
3921- //not-table mode always has scroll - need to be fixed in future
3922- var scale_x=this._table_view?0:(this.xy.scale_width+this.xy.scroll_width);
3923- var scale_s=this._table_view?-1:this.xy.scale_width;
3924-
3925- this.set_xy(this._els["dhx_cal_navline"][0],w,this.xy.nav_height,0,0);
3926- this.set_xy(this._els["dhx_cal_header"][0],w-scale_x,this.xy.scale_height,scale_s,this.xy.nav_height+(this._quirks?-1:1));
3927- //to support alter-skin, we need a way to alter height directly from css
3928- var actual_height = this._els["dhx_cal_navline"][0].offsetHeight;
3929- if (actual_height > 0) this.xy.nav_height = actual_height;
3930-
3931- var data_y=this.xy.scale_height+this.xy.nav_height+(this._quirks?-2:0);
3932- this.set_xy(this._els["dhx_cal_data"][0],w,h-(data_y+2),0,data_y+2);
3933-};
3934-scheduler.set_xy=function(node,w,h,x,y){
3935- node.style.width=Math.max(0,w)+"px";
3936- node.style.height=Math.max(0,h)+"px";
3937- if (arguments.length>3){
3938- node.style.left=x+"px";
3939- node.style.top=y+"px";
3940- }
3941-};
3942-scheduler.get_elements=function(){
3943- //get all child elements as named hash
3944- var els=this._obj.getElementsByTagName("DIV");
3945- for (var i=0; i < els.length; i++){
3946- var name=els[i].className;
3947- if (name) name = name.split(" ")[0];
3948- if (!this._els[name]) this._els[name]=[];
3949- this._els[name].push(els[i]);
3950-
3951- //check if name need to be changed
3952- var t=scheduler.locale.labels[els[i].getAttribute("name")||name];
3953- if (t) els[i].innerHTML=t;
3954- }
3955-};
3956-scheduler.set_actions=function(){
3957- for (var a in this._els)
3958- if (this._click[a])
3959- for (var i=0; i < this._els[a].length; i++)
3960- this._els[a][i].onclick=scheduler._click[a];
3961- this._obj.onselectstart=function(e){ return false; };
3962- this._obj.onmousemove=function(e){
3963- scheduler._on_mouse_move(e||event);
3964- };
3965- this._obj.onmousedown=function(e){
3966- scheduler._on_mouse_down(e||event);
3967- };
3968- this._obj.onmouseup=function(e){
3969- scheduler._on_mouse_up(e||event);
3970- };
3971- this._obj.ondblclick=function(e){
3972- scheduler._on_dbl_click(e||event);
3973- };
3974- this._obj.oncontextmenu = function(e) {
3975- var ev = e||event;
3976- var src = ev.target||ev.srcElement;
3977- var returnValue = scheduler.callEvent("onContextMenu", [scheduler._locate_event(src), ev]);
3978- return returnValue;
3979- };
3980-};
3981-scheduler.select=function(id){
3982- if (this._select_id==id) return;
3983- this.editStop(false);
3984- this.unselect();
3985- this._select_id = id;
3986- this.updateEvent(id);
3987-};
3988-scheduler.unselect=function(id){
3989- if (id && id!=this._select_id) return;
3990- var t=this._select_id;
3991- this._select_id = null;
3992- if (t) this.updateEvent(t);
3993-};
3994-scheduler.getState=function(){
3995- return {
3996- mode: this._mode,
3997- date: this._date,
3998- min_date: this._min_date,
3999- max_date: this._max_date,
4000- editor_id: this._edit_id,
4001- lightbox_id: this._lightbox_id,
4002- new_event: this._new_event,
4003- select_id: this._select_id,
4004- expanded: this.expanded,
4005- drag_id: this._drag_id,
4006- drag_mode: this._drag_mode
4007- };
4008-};
4009-scheduler._click={
4010- dhx_cal_data:function(e){
4011- var trg = e?e.target:event.srcElement;
4012- var id = scheduler._locate_event(trg);
4013-
4014- e = e || event;
4015-
4016- if (!id) {
4017- scheduler.callEvent("onEmptyClick",[scheduler.getActionData(e).date, e]);
4018- } else {
4019- if ( !scheduler.callEvent("onClick",[id,e]) || scheduler.config.readonly ) return;
4020- }
4021-
4022- if (id && scheduler.config.select) {
4023-
4024- scheduler.select(id);
4025- var mask = trg.className;
4026- if (mask.indexOf("_icon")!=-1)
4027- scheduler._click.buttons[mask.split(" ")[1].replace("icon_","")](id);
4028- } else
4029- scheduler._close_not_saved();
4030- },
4031- dhx_cal_prev_button:function(){
4032- scheduler._click.dhx_cal_next_button(0,-1);
4033- },
4034- dhx_cal_next_button:function(dummy,step){
4035- scheduler.setCurrentView(scheduler.date.add( //next line changes scheduler._date , but seems it has not side-effects
4036- scheduler.date[scheduler._mode+"_start"](scheduler._date),(step||1),scheduler._mode));
4037- },
4038- dhx_cal_today_button:function(){
4039- scheduler.setCurrentView(new Date());
4040- },
4041- dhx_cal_tab:function(){
4042- var name = this.getAttribute("name");
4043- var mode = name.substring(0, name.search("_tab"));
4044- scheduler.setCurrentView(scheduler._date,mode);
4045- },
4046- buttons:{
4047- "delete":function(id){
4048- var c = scheduler.locale.labels.confirm_deleting;
4049- scheduler._dhtmlx_confirm(c, scheduler.locale.labels.title_confirm_deleting, function(){ scheduler.deleteEvent(id) });
4050- },
4051- edit:function(id){ scheduler.edit(id); },
4052- save:function(id){ scheduler.editStop(true); },
4053- details:function(id){ scheduler.showLightbox(id); },
4054- cancel:function(id){ scheduler.editStop(false); }
4055- }
4056-};
4057-scheduler._dhtmlx_confirm = function(message, title, callback) {
4058- if (!message)
4059- return callback();
4060- var opts = { text: message };
4061- if (title)
4062- opts.title = title;
4063- if (callback) {
4064- opts.callback = function(result) {
4065- if (result)
4066- callback();
4067- };
4068- }
4069- dhtmlx.confirm(opts);
4070-};
4071-scheduler.addEventNow=function(start,end,e){
4072- var base = {};
4073- if (start && start.constructor.toString().match(/object/i) !== null){
4074- base = start;
4075- start = null;
4076- }
4077-
4078- var d = (this.config.event_duration||this.config.time_step)*60000;
4079- if (!start) start = Math.round((new Date()).valueOf()/d)*d;
4080- var start_date = new Date(start);
4081- if (!end){
4082- var start_hour = this.config.first_hour;
4083- if (start_hour > start_date.getHours()){
4084- start_date.setHours(start_hour);
4085- start = start_date.valueOf();
4086- }
4087- end = start.valueOf()+d;
4088- }
4089- var end_date = new Date(end);
4090-
4091- // scheduler.addEventNow(new Date(), new Date()) + collision though get_visible events defect (such event was not retrieved)
4092- if(start_date.valueOf() == end_date.valueOf())
4093- end_date.setTime(end_date.valueOf()+d);
4094-
4095- base.start_date = base.start_date||start_date;
4096- base.end_date = base.end_date||end_date;
4097- base.text = base.text||this.locale.labels.new_event;
4098- base.id = this._drag_id = this.uid();
4099- this._drag_mode="new-size";
4100-
4101- this._loading=true;
4102- this.addEvent(base);
4103- this.callEvent("onEventCreated",[this._drag_id,e]);
4104- this._loading=false;
4105-
4106- this._drag_event={}; //dummy , to trigger correct event updating logic
4107- this._on_mouse_up(e);
4108-};
4109-scheduler._on_dbl_click=function(e,src){
4110- src = src||(e.target||e.srcElement);
4111- if (this.config.readonly) return;
4112- var name = src.className.split(" ")[0];
4113- switch(name){
4114- case "dhx_scale_holder":
4115- case "dhx_scale_holder_now":
4116- case "dhx_month_body":
4117- case "dhx_wa_day_data":
4118- case "dhx_marked_timespan":
4119- if (!scheduler.config.dblclick_create) break;
4120- this.addEventNow(this.getActionData(e).date,null,e);
4121- break;
4122- case "dhx_cal_event":
4123- case "dhx_wa_ev_body":
4124- case "dhx_agenda_line":
4125- case "dhx_grid_event":
4126- case "dhx_cal_event_line":
4127- case "dhx_cal_event_clear":
4128- var id = this._locate_event(src);
4129- if (!this.callEvent("onDblClick",[id,e])) return;
4130- if (this.config.details_on_dblclick || this._table_view || !this.getEvent(id)._timed || !this.config.select)
4131- this.showLightbox(id);
4132- else
4133- this.edit(id);
4134- break;
4135- case "dhx_time_block":
4136- case "dhx_cal_container":
4137- return;
4138- break;
4139- default:
4140- var t = this["dblclick_"+name];
4141- if (t) {
4142- t.call(this,e);
4143- }
4144- else {
4145- if (src.parentNode && src != this)
4146- return scheduler._on_dbl_click(e,src.parentNode);
4147- }
4148- break;
4149- }
4150-};
4151-
4152-scheduler._mouse_coords=function(ev){
4153- var pos;
4154- var b=document.body;
4155- var d = document.documentElement;
4156- if(ev.pageX || ev.pageY)
4157- pos={x:ev.pageX, y:ev.pageY};
4158- else pos={
4159- x:ev.clientX + (b.scrollLeft||d.scrollLeft||0) - b.clientLeft,
4160- y:ev.clientY + (b.scrollTop||d.scrollTop||0) - b.clientTop
4161- };
4162-
4163- //apply layout
4164- pos.x-=getAbsoluteLeft(this._obj)+(this._table_view?0:this.xy.scale_width);
4165- pos.y-=getAbsoluteTop(this._obj)+this.xy.nav_height+(this._dy_shift||0)+this.xy.scale_height-this._els["dhx_cal_data"][0].scrollTop;
4166- pos.ev = ev;
4167-
4168- var handler = this["mouse_"+this._mode];
4169- if (handler)
4170- return handler.call(this,pos);
4171-
4172- //transform to date
4173- if (!this._table_view) {
4174- pos.x=Math.min(this._cols.length-1, Math.max(0,Math.ceil(pos.x/this._cols[0])-1));
4175- pos.y=Math.max(0,Math.ceil(pos.y*60/(this.config.time_step*this.config.hour_size_px))-1)+this.config.first_hour*(60/this.config.time_step);
4176- } else {
4177- if (!this._cols || !this._colsS) // agenda/map views
4178- return pos;
4179- var dy=0;
4180- for (dy=1; dy < this._colsS.heights.length; dy++)
4181- if (this._colsS.heights[dy]>pos.y) break;
4182-
4183- pos.y=Math.ceil( (Math.max(0, pos.x/this._cols[0])+Math.max(0,dy-1)*7)*24*60/this.config.time_step );
4184-
4185- if (scheduler._drag_mode || this._mode == "month")
4186- pos.y=(Math.max(0,Math.ceil(pos.x/this._cols[0])-1)+Math.max(0,dy-1)*7)*24*60/this.config.time_step;
4187-
4188- pos.x=0;
4189- }
4190-
4191- return pos;
4192-};
4193-scheduler._close_not_saved=function(){
4194- if (new Date().valueOf()-(scheduler._new_event||0) > 500 && scheduler._edit_id){
4195- var c=scheduler.locale.labels.confirm_closing;
4196-
4197- scheduler._dhtmlx_confirm(c, scheduler.locale.labels.title_confirm_closing, function() { scheduler.editStop(scheduler.config.positive_closing); });
4198- }
4199-};
4200-scheduler._correct_shift=function(start, back){
4201- return start-=((new Date(scheduler._min_date)).getTimezoneOffset()-(new Date(start)).getTimezoneOffset())*60000*(back?-1:1);
4202-};
4203-scheduler._on_mouse_move=function(e){
4204- if (this._drag_mode){
4205- var pos=this._mouse_coords(e);
4206- if (!this._drag_pos || pos.custom || this._drag_pos.x!=pos.x || this._drag_pos.y!=pos.y){
4207- var start, end;
4208- if (this._edit_id!=this._drag_id)
4209- this._close_not_saved();
4210-
4211- this._drag_pos=pos;
4212-
4213- if (this._drag_mode=="create"){
4214- this._close_not_saved();
4215- this._loading=true; //will be ignored by dataprocessor
4216-
4217- start = this._get_date_from_pos(pos).valueOf();
4218-
4219- var res = this.callEvent("onBeforeEventCreated", [e]);
4220- if (!res)
4221- return;
4222-
4223- if (!this._drag_start){
4224- this._drag_start=start; return;
4225- }
4226- end = start;
4227- if (end==this._drag_start) return;
4228-
4229- this._drag_id=this.uid();
4230- this.addEvent(new Date(this._drag_start), new Date(end),this.locale.labels.new_event,this._drag_id, pos.fields);
4231-
4232- this.callEvent("onEventCreated",[this._drag_id,e]);
4233- this._loading=false;
4234- this._drag_mode="new-size";
4235-
4236- }
4237-
4238- var ev=this.getEvent(this._drag_id);
4239-
4240- if (this._drag_mode=="move"){
4241- start = this._min_date.valueOf()+(pos.y*this.config.time_step+pos.x*24*60)*60000;
4242- if (!pos.custom && this._table_view) start+=this.date.time_part(ev.start_date)*1000;
4243- start = this._correct_shift(start);
4244- end = ev.end_date.valueOf()-(ev.start_date.valueOf()-start);
4245- } else { // resize
4246- start = ev.start_date.valueOf();
4247- end = ev.end_date.valueOf();
4248- if (this._table_view) {
4249- var resize_date = this._min_date.valueOf()+pos.y*this.config.time_step*60000 + (pos.custom?0:24*60*60000);
4250- if (this._mode == "month")
4251- resize_date = this._correct_shift(resize_date, false);
4252-
4253- if (pos.resize_from_start)
4254- start = resize_date;
4255- else
4256- end = resize_date;
4257- } else {
4258- end = this.date.date_part(new Date(ev.end_date)).valueOf()+pos.y*this.config.time_step*60000;
4259- this._els["dhx_cal_data"][0].style.cursor="s-resize";
4260- if (this._mode == "week" || this._mode == "day")
4261- end = this._correct_shift(end);
4262- }
4263- if (this._drag_mode == "new-size") {
4264- if (end <= this._drag_start){
4265- var shift = pos.shift||((this._table_view && !pos.custom)?24*60*60000:0);
4266- start = end-(pos.shift?0:shift);
4267- end = this._drag_start+(shift||(this.config.time_step*60000));
4268- } else {
4269- start = this._drag_start;
4270- }
4271- } else {
4272- if (end<=start)
4273- end=start+this.config.time_step*60000;
4274- }
4275- }
4276- var new_end = new Date(end-1);
4277- var new_start = new Date(start);
4278- //prevent out-of-borders situation for day|week view
4279- if ( this._table_view || (new_end.getDate()==new_start.getDate() && new_end.getHours()<this.config.last_hour) || scheduler._allow_dnd ){
4280- ev.start_date=new_start;
4281- ev.end_date=new Date(end);
4282- if (this.config.update_render){
4283- //fix for repaint after dnd and scroll issue, #231
4284- var sx = scheduler._els["dhx_cal_data"][0].scrollTop;
4285- this.update_view();
4286- scheduler._els["dhx_cal_data"][0].scrollTop = sx;
4287- } else
4288- this.updateEvent(this._drag_id);
4289- }
4290- if (this._table_view) {
4291- this.for_rendered(this._drag_id,function(r){
4292- r.className+=" dhx_in_move";
4293- });
4294- }
4295- }
4296- } else {
4297- if (scheduler.checkEvent("onMouseMove")){
4298-
4299- var id = this._locate_event(e.target||e.srcElement);
4300- this.callEvent("onMouseMove",[id,e]);
4301- }
4302- }
4303-};
4304-scheduler._on_mouse_down=function(e,src){
4305- if (this.config.readonly || this._drag_mode) return;
4306- src = src||(e.target||e.srcElement);
4307- var classname = src.className && src.className.split(" ")[0];
4308- switch (classname) {
4309- case "dhx_cal_event_line":
4310- case "dhx_cal_event_clear":
4311- if (this._table_view)
4312- this._drag_mode="move"; //item in table mode
4313- break;
4314- case "dhx_event_move":
4315- case "dhx_wa_ev_body":
4316- this._drag_mode="move";
4317- break;
4318- case "dhx_event_resize":
4319- this._drag_mode="resize";
4320- break;
4321- case "dhx_scale_holder":
4322- case "dhx_scale_holder_now":
4323- case "dhx_month_body":
4324- case "dhx_matrix_cell":
4325- case "dhx_marked_timespan":
4326- this._drag_mode="create";
4327- this.unselect(this._select_id);
4328- break;
4329- case "":
4330- if (src.parentNode)
4331- return scheduler._on_mouse_down(e,src.parentNode);
4332- default:
4333- if (scheduler.checkEvent("onMouseDown") && scheduler.callEvent("onMouseDown", [classname])) {
4334- if (src.parentNode && src != this) {
4335- return scheduler._on_mouse_down(e,src.parentNode);
4336- }
4337- }
4338- this._drag_mode=null;
4339- this._drag_id=null;
4340- break;
4341- }
4342- if (this._drag_mode){
4343- var id = this._locate_event(src);
4344- if (!this.config["drag_"+this._drag_mode] || !this.callEvent("onBeforeDrag",[id, this._drag_mode, e]))
4345- this._drag_mode=this._drag_id=0;
4346- else {
4347- this._drag_id= id;
4348- this._drag_event = scheduler._lame_clone(this.getEvent(this._drag_id) || {});
4349- }
4350- }
4351- this._drag_start=null;
4352-};
4353-scheduler._on_mouse_up=function(e){
4354- if (this._drag_mode && this._drag_id){
4355- this._els["dhx_cal_data"][0].style.cursor="default";
4356- //drop
4357- var ev=this.getEvent(this._drag_id);
4358- if (this._drag_event._dhx_changed || !this._drag_event.start_date || ev.start_date.valueOf()!=this._drag_event.start_date.valueOf() || ev.end_date.valueOf()!=this._drag_event.end_date.valueOf()){
4359- var is_new=(this._drag_mode=="new-size");
4360- if (!this.callEvent("onBeforeEventChanged",[ev,e,is_new,this._drag_event])){
4361- if (is_new)
4362- this.deleteEvent(ev.id, true);
4363- else {
4364- this._drag_event._dhx_changed = false;
4365- scheduler._lame_copy(ev, this._drag_event);
4366- this.updateEvent(ev.id);
4367- }
4368- } else {
4369- var drag_id = this._drag_id;
4370- this._drag_id = this._drag_mode = null;
4371- if (is_new && this.config.edit_on_create){
4372- this.unselect();
4373- this._new_event=new Date();//timestamp of creation
4374- //if selection disabled - force lightbox usage
4375- if (this._table_view || this.config.details_on_create || !this.config.select) {
4376- return this.showLightbox(drag_id);
4377- }
4378- this._drag_pos = true; //set flag to trigger full redraw
4379- this._select_id = this._edit_id = drag_id;
4380- } else {
4381- if (!this._new_event)
4382- this.callEvent(is_new?"onEventAdded":"onEventChanged",[drag_id,this.getEvent(drag_id)]);
4383- }
4384- }
4385- }
4386- if (this._drag_pos) this.render_view_data(); //redraw even if there is no real changes - necessary for correct positioning item after drag
4387- }
4388- this._drag_id = null;
4389- this._drag_mode=null;
4390- this._drag_pos=null;
4391-};
4392-scheduler.update_view=function(){
4393- this._reset_scale();
4394- if (this._load_mode && this._load()) return this._render_wait = true;
4395- this.render_view_data();
4396-};
4397-scheduler.updateView = function(date, mode) {
4398- date = date || this._date;
4399- mode = mode || this._mode;
4400-
4401- var dhx_cal_data = 'dhx_cal_data';
4402-
4403- if (!this._mode)
4404- this._obj.className += " dhx_scheduler_" + mode; else {
4405- this._obj.className = this._obj.className.replace("dhx_scheduler_" + this._mode, "dhx_scheduler_" + mode);
4406- }
4407-
4408- var prev_scroll = (this._mode == mode && this.config.preserve_scroll) ? this._els[dhx_cal_data][0].scrollTop : false; // saving current scroll
4409-
4410- //hide old custom view
4411- if (this[this._mode + "_view"] && mode && this._mode != mode)
4412- this[this._mode + "_view"](false);
4413-
4414- this._close_not_saved();
4415-
4416- var dhx_multi_day = 'dhx_multi_day';
4417- if (this._els[dhx_multi_day]) {
4418- this._els[dhx_multi_day][0].parentNode.removeChild(this._els[dhx_multi_day][0]);
4419- this._els[dhx_multi_day] = null;
4420- }
4421-
4422- this._mode = mode;
4423- this._date = date;
4424- this._table_view = (this._mode == "month");
4425-
4426- var tabs = this._els["dhx_cal_tab"];
4427- for (var i = 0; i < tabs.length; i++) {
4428- var name = tabs[i].className;
4429- name = name.replace(/ active/g, "");
4430- if (tabs[i].getAttribute("name") == this._mode + "_tab")
4431- name = name + " active";
4432- tabs[i].className = name;
4433- }
4434-
4435- //show new view
4436- var view = this[this._mode + "_view"];
4437- view ? view(true) : this.update_view();
4438-
4439- if (typeof prev_scroll == "number") // if we are updating or working with the same view scrollTop should be saved
4440- this._els[dhx_cal_data][0].scrollTop = prev_scroll; // restoring original scroll
4441-};
4442-scheduler.setCurrentView = function(date, mode) {
4443- if (!this.callEvent("onBeforeViewChange", [this._mode, this._date, mode, date])) return;
4444- this.updateView(date, mode);
4445- this.callEvent("onViewChange", [this._mode, this._date]);
4446-};
4447-scheduler._render_x_header = function(i,left,d,h){
4448- //header scale
4449- var head=document.createElement("DIV"); head.className="dhx_scale_bar";
4450- this.set_xy(head,this._cols[i]-1,this.xy.scale_height-2,left,0);//-1 for border
4451- head.innerHTML=this.templates[this._mode+"_scale_date"](d,this._mode); //TODO - move in separate method
4452- h.appendChild(head);
4453-};
4454-scheduler._reset_scale=function(){
4455- //current mode doesn't support scales
4456- //we mustn't call reset_scale for such modes, so it just to be sure
4457- if (!this.templates[this._mode + "_date"]) return;
4458-
4459- var h = this._els["dhx_cal_header"][0];
4460- var b = this._els["dhx_cal_data"][0];
4461- var c = this.config;
4462-
4463- h.innerHTML = "";
4464- b.scrollTop = 0; //fix flickering in FF
4465- b.innerHTML = "";
4466-
4467- var str = ((c.readonly || (!c.drag_resize)) ? " dhx_resize_denied" : "") + ((c.readonly || (!c.drag_move)) ? " dhx_move_denied" : "");
4468- if (str) b.className = "dhx_cal_data" + str;
4469-
4470- this._scales = {};
4471- this._cols = []; //store for data section
4472- this._colsS = {height: 0};
4473- this._dy_shift = 0;
4474-
4475- this.set_sizes();
4476- var summ=parseInt(h.style.width,10); //border delta
4477- var left=0;
4478-
4479- var d,dd,sd,today;
4480- dd=this.date[this._mode+"_start"](new Date(this._date.valueOf()));
4481- d=sd=this._table_view?scheduler.date.week_start(dd):dd;
4482- today=this.date.date_part(new Date());
4483-
4484- //reset date in header
4485- var ed=scheduler.date.add(dd,1,this._mode);
4486- var count = 7;
4487-
4488- if (!this._table_view){
4489- var count_n = this.date["get_"+this._mode+"_end"];
4490- if (count_n) ed = count_n(dd);
4491- count = Math.round((ed.valueOf()-dd.valueOf())/(1000*60*60*24));
4492- }
4493-
4494- this._min_date=d;
4495- this._els["dhx_cal_date"][0].innerHTML=this.templates[this._mode+"_date"](dd,ed,this._mode);
4496-
4497- for (var i=0; i<count; i++){
4498- this._cols[i]=Math.floor(summ/(count-i));
4499-
4500- this._render_x_header(i,left,d,h);
4501- if (!this._table_view){
4502- var scales=document.createElement("DIV");
4503- var cls = "dhx_scale_holder";
4504- if (d.valueOf()==today.valueOf()) cls = "dhx_scale_holder_now";
4505- scales.className=cls+" "+this.templates.week_date_class(d,today);
4506- this.set_xy(scales,this._cols[i]-1,c.hour_size_px*(c.last_hour-c.first_hour),left+this.xy.scale_width+1,0);//-1 for border
4507- b.appendChild(scales);
4508- this.callEvent("onScaleAdd",[scales, d]);
4509- }
4510-
4511- d=this.date.add(d,1,"day");
4512- summ-=this._cols[i];
4513- left+=this._cols[i];
4514- this._colsS[i]=(this._cols[i-1]||0)+(this._colsS[i-1]||(this._table_view?0:this.xy.scale_width+2));
4515- this._colsS['col_length'] = count+1;
4516- }
4517- this._max_date=d;
4518- this._colsS[count]=this._cols[count-1]+this._colsS[count-1];
4519-
4520- if (this._table_view) // month view
4521- this._reset_month_scale(b,dd,sd);
4522- else{
4523- this._reset_hours_scale(b,dd,sd);
4524- if (c.multi_day) {
4525- var dhx_multi_day = 'dhx_multi_day';
4526-
4527- if(this._els[dhx_multi_day]) {
4528- this._els[dhx_multi_day][0].parentNode.removeChild(this._els[dhx_multi_day][0]);
4529- this._els[dhx_multi_day] = null;
4530- }
4531-
4532- var navline = this._els["dhx_cal_navline"][0];
4533- var top = navline.offsetHeight + this._els["dhx_cal_header"][0].offsetHeight+1;
4534-
4535- var c1 = document.createElement("DIV");
4536- c1.className = dhx_multi_day;
4537- c1.style.visibility="hidden";
4538- this.set_xy(c1, this._colsS[this._colsS.col_length-1]+this.xy.scroll_width, 0, 0, top); // 2 extra borders, dhx_header has -1 bottom margin
4539- b.parentNode.insertBefore(c1,b);
4540-
4541- var c2 = c1.cloneNode(true);
4542- c2.className = dhx_multi_day+"_icon";
4543- c2.style.visibility="hidden";
4544- this.set_xy(c2, this.xy.scale_width, 0, 0, top); // dhx_header has -1 bottom margin
4545-
4546- c1.appendChild(c2);
4547- this._els[dhx_multi_day]=[c1,c2];
4548- this._els[dhx_multi_day][0].onclick = this._click.dhx_cal_data;
4549- }
4550- }
4551-};
4552-scheduler._reset_hours_scale=function(b,dd,sd){
4553- var c=document.createElement("DIV");
4554- c.className="dhx_scale_holder";
4555-
4556- var date = new Date(1980,1,1,this.config.first_hour,0,0);
4557- for (var i=this.config.first_hour*1; i < this.config.last_hour; i++) {
4558- var cc=document.createElement("DIV");
4559- cc.className="dhx_scale_hour";
4560- cc.style.height=this.config.hour_size_px-(this._quirks?0:1)+"px";
4561- cc.style.width=this.xy.scale_width+"px";
4562- cc.innerHTML=scheduler.templates.hour_scale(date);
4563-
4564- c.appendChild(cc);
4565- date=this.date.add(date,1,"hour");
4566- }
4567- b.appendChild(c);
4568- if (this.config.scroll_hour)
4569- b.scrollTop = this.config.hour_size_px*(this.config.scroll_hour-this.config.first_hour);
4570-};
4571-scheduler._reset_month_scale=function(b,dd,sd){
4572- var ed=scheduler.date.add(dd,1,"month");
4573-
4574- //trim time part for comparation reasons
4575- var cd=new Date();
4576- this.date.date_part(cd);
4577- this.date.date_part(sd);
4578-
4579- var rows=Math.ceil(Math.round((ed.valueOf()-sd.valueOf()) / (60*60*24*1000) ) / 7);
4580- var tdcss=[];
4581- var height=(Math.floor(b.clientHeight/rows)-22);
4582-
4583- this._colsS.height=height+22;
4584- var h = this._colsS.heights = [];
4585- for (var i=0; i<=7; i++)
4586- tdcss[i]=" style='height:"+height+"px; width:"+((this._cols[i]||0)-1)+"px;' ";
4587-
4588-
4589-
4590- var cellheight = 0;
4591- this._min_date=sd;
4592- var html="<table cellpadding='0' cellspacing='0'>";
4593- var rendered_dates = [];
4594- for (var i=0; i<rows; i++){
4595- html+="<tr>";
4596- for (var j=0; j<7; j++){
4597- html+="<td";
4598- var cls = "";
4599- if (sd<dd)
4600- cls='dhx_before';
4601- else if (sd>=ed)
4602- cls='dhx_after';
4603- else if (sd.valueOf()==cd.valueOf())
4604- cls='dhx_now';
4605- html+=" class='"+cls+" "+this.templates.month_date_class(sd,cd)+"' ";
4606- html+="><div class='dhx_month_head'>"+this.templates.month_day(sd)+"</div><div class='dhx_month_body' "+tdcss[j]+"></div></td>";
4607- rendered_dates.push(sd);
4608- sd=this.date.add(sd,1,"day");
4609- }
4610- html+="</tr>";
4611- h[i] = cellheight;
4612- cellheight+=this._colsS.height;
4613- }
4614- html+="</table>";
4615- this._max_date=sd;
4616-
4617- b.innerHTML=html;
4618-
4619- this._scales = {};
4620- var divs = b.getElementsByTagName('div');
4621- for (var i=0; i<rendered_dates.length; i++) { // [header, body, header, body, ...]
4622- var div = divs[(i*2)+1];
4623- var date = rendered_dates[i];
4624- this._scales[+date] = div;
4625- }
4626- for (var i=0; i<rendered_dates.length; i++) {
4627- var date = rendered_dates[i];
4628- this.callEvent("onScaleAdd", [this._scales[+date], date]);
4629- }
4630-
4631- return sd;
4632-};
4633-scheduler.getLabel = function(property, key) {
4634- var sections = this.config.lightbox.sections;
4635- for (var i=0; i<sections.length; i++) {
4636- if(sections[i].map_to == property) {
4637- var options = sections[i].options;
4638- for (var j=0; j<options.length; j++) {
4639- if(options[j].key == key) {
4640- return options[j].label;
4641- }
4642- }
4643- }
4644- }
4645- return "";
4646-};
4647-scheduler.updateCollection = function(list_name, collection) {
4648- var list = scheduler.serverList(list_name);
4649- if (!list) return false;
4650- list.splice(0, list.length);
4651- list.push.apply(list, collection || []);
4652- scheduler.callEvent("onOptionsLoad", []);
4653- scheduler.resetLightbox();
4654- return true;
4655-};
4656-scheduler._lame_clone = function(object, cache) {
4657- var i, t, result; // iterator, types array, result
4658-
4659- cache = cache || [];
4660-
4661- for (i=0; i<cache.length; i+=2)
4662- if(object === cache[i])
4663- return cache[i+1];
4664-
4665- if (object && typeof object == "object") {
4666- result = {};
4667- t = [Array,Date,Number,String,Boolean];
4668- for (i=0; i<t.length; i++) {
4669- if (object instanceof t[i])
4670- result = i ? new t[i](object) : new t[i](); // first one is array
4671- }
4672- cache.push(object, result);
4673- for (i in object) {
4674- if (Object.prototype.hasOwnProperty.apply(object, [i]))
4675- result[i] = scheduler._lame_clone(object[i], cache)
4676- }
4677- }
4678- return result || object;
4679-};
4680-scheduler._lame_copy = function(target, source) {
4681- for (var key in source) {
4682- if (source.hasOwnProperty(key)) {
4683- target[key] = source[key];
4684- }
4685- }
4686- return target;
4687-};
4688-scheduler._get_date_from_pos = function(pos) {
4689- var start=this._min_date.valueOf()+(pos.y*this.config.time_step+(this._table_view?0:pos.x)*24*60)*60000;
4690- return new Date(this._correct_shift(start));
4691-};
4692-// n_ev - native event
4693-scheduler.getActionData = function(n_ev) {
4694- var pos = this._mouse_coords(n_ev);
4695- return {
4696- date:this._get_date_from_pos(pos),
4697- section:pos.section
4698- };
4699-};
4700-
4701-scheduler.date={
4702- init:function(){
4703- var s = scheduler.locale.date.month_short;
4704- var t = scheduler.locale.date.month_short_hash = {};
4705- for (var i = 0; i < s.length; i++)
4706- t[s[i]]=i;
4707-
4708- var s = scheduler.locale.date.month_full;
4709- var t = scheduler.locale.date.month_full_hash = {};
4710- for (var i = 0; i < s.length; i++)
4711- t[s[i]]=i;
4712- },
4713- date_part:function(date){
4714- date.setHours(0);
4715- date.setMinutes(0);
4716- date.setSeconds(0);
4717- date.setMilliseconds(0);
4718- if (date.getHours() != 0)
4719- date.setTime(date.getTime() + 60 * 60 * 1000 * (24 - date.getHours()));
4720- return date;
4721- },
4722- time_part:function(date){
4723- return (date.valueOf()/1000 - date.getTimezoneOffset()*60)%86400;
4724- },
4725- week_start:function(date){
4726- var shift=date.getDay();
4727- if (scheduler.config.start_on_monday){
4728- if (shift===0) shift=6;
4729- else shift--;
4730- }
4731- return this.date_part(this.add(date,-1*shift,"day"));
4732- },
4733- month_start:function(date){
4734- date.setDate(1);
4735- return this.date_part(date);
4736- },
4737- year_start:function(date){
4738- date.setMonth(0);
4739- return this.month_start(date);
4740- },
4741- day_start:function(date){
4742- return this.date_part(date);
4743- },
4744- add:function(date,inc,mode){
4745- var ndate=new Date(date.valueOf());
4746- switch(mode){
4747- case "week":
4748- inc *= 7;
4749- case "day":
4750- ndate.setDate(ndate.getDate() + inc);
4751- if (!date.getHours() && ndate.getHours()) //shift to yesterday
4752- ndate.setTime(ndate.getTime() + 60 * 60 * 1000 * (24 - ndate.getHours()));
4753- break;
4754- case "month":
4755- var new_month = ndate.getMonth()+inc;
4756- var t_ndate = new Date(ndate);
4757- ndate.setMonth(new_month);
4758- if (ndate.getMonth() != new_month && ndate.getMonth() != (new_month % 12)) { // 31 March +1 Month = 1 May, need to make 30 April
4759- t_ndate.setDate(1);
4760- t_ndate.setMonth(new_month);
4761- t_ndate.setDate(new Date(t_ndate.getFullYear(),new_month+1,0).getDate());
4762- ndate = t_ndate;
4763- }
4764- break;
4765- case "year": ndate.setYear(ndate.getFullYear()+inc); break;
4766- case "hour": ndate.setHours(ndate.getHours()+inc); break;
4767- case "minute": ndate.setMinutes(ndate.getMinutes()+inc); break;
4768- default:
4769- return scheduler.date["add_"+mode](date,inc,mode);
4770- }
4771- return ndate;
4772- },
4773- to_fixed:function(num){
4774- if (num<10) return "0"+num;
4775- return num;
4776- },
4777- copy:function(date){
4778- return new Date(date.valueOf());
4779- },
4780- date_to_str:function(format,utc){
4781- format=format.replace(/%[a-zA-Z]/g,function(a){
4782- switch(a){
4783- case "%d": return "\"+scheduler.date.to_fixed(date.getDate())+\"";
4784- case "%m": return "\"+scheduler.date.to_fixed((date.getMonth()+1))+\"";
4785- case "%j": return "\"+date.getDate()+\"";
4786- case "%n": return "\"+(date.getMonth()+1)+\"";
4787- case "%y": return "\"+scheduler.date.to_fixed(date.getFullYear()%100)+\"";
4788- case "%Y": return "\"+date.getFullYear()+\"";
4789- case "%D": return "\"+scheduler.locale.date.day_short[date.getDay()]+\"";
4790- case "%l": return "\"+scheduler.locale.date.day_full[date.getDay()]+\"";
4791- case "%M": return "\"+scheduler.locale.date.month_short[date.getMonth()]+\"";
4792- case "%F": return "\"+scheduler.locale.date.month_full[date.getMonth()]+\"";
4793- case "%h": return "\"+scheduler.date.to_fixed((date.getHours()+11)%12+1)+\"";
4794- case "%g": return "\"+((date.getHours()+11)%12+1)+\"";
4795- case "%G": return "\"+date.getHours()+\"";
4796- case "%H": return "\"+scheduler.date.to_fixed(date.getHours())+\"";
4797- case "%i": return "\"+scheduler.date.to_fixed(date.getMinutes())+\"";
4798- case "%a": return "\"+(date.getHours()>11?\"pm\":\"am\")+\"";
4799- case "%A": return "\"+(date.getHours()>11?\"PM\":\"AM\")+\"";
4800- case "%s": return "\"+scheduler.date.to_fixed(date.getSeconds())+\"";
4801- case "%W": return "\"+scheduler.date.to_fixed(scheduler.date.getISOWeek(date))+\"";
4802- default: return a;
4803- }
4804- });
4805- if (utc) format=format.replace(/date\.get/g,"date.getUTC");
4806- return new Function("date","return \""+format+"\";");
4807- },
4808- str_to_date:function(format,utc){
4809- var splt="var temp=date.match(/[a-zA-Z]+|[0-9]+/g);";
4810- var mask=format.match(/%[a-zA-Z]/g);
4811- for (var i=0; i<mask.length; i++){
4812- switch(mask[i]){
4813- case "%j":
4814- case "%d": splt+="set[2]=temp["+i+"]||1;";
4815- break;
4816- case "%n":
4817- case "%m": splt+="set[1]=(temp["+i+"]||1)-1;";
4818- break;
4819- case "%y": splt+="set[0]=temp["+i+"]*1+(temp["+i+"]>50?1900:2000);";
4820- break;
4821- case "%g":
4822- case "%G":
4823- case "%h":
4824- case "%H":
4825- splt+="set[3]=temp["+i+"]||0;";
4826- break;
4827- case "%i":
4828- splt+="set[4]=temp["+i+"]||0;";
4829- break;
4830- case "%Y": splt+="set[0]=temp["+i+"]||0;";
4831- break;
4832- case "%a":
4833- case "%A": splt+="set[3]=set[3]%12+((temp["+i+"]||'').toLowerCase()=='am'?0:12);";
4834- break;
4835- case "%s": splt+="set[5]=temp["+i+"]||0;";
4836- break;
4837- case "%M": splt+="set[1]=scheduler.locale.date.month_short_hash[temp["+i+"]]||0;";
4838- break;
4839- case "%F": splt+="set[1]=scheduler.locale.date.month_full_hash[temp["+i+"]]||0;";
4840- break;
4841- default:
4842- break;
4843- }
4844- }
4845- var code ="set[0],set[1],set[2],set[3],set[4],set[5]";
4846- if (utc) code =" Date.UTC("+code+")";
4847- return new Function("date","var set=[0,0,1,0,0,0]; "+splt+" return new Date("+code+");");
4848- },
4849- getISOWeek: function(ndate) {
4850- if(!ndate) return false;
4851- var nday = ndate.getDay();
4852- if (nday === 0) {
4853- nday = 7;
4854- }
4855- var first_thursday = new Date(ndate.valueOf());
4856- first_thursday.setDate(ndate.getDate() + (4 - nday));
4857- var year_number = first_thursday.getFullYear(); // year of the first Thursday
4858- var ordinal_date = Math.round( (first_thursday.getTime() - new Date(year_number, 0, 1).getTime()) / 86400000); //ordinal date of the first Thursday - 1 (so not really ordinal date)
4859- var week_number = 1 + Math.floor( ordinal_date / 7);
4860- return week_number;
4861- },
4862- getUTCISOWeek: function(ndate){
4863- return this.getISOWeek(ndate);
4864- },
4865- convert_to_utc: function(date) {
4866- return new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());
4867- }
4868-};
4869-scheduler.locale = {
4870- date:{
4871- month_full:["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
4872- month_short:["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
4873- day_full:["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
4874- day_short:["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]
4875- },
4876- labels:{
4877- dhx_cal_today_button:"Today",
4878- day_tab:"Day",
4879- week_tab:"Week",
4880- month_tab:"Month",
4881- new_event:"New event",
4882- icon_save:"Save",
4883- icon_cancel:"Cancel",
4884- icon_details:"Details",
4885- icon_edit:"Edit",
4886- icon_delete:"Delete",
4887- confirm_closing:"",//Your changes will be lost, are your sure ?
4888- confirm_deleting:"Event will be deleted permanently, are you sure?",
4889- section_description:"Description",
4890- section_time:"Time period",
4891- full_day:"Full day",
4892-
4893- /*recurring events*/
4894- confirm_recurring:"Do you want to edit the whole set of repeated events?",
4895- section_recurring:"Repeat event",
4896- button_recurring:"Disabled",
4897- button_recurring_open:"Enabled",
4898- button_edit_series: "Edit series",
4899- button_edit_occurrence: "Edit occurrence",
4900-
4901- /*agenda view extension*/
4902- agenda_tab:"Agenda",
4903- date:"Date",
4904- description:"Description",
4905-
4906- /*year view extension*/
4907- year_tab:"Year",
4908-
4909- /* week agenda extension */
4910- week_agenda_tab: "Agenda",
4911-
4912- /*grid view extension*/
4913- grid_tab: "Grid"
4914- }
4915-};
4916-
4917-
4918-/*
4919-%e Day of the month without leading zeros (01..31)
4920-%d Day of the month, 2 digits with leading zeros (01..31)
4921-%j Day of the year, 3 digits with leading zeros (001..366)
4922-%a A textual representation of a day, two letters
4923-%W A full textual representation of the day of the week
4924-
4925-%c Numeric representation of a month, without leading zeros (0..12)
4926-%m Numeric representation of a month, with leading zeros (00..12)
4927-%b A short textual representation of a month, three letters (Jan..Dec)
4928-%M A full textual representation of a month, such as January or March (January..December)
4929-
4930-%y A two digit representation of a year (93..03)
4931-%Y A full numeric representation of a year, 4 digits (1993..03)
4932-*/
4933-
4934-scheduler.config={
4935- default_date: "%j %M %Y",
4936- month_date: "%F %Y",
4937- load_date: "%Y-%m-%d",
4938- week_date: "%l",
4939- day_date: "%D, %F %j",
4940- hour_date: "%H:%i",
4941- month_day: "%d",
4942- xml_date: "%m/%d/%Y %H:%i",
4943- api_date: "%d-%m-%Y %H:%i",
4944-
4945- hour_size_px: 42,
4946- time_step: 5,
4947-
4948- start_on_monday: 1,
4949- first_hour: 0,
4950- last_hour: 24,
4951- readonly: false,
4952- drag_resize: 1,
4953- drag_move: 1,
4954- drag_create: 1,
4955- dblclick_create: 1,
4956- edit_on_create: 1,
4957- details_on_create: 0,
4958- click_form_details: 0,
4959- cascade_event_display: false,
4960- cascade_event_count: 4,
4961- cascade_event_margin: 30,
4962- drag_lightbox: true,
4963- preserve_scroll: true,
4964- select: true,
4965-
4966- server_utc: false,
4967-
4968- positive_closing: false,
4969-
4970- icons_edit: ["icon_save", "icon_cancel"],
4971- icons_select: ["icon_details", "icon_edit", "icon_delete"],
4972- buttons_left: ["dhx_save_btn", "dhx_cancel_btn"],
4973- buttons_right: ["dhx_delete_btn"],
4974- lightbox: {
4975- sections: [
4976- {name: "description", height: 200, map_to: "text", type: "textarea", focus: true},
4977- {name: "time", height: 72, type: "time", map_to: "auto"}
4978- ]
4979- },
4980- highlight_displayed_event: true,
4981- displayed_event_color: "#ffc5ab",
4982- displayed_event_text_color: "#7e2727"
4983-};
4984-scheduler.templates={};
4985-scheduler.init_templates=function(){
4986- var labels = scheduler.locale.labels;
4987- labels.dhx_save_btn = labels.icon_save;
4988- labels.dhx_cancel_btn = labels.icon_cancel;
4989- labels.dhx_delete_btn = labels.icon_delete;
4990-
4991-
4992- var d=scheduler.date.date_to_str;
4993- var c=scheduler.config;
4994- var f = function(a,b){
4995- for (var c in b)
4996- if (!a[c]) a[c]=b[c];
4997- };
4998- f(scheduler.templates,{
4999- day_date:d(c.default_date),
5000- month_date:d(c.month_date),
The diff has been truncated for viewing.