diff options
Diffstat (limited to 'radicale_infcloud/web/main.js')
-rw-r--r-- | radicale_infcloud/web/main.js | 2335 |
1 files changed, 2335 insertions, 0 deletions
diff --git a/radicale_infcloud/web/main.js b/radicale_infcloud/web/main.js new file mode 100644 index 0000000..3687f64 --- /dev/null +++ b/radicale_infcloud/web/main.js @@ -0,0 +1,2335 @@ +/* +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.2rc1'; +var globalBuildNo=1448196611; +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=='') + { + $('#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=='') + { + $('#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; + +if(typeof globalContactPhotoType==='undefined' || globalContactPhotoType.match(RegExp('^(?:png|jpeg)$'))===null) + var globalContactPhotoType='jpeg'; + +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('[data-type="isorg"]').prop('checked', false); + tmp.find('textarea').val(''); + 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++; +} |