/* CardDavMATE - the open source CardDAV Web Client Copyright (C) 2011-2015 Jan Mate Andrej Lezo Matej Mihalik 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 . */ var globalAddressbookList=new AddressbookList(); var globalResourceCardDAVList=new ResourceCardDAVList(); var globalQs=null; var globalRefABList=null; var globalRefABListTable=null; var globalRefAbListTableHeader=null; var globalRefABListTableCols=null; var globalRefABListInnerTableCols=null; var globalRefAddContact=null; var globalRefVcardEditor=null; // editor reference stored after each editor cleanup var globalOrigCardDAVListTemplate=null; // template for clean resource list var globalOrigABListHeader=null; // template for clean addressbook header var globalOrigABListItem=null; // template for clean addressbook item var globalOrigVcardTemplate=null; // template for clean editor object var globalTranslCardDAVListTemplate=null; // template for translated resource list var globalTranslCardDAVListHeader=null; // template for translated resource header var globalTranslCardDAVListItem=null; // template for translated resource item var globalTranslVcardTemplate=null; // template for translated editor object var globalCardDAVInitLoad=true; var globalCardDAVResourceSync=false; var globalCardDAVCollectionSync=false; var isCardDAVLoaded=false; var isCardDAVAvaible=true; var globalDefaultAddressbookCollectionActiveAll=false; var globalDefaultAddrCollectionLoadAll=false; var globalAddressbookNumber=0; var globalAddressbookNumberCount=0; var globalABEditorCounter=new Object(); var globalAddressElementOldData=new Object(); var globalAddressbookCollectionsLoading=false; var globalDisableAnimationMessageHiding=''; if(typeof globalContactPhotoScaleFactor==='undefined') var globalContactPhotoScaleFactor=1.5; var globalFixedContactDataColumnsCount = 1; var globalContactDataColumnDefs = { 'CATEGORIES': { 'property': 'cats', 'minWidth': 90 }, 'COMPANY': { 'property': 'company', 'minWidth': 135 }, 'DEPARTMENT': { 'property': 'department', 'minWidth': 90 }, 'LASTNAME': { 'property': 'lastname', 'minWidth': 90 }, 'FIRSTNAME': { 'property': 'firstname', 'minWidth': 45 }, 'MIDDLENAME': { 'property': 'middlename', 'minWidth': 45 }, 'PREFIX': { 'property': 'prefix', 'minWidth': 27 }, 'SUFFIX': { 'property': 'sufix', 'minWidth': 27 }, 'NICKNAME': { 'property': 'nickname', 'minWidth': 45 }, 'PHONETICLASTNAME': { 'property': 'phoneticLastName', 'minWidth': 90 }, 'PHONETICFIRSTNAME': { 'property': 'phoneticFirstName', 'minWidth': 45 }, 'BIRTHDAY': { 'property': 'birthday', 'minWidth': 90 }, 'JOBTITLE': { 'property': 'title', 'minWidth': 90 }, 'NOTETEXT': { 'property': 'note', 'minWidth': 180 }, 'ADDRESS': { 'property': 'address', 'filterProperities': { 'TYPE': 'type' }, 'minWidth': 180 }, 'PHONE': { 'property': 'phone', 'filterProperities': { 'TYPE': 'type' }, 'minWidth': 90 }, 'EMAIL': { 'property': 'email', 'filterProperities': { 'TYPE': 'type' }, 'minWidth': 135 }, 'URL': { 'property': 'url', 'filterProperities': { 'TYPE': 'type' }, 'minWidth': 135 }, 'DATES': { 'property': 'date', 'filterProperities': { 'TYPE': 'type' }, 'minWidth': 90 }, 'RELATED': { 'property': 'related', 'filterProperities': { 'TYPE': 'type' }, 'minWidth': 45 }, 'PROFILE': { 'property': 'social', 'filterProperities': { 'TYPE': 'type' }, 'minWidth': 90 }, 'IM': { 'property': 'impp', 'filterProperities': { 'TYPE': 'type', 'SERVICE-TYPE': 'serviceType' }, 'minWidth': 90 } }; globalContactDataColumnLabelVars = { 'Name': 'txtName', 'FirstName': 'pholderGiven', 'LastName': 'pholderFamily', 'MiddleName': 'pholderMiddle', 'NickName': 'pholderNickname', 'Prefix': 'pholderPrefix', 'Suffix': 'pholderSuffix', 'BirthDay': 'pholderBday', 'PhoneticLastName': 'pholderPhFamily', 'PhoneticFirstName': 'pholderPhGiven', 'JobTitle': 'pholderTitle', 'Company': 'pholderOrg', 'Department': 'pholderDepartment', 'Categories': 'txtCategories', 'NoteText': 'pholderNoteVal', 'Address': 'txtAddress', 'AddressWork': 'txtAddressWork', 'AddressHome': 'txtAddressHome', 'AddressOther': 'txtAddressOther', 'Phone': 'txtPhone', 'PhoneWork': 'txtPhoneWork', 'PhoneHome': 'txtPhoneHome', 'PhoneCell': 'txtPhoneCell', 'PhoneMain': 'txtPhoneMain', 'PhonePager': 'txtPhonePager', 'PhoneFax': 'txtPhoneFax', 'PhoneIphone': 'txtPhoneIphone', 'PhoneOther': 'txtPhoneOther', 'Email': 'txtEmail', 'EmailWork': 'txtEmailWork', 'EmailHome': 'txtEmailHome', 'EmailMobileme': 'txtEmailMobileme', 'EmailOther': 'txtEmailOther', 'URL': 'txtUrl', 'URLWork': 'txtUrlWork', 'URLHome': 'txtUrlHome', 'URLHomepage': 'txtUrlHomepage', 'URLOther': 'txtUrlOther', 'Dates': 'txtDates', 'DatesAnniversary': 'txtDatesAnniversary', 'DatesOther': 'txtDatesOther', 'Related': 'txtRelated', 'RelatedManager': 'txtRelatedManager', 'RelatedAssistant': 'txtRelatedAssistant', 'RelatedFather': 'txtRelatedFather', 'RelatedMother': 'txtRelatedMother', 'RelatedParent': 'txtRelatedParent', 'RelatedBrother': 'txtRelatedBrother', 'RelatedSister': 'txtRelatedSister', 'RelatedChild': 'txtRelatedChild', 'RelatedFriend': 'txtRelatedFriend', 'RelatedSpouse': 'txtRelatedSpouse', 'RelatedPartner': 'txtRelatedPartner', 'RelatedOther': 'txtRelatedOther', 'Profile': 'txtProfile', 'ProfileTwitter': 'txtProfileTwitter', 'ProfileFacebook': 'txtProfileFacebook', 'ProfileFlickr': 'txtProfileFlickr', 'ProfileLinkedin': 'txtProfileLinkedin', 'ProfileMyspace': 'txtProfileMyspace', 'ProfileSinaweibo': 'txtProfileSinaweibo', 'IM': 'txtIm', 'IMWork': 'txtImWork', 'IMHome': 'txtImHome', 'IMMobileme': 'txtImMobileme', 'IMOther': 'txtImOther', 'IMAim': 'txtImProtAim', 'IMIcq': 'txtImProtIcq', 'IMIrc': 'txtImProtIrc', 'IMJabber': 'txtImProtJabber', 'IMMsn': 'txtImProtMsn', 'IMYahoo': 'txtImProtYahoo', 'IMFacebook': 'txtImProtFacebook', 'IMGadugadu': 'txtImProtGadugadu', 'IMGoogletalk': 'txtImProtGoogletalk', 'IMQq': 'txtImProtQq', 'IMSkype': 'txtImProtSkype' }; 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='CardDavMATE'; var globalVersion='0.13.1'; var globalBuildNo=1442928605; 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 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=''; var SVG_select_inv=''; var SVG_select_login=''; var SVG_select_dis=''; 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=0;i--) { var resourceCounter = 0; if(isAvaible('CardDavMATE')) for(var j=0; jglobalToday.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; i0 || 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=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;i1) { // show integration banner $('.integration_d').css('display', 'block'); // show app buttons for available apps only if(globalAvailableAppsArray.indexOf('CalDavZAP')!=-1) $('#intCaldav').attr('title',localization[globalInterfaceLanguage].txtCalendars).css('display', 'block').find('.int_error').attr('alt',localization[globalInterfaceLanguage].txtError); if(globalAvailableAppsArray.indexOf('CalDavTODO')!=-1) $('#intCaldavTodo').attr('title',localization[globalInterfaceLanguage].txtTodos).css('display', 'block').find('.int_error').attr('alt',localization[globalInterfaceLanguage].txtError); if(globalAvailableAppsArray.indexOf('CardDavMATE')!=-1) $('#intCarddav').attr('title',localization[globalInterfaceLanguage].txtContacts).css('display', 'block').find('.int_error').attr('alt',localization[globalInterfaceLanguage].txtError); if(globalAvailableAppsArray.indexOf('Projects')!=-1) $('#intProjects').attr('title',localization[globalInterfaceLanguage].txtProjects).css('display', 'block').find('.int_error').attr('alt',localization[globalInterfaceLanguage].txtError); if(globalAvailableAppsArray.indexOf('Reports')!=-1) $('#intReports').attr('title',localization[globalInterfaceLanguage].txtReports).css('display', 'block').find('.int_error').attr('alt',localization[globalInterfaceLanguage].txtError); if(globalAvailableAppsArray.indexOf('Settings')!=-1) $('#intSettings').attr('title',localization[globalInterfaceLanguage].txtSettings).css('display', 'block').find('.int_error').attr('alt',localization[globalInterfaceLanguage].txtError); // show the refresh button if(typeof globalEnableRefresh==='boolean' && globalEnableRefresh && (globalAvailableAppsArray.indexOf('CalDavZAP')!=-1 || globalAvailableAppsArray.indexOf('CalDavTODO')!=-1 || globalAvailableAppsArray.indexOf('CardDavMATE')!=-1)) { $('#intRefresh').attr('title',localization[globalInterfaceLanguage].txtRefresh).find('.int_error').attr('alt',localization[globalInterfaceLanguage].txtError); $('#intRefresh').prev().addBack().css('display', 'block'); } } $('#cacheDialogText').text(localization[globalInterfaceLanguage].txtCacheText); $('#cacheDialogButton').attr('value',localization[globalInterfaceLanguage].txtCacheButton); } function loadConfig() { if(isUserLogged)// !!!!!! kedy moze toto nastat? nexapem ... return false; var configLoaded=true; // Automatically detect crossDomain settings var detectedHref=location.protocol+'//'+location.hostname+(location.port ? ':'+location.port : ''); // check username and password against the server and create config from globalNetworkCheckSettings if(typeof globalNetworkCheckSettings!='undefined' && globalNetworkCheckSettings!=null) { if(globalLoginUsername=='' || globalLoginPassword=='') { $('#LoginPage').fadeTo(500, 1, function(){if(typeof globalDemoMode=='undefined') $('[data-type="system_username"]').focus()}); $('#LoginLoader').fadeOut(1200); return false; } else { if(globalNetworkCheckSettings.crossDomain==undefined || typeof globalNetworkCheckSettings.crossDomain!='boolean') { if(globalNetworkCheckSettings.href.indexOf(detectedHref)==0) globalNetworkCheckSettings.crossDomain=false; else globalNetworkCheckSettings.crossDomain=true; console.log("Info: [globalNetworkCheckSettings: '"+globalNetworkCheckSettings.href+"']: crossDomain set to: '"+(globalNetworkCheckSettings.crossDomain==true ? 'true' : 'false')+"'"); } // !!!! preco sa riesi s logout buttonom prave tu? // show the logout button if(typeof globalAvailableAppsArray!='undefined' && globalAvailableAppsArray!=null && globalAvailableAppsArray.length>1) { $('#intLogout').prev().addBack().css('display', 'block'); $('#intLogout').attr('title',localization[globalInterfaceLanguage].altLogout); } else { $('#Logout').css('display', 'block'); } netCheckAndCreateConfiguration(globalNetworkCheckSettings); return true; } } // load the configuration XML(s) from the network if(typeof globalNetworkAccountSettings!='undefined' && globalNetworkAccountSettings!=null) { if(globalLoginUsername=='' || globalLoginPassword=='') { $('#LoginPage').fadeTo(500, 1, function(){if(typeof globalDemoMode=='undefined') $('[data-type="system_username"]').focus()}); $('#LoginLoader').fadeOut(1200); return false; } else { if(globalNetworkAccountSettings.crossDomain==undefined || typeof globalNetworkAccountSettings.crossDomain!='boolean') { if(globalNetworkAccountSettings.href.indexOf(detectedHref)==0) globalNetworkAccountSettings.crossDomain=false; else globalNetworkAccountSettings.crossDomain=true; console.log("Info: [globalNetworkAccountSettings: '"+globalNetworkAccountSettings.href+"']: crossDomain set to: '"+(globalNetworkAccountSettings.crossDomain==true ? 'true' : 'false')+"'"); } // !!!! preco sa riesi s logout buttonom prave tu? // show the logout button if(typeof globalAvailableAppsArray!='undefined' && globalAvailableAppsArray!=null && globalAvailableAppsArray.length>1) { $('#intLogout').prev().addBack().css('display', 'block'); $('#intLogout').attr('title',localization[globalInterfaceLanguage].altLogout); } else { $('#Logout').css('display', 'block'); } netLoadConfiguration(globalNetworkAccountSettings); return true; } } if((typeof globalNetworkAccountSettings=='undefined' || globalNetworkAccountSettings==null) && (typeof globalNetworkCheckSettings=='undefined' || globalNetworkCheckSettings==null) && (typeof globalAccountSettings!='undefined' && globalAccountSettings!=null) && globalAccountSettings.length>0) { var delegCount=0, delegIndex=0; if(!isDelegationLoaded) { for(var i=0; i0)) delegIndex=i; for(var i=0; i0)) { 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').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($($('
').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; iServer:
') server_info_tag.append($('', {href: globalNetworkCheckSettings.href}).append(globalNetworkCheckSettings.href)) $('#LoginPage').find('.footer').append(server_info_tag); 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;i0) 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'); colgroups.append(''); } 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;i1; var col1=isResourceVisible? 0:224; var col2=isResourceVisible? 0:225; if(isIntegrated) { col2+=50; } $('.resourcesCardDAV_d, #ResourceCardDAVList, #ResourceCardDAVListOverlay').animate({width: col1}, transSpeedResource); $('.collection_d, #SearchBox, #ABList, #ABListOverlay, #AddressbookOverlay').animate({left: col2}, transSpeedResource); }); globalRefABList=$('#ABList'); globalRefABListTable=$('#ABListTableInner').find('tbody'); globalRefAddContact=$('#AddContact'); // these are restored after each logout globalOrigCardDAVListTemplate=$('#ResourceCardDAVListTemplate').clone(); // clone + cleanup the editor (autocomplete bug in some browsers) + store the reference in globalOrigVcardTemplate var tmp=$('#vCardTemplate').clone(); tmp.find('input[type="text"]').val(''); tmp.find('textarea').text(''); globalOrigVcardTemplate=tmp; } // called after the page is loaded and after each logout function mainCardDAV() { globalCardDAVInitLoad=true; // localize templates // + store translated templates (globalTranl*) // + initialize placeholder plugin localizeCardDAV(); // cleanup the search field $('[data-type="search"]').val(''); // Switch back to global Init (check for supported browser, demo login & password autofill // then performs loadConfig() /netCheckAndCreateConfiguration() or netLoadConfiguration() or loadAllResources()/ // init(); } // POZOR! login vola priamo loadConfig() ... nie je tym nahodou predxadzajuca funkcia zbytocna? ... overit! // called from loadConfig() and netCheckAndCreateConfiguration() and netLoadConfiguration() and DAVresourceDelegation() function runCardDAV() { if(!isUserLogged) run(); // $('#SystemCardDavMATE').animate({opacity : 1},200,function(){ // /* XXX - System display:none changes // $('#SystemCardDavMATE').css('display','block'); */ // $('#SystemCardDavMATE').css('visibility','visible'); // }); $('#MainLoader').css('left','0px'); $('#MainLoader').fadeIn(200); initSearchCardDav(); } function logoutCardDAV() { globalAddressbookList.reset(); globalResourceCardDAVList.reset(); globalAddressbookNumber=0; globalAddressbookNumberCount=0; globalCardDAVCollectionSync=false; globalDefaultAddressbookCollectionActiveAll=false; globalDefaultAddrCollectionLoadAll=false; globalDisableAnimationMessageHiding=''; // reset ABList globalRefABListTable.empty(); // remove ABList table gutter $('.ablist_table_gutter').remove(); // clear old ABList table column widths globalRefABListTableCols.width(''); globalRefABListInnerTableCols.width(''); // reset ABList table layout globalRefAbListTableHeader.children().slice(globalFixedContactDataColumnsCount).remove(); globalRefABListTableCols.slice(globalFixedContactDataColumnsCount).remove(); globalRefABListInnerTableCols.slice(globalFixedContactDataColumnsCount).remove(); globalRefAbListTableHeader=null; globalRefABListTableCols=null; globalRefABListInnerTableCols=null; // hide update notification $('#SystemCardDavMATE').find('div.update_d').hide(); // if the editor is in "edit" state during the logout, // we need to remove all overlays (for next login) $('#ResourceCardDAVListOverlay, #ABListOverlay').fadeOut(2000); $('#SystemCardDavMATE').animate({opacity : 0},200,function(){ /* XXX - System display:none changes $('#SystemCardDavMATE').css('display','none');*/ $('#SystemCardDavMATE').css('visibility', 'hidden'); $('#ABContactColor').css('background-color', ''); if($('#ResourceCardDAVList').width()<1) $('#ResourceCardDAVToggle').trigger('click'); }); } function setAddressbookNumber() { for(var i=0; i