]> git.immae.eu Git - perso/Immae/Config/Nix/NUR.git/blob - pkgs/webapps/infcloud/infcloud_config.js
Initial commit published for NUR
[perso/Immae/Config/Nix/NUR.git] / pkgs / webapps / infcloud / infcloud_config.js
1 /*
2 InfCloud - the open source CalDAV/CardDAV Web Client
3 Copyright (C) 2011-2015
4 Jan Mate <jan.mate@inf-it.com>
5 Andrej Lezo <andrej.lezo@inf-it.com>
6 Matej Mihalik <matej.mihalik@inf-it.com>
7
8 This program is free software: you can redistribute it and/or modify
9 it under the terms of the GNU Affero General Public License as
10 published by the Free Software Foundation, either version 3 of the
11 License, or (at your option) any later version.
12
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU Affero General Public License for more details.
17
18 You should have received a copy of the GNU Affero General Public License
19 along with this program. If not, see <http://www.gnu.org/licenses/>.
20 */
21
22
23 // NOTE: see readme.txt before you start to configure this client!
24
25
26 // NOTE: do not forget to execute the cache_update.sh script every time you
27 // update this configuration file or any other files (otherwise your browser
28 // will use the previous version of files stored in HTML5 cache). Alternatively
29 // you can update the cache.manifest manually - edit the second line beginning
30 // with "#V 20" to anything else (this file simple needs "some" change)
31
32
33 // Supported setup types (use ONE of them):
34 // a.) globalAccountSettings => username and password is hardcoded
35 // in config.js, automatic login without the login screen
36 // - advantages: fast login process = no username/password is required
37 // - disadvantages: username/password is visible in your config.js, so
38 // this type of setup is recommended ONLY for intranet/home users
39 // b.) globalNetworkCheckSettings => standard setup with login screen
40 // - advantages: username/password is required (no visible
41 // username/password in config.js)
42 // - disadvantages: if a user enters wrong username/password then
43 // the browser will show authentication popup window (it is NOT
44 // possible to disable it in JavaScript; see the next option)
45 // c.) globalNetworkAccountSettings => advanced setup with login screen
46 // - advantages: no authentication popup if you enter wrong username/
47 // password, dynamic XML configuration generator (you can generate
48 // different configurations for your users /by modifying the "auth"
49 // module configuration or the PHP code itself/)
50 // - disadvantages: requires PHP >= 5.3 and additional configuration,
51 // only basic http authentication is supported => always use https!
52 //
53 //
54 // What is a "principal URL"? => Check you server documentation!
55 // - "principal URL" is NOT "collection URL"
56 // - this client automatically detects collections for "principal URL"
57 // - PROPER "principal URL" looks like:
58 // https://server.com:8443/principals/users/USER/
59 // https://server.com:8443/caldav.php/USER/
60 // - INVALID principal URL looks like:
61 // https://server.com:8443/principals/users/USER/collection/
62 // => this is a collection URL
63 // https://server.com:8443/caldav.php/USER/collection/
64 // => this is a collection URL
65 // https://server.com:8443/principals/users/USER
66 // => missing trailing '/'
67 // https://server.com:8443/caldav.php/USER
68 // => missing trailing '/'
69 // /caldav.php/USER/
70 // => relative URL instead of full URL
71 //
72 //
73 // List of properties used in globalAccountSettings, globalNetworkCheckSettings
74 // and globalNetworkAccountSettings variables (+ in the "auth" module):
75 // - href
76 // Depending on the setup type set the value to:
77 // a.) globalAccountSettings: full "principal URL"
78 // b.) globalNetworkCheckSettings: "principal URL" WITHOUT the "USER/" part
79 // c.) globalNetworkAccountSettings: "full URL" to the "auth" directory
80 // This property is supported in:
81 // globalAccountSettings
82 // globalNetworkCheckSettings
83 // globalNetworkAccountSettings
84 // - userAuth
85 // - userName
86 // Set the username you want to login.
87 // - userPassword
88 // Set the password for the given username.
89 // This property is supported in:
90 // globalAccountSettings
91 // - timeOut
92 // This option sets the timeout for jQuery .ajax call (in miliseconds).
93 // Example:
94 // timeOut: 90000
95 // This property is supported in:
96 // globalAccountSettings
97 // globalNetworkCheckSettings
98 // globalNetworkAccountSettings
99 // - lockTimeOut
100 // NOTE: used only if server supports LOCK requests
101 // This option sets the LOCK timeout value if resource locking
102 // is used (in miliseconds).
103 // Example:
104 // lockTimeOut: 10000
105 // This property is supported in:
106 // globalAccountSettings
107 // globalNetworkCheckSettings
108 // globalNetworkAccountSettings (available in auth module only)
109 // - checkContentType
110 // This option enables a content-type checking for server response.
111 // If enabled then only objects with proper content-type are inserted
112 // into the interface.
113 // If you cannot see data in the interface you may try to disable it (useful
114 // if your server returns wrong value in "propstat/prop/getcontenttype").
115 // If undefined then content-type checking is enabled.
116 // Examples:
117 // checkContentType: true
118 // checkContentType: false
119 // This property is supported in:
120 // globalAccountSettings
121 // globalNetworkCheckSettings
122 // globalNetworkAccountSettings (available in auth module only)
123 // - settingsAccount
124 // NOTE: server support for custom DAV properties is REQUIRED!
125 // This option sets the account where the client properties such as:
126 // loaded collections, enabled collections, ... are saved during
127 // the logout and resource/collection synchronisation
128 // NOTE: set it to true ONLY for ONE account!
129 // Examples:
130 // settingsAccount: true
131 // settingsAccount: false
132 // This property is supported in:
133 // globalAccountSettings
134 // globalNetworkCheckSettings
135 // globalNetworkAccountSettings (available in auth module only)
136 // - delegation
137 // NOTE: server support for this functionality is REQUIRED!
138 // This option allows you to load delegated (shared) collections.
139 // If set to true (default) then delegation functionality is enabled,
140 // and the interface allows you to load delegated collections.
141 // If false then delegation functionality is completely disabled.
142 // Examples:
143 // delegation: true
144 // delegation: false
145 // This property is supported in:
146 // globalAccountSettings
147 // globalNetworkCheckSettings
148 // globalNetworkAccountSettings (available in auth module only)
149 // - additionalResources
150 // This options sets the list of additional resources (e.g. shared resources
151 // accessible by all users). If the server supports delegation (see
152 // the delegation option above) there is no reason to use this option!
153 // Supported values:
154 // - array of URL encoded resource names (not collections), such as:
155 // 'company'
156 // 'shared_resource'
157 // If empty (default) or undefined then shared resources are not loaded
158 // using this option, but may be loaded using the delegation option.
159 // Examples:
160 // additionalResources=[]
161 // additionalResources=['public', 'shared_resource']
162 // This property is supported in:
163 // globalNetworkCheckSettings
164 // - hrefLabel
165 // This option sets the server name in the resource header (useful if
166 // you want to see custom resource header above the collections).
167 // You can use the following variables in the value:
168 // %H = full hostname (including the port number)
169 // %h = full hostname (without the port number)
170 // %D = full domain name
171 // %d = only the first and second level domain
172 // %P = principal name
173 // %p = principal name without the @domain.com part (if present)
174 // %U = logged user name
175 // %u = logged user name without the @domain.com part (if present)
176 // If undefined, empty or or null then '%d/%p [%u]' is used.
177 // Examples:
178 // hrefLabel: '%d/%p [%u]'
179 // hrefLabel: '%D/%u'
180 // This property is supported in:
181 // globalAccountSettings
182 // globalNetworkCheckSettings
183 // globalNetworkAccountSettings (available in auth module only)
184 // - forceReadOnly
185 // This option sets the list of collections as "read-only".
186 // Supported values:
187 // - true
188 // all collections will be "read-only"
189 // - array of URL encoded
190 // - collections, such as:
191 // '/caldav.php/user/calendar/'
192 // '/caldav.php/user%40domain.com/calendar/'
193 // - regexes, such as:
194 // new RegExp('^/caldav.php/user/calendar[0-9]/$', 'i')
195 // specifies the list of collections marked as "read-only"
196 // If null (default) or undefined then server detected privileges are used.
197 // Examples:
198 // forceReadOnly: null
199 // forceReadOnly: true
200 // forceReadOnly: ['/caldav.php/user/calendar/',
201 // '/caldav.php/user/calendar2/']
202 // forceReadOnly: [new RegExp('^/.*/user/calendar[0-9]/$', 'i')]
203 // This property is supported in:
204 // globalAccountSettings
205 // globalNetworkCheckSettings
206 // globalNetworkAccountSettings (available in auth module only, with
207 // different syntax for regexes)
208 // - ignoreAlarms
209 // This option sets list of calendar collections with disabled
210 // alarm functionality.
211 // Supported values:
212 // - true
213 // alarm functionality is disabled for all collections
214 // - array of URL encoded
215 // - collections, such as:
216 // '/caldav.php/user/calendar/'
217 // '/caldav.php/user%40domain.com/calendar/'
218 // - regexes, such as:
219 // new RegExp('^/caldav.php/user/calendar[0-9]/$', 'i')
220 // specifies the list of collections with disabled alarm functionality.
221 // If false (default) or undefined then alarm functionality is enabled
222 // for all collections.
223 // Examples:
224 // ignoreAlarms: true
225 // ignoreAlarms: ['/caldav.php/user/calendar/',
226 // '/caldav.php/user/calendar2/']
227 // ignoreAlarms: [new RegExp('^/.*/user/calendar[0-9]/$', 'i')]
228 // This property is supported in:
229 // globalAccountSettings
230 // globalNetworkCheckSettings
231 // globalNetworkAccountSettings (available in auth module only, with
232 // different syntax for regexes)
233 // - backgroundCalendars
234 // This options defines a list of background calendars. If there is
235 // at least one event defined for the given day in a background calendar,
236 // the background color for that day will be pink/light-red.
237 // Supported values:
238 // - array of URL encoded
239 // - collections, such as:
240 // '/caldav.php/user/calendar/'
241 // '/caldav.php/user%40domain.com/calendar/'
242 // - regexes, such as:
243 // new RegExp('^/caldav.php/user/calendar[0-9]/$', 'i')
244 // specifies the list of background calendar collections.
245 // Examples:
246 // backgroundCalendars: ['/caldav.php/user/calendar/',
247 // '/caldav.php/user/calendar2/']
248 // backgroundCalendars: [new RegExp('^/.*/user/calendar[0-9]/$', 'i')]
249 // This property is supported in:
250 // globalAccountSettings
251 // globalNetworkCheckSettings
252 // globalNetworkAccountSettings (available in auth module only, with
253 // different syntax for regexes)
254 // Special options not present in configuration examples:
255 // NOTE: use ONLY if you know what are you doing!
256 // - crossDomain
257 // This option sets the crossDomain for jQuery .ajax call. If null (default)
258 // then the value is autodetected /and the result is shown in the console/
259 // - withCredentials
260 // This option sets the withCredentials for jQuery .ajax call. The default
261 // value is false and there is NO REASON to change it to true!
262 // NOTE: if true, Access-Control-Allow-Origin "*" (CORS header) not works!
263
264
265 // globalAccountSettings
266 // Use this option if you want to use automatic login (without a login
267 // screen) with hardcoded username/password in config.js. Otherwise use
268 // globalNetworkCheckSettings or globalNetworkAccountSettings (see below).
269 // NOTE: if this option is used the value must be an array of object(s).
270 // List of properties used in globalAccountSettings variable:
271 // - href
272 // Set this option to the full "principal URL".
273 // NOTE: the last character in the value must be '/'
274 // - userAuth
275 // - userName
276 // Set the username you want to login.
277 // - userPassword
278 // Set the password for the given username.
279 // NOTE: for description of other properties see comments at the beginning
280 // of this file.
281 // NOTE: for minimal/fast setup you need to set only the href and userAuth
282 // options. It is safe/recommended to keep the remaining options unchanged!
283 // Example:
284 //var globalAccountSettings=[
285 // {
286 // href: 'https://server1.com:8443/caldav.php/USERNAME1/',
287 // userAuth:
288 // {
289 // userName: 'USERNAME1',
290 // userPassword: 'PASSWORD1'
291 // },
292 // timeOut: 90000,
293 // lockTimeOut: 10000,
294 // checkContentType: true,
295 // settingsAccount: true,
296 // delegation: true,
297 // hrefLabel: null,
298 // forceReadOnly: null,
299 // ignoreAlarms: false,
300 // backgroundCalendars: []
301 // },
302 // {
303 // href: 'https://server2.com:8443/caldav.php/USERNAME2/',
304 // ...
305 // ...
306 // }
307 //];
308
309
310 // globalNetworkCheckSettings
311 // Use this option if you want to use standard login screen without
312 // hardcoded username/password in config.js (used by globalAccountSettings).
313 // NOTE: if this option is used the value must be an object.
314 // List of properties used in globalAccountSettings variable:
315 // - href
316 // Set this option to the "principal URL" WITHOUT the "USERNAME/"
317 // part (this options uses the username from the login screen).
318 // NOTE: the last character in the value must be '/'
319 // NOTE: for description of other properties see comments at the beginning
320 // of this file.
321 // NOTE: for minimal/fast setup you need to set only the href option. It is
322 // safe/recommended to keep the remaining options unchanged!
323 // Example href values:
324 // OS X server http example (see misc/readme_osx.txt for server setup):
325 // href: 'http://osx.server.com:8008/principals/users/'
326 // OS X server https example (see misc/readme_osx.txt for server setup):
327 // href: 'https://osx.server.com:8443/principals/users/'
328 // Cyrus server https example:
329 // href: 'https://cyrus.server.com/dav/principals/user/'
330 // Example:
331 // Davical example which automatically detects the protocol, server name,
332 // port, ... (client installed into Davical "htdocs" subdirectory;
333 // works "out of the box", no additional setup required):
334 var globalNetworkCheckSettings={
335 href: location.protocol+'//'+location.hostname+
336 (location.port ? ':'+location.port: '')+
337 location.pathname.replace(RegExp('/+[^/]+/*(index\.html)?$'),'')+
338 '/caldav.php/',
339 timeOut: 90000,
340 lockTimeOut: 10000,
341 checkContentType: true,
342 settingsAccount: true,
343 delegation: true,
344 additionalResources: [],
345 hrefLabel: null,
346 forceReadOnly: null,
347 ignoreAlarms: false,
348 backgroundCalendars: []
349 }
350
351
352 // globalNetworkAccountSettings
353 // Try this option ONLY if you have working setup using
354 // globalNetworkCheckSettings and want to fix the authentication popup
355 // window problem (if invalid username/password is entered)!
356 // If you use this option then your browser sends username/password to the PHP
357 // "auth" module ("auth" directory) instead of the DAV server itself.
358 // The "auth" module then validates your username/password against your server,
359 // and if the authentication is successful, then it sends back a configuration
360 // XML (requires additional configuration). The resulting XML is handled
361 // IDENTICALLY as the globalAccountSettings configuration option.
362 // NOTE: for the "auth" module configuration see readme.txt!
363 // NOTE: this option invokes a login screen and disallows access until
364 // the client gets correct XML configuration file from the server!
365 // List of properties used in globalNetworkAccountSettings variable:
366 // - href
367 // Set this option to the "full URL" of the "auth" directory
368 // NOTE: the last character in the value must be '/'
369 // NOTE: for description of other properties see comments at the beginning
370 // of this file.
371 // Example href values:
372 // href: 'https://server.com/client/auth/'
373 // Example:
374 // Use this configuration if the "auth" module is located in the client
375 // installation subdirectory (default):
376 //var globalNetworkAccountSettings={
377 // href: location.protocol+'//'+location.hostname+
378 // (location.port ? ':'+location.port : '')+
379 // location.pathname.replace(RegExp('index\.html$'),'')+
380 // 'auth/',
381 // timeOut: 30000
382 //};
383
384
385 // globalUseJqueryAuth
386 // Use jQuery .ajax() auth or custom header for HTTP basic auth (default).
387 // Set this option to true if your server uses digest auth (note: you may
388 // experience auth popups on some browsers).
389 // If undefined (or empty), custom header for HTTP basic auth is used.
390 // Example:
391 //var globalUseJqueryAuth=false;
392
393
394 // globalBackgroundSync
395 // Enable background synchronization even if the browser window/tab has no
396 // focus.
397 // If false, synchronization is performed only if the browser window/tab
398 // is focused. If undefined or not false, then background sync is enabled.
399 // Example:
400 var globalBackgroundSync=true;
401
402
403 // globalSyncResourcesInterval
404 // This option defines how often (in miliseconds) are resources/collections
405 // asynchronously synchronized.
406 // Example:
407 var globalSyncResourcesInterval=120000;
408
409
410 // globalEnableRefresh
411 // This option enables or disables the manual synchronization button in
412 // the interface. If this option is enabled then users can perform server
413 // synchronization manually. Enabling this option may cause high server
414 // load (even DDOS) if users will try to manually synchronize data too
415 // often (instead of waiting for the automatic synchronization).
416 // If undefined or false, the synchronization button is disabled.
417 // NOTE: enable this option only if you really know what are you doing!
418 // Example:
419 var globalEnableRefresh=false;
420
421
422 // globalEnableKbNavigation
423 // Enable basic keyboard navigation using arrow keys?
424 // If undefined or not false, keyboard navigation is enabled.
425 // Example:
426 var globalEnableKbNavigation=true;
427
428
429 // globalSettingsType
430 // Where to store user settings such as: active view, enabled/selected
431 // collections, ... (the client store them into DAV property on the server).
432 // NOTE: not all servers support storing DAV properties (some servers support
433 // only subset /or none/ of these URLs).
434 // Supported values:
435 // - 'principal-URL', '', null or undefined (default) => settings are stored
436 // to principal-URL (recommended for most servers)
437 // - 'addressbook-home-set' => settings are are stored to addressbook-home-set
438 // - 'calendar-home-set' => settings are stored to calendar-home-set
439 // Example:
440 //var globalSettingsType='';
441
442
443 // globalCrossServerSettingsURL
444 // Settings such as enabled/selected collections are stored on the server
445 // (see the previous option) in form of full URL
446 // (e.g.: https://user@server:port/principal/collection/), but even if this
447 // approach is "correct" (you can use the same principal URL with multiple
448 // different logins, ...) it causes a problem if your server is accessible
449 // from multiple URLs (e.g. http://server/ and https://server/). If you want
450 // to store only the "principal/collection/" part of the URL (instead of the
451 // full URL) then enable this option.
452 // Example:
453 //var globalCrossServerSettingsURL=false;
454
455
456 // globalInterfaceLanguage
457 // Default interface language (note: this option is case sensitive):
458 // cs_CZ (Čeština [Czech])
459 // da_DK (Dansk [Danish]; thanks Niels Bo Andersen)
460 // de_DE (Deutsch [German]; thanks Marten Gajda and Thomas Scheel)
461 // en_US (English [English/US])
462 // es_ES (Español [Spanish]; thanks Damián Vila)
463 // fr_FR (Français [French]; thanks John Fischer)
464 // it_IT (Italiano [Italian]; thanks Luca Ferrario)
465 // ja_JP (日本語 [Japan]; thanks Muimu Nakayama)
466 // hu_HU (Magyar [Hungarian])
467 // nl_NL (Nederlands [Dutch]; thanks Johan Vromans)
468 // sk_SK (Slovenčina [Slovak])
469 // tr_TR (Türkçe [Turkish]; thanks Selcuk Pultar)
470 // ru_RU (Русский [Russian]; thanks Александр Симонов)
471 // uk_UA (Українська [Ukrainian]; thanks Serge Yakimchuck)
472 // zh_CN (中国 [Chinese]; thanks Fandy)
473 // Example:
474 var globalInterfaceLanguage='fr_FR';
475
476
477 // globalInterfaceCustomLanguages
478 // If defined and not empty then only languages listed here are shown
479 // at the login screen, otherwise (default) all languages are shown
480 // NOTE: values in the array must refer to an existing localization
481 // (see the option above)
482 // Example:
483 // globalInterfaceCustomLanguages=['en_US', 'sk_SK'];
484 var globalInterfaceCustomLanguages=[];
485
486
487 // globalSortAlphabet
488 // Use JavaScript localeCompare() or custom alphabet for data sorting.
489 // Custom alphabet is used by default because JavaScript localeCompare()
490 // not supports collation and often returns "wrong" result. If set to null
491 // then localeCompare() is used.
492 // Example:
493 // var globalSortAlphabet=null;
494 var globalSortAlphabet=' 0123456789'+
495 'AÀÁÂÄÆÃÅĀBCÇĆČDĎEÈÉÊËĒĖĘĚFGĞHIÌÍÎİÏĪĮJKLŁĹĽMNŃÑŇOÒÓÔÖŐŒØÕŌ'+
496 'PQRŔŘSŚŠȘșŞşẞTŤȚțŢţUÙÚÛÜŰŮŪVWXYÝŸZŹŻŽ'+
497 'aàáâäæãåābcçćčdďeèéêëēėęěfgğhiìíîïīįıjklłĺľmnńñňoòóôöőœøõō'+
498 'pqrŕřsśšßtťuùúûüűůūvwxyýÿzźżžАБВГҐДЕЄЖЗИІЇЙКЛМНОПРСТУФХЦЧШЩЮЯ'+
499 'Ьабвгґдеєжзиіїйклмнопрстуфхцчшщюяь';
500
501
502 // globalSearchTransformAlphabet
503 // To support search without diacritics (e.g. search for 'd' will find: 'Ď', 'ď')
504 // it is required to define something like "character equivalence".
505 // key = regex text, value = search character
506 // Example:
507 var globalSearchTransformAlphabet={
508 '[ÀàÁáÂâÄäÆæÃãÅåĀā]': 'a', '[ÇçĆćČč]': 'c', '[Ďď]': 'd',
509 '[ÈèÉéÊêËëĒēĖėĘęĚě]': 'e', '[Ğğ]': 'g', '[ÌìÍíÎîİıÏïĪīĮį]': 'i',
510 '[ŁłĹ弾]': 'l', '[ŃńÑñŇň]': 'n', '[ÒòÓóÔôÖöŐőŒœØøÕõŌō]': 'o',
511 '[ŔŕŘř]': 'r', '[ŚśŠšȘșŞşẞß]': 's', '[ŤťȚțŢţ]': 't',
512 '[ÙùÚúÛûÜüŰűŮůŪū]': 'u', '[ÝýŸÿ]': 'y', '[ŹźŻżŽž]': 'z'
513 };
514
515 // globalResourceAlphabetSorting
516 // If more than one resource (server account) is configured, sort the
517 // resources alphabetically?
518 // Example:
519 var globalResourceAlphabetSorting=true;
520
521
522 // globalNewVersionNotifyUsers
523 // Update notification will be shown only to users with login names defined
524 // in this array.
525 // If undefined (or empty), update notifications will be shown to all users.
526 // Example:
527 // globalNewVersionNotifyUsers=['admin', 'peter'];
528 var globalNewVersionNotifyUsers=[];
529
530
531 // globalDatepickerFormat
532 // Set the datepicker format (see
533 // http://docs.jquery.com/UI/Datepicker/formatDate for valid values).
534 // NOTE: date format is predefined for each localization - use this option
535 // ONLY if you want to use custom date format (instead of the localization
536 // predefined one).
537 // Example:
538 //var globalDatepickerFormat='dd.mm.yy';
539 var globalDatepickerFormat='yy-mm-dd';
540
541
542 // globalDatepickerFirstDayOfWeek
543 // Set the datepicker first day of the week: Sunday is 0, Monday is 1, etc.
544 // Example:
545 var globalDatepickerFirstDayOfWeek=1;
546
547
548 // globalHideInfoMessageAfter
549 // How long are information messages (such as: success, error) displayed
550 // (in miliseconds).
551 // Example:
552 var globalHideInfoMessageAfter=1800;
553
554
555 // globalEditorFadeAnimation
556 // Set the editor fade in/out animation duration when editing or saving data
557 // (in miliseconds).
558 // Example:
559 var globalEditorFadeAnimation=666;
560
561
562
563
564 // ******* CalDAV (CalDavZAP) related settings ******* //
565
566 // globalEventStartPastLimit, globalEventStartFutureLimit, globalTodoPastLimit
567 // Number of months pre-loaded from past/future in advance for calendars
568 // and todo lists (if null then date range synchronization is disabled).
569 // NOTE: interval synchronization is used only if your server supports
570 // sync-collection REPORT (e.g. DAViCal).
571 // NOTE: if you experience problems with data loading and your server has
572 // no time-range filtering support set these variables to null.
573 // Example:
574 var globalEventStartPastLimit=3;
575 var globalEventStartFutureLimit=3;
576 var globalTodoPastLimit=1;
577
578
579 // globalLoadedCalendarCollections
580 // This option sets the list of calendar collections (down)loaded after login.
581 // If empty then all calendar collections for the currently logged user are
582 // loaded.
583 // NOTE: settings stored on the server (see settingsAccount) overwrite this
584 // option.
585 // Example:
586 var globalLoadedCalendarCollections=[];
587
588
589 // globalLoadedTodoCollections
590 // This option sets the list of todo collections (down)loaded after login.
591 // If empty then all todo collections for the currently logged user are loaded.
592 // NOTE: settings stored on the server (see settingsAccount) overwrite this
593 // option.
594 // Example:
595 var globalLoadedTodoCollections=[];
596
597
598 // globalActiveCalendarCollections
599 // This options sets the list of calendar collections checked (enabled
600 // checkbox => data visible in the interface) by default after login.
601 // If empty then all loaded calendar collections for the currently logged
602 // user are checked.
603 // NOTE: only already (down)loaded collections can be checked (see
604 // the globalLoadedCalendarCollections option).
605 // NOTE: settings stored on the server (see settingsAccount) overwrite this
606 // option.
607 // Example:
608 var globalActiveCalendarCollections=[];
609
610
611 // globalActiveTodoCollections
612 // This options sets the list of todo collections checked (enabled
613 // checkbox => data visible in the interface) by default after login.
614 // If empty then all loaded todo collections for the currently logged
615 // user are checked.
616 // NOTE: only already (down)loaded collections can be checked (see
617 // the globalLoadedTodoCollections option).
618 // NOTE: settings stored on the server (see settingsAccount) overwrite this
619 // option.
620 // Example:
621 var globalActiveTodoCollections=[];
622
623
624 // globalCalendarSelected
625 // This option sets which calendar collection will be pre-selected
626 // (if you create a new event) by default after login.
627 // The value must be URL encoded path to a calendar collection,
628 // for example: 'USER/calendar/'
629 // If empty or undefined then the first available calendar collection
630 // is selected automatically.
631 // NOTE: only already (down)loaded collections can be pre-selected (see
632 // the globalLoadedCalendarCollections option).
633 // NOTE: settings stored on the server (see settingsAccount) overwrite this
634 // option.
635 // Example:
636 //var globalCalendarSelected='';
637
638
639 // globalTodoCalendarSelected
640 // This option sets which todo collection will be pre-selected
641 // (if you create a new todo) by default after login.
642 // The value must be URL encoded path to a todo collection,
643 // for example: 'USER/todo_calendar/'
644 // If empty or undefined then the first available todo collection
645 // is selected automatically.
646 // NOTE: only already (down)loaded collections can be pre-selected (see
647 // the globalLoadedTodoCollections option).
648 // NOTE: settings stored on the server (see settingsAccount) overwrite this
649 // option.
650 // Example:
651 //var globalTodoCalendarSelected='';
652
653
654 // globalActiveView
655 // This options sets the default fullcalendar view option (the default calendar
656 // view after the first login).
657 // Supported values:
658 // - 'month'
659 // - 'multiWeek'
660 // - 'agendaWeek'
661 // - 'agendaDay'
662 // NOTE: we use custom and enhanced version of fullcalendar!
663 // Example:
664 var globalActiveView='multiWeek';
665
666
667 // globalOpenFormMode
668 // Open new event form on 'single' or 'double' click.
669 // If undefined or not 'double', then 'single' is used.
670 // Example:
671 var globalOpenFormMode='double';
672
673
674 // globalTodoListFilterSelected
675 // This options sets the list of filters in todo list that are selected
676 // after login.
677 // Supported options:
678 // - 'filterAction'
679 // - 'filterProgress' (available only if globalAppleRemindersMode is disabled)
680 // - 'filterCompleted'
681 // - 'filterCanceled' (available only if globalAppleRemindersMode is disabled)
682 // NOTE: settings stored on the server (see settingsAccount) overwrite this
683 // option.
684 // Example:
685 var globalTodoListFilterSelected=['filterAction', 'filterProgress'];
686
687
688 // globalCalendarStartOfBusiness, globalCalendarEndOfBusiness
689 // These options set the start and end of business hours with 0.5 hour
690 // precision. Non-business hours are faded out in the calendar interface.
691 // If both variables are set to the same value then no fade out occurs.
692 // Example:
693 var globalCalendarStartOfBusiness=8;
694 var globalCalendarEndOfBusiness=17;
695
696
697 // globalDefaultEventDuration
698 // This option sets the default duration (in minutes) for newly created events.
699 // If undefined or null, globalCalendarEndOfBusiness value will be taken as
700 // a default end time instead.
701 // Example:
702 var globalDefaultEventDuration=120;
703
704
705 // globalAMPMFormat
706 // This option enables to use 12 hours format (AM/PM) for displaying time.
707 // NOTE: time format is predefined for each localization - use this option
708 // ONLY if you want to use custom time format (instead of the localization
709 // predefined one).
710 // Example:
711 //var globalAMPMFormat=false;
712
713
714 // globalTimeFormatBasic
715 // This option defines the time format information for events in month and
716 // multiweek views. If undefined or null then default value is used.
717 // If defined as empty string no time information is shown in these views.
718 // See http://arshaw.com/fullcalendar/docs/utilities/formatDate/ for exact
719 // formating rules.
720 // Example:
721 //var globalTimeFormatBasic='';
722
723
724 // globalTimeFormatAgenda
725 // This option defines the time format information for events in day and
726 // week views. If undefined or null then default value is used.
727 // If defined as empty string no time information is shown in these views.
728 // See http://arshaw.com/fullcalendar/docs/utilities/formatDate/ for exact
729 // formating rules.
730 // Example:
731 //var globalTimeFormatAgenda='';
732
733
734 // globalDisplayHiddenEvents
735 // This option defined whether events from unechecked calendars are displayed
736 // with certain transparency (true) or completely hidden (false).
737 // Example:
738 var globalDisplayHiddenEvents=false;
739
740
741 // globalTimeZoneSupport
742 // This option enables timezone support in the client.
743 // NOTE: timezone cannot be specified for all-day events because these don't
744 // have start and end time.
745 // If this option is disabled then local time is used.
746 // Example:
747 var globalTimeZoneSupport=true;
748
749
750 // globalTimeZone
751 // If timezone support is enabled, this option sets the default timezone.
752 // See timezones.js or use the following command to get the list of supported
753 // timezones (defined in timezones.js):
754 // grep "'[^']\+': {" timezones.js | sed -Ee "s#(\s*'|':\s*\{)##g"
755 // Example:
756 var globalTimeZone='Europe/Paris';
757
758
759 // globalTimeZonesEnabled
760 // This option sets the list of available timezones in the interface (for the
761 // list of supported timezones see the comment for the previous configuration
762 // option).
763 // NOTE: if there is at least one event/todo with a certain timezone defined,
764 // that timezone is enabled (even if it is not present in this list).
765 // Example:
766 // var globalTimeZonesEnabled=['America/New_York', 'Europe/Berlin'];
767 var globalTimeZonesEnabled=[];
768
769
770 // globalRewriteTimezoneComponent
771 // This options sets whether the client will enhance/replace (if you edit an
772 // event or todo) the timezone information using the official IANA timezone
773 // database information (recommended).
774 // Example:
775 var globalRewriteTimezoneComponent=true;
776
777
778 // globalRemoveUnknownTimezone
779 // This options sets whether the client will remove all non-standard timezone
780 // names from events and todos (if you edit an event or todo)
781 // (e.g.: /freeassociation.sourceforge.net/Tzfile/Europe/Vienna)
782 // Example:
783 var globalRemoveUnknownTimezone=false;
784
785
786 // globalShowHiddenAlarms
787 // This option sets whether the client will show alarm notifications for
788 // unchecked calendars. If this option is enabled and you uncheck a calendar
789 // in the calendar list, alarm notifications will be temporary disabled for
790 // unchecked calendar(s).
791 // Example:
792 var globalShowHiddenAlarms=false;
793
794
795 // globalIgnoreCompletedOrCancelledAlarms
796 // This options sets whether the client will show alarm notifications for
797 // already completed or cancelled todos. If enabled then alarm notification
798 // for completed and cancelled todos are disabled.
799 // Example:
800 var globalIgnoreCompletedOrCancelledAlarms=true;
801
802
803 // globalMozillaSupport
804 // Mozilla automatically treats custom repeating event calculations as if
805 // the start day of the week is Monday, despite what day is chosen in settings.
806 // Set this variable to true to use the same approach, ensuring compatible
807 // event rendering in special cases.
808 // Example:
809 var globalMozillaSupport=false;
810
811
812 // globalCalendarColorPropertyXmlns
813 // This options sets the namespace used for storing the "calendar-color"
814 // property by the client.
815 // If true, undefined (or empty) "http://apple.com/ns/ical/" is used (Apple
816 // compatible). If false, then the calendar color modification functionality
817 // is completely disabled.
818 // Example:
819 //var globalCalendarColorPropertyXmlns=true;
820
821
822 // globalWeekendDays
823 // This option sets the list of days considered as weekend days (these
824 // are faded out in the calendar interface). Non-weekend days are automatically
825 // considered as business days.
826 // Sunday is 0, Monday is 1, etc.
827 // Example:
828 var globalWeekendDays=[0, 6];
829
830
831 // globalAppleRemindersMode
832 // If this option is enabled then then client will use the same approach
833 // for handling repeating reminders (todos) as Apple. It is STRONGLY
834 // recommended to enabled this option if you use any Apple clients for
835 // reminders (todos).
836 // Supported options:
837 // - 'iOS6'
838 // - 'iOS7'
839 // - true (support of the latest iOS version - 'iOS8')
840 // - false
841 // If this option is enabled:
842 // - RFC todo support is SEVERELY limited and the client mimics the behaviour
843 // of Apple Reminders.app (to ensure maximum compatibility)
844 // - when a single instance of repeating todo is edited, it becomes an
845 // autonomous non-repeating todo with NO relation to the original repeating
846 // todo
847 // - capabilities of repeating todos are limited - only the first instance
848 // is ever visible in the interface
849 // - support for todo DTSTART attribute is disabled
850 // - support for todo STATUS attribute other than COMPLETED and NEEDS-ACTION
851 // is disabled
852 // - [iOS6 only] support for LOCATION and URL attributes is disabled
853 // Example:
854 var globalAppleRemindersMode=true;
855
856
857 // globalSubscribedCalendars
858 // This option specifies a list of remote URLs to ics files (e.g.: used
859 // for distributing holidays information). Subscribed calendars are
860 // ALWAYS read-only. Remote servers where ics files are hosted MUST
861 // return proper CORS headers (see readme.txt) otherwise this functionality
862 // will not work!
863 // NOTE: subsribed calendars are NOT "shared" calendars. For "shared"
864 // calendars see the delegation option in globalAccountSettings,
865 // globalNetworkCheckSettings and globalNetworkAccountSettings.
866 // List of properties used in globalSubscribedCalendars variable:
867 // - hrefLabel
868 // This options defines the header string above the subcsribed calendars.
869 // - calendars
870 // This option specifies an array of remote calendar objects with the
871 // following properties:
872 // - href
873 // Set this option to the "full URL" of the remote calendar
874 // - userAuth
875 // NOTE: keep empty if remote authentication is not required!
876 // - userName
877 // Set the username you want to login.
878 // - userPassword
879 // Set the password for the given username.
880 // - typeList
881 // Set the list of objects you want to process from remote calendars;
882 // two options are available:
883 // - 'vevent' (show remote events in the interface)
884 // - 'vtodo' (show remote todos in the interface)
885 // - ignoreAlarm
886 // Set this option to true if you want to disable alarm notifications
887 // from the remote calendar.
888 // - displayName
889 // Set this option to the name of the calendar you want to see
890 // in the interface.
891 // - color
892 // Set the calendar color you want to see in the interface.
893 // Example:
894 //var globalSubscribedCalendars={
895 // hrefLabel: 'Subscribed',
896 // calendars: [
897 // {
898 // href: 'http://something.com/calendar.ics',
899 // userAuth: {
900 // userName: '',
901 // userPassword: ''
902 // },
903 // typeList: ['vevent', 'vtodo'],
904 // ignoreAlarm: true,
905 // displayName: 'Remote Calendar 1',
906 // color: '#ff0000'
907 // },
908 // {
909 // href: 'http://calendar.com/calendar2.ics',
910 // ...
911 // ...
912 // }
913 // ]
914 //};
915
916
917
918 // ******* CardDAV (CardDavMATE) related settings ******* //
919
920
921 // globalLoadedAddressbookCollections
922 // This option sets the list of addressbook collections (down)loaded after
923 // login. If empty then all addressbook collections for the currently logged
924 // user are loaded.
925 // NOTE: settings stored on the server (see settingsAccount) overwrite this
926 // option.
927 // Example:
928 var globalLoadedAddressbookCollections=[];
929
930
931 // globalActiveAddressbookCollections
932 // This options sets the list of addressbook collections checked (enabled
933 // checkbox => data visible in the interface) by default after login.
934 // If empty then all loaded addressbook collections for the currently logged
935 // user are checked.
936 // NOTE: only already (down)loaded collections can be checked (see
937 // the globalLoadedAddressbookCollections option).
938 // NOTE: settings stored on the server (see settingsAccount) overwrite this
939 // option.
940 // Example:
941 var globalActiveAddressbookCollections=[];
942
943
944 // globalAddressbookSelected
945 // This option sets which addressbook collection will be pre-selected
946 // (if you create a new contact) by default after login.
947 // The value must be URL encoded path to an addressbook collection,
948 // for example: 'USER/addressbook/'
949 // If empty or undefined then the first available addressbook collection
950 // is selected automatically.
951 // NOTE: only already (down)loaded collections can be pre-selected (see
952 // the globalLoadedAddressbookCollections option).
953 // NOTE: settings stored on the server (see settingsAccount) overwrite this
954 // option.
955 // Example:
956 //var globalAddressbookSelected='';
957
958
959 // globalCompatibility
960 // This options is reserved for various compatibility settings.
961 // NOTE: if this option is used the value must be an object.
962 // Currently there is only one supported option:
963 // - anniversaryOutputFormat
964 // Different clients use different (and incompatible) approach
965 // to store anniversary date in vCards. Apple stores this attribute as:
966 // itemX.X-ABDATE;TYPE=pref:2000-01-01\r\n
967 // itemX.X-ABLabel:_$!<Anniversary>!$_\r\n'
968 // other clients store this attribute as:
969 // X-ANNIVERSARY:2000-01-01\r\n
970 // Choose 'apple' or 'other' (lower case) for your 3rd party client
971 // compatibility. You can chose both: ['apple', 'other'], but it may
972 // cause many problems in the future, for example: duplicate anniversary
973 // dates, invalid/old anniversary date in your clients, ...)
974 // Examples:
975 // anniversaryOutputFormat: ['other']
976 // anniversaryOutputFormat: ['apple', 'other']
977 // Example:
978 var globalCompatibility={anniversaryOutputFormat: ['apple']};
979
980
981 // globalUriHandler{Tel,Email,Url,Profile}
982 // These options set the URI handlers for TEL, EMAIL, URL and X-SOCIALPROFILE
983 // vCard attributes. Set them to null (or comment out) to disable.
984 // NOTE: for globalUriHandlerTel is recommended to use 'tel:', 'callto:'
985 // or 'skype:'. The globalUriHandlerUrl value is used only if no URI handler
986 // is defined in the URL.
987 // NOTE: it is safe to keep these values unchanged!
988 // Example:
989 var globalUriHandlerTel='tel:';
990 var globalUriHandlerEmail='mailto:';
991 var globalUriHandlerUrl='http://';
992 var globalUriHandlerProfile={
993 'twitter': 'http://twitter.com/%u',
994 'facebook': 'http://www.facebook.com/%u',
995 'flickr': 'http://www.flickr.com/photos/%u',
996 'linkedin': 'http://www.linkedin.com/in/%u',
997 'myspace': 'http://www.myspace.com/%u',
998 'sinaweibo': 'http://weibo.com/n/%u'
999 };
1000
1001
1002 // globalDefaultAddressCountry
1003 // This option sets the default country for new address fields.
1004 // See common.js or use the following command to get the list of
1005 // all supported country codes (defined in common.js):
1006 // grep -E "'[a-z]{2}':\s+\[" common.js | sed -Ee 's#^\s+|\s+\[\s+# #g'
1007 // Example:
1008 var globalDefaultAddressCountry='fr';
1009
1010
1011 // globalAddressCountryEquivalence
1012 // This option sets the processing of the country field specified
1013 // in the vCard ADR attribute.
1014 // By default the address field in vCard looks like:
1015 // ADR;TYPE=WORK:;;1 Waters Edge;Baytown;LA;30314;USA\r\n
1016 // what cause a problem, because the country field is a plain
1017 // text and can contain any value, e.g.:
1018 // USA
1019 // United States of America
1020 // US
1021 // and because the address format can be completely different for
1022 // each country, e.g.:
1023 // China address example:
1024 // [China]
1025 // [Province] [City]
1026 // [Street]
1027 // [Postal]
1028 // Japan address example:
1029 // [Postal]
1030 // [Prefecture] [County/City]
1031 // [Further Divisions]
1032 // [Japan]
1033 // the client needs to correctly detect the country from the ADR
1034 // attribute. Apple solved this problem by using:
1035 // item1.ADR;TYPE=WORK:;;1 Waters Edge;Baytown;LA;30314;USA\r\n
1036 // item1.X-ABADR:us\r\n
1037 // where the second "related" attribute defines the country code
1038 // for the ADR attribute. This client uses the same approach, but
1039 // if the vCard is created by 3rd party clients and the X-ABADR
1040 // is missing, it is possible to define additional "rules" for
1041 // country matching. These rules are specied by the country code
1042 // (for full list of country codes see the comment for pre previous
1043 // option) and a case insensitive regular expression (which matches
1044 // the plain text value in the country field).
1045 // NOTE: if X-ABADR is not present and the country not matches any
1046 // country defined in this option, then globalDefaultAddressCountry
1047 // is used by default.
1048 // Example:
1049 var globalAddressCountryEquivalence=[
1050 {country: 'de', regex: '^\\W*Deutschland\\W*$'},
1051 {country: 'sk', regex: '^\\W*Slovensko\\W*$'}
1052 ];
1053
1054
1055 // globalAddressCountryFavorites
1056 // This option defines the list of countries which are shown at the top
1057 // of the country list in the interface (for full list of country codes
1058 // see the comment for pre globalDefaultAddressCountry option).
1059 // Example:
1060 // var globalAddressCountryFavorites=['de','sk'];
1061 var globalAddressCountryFavorites=[];
1062
1063
1064 // globalAddrColorPropertyXmlns
1065 // This options sets the namespace used for storing the "addressbook-color"
1066 // property by the client.
1067 // If true, undefined (or empty) "http://inf-it.com/ns/ab/" is used.
1068 // If false, then the addressbook color modification functionality
1069 // is completely disabled, and addressbook colors in the interface are
1070 // generated automatically.
1071 // Example:
1072 //var globalAddrColorPropertyXmlns=true;
1073
1074
1075 // globalContactStoreFN
1076 // This option specifies how the FN (formatted name) is stored into vCard.
1077 // The value for this options must be an array of strings, that can contain
1078 // the following variables:
1079 // prefix
1080 // last
1081 // middle
1082 // first
1083 // suffix
1084 // The string element of the array can contain any other characters (usually
1085 // space or colon). Elements are added into FN only if the there is
1086 // a variable match, for example if:
1087 // last='Lastname'
1088 // first='Firstname'
1089 // middle='' (empty)
1090 // and this option is set to:
1091 // ['last', ' middle', ' first'] (space in the second and third element)
1092 // the resulting value for FN will be: 'Lastname Firstname' and not
1093 // 'Lastname Firstname' (two spaces), because the middle name is empty (so
1094 // the second element is completely ignored /not added into FN/).
1095 // NOTE: this attribute is NOT used by this client, and it is also NOT
1096 // possible to directly edit it in the interface.
1097 // Examples:
1098 // var globalContactStoreFN=[' last', ' middle', ' first'];
1099 // var globalContactStoreFN=['last', ', middle', ' ,first'];
1100 var globalContactStoreFN=['prefix',' last',' middle',' first',' suffix'];
1101
1102
1103 // globalGroupContactsByCompanies
1104 // This options specifies how contacts are grouped in the interface.
1105 // By default the interface looks like (very simple example):
1106 // A
1107 // Adams Adam
1108 // Anderson Peter
1109 // B
1110 // Brown John
1111 // Baker Josh
1112 // if grouped by company/deparment the result is:
1113 // Company A [Department X]
1114 // Adams Adam
1115 // Brown John
1116 // Company B [Department Y]
1117 // Anderson Peter
1118 // Baker Josh
1119 // If this option is set to true contacts are grouped by company/department,
1120 // otherwise (default) contacts are grouped by letters of the alphabet.
1121 // If undefined or not true, grouping by alphabet letters is used.
1122 // NOTE: see also the globalCollectionDisplay option below.
1123 var globalGroupContactsByCompanies=false;
1124
1125
1126 // globalCollectionDisplay
1127 // This options specifies how data columns in the contact list are displayed.
1128 //
1129 // NOTE: columns are displayed ONLY if there is enought horizontal place in
1130 // the browser window (e.g. if you define 5 columns here, but your browser
1131 // window is not wide enough, you will see only first 3 columns instead of 5).
1132 //
1133 // NOTE: see the globalContactDataMinVisiblePercentage option which defines the
1134 // width for columns.
1135 //
1136 // The value must be an array of columns, where each column is represented by
1137 // an object with the following properties:
1138 // label => the value of this option is a string used as column header
1139 // You can use the following localized variables in the label string:
1140 // - {Name}
1141 // - {FirstName}
1142 // - {LastName}
1143 // - {MiddleName}
1144 // - {NickName}
1145 // - {Prefix}
1146 // - {Suffix}
1147 // - {BirthDay}
1148 // - {PhoneticLastName}
1149 // - {PhoneticFirstName}
1150 // - {JobTitle}
1151 // - {Company}
1152 // - {Department}
1153 // - {Categories}
1154 // - {NoteText}
1155 // - {Address}, {AddressWork}, {AddressHome}, {AddressOther}
1156 // - {Phone}, {PhoneWork}, {PhoneHome}, {PhoneCell}, {PhoneMain},
1157 // {PhonePager}, {PhoneFax}, {PhoneIphone}, {PhoneOther}
1158 // - {Email}, {EmailWork}, {EmailHome}, {EmailMobileme}, {EmailOther}
1159 // - {URL}, {URLWork}, {URLHome}, {URLHomepage}, {URLOther}
1160 // - {Dates}, {DatesAnniversary}, {DatesOther}
1161 // - {Related}, {RelatedManager}, {RelatedAssistant}, {RelatedFather},
1162 // {RelatedMother}, {RelatedParent}, {RelatedBrother}, {RelatedSister},
1163 // {RelatedChild}, {RelatedFriend}, {RelatedSpouse}, {RelatedPartner},
1164 // {RelatedOther}
1165 // - {Profile}, {ProfileTwitter}, {ProfileFacebook}, {ProfileFlickr},
1166 // {ProfileLinkedin}, {ProfileMyspace}, {ProfileSinaweibo}
1167 // - {IM}, {IMWork}, {IMHome}, {IMMobileme}, {IMOther}, {IMAim}, {IMIcq},
1168 // {IMIrc}, {IMJabber}, {IMMsn}, {IMYahoo}, {IMFacebook}, {IMGadugadu},
1169 // {IMGoogletalk}, {IMQq}, {IMSkype}
1170 // value => the value of this option is an array of format strings, or
1171 // an object with the following properties:
1172 // - company (used for company contacts)
1173 // - personal (used for user contacts)
1174 // where the value of these properties is an array of format strings used
1175 // for company or user contacts (you can have different values in the same
1176 // column for personal and company contacts).
1177 // You can use the following simple variables in the format string:
1178 // - {FirstName}
1179 // - {LastName}
1180 // - {MiddleName}
1181 // - {NickName}
1182 // - {Prefix}
1183 // - {Suffix}
1184 // - {BirthDay}
1185 // - {PhoneticLastName}
1186 // - {PhoneticFirstName}
1187 // - {JobTitle}
1188 // - {Company}
1189 // - {Department}
1190 // - {Categories}
1191 // - {NoteText}
1192 // You can also use parametrized variables, where the parameter is enclosed
1193 // in square bracket. Paramatrized variables are useful to extract data
1194 // such as home phone {Phone[type=home]}, extract the second phone number
1195 // {Phone[:1]} (zero based indexing) or extract the third home phone number
1196 // {Phone[type=home][:2]} from the vCard.
1197 // NOTE: if the parametrized variable matches multiple items, e.g.:
1198 // {Phone[type=work]} (if the contact has multiple work phones) then the
1199 // first one is used!
1200 //
1201 // The following parametrized variables are supported (note: you can use
1202 // all of them also without parameters /the first one will be used/):
1203 // - {Address[type=XXX]} or {Address[:NUM]} or {Address[type=XXX][:NUM]}
1204 // where supported values for XXX are:
1205 // - work
1206 // - home
1207 // - other
1208 // - any other custom value
1209 // - {Phone[type=XXX]} or {Phone[:NUM]} or {Phone[type=XXX][:NUM]}
1210 // where supported values for XXX are:
1211 // - work
1212 // - home
1213 // - cell
1214 // - main
1215 // - pager
1216 // - fax
1217 // - iphone
1218 // - other
1219 // - any other custom value
1220 // - {Email[type=XXX]} or {Email[:NUM]} or {Email[type=XXX][:NUM]}
1221 // where supported values for XXX are:
1222 // - work
1223 // - home
1224 // - mobileme
1225 // - other
1226 // - any other custom value
1227 // - {URL[type=XXX]} or {URL[:NUM]} or {URL[type=XXX][:NUM]}
1228 // where supported values for XXX are:
1229 // - work
1230 // - home
1231 // - homepage
1232 // - other
1233 // - any other custom value
1234 // - {Dates[type=XXX]} or {Dates[:NUM]} or {Dates[type=XXX][:NUM]}
1235 // where supported values for XXX are:
1236 // - anniversary
1237 // - other
1238 // - any other custom value
1239 // - {Related[type=XXX]} or {Related[:NUM]} or {Related[type=XXX][:NUM]}
1240 // where supported values for XXX are:
1241 // - manager
1242 // - assistant
1243 // - father
1244 // - mother
1245 // - parent
1246 // - brother
1247 // - sister
1248 // - child
1249 // - friend
1250 // - spouse
1251 // - partner
1252 // - other
1253 // - any other custom value
1254 // - {Profile[type=XXX]} or {Profile[:NUM]} or {Profile[type=XXX][:NUM]}
1255 // where supported values for XXX are:
1256 // - twitter
1257 // - facebook
1258 // - flickr
1259 // - linkedin
1260 // - myspace
1261 // - sinaweibo
1262 // - any other custom value
1263 // - {IM[type=XXX]} or {IM[service-type=YYY]} or {IM[:NUM]}
1264 // where supported values for XXX are:
1265 // - work
1266 // - home
1267 // - mobileme
1268 // - other
1269 // - any other custom value
1270 // and supported values for YYY are:
1271 // - aim
1272 // - icq
1273 // - irc
1274 // - jabber
1275 // - msn
1276 // - yahoo
1277 // - facebook
1278 // - gadugadu
1279 // - googletalk
1280 // - qq
1281 // - skype
1282 // - any other custom value
1283 //
1284 // NOTE: if you want to use the "any other custom value" option (for XXX
1285 // or YYY above) you MUST double escape the following characters:
1286 // =[]{}\
1287 // for example:
1288 // - for profile type "=XXX=" use: '{Profile[type=\\=XXX\\=]}'
1289 // - for profile type "\XXX\" use: '{Profile[type=\\\\XXX\\\\]}'
1290 //
1291 // NOTE: if you want to use curly brackets in the format string you must
1292 // double escape it, e.g.: ['{Company}', '\\{{Department}\\}']
1293 //
1294 // The format string (for the value option) is an array to allow full
1295 // customization of the interface. For example if:
1296 // value: ['{LastName} {MiddleName} {FirstName}']
1297 // and the person has no middle name, then the result in the column
1298 // will be (without quotes):
1299 // "Parker Peter" (note: two space characters)
1300 // but if you use:
1301 // value: ['{LastName}', ' {MiddleName}', ' {FirstName}']
1302 // then the result will be (without quotes):
1303 // "Parker Peter" (note: only one space character)
1304 // The reason is that only those elements of the array are appended
1305 // into the result where non-empty substitution was performed (so the
1306 // ' {MiddleName}' element in this case is ignored, because the person
1307 // in the example above has no /more precisely has empty/ middle name).
1308 //
1309 // Examples:
1310 // To specify two columns (named "Company" and "Department / LastName"),
1311 // where the first will display the company name, and the second will display
1312 // department for company contacts (with "Dep -" prefix), and lastname for
1313 // personal contacts (with "Name -" prefix) use:
1314 // var globalCollectionDisplay=[
1315 // {
1316 // label: 'Company',
1317 // value: ['{Company}']
1318 // },
1319 // {
1320 // label: 'Department / LastName',
1321 // value: {
1322 // company: ['Dep - {Department}'],
1323 // personal: ['Name - {LastName}']
1324 // }
1325 // }
1326 // ];
1327 // To specify 3 columns (named "Categories", "URL" and "IM"), where the first
1328 // will display categories, second will display the third work URL, and third
1329 // will display ICQ IM use:
1330 // var globalCollectionDisplay=[
1331 // {
1332 // label: 'Categories',
1333 // value: ['{Categories}']
1334 // },
1335 // {
1336 // label: 'URL',
1337 // value: ['{URL[type=WORK][:2]}']
1338 // },
1339 // {
1340 // label: 'IM',
1341 // value: ['{IM[service-type=ICQ]}']
1342 // }
1343 // ];
1344 //
1345 // Recommended settings if globalGroupContactsByCompanies
1346 // is set to false:
1347 // var globalCollectionDisplay=[
1348 // {
1349 // label: '{Name}',
1350 // value: ['{LastName}', ' {MiddleName}', ' {FirstName}']
1351 // },
1352 // {
1353 // label: '{Company} [{Department}]',
1354 // value: ['{Company}', ' [{Department}]']
1355 // },
1356 // {
1357 // label: '{JobTitle}',
1358 // value: ['{JobTitle}']
1359 // },
1360 // {
1361 // label: '{Email}',
1362 // value: ['{Email[:0]}']
1363 // },
1364 // {
1365 // label: '{Phone} 1',
1366 // value: ['{Phone[:0]}']
1367 // },
1368 // {
1369 // label: '{Phone} 2',
1370 // value: ['{Phone[:1]}']
1371 // },
1372 // {
1373 // label: '{NoteText}',
1374 // value: ['{NoteText}']
1375 // }
1376 // ];
1377 //
1378 // Recommended settings if globalGroupContactsByCompanies
1379 // is set to true:
1380 // var globalCollectionDisplay=[
1381 // {
1382 // label: '{Name}',
1383 // value: {
1384 // personal: ['{LastName}', ' {MiddleName}', ' {FirstName}'],
1385 // company: ['{Company}', ' [{Department}]']
1386 // }
1387 // },
1388 // {
1389 // label: '{JobTitle}',
1390 // value: ['{JobTitle}']
1391 // },
1392 // {
1393 // label: '{Email}',
1394 // value: ['{Email[:0]}']
1395 // },
1396 // {
1397 // label: '{Phone} 1',
1398 // value: ['{Phone[:0]}']
1399 // },
1400 // {
1401 // label: '{Phone} 2',
1402 // value: ['{Phone[:1]}']
1403 // },
1404 // {
1405 // label: '{NoteText}',
1406 // value: ['{NoteText}']
1407 // }
1408 // ];
1409 //
1410 // NOTE: if left undefined, the recommended settings will be used.
1411
1412
1413 // globalCollectionSort
1414 // This options sets the ordering of contacts in the interface. In general
1415 // contacts are ordered alphabetically by an internal "sort string" which
1416 // is created for each contact. Here you can specify how this internal string
1417 // is created. The value is a simple array holding only the values from the
1418 // value property defined in the globalCollectionDisplay option.
1419 // If undefined, the definition from globalCollectionDisplay is used.
1420 // Example:
1421 // var globalCollectionSort = [
1422 // ['{LastName}'],
1423 // ['{FirstName}'],
1424 // ['{MiddleName}'],
1425 // {
1426 // company: ['{Categories}'],
1427 // personal: ['{Company}']
1428 // }
1429 // ];
1430 var globalCollectionSort=[
1431 ['{LastName}'],
1432 ['{FirstName}'],
1433 ['{MiddleName}']
1434 ];
1435
1436
1437 // globalContactDataMinVisiblePercentage
1438 // This option defines how the width for columns are computed. If you set
1439 // it to 1 then 100% of all data in the column will be visible (the column
1440 // width is determined by the longest string in the column). If you set it
1441 // to 0.95 then 95% of data will fit into the column width, and the remaining
1442 // 5% will be truncated (" ...").
1443 // Example:
1444 var globalContactDataMinVisiblePercentage=0.95;
1445
1446