InfCloud/main.js

2332 lines
104 KiB
JavaScript

/*
InfCloud - the open source CalDAV/CardDAV Web Client
Copyright (C) 2011-2015
Jan Mate <jan.mate@inf-it.com>
Andrej Lezo <andrej.lezo@inf-it.com>
Matej Mihalik <matej.mihalik@inf-it.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
var globalSettings={
version: {value: (typeof globalSettingsVersion!='undefined' && globalSettingsVersion!=null) ? globalSettingsVersion : 1, locked:false},
resourcealphabetsorting: {value: (typeof globalResourceAlphabetSorting!='undefined' && globalResourceAlphabetSorting!=null) ? globalResourceAlphabetSorting : true, locked:false},
usejqueryauth: {value: (typeof globalUseJqueryAuth!='undefined' && globalUseJqueryAuth!=null) ? globalUseJqueryAuth : false, locked:false},
settingstype: {value: (typeof globalSettingsType!='undefined' && globalSettingsType!=null && globalSettingsType!='') ? globalSettingsType : 'principal-URL', locked:false},
defaultactiveapp: {value: (typeof globalDefaultActiveApp!='undefined' && globalDefaultActiveApp!=null && globalDefaultActiveApp!='') ? globalDefaultActiveApp : null, locked:false},
islastdefaultactiveapp: {value: false, locked:false},
datepickerfirstdayofweek: {value: (typeof globalDatepickerFirstDayOfWeek!='undefined' && globalDatepickerFirstDayOfWeek!=null) ? globalDatepickerFirstDayOfWeek : 1, locked:false},
syncresourcesinterval: {value: (typeof globalSyncResourcesInterval!='undefined' && globalSyncResourcesInterval!=null) ? globalSyncResourcesInterval :300000, locked:false},
datepickerformat: {value: (typeof globalDatepickerFormat!='undefined' && globalDatepickerFormat!=null && globalDatepickerFormat!='') ? globalDatepickerFormat : localization[globalInterfaceLanguage]._default_datepicker_format_, locked:false},
backgroundsync: {value: (typeof globalBackgroundSync!='undefined' && globalBackgroundSync!=null) ? globalBackgroundSync : true, locked:false},
enablekbnavigation: {value: (typeof globalEnableKbNavigation!='undefined' && globalEnableKbNavigation!=null) ? globalEnableKbNavigation : true, locked:false},
rewritetimezonecomponent: {value: (typeof globalRewriteTimezoneComponent!='undefined' && globalRewriteTimezoneComponent!=null) ? globalRewriteTimezoneComponent : true, locked:false},
removeunknowntimezone: {value: (typeof globalRemoveUnknownTimezone!='undefined' && globalRemoveUnknownTimezone!=null) ? globalRemoveUnknownTimezone : false, locked:false},
mozillasupport: {value: (typeof globalMozillaSupport!='undefined' && globalMozillaSupport!=null) ? globalMozillaSupport : false, locked:false},
appleremindersmode: {value: (typeof globalAppleRemindersMode!='undefined' && globalAppleRemindersMode!=null) ? globalAppleRemindersMode : false, locked:false},
titleformatmonth: {value: localization[globalInterfaceLanguage]._default_title_format_month_, locked:false},
titleformatweek: {value: localization[globalInterfaceLanguage]._default_title_format_week_, locked:false},
titleformatday: {value: localization[globalInterfaceLanguage]._default_title_format_day_, locked:false},
titleformattable: {value: localization[globalInterfaceLanguage]._default_title_format_table_, locked:false},
columnformatagenda: {value: localization[globalInterfaceLanguage]._default_column_format_agenda_, locked:false},
activecalendarcollections: {value: (typeof globalActiveCalendarCollections!='undefined' && globalActiveCalendarCollections!=null) ? globalActiveCalendarCollections : new Array(), locked:false},
activetodocollections: {value: (typeof globalActiveTodoCollections!='undefined' && globalActiveTodoCollections!=null) ? globalActiveTodoCollections : new Array(), locked:false},
loadedcalendarcollections: {value: (typeof globalLoadedCalendarCollections!='undefined' && globalLoadedCalendarCollections!=null) ? globalLoadedCalendarCollections : new Array(), locked:false},
loadedtodocollections: {value: (typeof globalLoadedTodoCollections!='undefined' && globalLoadedTodoCollections!=null) ? globalLoadedTodoCollections : new Array(), locked:false},
todolistfilterselected: {value: (typeof globalTodoListFilterSelected!='undefined' && globalTodoListFilterSelected!=null && globalTodoListFilterSelected!='') ? globalTodoListFilterSelected : ['filterAction', 'filterProgress'], locked:false},
activeview: {value: (typeof globalActiveView!='undefined' && globalActiveView!=null && globalActiveView!='') ? globalActiveView : 'multiWeek', locked:false},
islastactiveview: {value: true, locked:false},
calendarselected: {value: (typeof globalCalendarSelected!='undefined' && globalCalendarSelected!=null && globalCalendarSelected!='') ? globalCalendarSelected : '', locked:false},
todocalendarselected: {value: (typeof globalTodoCalendarSelected!='undefined' && globalTodoCalendarSelected!=null && globalTodoCalendarSelected!='') ? globalTodoCalendarSelected : '', locked:false},
timezone: {value: (typeof globalTimeZone!='undefined' && globalTimeZone!=null && globalTimeZone!='') ? globalTimeZone : 'local', locked:false},
islasttimezone: {value: true, locked:false},
openformmode: {value: (typeof globalOpenFormMode!='undefined' && globalOpenFormMode!=null && globalOpenFormMode!='') ? globalOpenFormMode : 'double', locked:false},
calendarstartofbusiness: {value: (typeof globalCalendarStartOfBusiness!='undefined' && globalCalendarStartOfBusiness!=null) ? globalCalendarStartOfBusiness : 8, locked:false},
calendarendofbusiness: {value: (typeof globalCalendarEndOfBusiness!='undefined' && globalCalendarEndOfBusiness!=null) ? globalCalendarEndOfBusiness : 17, locked:false},
defaulteventduration: {value: (typeof globalDefaultEventDuration!='undefined' && globalDefaultEventDuration!=null && globalDefaultEventDuration>=0) ? globalDefaultEventDuration : null, locked:false},
ampmformat: {value: (typeof globalAMPMFormat!='undefined' && globalAMPMFormat!=null) ? globalAMPMFormat : localization[globalInterfaceLanguage]._default_AMPM_format_, locked:false},
timeformatagenda: {value: (typeof globalTimeFormatAgenda!='undefined' && globalTimeFormatAgenda!=null && globalTimeFormatAgenda!='') ? globalTimeFormatAgenda : null, locked:false},
timeformatbasic: {value: (typeof globalTimeFormatBasic!='undefined' && globalTimeFormatBasic!=null && globalTimeFormatBasic!='') ? globalTimeFormatBasic : null, locked:false},
displayhiddenevents: {value: (typeof globalDisplayHiddenEvents!='undefined' && globalDisplayHiddenEvents!=null) ? globalDisplayHiddenEvents : false, locked:false},
timezonesupport: {value: (typeof globalTimeZoneSupport!='undefined' && globalTimeZoneSupport!=null) ? globalTimeZoneSupport : true, locked:false},
timezonesenabled: {value: (typeof globalTimeZonesEnabled!='undefined' && globalTimeZonesEnabled!=null && globalTimeZonesEnabled!='') ? globalTimeZonesEnabled : [], locked:false},
showhiddenalarms: {value: (typeof globalShowHiddenAlarms!='undefined' && globalShowHiddenAlarms!=null) ? globalShowHiddenAlarms : false, locked:false},
ignorecompletedorcancelledalarms: {value: (typeof globalIgnoreCompletedOrCancelledAlarms!='undefined' && globalIgnoreCompletedOrCancelledAlarms!=null) ? globalIgnoreCompletedOrCancelledAlarms : true, locked:false},
weekenddays: {value: (typeof globalWeekendDays!='undefined' && globalWeekendDays!=null && globalWeekendDays!='') ? globalWeekendDays : [0, 6], locked:false},
eventstartpastlimit: {value: (typeof globalEventStartPastLimit!='undefined' && globalEventStartPastLimit!=null) ? globalEventStartPastLimit : 3, locked:false},
todopastlimit: {value: (typeof globalTodoPastLimit!='undefined' && globalTodoPastLimit!=null) ? globalTodoPastLimit : 3, locked:false},
eventstartfuturelimit: {value: (typeof globalEventStartFutureLimit!='undefined' && globalEventStartFutureLimit!=null) ? globalEventStartFutureLimit : 3, locked:false},
compatibility: {value: (typeof globalCompatibility!='undefined' && globalCompatibility!=null && globalCompatibility!='') ? globalCompatibility : {anniversaryOutputFormat: ['apple']}, locked:false},
contactstorefn: {value: (typeof globalContactStoreFN!='undefined' && globalContactStoreFN!=null && globalContactStoreFN!='') ? globalContactStoreFN : ['prefix',' last',' middle',' first',' suffix'], locked:false},
urihandlertel: {value: (typeof globalUriHandlerTel!='undefined' && globalUriHandlerTel!=null && globalUriHandlerTel!='') ? globalUriHandlerTel : 'tel:', locked:false},
urihandleremail: {value: (typeof globalUriHandlerEmail!='undefined' && globalUriHandlerEmail!=null && globalUriHandlerEmail!='') ? globalUriHandlerEmail : 'mailto:', locked:false},
urihandlerurl: {value: (typeof globalUriHandlerUrl!='undefined' && globalUriHandlerUrl!=null && globalUriHandlerUrl!='') ? globalUriHandlerUrl : 'http://', locked:false},
urihandlerprofile: {value: (typeof globalUriHandlerProfile!='undefined' && globalUriHandlerProfile!=null && globalUriHandlerProfile!='') ? globalUriHandlerProfile : {'twitter': 'http://twitter.com/%u', 'facebook': 'http://www.facebook.com/%u', 'flickr': 'http://www.flickr.com/photos/%u', 'linkedin': 'http://www.linkedin.com/in/%u', 'myspace': 'http://www.myspace.com/%u', 'sinaweibo': 'http://weibo.com/n/%u'}, locked:false},
addresscountryequivalence: {value: (typeof globalAddressCountryEquivalence!='undefined' && globalAddressCountryEquivalence!=null && globalAddressCountryEquivalence!='') ? globalAddressCountryEquivalence : [{country: 'de', regex: '^\\W*Deutschland\\W*$'}, {country: 'sk', regex: '^\\W*Slovensko\\W*$'}], locked:false},
addressbookselected: {value: (typeof globalAddressbookSelected!='undefined' && globalAddressbookSelected!=null && globalAddressbookSelected!='') ? globalAddressbookSelected : '', locked:false},
collectiondisplay: {value: (typeof globalCollectionDisplay!='undefined' && globalCollectionDisplay!=null && globalCollectionDisplay!='') ? globalCollectionDisplay : (
(typeof globalGroupContactsByCompanies!='undefined' && globalGroupContactsByCompanies) ?
[{label: '{Name}', value: {company: ['{Company}', ' [{Department}]'], personal: ['{LastName}', ' {MiddleName}', ' {FirstName}']}}, {label: '{JobTitle}', value: ['{JobTitle}']}, {label: '{Email}', value: ['{Email[:0]}']}, {label: '{Phone} 1', value: ['{Phone[:0]}']}, {label: '{Phone} 2', value: ['{Phone[:1]}']}, {label: '{NoteText}', value: ['{NoteText}']}] :
[{label: '{Name}', value: ['{LastName}', ' {MiddleName}', ' {FirstName}']}, {label: '{Company} [{Department}]', value: ['{Company}', ' [{Department}]']}, {label: '{JobTitle}', value: ['{JobTitle}']}, {label: '{Email}', value: ['{Email[:0]}']}, {label: '{Phone} 1', value: ['{Phone[:0]}']}, {label: '{Phone} 2', value: ['{Phone[:1]}']}, {label: '{NoteText}', value: ['{NoteText}']}]
), locked:false},
collectionsort: {value: (typeof globalCollectionSort!='undefined' && globalCollectionSort!=null && globalCollectionSort!='') ? globalCollectionSort : '', locked:false},
defaultaddresscountry: {value: (typeof globalDefaultAddressCountry!='undefined' && globalDefaultAddressCountry!=null && globalDefaultAddressCountry!='') ? globalDefaultAddressCountry :'us', locked:false},
addresscountryfavorites: {value: (typeof globalAddressCountryFavorites!='undefined' && globalAddressCountryFavorites!=null && globalAddressCountryFavorites!='') ? globalAddressCountryFavorites :[], locked:false},
activeaddressbookcollections: {value: (typeof globalActiveAddressbookCollections!='undefined' && globalActiveAddressbookCollections!=null) ? globalActiveAddressbookCollections : new Array(), locked:false},
loadedaddressbookcollections: {value: (typeof globalLoadedAddressbookCollections!='undefined' && globalLoadedAddressbookCollections!=null) ? globalLoadedAddressbookCollections : new Array(), locked:false}
};
function resetSettings()
{
globalSettings={
version: {value: (typeof globalSettingsVersion!='undefined' && globalSettingsVersion!=null) ? globalSettingsVersion : 1, locked:false},
resourcealphabetsorting: {value: (typeof globalResourceAlphabetSorting!='undefined' && globalResourceAlphabetSorting!=null) ? globalResourceAlphabetSorting : true, locked:false},
usejqueryauth: {value: (typeof globalUseJqueryAuth!='undefined' && globalUseJqueryAuth!=null) ? globalUseJqueryAuth : false, locked:false},
settingstype: {value: (typeof globalSettingsType!='undefined' && globalSettingsType!=null && globalSettingsType!='') ? globalSettingsType : 'principal-URL', locked:false},
defaultactiveapp: {value: (typeof globalDefaultActiveApp!='undefined' && globalDefaultActiveApp!=null && globalDefaultActiveApp!='') ? globalDefaultActiveApp : null, locked:false},
islastdefaultactiveapp: {value: false, locked:false},
datepickerfirstdayofweek: {value: (typeof globalDatepickerFirstDayOfWeek!='undefined' && globalDatepickerFirstDayOfWeek!=null) ? globalDatepickerFirstDayOfWeek : 1, locked:false},
syncresourcesinterval: {value: (typeof globalSyncResourcesInterval!='undefined' && globalSyncResourcesInterval!=null) ? globalSyncResourcesInterval :300000, locked:false},
datepickerformat: {value: (typeof globalDatepickerFormat!='undefined' && globalDatepickerFormat!=null && globalDatepickerFormat!='') ? globalDatepickerFormat : localization[globalInterfaceLanguage]._default_datepicker_format_, locked:false},
backgroundsync: {value: (typeof globalBackgroundSync!='undefined' && globalBackgroundSync!=null) ? globalBackgroundSync : true, locked:false},
enablekbnavigation: {value: (typeof globalEnableKbNavigation!='undefined' && globalEnableKbNavigation!=null) ? globalEnableKbNavigation : true, locked:false},
rewritetimezonecomponent: {value: (typeof globalRewriteTimezoneComponent!='undefined' && globalRewriteTimezoneComponent!=null) ? globalRewriteTimezoneComponent : true, locked:false},
removeunknowntimezone: {value: (typeof globalRemoveUnknownTimezone!='undefined' && globalRemoveUnknownTimezone!=null) ? globalRemoveUnknownTimezone : false, locked:false},
mozillasupport: {value: (typeof globalMozillaSupport!='undefined' && globalMozillaSupport!=null) ? globalMozillaSupport : false, locked:false},
appleremindersmode: {value: (typeof globalAppleRemindersMode!='undefined' && globalAppleRemindersMode!=null) ? globalAppleRemindersMode : false, locked:false},
titleformatmonth: {value: localization[globalInterfaceLanguage]._default_title_format_month_, locked:false},
titleformatweek: {value: localization[globalInterfaceLanguage]._default_title_format_week_, locked:false},
titleformatday: {value: localization[globalInterfaceLanguage]._default_title_format_day_, locked:false},
titleformattable: {value: localization[globalInterfaceLanguage]._default_title_format_table_, locked:false},
columnformatagenda: {value: localization[globalInterfaceLanguage]._default_column_format_agenda_, locked:false},
activecalendarcollections: {value: (typeof globalActiveCalendarCollections!='undefined' && globalActiveCalendarCollections!=null) ? globalActiveCalendarCollections : new Array(), locked:false},
activetodocollections: {value: (typeof globalActiveTodoCollections!='undefined' && globalActiveTodoCollections!=null) ? globalActiveTodoCollections : new Array(), locked:false},
loadedcalendarcollections: {value: (typeof globalLoadedCalendarCollections!='undefined' && globalLoadedCalendarCollections!=null) ? globalLoadedCalendarCollections : new Array(), locked:false},
loadedtodocollections: {value: (typeof globalLoadedTodoCollections!='undefined' && globalLoadedTodoCollections!=null) ? globalLoadedTodoCollections : new Array(), locked:false},
todolistfilterselected: {value: (typeof globalTodoListFilterSelected!='undefined' && globalTodoListFilterSelected!=null && globalTodoListFilterSelected!='') ? globalTodoListFilterSelected : ['filterAction', 'filterProgress'], locked:false},
activeview: {value: (typeof globalActiveView!='undefined' && globalActiveView!=null && globalActiveView!='') ? globalActiveView : 'multiWeek', locked:false},
islastactiveview: {value: true, lockedlocked:false},
calendarselected: {value: (typeof globalCalendarSelected!='undefined' && globalCalendarSelected!=null && globalCalendarSelected!='') ? globalCalendarSelected : '', locked:false},
todocalendarselected: {value: (typeof globalTodoCalendarSelected!='undefined' && globalTodoCalendarSelected!=null && globalTodoCalendarSelected!='') ? globalTodoCalendarSelected : '', locked:false},
timezone: {value: (typeof globalTimeZone!='undefined' && globalTimeZone!=null && globalTimeZone!='') ? globalTimeZone : 'local', locked:false},
islasttimezone: {value: true, locked:false},
openformmode: {value: (typeof globalOpenFormMode!='undefined' && globalOpenFormMode!=null && globalOpenFormMode!='') ? globalOpenFormMode : 'double', locked:false},
calendarstartofbusiness: {value: (typeof globalCalendarStartOfBusiness!='undefined' && globalCalendarStartOfBusiness!=null) ? globalCalendarStartOfBusiness : 8, locked:false},
calendarendofbusiness: {value: (typeof globalCalendarEndOfBusiness!='undefined' && globalCalendarEndOfBusiness!=null) ? globalCalendarEndOfBusiness : 17, locked:false},
defaulteventduration: {value: (typeof globalDefaultEventDuration!='undefined' && globalDefaultEventDuration!=null && globalDefaultEventDuration>=0) ? globalDefaultEventDuration : null, locked:false},
ampmformat: {value: (typeof globalAMPMFormat!='undefined' && globalAMPMFormat!=null) ? globalAMPMFormat : localization[globalInterfaceLanguage]._default_AMPM_format_, locked:false},
timeformatagenda: {value: (typeof globalTimeFormatAgenda!='undefined' && globalTimeFormatAgenda!=null && globalTimeFormatAgenda!='') ? globalTimeFormatAgenda : null, locked:false},
timeformatbasic: {value: (typeof globalTimeFormatBasic!='undefined' && globalTimeFormatBasic!=null && globalTimeFormatBasic!='') ? globalTimeFormatBasic : null, locked:false},
displayhiddenevents: {value: (typeof globalDisplayHiddenEvents!='undefined' && globalDisplayHiddenEvents!=null) ? globalDisplayHiddenEvents : false, locked:false},
timezonesupport: {value: (typeof globalTimeZoneSupport!='undefined' && globalTimeZoneSupport!=null) ? globalTimeZoneSupport : true, locked:false},
timezonesenabled: {value: (typeof globalTimeZonesEnabled!='undefined' && globalTimeZonesEnabled!=null && globalTimeZonesEnabled!='') ? globalTimeZonesEnabled : [], locked:false},
showhiddenalarms: {value: (typeof globalShowHiddenAlarms!='undefined' && globalShowHiddenAlarms!=null) ? globalShowHiddenAlarms : false, locked:false},
ignorecompletedorcancelledalarms: {value: (typeof globalIgnoreCompletedOrCancelledAlarms!='undefined' && globalIgnoreCompletedOrCancelledAlarms!=null) ? globalIgnoreCompletedOrCancelledAlarms : true, locked:false},
weekenddays: {value: (typeof globalWeekendDays!='undefined' && globalWeekendDays!=null && globalWeekendDays!='') ? globalWeekendDays : [0, 6], locked:false},
eventstartpastlimit: {value: (typeof globalEventStartPastLimit!='undefined' && globalEventStartPastLimit!=null) ? globalEventStartPastLimit : 3, locked:false},
todopastlimit: {value: (typeof globalTodoPastLimit!='undefined' && globalTodoPastLimit!=null) ? globalTodoPastLimit : 3, locked:false},
eventstartfuturelimit: {value: (typeof globalEventStartFutureLimit!='undefined' && globalEventStartFutureLimit!=null) ? globalEventStartFutureLimit : 3, locked:false},
compatibility: {value: (typeof globalCompatibility!='undefined' && globalCompatibility!=null && globalCompatibility!='') ? globalCompatibility : {anniversaryOutputFormat: ['apple']}, locked:false},
contactstorefn: {value: (typeof globalContactStoreFN!='undefined' && globalContactStoreFN!=null && globalContactStoreFN!='') ? globalContactStoreFN : ['prefix',' last',' middle',' first',' suffix'], locked:false},
urihandlertel: {value: (typeof globalUriHandlerTel!='undefined' && globalUriHandlerTel!=null && globalUriHandlerTel!='') ? globalUriHandlerTel : 'tel:', locked:false},
urihandleremail: {value: (typeof globalUriHandlerEmail!='undefined' && globalUriHandlerEmail!=null && globalUriHandlerEmail!='') ? globalUriHandlerEmail : 'mailto:', locked:false},
urihandlerurl: {value: (typeof globalUriHandlerUrl!='undefined' && globalUriHandlerUrl!=null && globalUriHandlerUrl!='') ? globalUriHandlerUrl : 'http://', locked:false},
urihandlerprofile: {value: (typeof globalUriHandlerProfile!='undefined' && globalUriHandlerProfile!=null && globalUriHandlerProfile!='') ? globalUriHandlerProfile : {'twitter': 'http://twitter.com/%u', 'facebook': 'http://www.facebook.com/%u', 'flickr': 'http://www.flickr.com/photos/%u', 'linkedin': 'http://www.linkedin.com/in/%u', 'myspace': 'http://www.myspace.com/%u', 'sinaweibo': 'http://weibo.com/n/%u'}, locked:false},
addresscountryequivalence: {value: (typeof globalAddressCountryEquivalence!='undefined' && globalAddressCountryEquivalence!=null && globalAddressCountryEquivalence!='') ? globalAddressCountryEquivalence : [{country: 'de', regex: '^\\W*Deutschland\\W*$'}, {country: 'sk', regex: '^\\W*Slovensko\\W*$'}], locked:false},
addressbookselected: {value: (typeof globalAddressbookSelected!='undefined' && globalAddressbookSelected!=null && globalAddressbookSelected!='') ? globalAddressbookSelected : '', locked:false},
collectiondisplay: {value: (typeof globalCollectionDisplay!='undefined' && globalCollectionDisplay!=null && globalCollectionDisplay!='') ? globalCollectionDisplay : (
(typeof globalGroupContactsByCompanies!='undefined' && globalGroupContactsByCompanies) ?
[{label: '{Name}', value: {company: ['{Company}', ' [{Department}]'], personal: ['{LastName}', ' {MiddleName}', ' {FirstName}']}}, {label: '{JobTitle}', value: ['{JobTitle}']}, {label: '{Email}', value: ['{Email[:0]}']}, {label: '{Phone} 1', value: ['{Phone[:0]}']}, {label: '{Phone} 2', value: ['{Phone[:1]}']}, {label: '{NoteText}', value: ['{NoteText}']}] :
[{label: '{Name}', value: ['{LastName}', ' {MiddleName}', ' {FirstName}']}, {label: '{Company} [{Department}]', value: ['{Company}', ' [{Department}]']}, {label: '{JobTitle}', value: ['{JobTitle}']}, {label: '{Email}', value: ['{Email[:0]}']}, {label: '{Phone} 1', value: ['{Phone[:0]}']}, {label: '{Phone} 2', value: ['{Phone[:1]}']}, {label: '{NoteText}', value: ['{NoteText}']}]
), locked:false},
collectionsort: {value: (typeof globalCollectionSort!='undefined' && globalCollectionSort!=null && globalCollectionSort!='') ? globalCollectionSort : '', locked:false},
defaultaddresscountry: {value: (typeof globalDefaultAddressCountry!='undefined' && globalDefaultAddressCountry!=null && globalDefaultAddressCountry!='') ? globalDefaultAddressCountry :'us', locked:false},
addresscountryfavorites: {value: (typeof globalAddressCountryFavorites!='undefined' && globalAddressCountryFavorites!=null && globalAddressCountryFavorites!='') ? globalAddressCountryFavorites :[], locked:false},
activeaddressbookcollections: {value: (typeof globalActiveAddressbookCollections!='undefined' && globalActiveAddressbookCollections!=null) ? globalActiveAddressbookCollections : new Array(), locked:false},
loadedaddressbookcollections: {value: (typeof globalLoadedAddressbookCollections!='undefined' && globalLoadedAddressbookCollections!=null) ? globalLoadedAddressbookCollections : new Array(), locked:false}
};
}
function transformToServer(inSettings)
{
var serverSettings={};
for(var prop in inSettings)
{
serverSettings[prop]=inSettings[prop].value;
}
return serverSettings;
}
var globalWindowFocus=true;
var globalLoginUsername='';
var globalLoginPassword='';
var isUserLogged=false;
var isDelegationLoaded=false;
var globalActiveApp='';
var globalAvailableAppsArray=new Array();
var globalEnableAppSwitch=true;
var globalAppName='InfCloud';
var globalVersion='0.13.1';
var globalBuildNo=1442928610;
var globalXMLCache=null;
var globalVersionCheckURL=(location.protocol=='file:' ? 'http:' : location.protocol)+'//www.inf-it.com/versioncheck/'+globalAppName+'/?v='+globalVersion;
var globalXClientHeader=globalAppName+' '+globalVersion+' (Inf-IT CalDAV/CardDAV Web Client)';
var globalResourceNumberCount=0;
var globalResourceNumber=0;
var globalResourceIntervalID=null;
var globalFirstLoadNextApp=false;
var globalObjectLoading=false;
var settingsLoaded=false;
var globalKBNavigationPaddingRate=0.2;
var globalParallelAjaxCallCardDAVEnabled=true;
var globalParallelAjaxCallCalDAVEnabled=true;
var globalCacheUpdateInterval=null;
var isIntegrated=false;
var SVG_select='<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/" x="0px" y="0px" width="19px" height="19px" viewBox="0 0 19 19" overflow="visible" enable-background="new 0 0 19 19" xml:space="preserve"><defs></defs><rect x="2" fill="#585858" width="17" height="19"/><polygon fill="#FFFFFF" points="14,7 10.5,13 7,7 "/><rect fill="#FFFFFF" width="2" height="19"/></svg>';
var SVG_select_inv='<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/" x="0px" y="0px" width="19px" height="19px" viewBox="0 0 19 19" overflow="visible" enable-background="new 0 0 19 19" xml:space="preserve"><defs></defs><rect x="2" fill="#585858" width="17" height="19"/><polygon fill="#FFFFFF" points="14,13 10.5,7 7,13"/><rect fill="#FFFFFF" width="2" height="19"/></svg>';
var SVG_select_b='<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/" x="0px" y="0px" width="19px" height="19px" viewBox="0 0 19 19" overflow="visible" enable-background="new 0 0 19 19" xml:space="preserve"><defs></defs><rect x="2" fill="#585858" width="17" height="19"/><polygon fill="#FFFFFF" points="14,7 10.5,13 7,7 "/><rect fill="#F0F0F0" width="2" height="19"/></svg>';
var SVG_select_login='<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/" x="0px" y="0px" width="19px" height="28px" viewBox="0 0 19 28" overflow="visible" enable-background="new 0 0 19 28" xml:space="preserve"><defs></defs><rect fill="#FFFFFF" width="19" height="28"/></svg>';
var SVG_select_dis='<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/" x="0px" y="0px" width="22px" height="19px" viewBox="0 0 22 19" overflow="visible" enable-background="new 0 0 22 19" xml:space="preserve"><defs></defs><rect fill="#FFFFFF" width="22" height="19"/></svg>';
var globalDefinedSettings = new Array();
var globalLoadedPrincipals = new Array();
var globalEnableAllResourceSync = true;
if(typeof isSettingsAvaible == 'undefined')
var globalPreviousSupportedSettings = ['activecalendarcollections','activetodocollections', 'activeaddressbookcollections','todolistfilterselected','activeview','defaultactiveapp','calendarselected', 'todocalendarselected','addressbookselected','timezone', 'loadedtodocollections', 'loadedcalendarcollections', 'loadedaddressbookcollections', 'version'];
var globalSettingsSaving = '';
var globalFirstHideLoader = true;
var globalLoadedCollectionsNumber = 0;
var globalLoadedCollectionsCount = 0;
var ignoreServerSettings=false;
var globalPreventLogoutSync=false;
var globalEmailAddress='';
var globalSettingsVersion=3;
var globalSyncSettingsSave=false;
// Timepicker hack (prevent IE to re-open the datepicker on date click + focus)
var globalTmpTimePickerHackTime=new Object();
function isAvaible(app)
{
return globalAvailableAppsArray.indexOf(app)!=-1
}
function loadAllResources()
{
if(globalResourceIntervalID==null)
netFindResource(globalAccountSettings[0], 0, true, 0);
}
function getAccount(accountUID)
{
// find the original settings for the resource and user
var tmp=accountUID.match(RegExp('^(https?://)([^@/]+(?:@[^@/]+)?)@([^/]+)(.*/)','i'));
var resource_href=tmp[1]+tmp[3]+tmp[4];
var resource_user=tmp[2];
for(var i=0;i<globalAccountSettings.length;i++)
if(globalAccountSettings[i].href==resource_href && globalAccountSettings[i].userAuth.userName==resource_user)
resourceSettings=globalAccountSettings[i];
return resourceSettings;
}
function checkForUnloadedResources()
{
var rex=new RegExp('^(https?://)([^@/]+(?:@[^@/]+)?)@([^/]+)(.*/)', 'i');
for(var i=globalLoadedPrincipals.length-1; i>=0;i--)
{
var resourceCounter = 0;
if(isAvaible('CardDavMATE'))
for(var j=0; j<globalResourceCardDAVList.collections.length;j++)
if(globalResourceCardDAVList.collections[j].uid!=undefined&&globalResourceCardDAVList.collections[j].makeLoaded)
{
var tmp=globalResourceCardDAVList.collections[j].accountUID.match(rex);
var resourceCalDAV_href=tmp[1]+tmp[3]+tmp[4];
if(globalLoadedPrincipals[i]==resourceCalDAV_href)
resourceCounter++;
}
if(isAvaible('CalDavZAP'))
{
for(var j=0; j<globalResourceCalDAVList.collections.length;j++)
if(globalResourceCalDAVList.collections[j].uid!=undefined&&globalResourceCalDAVList.collections[j].makeLoaded)
{
var tmp=globalResourceCalDAVList.collections[j].accountUID.match(rex);
var resourceCalDAV_href=tmp[1]+tmp[3]+tmp[4];
if(globalLoadedPrincipals[i]==resourceCalDAV_href)
resourceCounter++;
}
for(var j=0; j<globalResourceCalDAVList.TodoCollections.length;j++)
if(globalResourceCalDAVList.TodoCollections[j].uid!=undefined&&globalResourceCalDAVList.TodoCollections[j].makeLoaded)
{
var tmp=globalResourceCalDAVList.TodoCollections[j].accountUID.match(rex);
var resourceCalDAV_href=tmp[1]+tmp[3]+tmp[4];
if(globalLoadedPrincipals[i]==resourceCalDAV_href)
resourceCounter++;
}
}
if(resourceCounter==0)
globalLoadedPrincipals.splice(i,1);
}
}
function reloadResources(dontSaveSettings, loadArray)
{
if((isAvaible('CardDavMATE')&&(globalCardDAVInitLoad||globalCardDAVResourceSync)) || (isAvaible('CalDavZAP')&&(globalCalDAVInitLoad||globalCalDAVResourceSync))
|| (isAvaible('Projects')&&!isProjectsLoaded) || (isAvaible('Settings')&&(!isSettingsLoaded || (globalSettingsSaving!=''&&!dontSaveSettings))) || (isAvaible('CalDavZAP')&&(globalLimitLoading!='' || globalLimitTodoLoading!='')))
return false;
if(globalWindowFocus==false)
return false;
globalCardDAVResourceSync=true;
globalCalDAVResourceSync=true;
if(isAvaible('CalDavZAP'))
{
globalCalDAVResourceSync = true;
globalToday.setHours(0);
globalToday.setMinutes(0);
globalToday.setSeconds(0);
globalToday.setMilliseconds(0);
var currentToday=new Date();
currentToday.setHours(0);
currentToday.setMinutes(0);
currentToday.setSeconds(0);
currentToday.setMilliseconds(0);
if(currentToday.getTime()!=globalToday.getTime())
{
if(isAvaible('CalDavZAP'))
$('.date').datepicker('refresh');
if(isAvaible('CardDavMATE'))
$('#vCardEditor').find('input[data-type^="date_"]').datepicker('refresh');
if(isAvaible('Projects'))
$('.project_date').datepicker('refresh');
$('#calendar').fullCalendar('updateToday');
$('#calendar').fullCalendar('gotoDate', currentToday);
$('#todoList').fullCalendar('gotoDate', currentToday);
if(currentToday.getTime()>globalToday.getTime())
{
getNextMonths($('#calendar').fullCalendar('getView').end);
getNextMonthsTodo();
}
else //support for timezone with backward time flow
{
getPrevMonths($('#calendar').fullCalendar('getView').start);
getPrevMonthsTodo();
}
globalToday=currentToday;
}
}
checkForUnloadedResources();
if(!globalEnableAllResourceSync&&(typeof loadArray=='undefined' || loadArray==null))
netFindResource(globalAccountSettings[0], 0, false, 0, globalLoadedPrincipals);
else
netFindResource(globalAccountSettings[0], 0, false, 0, loadArray);
}
function ifLoadCollections()
{
if((isAvaible('CardDavMATE') && (globalCardDAVInitLoad || globalCardDAVResourceSync)) || (isAvaible('CalDavZAP') && (globalCalDAVInitLoad || globalCalDAVResourceSync)))
return false;
var changeCounter = 0;
if(isAvaible('CardDavMATE'))
for(var i=0; i<globalResourceCardDAVList.collections.length;i++)
if(globalResourceCardDAVList.collections[i].uid!=undefined && globalResourceCardDAVList.collections[i].someChanged)
changeCounter++;
if(isAvaible('CalDavZAP'))
{
for(var i=0; i<globalResourceCalDAVList.collections.length;i++)
if(globalResourceCalDAVList.collections[i].uid!=undefined && globalResourceCalDAVList.collections[i].someChanged)
changeCounter++;
for(var i=0; i<globalResourceCalDAVList.TodoCollections.length;i++)
if(globalResourceCalDAVList.TodoCollections[i].uid!=undefined && globalResourceCalDAVList.TodoCollections[i].someChanged)
changeCounter++;
}
if(changeCounter>0 || globalSettingsSaving!='')
loadNextApplication(false);
}
function bindColorPickerClick(newElement)
{
newElement.click(function(event){
var collectionType=null;
var resourceSelectedClass=null;
var resourceItems=null;
if(newElement.parent().hasClass('resourceCalDAV_item'))
{
if(globalEventCollectionsLoading)
return false;
collectionType='event';
resourceSelectedClass='resourceCalDAV_item_selected';
resourceItems=newElement.parent().siblings('.resourceCalDAV_item_selected');
}
else if(newElement.parent().hasClass('resourceCalDAVTODO_item'))
{
if(globalTodoCollectionsLoading)
return false;
collectionType='todo';
resourceSelectedClass='resourceCalDAV_item_selected';
resourceItems=newElement.parent().siblings('.resourceCalDAV_item_selected');
}
else if(newElement.hasClass('resourceCardDAVColor'))
{
if(globalAddressbookCollectionsLoading)
return false;
collectionType='addressbook';
resourceSelectedClass='resourceCardDAV_selected';
resourceItems=newElement.parent().parent().siblings().find('.resourceCardDAV_selected');
}
var showInput = event.shiftKey;
var colorpicker=$(this).siblings('.colorPicker');
if(!$(this).hasClass('hasColorpicker'))
{
$(this).addClass('hasColorpicker');
colorpicker.spectrum({
chooseText: localization[globalInterfaceLanguage].buttonSave,
cancelText: localization[globalInterfaceLanguage].buttonCancel,
color: newElement.css('background-color'),
showInput: showInput,
preferredFormat: 'hex6',
move: function(color)
{
newElement.css('background', color);
},
hide: function(color)
{
if(newElement.css('background-color') != colorpicker.spectrum('get').toRgbString())
newElement.css('background', colorpicker.spectrum('get').toRgbString());
},
change: function(color)
{
newElement.css('background', color);
if(collectionType=='event')
{
var coll = globalResourceCalDAVList.getEventCollectionByUID($(this).parent().attr('data-id'));
netSaveProperty(coll, (typeof globalCalendarColorPropertyXmlns!='undefined'&&globalCalendarColorPropertyXmlns!=null&&globalCalendarColorPropertyXmlns!='' ? globalCalendarColorPropertyXmlns : 'http://apple.com/ns/ical/'), 'calendar-color', color.toHexString())
}
else if(collectionType=='todo')
{
var coll = globalResourceCalDAVList.getTodoCollectionByUID($(this).parent().attr('data-id'));
netSaveProperty(coll, (typeof globalCalendarColorPropertyXmlns!='undefined'&&globalCalendarColorPropertyXmlns!=null&&globalCalendarColorPropertyXmlns!='' ? globalCalendarColorPropertyXmlns : 'http://apple.com/ns/ical/'), 'calendar-color', color.toHexString())
}
else if(collectionType=='addressbook')
{
var coll = globalResourceCardDAVList.getCollectionByUID($(this).parent().attr('data-id'));
netSaveProperty(coll, (typeof globalAddrColorPropertyXmlns!='undefined'&&globalAddrColorPropertyXmlns!=null&&globalAddrColorPropertyXmlns!='' ? globalAddrColorPropertyXmlns : 'http://inf-it.com/ns/ab/'), 'addressbook-color', color.toHexString())
}
}
});
}
else if(showInput!=colorpicker.spectrum('option', 'showInput'))
colorpicker.spectrum('option', 'showInput',showInput);
var container = colorpicker.spectrum('container');
if(container.is(':visible')) {
colorpicker.spectrum('hide');
}
else {
var offset=$(this).offset();
colorpicker.spectrum('show');
if(event.pageY<$(window).height()/2) {
offset.top+=$(this).outerHeight();
container.removeClass('sp-inverse');
}
else {
offset.top-=container.outerHeight();
container.addClass('sp-inverse');
}
container.offset(offset);
}
resourceItems.removeClass(resourceSelectedClass);
newElement.parent().addClass(resourceSelectedClass);
return false;
});
}
function loadNextApplication(forceLoad)
{
if(!globalFirstLoadNextApp)
{
if(isAvaible('CardDavMATE'))
setAddressbookNumber();
if(isAvaible('CalDavZAP'))
setCalendarNumber(true);
globalFirstLoadNextApp=true;
}
if(isAvaible('CardDavMATE') && !globalCardDAVCollectionSync && globalResourceCardDAVList.collections.length>0)
{
globalCardDAVCollectionSync=true;
CardDAVnetLoadCollection(globalResourceCardDAVList.collections[0], forceLoad, false, null, 0, globalResourceCardDAVList.collections,true);
}
else if(isAvaible('CalDavZAP') && !globalCalDAVCollectionSync && globalResourceCalDAVList.collections.length>0)
{
globalCalDAVCollectionSync=true;
CalDAVnetLoadCollection(globalResourceCalDAVList.collections[0], forceLoad, true, 0, globalResourceCalDAVList.collections);
}
else if(isAvaible('Projects') && !globalProjectSync && !isProjectsLoaded && getLoggedUser()!=null)
{
$('#MainLoaderInner').html('Loading projects');
globalProjectSync=true;
if(typeof globalCRMSettings != 'undefined')
netLoadXSLT(globalCRMSettings.XSLTHref);
else
{
console.log("Error: globalCRMSettings is not defined");
loadNextApplication(false);
}
}
else if(isAvaible('Reports') && !globalReportsSync && !isReportsLoaded && getLoggedUser()!=null)
{
$('#MainLoaderInner').html('Loading Reports');
globalReportsSync=true;
if(typeof globalCRMSettings != 'undefined')
netLoadReportList(globalCRMSettings);
else
{
console.log("Error: globalCRMSettings is not defined");
loadNextApplication(false);
}
}
else if(isAvaible('Settings') && !globalSettingsSync && !isSettingsLoaded && getLoggedUser()!=null)
{
globalSettingsSync = true;
if(!isSettingsLoaded)
loadNextApplication(false);
if($('#ResourceSettingsList').children('.resourceSettings_item').length)
$('#ResourceSettingsList').children().eq(0).trigger('click');
}
else
{
if((isAvaible('CalDavZAP') && !isCalDAVLoaded) || (isAvaible('CardDavMATE') && !isCardDAVLoaded))
$('#MainLoader').fadeOut(1200, function(){$('#MainLoader').css('left','50px');});
if(isAvaible('CardDavMATE'))
{
globalCardDAVCollectionSync=false;
if(!isCardDAVLoaded)
isCardDAVLoaded=true;
}
if(isAvaible('CalDavZAP'))
{
globalCalDAVCollectionSync=false;
if(!isCalDAVLoaded)
isCalDAVLoaded=true;
}
if(isAvaible('Projects'))
{
globalProjectSync=false;
isProjectsLoaded = true;
}
if(isAvaible('Reports'))
{
globalReportsSync=false;
isReportsLoaded = true;
}
if(isAvaible('Settings'))
{
globalSettingsSync=false;
isSettingsLoaded = true;
}
}
}
function checkForApplication(inputApp)
{
if(!globalEnableAppSwitch || globalObjectLoading)
return false;
globalEnableAppSwitch=false;
globalActiveApp=inputApp;
var inputID = 'System'+inputApp;
$('.System').not('#'+inputID).each(function(){
$(this).animate({opacity : 0}, 666, function(){
/* XXX - System display:none changes
if($(this).attr('id').indexOf('CalDav')==-1)
$(this).css('display','none');
else*/
$(this).css('visibility','hidden');
});
});
/* XXX - System display:none changes
if(inputID.indexOf('CalDav')==-1)
$('#'+inputID).css('display','block').animate({opacity : 1}, 666, function(){globalEnableAppSwitch=true;});
else*/
$('#'+inputID).css('visibility','visible').animate({opacity : 1}, 666, function(){globalEnableAppSwitch=true;});
}
function getLoggedUser()
{
for(var i=0; i<globalAccountSettings.length;i++)
if(globalAccountSettings[i].href.indexOf(globalLoginUsername)!=-1)
return globalAccountSettings[i];
return globalAccountSettings[0];
}
function login()
{
$('#LoginLoader').fadeTo(1200, 1, function(){
globalLoginUsername=$('#LoginPage').find('[data-type="system_username"]').val();
globalLoginPassword=$('#LoginPage').find('[data-type="system_password"]').val();
loadConfig();
});
}
function logout(forceLogout)
{
if((typeof forceLogout=='undefined' || forceLogout==null ) && (
(isAvaible('CardDavMATE') && (!isCardDAVLoaded || globalCardDAVResourceSync)) ||
(isAvaible('CalDavZAP') && (!isCalDAVLoaded || globalCalDAVResourceSync)) ||
(isAvaible('Projects') && !isProjectsLoaded) ||
(isAvaible('Settings') && (!isSettingsLoaded || (globalSettingsSaving!='' && !dontSaveSettings))) ||
(isAvaible('CalDavZAP') && (globalLimitLoading!='' || globalLimitTodoLoading!=''))
))
{
globalPreventLogoutSync=true;
return false;
}
clearInterval(globalResourceIntervalID);
if(globalFirstLoadNextApp)
globalFirstLoadNextApp=false;
settingsLoaded=false;
ignoreServerSettings=false;
//save settings
checkBeforeClose(false);
globalResourceIntervalID=null;
globalLoginUsername='';
globalLoginPassword='';
globalXMLCache=null;
globalResourceNumber=0;
globalResourceNumberCount=0;
globalLoadedPrincipals=new Array();
globalEmailAddress='';
globalPreventLogoutSync=false;
globalSyncSettingsSave=false;
$(document.documentElement).unbind();
// reset page title
var tmpMatch = document.title.match('^(.*) \\[.*\\]$');
if(tmpMatch!=null)
document.title = tmpMatch[1];
$('#LoginPage').fadeTo(2000, 1, function(){
if(typeof isCalDAVLoaded!='undefined' && isCalDAVLoaded)
{
logoutCalDAV();
isCalDAVLoaded=false;
}
if(typeof isCardDAVLoaded!='undefined' && isCardDAVLoaded)
{
logoutCardDAV();
isCardDAVLoaded=false;
}
if(typeof isProjectsLoaded!='undefined' && isProjectsLoaded)
{
logoutProjects();
isProjectsLoaded = false;
}
if(typeof isReportsLoaded!='undefined' && isReportsLoaded)
{
logoutReports();
isReportsLoaded = false;
}
if(typeof isSettingsLoaded!='undefined' && isSettingsLoaded)
{
logoutSettings();
isSettingsLoaded = false;
}
for(var i=globalAccountSettings.length-1;i>=0;i--)
if(globalAccountSettings[i].type=='network')
globalAccountSettings.splice(i, 1);
if(typeof globalDemoMode=='undefined')
{
$('[data-type="system_username"]').val('').change();
$('[data-type="system_password"]').val('').change();
}
$('.integration_d').hide();
isUserLogged=false;
if(globalSettings.defaultactiveapp.value==null)
{
if(isAvaible('CalDavZAP'))
globalActiveApp='CalDavZAP';
else if(isAvaible('CardDavMATE'))
globalActiveApp='CardDavMATE';
}
else
globalActiveApp=globalSettings.defaultactiveapp.value;
resetSettings();
if(isAvaible('CardDavMATE'))
mainCardDAV();
if(isAvaible('CalDavZAP'))
mainCalDAV();
if(isAvaible('Settings'))
mainSettings();
if(isAvaible('Projects'))
mainProjects();
if(isAvaible('Reports'))
mainReports();
init();
});
}
function init()
{
// browser check
if(($.browser.msie && parseInt($.browser.version, 10)<9) || $.browser.opera)
$('#login_message').css('display','').text(localization[globalInterfaceLanguage].unsupportedBrowser);
if(typeof globalDemoMode!='undefined')
{
if(typeof globalDemoMode.userName!=undefined)
$('[data-type="system_username"]').val(globalDemoMode.userName).change();
if(typeof globalDemoMode.userPassword!=undefined)
$('[data-type="system_password"]').val(globalDemoMode.userPassword).change();
}
loadConfig();
}
function run()
{
isUserLogged=true;
window.onfocus=function(){globalWindowFocus=true;}
window.onblur=function(){if(globalSettings.backgroundsync.value==false) globalWindowFocus=false;}
$('#LoginPage').fadeOut(2000);
if(typeof globalAccountSettings=='undefined')
{
console.log('Error: \'no account configured\': see config.js!');
return false;
}
if(typeof globalNewVersionNotifyUsers=='undefined' || globalNewVersionNotifyUsers!=null)
netVersionCheck();
document.title+=' ['+globalAccountSettings[0].userAuth.userName+']';
// Automatically detect crossDomain settings
var detectedHref=location.protocol+'//'+location.hostname+(location.port ? ':'+location.port : '');
for(var i=0;i<globalAccountSettings.length;i++)
{
if(globalAccountSettings[i].crossDomain==undefined || typeof globalAccountSettings[i].crossDomain!='boolean')
{
if(globalAccountSettings[i].href.indexOf(detectedHref)==0)
globalAccountSettings[i].crossDomain=false;
else
globalAccountSettings[i].crossDomain=true;
console.log("Info: [userAccount: '"+globalAccountSettings[i].href.replace('\/\/', '//'+globalAccountSettings[i].userAuth.userName+'@')+"']: crossDomain set to: '"+(globalAccountSettings[i].crossDomain==true ? 'true' : 'false')+"'");
}
}
if(typeof globalAvailableAppsArray!='undefined' && globalAvailableAppsArray!=null && globalAvailableAppsArray.length>1) {
// show integration banner
$('.integration_d').css('display', 'block');
// show app buttons for available apps only
if(globalAvailableAppsArray.indexOf('CalDavZAP')!=-1)
$('#intCaldav').attr('title',localization[globalInterfaceLanguage].txtCalendars).css('display', 'block').find('.int_error').attr('alt',localization[globalInterfaceLanguage].txtError);
if(globalAvailableAppsArray.indexOf('CalDavTODO')!=-1)
$('#intCaldavTodo').attr('title',localization[globalInterfaceLanguage].txtTodos).css('display', 'block').find('.int_error').attr('alt',localization[globalInterfaceLanguage].txtError);
if(globalAvailableAppsArray.indexOf('CardDavMATE')!=-1)
$('#intCarddav').attr('title',localization[globalInterfaceLanguage].txtContacts).css('display', 'block').find('.int_error').attr('alt',localization[globalInterfaceLanguage].txtError);
if(globalAvailableAppsArray.indexOf('Projects')!=-1)
$('#intProjects').attr('title',localization[globalInterfaceLanguage].txtProjects).css('display', 'block').find('.int_error').attr('alt',localization[globalInterfaceLanguage].txtError);
if(globalAvailableAppsArray.indexOf('Reports')!=-1)
$('#intReports').attr('title',localization[globalInterfaceLanguage].txtReports).css('display', 'block').find('.int_error').attr('alt',localization[globalInterfaceLanguage].txtError);
if(globalAvailableAppsArray.indexOf('Settings')!=-1)
$('#intSettings').attr('title',localization[globalInterfaceLanguage].txtSettings).css('display', 'block').find('.int_error').attr('alt',localization[globalInterfaceLanguage].txtError);
// show the refresh button
if(typeof globalEnableRefresh==='boolean' && globalEnableRefresh && (globalAvailableAppsArray.indexOf('CalDavZAP')!=-1 || globalAvailableAppsArray.indexOf('CalDavTODO')!=-1 || globalAvailableAppsArray.indexOf('CardDavMATE')!=-1)) {
$('#intRefresh').attr('title',localization[globalInterfaceLanguage].txtRefresh).find('.int_error').attr('alt',localization[globalInterfaceLanguage].txtError);
$('#intRefresh').prev().addBack().css('display', 'block');
}
}
$('#cacheDialogText').text(localization[globalInterfaceLanguage].txtCacheText);
$('#cacheDialogButton').attr('value',localization[globalInterfaceLanguage].txtCacheButton);
}
function loadConfig()
{
if(isUserLogged)// !!!!!! kedy moze toto nastat? nexapem ...
return false;
var configLoaded=true;
// Automatically detect crossDomain settings
var detectedHref=location.protocol+'//'+location.hostname+(location.port ? ':'+location.port : '');
// check username and password against the server and create config from globalNetworkCheckSettings
if(typeof globalNetworkCheckSettings!='undefined' && globalNetworkCheckSettings!=null)
{
if(globalLoginUsername=='' || globalLoginPassword=='')
{
$('#LoginPage').fadeTo(500, 1, function(){if(typeof globalDemoMode=='undefined') $('[data-type="system_username"]').focus()});
$('#LoginLoader').fadeOut(1200);
return false;
}
else
{
if(globalNetworkCheckSettings.crossDomain==undefined || typeof globalNetworkCheckSettings.crossDomain!='boolean')
{
if(globalNetworkCheckSettings.href.indexOf(detectedHref)==0)
globalNetworkCheckSettings.crossDomain=false;
else
globalNetworkCheckSettings.crossDomain=true;
console.log("Info: [globalNetworkCheckSettings: '"+globalNetworkCheckSettings.href+"']: crossDomain set to: '"+(globalNetworkCheckSettings.crossDomain==true ? 'true' : 'false')+"'");
}
// !!!! preco sa riesi s logout buttonom prave tu?
// show the logout button
if(typeof globalAvailableAppsArray!='undefined' && globalAvailableAppsArray!=null && globalAvailableAppsArray.length>1) {
$('#intLogout').prev().addBack().css('display', 'block');
$('#intLogout').attr('title',localization[globalInterfaceLanguage].altLogout);
}
else {
$('#Logout').css('display', 'block');
}
netCheckAndCreateConfiguration(globalNetworkCheckSettings);
return true;
}
}
// load the configuration XML(s) from the network
if(typeof globalNetworkAccountSettings!='undefined' && globalNetworkAccountSettings!=null)
{
if(globalLoginUsername=='' || globalLoginPassword=='')
{
$('#LoginPage').fadeTo(500, 1, function(){if(typeof globalDemoMode=='undefined') $('[data-type="system_username"]').focus()});
$('#LoginLoader').fadeOut(1200);
return false;
}
else
{
if(globalNetworkAccountSettings.crossDomain==undefined || typeof globalNetworkAccountSettings.crossDomain!='boolean')
{
if(globalNetworkAccountSettings.href.indexOf(detectedHref)==0)
globalNetworkAccountSettings.crossDomain=false;
else
globalNetworkAccountSettings.crossDomain=true;
console.log("Info: [globalNetworkAccountSettings: '"+globalNetworkAccountSettings.href+"']: crossDomain set to: '"+(globalNetworkAccountSettings.crossDomain==true ? 'true' : 'false')+"'");
}
// !!!! preco sa riesi s logout buttonom prave tu?
// show the logout button
if(typeof globalAvailableAppsArray!='undefined' && globalAvailableAppsArray!=null && globalAvailableAppsArray.length>1) {
$('#intLogout').prev().addBack().css('display', 'block');
$('#intLogout').attr('title',localization[globalInterfaceLanguage].altLogout);
}
else {
$('#Logout').css('display', 'block');
}
netLoadConfiguration(globalNetworkAccountSettings);
return true;
}
}
if((typeof globalNetworkAccountSettings=='undefined' || globalNetworkAccountSettings==null) && (typeof globalNetworkCheckSettings=='undefined' || globalNetworkCheckSettings==null) && (typeof globalAccountSettings!='undefined' && globalAccountSettings!=null) && globalAccountSettings.length>0)
{
var delegCount=0, delegIndex=0;
if(!isDelegationLoaded)
{
for(var i=0; i<globalAccountSettings.length; i++)
if((typeof globalAccountSettings[i].delegation=='boolean' && globalAccountSettings[i].delegation) || (globalAccountSettings[i].delegation instanceof Array && globalAccountSettings[i].delegation.length>0))
delegIndex=i;
for(var i=0; i<globalAccountSettings.length; i++)
if((typeof globalAccountSettings[i].delegation=='boolean' && globalAccountSettings[i].delegation) || (globalAccountSettings[i].delegation instanceof Array && globalAccountSettings[i].delegation.length>0))
{
delegCount++;
DAVresourceDelegation(globalAccountSettings[i], i, delegIndex);
}
if(delegCount>0)
isDelegationLoaded = true;
}
if(delegCount==0 && !isDelegationLoaded)
{
// start the client
if(isAvaible('CardDavMATE'))
runCardDAV();
if(isAvaible('CalDavZAP'))
runCalDAV();
if(isAvaible('Projects'))
runProjects();
if(isAvaible('Settings'))
runSettings();
globalResourceNumber=globalAccountSettings.length;
loadAllResources();
}
}
}
function globalMain()
{
for(var prop in globalSettings)
globalDefinedSettings.push(prop);
if(typeof globalEnabledApps=='undefined' || globalEnabledApps==null)
{
if(typeof isCalDAVAvaible!='undefined' && isCalDAVAvaible!=null && isCalDAVAvaible)
{
globalAvailableAppsArray[globalAvailableAppsArray.length]='CalDavZAP';
globalAvailableAppsArray[globalAvailableAppsArray.length]='CalDavTODO';
}
if(typeof isCardDAVAvaible!='undefined' && isCardDAVAvaible!=null && isCardDAVAvaible)
globalAvailableAppsArray[globalAvailableAppsArray.length]='CardDavMATE';
if(typeof isSettingsAvaible!='undefined' && isSettingsAvaible!=null && isSettingsAvaible)
globalAvailableAppsArray[globalAvailableAppsArray.length]='Settings';
if(typeof isProjectsAvaible!='undefined' && isProjectsAvaible!=null && isProjectsAvaible)
globalAvailableAppsArray[globalAvailableAppsArray.length]='Projects';
if(typeof isReportsAvaible!='undefined' && isReportsAvaible!=null && isReportsAvaible)
globalAvailableAppsArray[globalAvailableAppsArray.length]='Reports';
}
else
{
if(typeof isCalDAVAvaible!='undefined' && isCalDAVAvaible!=null && isCalDAVAvaible && (globalEnabledApps.indexOf('CalDavZAP')!=-1 || globalEnabledApps.indexOf('CalDavTODO')!=-1 ))
{
globalAvailableAppsArray[globalAvailableAppsArray.length]='CalDavZAP';
globalAvailableAppsArray[globalAvailableAppsArray.length]='CalDavTODO';
}
if(typeof isCardDAVAvaible!='undefined' && isCardDAVAvaible!=null && isCardDAVAvaible && globalEnabledApps.indexOf('CardDavMATE')!=-1)
globalAvailableAppsArray[globalAvailableAppsArray.length]='CardDavMATE';
if(typeof isSettingsAvaible!='undefined' && isSettingsAvaible!=null && isSettingsAvaible && globalEnabledApps.indexOf('Settings')!=-1)
globalAvailableAppsArray[globalAvailableAppsArray.length]='Settings';
if(typeof isProjectsAvaible!='undefined' && isProjectsAvaible!=null && isProjectsAvaible && globalEnabledApps.indexOf('Projects')!=-1)
globalAvailableAppsArray[globalAvailableAppsArray.length]='Projects';
if(typeof isReportsAvaible!='undefined' && isReportsAvaible!=null && isReportsAvaible)
globalAvailableAppsArray[globalAvailableAppsArray.length]='Reports';
}
if(globalAvailableAppsArray.length>1)
isIntegrated=true;
if(globalSettings.defaultactiveapp.value==null)
{
if(isAvaible('CardDavMATE'))
globalActiveApp='CardDavMATE';
else if(isAvaible('CalDavZAP'))
globalActiveApp='CalDavZAP';
}
else
globalActiveApp=globalSettings.defaultactiveapp.value;
if(isAvaible('CardDavMATE'))
{
// Modify available inputs before making additional changes to vCard form
if(typeof globalDisabledContactAttributes!='undefined' && globalDisabledContactAttributes instanceof Array)
for(var i=0;i<globalDisabledContactAttributes.length;i++)
$('#vCardTemplate').find('[data-attr-name="'+jqueryEscapeSelector(globalDisabledContactAttributes[i])+'"]').remove();
// hook for vCard template extension
if(typeof(globalContactsExtInitMain)=='function')
globalContactsExtInitMain($('#vCardTemplate'));
}
/*************************** BAD HACKS SECTION ***************************/
// here we fix the cross OS/cross broser problems (unfixable in pure CSS)
if($.browser.webkit && !!window.chrome) /* Chrome */
{
if(navigator.platform.toLowerCase().indexOf('win')==0) /* Windows version */
{
$('#LoginPage, #vCardTemplate, #event_details_template, #todo_details_template, #EditorBoxSettings').find('input').css('text-indent', '2px');
$('#LoginPage, #vCardTemplate, #event_details_template, #todo_details_template, #EditorBoxSettings').find('select').css({'padding-left': '0px', 'padding-right': '13px'});
}
else /* non-Windows version */
$('#LoginPage, #vCardTemplate, #event_details_template, #todo_details_template, #EditorBoxSettings').find('input').css('text-indent', '1px');
}
else if($.browser.safari)
{
$('#LoginPage, #vCardTemplate, #event_details_template, #todo_details_template, #EditorBoxSettings').find('textarea').addClass('safari_hack');
$('#LoginPage, #vCardTemplate, #event_details_template, #todo_details_template, #EditorBoxSettings').find('input').addClass('safari_hack');
}
else if($.browser.msie) /* IE */
{
if(parseInt($.browser.version, 10)==10) /* IE 10 (because there are no more conditional comments) */
{
$('select').css({'padding-top': '1px', 'padding-left': '0px', 'padding-right': '0px'});
$('textarea').css('padding-top', '3px');
$('input[type=button]').css('padding-top', '2px');
}
// ADD SVG to login screen
var newSVG=$(SVG_select_login).attr('data-type', 'select_icon').css({'pointer-events': 'none', 'z-index': '1', 'display': 'inline', 'margin-left': '-19px', 'vertical-align': 'top', 'background-color': '#ffffff'}); // background-color = stupid IE9 bug
$('#Login').find('select[data-type="language"]').after($($('<div>').append($(newSVG).clone()).html()));
}
else if($.browser.mozilla)
{
// ADD SVG to login screen
var newSVG=$(SVG_select_login).attr('data-type', 'select_icon').css({'pointer-events': 'none', 'z-index': '1', 'display': 'inline', 'margin-left': '-19px', 'vertical-align': 'top', 'background-color': '#ffffff'}); // background-color = stupid IE9 bug
$('#Login').find('select[data-type="language"]').after($($('<div>').append($(newSVG).clone()).html()));
}
/*************************** END OF BAD HACKS SECTION ***************************/
/* language selector */
var lang_num=0;
var language_option=$('#Login').find('[data-type="language"]').find('option');
$('#Login').find('[data-type="language"]').html('');
if(typeof globalInterfaceCustomLanguages!='undefined' && globalInterfaceCustomLanguages.length!=undefined && globalInterfaceCustomLanguages.length>0)
{
for(var i=0; i<globalInterfaceCustomLanguages.length; i++)
if(localization[globalInterfaceCustomLanguages[i]]!=undefined)
{
var tmp=language_option;
tmp.attr('data-type',globalInterfaceCustomLanguages[i]);
tmp.text(localization[globalInterfaceCustomLanguages[i]]['_name_']);
$('#Login').find('[data-type="language"]').append(tmp.clone());
lang_num++;
}
}
if(lang_num==0) // no language option, use the default (all languages from localization.js)
for(var loc in localization)
{
var tmp=language_option;
tmp.attr('data-type',loc);
tmp.text(localization[loc]['_name_']); // translation
$('#Login').find('[data-type="language"]').append(tmp.clone());
}
// select the globalInterfaceLanguage in the interface
$('[data-type="language"]').find('[data-type='+globalInterfaceLanguage+']').prop('selected',true);
// set login screen logo
if(isAvaible('CalDavZAP') && !isAvaible('CardDavMATE'))
{
$('[data-size="login_logo"]').find('img').attr('src', "images/cdz_logo.svg");
$('#LoginPage').find('.footer').text('CalDavZAP - the open source CalDAV web client');
}
else if(isAvaible('CardDavMATE') && !isAvaible('CalDavZAP'))
{
$('[data-size="login_logo"]').find('img').attr('src', "images/cdm_logo.svg");
$('#LoginPage').find('.footer').text('CardDavMATE - the open source CardDAV web client');
}
else
{
$('#Login').css('margin-top', '41px');
$('[data-size="login_logo"]').find('img').attr('src', "images/infcloud_logo.svg");
$('#LoginPage').find('.footer').text('InfCloud - the open source CalDAV/CardDAV web client');
}
$('#LoginPage').find('.footer').attr('title', globalVersion);
if(isAvaible('CardDavMATE'))
globalMainCardDAV();
if(isAvaible('CalDavZAP'))
globalMainCalDAV();
if(isAvaible('Projects'))
globalMainProjects();
if(isAvaible('Reports'))
globalMainReports();
if(isAvaible('Settings'))
globalMainSettings();
if(isAvaible('CardDavMATE'))
mainCardDAV();
if(isAvaible('CalDavZAP'))
mainCalDAV();
if(isAvaible('Projects'))
mainProjects();
if(isAvaible('Reports'))
mainReports();
if(isAvaible('Settings'))
mainSettings();
init();
}
function saveSettings(isFormSave)
{
if(globalSettings.islastdefaultactiveapp.value)
globalSettings.defaultactiveapp.value=globalActiveApp;
globalSettings.version.value=globalSettingsVersion;
var rex = new RegExp('^(https?://)([^@/]+(?:@[^@/]+)?)@(.*)');
if(isAvaible('CalDavZAP'))
{
globalSettings.activecalendarcollections.value.splice(0, globalSettings.activecalendarcollections.value.length);
globalSettings.activetodocollections.value.splice(0, globalSettings.activetodocollections.value.length);
globalSettings.todolistfilterselected.value.splice(0, globalSettings.todolistfilterselected.value.length);
for(var i=0;i<globalVisibleCalDAVCollections.length;i++)
{
var uidParts=globalVisibleCalDAVCollections[i].match(rex)
globalSettings.activecalendarcollections.value.splice(globalSettings.activecalendarcollections.value.length , 0, uidParts[1]+uidParts[3]);
}
for(var i=0;i<globalVisibleCalDAVTODOCollections.length;i++)
{
var uidParts=globalVisibleCalDAVTODOCollections[i].match(rex);
globalSettings.activetodocollections.value.splice(globalSettings.activetodocollections.value.length , 0, uidParts[1]+uidParts[3]);
}
if(globalSettings.islastactiveview.value)
{
var view= $('#calendar').fullCalendar('getView');
globalSettings.activeview.value=view.name;
}
if(globalSettings.islasttimezone.value)
globalSettings.timezone.value=globalSessionTimeZone;
var uidSelected=$('#ResourceCalDAVList').find('.resourceCalDAV_item_selected').attr('data-id');
if(uidSelected!=undefined && uidSelected!='')
{
var par=uidSelected.split('/');
globalSettings.calendarselected.value=par[par.length-3]+'/'+par[par.length-2]+'/';
}
uidSelected=$('#ResourceCalDAVTODOList').find('.resourceCalDAV_item_selected').attr('data-id');
if(uidSelected!=undefined && uidSelected!='')
{
var par=uidSelected.split('/');
globalSettings.todocalendarselected.value=par[par.length-3]+'/'+par[par.length-2]+'/';
}
var filterArray = $('.fc-filter-option-selected');
for(var i=0; i<filterArray.length; i++)
globalSettings.todolistfilterselected.value.splice(globalSettings.todolistfilterselected.value.length,0,$($('.fc-filter-option-selected')[i]).attr('data-type'));
}
if(isAvaible('CardDavMATE'))
{
globalSettings.activeaddressbookcollections.value.splice(0, globalSettings.activeaddressbookcollections.value.length);
var visAddrs = dataGetChecked('#ResourceCardDAVList');
for(var i=0;i<visAddrs.length;i++)
{
if(visAddrs[i]!='undefined')
{
var uidPart=visAddrs[i].match(RegExp('^(https?://)(.*)', 'i'))[1];
var uidPart2= visAddrs[i].match(RegExp('^(https?://)(.*)', 'i'))[2].split('@')[2];
globalSettings.activeaddressbookcollections.value.splice(globalSettings.activeaddressbookcollections.value.length , 0, uidPart+uidPart2);
}
}
if($('#ResourceCardDAVList').find('.group.resourceCardDAV_selected').length>0)
var uidASelected=$('#ResourceCardDAVList').find('.group.resourceCardDAV_selected').attr('data-id');
else if($('#ResourceCardDAVList').find('.resourceCardDAV_selected').length>0)
var uidASelected=$('#ResourceCardDAVList').find('.resourceCardDAV_selected').attr('data-id');
else
var uidASelected='';
if(uidASelected!=undefined && uidASelected!='')
globalSettings.addressbookselected.value=uidASelected;
}
if(isAvaible('Settings') && isFormSave)
return applyFormSettings();
else
return globalSettings;
}
function loadXMLSetings(settingsXML)
{
$(settingsXML).children().each(
function(ind,elm)
{
var type = $(elm).attr('type');
var locked = typeof $(elm).attr('locked')!='undefined'&&$(elm).attr('locked')!=null&&$(elm).attr('locked')=='true' ? true : false;
if(typeof globalSettings[$(elm).prop('tagName').toLowerCase()] == 'undefined')
return true;
if(locked)
globalSettings[$(elm).prop('tagName').toLowerCase()].locked=true;
if($(elm).children().length>0)
{
globalSettings[$(elm).prop('tagName').toLowerCase()].value = new Array();
$(elm).children().each(function(pind,pelm)
{
if($(elm).prop('tagName').toLowerCase() == 'urihandlerprofile')
{
globalSettings[$(elm).prop('tagName').toLowerCase()].value = {};
globalSettings[$(elm).prop('tagName').toLowerCase()].value[$(pelm).text().toLowerCase()] = $(pelm).attr('url');
}
else if($(elm).prop('tagName').toLowerCase() == 'addresscountryequivalence')
{
var eqObject = {};
eqObject['country'] = $(pelm).attr('name');
eqObject['regex'] = $(pelm).attr('regex');
globalSettings[$(elm).prop('tagName').toLowerCase()].value.push(eqObject);
}
else if($(elm).prop('tagName').toLowerCase() == 'compatibility')
{
globalSettings[$(elm).prop('tagName').toLowerCase()].value = {};
globalSettings[$(elm).prop('tagName').toLowerCase()].value[$(pelm).attr('name')] = new Array();
$(pelm).children().each(function(rind,relm)
{
globalSettings[$(elm).prop('tagName').toLowerCase()].value[$(pelm).attr('name')].push($(relm).text());
});
}
else if($(pelm).text()!='')
{
switch(type)
{
case 'integer':
globalSettings[$(elm).prop('tagName').toLowerCase()].value.push(parseInt($(pelm).text(),10));
break;
case 'string':
if($(pelm).text()!='null')
globalSettings[$(elm).prop('tagName').toLowerCase()].value.push($(pelm).text());
else
globalSettings[$(elm).prop('tagName').toLowerCase()].value.push(null);
break;
case 'boolean':
if($(pelm).text() == 'true')
globalSettings[$(elm).prop('tagName').toLowerCase()].value.push(true);
else
globalSettings[$(elm).prop('tagName').toLowerCase()].value.push(false);
break;
default:
break;
}
}
});
}
else if($(elm).text()!='')
{
switch(type)
{
case 'integer':
globalSettings[$(elm).prop('tagName').toLowerCase()].value = parseInt($(elm).text(),10);
break;
case 'string':
if($(elm).text()!='null')
globalSettings[$(elm).prop('tagName').toLowerCase()].value = $(elm).text();
else
globalSettings[$(elm).prop('tagName').toLowerCase()].value = null;
break;
case 'boolean':
if($(elm).text() == 'true')
globalSettings[$(elm).prop('tagName').toLowerCase()].value = true;
else if($(elm).text() == 'false')
globalSettings[$(elm).prop('tagName').toLowerCase()].value = false;
break;
default:
break;
}
}
});
}
function applyServerSettings(inputSettings)
{
if(typeof inputSettings.activecalendarcollections == 'undefined' || inputSettings.activecalendarcollections==null)
inputSettings.activecalendarcollections = new Array();
if(typeof inputSettings.activetodocollections == 'undefined' || inputSettings.activetodocollections==null)
inputSettings.activetodocollections = new Array();
if(typeof inputSettings.loadedcalendarcollections == 'undefined' || inputSettings.loadedcalendarcollections==null)
{
inputSettings.loadedcalendarcollections = new Array();
if(isAvaible('CalDavZAP'))
$('#showUnloadedCalendars').css('display','none');
}
if(typeof inputSettings.loadedtodocollections == 'undefined' || inputSettings.loadedtodocollections==null)
{
inputSettings.loadedtodocollections = new Array();
if(isAvaible('CalDavZAP'))
$('#showUnloadedCalendarsTODO').css('display','none');
}
if(typeof inputSettings.activeaddressbookcollections == 'undefined' || inputSettings.activeaddressbookcollections==null)
inputSettings.activeaddressbookcollections = new Array();
if(typeof inputSettings.loadedaddressbookcollections == 'undefined' || inputSettings.loadedaddressbookcollections==null)
{
inputSettings.loadedaddressbookcollections = new Array();
if(isAvaible('CardDavMATE'))
$('#showUnloadedAddressbooks').css('display','none');
}
transformSettings(inputSettings);
for(var prop in inputSettings)
{
if(globalDefinedSettings.indexOf(prop)==-1 || (typeof globalPreviousSupportedSettings !='undefined' && globalPreviousSupportedSettings.indexOf(prop)==-1))
{
if(globalDefinedSettings.indexOf(prop)==-1)
console.log('Warning: Unsupported property: \''+prop+'\' (you can safely ignore this message)');
continue;
}
if(typeof globalSettings[prop] !='undefined' && !globalSettings[prop].locked)
globalSettings[prop].value=inputSettings[prop];
}
}
function transformSettings(settings) {
if(!settings.version) {
settings.version = 1;
}
while(settings.version<globalSettingsVersion) {
console.log('Warning: Detected outdated server settings (version ' + settings.version++ +') - transforming to version ' + settings.version);
switch(settings.version) {
case 2:
if(typeof globalActiveCalendarCollections!='undefined' && globalActiveCalendarCollections!=null)
settings.activecalendarcollections=globalActiveCalendarCollections.slice();
else
settings.activecalendarcollections.splice(0, settings.activecalendarcollections.length);
if(typeof globalActiveTodoCollections!='undefined' && globalActiveTodoCollections!=null)
settings.activetodocollections=globalActiveTodoCollections.slice();
else
settings.activetodocollections.splice(0, settings.activetodocollections.length);
if(typeof globalLoadedCalendarCollections!='undefined' && globalLoadedCalendarCollections!=null)
settings.loadedcalendarcollections=globalLoadedCalendarCollections.slice();
else
settings.loadedcalendarcollections.splice(0, settings.loadedcalendarcollections.length);
if(typeof globalLoadedTodoCollections!='undefined' && globalLoadedTodoCollections!=null)
settings.loadedtodocollections=globalLoadedTodoCollections.slice();
else
settings.loadedtodocollections.splice(0, settings.loadedtodocollections.length);
if(typeof globalActiveAddressbookCollections!='undefined' && globalActiveAddressbookCollections!=null)
settings.activeaddressbookcollections=globalActiveAddressbookCollections.slice();
else
settings.activeaddressbookcollections.splice(0, settings.activeaddressbookcollections.length);
if(typeof globalLoadedAddressbookCollections!='undefined' && globalLoadedAddressbookCollections!=null)
settings.loadedaddressbookcollections=globalLoadedAddressbookCollections.slice();
else
settings.loadedaddressbookcollections.splice(0, settings.loadedaddressbookcollections.length);
if(typeof globalContactStoreFN!='undefined' && globalContactStoreFN!=null)
settings.contactstorefn=globalContactStoreFN.slice();
else
settings.contactstorefn=['prefix', ' last', ' middle', ' first', ' suffix'];
break;
case 3:
settings.collectiondisplay=(typeof globalCollectionDisplay!='undefined' && globalCollectionDisplay!=null && globalCollectionDisplay!='') ? globalCollectionDisplay : (
(typeof globalGroupContactsByCompanies!='undefined' && globalGroupContactsByCompanies) ?
[{label: '{Name}', value: {company: ['{Company}', ' [{Department}]'], personal: ['{LastName}', ' {MiddleName}', ' {FirstName}']}}, {label: '{JobTitle}', value: ['{JobTitle}']}, {label: '{Email}', value: ['{Email[:0]}']}, {label: '{Phone} 1', value: ['{Phone[:0]}']}, {label: '{Phone} 2', value: ['{Phone[:1]}']}, {label: '{NoteText}', value: ['{NoteText}']}] :
[{label: '{Name}', value: ['{LastName}', ' {MiddleName}', ' {FirstName}']}, {label: '{Company} [{Department}]', value: ['{Company}', ' [{Department}]']}, {label: '{JobTitle}', value: ['{JobTitle}']}, {label: '{Email}', value: ['{Email[:0]}']}, {label: '{Phone} 1', value: ['{Phone[:0]}']}, {label: '{Phone} 2', value: ['{Phone[:1]}']}, {label: '{NoteText}', value: ['{NoteText}']}]
);
settings.collectionsort=(typeof globalCollectionSort!='undefined' && globalCollectionSort!=null && globalCollectionSort!='') ? globalCollectionSort : '';
break;
default:
break;
}
}
}
function loadSettings(strobj, fromServer, syncMode)
{
if(settingsLoaded && !syncMode)
return false;
try
{
objNew = jQuery.parseJSON(strobj);
if(typeof objNew=='object')
{
if(!syncMode && typeof globalSettingsXML!='undefined' && globalSettingsXML!=null && globalSettingsXML!='')
loadXMLSetings($(globalSettingsXML));
if(fromServer)
applyServerSettings(objNew);
// $.extend(globalSettings,objNew);
}
}
catch(err)
{
console.log('load settings - JSON parsing error: '+err);
delete globalSettings.version.value;
loadSettings(JSON.stringify(globalSettings), false, false);
return false;
}
if(syncMode)
return false;
if(isAvaible('CalDavZAP'))
{
for(var i=0;i<globalSettings.timezonesenabled.value.length;i++)
if(timeZonesEnabled.indexOf(globalSettings.timezonesenabled.value[i])==-1)
timeZonesEnabled.push(globalSettings.timezonesenabled.value[i]);
if(globalSettings.timezonesupport.value)
{
globalSessionTimeZone=globalSettings.timezone.value;
if(globalSessionTimeZone != null && timeZonesEnabled.indexOf(globalSessionTimeZone)==-1)
timeZonesEnabled.push(globalSessionTimeZone);
}
else
{
globalSessionTimeZone = 'local';
timeZonesEnabled.push('local');
}
initTimepicker(globalSettings.ampmformat.value);
if(globalSettings.timeformatagenda.value==null)
{
if(globalSettings.ampmformat.value)
globalSettings.timeformatagenda.value='h:mm TT{ - h:mm TT}';
else
globalSettings.timeformatagenda.value='H:mm{ - H:mm}';
}
if(globalSettings.timeformatbasic.value==null)
{
if(globalSettings.ampmformat.value)
globalSettings.timeformatbasic.value = 'h:mmT{-h:mmT}';
else
globalSettings.timeformatbasic.value = 'H:mm{-H:mm}';
}
if(globalSettings.appleremindersmode.value)
{
if(globalSettings.todolistfilterselected.value.indexOf('filterAction')==-1 && globalSettings.todolistfilterselected.value.indexOf('filterCompleted')==-1)
{
if(globalSettings.todolistfilterselected.value.indexOf('filterProgress')!=-1)
globalSettings.todolistfilterselected.value[globalSettings.todolistfilterselected.value.indexOf('filterProgress')] = 'filterAction';
if(globalSettings.todolistfilterselected.value.indexOf('filterCanceled')!=-1)
globalSettings.todolistfilterselected.value[globalSettings.todolistfilterselected.value.indexOf('filterCanceled')] = 'filterAction';
}
}
if(globalSettings.eventstartfuturelimit.value == null)
{
var now=new Date();
globalToLoadedLimit = new Date(now.getFullYear(), now.getMonth()+12, 1, 0, 0, 0);
globalToLoadedLimit.setMilliseconds(0);
globalBeginFuture = new Date(globalToLoadedLimit.getTime());
globalBeginFuture.setDate(globalBeginFuture.getDate()+14);
globalToLoadedLimitTodo = new Date(now.getFullYear(), now.getMonth()+12, 1, 0, 0, 0);
globalToLoadedLimitTodo.setMilliseconds(0);
}
if(globalSettings.enablekbnavigation.value!==false)
initKbTodoNavigation();
initFullCalendar();
initTodoList();
$('#SystemCalDavZAP .fc-header-title').css('width', $('#main_h_placeholder').width()-$('#SystemCalDavZAP .fc-header-left').outerWidth()-$('#SystemCalDavZAP .fc-header-right').outerWidth());
$('#ResourceCalDAVList, #ResourceCalDAVTODOList').css('bottom',(globalSettings.timezonesupport.value ? 20 : 0));
$('#alertBox').css('left', ($(window).width()/2)-($('#alertBox').width()/2));
}
if(isAvaible('CardDavMATE'))
{
// set ABListTableLayout
globalRefAbListTableHeader = $('#ABListTable').find('.ablist_table_header');
var colgroups = $('#ABListTable').find('colgroup');
for(var i=0; i<getDataColumnCount(); i++) {
globalRefAbListTableHeader.append('<th>');
colgroups.append('<col>');
}
globalRefAbListTableHeader.children().slice(globalFixedContactDataColumnsCount).each(function(ind) {
$(this).text(getDataColumnLabelAtIndex(ind));
});
globalRefABListTableCols=$('#ABListTable').find('colgroup').first().children();
globalRefABListInnerTableCols=$('#ABListTableInner').find('colgroup').children();
$('#ABListTable').find('.ablist_table_container').children().attr('colspan', getDataColumnCount()+globalFixedContactDataColumnsCount);
globalRefABListTable.children('.ablist_header').children().attr('colspan', getDataColumnCount()+globalFixedContactDataColumnsCount);
if(!globalOrigABListHeader) {
globalOrigABListHeader=globalRefABListTable.children('.ablist_header').remove();
}
if(!globalOrigABListItem) {
globalOrigABListItem=globalRefABListTable.children('.ablist_item').remove();
}
if(globalSettings.enablekbnavigation.value!==false)
initKbAddrNavigation();
applyAddrSettings(globalTranslVcardTemplate);
applyAddrSettings($('#vCardEditor'));
}
if(isAvaible('Projects'))
if(globalSettings.enablekbnavigation.value!==false)
initKbProjectNavigation();
settingsLoaded=true;
if(!isAvaible(globalSettings.defaultactiveapp.value))
globalActiveApp = globalAvailableAppsArray[0];
else
globalActiveApp = globalSettings.defaultactiveapp.value;
}
function checkForLoadedCollections(inputSettings)
{
var val='', triggerSync=true;
globalLoadedCollectionsNumber=0;
globalLoadedCollectionsCount=0;
if(globalSettingsSaving=='event')
{
hideUnloadedCollections('event');
val = inputSettings.loadedcalendarcollections.value;
if(val.length>0)
globalLoadedCollectionsNumber+=$(val).not(globalSettings.loadedcalendarcollections.value).length;
else
globalLoadedCollectionsNumber++;
if($(globalSettings.loadedcalendarcollections.value).not(val).length>0)
{
if(globalLoadedCollectionsNumber==0)
{
triggerSync=false;
globalFirstHideLoader=false;
}
var unloadArray = $(globalSettings.loadedcalendarcollections.value).not(val);
unloadCalDAVCollection(unloadArray.toArray(),true);
}
if(triggerSync)
addLoadCalDAVCollection(val, true);
globalSettings.loadedcalendarcollections.value = val;
}
else if(globalSettingsSaving=='todo')
{
hideUnloadedCollections('todo');
val = inputSettings.loadedtodocollections.value;
if(val.length>0)
globalLoadedCollectionsNumber+=$(val).not(globalSettings.loadedtodocollections.value).length;
else
globalLoadedCollectionsNumber++;
if($(globalSettings.loadedtodocollections.value).not(val).length>0)
{
if(globalLoadedCollectionsNumber==0)
{
triggerSync=false;
globalFirstHideLoader=false;
}
var unloadArray = $(globalSettings.loadedtodocollections.value).not(val);
unloadCalDAVCollection(unloadArray.toArray(),false);
}
if(triggerSync)
addLoadCalDAVCollection(val, false);
globalSettings.loadedtodocollections.value = val;
}
else if(globalSettingsSaving=='addressbook')
{
hideUnloadedCardDAVCollections();
val = inputSettings.loadedaddressbookcollections.value;
if(val.length>0)
globalLoadedCollectionsNumber+=$(val).not(globalSettings.loadedaddressbookcollections.value).length;
else
globalLoadedCollectionsNumber++;
if($(globalSettings.loadedaddressbookcollections.value).not(val).length>0)
{
if(globalLoadedCollectionsNumber==0)
{
triggerSync=false;
globalFirstHideLoader=false;
}
var unloadArray = $(globalSettings.loadedaddressbookcollections.value).not(val);
unloadCardDAVCollection(unloadArray.toArray());
}
if(triggerSync)
addLoadCardDAVCollection(val)
globalSettings.loadedaddressbookcollections.value = val;
}
if(triggerSync)
ifLoadCollections();
}
function checkBeforeClose(isFormSave)
{
if((isAvaible('CalDavZAP') && globalCalDAVInitLoad) || (isAvaible('CardDavMATE') && globalCardDAVInitLoad))
return false;
var old_settings=JSON.stringify(globalSettings);
var settings=saveSettings(isFormSave);
var new_settings = JSON.stringify(settings);
if(old_settings == new_settings)
return false;
for(var i=0;i<globalAccountSettings.length;i++)
if(globalAccountSettings[i].href.indexOf(globalLoginUsername)!=-1 && globalAccountSettings[i].settingsAccount)
{
netSaveSettings(globalAccountSettings[i], settings, isFormSave,false);
break;
}
}
function isEachResourceLoaded()
{
var loaded = true;
for(var i=0; i< globalAccountSettings.length; i++)
if(typeof globalAccountSettings[i].errorLoaded!='undefined' && globalAccountSettings[i].errorLoaded!=null && globalAccountSettings[i].errorLoaded===true)
loaded=false;
return loaded;
}
window.onload=globalMain;
window.onkeydown=function(event)
{
switch(event.which) {
case 13:
if(!isUserLogged)
$('#Login').find('[data-type="system_login"]').trigger('click');
break;
case 27:
if(globalActiveApp=='CalDavZAP' && $('#CAEvent').is(':visible') && $('#EventDisabler').is(':hidden'))
$('#closeButton').trigger('click');
if(globalActiveApp=='Projects' && $('#ProjectEventForm').is(':visible') && $('#ProjectsDisabler').is(':hidden'))
$('#cancelActivity').trigger('click');
if($('.sp-container').is(':visible'))
$('html').trigger('click');
break;
default:
break;
}
};
var globalEventList=new EventList();
var globalAppleSupport = new AppleSupportNextDateArray();
var globalResourceCalDAVList=new ResourceCalDAVList();
var maxAlarmValue=2147000000;
var globalMultiWeekSize=3;
var globalMaxNextInstanesTodoCheckingNumber=60;
var globalEventIntervalID=null;
var globalResourceRefreshNumber=0;
var globalResourceRefreshNumberTodo=0;
var globalCalDAVInitLoad=true;
var globalCalDAVResourceSync=false;
var globalCalDAVCollectionSync=false;
var globalCalendarNumber=0;
var globalOnlyCalendarNumber=0;
var globalTodoCalendarNumber=0;
var globalOnlyCalendarNumberCount=0;
var globalOnlyTodoCalendarNumberCount=0;
var globalCalendarNumberCount=0;
var globalEventTimeoutID=0;
var cleanResourceCalDAVListTemplate=null;
var cleanResourceCalDAVTODOListTemplate=null;
var cleanVcalendarTemplate=null;
var cleanVtodoTemplate=null;
var origResourceCalDAVListTemplate=null;
var origResourceCalDAVTODOListTemplate=null;
var origVcalendarTemplate=null;
var origVtodoTemplate=null;
var origVtodoLoaderTemplate=null;
var globalSessionTimeZone=null;
var globalCalDAVQs=null;
var globalCalDAVTODOQs=null;
var globalVisibleCalDAVCollections=new Array();
var globalVisibleCalDAVTODOCollections=new Array();
var isResourceComplete=false;
var prevFunctionArray=new Array();
var prevFunctionArrayIterator=0;
var globalWorkerArray=new Array();
var globalIntervalArray=new Array();
var globalCurrentLoadingResource='';
var timeZonesEnabled=new Array();
var cLcouny=42;
var processedTimezones = Array();
var timelist=new Array();
var minelems=[0,15,30,45];
var frequencies = ["SECONDLY", "MINUTELY", "HOURLY", "DAILY", "WEEKLY", "MONTHLY", "YEARLY"];
var globalToday=new Date();
var isCalDAVLoaded=false;
var isCalDAVAvaible=true;
var globalLoadedLimit = new Date();
var globalToLoadedLimit = new Date();
var globalLimitLoading='';
var globalLimitTodoLoading='';
var globalBeginPast = new Date();
var globalBeginFuture = new Date();
var globalLoadedLimitTodo = new Date();
var globalToLoadedLimitTodo = new Date();
var globalDefaultCalendarCollectionActiveAll = false;
var globalDefaultTodoCalendarCollectionActiveAll = false;
var globalDefaultCalendarCollectionLoadAll = false;
var globalDefaultTodoCalendarCollectionLoadAll = false;
var globalTodoLoaderHide='';
var globalEventCollectionsLoading=false;
var globalTodoCollectionsLoading=false;
var globalCalEvent=null;
var globalCalTodo=null;
var globalJsEvent=null;
var globalRevertFunction=null;
var globalPrevDragEventAllDay=null;
var globalPrevDate='';
var globalAllowFcRerender=true;
var globalCalWidth=0;
var globalTodoCheckTimeout=null;
var globalTodoCheckTimeoutDelay=1000;
var globalTodolistStatusArray={};
function logoutCalDAV()
{
globalTodolistStatusArray={};
globalTodoCheckTimeout=null;
globalVisibleCalDAVCollections.splice(0, globalVisibleCalDAVCollections.length);
globalVisibleCalDAVTODOCollections.splice(0, globalVisibleCalDAVTODOCollections.length);
processedTimezones.splice(0, processedTimezones.length);
globalCalendarNumber=0;
globalOnlyCalendarNumber=0;
globalTodoCalendarNumber=0;
globalCalendarNumberCount=0;
globalLoadedLimit = new Date();
globalToLoadedLimit = new Date();
globalLimitLoading='';
globalLimitTodoLoading='';
globalBeginPast = new Date();
globalBeginFuture = new Date();
globalLoadedLimitTodo = new Date();
globalToLoadedLimitTodo = new Date();
globalDefaultCalendarCollectionActiveAll = false;
globalDefaultTodoCalendarCollectionActiveAll = false;
globalDefaultCalendarCollectionLoadAll = false;
globalDefaultTodoCalendarCollectionLoadAll = false;
globalCalDAVCollectionSync=false;
globalAllowFcRerender=true;
globalEventList.reset();
globalResourceCalDAVList.reset();
timeZonesEnabled.splice(0,timeZonesEnabled.length);
if(globalEventIntervalID!=null)
clearInterval(globalEventIntervalID);
$('#EventDisabler, #TodoDisabler, #AlertDisabler').fadeOut(2000);
$('#SystemCalDavZAP, #SystemCalDavTODO').animate({opacity : 0},200).promise().done(function(){
$('#SystemCalDavZAP, #SystemCalDavTODO').css('visibility','hidden');
$('#main, #mainTODO').animate({top: 25}, 0);
$('#searchForm, #searchFormTODO').hide();
$('#searchInput, #searchInputTODO').val('').trigger('keyup').trigger('blur');
$('#calendar').fullCalendar('destroy');
$('#todoList').fullCalendar('destroy');
$('#timezonePicker, #timezonePickerTODO').prop('disabled', false).empty();
$('#eventColor, #todoColor').css('background-color','');
if($('#ResourceCalDAVList').width()<1)
$('#ResourceCalDAVToggle').trigger('click');
if($('#ResourceCalDAVTODOList').width()<1)
$('#ResourceCalDAVTODOToggle').trigger('click');
});
}
function mainCalDAV()
{
localizeCalDAV();
// init();
}
function localizeCalDAV()
{
globalCalDAVInitLoad = true;
$('#ResourceCalDAVList').html(origResourceCalDAVListTemplate);
$('#ResourceCalDAVTODOList').html(origResourceCalDAVTODOListTemplate);
$('#CAEvent').html(origVcalendarTemplate);
$('#CATodo').html(origVtodoTemplate);
$('#todoLoader').html(origVtodoLoaderTemplate);
translate();
$('input[placeholder],textarea[placeholder]').placeholder();
cleanResourceCalDAVListTemplate=$('#ResourceCalDAVListTemplate').clone().wrap('<div>').parent().html();
cleanResourceCalDAVTODOListTemplate=$('#ResourceCalDAVTODOListTemplate').clone().wrap('<div>').parent().html();
cleanVcalendarTemplate=$('#CAEvent .saveLoader').clone().wrap('<div>').parent().html() + $('#repeatConfirmBox').clone().wrap('<div>').parent().html() + $('#event_details_template').clone().wrap('<div>').parent().html();
cleanVtodoTemplate=$('#repeatConfirmBoxTODO').clone().wrap('<div>').parent().html() + $('#todo_details_template').clone().wrap('<div>').parent().html();
$('#searchInput, #searchInputTODO').val('');
globalSettings.titleformatmonth.value = localization[globalInterfaceLanguage]._default_title_format_month_;
globalSettings.titleformatweek.value = localization[globalInterfaceLanguage]._default_title_format_week_;
globalSettings.titleformatday.value = localization[globalInterfaceLanguage]._default_title_format_day_;
globalSettings.titleformattable.value = localization[globalInterfaceLanguage]._default_title_format_table_;
globalSettings.columnformatagenda.value = localization[globalInterfaceLanguage]._default_column_format_agenda_;
}
function runCalDAV()
{
if(!isUserLogged)
run();
globalResourceRefreshNumber=0;
globalResourceRefreshNumberTodo=0;
$('#MainLoader').css('left','0px');
$('#MainLoader').fadeIn(200);
if(typeof globalSubscribedCalendars!='undefined' && globalSubscribedCalendars!=null)
{
globalAccountSettings[globalAccountSettings.length]=$.extend({},globalAccountSettings[0]);
globalAccountSettings[globalAccountSettings.length-1].hrefLabel = globalSubscribedCalendars.hrefLabel;
globalAccountSettings[globalAccountSettings.length-1].calendars = globalSubscribedCalendars.calendars;
globalAccountSettings[globalAccountSettings.length-1].ignoreAlarms = '';
}
}
function globalMainCalDAV()
{
$(window).resize(function(evt){
if(evt.target!=window)
return;
if(typeof globalCalDAVInitLoad!='undefined' && !globalCalDAVInitLoad && !globalResourceRefreshNumber && $('#main').width()!=globalCalWidth)
$('#CalendarLoader').children('.loaderInfo').text(localization[globalInterfaceLanguage].resizeLoader).parent().css('display','block');
$('#SystemCalDavZAP .fc-header-title').css('width', $('#main_h_placeholder').width()-$('#SystemCalDavZAP .fc-header-left').outerWidth()-$('#SystemCalDavZAP .fc-header-right').outerWidth());
$('#ResourceCalDAVList, #ResourceCalDAVTODOList').css('bottom',(globalSettings.timezonesupport.value ? 20 : 0));
$('#alertBox').css('left', ($(window).width()/2)-($('#alertBox').width()/2));
$('#calendar').fullCalendar('option', 'contentHeight', $('#main').height() - 14);
$('#todoList').fullCalendar('allowSelectEvent',false);
$('#todoList').fullCalendar('option', 'contentHeight', $('#mainTODO').height() - 14);
$('#todoList').fullCalendar('allowSelectEvent',true);
$('#todoList').fullCalendar('selectEvent', null, true);
if($('#CATodo').is(':visible')) {
checkTodoFormScrollBar();
}
if(globalSettings.displayhiddenevents.value)
{
hideEventCalendars();
hideTodoCalendars();
}
globalCalWidth = $('#main').width();
});
$('#ResourceCalDAVToggle').click(function(){
var transSpeedResource=70;
var isResourceVisible=$('#ResourceCalDAVList').width()>1;
var col0=isResourceVisible? 0:218;
var col1=isResourceVisible? 0:224;
var col2=isResourceVisible? 0:224;
var col3=isResourceVisible? 0:225;
if(isIntegrated)
{
col2+=isResourceVisible? 49:50;
col3+=50;
}
if(typeof globalCalDAVInitLoad!='undefined' && !globalCalDAVInitLoad && !globalResourceRefreshNumber)
$('#CalendarLoader').children('.loaderInfo').text(localization[globalInterfaceLanguage].resizeLoader).parent().css('display','block');
if(globalSettings.timezonesupport.value)
$('#timezoneWrapper').animate({width: col0}, transSpeedResource);
$('#resourceCalDAV_h, #ResourceCalDAVList').animate({width: col1}, transSpeedResource);
$('#CalendarLoader').animate({left: col3}, transSpeedResource);
$('#main_h, #searchForm, #main').animate({left: col2}, transSpeedResource).promise().done(function(){
$('#SystemCalDavZAP .fc-header-title').width($('#main_h_placeholder').width()-$('#SystemCalDavZAP .fc-header-left').width()-$('#SystemCalDavZAP .fc-header-right').width()-20);
$(window).resize();
});
});
$('#ResourceCalDAVTODOToggle').click(function(){
var transSpeedResource=70;
var isResourceVisible=$('#ResourceCalDAVTODOList').width()>1;
var col0=isResourceVisible? 0:218;
var col1=isResourceVisible? 0:224;
var col2=isResourceVisible? 0:224;
var col3=isResourceVisible? 0:225;
if(isIntegrated)
{
col2+=isResourceVisible? 49:50;
col3+=50;
}
if(globalSettings.timezonesupport.value)
$('#timezoneWrapperTODO').animate({width: col0}, transSpeedResource);
$('#resourceCalDAVTODO_h, #ResourceCalDAVTODOList').animate({width: col1}, transSpeedResource);
$('#CalendarLoaderTODO').animate({left: col3}, transSpeedResource);
$('#main_h_TODO, #searchFormTODO').animate({left: col2}, transSpeedResource);
$('#mainTODO').animate({left: col2}, transSpeedResource, function(){
$('#todoList').fullCalendar('allowSelectEvent',false);
$(window).resize();
$('#todoList').fullCalendar('allowSelectEvent',true);
$('#todoList').fullCalendar('selectEvent', null, true);
});
});
$('#eventFormShowerTODO').click(function(){
showNewEvent('TODO');
});
$('#eventFormShower').click(function(){
showNewEvent('');
});
$('#searchInput').bind('keyup change', function(){
if($(this).val()!='')
$('#reserButton').css('visibility', 'visible');
else
$('#reserButton').css('visibility', 'hidden');
});
$('#searchInputTODO').bind('keyup change', function(){
if($(this).val()!='')
$('#resetButtonTODO').css('visibility', 'visible');
else
$('#resetButtonTODO').css('visibility', 'hidden');
});
$('#timezonePicker, #timezonePickerTODO').change(function(){
var previousTimezone=globalSessionTimeZone;
globalSessionTimeZone=$(this).val();
$('#timezonePicker').val($(this).val());
$('#timezonePickerTODO').val($(this).val());
applyTimezone(previousTimezone);
});
/*************************** BAD HACKS SECTION ***************************/
if($.browser.msie || $.browser.mozilla)
{
var newSVG=$(SVG_select_b).attr('data-type', 'select_icon').css({'pointer-events': 'none', 'z-index': '1', 'display': 'inline', 'margin-left': '-19px', 'vertical-align': 'top', 'background-color': '#ffffff'}); // background-color = stupid IE9 bug
$('#timezoneWrapper, #timezoneWrapperTODO').find('select').after($($('<div>').append($(newSVG).clone()).html()));
}
// INFO LABEL ALIGN WITH UNDELYING SELECT FIX
if($.browser.webkit && !!$.browser.safari)
$('.infoSpan[data-type="txt_interval"]').css('padding-left', '3px');
/*************************** END OF BAD HACKS SECTION ***************************/
globalCalWidth = $('#main').width();
origResourceCalDAVListTemplate = $('#ResourceCalDAVListTemplate').clone().wrap('<div>').parent().html();
origResourceCalDAVTODOListTemplate = $('#ResourceCalDAVTODOListTemplate').clone().wrap('<div>').parent().html();
origVcalendarTemplate = $('#CAEvent .saveLoader').clone().wrap('<div>').parent().html() + $('#repeatConfirmBox').clone().wrap('<div>').parent().html() + $('#event_details_template').clone().wrap('<div>').parent().html();
origVtodoTemplate = $('#repeatConfirmBoxTODO').clone().wrap('<div>').parent().html() + $('#todo_details_template').clone().wrap('<div>').parent().html();
origVtodoLoaderTemplate=$('#todoLoader .saveLoader').clone().wrap('<div>').parent().html();
populateTimezoneKeys();
}
function setCalendarNumber(initSearch)
{
/*if($('.resourceCalDAV_header:visible').length>1 || (!$('.resourceCalDAV_header:visible').length && $('.resourceCalDAV_item:visible').length>1))
$('.addRemoveAllCalDAV').show();
if($('.resourceCalDAVTODO_header:visible').length>1 || (!$('.resourceCalDAVTODO_header:visible').length && $('.resourceCalDAVTODO_item:visible').length>1))
$('.addRemoveAllCalDAVTODO').show();*/
if(initSearch)
initSearchEngine();
globalCalendarNumber=0;
globalOnlyCalendarNumber=0;
globalTodoCalendarNumber=0;
for(var i=0; i<globalResourceCalDAVList.collections.length;i++)
if(globalResourceCalDAVList.collections[i].uid!=undefined && globalResourceCalDAVList.collections[i].makeLoaded)
{
globalCalendarNumber++;
globalOnlyCalendarNumber++;
}
for(var i=0; i<globalResourceCalDAVList.TodoCollections.length;i++)
if(globalResourceCalDAVList.TodoCollections[i].uid!=undefined && globalResourceCalDAVList.TodoCollections[i].makeLoaded)
{
globalCalendarNumber++;
globalTodoCalendarNumber++;
}
}
var globalAddressbookList=new AddressbookList();
var globalResourceCardDAVList=new ResourceCardDAVList();
var globalQs=null;
var globalRefABList=null;
var globalRefABListTable=null;
var globalRefAbListTableHeader=null;
var globalRefABListTableCols=null;
var globalRefABListInnerTableCols=null;
var globalRefAddContact=null;
var globalRefVcardEditor=null; // editor reference stored after each editor cleanup
var globalOrigCardDAVListTemplate=null; // template for clean resource list
var globalOrigABListHeader=null; // template for clean addressbook header
var globalOrigABListItem=null; // template for clean addressbook item
var globalOrigVcardTemplate=null; // template for clean editor object
var globalTranslCardDAVListTemplate=null; // template for translated resource list
var globalTranslCardDAVListHeader=null; // template for translated resource header
var globalTranslCardDAVListItem=null; // template for translated resource item
var globalTranslVcardTemplate=null; // template for translated editor object
var globalCardDAVInitLoad=true;
var globalCardDAVResourceSync=false;
var globalCardDAVCollectionSync=false;
var isCardDAVLoaded=false;
var isCardDAVAvaible=true;
var globalDefaultAddressbookCollectionActiveAll=false;
var globalDefaultAddrCollectionLoadAll=false;
var globalAddressbookNumber=0;
var globalAddressbookNumberCount=0;
var globalABEditorCounter=new Object();
var globalAddressElementOldData=new Object();
var globalAddressbookCollectionsLoading=false;
var globalDisableAnimationMessageHiding='';
if(typeof globalContactPhotoScaleFactor==='undefined')
var globalContactPhotoScaleFactor=1.5;
var globalFixedContactDataColumnsCount = 1;
var globalContactDataColumnDefs = {
'CATEGORIES': {
'property': 'cats',
'minWidth': 90
},
'COMPANY': {
'property': 'company',
'minWidth': 135
},
'DEPARTMENT': {
'property': 'department',
'minWidth': 90
},
'LASTNAME': {
'property': 'lastname',
'minWidth': 90
},
'FIRSTNAME': {
'property': 'firstname',
'minWidth': 45
},
'MIDDLENAME': {
'property': 'middlename',
'minWidth': 45
},
'PREFIX': {
'property': 'prefix',
'minWidth': 27
},
'SUFFIX': {
'property': 'sufix',
'minWidth': 27
},
'NICKNAME': {
'property': 'nickname',
'minWidth': 45
},
'PHONETICLASTNAME': {
'property': 'phoneticLastName',
'minWidth': 90
},
'PHONETICFIRSTNAME': {
'property': 'phoneticFirstName',
'minWidth': 45
},
'BIRTHDAY': {
'property': 'birthday',
'minWidth': 90
},
'JOBTITLE': {
'property': 'title',
'minWidth': 90
},
'NOTETEXT': {
'property': 'note',
'minWidth': 180
},
'ADDRESS': {
'property': 'address',
'filterProperities': {
'TYPE': 'type'
},
'minWidth': 180
},
'PHONE': {
'property': 'phone',
'filterProperities': {
'TYPE': 'type'
},
'minWidth': 90
},
'EMAIL': {
'property': 'email',
'filterProperities': {
'TYPE': 'type'
},
'minWidth': 135
},
'URL': {
'property': 'url',
'filterProperities': {
'TYPE': 'type'
},
'minWidth': 135
},
'DATES': {
'property': 'date',
'filterProperities': {
'TYPE': 'type'
},
'minWidth': 90
},
'RELATED': {
'property': 'related',
'filterProperities': {
'TYPE': 'type'
},
'minWidth': 45
},
'PROFILE': {
'property': 'social',
'filterProperities': {
'TYPE': 'type'
},
'minWidth': 90
},
'IM': {
'property': 'impp',
'filterProperities': {
'TYPE': 'type',
'SERVICE-TYPE': 'serviceType'
},
'minWidth': 90
}
};
globalContactDataColumnLabelVars = {
'Name': 'txtName',
'FirstName': 'pholderGiven',
'LastName': 'pholderFamily',
'MiddleName': 'pholderMiddle',
'NickName': 'pholderNickname',
'Prefix': 'pholderPrefix',
'Suffix': 'pholderSuffix',
'BirthDay': 'pholderBday',
'PhoneticLastName': 'pholderPhFamily',
'PhoneticFirstName': 'pholderPhGiven',
'JobTitle': 'pholderTitle',
'Company': 'pholderOrg',
'Department': 'pholderDepartment',
'Categories': 'txtCategories',
'NoteText': 'pholderNoteVal',
'Address': 'txtAddress',
'AddressWork': 'txtAddressWork',
'AddressHome': 'txtAddressHome',
'AddressOther': 'txtAddressOther',
'Phone': 'txtPhone',
'PhoneWork': 'txtPhoneWork',
'PhoneHome': 'txtPhoneHome',
'PhoneCell': 'txtPhoneCell',
'PhoneMain': 'txtPhoneMain',
'PhonePager': 'txtPhonePager',
'PhoneFax': 'txtPhoneFax',
'PhoneIphone': 'txtPhoneIphone',
'PhoneOther': 'txtPhoneOther',
'Email': 'txtEmail',
'EmailWork': 'txtEmailWork',
'EmailHome': 'txtEmailHome',
'EmailMobileme': 'txtEmailMobileme',
'EmailOther': 'txtEmailOther',
'URL': 'txtUrl',
'URLWork': 'txtUrlWork',
'URLHome': 'txtUrlHome',
'URLHomepage': 'txtUrlHomepage',
'URLOther': 'txtUrlOther',
'Dates': 'txtDates',
'DatesAnniversary': 'txtDatesAnniversary',
'DatesOther': 'txtDatesOther',
'Related': 'txtRelated',
'RelatedManager': 'txtRelatedManager',
'RelatedAssistant': 'txtRelatedAssistant',
'RelatedFather': 'txtRelatedFather',
'RelatedMother': 'txtRelatedMother',
'RelatedParent': 'txtRelatedParent',
'RelatedBrother': 'txtRelatedBrother',
'RelatedSister': 'txtRelatedSister',
'RelatedChild': 'txtRelatedChild',
'RelatedFriend': 'txtRelatedFriend',
'RelatedSpouse': 'txtRelatedSpouse',
'RelatedPartner': 'txtRelatedPartner',
'RelatedOther': 'txtRelatedOther',
'Profile': 'txtProfile',
'ProfileTwitter': 'txtProfileTwitter',
'ProfileFacebook': 'txtProfileFacebook',
'ProfileFlickr': 'txtProfileFlickr',
'ProfileLinkedin': 'txtProfileLinkedin',
'ProfileMyspace': 'txtProfileMyspace',
'ProfileSinaweibo': 'txtProfileSinaweibo',
'IM': 'txtIm',
'IMWork': 'txtImWork',
'IMHome': 'txtImHome',
'IMMobileme': 'txtImMobileme',
'IMOther': 'txtImOther',
'IMAim': 'txtImProtAim',
'IMIcq': 'txtImProtIcq',
'IMIrc': 'txtImProtIrc',
'IMJabber': 'txtImProtJabber',
'IMMsn': 'txtImProtMsn',
'IMYahoo': 'txtImProtYahoo',
'IMFacebook': 'txtImProtFacebook',
'IMGadugadu': 'txtImProtGadugadu',
'IMGoogletalk': 'txtImProtGoogletalk',
'IMQq': 'txtImProtQq',
'IMSkype': 'txtImProtSkype'
};
// called only once (after tha page is loaded)
function globalMainCardDAV()
{
$(window).resize(function(evt){
if(evt.target!=window)
return;
var columnLengths = [];
for(var i=0; i<getDataColumnCount(); i++) {
columnLengths.push([]);
}
globalRefABListTable.children('.ablist_item:visible').each(function() {
$(this).children().slice(globalFixedContactDataColumnsCount).each(function(ind) {
columnLengths[ind].push($(this).text().length);
});
});
setDataColumnsWidth(columnLengths);
$('.ablist_table_wrapper').css('max-height', $('#ABList').innerHeight() - $('.ablist_table_header').outerHeight() - 1);
checkContactFormScrollBar();
});
// set the initial height to get vertical scrollbars working (used also in $(window).resize(...))
$('.ablist_table_wrapper').css('max-height', $('#ABList').innerHeight() - $('.ablist_table_header').outerHeight() - 1);
// toggle CardDAV resources
$('#ResourceCardDAVToggle').click(function(){
var transSpeedResource=70;
var isResourceVisible=$('#ResourceCardDAVList').width()>1;
var col1=isResourceVisible? 0:224;
var col2=isResourceVisible? 0:225;
if(isIntegrated)
{
col2+=50;
}
$('.resourcesCardDAV_d, #ResourceCardDAVList, #ResourceCardDAVListOverlay').animate({width: col1}, transSpeedResource);
$('.collection_d, #SearchBox, #ABList, #ABListOverlay, #AddressbookOverlay').animate({left: col2}, transSpeedResource);
});
globalRefABList=$('#ABList');
globalRefABListTable=$('#ABListTableInner').find('tbody');
globalRefAddContact=$('#AddContact');
// these are restored after each logout
globalOrigCardDAVListTemplate=$('#ResourceCardDAVListTemplate').clone();
// clone + cleanup the editor (autocomplete bug in some browsers) + store the reference in globalOrigVcardTemplate
var tmp=$('#vCardTemplate').clone();
tmp.find('input[type="text"]').val('');
tmp.find('textarea').text('');
globalOrigVcardTemplate=tmp;
}
// called after the page is loaded and after each logout
function mainCardDAV()
{
globalCardDAVInitLoad=true;
// localize templates
// + store translated templates (globalTranl*)
// + initialize placeholder plugin
localizeCardDAV();
// cleanup the search field
$('[data-type="search"]').val('');
// Switch back to global Init (check for supported browser, demo login & password autofill
// then performs loadConfig() /netCheckAndCreateConfiguration() or netLoadConfiguration() or loadAllResources()/
// init();
}
// POZOR! login vola priamo loadConfig() ... nie je tym nahodou predxadzajuca funkcia zbytocna? ... overit!
// called from loadConfig() and netCheckAndCreateConfiguration() and netLoadConfiguration() and DAVresourceDelegation()
function runCardDAV()
{
if(!isUserLogged)
run();
// $('#SystemCardDavMATE').animate({opacity : 1},200,function(){
// /* XXX - System display:none changes
// $('#SystemCardDavMATE').css('display','block'); */
// $('#SystemCardDavMATE').css('visibility','visible');
// });
$('#MainLoader').css('left','0px');
$('#MainLoader').fadeIn(200);
initSearchCardDav();
}
function logoutCardDAV()
{
globalAddressbookList.reset();
globalResourceCardDAVList.reset();
globalAddressbookNumber=0;
globalAddressbookNumberCount=0;
globalCardDAVCollectionSync=false;
globalDefaultAddressbookCollectionActiveAll=false;
globalDefaultAddrCollectionLoadAll=false;
globalDisableAnimationMessageHiding='';
// reset ABList
globalRefABListTable.empty();
// remove ABList table gutter
$('.ablist_table_gutter').remove();
// clear old ABList table column widths
globalRefABListTableCols.width('');
globalRefABListInnerTableCols.width('');
// reset ABList table layout
globalRefAbListTableHeader.children().slice(globalFixedContactDataColumnsCount).remove();
globalRefABListTableCols.slice(globalFixedContactDataColumnsCount).remove();
globalRefABListInnerTableCols.slice(globalFixedContactDataColumnsCount).remove();
globalRefAbListTableHeader=null;
globalRefABListTableCols=null;
globalRefABListInnerTableCols=null;
// hide update notification
$('#SystemCardDavMATE').find('div.update_d').hide();
// if the editor is in "edit" state during the logout,
// we need to remove all overlays (for next login)
$('#ResourceCardDAVListOverlay, #ABListOverlay').fadeOut(2000);
$('#SystemCardDavMATE').animate({opacity : 0},200,function(){
/* XXX - System display:none changes
$('#SystemCardDavMATE').css('display','none');*/
$('#SystemCardDavMATE').css('visibility', 'hidden');
$('#ABContactColor').css('background-color', '');
if($('#ResourceCardDAVList').width()<1)
$('#ResourceCardDAVToggle').trigger('click');
});
}
function setAddressbookNumber()
{
for(var i=0; i<globalResourceCardDAVList.collections.length;i++)
if(globalResourceCardDAVList.collections[i].uid!=undefined && globalResourceCardDAVList.collections[i].makeLoaded)
globalAddressbookNumber++;
}